From 81581f9719bc56f01d5aa08952671d65fda9867a Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Mon, 8 May 2023 18:27:08 +0200 Subject: Merging upstream version 1.39.0. Signed-off-by: Daniel Baumann --- web/Makefile.am | 1 + web/README.md | 192 +- web/api/README.md | 20 +- web/api/badges/README.md | 4 + web/api/badges/web_buffer_svg.c | 8 +- web/api/exporters/README.md | 4 + web/api/exporters/allmetrics.c | 14 +- web/api/exporters/prometheus/README.md | 4 + web/api/exporters/shell/README.md | 8 +- web/api/exporters/shell/allmetrics_shell.c | 8 +- web/api/formatters/README.md | 4 + web/api/formatters/charts2json.c | 52 - web/api/formatters/charts2json.h | 1 - web/api/formatters/csv/README.md | 4 + web/api/formatters/csv/csv.c | 61 +- web/api/formatters/json/README.md | 4 + web/api/formatters/json/json.c | 170 +- web/api/formatters/json/json.h | 1 + web/api/formatters/json_wrapper.c | 1806 ++++++-- web/api/formatters/json_wrapper.h | 14 +- web/api/formatters/rrd2json.c | 231 +- web/api/formatters/rrd2json.h | 53 +- web/api/formatters/rrdset2json.c | 8 +- web/api/formatters/ssv/README.md | 4 + web/api/formatters/ssv/ssv.c | 10 +- web/api/formatters/value/README.md | 4 + web/api/formatters/value/value.c | 86 +- web/api/formatters/value/value.h | 4 +- web/api/health/README.md | 4 + web/api/health/health_cmdapi.c | 8 +- web/api/netdata-swagger.json | 4519 ++++++++++++-------- web/api/netdata-swagger.yaml | 3221 ++++++++------ web/api/queries/README.md | 41 +- web/api/queries/average/README.md | 4 + web/api/queries/average/average.c | 55 - web/api/queries/average/average.h | 57 +- web/api/queries/countif/README.md | 4 + web/api/queries/countif/countif.c | 129 - web/api/queries/countif/countif.h | 143 +- web/api/queries/des/README.md | 4 + web/api/queries/des/des.c | 129 - web/api/queries/des/des.h | 133 +- web/api/queries/incremental_sum/README.md | 4 + web/api/queries/incremental_sum/incremental_sum.c | 59 - web/api/queries/incremental_sum/incremental_sum.h | 64 +- web/api/queries/max/README.md | 4 + web/api/queries/max/max.c | 50 - web/api/queries/max/max.h | 54 +- web/api/queries/median/README.md | 4 + web/api/queries/median/median.c | 134 - web/api/queries/median/median.h | 146 +- web/api/queries/min/README.md | 4 + web/api/queries/min/min.c | 50 - web/api/queries/min/min.h | 54 +- web/api/queries/percentile/README.md | 4 + web/api/queries/percentile/percentile.c | 163 - web/api/queries/percentile/percentile.h | 175 +- web/api/queries/query.c | 2676 +++++++++--- web/api/queries/query.h | 54 +- web/api/queries/rrdr.c | 77 +- web/api/queries/rrdr.h | 189 +- web/api/queries/ses/README.md | 4 + web/api/queries/ses/ses.c | 82 - web/api/queries/ses/ses.h | 87 +- web/api/queries/stddev/README.md | 4 + web/api/queries/stddev/stddev.c | 116 +- web/api/queries/stddev/stddev.h | 118 +- web/api/queries/sum/README.md | 4 + web/api/queries/sum/sum.c | 46 - web/api/queries/sum/sum.h | 51 +- web/api/queries/trimmed_mean/README.md | 4 + web/api/queries/trimmed_mean/trimmed_mean.c | 159 - web/api/queries/trimmed_mean/trimmed_mean.h | 171 +- web/api/queries/weights.c | 1549 +++++-- web/api/queries/weights.h | 45 +- web/api/web_api.c | 216 + web/api/web_api.h | 39 + web/api/web_api_v1.c | 764 ++-- web/api/web_api_v1.h | 17 +- web/api/web_api_v2.c | 372 ++ web/api/web_api_v2.h | 12 + web/gui/README.md | 18 +- web/gui/confluence/README.md | 4 + web/gui/custom/README.md | 25 +- web/gui/dashboard/Makefile.am | 14 +- web/gui/dashboard/asset-manifest.json | 18 +- web/gui/dashboard/dashboard-react.js | 4 +- web/gui/dashboard/dashboard.js | 2 +- web/gui/dashboard/index.html | 2 +- ...he-manifest.21dcd7c609bff6504512face054c360f.js | 190 + ...he-manifest.5fec6109084644adf7bf854243e1a044.js | 190 - web/gui/dashboard/service-worker.js | 2 +- web/gui/dashboard/static/js/2.92ca8446.chunk.js | 3 - .../static/js/2.92ca8446.chunk.js.LICENSE | 278 -- .../dashboard/static/js/2.92ca8446.chunk.js.map | 1 - web/gui/dashboard/static/js/2.ae48988e.chunk.js | 3 + .../static/js/2.ae48988e.chunk.js.LICENSE | 278 ++ .../dashboard/static/js/2.ae48988e.chunk.js.map | 1 + web/gui/dashboard/static/js/main.76dfe4de.chunk.js | 3 + .../static/js/main.76dfe4de.chunk.js.LICENSE | 8 + .../dashboard/static/js/main.76dfe4de.chunk.js.map | 1 + web/gui/dashboard/static/js/main.7d1bdca1.chunk.js | 3 - .../static/js/main.7d1bdca1.chunk.js.LICENSE | 8 - .../dashboard/static/js/main.7d1bdca1.chunk.js.map | 1 - web/gui/dashboard_info.js | 188 +- web/rtc/Makefile.am | 11 + web/rtc/README.md | 0 web/rtc/webrtc.c | 740 ++++ web/rtc/webrtc.h | 12 + web/server/README.md | 104 +- web/server/static/README.md | 4 + web/server/static/static-threaded.c | 132 +- web/server/web_client.c | 815 ++-- web/server/web_client.h | 172 +- web/server/web_client_cache.c | 309 +- web/server/web_client_cache.h | 20 +- web/server/web_server.c | 25 - web/server/web_server.h | 1 - 118 files changed, 14696 insertions(+), 7950 deletions(-) create mode 100644 web/api/web_api.c create mode 100644 web/api/web_api.h create mode 100644 web/api/web_api_v2.c create mode 100644 web/api/web_api_v2.h create mode 100644 web/gui/dashboard/precache-manifest.21dcd7c609bff6504512face054c360f.js delete mode 100644 web/gui/dashboard/precache-manifest.5fec6109084644adf7bf854243e1a044.js delete mode 100644 web/gui/dashboard/static/js/2.92ca8446.chunk.js delete mode 100644 web/gui/dashboard/static/js/2.92ca8446.chunk.js.LICENSE delete mode 100644 web/gui/dashboard/static/js/2.92ca8446.chunk.js.map create mode 100644 web/gui/dashboard/static/js/2.ae48988e.chunk.js create mode 100644 web/gui/dashboard/static/js/2.ae48988e.chunk.js.LICENSE create mode 100644 web/gui/dashboard/static/js/2.ae48988e.chunk.js.map create mode 100644 web/gui/dashboard/static/js/main.76dfe4de.chunk.js create mode 100644 web/gui/dashboard/static/js/main.76dfe4de.chunk.js.LICENSE create mode 100644 web/gui/dashboard/static/js/main.76dfe4de.chunk.js.map delete mode 100644 web/gui/dashboard/static/js/main.7d1bdca1.chunk.js delete mode 100644 web/gui/dashboard/static/js/main.7d1bdca1.chunk.js.LICENSE delete mode 100644 web/gui/dashboard/static/js/main.7d1bdca1.chunk.js.map create mode 100644 web/rtc/Makefile.am create mode 100644 web/rtc/README.md create mode 100644 web/rtc/webrtc.c create mode 100644 web/rtc/webrtc.h (limited to 'web') diff --git a/web/Makefile.am b/web/Makefile.am index ccaccd764..be2c545c3 100644 --- a/web/Makefile.am +++ b/web/Makefile.am @@ -7,6 +7,7 @@ SUBDIRS = \ api \ gui \ server \ + rtc \ $(NULL) usersslconfigdir=$(configdir)/ssl diff --git a/web/README.md b/web/README.md index eae579346..0e6c90fc8 100644 --- a/web/README.md +++ b/web/README.md @@ -1,10 +1,4 @@ - - -# Dashboards +# Agent Dashboards Because Netdata is a health monitoring and _performance troubleshooting_ system, we put a lot of emphasis on real-time, meaningful, and context-aware charts. @@ -12,7 +6,7 @@ we put a lot of emphasis on real-time, meaningful, and context-aware charts. We bundle Netdata with a dashboard and hundreds of charts, designed by both our team and the community, but you can also customize them yourself. -There are two primary ways to view Netdata's dashboards: +There are two primary ways to view Netdata's dashboards on the agent: 1. The [local Agent dashboard](https://github.com/netdata/netdata/blob/master/web/gui/README.md) that comes pre-configured with every Netdata installation. You can see it at `http://NODE:19999`, replacing `NODE` with `localhost`, the hostname of your node, or its IP address. You @@ -26,188 +20,6 @@ There are two primary ways to view Netdata's dashboards: You can also view all the data Netdata collects through the [REST API v1](https://github.com/netdata/netdata/blob/master/web/api/README.md#netdata-rest-api). -No matter where you use Netdata's charts, you'll want to know how to [use](#using-charts) them. You'll also want to -understand how Netdata defines [charts](#charts), [dimensions](#dimensions), [families](#families), and -[contexts](#contexts). - -## Using charts - -Netdata's charts are far from static. They are interactive, real-time, and work -with your mouse, touchpad, or touchscreen! - -Hover over any chart to temporarily pause it and see the exact values presented -as different [dimensions](#dimensions). Click or tap stop the chart from automatically updating with new metrics, thereby locking it to a single timeframe. - -![Animated GIF of hovering over a chart to see -values](https://user-images.githubusercontent.com/1153921/62968279-9227dd00-bdbf-11e9-9112-1d21444d0f31.gif) - -You can change how charts show their metrics by zooming in or out, moving -forward or backward in time, or selecting a specific timeframe for more in-depth -analysis. - -Whenever you use a chart in this way, Netdata synchronizes all the other charts -to match it. - -You can change how charts show their metrics in a few different ways, each of -which have a few methods: - -| Manipulation | Method #1 | Method #2 | Method #3 | -|--- |--- |--- |--- | -| **Reset** charts to default auto-refreshing state  | `double click` | `double tap` (touchpad/touchscreen)  |  | -| **Select** a certain timeframe | `ALT` + `mouse selection`  | `⌘` + `mouse selection` (macOS)  |  | -| **Pan** forward or back in time  | `click and drag` | `touch and drag` (touchpad/touchscreen)  |  | -| **Zoom** to a specific timeframe | `SHIFT` + `mouse selection`  |  |  | -| **Zoom** in/out  | `SHIFT`/`ALT` + `mouse scrollwheel`  | `SHIFT`/`ALT` + `two-finger pinch` (touchpad/touchscreen)  | `SHIFT`/`ALT` + `two-finger scroll` (touchpad/touchscreen) | - -Here's how chart synchronization looks while zooming and panning: - -![Animated GIF of the standard Netdata dashboard being manipulated and synchronizing -charts](https://user-images.githubusercontent.com/1153921/80839230-b034a800-8baf-11ea-9cb2-99c1e10f0f85.gif) - -You can also perform all these actions using the small -rewind/play/fast-forward/zoom-in/zoom-out buttons that appear in the -bottom-right corner of each chart. - -Additionally, resize charts by clicking-and-dragging the icon on the bottom-right corner of any chart. To restore the -chart to its original height, double-click the same icon. - -![Animated GIF of resizing a chart and resetting it to the default -height](https://user-images.githubusercontent.com/1153921/80842459-7d41e280-8bb6-11ea-9488-1bc29f94d7f2.gif) - -## Charts, contexts, families - -Before customizing the standard web dashboard, creating a custom dashboard, -configuring an alarm, or writing a collector, it's crucial to understand how -Netdata organizes metrics into charts, dimensions, families, and contexts. - -### Charts - -A **chart** is an individual, interactive, always-updating graphic displaying -one or more collected/calculated metrics. Charts are generated by -[collectors](https://github.com/netdata/netdata/blob/master/collectors/README.md). - -Here's the system CPU chart, the first chart displayed on the standard -dashboard: - -![Screenshot of the system CPU chart in the Netdata -dashboard](https://user-images.githubusercontent.com/1153921/62720972-0b8a8e80-b9c0-11e9-930b-4829f7b17cfd.png) - -Netdata displays a chart's name in parentheses above the chart. For example, if -you navigate to the system CPU chart, you'll see the label: **Total CPU -utilization (system.cpu)**. In this case, the chart's name is `system.cpu`. -Netdata derives the name from the chart's [context](#contexts). - -### Dimensions - -A **dimension** is a value that gets shown on a chart. The value can be raw data -or calculated values, such as percentages, aggregates, and more. - -Charts are capable of showing more than one dimension. Netdata shows these -dimensions on the right side of the chart, beneath the date and time. Again, the -`system.cpu` chart will serve as a good example. - -![Screenshot of the dimensions shown in the system CPU chart in the Netdata -dashboard](https://user-images.githubusercontent.com/1153921/62721031-2bba4d80-b9c0-11e9-9dca-32403617ce72.png) - -Here, the `system.cpu` chart is showing many dimensions, such as `user`, -`system`, `softirq`, `irq`, and more. - -Note that other applications sometimes use the word _series_ instead of -_dimension_. - -### Families - -A **family** is _one_ instance of a monitored hardware or software resource that -needs to be monitored and displayed separately from similar instances. - -For example, if your system has multiple disk drives at `sda` and `sdb`, Netdata -will put each interface into their own family. Same goes for software resources, -like multiple MySQL instances. We call these instances "families" because the -charts associated with a single disk instance, for example, are often related to -each other. Relatives, family... get it? - -When relevant, Netdata prefers to organize charts by family. When you visit the -**Disks** section, you will see your disk drives organized into families, and -each family will have one or more charts: `disk`, `disk_ops`, `disk_backlog`, -`disk_util`, `disk_await`, `disk_avgsz`, `disk_svctm`, `disk_mops`, and -`disk_iotime`. - -In the screenshot below, the disk family `sdb` shows a few gauges, followed by a -few of the associated charts: - -![Screenshot of a disk drive family and associated charts in the Netdata -dashboard](https://user-images.githubusercontent.com/1153921/62721362-e34f5f80-b9c0-11e9-8d2e-9a3bec48e920.png) - -Netdata also creates separate submenu entries for each family in the right -navigation page so you can easily navigate to the instance you're interested in. -Here, Netdata has made several submenus under the **Disk** menu. - -![Screenshot of the disks menu and -submenus](https://user-images.githubusercontent.com/1153921/62721531-3cb78e80-b9c1-11e9-89c2-fdd736aec7d4.png) - -### Contexts - -A **context** is a way of grouping charts by the types of metrics collected and -dimensions displayed. Different charts with the same context will show the same -dimensions, but for different instances (families) of hardware/software -resources. - -For example, the **Disks** section will often use many contexts (`disk.io`, -`disk.ops`, `disk.backlog`, `disk.util`, and so on). Netdata then creates an -individual chart for each context, and groups them by family. - -Netdata names charts according to their context according to the following -structure: `[context].[family]`. A chart with the `disk.util` context, in the -`sdb` family, gets the name `disk_util.sdb`. Netdata shows that name in the -top-left corner of a chart. - -Given the four example contexts, and two families of `sdb` and `sdd`, Netdata -will create the following charts and their names: - -| Context | `sdb` family | `sdd` family | -|----------------|--------------------|--------------------| -| `disk.io` | `disk_io.sdb` | `disk_io.sdd` | -| `disk.ops` | `disk_ops.sdb` | `disk_ops.sdd` | -| `disk.backlog` | `disk_backlog.sdb` | `disk_backlog.sdd` | -| `disk.util` | `disk_util.sdb` | `disk_util.sdd` | - -And here's what two of those charts in the `disk.io` context look like under -`sdb` and `sdd` families: - -![context_01](https://user-images.githubusercontent.com/1153921/62728232-177e4c80-b9d0-11e9-9e29-2a6c59d4d873.png) -![context_02](https://user-images.githubusercontent.com/1153921/62728234-1b11d380-b9d0-11e9-8904-07befd8ac592.png) - -As you can see in the screenshot, you can view the context of a chart if you -hover over the date above the list of dimensions. A tooltip will appear that -shows you two pieces of information: the collector that produces the chart, and -the chart's context. - -Netdata also uses [contexts for alarm templates](https://github.com/netdata/netdata/blob/master/health/REFERENCE.md#alarm-line-on). You can create an alarm for the -`net.packets` context to receive alerts for any chart with that context, no matter which family it's attached to. - -## Positive and negative values on charts - -To improve clarity on charts, Netdata dashboards present **positive** values for -metrics representing `read`, `input`, `inbound`, `received` and **negative** -values for metrics representing `write`, `output`, `outbound`, `sent`. - -![Screenshot showing positive and negative -values](https://user-images.githubusercontent.com/1153921/81870401-9d649080-952a-11ea-80e3-4a7b480252ee.gif) - -_Netdata charts showing the bandwidth and packets of a network interface. -`received` is positive and `sent` is negative._ - -## Autoscaled y-axis - -Netdata charts automatically zoom vertically, to visualize the variation of each -metric within the visible timeframe. - -![Animated GIF showing the auso-scaling Y -axis](https://user-images.githubusercontent.com/1153921/80838276-8084a080-8bad-11ea-8167-8d5ab2fb1be1.gif) - -_A zero-based `stacked` chart, automatically switches to an auto-scaled `area` -chart when a single dimension is selected._ - ## dashboard.js Netdata uses the `dashboards.js` file to define, configure, create, and update diff --git a/web/api/README.md b/web/api/README.md index 82a55eb25..237394a88 100644 --- a/web/api/README.md +++ b/web/api/README.md @@ -1,16 +1,12 @@ - - # API -## Netdata REST API +## Netdata agent REST API + +The complete documentation of the Netdata agent's REST API is documented in the OpenAPI format [in our GitHub repository](https://raw.githubusercontent.com/netdata/netdata/master/web/api/netdata-swagger.yaml). + +You can explore it using the **[Swagger UI](https://learn.netdata.cloud/api)**, or the **[Swagger Editor](https://editor.swagger.io/?url=https://raw.githubusercontent.com/netdata/netdata/master/web/api/netdata-swagger.yaml)**. -The complete documentation of the Netdata API is available as a Swagger API document [in our GitHub repository](https://raw.githubusercontent.com/netdata/netdata/master/web/api/netdata-swagger.yaml). You can view it online using the **[Swagger Editor](https://editor.swagger.io/?url=https://raw.githubusercontent.com/netdata/netdata/master/web/api/netdata-swagger.yaml)**. +## Netdata cloud API -If your prefer it over the Swagger Editor, you can also use [Swagger UI](https://github.com/swagger-api/swagger-ui) by pointing at `web/api/netdata-swagger.yaml` in the Netdata source tree (or at https://raw.githubusercontent.com/netdata/netdata/master/web/api/netdata-swagger.yaml if you want to use the Swagger API definitions directly from our GitHub repository). This however does not provide all the information available. +A very basic Netdata cloud REST API supports the [Grafana data source plugin](https://github.com/netdata/netdata-grafana-datasource-plugin/blob/master/README.md), +but has not yet been expanded for wider use. We intend to provide a properly documented API in the future. diff --git a/web/api/badges/README.md b/web/api/badges/README.md index 8f6eca62a..e40e706eb 100644 --- a/web/api/badges/README.md +++ b/web/api/badges/README.md @@ -1,6 +1,10 @@ # Netdata badges diff --git a/web/api/badges/web_buffer_svg.c b/web/api/badges/web_buffer_svg.c index ca0f4b7a0..b69f35afa 100644 --- a/web/api/badges/web_buffer_svg.c +++ b/web/api/badges/web_buffer_svg.c @@ -767,7 +767,7 @@ void buffer_svg(BUFFER *wb, const char *label, label_color_parsed = parse_color_argument(label_color, "555"); value_color_parsed = parse_color_argument(value_color_buffer, "555"); - wb->contenttype = CT_IMAGE_SVG_XML; + wb->content_type = CT_IMAGE_SVG_XML; total_width = total_width * scale / 100.0; height = height * scale / 100.0; @@ -898,10 +898,10 @@ int web_client_api_request_v1_badge(RRDHOST *host, struct web_client *w, char *u RRDSET *st = NULL; while(url) { - char *value = mystrsep(&url, "&"); + char *value = strsep_skip_consecutive_separators(&url, "&"); if(!value || !*value) continue; - char *name = mystrsep(&value, "="); + char *name = strsep_skip_consecutive_separators(&value, "="); if(!name || !*name) continue; if(!value || !*value) continue; @@ -923,7 +923,7 @@ int web_client_api_request_v1_badge(RRDHOST *host, struct web_client *w, char *u else if(!strcmp(name, "points")) points_str = value; else if(!strcmp(name, "group_options")) group_options = value; else if(!strcmp(name, "group")) { - group = web_client_api_request_v1_data_group(value, RRDR_GROUPING_AVERAGE); + group = time_grouping_parse(value, RRDR_GROUPING_AVERAGE); } else if(!strcmp(name, "options")) { options |= web_client_api_request_v1_data_options(value); diff --git a/web/api/exporters/README.md b/web/api/exporters/README.md index 1d517a91e..4be567691 100644 --- a/web/api/exporters/README.md +++ b/web/api/exporters/README.md @@ -1,6 +1,10 @@ # Exporters diff --git a/web/api/exporters/allmetrics.c b/web/api/exporters/allmetrics.c index 88065400d..cad52a7d5 100644 --- a/web/api/exporters/allmetrics.c +++ b/web/api/exporters/allmetrics.c @@ -39,10 +39,10 @@ inline int web_client_api_request_v1_allmetrics(RRDHOST *host, struct web_client prometheus_prefix = global_exporting_prefix; while(url) { - char *value = mystrsep(&url, "&"); + char *value = strsep_skip_consecutive_separators(&url, "&"); if (!value || !*value) continue; - char *name = mystrsep(&value, "="); + char *name = strsep_skip_consecutive_separators(&value, "="); if(!name || !*name) continue; if(!value || !*value) continue; @@ -90,17 +90,17 @@ inline int web_client_api_request_v1_allmetrics(RRDHOST *host, struct web_client switch(format) { case ALLMETRICS_JSON: - w->response.data->contenttype = CT_APPLICATION_JSON; + w->response.data->content_type = CT_APPLICATION_JSON; rrd_stats_api_v1_charts_allmetrics_json(host, filter, w->response.data); return HTTP_RESP_OK; case ALLMETRICS_SHELL: - w->response.data->contenttype = CT_TEXT_PLAIN; + w->response.data->content_type = CT_TEXT_PLAIN; rrd_stats_api_v1_charts_allmetrics_shell(host, filter, w->response.data); return HTTP_RESP_OK; case ALLMETRICS_PROMETHEUS: - w->response.data->contenttype = CT_PROMETHEUS; + w->response.data->content_type = CT_PROMETHEUS; rrd_stats_api_v1_charts_allmetrics_prometheus_single_host( host , filter @@ -113,7 +113,7 @@ inline int web_client_api_request_v1_allmetrics(RRDHOST *host, struct web_client return HTTP_RESP_OK; case ALLMETRICS_PROMETHEUS_ALL_HOSTS: - w->response.data->contenttype = CT_PROMETHEUS; + w->response.data->content_type = CT_PROMETHEUS; rrd_stats_api_v1_charts_allmetrics_prometheus_all_hosts( host , filter @@ -126,7 +126,7 @@ inline int web_client_api_request_v1_allmetrics(RRDHOST *host, struct web_client return HTTP_RESP_OK; default: - w->response.data->contenttype = CT_TEXT_PLAIN; + w->response.data->content_type = CT_TEXT_PLAIN; buffer_strcat(w->response.data, "Which format? '" ALLMETRICS_FORMAT_SHELL "', '" ALLMETRICS_FORMAT_PROMETHEUS "', '" ALLMETRICS_FORMAT_PROMETHEUS_ALL_HOSTS "' and '" ALLMETRICS_FORMAT_JSON "' are currently supported."); return HTTP_RESP_BAD_REQUEST; } diff --git a/web/api/exporters/prometheus/README.md b/web/api/exporters/prometheus/README.md index 1ff86f4e0..5e0f98c16 100644 --- a/web/api/exporters/prometheus/README.md +++ b/web/api/exporters/prometheus/README.md @@ -1,6 +1,10 @@ # Prometheus exporter diff --git a/web/api/exporters/shell/README.md b/web/api/exporters/shell/README.md index a41326c9d..a17ff1148 100644 --- a/web/api/exporters/shell/README.md +++ b/web/api/exporters/shell/README.md @@ -1,9 +1,13 @@ -# shell exporter +# Shell exporter Shell scripts can now query Netdata: diff --git a/web/api/exporters/shell/allmetrics_shell.c b/web/api/exporters/shell/allmetrics_shell.c index dded5a536..fbfd6b574 100644 --- a/web/api/exporters/shell/allmetrics_shell.c +++ b/web/api/exporters/shell/allmetrics_shell.c @@ -24,12 +24,12 @@ static inline size_t shell_name_copy(char *d, const char *s, size_t usable) { void rrd_stats_api_v1_charts_allmetrics_shell(RRDHOST *host, const char *filter_string, BUFFER *wb) { analytics_log_shell(); - SIMPLE_PATTERN *filter = simple_pattern_create(filter_string, NULL, SIMPLE_PATTERN_EXACT); + SIMPLE_PATTERN *filter = simple_pattern_create(filter_string, NULL, SIMPLE_PATTERN_EXACT, true); // for each chart RRDSET *st; rrdset_foreach_read(st, host) { - if (filter && !simple_pattern_matches(filter, rrdset_name(st))) + if (filter && !simple_pattern_matches_string(filter, st->name)) continue; NETDATA_DOUBLE total = 0.0; @@ -97,7 +97,7 @@ void rrd_stats_api_v1_charts_allmetrics_shell(RRDHOST *host, const char *filter_ void rrd_stats_api_v1_charts_allmetrics_json(RRDHOST *host, const char *filter_string, BUFFER *wb) { analytics_log_json(); - SIMPLE_PATTERN *filter = simple_pattern_create(filter_string, NULL, SIMPLE_PATTERN_EXACT); + SIMPLE_PATTERN *filter = simple_pattern_create(filter_string, NULL, SIMPLE_PATTERN_EXACT, true); buffer_strcat(wb, "{"); @@ -107,7 +107,7 @@ void rrd_stats_api_v1_charts_allmetrics_json(RRDHOST *host, const char *filter_s // for each chart RRDSET *st; rrdset_foreach_read(st, host) { - if (filter && !(simple_pattern_matches(filter, rrdset_id(st)) || simple_pattern_matches(filter, rrdset_name(st)))) + if (filter && !(simple_pattern_matches_string(filter, st->id) || simple_pattern_matches_string(filter, st->name))) continue; if(rrdset_is_available_for_viewers(st)) { diff --git a/web/api/formatters/README.md b/web/api/formatters/README.md index 4c281f064..ddc70d90f 100644 --- a/web/api/formatters/README.md +++ b/web/api/formatters/README.md @@ -1,6 +1,10 @@ # Query formatting diff --git a/web/api/formatters/charts2json.c b/web/api/formatters/charts2json.c index 61a9ecf2f..4b6b095c2 100644 --- a/web/api/formatters/charts2json.c +++ b/web/api/formatters/charts2json.c @@ -137,55 +137,3 @@ void charts2json(RRDHOST *host, BUFFER *wb, int skip_volatile, int show_archived buffer_sprintf(wb, "\n\t]\n}\n"); } - -// generate collectors list for the api/v1/info call - -struct collector { - const char *plugin; - const char *module; -}; - -struct array_printer { - int c; - BUFFER *wb; -}; - -static int print_collector_callback(const DICTIONARY_ITEM *item __maybe_unused, void *entry, void *data) { - struct array_printer *ap = (struct array_printer *)data; - BUFFER *wb = ap->wb; - struct collector *col=(struct collector *) entry; - if(ap->c) buffer_strcat(wb, ","); - buffer_strcat(wb, "\n\t\t{\n\t\t\t\"plugin\": \""); - buffer_strcat(wb, col->plugin); - buffer_strcat(wb, "\",\n\t\t\t\"module\": \""); - buffer_strcat(wb, col->module); - buffer_strcat(wb, "\"\n\t\t}"); - (ap->c)++; - return 0; -} - -void chartcollectors2json(RRDHOST *host, BUFFER *wb) { - DICTIONARY *dict = dictionary_create(DICT_OPTION_SINGLE_THREADED); - RRDSET *st; - char name[500]; - - time_t now = now_realtime_sec(); - rrdset_foreach_read(st, host) { - if (rrdset_is_available_for_viewers(st)) { - struct collector col = { - .plugin = rrdset_plugin_name(st), - .module = rrdset_module_name(st) - }; - sprintf(name, "%s:%s", col.plugin, col.module); - dictionary_set(dict, name, &col, sizeof(struct collector)); - st->last_accessed_time_s = now; - } - } - rrdset_foreach_done(st); - struct array_printer ap = { - .c = 0, - .wb = wb - }; - dictionary_walkthrough_read(dict, print_collector_callback, &ap); - dictionary_destroy(dict); -} diff --git a/web/api/formatters/charts2json.h b/web/api/formatters/charts2json.h index d4b04af58..96720d4b4 100644 --- a/web/api/formatters/charts2json.h +++ b/web/api/formatters/charts2json.h @@ -6,7 +6,6 @@ #include "rrd2json.h" void charts2json(RRDHOST *host, BUFFER *wb, int skip_volatile, int show_archived); -void chartcollectors2json(RRDHOST *host, BUFFER *wb); const char* get_release_channel(); #endif //NETDATA_API_FORMATTER_CHARTS2JSON_H diff --git a/web/api/formatters/csv/README.md b/web/api/formatters/csv/README.md index fc5ffec1b..4585710b4 100644 --- a/web/api/formatters/csv/README.md +++ b/web/api/formatters/csv/README.md @@ -1,6 +1,10 @@ # CSV formatter diff --git a/web/api/formatters/csv/csv.c b/web/api/formatters/csv/csv.c index 18009f146..8f4950ddd 100644 --- a/web/api/formatters/csv/csv.c +++ b/web/api/formatters/csv/csv.c @@ -5,15 +5,13 @@ void rrdr2csv(RRDR *r, BUFFER *wb, uint32_t format, RRDR_OPTIONS options, const char *startline, const char *separator, const char *endline, const char *betweenlines) { //info("RRD2CSV(): %s: BEGIN", r->st->id); - QUERY_TARGET *qt = r->internal.qt; long c, i; - const long used = qt->query.used; + const long used = (long)r->d; // print the csv header for(c = 0, i = 0; c < used ; c++) { - if(unlikely(r->od[c] & RRDR_DIMENSION_HIDDEN)) continue; - if(unlikely(!(r->od[c] & RRDR_DIMENSION_QUERIED))) continue; - if(unlikely((options & RRDR_OPTION_NONZERO) && !(r->od[c] & RRDR_DIMENSION_NONZERO))) continue; + if(!rrdr_dimension_should_be_exposed(r->od[c], options)) + continue; if(!i) { buffer_strcat(wb, startline); @@ -23,7 +21,7 @@ void rrdr2csv(RRDR *r, BUFFER *wb, uint32_t format, RRDR_OPTIONS options, const } buffer_strcat(wb, separator); if(options & RRDR_OPTION_LABEL_QUOTES) buffer_strcat(wb, "\""); - buffer_strcat(wb, string2str(qt->query.array[c].dimension.name)); + buffer_strcat(wb, string2str(r->dn[c])); if(options & RRDR_OPTION_LABEL_QUOTES) buffer_strcat(wb, "\""); i++; } @@ -32,9 +30,8 @@ void rrdr2csv(RRDR *r, BUFFER *wb, uint32_t format, RRDR_OPTIONS options, const if(format == DATASOURCE_CSV_MARKDOWN) { // print the --- line after header for(c = 0, i = 0; c < used ;c++) { - if(unlikely(r->od[c] & RRDR_DIMENSION_HIDDEN)) continue; - if(unlikely(!(r->od[c] & RRDR_DIMENSION_QUERIED))) continue; - if(unlikely((options & RRDR_OPTION_NONZERO) && !(r->od[c] & RRDR_DIMENSION_NONZERO))) continue; + if(!rrdr_dimension_should_be_exposed(r->od[c], options)) + continue; if(!i) { buffer_strcat(wb, startline); @@ -64,7 +61,6 @@ void rrdr2csv(RRDR *r, BUFFER *wb, uint32_t format, RRDR_OPTIONS options, const } // for each line in the array - NETDATA_DOUBLE total = 1; for(i = start; i != end ;i += step) { NETDATA_DOUBLE *cn = &r->v[ i * r->d ]; RRDR_VALUE_FLAGS *co = &r->o[ i * r->d ]; @@ -76,7 +72,7 @@ void rrdr2csv(RRDR *r, BUFFER *wb, uint32_t format, RRDR_OPTIONS options, const if((options & RRDR_OPTION_SECONDS) || (options & RRDR_OPTION_MILLISECONDS)) { // print the timestamp of the line - buffer_rrd_value(wb, (NETDATA_DOUBLE)now); + buffer_print_netdata_double(wb, (NETDATA_DOUBLE) now); // in ms if(options & RRDR_OPTION_MILLISECONDS) buffer_strcat(wb, "000"); } @@ -87,29 +83,10 @@ void rrdr2csv(RRDR *r, BUFFER *wb, uint32_t format, RRDR_OPTIONS options, const buffer_date(wb, tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday, tm->tm_hour, tm->tm_min, tm->tm_sec); } - int set_min_max = 0; - if(unlikely(options & RRDR_OPTION_PERCENTAGE)) { - total = 0; - for(c = 0; c < used ;c++) { - if(unlikely(!(r->od[c] & RRDR_DIMENSION_QUERIED))) continue; - - NETDATA_DOUBLE n = cn[c]; - - if(likely((options & RRDR_OPTION_ABSOLUTE) && n < 0)) - n = -n; - - total += n; - } - // prevent a division by zero - if(total == 0) total = 1; - set_min_max = 1; - } - // for each dimension for(c = 0; c < used ;c++) { - if(unlikely(r->od[c] & RRDR_DIMENSION_HIDDEN)) continue; - if(unlikely(!(r->od[c] & RRDR_DIMENSION_QUERIED))) continue; - if(unlikely((options & RRDR_OPTION_NONZERO) && !(r->od[c] & RRDR_DIMENSION_NONZERO))) continue; + if(!rrdr_dimension_should_be_exposed(r->od[c], options)) + continue; buffer_strcat(wb, separator); @@ -121,24 +98,8 @@ void rrdr2csv(RRDR *r, BUFFER *wb, uint32_t format, RRDR_OPTIONS options, const else buffer_strcat(wb, "null"); } - else { - if(unlikely((options & RRDR_OPTION_ABSOLUTE) && n < 0)) - n = -n; - - if(unlikely(options & RRDR_OPTION_PERCENTAGE)) { - n = n * 100 / total; - - if(unlikely(set_min_max)) { - r->min = r->max = n; - set_min_max = 0; - } - - if(n < r->min) r->min = n; - if(n > r->max) r->max = n; - } - - buffer_rrd_value(wb, n); - } + else + buffer_print_netdata_double(wb, n); } buffer_strcat(wb, endline); diff --git a/web/api/formatters/json/README.md b/web/api/formatters/json/README.md index 75f729ada..bc70aec02 100644 --- a/web/api/formatters/json/README.md +++ b/web/api/formatters/json/README.md @@ -1,6 +1,10 @@ # JSON formatter diff --git a/web/api/formatters/json/json.c b/web/api/formatters/json/json.c index 3cad3e914..d5b8c7570 100644 --- a/web/api/formatters/json/json.c +++ b/web/api/formatters/json/json.c @@ -42,7 +42,7 @@ void rrdr2json(RRDR *r, BUFFER *wb, RRDR_OPTIONS options, int datatable) { strcpy(post_value, "}"); strcpy(post_line, "]}"); snprintfz(data_begin, 100, "\n ],\n %srows%s:\n [\n", kq, kq); - strcpy(finish, "\n]\n}"); + strcpy(finish, "\n ]\n }"); snprintfz(overflow_annotation, 200, ",{%sv%s:%sRESET OR OVERFLOW%s},{%sv%s:%sThe counters have been wrapped.%s}", kq, kq, sq, sq, kq, kq, sq, sq); snprintfz(normal_annotation, 200, ",{%sv%s:null},{%sv%s:null}", kq, kq, kq, kq); @@ -69,9 +69,9 @@ void rrdr2json(RRDR *r, BUFFER *wb, RRDR_OPTIONS options, int datatable) { dates_with_new = 0; } if( options & RRDR_OPTION_OBJECTSROWS ) - strcpy(pre_date, " { "); + strcpy(pre_date, " {"); else - strcpy(pre_date, " [ "); + strcpy(pre_date, " ["); strcpy(pre_label, ",\""); strcpy(post_label, "\""); strcpy(pre_value, ","); @@ -79,10 +79,10 @@ void rrdr2json(RRDR *r, BUFFER *wb, RRDR_OPTIONS options, int datatable) { strcpy(post_line, "}"); else strcpy(post_line, "]"); - snprintfz(data_begin, 100, "],\n %sdata%s:\n [\n", kq, kq); - strcpy(finish, "\n]\n}"); + snprintfz(data_begin, 100, "],\n %sdata%s:[\n", kq, kq); + strcpy(finish, "\n ]\n }"); - buffer_sprintf(wb, "{\n %slabels%s: [", kq, kq); + buffer_sprintf(wb, "{\n %slabels%s:[", kq, kq); buffer_sprintf(wb, "%stime%s", sq, sq); if( options & RRDR_OPTION_OBJECTSROWS ) @@ -104,18 +104,16 @@ void rrdr2json(RRDR *r, BUFFER *wb, RRDR_OPTIONS options, int datatable) { // ------------------------------------------------------------------------- // print the JSON header - QUERY_TARGET *qt = r->internal.qt; long c, i; - const long used = qt->query.used; + const long used = (long)r->d; // print the header lines for(c = 0, i = 0; c < used ; c++) { - if(unlikely(r->od[c] & RRDR_DIMENSION_HIDDEN)) continue; - if(unlikely(!(r->od[c] & RRDR_DIMENSION_QUERIED))) continue; - if(unlikely((options & RRDR_OPTION_NONZERO) && !(r->od[c] & RRDR_DIMENSION_NONZERO))) continue; + if(!rrdr_dimension_should_be_exposed(r->od[c], options)) + continue; buffer_fast_strcat(wb, pre_label, pre_label_len); - buffer_strcat(wb, string2str(qt->query.array[c].dimension.name)); + buffer_strcat(wb, string2str(r->dn[c])); buffer_fast_strcat(wb, post_label, post_label_len); i++; } @@ -151,7 +149,6 @@ void rrdr2json(RRDR *r, BUFFER *wb, RRDR_OPTIONS options, int datatable) { ); // for each line in the array - NETDATA_DOUBLE total = 1; for(i = start; i != end ;i += step) { NETDATA_DOUBLE *cn = &r->v[ i * r->d ]; RRDR_VALUE_FLAGS *co = &r->o[ i * r->d ]; @@ -203,7 +200,7 @@ void rrdr2json(RRDR *r, BUFFER *wb, RRDR_OPTIONS options, int datatable) { if(unlikely( options & RRDR_OPTION_OBJECTSROWS )) buffer_fast_strcat(wb, object_rows_time, object_rows_time_len); - buffer_rrd_value(wb, (NETDATA_DOUBLE)r->t[i]); + buffer_print_netdata_double(wb, (NETDATA_DOUBLE) r->t[i]); // in ms if(unlikely(options & RRDR_OPTION_MILLISECONDS)) @@ -212,33 +209,10 @@ void rrdr2json(RRDR *r, BUFFER *wb, RRDR_OPTIONS options, int datatable) { buffer_fast_strcat(wb, post_date, post_date_len); } - int set_min_max = 0; - if(unlikely(options & RRDR_OPTION_PERCENTAGE)) { - total = 0; - for(c = 0; c < used ;c++) { - if(unlikely(!(r->od[c] & RRDR_DIMENSION_QUERIED))) continue; - - NETDATA_DOUBLE n; - if(unlikely(options & RRDR_OPTION_INTERNAL_AR)) - n = ar[c]; - else - n = cn[c]; - - if(likely((options & RRDR_OPTION_ABSOLUTE) && n < 0)) - n = -n; - - total += n; - } - // prevent a division by zero - if(total == 0) total = 1; - set_min_max = 1; - } - // for each dimension for(c = 0; c < used ;c++) { - if(unlikely(r->od[c] & RRDR_DIMENSION_HIDDEN)) continue; - if(unlikely(!(r->od[c] & RRDR_DIMENSION_QUERIED))) continue; - if(unlikely((options & RRDR_OPTION_NONZERO) && !(r->od[c] & RRDR_DIMENSION_NONZERO))) continue; + if(!rrdr_dimension_should_be_exposed(r->od[c], options)) + continue; NETDATA_DOUBLE n; if(unlikely(options & RRDR_OPTION_INTERNAL_AR)) @@ -249,39 +223,119 @@ void rrdr2json(RRDR *r, BUFFER *wb, RRDR_OPTIONS options, int datatable) { buffer_fast_strcat(wb, pre_value, pre_value_len); if(unlikely( options & RRDR_OPTION_OBJECTSROWS )) - buffer_sprintf(wb, "%s%s%s: ", kq, string2str(qt->query.array[c].dimension.name), kq); + buffer_sprintf(wb, "%s%s%s: ", kq, string2str(r->dn[c]), kq); - if(co[c] & RRDR_VALUE_EMPTY && !(options & RRDR_OPTION_INTERNAL_AR)) { + if(co[c] & RRDR_VALUE_EMPTY && !(options & (RRDR_OPTION_INTERNAL_AR))) { if(unlikely(options & RRDR_OPTION_NULL2ZERO)) buffer_fast_strcat(wb, "0", 1); else buffer_fast_strcat(wb, "null", 4); } - else { - if(unlikely((options & RRDR_OPTION_ABSOLUTE) && n < 0)) - n = -n; + else + buffer_print_netdata_double(wb, n); - if(unlikely(options & RRDR_OPTION_PERCENTAGE)) { - n = n * 100 / total; + buffer_fast_strcat(wb, post_value, post_value_len); + } - if(unlikely(set_min_max)) { - r->min = r->max = n; - set_min_max = 0; - } + buffer_fast_strcat(wb, post_line, post_line_len); + } + + buffer_strcat(wb, finish); + //info("RRD2JSON(): %s: END", r->st->id); +} + + +void rrdr2json_v2(RRDR *r, BUFFER *wb) { + QUERY_TARGET *qt = r->internal.qt; + RRDR_OPTIONS options = qt->window.options; + + bool expose_gbc = query_target_aggregatable(qt); + + buffer_json_member_add_object(wb, "result"); - if(n < r->min) r->min = n; - if(n > r->max) r->max = n; + buffer_json_member_add_array(wb, "labels"); + buffer_json_add_array_item_string(wb, "time"); + long d, i; + const long used = (long)r->d; + for(d = 0, i = 0; d < used ; d++) { + if(!rrdr_dimension_should_be_exposed(r->od[d], options)) + continue; + + buffer_json_add_array_item_string(wb, string2str(r->di[d])); + i++; + } + buffer_json_array_close(wb); // labels + + buffer_json_member_add_object(wb, "point"); + buffer_json_member_add_uint64(wb, "value", 0); + buffer_json_member_add_uint64(wb, "arp", 1); + buffer_json_member_add_uint64(wb, "pa", 2); + if(expose_gbc) + buffer_json_member_add_uint64(wb, "count", 3); + buffer_json_object_close(wb); + + buffer_json_member_add_array(wb, "data"); + if(i) { + long start = 0, end = rrdr_rows(r), step = 1; + if (!(options & RRDR_OPTION_REVERSED)) { + start = rrdr_rows(r) - 1; + end = -1; + step = -1; + } + + // for each line in the array + for (i = start; i != end; i += step) { + NETDATA_DOUBLE *cn = &r->v[ i * r->d ]; + RRDR_VALUE_FLAGS *co = &r->o[ i * r->d ]; + NETDATA_DOUBLE *ar = &r->ar[ i * r->d ]; + uint32_t *gbc = &r->gbc [ i * r->d ]; + time_t now = r->t[i]; + + buffer_json_add_array_item_array(wb); // row + + if (options & RRDR_OPTION_MILLISECONDS) + buffer_json_add_array_item_time_ms(wb, now); // the time + else + buffer_json_add_array_item_time_t(wb, now); // the time + + for (d = 0; d < used; d++) { + if (!rrdr_dimension_should_be_exposed(r->od[d], options)) + continue; + + RRDR_VALUE_FLAGS o = co[d]; + + buffer_json_add_array_item_array(wb); // point + + // add the value + NETDATA_DOUBLE n = cn[d]; + + if(o & RRDR_VALUE_EMPTY) { + if (unlikely(options & RRDR_OPTION_NULL2ZERO)) + buffer_json_add_array_item_double(wb, 0); + else + buffer_json_add_array_item_double(wb, NAN); } + else + buffer_json_add_array_item_double(wb, n); + + // add the anomaly + buffer_json_add_array_item_double(wb, ar[d]); - buffer_rrd_value(wb, n); + // add the point annotations + buffer_json_add_array_item_uint64(wb, o); + + // add the count + if(expose_gbc) + buffer_json_add_array_item_uint64(wb, gbc[d]); + + buffer_json_array_close(wb); // point } - buffer_fast_strcat(wb, post_value, post_value_len); + buffer_json_array_close(wb); // row } - - buffer_fast_strcat(wb, post_line, post_line_len); } - buffer_strcat(wb, finish); - //info("RRD2JSON(): %s: END", r->st->id); + buffer_json_array_close(wb); // data + + buffer_json_object_close(wb); // annotations } diff --git a/web/api/formatters/json/json.h b/web/api/formatters/json/json.h index fb59e5c9a..d1ab4f901 100644 --- a/web/api/formatters/json/json.h +++ b/web/api/formatters/json/json.h @@ -6,5 +6,6 @@ #include "../rrd2json.h" void rrdr2json(RRDR *r, BUFFER *wb, RRDR_OPTIONS options, int datatable); +void rrdr2json_v2(RRDR *r, BUFFER *wb); #endif //NETDATA_API_FORMATTER_JSON_H diff --git a/web/api/formatters/json_wrapper.c b/web/api/formatters/json_wrapper.c index aa663495a..6bcbb8d5a 100644 --- a/web/api/formatters/json_wrapper.c +++ b/web/api/formatters/json_wrapper.c @@ -2,441 +2,868 @@ #include "json_wrapper.h" -struct value_output { - int c; - BUFFER *wb; -}; +static void jsonwrap_query_metric_plan(BUFFER *wb, QUERY_METRIC *qm) { + buffer_json_member_add_array(wb, "plans"); + for (size_t p = 0; p < qm->plan.used; p++) { + QUERY_PLAN_ENTRY *qp = &qm->plan.array[p]; + + buffer_json_add_array_item_object(wb); + buffer_json_member_add_uint64(wb, "tr", qp->tier); + buffer_json_member_add_time_t(wb, "af", qp->after); + buffer_json_member_add_time_t(wb, "bf", qp->before); + buffer_json_object_close(wb); + } + buffer_json_array_close(wb); + + buffer_json_member_add_array(wb, "tiers"); + for (size_t tier = 0; tier < storage_tiers; tier++) { + buffer_json_add_array_item_object(wb); + buffer_json_member_add_uint64(wb, "tr", tier); + buffer_json_member_add_time_t(wb, "fe", qm->tiers[tier].db_first_time_s); + buffer_json_member_add_time_t(wb, "le", qm->tiers[tier].db_last_time_s); + buffer_json_member_add_int64(wb, "wg", qm->tiers[tier].weight); + buffer_json_object_close(wb); + } + buffer_json_array_close(wb); +} -static int value_list_output_callback(const DICTIONARY_ITEM *item __maybe_unused, void *entry, void *data) { - struct value_output *ap = (struct value_output *)data; - BUFFER *wb = ap->wb; - char *output = (char *) entry; - if(ap->c) buffer_strcat(wb, ","); - buffer_strcat(wb, output); - (ap->c)++; - return 0; +void jsonwrap_query_plan(RRDR *r, BUFFER *wb) { + QUERY_TARGET *qt = r->internal.qt; + + buffer_json_member_add_object(wb, "query_plan"); + for(size_t m = 0; m < qt->query.used; m++) { + QUERY_METRIC *qm = query_metric(qt, m); + buffer_json_member_add_object(wb, query_metric_id(qt, qm)); + jsonwrap_query_metric_plan(wb, qm); + buffer_json_object_close(wb); + } + buffer_json_object_close(wb); } -static int fill_formatted_callback(const char *name, const char *value, RRDLABEL_SRC ls, void *data) { - (void)ls; - DICTIONARY *dict = (DICTIONARY *)data; - char n[RRD_ID_LENGTH_MAX * 2 + 2]; - char output[RRD_ID_LENGTH_MAX * 2 + 8]; - char v[RRD_ID_LENGTH_MAX * 2 + 1]; +static inline size_t rrdr_dimension_names(BUFFER *wb, const char *key, RRDR *r, RRDR_OPTIONS options) { + const size_t dimensions = r->d; + size_t c, i; - sanitize_json_string(v, (char *)value, RRD_ID_LENGTH_MAX * 2); - int len = snprintfz(output, RRD_ID_LENGTH_MAX * 2 + 7, "[\"%s\", \"%s\"]", name, v); - snprintfz(n, RRD_ID_LENGTH_MAX * 2, "%s:%s", name, v); - dictionary_set(dict, n, output, len + 1); + buffer_json_member_add_array(wb, key); + for(c = 0, i = 0; c < dimensions ; c++) { + if(!rrdr_dimension_should_be_exposed(r->od[c], options)) + continue; - return 1; + buffer_json_add_array_item_string(wb, string2str(r->dn[c])); + i++; + } + buffer_json_array_close(wb); + + return i; } -void rrdr_show_plan(RRDR *r, BUFFER *wb, const char *kq, const char *sq __maybe_unused) { +static inline size_t rrdr_dimension_ids(BUFFER *wb, const char *key, RRDR *r, RRDR_OPTIONS options) { + const size_t dimensions = r->d; + size_t c, i; + + buffer_json_member_add_array(wb, key); + for(c = 0, i = 0; c < dimensions ; c++) { + if(!rrdr_dimension_should_be_exposed(r->od[c], options)) + continue; + + buffer_json_add_array_item_string(wb, string2str(r->di[c])); + i++; + } + buffer_json_array_close(wb); + + return i; +} + +static inline long jsonwrap_v1_chart_ids(BUFFER *wb, const char *key, RRDR *r, RRDR_OPTIONS options) { QUERY_TARGET *qt = r->internal.qt; + const long query_used = qt->query.used; + long c, i; - buffer_sprintf(wb, "\n\t%squery_plan%s: {", kq, kq); + buffer_json_member_add_array(wb, key); + for (c = 0, i = 0; c < query_used; c++) { + if(!rrdr_dimension_should_be_exposed(r->od[c], options)) + continue; - for(size_t m = 0; m < qt->query.used; m++) { - QUERY_METRIC *qm = &qt->query.array[m]; + QUERY_METRIC *qm = query_metric(qt, c); + QUERY_INSTANCE *qi = query_instance(qt, qm->link.query_instance_id); + buffer_json_add_array_item_string(wb, rrdinstance_acquired_id(qi->ria)); + i++; + } + buffer_json_array_close(wb); - if(m) - buffer_strcat(wb, ","); + return i; +} - buffer_sprintf(wb, "\n\t\t%s%s%s: {", kq, string2str(qm->dimension.id), kq); +struct summary_total_counts { + size_t selected; + size_t excluded; + size_t queried; + size_t failed; +}; - buffer_sprintf(wb, "\n\t\t\t%splans%s: [", kq, kq); - for(size_t p = 0; p < qm->plan.used ;p++) { - QUERY_PLAN_ENTRY *qp = &qm->plan.array[p]; - if(p) - buffer_strcat(wb, ","); +static inline void aggregate_into_summary_totals(struct summary_total_counts *totals, QUERY_METRICS_COUNTS *metrics) { + if(unlikely(!totals || !metrics)) + return; - buffer_strcat(wb, "\n\t\t\t\t{"); - buffer_sprintf(wb, "\n\t\t\t\t\t%stier%s: %zu,", kq, kq, qp->tier); - buffer_sprintf(wb, "\n\t\t\t\t\t%safter%s: %ld,", kq, kq, qp->after); - buffer_sprintf(wb, "\n\t\t\t\t\t%sbefore%s: %ld", kq, kq, qp->before); - buffer_strcat(wb, "\n\t\t\t\t}"); - } - buffer_strcat(wb, "\n\t\t\t],"); - - buffer_sprintf(wb, "\n\t\t\t%stiers%s: [", kq, kq); - for(size_t tier = 0; tier < storage_tiers ;tier++) { - if(tier) - buffer_strcat(wb, ","); - - buffer_strcat(wb, "\n\t\t\t\t{"); - buffer_sprintf(wb, "\n\t\t\t\t\t%stier%s: %zu,", kq, kq, tier); - buffer_sprintf(wb, "\n\t\t\t\t\t%sdb_first_time%s: %ld,", kq, kq, qm->tiers[tier].db_first_time_s); - buffer_sprintf(wb, "\n\t\t\t\t\t%sdb_last_time%s: %ld,", kq, kq, qm->tiers[tier].db_last_time_s); - buffer_sprintf(wb, "\n\t\t\t\t\t%sweight%s: %ld", kq, kq, qm->tiers[tier].weight); - buffer_strcat(wb, "\n\t\t\t\t}"); - } - buffer_strcat(wb, "\n\t\t\t]"); + if(metrics->selected) { + totals->selected++; + + if(metrics->queried) + totals->queried++; - buffer_strcat(wb, "\n\t\t}"); + else if(metrics->failed) + totals->failed++; } + else + totals->excluded++; +} + +static inline void query_target_total_counts(BUFFER *wb, const char *key, struct summary_total_counts *totals) { + if(!totals->selected && !totals->queried && !totals->failed && !totals->excluded) + return; - buffer_strcat(wb, "\n\t},"); + buffer_json_member_add_object(wb, key); + + if(totals->selected) + buffer_json_member_add_uint64(wb, "sl", totals->selected); + + if(totals->excluded) + buffer_json_member_add_uint64(wb, "ex", totals->excluded); + + if(totals->queried) + buffer_json_member_add_uint64(wb, "qr", totals->queried); + + if(totals->failed) + buffer_json_member_add_uint64(wb, "fl", totals->failed); + + buffer_json_object_close(wb); } -void rrdr_json_wrapper_begin(RRDR *r, BUFFER *wb, uint32_t format, RRDR_OPTIONS options, int string_value, - RRDR_GROUPING group_method) -{ - QUERY_TARGET *qt = r->internal.qt; +static inline void query_target_metric_counts(BUFFER *wb, QUERY_METRICS_COUNTS *metrics) { + if(!metrics->selected && !metrics->queried && !metrics->failed && !metrics->excluded) + return; - long rows = rrdr_rows(r); - long c, i; - const long query_used = qt->query.used; + buffer_json_member_add_object(wb, "ds"); - //info("JSONWRAPPER(): %s: BEGIN", r->st->id); - char kq[2] = "", // key quote - sq[2] = ""; // string quote + if(metrics->selected) + buffer_json_member_add_uint64(wb, "sl", metrics->selected); - if( options & RRDR_OPTION_GOOGLE_JSON ) { - kq[0] = '\0'; - sq[0] = '\''; + if(metrics->excluded) + buffer_json_member_add_uint64(wb, "ex", metrics->excluded); + + if(metrics->queried) + buffer_json_member_add_uint64(wb, "qr", metrics->queried); + + if(metrics->failed) + buffer_json_member_add_uint64(wb, "fl", metrics->failed); + + buffer_json_object_close(wb); +} + +static inline void query_target_instance_counts(BUFFER *wb, QUERY_INSTANCES_COUNTS *instances) { + if(!instances->selected && !instances->queried && !instances->failed && !instances->excluded) + return; + + buffer_json_member_add_object(wb, "is"); + + if(instances->selected) + buffer_json_member_add_uint64(wb, "sl", instances->selected); + + if(instances->excluded) + buffer_json_member_add_uint64(wb, "ex", instances->excluded); + + if(instances->queried) + buffer_json_member_add_uint64(wb, "qr", instances->queried); + + if(instances->failed) + buffer_json_member_add_uint64(wb, "fl", instances->failed); + + buffer_json_object_close(wb); +} + +static inline void query_target_alerts_counts(BUFFER *wb, QUERY_ALERTS_COUNTS *alerts, const char *name, bool array) { + if(!alerts->clear && !alerts->other && !alerts->critical && !alerts->warning) + return; + + if(array) + buffer_json_add_array_item_object(wb); + else + buffer_json_member_add_object(wb, "al"); + + if(name) + buffer_json_member_add_string(wb, "nm", name); + + if(alerts->clear) + buffer_json_member_add_uint64(wb, "cl", alerts->clear); + + if(alerts->warning) + buffer_json_member_add_uint64(wb, "wr", alerts->warning); + + if(alerts->critical) + buffer_json_member_add_uint64(wb, "cr", alerts->critical); + + if(alerts->other) + buffer_json_member_add_uint64(wb, "ot", alerts->other); + + buffer_json_object_close(wb); +} + +static inline void query_target_points_statistics(BUFFER *wb, QUERY_TARGET *qt, STORAGE_POINT *sp) { + if(!sp->count) + return; + + buffer_json_member_add_object(wb, "sts"); + + buffer_json_member_add_double(wb, "min", sp->min); + buffer_json_member_add_double(wb, "max", sp->max); + + if(query_target_aggregatable(qt)) { + buffer_json_member_add_uint64(wb, "cnt", sp->count); + + if(sp->sum != 0.0) { + buffer_json_member_add_double(wb, "sum", sp->sum); + buffer_json_member_add_double(wb, "vol", sp->sum * (NETDATA_DOUBLE) query_view_update_every(qt)); + } + + if(sp->anomaly_count != 0) + buffer_json_member_add_uint64(wb, "arc", sp->anomaly_count); } else { - kq[0] = '"'; - sq[0] = '"'; + NETDATA_DOUBLE avg = (sp->count) ? sp->sum / (NETDATA_DOUBLE)sp->count : 0.0; + if(avg != 0.0) + buffer_json_member_add_double(wb, "avg", avg); + + NETDATA_DOUBLE arp = storage_point_anomaly_rate(*sp); + if(arp != 0.0) + buffer_json_member_add_double(wb, "arp", arp); + + NETDATA_DOUBLE con = (qt->query_points.sum > 0.0) ? sp->sum * 100.0 / qt->query_points.sum : 0.0; + if(con != 0.0) + buffer_json_member_add_double(wb, "con", con); } + buffer_json_object_close(wb); +} - buffer_sprintf(wb, "{\n" - " %sapi%s: 1,\n" - " %sid%s: %s%s%s,\n" - " %sname%s: %s%s%s,\n" - " %sview_update_every%s: %lld,\n" - " %supdate_every%s: %lld,\n" - " %sfirst_entry%s: %lld,\n" - " %slast_entry%s: %lld,\n" - " %sbefore%s: %lld,\n" - " %safter%s: %lld,\n" - " %sgroup%s: %s%s%s,\n" - " %soptions%s: %s" - , kq, kq - , kq, kq, sq, qt->id, sq - , kq, kq, sq, qt->id, sq - , kq, kq, (long long)r->update_every - , kq, kq, (long long)qt->db.minimum_latest_update_every_s - , kq, kq, (long long)qt->db.first_time_s - , kq, kq, (long long)qt->db.last_time_s - , kq, kq, (long long)r->before - , kq, kq, (long long)r->after - , kq, kq, sq, web_client_api_request_v1_data_group_to_string(group_method), sq - , kq, kq, sq); - - web_client_api_request_v1_data_options_to_buffer(wb, r->internal.query_options); - - buffer_sprintf(wb, "%s,\n %sdimension_names%s: [", sq, kq, kq); - - for(c = 0, i = 0; c < query_used ; c++) { - if(unlikely(r->od[c] & RRDR_DIMENSION_HIDDEN)) continue; - if(unlikely(!(r->od[c] & RRDR_DIMENSION_QUERIED))) continue; - if(unlikely((options & RRDR_OPTION_NONZERO) && !(r->od[c] & RRDR_DIMENSION_NONZERO))) continue; - - if(i) buffer_strcat(wb, ", "); - buffer_strcat(wb, sq); - buffer_strcat(wb, string2str(qt->query.array[c].dimension.name)); - buffer_strcat(wb, sq); - i++; +static void query_target_summary_nodes_v2(BUFFER *wb, QUERY_TARGET *qt, const char *key, struct summary_total_counts *totals) { + buffer_json_member_add_array(wb, key); + for (size_t c = 0; c < qt->nodes.used; c++) { + QUERY_NODE *qn = query_node(qt, c); + RRDHOST *host = qn->rrdhost; + buffer_json_add_array_item_object(wb); + buffer_json_node_add_v2(wb, host, qn->slot, qn->duration_ut); + query_target_instance_counts(wb, &qn->instances); + query_target_metric_counts(wb, &qn->metrics); + query_target_alerts_counts(wb, &qn->alerts, NULL, false); + query_target_points_statistics(wb, qt, &qn->query_points); + buffer_json_object_close(wb); + + aggregate_into_summary_totals(totals, &qn->metrics); } - if(!i) { -#ifdef NETDATA_INTERNAL_CHECKS - error("QUERY: '%s', RRDR is empty, %zu dimensions, options is 0x%08x", qt->id, r->d, options); -#endif - rows = 0; - buffer_strcat(wb, sq); - buffer_strcat(wb, "no data"); - buffer_strcat(wb, sq); + buffer_json_array_close(wb); +} + +static size_t query_target_summary_contexts_v2(BUFFER *wb, QUERY_TARGET *qt, const char *key, struct summary_total_counts *totals) { + buffer_json_member_add_array(wb, key); + DICTIONARY *dict = dictionary_create(DICT_OPTION_SINGLE_THREADED | DICT_OPTION_DONT_OVERWRITE_VALUE); + + struct { + STORAGE_POINT query_points; + QUERY_INSTANCES_COUNTS instances; + QUERY_METRICS_COUNTS metrics; + QUERY_ALERTS_COUNTS alerts; + } *z; + + for (long c = 0; c < (long) qt->contexts.used; c++) { + QUERY_CONTEXT *qc = query_context(qt, c); + + z = dictionary_set(dict, rrdcontext_acquired_id(qc->rca), NULL, sizeof(*z)); + + z->instances.selected += qc->instances.selected; + z->instances.excluded += qc->instances.selected; + z->instances.queried += qc->instances.queried; + z->instances.failed += qc->instances.failed; + + z->metrics.selected += qc->metrics.selected; + z->metrics.excluded += qc->metrics.excluded; + z->metrics.queried += qc->metrics.queried; + z->metrics.failed += qc->metrics.failed; + + z->alerts.clear += qc->alerts.clear; + z->alerts.warning += qc->alerts.warning; + z->alerts.critical += qc->alerts.critical; + + storage_point_merge_to(z->query_points, qc->query_points); } - buffer_sprintf(wb, "],\n" - " %sdimension_ids%s: [" - , kq, kq); + size_t unique_contexts = dictionary_entries(dict); + dfe_start_read(dict, z) { + buffer_json_add_array_item_object(wb); + buffer_json_member_add_string(wb, "id", z_dfe.name); + query_target_instance_counts(wb, &z->instances); + query_target_metric_counts(wb, &z->metrics); + query_target_alerts_counts(wb, &z->alerts, NULL, false); + query_target_points_statistics(wb, qt, &z->query_points); + buffer_json_object_close(wb); + + aggregate_into_summary_totals(totals, &z->metrics); + } + dfe_done(z); + buffer_json_array_close(wb); + dictionary_destroy(dict); - for(c = 0, i = 0; c < query_used ; c++) { - if(unlikely(r->od[c] & RRDR_DIMENSION_HIDDEN)) continue; - if(unlikely(!(r->od[c] & RRDR_DIMENSION_QUERIED))) continue; - if(unlikely((options & RRDR_OPTION_NONZERO) && !(r->od[c] & RRDR_DIMENSION_NONZERO))) continue; + return unique_contexts; +} - if(i) buffer_strcat(wb, ", "); - buffer_strcat(wb, sq); - buffer_strcat(wb, string2str(qt->query.array[c].dimension.id)); - buffer_strcat(wb, sq); - i++; +static void query_target_summary_instances_v1(BUFFER *wb, QUERY_TARGET *qt, const char *key) { + char name[RRD_ID_LENGTH_MAX * 2 + 2]; + + buffer_json_member_add_array(wb, key); + DICTIONARY *dict = dictionary_create(DICT_OPTION_SINGLE_THREADED | DICT_OPTION_DONT_OVERWRITE_VALUE); + for (long c = 0; c < (long) qt->instances.used; c++) { + QUERY_INSTANCE *qi = query_instance(qt, c); + + snprintfz(name, RRD_ID_LENGTH_MAX * 2 + 1, "%s:%s", + rrdinstance_acquired_id(qi->ria), + rrdinstance_acquired_name(qi->ria)); + + bool *set = dictionary_set(dict, name, NULL, sizeof(*set)); + if (!*set) { + *set = true; + buffer_json_add_array_item_array(wb); + buffer_json_add_array_item_string(wb, rrdinstance_acquired_id(qi->ria)); + buffer_json_add_array_item_string(wb, rrdinstance_acquired_name(qi->ria)); + buffer_json_array_close(wb); + } } - if(!i) { - rows = 0; - buffer_strcat(wb, sq); - buffer_strcat(wb, "no data"); - buffer_strcat(wb, sq); + dictionary_destroy(dict); + buffer_json_array_close(wb); +} + +static void query_target_summary_instances_v2(BUFFER *wb, QUERY_TARGET *qt, const char *key, struct summary_total_counts *totals) { + buffer_json_member_add_array(wb, key); + for (long c = 0; c < (long) qt->instances.used; c++) { + QUERY_INSTANCE *qi = query_instance(qt, c); +// QUERY_HOST *qh = query_host(qt, qi->query_host_id); + + buffer_json_add_array_item_object(wb); + buffer_json_member_add_string(wb, "id", rrdinstance_acquired_id(qi->ria)); + + if(!rrdinstance_acquired_id_and_name_are_same(qi->ria)) + buffer_json_member_add_string(wb, "nm", rrdinstance_acquired_name(qi->ria)); + + buffer_json_member_add_uint64(wb, "ni", qi->query_host_id); +// buffer_json_member_add_string(wb, "id", string2str(qi->id_fqdn)); +// buffer_json_member_add_string(wb, "nm", string2str(qi->name_fqdn)); +// buffer_json_member_add_string(wb, "lc", rrdinstance_acquired_name(qi->ria)); +// buffer_json_member_add_string(wb, "mg", qh->host->machine_guid); +// if(qh->node_id[0]) +// buffer_json_member_add_string(wb, "nd", qh->node_id); + query_target_metric_counts(wb, &qi->metrics); + query_target_alerts_counts(wb, &qi->alerts, NULL, false); + query_target_points_statistics(wb, qt, &qi->query_points); + buffer_json_object_close(wb); + + aggregate_into_summary_totals(totals, &qi->metrics); } - buffer_strcat(wb, "],\n"); + buffer_json_array_close(wb); +} - if (r->internal.query_options & RRDR_OPTION_ALL_DIMENSIONS) { - buffer_sprintf(wb, " %sfull_dimension_list%s: [", kq, kq); +struct dimensions_sorted_walkthrough_data { + BUFFER *wb; + struct summary_total_counts *totals; + QUERY_TARGET *qt; +}; - char name[RRD_ID_LENGTH_MAX * 2 + 2]; - char output[RRD_ID_LENGTH_MAX * 2 + 8]; +struct dimensions_sorted_entry { + const char *id; + const char *name; + STORAGE_POINT query_points; + QUERY_METRICS_COUNTS metrics; + uint32_t priority; +}; - struct value_output co = {.c = 0, .wb = wb}; +static int dimensions_sorted_walktrhough_cb(const DICTIONARY_ITEM *item __maybe_unused, void *value, void *data) { + struct dimensions_sorted_walkthrough_data *sdwd = data; + BUFFER *wb = sdwd->wb; + struct summary_total_counts *totals = sdwd->totals; + QUERY_TARGET *qt = sdwd->qt; + struct dimensions_sorted_entry *z = value; - DICTIONARY *dict = dictionary_create(DICT_OPTION_SINGLE_THREADED|DICT_OPTION_DONT_OVERWRITE_VALUE); - for (c = 0; c < (long)qt->metrics.used ;c++) { - snprintfz(name, RRD_ID_LENGTH_MAX * 2 + 1, "%s:%s", - rrdmetric_acquired_id(qt->metrics.array[c]), - rrdmetric_acquired_name(qt->metrics.array[c])); + buffer_json_add_array_item_object(wb); + buffer_json_member_add_string(wb, "id", z->id); + if (z->id != z->name && z->name) + buffer_json_member_add_string(wb, "nm", z->name); - int len = snprintfz(output, RRD_ID_LENGTH_MAX * 2 + 7, "[\"%s\",\"%s\"]", - rrdmetric_acquired_id(qt->metrics.array[c]), - rrdmetric_acquired_name(qt->metrics.array[c])); + query_target_metric_counts(wb, &z->metrics); + query_target_points_statistics(wb, qt, &z->query_points); + buffer_json_member_add_uint64(wb, "pri", z->priority); + buffer_json_object_close(wb); - dictionary_set(dict, name, output, len + 1); - } - dictionary_walkthrough_read(dict, value_list_output_callback, &co); - dictionary_destroy(dict); + aggregate_into_summary_totals(totals, &z->metrics); - co.c = 0; - buffer_sprintf(wb, "],\n %sfull_chart_list%s: [", kq, kq); - dict = dictionary_create(DICT_OPTION_SINGLE_THREADED|DICT_OPTION_DONT_OVERWRITE_VALUE); - for (c = 0; c < (long)qt->instances.used ; c++) { - RRDINSTANCE_ACQUIRED *ria = qt->instances.array[c]; + return 1; +} - snprintfz(name, RRD_ID_LENGTH_MAX * 2 + 1, "%s:%s", - rrdinstance_acquired_id(ria), - rrdinstance_acquired_name(ria)); +int dimensions_sorted_compar(const DICTIONARY_ITEM **item1, const DICTIONARY_ITEM **item2) { + struct dimensions_sorted_entry *z1 = dictionary_acquired_item_value(*item1); + struct dimensions_sorted_entry *z2 = dictionary_acquired_item_value(*item2); - int len = snprintfz(output, RRD_ID_LENGTH_MAX * 2 + 7, "[\"%s\",\"%s\"]", - rrdinstance_acquired_id(ria), - rrdinstance_acquired_name(ria)); + if(z1->priority == z2->priority) + return strcmp(dictionary_acquired_item_name(*item1), dictionary_acquired_item_name(*item2)); + else if(z1->priority < z2->priority) + return -1; + else + return 1; +} - dictionary_set(dict, name, output, len + 1); +static void query_target_summary_dimensions_v12(BUFFER *wb, QUERY_TARGET *qt, const char *key, bool v2, struct summary_total_counts *totals) { + char buf[RRD_ID_LENGTH_MAX * 2 + 2]; + + buffer_json_member_add_array(wb, key); + DICTIONARY *dict = dictionary_create(DICT_OPTION_SINGLE_THREADED | DICT_OPTION_DONT_OVERWRITE_VALUE); + struct dimensions_sorted_entry *z; + size_t q = 0; + for (long c = 0; c < (long) qt->dimensions.used; c++) { + QUERY_DIMENSION * qd = query_dimension(qt, c); + RRDMETRIC_ACQUIRED *rma = qd->rma; + + QUERY_METRIC *qm = NULL; + for( ; q < qt->query.used ;q++) { + QUERY_METRIC *tqm = query_metric(qt, q); + QUERY_DIMENSION *tqd = query_dimension(qt, tqm->link.query_dimension_id); + if(tqd->rma != rma) break; + qm = tqm; } - dictionary_walkthrough_read(dict, value_list_output_callback, &co); - dictionary_destroy(dict); - co.c = 0; - buffer_sprintf(wb, "],\n %sfull_chart_labels%s: [", kq, kq); - dict = dictionary_create(DICT_OPTION_SINGLE_THREADED|DICT_OPTION_DONT_OVERWRITE_VALUE); - for (c = 0; c < (long)qt->instances.used ; c++) { - RRDINSTANCE_ACQUIRED *ria = qt->instances.array[c]; - rrdlabels_walkthrough_read(rrdinstance_acquired_labels(ria), fill_formatted_callback, dict); + const char *key, *id, *name; + + if(v2) { + key = rrdmetric_acquired_name(rma); + id = key; + name = key; + } + else { + snprintfz(buf, RRD_ID_LENGTH_MAX * 2 + 1, "%s:%s", + rrdmetric_acquired_id(rma), + rrdmetric_acquired_name(rma)); + key = buf; + id = rrdmetric_acquired_id(rma); + name = rrdmetric_acquired_name(rma); } - dictionary_walkthrough_read(dict, value_list_output_callback, &co); - dictionary_destroy(dict); - buffer_strcat(wb, "],\n"); - } - // functions - { - DICTIONARY *funcs = dictionary_create(DICT_OPTION_SINGLE_THREADED|DICT_OPTION_DONT_OVERWRITE_VALUE); - RRDINSTANCE_ACQUIRED *ria = NULL; - for (c = 0; c < query_used ; c++) { - QUERY_METRIC *qm = &qt->query.array[c]; - if(qm->link.ria == ria) - continue; + z = dictionary_set(dict, key, NULL, sizeof(*z)); + if(!z->id) { + z->id = id; + z->name = name; + z->priority = qd->priority; + } + else { + if(qd->priority < z->priority) + z->priority = qd->priority; + } - ria = qm->link.ria; - chart_functions_to_dict(rrdinstance_acquired_functions(ria), funcs); + if(qm) { + z->metrics.selected += (qm->status & RRDR_DIMENSION_SELECTED) ? 1 : 0; + z->metrics.failed += (qm->status & RRDR_DIMENSION_FAILED) ? 1 : 0; + + if(qm->status & RRDR_DIMENSION_QUERIED) { + z->metrics.queried++; + storage_point_merge_to(z->query_points, qm->query_points); + } } + else + z->metrics.excluded++; + } - buffer_sprintf(wb, " %sfunctions%s: [", kq, kq); - void *t; (void)t; - dfe_start_read(funcs, t) { - const char *comma = ""; - if(t_dfe.counter) comma = ", "; - buffer_sprintf(wb, "%s%s%s%s", comma, sq, t_dfe.name, sq); + if(v2) { + struct dimensions_sorted_walkthrough_data t = { + .wb = wb, + .totals = totals, + .qt = qt, + }; + dictionary_sorted_walkthrough_rw(dict, DICTIONARY_LOCK_READ, dimensions_sorted_walktrhough_cb, + &t, dimensions_sorted_compar); + } + else { + // v1 + dfe_start_read(dict, z) { + buffer_json_add_array_item_array(wb); + buffer_json_add_array_item_string(wb, z->id); + buffer_json_add_array_item_string(wb, z->name); + buffer_json_array_close(wb); } - dfe_done(t); - dictionary_destroy(funcs); - buffer_strcat(wb, "],\n"); + dfe_done(z); } + dictionary_destroy(dict); + buffer_json_array_close(wb); +} - // context query - if (!qt->request.st) { - buffer_sprintf( - wb, - " %schart_ids%s: [", - kq, kq); +struct rrdlabels_formatting_v2 { + DICTIONARY *keys; + QUERY_INSTANCE *qi; + bool v2; +}; - for (c = 0, i = 0; c < query_used; c++) { - QUERY_METRIC *qm = &qt->query.array[c]; +struct rrdlabels_keys_dict_entry { + const char *name; + DICTIONARY *values; + STORAGE_POINT query_points; + QUERY_METRICS_COUNTS metrics; +}; - if (unlikely(r->od[c] & RRDR_DIMENSION_HIDDEN)) continue; - if (unlikely(!(r->od[c] & RRDR_DIMENSION_QUERIED))) continue; - if (unlikely((options & RRDR_OPTION_NONZERO) && !(r->od[c] & RRDR_DIMENSION_NONZERO))) - continue; +struct rrdlabels_key_value_dict_entry { + const char *key; + const char *value; + STORAGE_POINT query_points; + QUERY_METRICS_COUNTS metrics; +}; - if (i) - buffer_strcat(wb, ", "); - buffer_strcat(wb, sq); - buffer_strcat(wb, string2str(qm->chart.id)); - buffer_strcat(wb, sq); - i++; - } - if (!i) { - rows = 0; - buffer_strcat(wb, sq); - buffer_strcat(wb, "no data"); - buffer_strcat(wb, sq); - } - buffer_strcat(wb, "],\n"); - if (qt->instances.chart_label_key_pattern) { - buffer_sprintf(wb, " %schart_labels%s: { ", kq, kq); - - SIMPLE_PATTERN *pattern = qt->instances.chart_label_key_pattern; - char *label_key = NULL; - int keys = 0; - while (pattern && (label_key = simple_pattern_iterate(&pattern))) { - if (keys) - buffer_strcat(wb, ", "); - buffer_sprintf(wb, "%s%s%s : [", kq, label_key, kq); - keys++; - - for (c = 0, i = 0; c < query_used; c++) { - QUERY_METRIC *qm = &qt->query.array[c]; - - if (unlikely(r->od[c] & RRDR_DIMENSION_HIDDEN)) continue; - if (unlikely(!(r->od[c] & RRDR_DIMENSION_QUERIED))) continue; - if (unlikely((options & RRDR_OPTION_NONZERO) && !(r->od[c] & RRDR_DIMENSION_NONZERO))) - continue; +static int rrdlabels_formatting_v2(const char *name, const char *value, RRDLABEL_SRC ls __maybe_unused, void *data) { + struct rrdlabels_formatting_v2 *t = data; - if (i) - buffer_strcat(wb, ", "); - rrdlabels_get_value_to_buffer_or_null(rrdinstance_acquired_labels(qm->link.ria), wb, label_key, sq, "null"); - i++; + struct rrdlabels_keys_dict_entry *d = dictionary_set(t->keys, name, NULL, sizeof(*d)); + if(!d->values) { + d->name = name; + d->values = dictionary_create(DICT_OPTION_SINGLE_THREADED | DICT_OPTION_DONT_OVERWRITE_VALUE); + } + + char n[RRD_ID_LENGTH_MAX * 2 + 2]; + snprintfz(n, RRD_ID_LENGTH_MAX * 2, "%s:%s", name, value); + + struct rrdlabels_key_value_dict_entry *z = dictionary_set(d->values, n, NULL, sizeof(*z)); + if(!z->key) { + z->key = name; + z->value = value; + } + + if(t->v2) { + QUERY_INSTANCE *qi = t->qi; + + z->metrics.selected += qi->metrics.selected; + z->metrics.excluded += qi->metrics.excluded; + z->metrics.queried += qi->metrics.queried; + z->metrics.failed += qi->metrics.failed; + + d->metrics.selected += qi->metrics.selected; + d->metrics.excluded += qi->metrics.excluded; + d->metrics.queried += qi->metrics.queried; + d->metrics.failed += qi->metrics.failed; + + storage_point_merge_to(z->query_points, qi->query_points); + storage_point_merge_to(d->query_points, qi->query_points); + } + + return 1; +} + +static void query_target_summary_labels_v12(BUFFER *wb, QUERY_TARGET *qt, const char *key, bool v2, struct summary_total_counts *key_totals, struct summary_total_counts *value_totals) { + buffer_json_member_add_array(wb, key); + struct rrdlabels_formatting_v2 t = { + .keys = dictionary_create(DICT_OPTION_SINGLE_THREADED | DICT_OPTION_DONT_OVERWRITE_VALUE), + .v2 = v2, + }; + for (long c = 0; c < (long) qt->instances.used; c++) { + QUERY_INSTANCE *qi = query_instance(qt, c); + RRDINSTANCE_ACQUIRED *ria = qi->ria; + t.qi = qi; + rrdlabels_walkthrough_read(rrdinstance_acquired_labels(ria), rrdlabels_formatting_v2, &t); + } + struct rrdlabels_keys_dict_entry *d; + dfe_start_read(t.keys, d) { + if(v2) { + buffer_json_add_array_item_object(wb); + buffer_json_member_add_string(wb, "id", d_dfe.name); + query_target_metric_counts(wb, &d->metrics); + query_target_points_statistics(wb, qt, &d->query_points); + aggregate_into_summary_totals(key_totals, &d->metrics); + buffer_json_member_add_array(wb, "vl"); } - if (!i) { - rows = 0; - buffer_strcat(wb, sq); - buffer_strcat(wb, "no data"); - buffer_strcat(wb, sq); + struct rrdlabels_key_value_dict_entry *z; + dfe_start_read(d->values, z){ + if (v2) { + buffer_json_add_array_item_object(wb); + buffer_json_member_add_string(wb, "id", z->value); + query_target_metric_counts(wb, &z->metrics); + query_target_points_statistics(wb, qt, &z->query_points); + buffer_json_object_close(wb); + aggregate_into_summary_totals(value_totals, &z->metrics); + } else { + buffer_json_add_array_item_array(wb); + buffer_json_add_array_item_string(wb, z->key); + buffer_json_add_array_item_string(wb, z->value); + buffer_json_array_close(wb); + } + } + dfe_done(z); + dictionary_destroy(d->values); + if(v2) { + buffer_json_array_close(wb); + buffer_json_object_close(wb); } - buffer_strcat(wb, "]"); } - buffer_strcat(wb, "},\n"); + dfe_done(d); + dictionary_destroy(t.keys); + buffer_json_array_close(wb); +} + +static void query_target_summary_alerts_v2(BUFFER *wb, QUERY_TARGET *qt, const char *key) { + buffer_json_member_add_array(wb, key); + QUERY_ALERTS_COUNTS *z; + + DICTIONARY *dict = dictionary_create(DICT_OPTION_SINGLE_THREADED | DICT_OPTION_DONT_OVERWRITE_VALUE); + for (long c = 0; c < (long) qt->instances.used; c++) { + QUERY_INSTANCE *qi = query_instance(qt, c); + RRDSET *st = rrdinstance_acquired_rrdset(qi->ria); + if (st) { + netdata_rwlock_rdlock(&st->alerts.rwlock); + if (st->alerts.base) { + for (RRDCALC *rc = st->alerts.base; rc; rc = rc->next) { + z = dictionary_set(dict, string2str(rc->name), NULL, sizeof(*z)); + + switch(rc->status) { + case RRDCALC_STATUS_CLEAR: + z->clear++; + break; + + case RRDCALC_STATUS_WARNING: + z->warning++; + break; + + case RRDCALC_STATUS_CRITICAL: + z->critical++; + break; + + default: + case RRDCALC_STATUS_UNINITIALIZED: + case RRDCALC_STATUS_UNDEFINED: + case RRDCALC_STATUS_REMOVED: + z->other++; + break; + } + } + } + netdata_rwlock_unlock(&st->alerts.rwlock); + } + } + dfe_start_read(dict, z) + query_target_alerts_counts(wb, z, z_dfe.name, true); + dfe_done(z); + dictionary_destroy(dict); + buffer_json_array_close(wb); // alerts +} + +static inline void query_target_functions(BUFFER *wb, const char *key, RRDR *r) { + QUERY_TARGET *qt = r->internal.qt; + const long query_used = qt->query.used; + + DICTIONARY *funcs = dictionary_create(DICT_OPTION_SINGLE_THREADED|DICT_OPTION_DONT_OVERWRITE_VALUE); + RRDINSTANCE_ACQUIRED *ria = NULL; + for (long c = 0; c < query_used ; c++) { + QUERY_METRIC *qm = query_metric(qt, c); + QUERY_INSTANCE *qi = query_instance(qt, qm->link.query_instance_id); + if(qi->ria == ria) + continue; + + ria = qi->ria; + chart_functions_to_dict(rrdinstance_acquired_functions(ria), funcs); + } + + buffer_json_member_add_array(wb, key); + void *t; (void)t; + dfe_start_read(funcs, t) + buffer_json_add_array_item_string(wb, t_dfe.name); + dfe_done(t); + dictionary_destroy(funcs); + buffer_json_array_close(wb); +} + +static inline long query_target_chart_labels_filter_v1(BUFFER *wb, const char *key, RRDR *r, RRDR_OPTIONS options) { + QUERY_TARGET *qt = r->internal.qt; + const long query_used = qt->query.used; + long c, i = 0; + + buffer_json_member_add_object(wb, key); + + SIMPLE_PATTERN *pattern = qt->instances.chart_label_key_pattern; + char *label_key = NULL; + while (pattern && (label_key = simple_pattern_iterate(&pattern))) { + buffer_json_member_add_array(wb, label_key); + + for (c = 0, i = 0; c < query_used; c++) { + if(!rrdr_dimension_should_be_exposed(r->od[c], options)) + continue; + + QUERY_METRIC *qm = query_metric(qt, c); + QUERY_INSTANCE *qi = query_instance(qt, qm->link.query_instance_id); + rrdlabels_value_to_buffer_array_item_or_null(rrdinstance_acquired_labels(qi->ria), wb, label_key); + i++; } + buffer_json_array_close(wb); } - buffer_sprintf(wb, " %slatest_values%s: [" - , kq, kq); + buffer_json_object_close(wb); + + return i; +} + +static inline long query_target_metrics_latest_values(BUFFER *wb, const char *key, RRDR *r, RRDR_OPTIONS options) { + QUERY_TARGET *qt = r->internal.qt; + const long query_used = qt->query.used; + long c, i; + + buffer_json_member_add_array(wb, key); for(c = 0, i = 0; c < query_used ;c++) { - QUERY_METRIC *qm = &qt->query.array[c]; + if(!rrdr_dimension_should_be_exposed(r->od[c], options)) + continue; + + QUERY_METRIC *qm = query_metric(qt, c); + QUERY_DIMENSION *qd = query_dimension(qt, qm->link.query_dimension_id); + buffer_json_add_array_item_double(wb, rrdmetric_acquired_last_stored_value(qd->rma)); + i++; + } - if(unlikely(r->od[c] & RRDR_DIMENSION_HIDDEN)) continue; - if(unlikely((options & RRDR_OPTION_NONZERO) && !(r->od[c] & RRDR_DIMENSION_NONZERO))) continue; + buffer_json_array_close(wb); + + return i; +} + +static inline size_t rrdr_dimension_view_latest_values(BUFFER *wb, const char *key, RRDR *r, RRDR_OPTIONS options) { + buffer_json_member_add_array(wb, key); + + size_t c, i; + for(c = 0, i = 0; c < r->d ; c++) { + if(!rrdr_dimension_should_be_exposed(r->od[c], options)) + continue; - if(i) buffer_strcat(wb, ", "); i++; - NETDATA_DOUBLE value = rrdmetric_acquired_last_stored_value(qm->link.rma); - if (NAN == value) - buffer_strcat(wb, "null"); + NETDATA_DOUBLE *cn = &r->v[ (rrdr_rows(r) - 1) * r->d ]; + RRDR_VALUE_FLAGS *co = &r->o[ (rrdr_rows(r) - 1) * r->d ]; + NETDATA_DOUBLE n = cn[c]; + + if(co[c] & RRDR_VALUE_EMPTY) { + if(options & RRDR_OPTION_NULL2ZERO) + buffer_json_add_array_item_double(wb, 0.0); + else + buffer_json_add_array_item_double(wb, NAN); + } else - buffer_rrd_value(wb, value); - } - if(!i) { - rows = 0; - buffer_strcat(wb, "null"); + buffer_json_add_array_item_double(wb, n); } - buffer_sprintf(wb, "],\n" - " %sview_latest_values%s: [" - , kq, kq); + buffer_json_array_close(wb); - i = 0; - if(rows) { - NETDATA_DOUBLE total = 1; + return i; +} - if(unlikely(options & RRDR_OPTION_PERCENTAGE)) { - total = 0; - for(c = 0; c < query_used ;c++) { - if(unlikely(!(r->od[c] & RRDR_DIMENSION_QUERIED))) continue; +static inline void rrdr_dimension_query_points_statistics(BUFFER *wb, const char *key, RRDR *r, RRDR_OPTIONS options, bool dview) { + STORAGE_POINT *sp = (dview) ? r->dview : r->dqp; + NETDATA_DOUBLE anomaly_rate_multiplier = (dview) ? RRDR_DVIEW_ANOMALY_COUNT_MULTIPLIER : 1.0; - NETDATA_DOUBLE *cn = &r->v[ (rrdr_rows(r) - 1) * r->d ]; - NETDATA_DOUBLE n = cn[c]; + if(unlikely(!sp)) + return; - if(likely((options & RRDR_OPTION_ABSOLUTE) && n < 0)) - n = -n; + if(key) + buffer_json_member_add_object(wb, key); - total += n; - } - // prevent a division by zero - if(total == 0) total = 1; - } + buffer_json_member_add_array(wb, "min"); + for(size_t c = 0; c < r->d ; c++) { + if (!rrdr_dimension_should_be_exposed(r->od[c], options)) + continue; - for(c = 0, i = 0; c < query_used ;c++) { - if(unlikely(r->od[c] & RRDR_DIMENSION_HIDDEN)) continue; - if(unlikely(!(r->od[c] & RRDR_DIMENSION_QUERIED))) continue; - if(unlikely((options & RRDR_OPTION_NONZERO) && !(r->od[c] & RRDR_DIMENSION_NONZERO))) continue; + buffer_json_add_array_item_double(wb, sp[c].min); + } + buffer_json_array_close(wb); - if(i) buffer_strcat(wb, ", "); - i++; + buffer_json_member_add_array(wb, "max"); + for(size_t c = 0; c < r->d ; c++) { + if (!rrdr_dimension_should_be_exposed(r->od[c], options)) + continue; - NETDATA_DOUBLE *cn = &r->v[ (rrdr_rows(r) - 1) * r->d ]; - RRDR_VALUE_FLAGS *co = &r->o[ (rrdr_rows(r) - 1) * r->d ]; - NETDATA_DOUBLE n = cn[c]; + buffer_json_add_array_item_double(wb, sp[c].max); + } + buffer_json_array_close(wb); - if(co[c] & RRDR_VALUE_EMPTY) { - if(options & RRDR_OPTION_NULL2ZERO) - buffer_strcat(wb, "0"); - else - buffer_strcat(wb, "null"); - } - else { - if(unlikely((options & RRDR_OPTION_ABSOLUTE) && n < 0)) - n = -n; + if(options & RRDR_OPTION_RETURN_RAW) { + buffer_json_member_add_array(wb, "sum"); + for(size_t c = 0; c < r->d ; c++) { + if (!rrdr_dimension_should_be_exposed(r->od[c], options)) + continue; - if(unlikely(options & RRDR_OPTION_PERCENTAGE)) - n = n * 100 / total; + buffer_json_add_array_item_double(wb, sp[c].sum); + } + buffer_json_array_close(wb); - buffer_rrd_value(wb, n); - } + buffer_json_member_add_array(wb, "cnt"); + for(size_t c = 0; c < r->d ; c++) { + if (!rrdr_dimension_should_be_exposed(r->od[c], options)) + continue; + + buffer_json_add_array_item_uint64(wb, sp[c].count); } + buffer_json_array_close(wb); + + buffer_json_member_add_array(wb, "arc"); + for(size_t c = 0; c < r->d ; c++) { + if (!rrdr_dimension_should_be_exposed(r->od[c], options)) + continue; + + buffer_json_add_array_item_uint64(wb, storage_point_anomaly_rate(sp[c]) / anomaly_rate_multiplier / 100.0 * sp[c].count); + } + buffer_json_array_close(wb); } - if(!i) { - rows = 0; - buffer_strcat(wb, "null"); - } + else { + NETDATA_DOUBLE sum = 0.0; + for(size_t c = 0; c < r->d ; c++) { + if(!rrdr_dimension_should_be_exposed(r->od[c], options)) + continue; - buffer_sprintf(wb, "],\n" - " %sdimensions%s: %ld,\n" - " %spoints%s: %ld,\n" - " %sformat%s: %s" - , kq, kq, i - , kq, kq, rows - , kq, kq, sq - ); + sum += ABS(sp[c].sum); + } - rrdr_buffer_print_format(wb, format); + buffer_json_member_add_array(wb, "avg"); + for(size_t c = 0; c < r->d ; c++) { + if (!rrdr_dimension_should_be_exposed(r->od[c], options)) + continue; - buffer_sprintf(wb, "%s,\n" - " %sdb_points_per_tier%s: [ " - , sq - , kq, kq - ); + buffer_json_add_array_item_double(wb, storage_point_average_value(sp[c])); + } + buffer_json_array_close(wb); - for(size_t tier = 0; tier < storage_tiers ; tier++) - buffer_sprintf(wb, "%s%zu", tier>0?", ":"", r->internal.tier_points_read[tier]); + buffer_json_member_add_array(wb, "arp"); + for(size_t c = 0; c < r->d ; c++) { + if (!rrdr_dimension_should_be_exposed(r->od[c], options)) + continue; - buffer_strcat(wb, " ],"); + buffer_json_add_array_item_double(wb, storage_point_anomaly_rate(sp[c]) / anomaly_rate_multiplier); + } + buffer_json_array_close(wb); - if(options & RRDR_OPTION_SHOW_PLAN) - rrdr_show_plan(r, wb, kq, sq); + buffer_json_member_add_array(wb, "con"); + for(size_t c = 0; c < r->d ; c++) { + if (!rrdr_dimension_should_be_exposed(r->od[c], options)) + continue; - buffer_sprintf(wb, "\n %sresult%s: ", kq, kq); + NETDATA_DOUBLE con = (sum > 0.0) ? ABS(sp[c].sum) * 100.0 / sum : 0.0; + buffer_json_add_array_item_double(wb, con); + } + buffer_json_array_close(wb); + } - if(string_value) buffer_strcat(wb, sq); - //info("JSONWRAPPER(): %s: END", r->st->id); + if(key) + buffer_json_object_close(wb); } -void rrdr_json_wrapper_anomaly_rates(RRDR *r, BUFFER *wb, uint32_t format, uint32_t options, int string_value) { - (void)r; - (void)format; +void rrdr_json_wrapper_begin(RRDR *r, BUFFER *wb) { + QUERY_TARGET *qt = r->internal.qt; + DATASOURCE_FORMAT format = qt->request.format; + RRDR_OPTIONS options = qt->window.options; + + long rows = rrdr_rows(r); char kq[2] = "", // key quote - sq[2] = ""; // string quote + sq[2] = ""; // string quote if( options & RRDR_OPTION_GOOGLE_JSON ) { kq[0] = '\0'; @@ -447,31 +874,702 @@ void rrdr_json_wrapper_anomaly_rates(RRDR *r, BUFFER *wb, uint32_t format, uint3 sq[0] = '"'; } - if(string_value) buffer_strcat(wb, sq); + buffer_json_initialize(wb, kq, sq, 0, true, options & RRDR_OPTION_MINIFY); + + buffer_json_member_add_uint64(wb, "api", 1); + buffer_json_member_add_string(wb, "id", qt->id); + buffer_json_member_add_string(wb, "name", qt->id); + buffer_json_member_add_time_t(wb, "view_update_every", r->view.update_every); + buffer_json_member_add_time_t(wb, "update_every", qt->db.minimum_latest_update_every_s); + buffer_json_member_add_time_t(wb, "first_entry", qt->db.first_time_s); + buffer_json_member_add_time_t(wb, "last_entry", qt->db.last_time_s); + buffer_json_member_add_time_t(wb, "after", r->view.after); + buffer_json_member_add_time_t(wb, "before", r->view.before); + buffer_json_member_add_string(wb, "group", time_grouping_tostring(qt->request.time_group_method)); + web_client_api_request_v1_data_options_to_buffer_json_array(wb, "options", options); + + if(!rrdr_dimension_names(wb, "dimension_names", r, options)) + rows = 0; + + if(!rrdr_dimension_ids(wb, "dimension_ids", r, options)) + rows = 0; + + if (options & RRDR_OPTION_ALL_DIMENSIONS) { + query_target_summary_instances_v1(wb, qt, "full_chart_list"); + query_target_summary_dimensions_v12(wb, qt, "full_dimension_list", false, NULL); + query_target_summary_labels_v12(wb, qt, "full_chart_labels", false, NULL, NULL); + } + + query_target_functions(wb, "functions", r); + + if (!qt->request.st && !jsonwrap_v1_chart_ids(wb, "chart_ids", r, options)) + rows = 0; + + if (qt->instances.chart_label_key_pattern && !query_target_chart_labels_filter_v1(wb, "chart_labels", r, options)) + rows = 0; + + if(!query_target_metrics_latest_values(wb, "latest_values", r, options)) + rows = 0; + + size_t dimensions = rrdr_dimension_view_latest_values(wb, "view_latest_values", r, options); + if(!dimensions) + rows = 0; + + buffer_json_member_add_uint64(wb, "dimensions", dimensions); + buffer_json_member_add_uint64(wb, "points", rows); + buffer_json_member_add_string(wb, "format", rrdr_format_to_string(format)); + + buffer_json_member_add_array(wb, "db_points_per_tier"); + for(size_t tier = 0; tier < storage_tiers ; tier++) + buffer_json_add_array_item_uint64(wb, qt->db.tiers[tier].points); + buffer_json_array_close(wb); + + if(options & RRDR_OPTION_DEBUG) + jsonwrap_query_plan(r, wb); +} + +static void rrdset_rrdcalc_entries_v2(BUFFER *wb, RRDINSTANCE_ACQUIRED *ria) { + RRDSET *st = rrdinstance_acquired_rrdset(ria); + if(st) { + netdata_rwlock_rdlock(&st->alerts.rwlock); + if(st->alerts.base) { + buffer_json_member_add_object(wb, "alerts"); + for(RRDCALC *rc = st->alerts.base; rc ;rc = rc->next) { + if(rc->status < RRDCALC_STATUS_CLEAR) + continue; + + buffer_json_member_add_object(wb, string2str(rc->name)); + buffer_json_member_add_string(wb, "st", rrdcalc_status2string(rc->status)); + buffer_json_member_add_double(wb, "vl", rc->value); + buffer_json_member_add_string(wb, "un", string2str(rc->units)); + buffer_json_object_close(wb); + } + buffer_json_object_close(wb); + } + netdata_rwlock_unlock(&st->alerts.rwlock); + } +} + +static void query_target_combined_units_v2(BUFFER *wb, QUERY_TARGET *qt, size_t contexts, bool ignore_percentage) { + if(!ignore_percentage && query_target_has_percentage_units(qt)) { + buffer_json_member_add_string(wb, "units", "%"); + } + else if(contexts == 1) { + buffer_json_member_add_string(wb, "units", rrdcontext_acquired_units(qt->contexts.array[0].rca)); + } + else if(contexts > 1) { + DICTIONARY *dict = dictionary_create(DICT_OPTION_SINGLE_THREADED | DICT_OPTION_DONT_OVERWRITE_VALUE); + for(size_t c = 0; c < qt->contexts.used ;c++) + dictionary_set(dict, rrdcontext_acquired_units(qt->contexts.array[c].rca), NULL, 0); + + if(dictionary_entries(dict) == 1) + buffer_json_member_add_string(wb, "units", rrdcontext_acquired_units(qt->contexts.array[0].rca)); + else { + buffer_json_member_add_array(wb, "units"); + const char *s; + dfe_start_read(dict, s) + buffer_json_add_array_item_string(wb, s_dfe.name); + dfe_done(s); + buffer_json_array_close(wb); + } + dictionary_destroy(dict); + } +} - buffer_sprintf(wb, ",\n %sanomaly_rates%s: ", kq, kq); +static void query_target_combined_chart_type(BUFFER *wb, QUERY_TARGET *qt, size_t contexts) { + if(contexts >= 1) + buffer_json_member_add_string(wb, "chart_type", rrdset_type_name(rrdcontext_acquired_chart_type(qt->contexts.array[0].rca))); } -void rrdr_json_wrapper_end(RRDR *r, BUFFER *wb, uint32_t format, uint32_t options, int string_value) { - (void)format; +static void rrdr_grouped_by_array_v2(BUFFER *wb, const char *key, RRDR *r, RRDR_OPTIONS options __maybe_unused) { + QUERY_TARGET *qt = r->internal.qt; - char kq[2] = "", // key quote - sq[2] = ""; // string quote + buffer_json_member_add_array(wb, key); - if( options & RRDR_OPTION_GOOGLE_JSON ) { + // find the deeper group-by + ssize_t g = 0; + for(g = 0; g < MAX_QUERY_GROUP_BY_PASSES ;g++) { + if(qt->request.group_by[g].group_by == RRDR_GROUP_BY_NONE) + break; + } + + if(g > 0) + g--; + + RRDR_GROUP_BY group_by = qt->request.group_by[g].group_by; + + if(group_by & RRDR_GROUP_BY_SELECTED) + buffer_json_add_array_item_string(wb, "selected"); + + else if(group_by & RRDR_GROUP_BY_PERCENTAGE_OF_INSTANCE) + buffer_json_add_array_item_string(wb, "percentage-of-instance"); + + else { + + if(group_by & RRDR_GROUP_BY_DIMENSION) + buffer_json_add_array_item_string(wb, "dimension"); + + if(group_by & RRDR_GROUP_BY_INSTANCE) + buffer_json_add_array_item_string(wb, "instance"); + + if(group_by & RRDR_GROUP_BY_LABEL) { + BUFFER *b = buffer_create(0, NULL); + for (size_t l = 0; l < qt->group_by[g].used; l++) { + buffer_flush(b); + buffer_fast_strcat(b, "label:", 6); + buffer_strcat(b, qt->group_by[g].label_keys[l]); + buffer_json_add_array_item_string(wb, buffer_tostring(b)); + } + buffer_free(b); + } + + if(group_by & RRDR_GROUP_BY_NODE) + buffer_json_add_array_item_string(wb, "node"); + + if(group_by & RRDR_GROUP_BY_CONTEXT) + buffer_json_add_array_item_string(wb, "context"); + + if(group_by & RRDR_GROUP_BY_UNITS) + buffer_json_add_array_item_string(wb, "units"); + } + + buffer_json_array_close(wb); // group_by_order +} + +static void rrdr_dimension_units_array_v2(BUFFER *wb, const char *key, RRDR *r, RRDR_OPTIONS options, bool ignore_percentage) { + if(!r->du) + return; + + bool percentage = !ignore_percentage && query_target_has_percentage_units(r->internal.qt); + + buffer_json_member_add_array(wb, key); + for(size_t c = 0; c < r->d ; c++) { + if(!rrdr_dimension_should_be_exposed(r->od[c], options)) + continue; + + if(percentage) + buffer_json_add_array_item_string(wb, "%"); + else + buffer_json_add_array_item_string(wb, string2str(r->du[c])); + } + buffer_json_array_close(wb); +} + +static void rrdr_dimension_priority_array_v2(BUFFER *wb, const char *key, RRDR *r, RRDR_OPTIONS options) { + if(!r->dp) + return; + + buffer_json_member_add_array(wb, key); + for(size_t c = 0; c < r->d ; c++) { + if(!rrdr_dimension_should_be_exposed(r->od[c], options)) + continue; + + buffer_json_add_array_item_uint64(wb, r->dp[c]); + } + buffer_json_array_close(wb); +} + +static void rrdr_dimension_aggregated_array_v2(BUFFER *wb, const char *key, RRDR *r, RRDR_OPTIONS options) { + if(!r->dgbc) + return; + + buffer_json_member_add_array(wb, key); + for(size_t c = 0; c < r->d ;c++) { + if(!rrdr_dimension_should_be_exposed(r->od[c], options)) + continue; + + buffer_json_add_array_item_uint64(wb, r->dgbc[c]); + } + buffer_json_array_close(wb); +} + +static void query_target_title(BUFFER *wb, QUERY_TARGET *qt, size_t contexts) { + if(contexts == 1) { + buffer_json_member_add_string(wb, "title", rrdcontext_acquired_title(qt->contexts.array[0].rca)); + } + else if(contexts > 1) { + BUFFER *t = buffer_create(0, NULL); + DICTIONARY *dict = dictionary_create(DICT_OPTION_SINGLE_THREADED | DICT_OPTION_DONT_OVERWRITE_VALUE); + + buffer_strcat(t, "Chart for contexts: "); + + size_t added = 0; + for(size_t c = 0; c < qt->contexts.used ;c++) { + bool *set = dictionary_set(dict, rrdcontext_acquired_id(qt->contexts.array[c].rca), NULL, sizeof(*set)); + if(!*set) { + *set = true; + if(added) + buffer_fast_strcat(t, ", ", 2); + + buffer_strcat(t, rrdcontext_acquired_id(qt->contexts.array[c].rca)); + added++; + } + } + buffer_json_member_add_string(wb, "title", buffer_tostring(t)); + dictionary_destroy(dict); + buffer_free(t); + } +} + +static void query_target_detailed_objects_tree(BUFFER *wb, RRDR *r, RRDR_OPTIONS options) { + QUERY_TARGET *qt = r->internal.qt; + buffer_json_member_add_object(wb, "nodes"); + + time_t now_s = now_realtime_sec(); + RRDHOST *last_host = NULL; + RRDCONTEXT_ACQUIRED *last_rca = NULL; + RRDINSTANCE_ACQUIRED *last_ria = NULL; + + size_t h = 0, c = 0, i = 0, m = 0, q = 0; + for(; h < qt->nodes.used ; h++) { + QUERY_NODE *qn = query_node(qt, h); + RRDHOST *host = qn->rrdhost; + + for( ;c < qt->contexts.used ;c++) { + QUERY_CONTEXT *qc = query_context(qt, c); + RRDCONTEXT_ACQUIRED *rca = qc->rca; + if(!rrdcontext_acquired_belongs_to_host(rca, host)) break; + + for( ;i < qt->instances.used ;i++) { + QUERY_INSTANCE *qi = query_instance(qt, i); + RRDINSTANCE_ACQUIRED *ria = qi->ria; + if(!rrdinstance_acquired_belongs_to_context(ria, rca)) break; + + for( ; m < qt->dimensions.used ; m++) { + QUERY_DIMENSION *qd = query_dimension(qt, m); + RRDMETRIC_ACQUIRED *rma = qd->rma; + if(!rrdmetric_acquired_belongs_to_instance(rma, ria)) break; + + QUERY_METRIC *qm = NULL; + bool queried = false; + for( ; q < qt->query.used ;q++) { + QUERY_METRIC *tqm = query_metric(qt, q); + QUERY_DIMENSION *tqd = query_dimension(qt, tqm->link.query_dimension_id); + if(tqd->rma != rma) break; + + queried = tqm->status & RRDR_DIMENSION_QUERIED; + qm = tqm; + } + + if(!queried & !(options & RRDR_OPTION_ALL_DIMENSIONS)) + continue; + + if(host != last_host) { + if(last_host) { + if(last_rca) { + if(last_ria) { + buffer_json_object_close(wb); // dimensions + buffer_json_object_close(wb); // instance + last_ria = NULL; + } + buffer_json_object_close(wb); // instances + buffer_json_object_close(wb); // context + last_rca = NULL; + } + buffer_json_object_close(wb); // contexts + buffer_json_object_close(wb); // host + last_host = NULL; + } + + buffer_json_member_add_object(wb, host->machine_guid); + if(qn->node_id[0]) + buffer_json_member_add_string(wb, "nd", qn->node_id); + buffer_json_member_add_uint64(wb, "ni", qn->slot); + buffer_json_member_add_string(wb, "nm", rrdhost_hostname(host)); + buffer_json_member_add_object(wb, "contexts"); + + last_host = host; + } + + if(rca != last_rca) { + if(last_rca) { + if(last_ria) { + buffer_json_object_close(wb); // dimensions + buffer_json_object_close(wb); // instance + last_ria = NULL; + } + buffer_json_object_close(wb); // instances + buffer_json_object_close(wb); // context + last_rca = NULL; + } + + buffer_json_member_add_object(wb, rrdcontext_acquired_id(rca)); + buffer_json_member_add_object(wb, "instances"); + + last_rca = rca; + } + + if(ria != last_ria) { + if(last_ria) { + buffer_json_object_close(wb); // dimensions + buffer_json_object_close(wb); // instance + last_ria = NULL; + } + + buffer_json_member_add_object(wb, rrdinstance_acquired_id(ria)); + buffer_json_member_add_string(wb, "nm", rrdinstance_acquired_name(ria)); + buffer_json_member_add_time_t(wb, "ue", rrdinstance_acquired_update_every(ria)); + DICTIONARY *labels = rrdinstance_acquired_labels(ria); + if(labels) { + buffer_json_member_add_object(wb, "labels"); + rrdlabels_to_buffer_json_members(labels, wb); + buffer_json_object_close(wb); + } + rrdset_rrdcalc_entries_v2(wb, ria); + buffer_json_member_add_object(wb, "dimensions"); + + last_ria = ria; + } + + buffer_json_member_add_object(wb, rrdmetric_acquired_id(rma)); + { + buffer_json_member_add_string(wb, "nm", rrdmetric_acquired_name(rma)); + buffer_json_member_add_uint64(wb, "qr", queried ? 1 : 0); + time_t first_entry_s = rrdmetric_acquired_first_entry(rma); + time_t last_entry_s = rrdmetric_acquired_last_entry(rma); + buffer_json_member_add_time_t(wb, "fe", first_entry_s); + buffer_json_member_add_time_t(wb, "le", last_entry_s ? last_entry_s : now_s); + + if(qm) { + if(qm->status & RRDR_DIMENSION_GROUPED) { + // buffer_json_member_add_string(wb, "grouped_as_id", string2str(qm->grouped_as.id)); + buffer_json_member_add_string(wb, "as", string2str(qm->grouped_as.name)); + } + + query_target_points_statistics(wb, qt, &qm->query_points); + + if(options & RRDR_OPTION_DEBUG) + jsonwrap_query_metric_plan(wb, qm); + } + } + buffer_json_object_close(wb); // metric + } + } + } + } + + if(last_host) { + if(last_rca) { + if(last_ria) { + buffer_json_object_close(wb); // dimensions + buffer_json_object_close(wb); // instance + last_ria = NULL; + } + buffer_json_object_close(wb); // instances + buffer_json_object_close(wb); // context + last_rca = NULL; + } + buffer_json_object_close(wb); // contexts + buffer_json_object_close(wb); // host + last_host = NULL; + } + buffer_json_object_close(wb); // hosts +} + +void version_hashes_api_v2(BUFFER *wb, struct query_versions *versions) { + buffer_json_member_add_object(wb, "versions"); + buffer_json_member_add_uint64(wb, "nodes_hard_hash", dictionary_version(rrdhost_root_index)); + buffer_json_member_add_uint64(wb, "contexts_hard_hash", versions->contexts_hard_hash); + buffer_json_member_add_uint64(wb, "contexts_soft_hash", versions->contexts_soft_hash); + buffer_json_member_add_uint64(wb, "alerts_hard_hash", versions->alerts_hard_hash); + buffer_json_member_add_uint64(wb, "alerts_soft_hash", versions->alerts_soft_hash); + buffer_json_object_close(wb); +} + +void rrdr_json_wrapper_begin2(RRDR *r, BUFFER *wb) { + QUERY_TARGET *qt = r->internal.qt; + RRDR_OPTIONS options = qt->window.options; + + char kq[2] = "\"", // key quote + sq[2] = "\""; // string quote + + if(unlikely(options & RRDR_OPTION_GOOGLE_JSON)) { kq[0] = '\0'; sq[0] = '\''; } - else { - kq[0] = '"'; - sq[0] = '"'; + + buffer_json_initialize(wb, kq, sq, 0, true, options & RRDR_OPTION_MINIFY); + buffer_json_member_add_uint64(wb, "api", 2); + + if(options & RRDR_OPTION_DEBUG) { + buffer_json_member_add_string(wb, "id", qt->id); + buffer_json_member_add_object(wb, "request"); + { + buffer_json_member_add_string(wb, "format", rrdr_format_to_string(qt->request.format)); + web_client_api_request_v1_data_options_to_buffer_json_array(wb, "options", qt->request.options); + + buffer_json_member_add_object(wb, "scope"); + buffer_json_member_add_string(wb, "scope_nodes", qt->request.scope_nodes); + buffer_json_member_add_string(wb, "scope_contexts", qt->request.scope_contexts); + buffer_json_object_close(wb); // scope + + buffer_json_member_add_object(wb, "selectors"); + if (qt->request.host) + buffer_json_member_add_string(wb, "nodes", rrdhost_hostname(qt->request.host)); + else + buffer_json_member_add_string(wb, "nodes", qt->request.nodes); + buffer_json_member_add_string(wb, "contexts", qt->request.contexts); + buffer_json_member_add_string(wb, "instances", qt->request.instances); + buffer_json_member_add_string(wb, "dimensions", qt->request.dimensions); + buffer_json_member_add_string(wb, "labels", qt->request.labels); + buffer_json_member_add_string(wb, "alerts", qt->request.alerts); + buffer_json_object_close(wb); // selectors + + buffer_json_member_add_object(wb, "window"); + buffer_json_member_add_time_t(wb, "after", qt->request.after); + buffer_json_member_add_time_t(wb, "before", qt->request.before); + buffer_json_member_add_uint64(wb, "points", qt->request.points); + if (qt->request.options & RRDR_OPTION_SELECTED_TIER) + buffer_json_member_add_uint64(wb, "tier", qt->request.tier); + else + buffer_json_member_add_string(wb, "tier", NULL); + buffer_json_object_close(wb); // window + + buffer_json_member_add_object(wb, "aggregations"); + { + buffer_json_member_add_object(wb, "time"); + buffer_json_member_add_string(wb, "time_group", time_grouping_tostring(qt->request.time_group_method)); + buffer_json_member_add_string(wb, "time_group_options", qt->request.time_group_options); + if (qt->request.resampling_time > 0) + buffer_json_member_add_time_t(wb, "time_resampling", qt->request.resampling_time); + else + buffer_json_member_add_string(wb, "time_resampling", NULL); + buffer_json_object_close(wb); // time + + buffer_json_member_add_array(wb, "metrics"); + for(size_t g = 0; g < MAX_QUERY_GROUP_BY_PASSES ;g++) { + if(qt->request.group_by[g].group_by == RRDR_GROUP_BY_NONE) + break; + + buffer_json_add_array_item_object(wb); + { + buffer_json_member_add_array(wb, "group_by"); + buffer_json_group_by_to_array(wb, qt->request.group_by[g].group_by); + buffer_json_array_close(wb); + + buffer_json_member_add_array(wb, "group_by_label"); + for (size_t l = 0; l < qt->group_by[g].used; l++) + buffer_json_add_array_item_string(wb, qt->group_by[g].label_keys[l]); + buffer_json_array_close(wb); + + buffer_json_member_add_string( + wb, "aggregation",group_by_aggregate_function_to_string(qt->request.group_by[g].aggregation)); + } + buffer_json_object_close(wb); + } + buffer_json_array_close(wb); // group_by + } + buffer_json_object_close(wb); // aggregations + + buffer_json_member_add_uint64(wb, "timeout", qt->request.timeout_ms); + } + buffer_json_object_close(wb); // request + } + + version_hashes_api_v2(wb, &qt->versions); + + buffer_json_member_add_object(wb, "summary"); + struct summary_total_counts + nodes_totals = { 0 }, + contexts_totals = { 0 }, + instances_totals = { 0 }, + metrics_totals = { 0 }, + label_key_totals = { 0 }, + label_key_value_totals = { 0 }; + { + query_target_summary_nodes_v2(wb, qt, "nodes", &nodes_totals); + r->internal.contexts = query_target_summary_contexts_v2(wb, qt, "contexts", &contexts_totals); + query_target_summary_instances_v2(wb, qt, "instances", &instances_totals); + query_target_summary_dimensions_v12(wb, qt, "dimensions", true, &metrics_totals); + query_target_summary_labels_v12(wb, qt, "labels", true, &label_key_totals, &label_key_value_totals); + query_target_summary_alerts_v2(wb, qt, "alerts"); + } + if(query_target_aggregatable(qt)) { + buffer_json_member_add_object(wb, "globals"); + query_target_points_statistics(wb, qt, &qt->query_points); + buffer_json_object_close(wb); // globals + } + buffer_json_object_close(wb); // summary + + buffer_json_member_add_object(wb, "totals"); + query_target_total_counts(wb, "nodes", &nodes_totals); + query_target_total_counts(wb, "contexts", &contexts_totals); + query_target_total_counts(wb, "instances", &instances_totals); + query_target_total_counts(wb, "dimensions", &metrics_totals); + query_target_total_counts(wb, "label_keys", &label_key_totals); + query_target_total_counts(wb, "label_key_values", &label_key_value_totals); + buffer_json_object_close(wb); // totals + + if(options & RRDR_OPTION_SHOW_DETAILS) { + buffer_json_member_add_object(wb, "detailed"); + query_target_detailed_objects_tree(wb, r, options); + buffer_json_object_close(wb); // detailed + } + + query_target_functions(wb, "functions", r); +} + +//static void annotations_range_for_value_flags(RRDR *r, BUFFER *wb, DATASOURCE_FORMAT format __maybe_unused, RRDR_OPTIONS options, RRDR_VALUE_FLAGS flags, const char *type) { +// const size_t dims = r->d, rows = r->rows; +// size_t next_d_idx = 0; +// for(size_t d = 0; d < dims ; d++) { +// if(!rrdr_dimension_should_be_exposed(r->od[d], options)) +// continue; +// +// size_t d_idx = next_d_idx++; +// +// size_t t = 0; +// while(t < rows) { +// +// // find the beginning +// time_t started = 0; +// for(; t < rows ;t++) { +// RRDR_VALUE_FLAGS o = r->o[t * r->d + d]; +// if(o & flags) { +// started = r->t[t]; +// break; +// } +// } +// +// if(started) { +// time_t ended = 0; +// for(; t < rows ;t++) { +// RRDR_VALUE_FLAGS o = r->o[t * r->d + d]; +// if(!(o & flags)) { +// ended = r->t[t]; +// break; +// } +// } +// +// if(!ended) +// ended = r->t[rows - 1]; +// +// buffer_json_add_array_item_object(wb); +// buffer_json_member_add_string(wb, "t", type); +// // buffer_json_member_add_string(wb, "d", string2str(r->dn[d])); +// buffer_json_member_add_uint64(wb, "d", d_idx); +// if(started == ended) { +// if(options & RRDR_OPTION_MILLISECONDS) +// buffer_json_member_add_time_t2ms(wb, "x", started); +// else +// buffer_json_member_add_time_t(wb, "x", started); +// } +// else { +// buffer_json_member_add_array(wb, "x"); +// if(options & RRDR_OPTION_MILLISECONDS) { +// buffer_json_add_array_item_time_t2ms(wb, started); +// buffer_json_add_array_item_time_t2ms(wb, ended); +// } +// else { +// buffer_json_add_array_item_time_t(wb, started); +// buffer_json_add_array_item_time_t(wb, ended); +// } +// buffer_json_array_close(wb); +// } +// buffer_json_object_close(wb); +// } +// } +// } +//} +// +//void rrdr_json_wrapper_annotations(RRDR *r, BUFFER *wb, DATASOURCE_FORMAT format __maybe_unused, RRDR_OPTIONS options) { +// buffer_json_member_add_array(wb, "annotations"); +// +// annotations_range_for_value_flags(r, wb, format, options, RRDR_VALUE_EMPTY, "G"); // Gap +// annotations_range_for_value_flags(r, wb, format, options, RRDR_VALUE_RESET, "O"); // Overflow +// annotations_range_for_value_flags(r, wb, format, options, RRDR_VALUE_PARTIAL, "P"); // Partial +// +// buffer_json_array_close(wb); // annotations +//} + +void rrdr_json_wrapper_end(RRDR *r, BUFFER *wb) { + buffer_json_member_add_double(wb, "min", r->view.min); + buffer_json_member_add_double(wb, "max", r->view.max); + + buffer_json_query_timings(wb, "timings", &r->internal.qt->timings); + buffer_json_finalize(wb); +} + +void rrdr_json_wrapper_end2(RRDR *r, BUFFER *wb) { + QUERY_TARGET *qt = r->internal.qt; + DATASOURCE_FORMAT format = qt->request.format; + RRDR_OPTIONS options = qt->window.options; + + buffer_json_member_add_object(wb, "db"); + { + buffer_json_member_add_uint64(wb, "tiers", storage_tiers); + buffer_json_member_add_time_t(wb, "update_every", qt->db.minimum_latest_update_every_s); + buffer_json_member_add_time_t(wb, "first_entry", qt->db.first_time_s); + buffer_json_member_add_time_t(wb, "last_entry", qt->db.last_time_s); + + query_target_combined_units_v2(wb, qt, r->internal.contexts, true); + buffer_json_member_add_object(wb, "dimensions"); + { + rrdr_dimension_ids(wb, "ids", r, options); + rrdr_dimension_units_array_v2(wb, "units", r, options, true); + rrdr_dimension_query_points_statistics(wb, "sts", r, options, false); + } + buffer_json_object_close(wb); // dimensions + + buffer_json_member_add_array(wb, "per_tier"); + for(size_t tier = 0; tier < storage_tiers ; tier++) { + buffer_json_add_array_item_object(wb); + buffer_json_member_add_uint64(wb, "tier", tier); + buffer_json_member_add_uint64(wb, "queries", qt->db.tiers[tier].queries); + buffer_json_member_add_uint64(wb, "points", qt->db.tiers[tier].points); + buffer_json_member_add_time_t(wb, "update_every", qt->db.tiers[tier].update_every); + buffer_json_member_add_time_t(wb, "first_entry", qt->db.tiers[tier].retention.first_time_s); + buffer_json_member_add_time_t(wb, "last_entry", qt->db.tiers[tier].retention.last_time_s); + buffer_json_object_close(wb); + } + buffer_json_array_close(wb); } + buffer_json_object_close(wb); - if(string_value) buffer_strcat(wb, sq); + buffer_json_member_add_object(wb, "view"); + { + query_target_title(wb, qt, r->internal.contexts); + buffer_json_member_add_time_t(wb, "update_every", r->view.update_every); + buffer_json_member_add_time_t(wb, "after", r->view.after); + buffer_json_member_add_time_t(wb, "before", r->view.before); + + if(options & RRDR_OPTION_DEBUG) { + buffer_json_member_add_string(wb, "format", rrdr_format_to_string(format)); + web_client_api_request_v1_data_options_to_buffer_json_array(wb, "options", options); + buffer_json_member_add_string(wb, "time_group", time_grouping_tostring(qt->request.time_group_method)); + } + + if(options & RRDR_OPTION_DEBUG) { + buffer_json_member_add_object(wb, "partial_data_trimming"); + buffer_json_member_add_time_t(wb, "max_update_every", r->partial_data_trimming.max_update_every); + buffer_json_member_add_time_t(wb, "expected_after", r->partial_data_trimming.expected_after); + buffer_json_member_add_time_t(wb, "trimmed_after", r->partial_data_trimming.trimmed_after); + buffer_json_object_close(wb); + } + + if(options & RRDR_OPTION_RETURN_RAW) + buffer_json_member_add_uint64(wb, "points", rrdr_rows(r)); + + query_target_combined_units_v2(wb, qt, r->internal.contexts, false); + query_target_combined_chart_type(wb, qt, r->internal.contexts); + buffer_json_member_add_object(wb, "dimensions"); + { + rrdr_grouped_by_array_v2(wb, "grouped_by", r, options); + rrdr_dimension_ids(wb, "ids", r, options); + rrdr_dimension_names(wb, "names", r, options); + rrdr_dimension_units_array_v2(wb, "units", r, options, false); + rrdr_dimension_priority_array_v2(wb, "priorities", r, options); + rrdr_dimension_aggregated_array_v2(wb, "aggregated", r, options); + rrdr_dimension_query_points_statistics(wb, "sts", r, options, true); + rrdr_json_group_by_labels(wb, "labels", r, options); + } + buffer_json_object_close(wb); // dimensions + buffer_json_member_add_double(wb, "min", r->view.min); + buffer_json_member_add_double(wb, "max", r->view.max); + } + buffer_json_object_close(wb); // view - buffer_sprintf(wb, ",\n %smin%s: ", kq, kq); - buffer_rrd_value(wb, r->min); - buffer_sprintf(wb, ",\n %smax%s: ", kq, kq); - buffer_rrd_value(wb, r->max); - buffer_strcat(wb, "\n}\n"); + buffer_json_agents_array_v2(wb, &r->internal.qt->timings, 0); + buffer_json_cloud_timings(wb, "timings", &r->internal.qt->timings); + buffer_json_finalize(wb); } diff --git a/web/api/formatters/json_wrapper.h b/web/api/formatters/json_wrapper.h index 91c1475c5..a702f3a5c 100644 --- a/web/api/formatters/json_wrapper.h +++ b/web/api/formatters/json_wrapper.h @@ -6,10 +6,16 @@ #include "rrd2json.h" #include "web/api/queries/query.h" +typedef void (*wrapper_begin_t)(RRDR *r, BUFFER *wb); +typedef void (*wrapper_end_t)(RRDR *r, BUFFER *wb); -void rrdr_json_wrapper_begin(RRDR *r, BUFFER *wb, uint32_t format, RRDR_OPTIONS options, int string_value, - RRDR_GROUPING group_method); -void rrdr_json_wrapper_anomaly_rates(RRDR *r, BUFFER *wb, uint32_t format, uint32_t options, int string_value); -void rrdr_json_wrapper_end(RRDR *r, BUFFER *wb, uint32_t format, uint32_t options, int string_value); +void rrdr_json_wrapper_begin(RRDR *r, BUFFER *wb); +void rrdr_json_wrapper_end(RRDR *r, BUFFER *wb); + +void rrdr_json_wrapper_begin2(RRDR *r, BUFFER *wb); +void rrdr_json_wrapper_end2(RRDR *r, BUFFER *wb); + +struct query_versions; +void version_hashes_api_v2(BUFFER *wb, struct query_versions *versions); #endif //NETDATA_API_FORMATTER_JSON_WRAPPER_H diff --git a/web/api/formatters/rrd2json.c b/web/api/formatters/rrd2json.c index 64cde5b2b..139fa6ec8 100644 --- a/web/api/formatters/rrd2json.c +++ b/web/api/formatters/rrd2json.c @@ -7,63 +7,55 @@ void rrd_stats_api_v1_chart(RRDSET *st, BUFFER *wb) { rrdset2json(st, wb, NULL, NULL, 0); } -void rrdr_buffer_print_format(BUFFER *wb, uint32_t format) { +const char *rrdr_format_to_string(DATASOURCE_FORMAT format) { switch(format) { case DATASOURCE_JSON: - buffer_strcat(wb, DATASOURCE_FORMAT_JSON); - break; + return DATASOURCE_FORMAT_JSON; + + case DATASOURCE_JSON2: + return DATASOURCE_FORMAT_JSON2; case DATASOURCE_DATATABLE_JSON: - buffer_strcat(wb, DATASOURCE_FORMAT_DATATABLE_JSON); - break; + return DATASOURCE_FORMAT_DATATABLE_JSON; case DATASOURCE_DATATABLE_JSONP: - buffer_strcat(wb, DATASOURCE_FORMAT_DATATABLE_JSONP); - break; + return DATASOURCE_FORMAT_DATATABLE_JSONP; case DATASOURCE_JSONP: - buffer_strcat(wb, DATASOURCE_FORMAT_JSONP); - break; + return DATASOURCE_FORMAT_JSONP; case DATASOURCE_SSV: - buffer_strcat(wb, DATASOURCE_FORMAT_SSV); - break; + return DATASOURCE_FORMAT_SSV; case DATASOURCE_CSV: - buffer_strcat(wb, DATASOURCE_FORMAT_CSV); - break; + return DATASOURCE_FORMAT_CSV; case DATASOURCE_TSV: - buffer_strcat(wb, DATASOURCE_FORMAT_TSV); - break; + return DATASOURCE_FORMAT_TSV; case DATASOURCE_HTML: - buffer_strcat(wb, DATASOURCE_FORMAT_HTML); - break; + return DATASOURCE_FORMAT_HTML; case DATASOURCE_JS_ARRAY: - buffer_strcat(wb, DATASOURCE_FORMAT_JS_ARRAY); - break; + return DATASOURCE_FORMAT_JS_ARRAY; case DATASOURCE_SSV_COMMA: - buffer_strcat(wb, DATASOURCE_FORMAT_SSV_COMMA); - break; + return DATASOURCE_FORMAT_SSV_COMMA; default: - buffer_strcat(wb, "unknown"); - break; + return "unknown"; } } int rrdset2value_api_v1( - RRDSET *st + RRDSET *st , BUFFER *wb , NETDATA_DOUBLE *n , const char *dimensions , size_t points , time_t after , time_t before - , RRDR_GROUPING group_method + , RRDR_TIME_GROUPING group_method , const char *group_options , time_t resampling_time , uint32_t options @@ -105,15 +97,15 @@ int rrdset2value_api_v1( } if(db_points_read) - *db_points_read += r->internal.db_points_read; + *db_points_read += r->stats.db_points_read; if(db_points_per_tier) { for(size_t t = 0; t < storage_tiers ;t++) - db_points_per_tier[t] += r->internal.tier_points_read[t]; + db_points_per_tier[t] += r->internal.qt->db.tiers[t].points; } if(result_points_generated) - *result_points_generated += r->internal.result_points_generated; + *result_points_generated += r->stats.result_points_generated; if(rrdr_rows(r) == 0) { if(db_after) *db_after = 0; @@ -125,14 +117,14 @@ int rrdset2value_api_v1( } if(wb) { - if (r->result_options & RRDR_RESULT_OPTION_RELATIVE) + if (r->view.flags & RRDR_RESULT_FLAG_RELATIVE) buffer_no_cacheable(wb); - else if (r->result_options & RRDR_RESULT_OPTION_ABSOLUTE) + else if (r->view.flags & RRDR_RESULT_FLAG_ABSOLUTE) buffer_cacheable(wb); } - if(db_after) *db_after = r->after; - if(db_before) *db_before = r->before; + if(db_after) *db_after = r->view.after; + if(db_before) *db_before = r->view.before; long i = (!(options & RRDR_OPTION_REVERSED))?(long)rrdr_rows(r) - 1:0; *n = rrdr2value(r, i, options, value_is_null, anomaly_rate); @@ -144,108 +136,141 @@ cleanup: return ret; } +static inline void buffer_json_member_add_key_only(BUFFER *wb, const char *key) { + buffer_print_json_comma_newline_spacing(wb); + buffer_print_json_key(wb, key); + buffer_fast_strcat(wb, ":", 1); + wb->json.stack[wb->json.depth].count++; +} + +static inline void buffer_json_member_add_string_open(BUFFER *wb, const char *key) { + buffer_json_member_add_key_only(wb, key); + buffer_strcat(wb, wb->json.value_quote); +} + +static inline void buffer_json_member_add_string_close(BUFFER *wb) { + buffer_strcat(wb, wb->json.value_quote); +} + int data_query_execute(ONEWAYALLOC *owa, BUFFER *wb, QUERY_TARGET *qt, time_t *latest_timestamp) { + wrapper_begin_t wrapper_begin = rrdr_json_wrapper_begin; + wrapper_end_t wrapper_end = rrdr_json_wrapper_end; + + if(qt->request.version == 2) { + wrapper_begin = rrdr_json_wrapper_begin2; + wrapper_end = rrdr_json_wrapper_end2; + } RRDR *r = rrd2rrdr(owa, qt); + if(!r) { buffer_strcat(wb, "Cannot generate output with these parameters on this chart."); return HTTP_RESP_INTERNAL_SERVER_ERROR; } - if (r->result_options & RRDR_RESULT_OPTION_CANCEL) { + if (r->view.flags & RRDR_RESULT_FLAG_CANCEL) { rrdr_free(owa, r); return HTTP_RESP_BACKEND_FETCH_FAILED; } - if(r->result_options & RRDR_RESULT_OPTION_RELATIVE) + if(r->view.flags & RRDR_RESULT_FLAG_RELATIVE) buffer_no_cacheable(wb); - else if(r->result_options & RRDR_RESULT_OPTION_ABSOLUTE) + else if(r->view.flags & RRDR_RESULT_FLAG_ABSOLUTE) buffer_cacheable(wb); if(latest_timestamp && rrdr_rows(r) > 0) - *latest_timestamp = r->before; + *latest_timestamp = r->view.before; DATASOURCE_FORMAT format = qt->request.format; - RRDR_OPTIONS options = qt->request.options; - RRDR_GROUPING group_method = qt->request.group_method; + RRDR_OPTIONS options = qt->window.options; switch(format) { case DATASOURCE_SSV: if(options & RRDR_OPTION_JSON_WRAP) { - wb->contenttype = CT_APPLICATION_JSON; - rrdr_json_wrapper_begin(r, wb, format, options, 1, group_method); + wb->content_type = CT_APPLICATION_JSON; + wrapper_begin(r, wb); + buffer_json_member_add_string_open(wb, "result"); rrdr2ssv(r, wb, options, "", " ", ""); - rrdr_json_wrapper_end(r, wb, format, options, 1); + buffer_json_member_add_string_close(wb); + wrapper_end(r, wb); } else { - wb->contenttype = CT_TEXT_PLAIN; + wb->content_type = CT_TEXT_PLAIN; rrdr2ssv(r, wb, options, "", " ", ""); } break; case DATASOURCE_SSV_COMMA: if(options & RRDR_OPTION_JSON_WRAP) { - wb->contenttype = CT_APPLICATION_JSON; - rrdr_json_wrapper_begin(r, wb, format, options, 1, group_method); + wb->content_type = CT_APPLICATION_JSON; + wrapper_begin(r, wb); + buffer_json_member_add_string_open(wb, "result"); rrdr2ssv(r, wb, options, "", ",", ""); - rrdr_json_wrapper_end(r, wb, format, options, 1); + buffer_json_member_add_string_close(wb); + wrapper_end(r, wb); } else { - wb->contenttype = CT_TEXT_PLAIN; + wb->content_type = CT_TEXT_PLAIN; rrdr2ssv(r, wb, options, "", ",", ""); } break; case DATASOURCE_JS_ARRAY: if(options & RRDR_OPTION_JSON_WRAP) { - wb->contenttype = CT_APPLICATION_JSON; - rrdr_json_wrapper_begin(r, wb, format, options, 0, group_method); - rrdr2ssv(r, wb, options, "[", ",", "]"); - rrdr_json_wrapper_end(r, wb, format, options, 0); + wb->content_type = CT_APPLICATION_JSON; + wrapper_begin(r, wb); + buffer_json_member_add_array(wb, "result"); + rrdr2ssv(r, wb, options, "", ",", ""); + buffer_json_array_close(wb); + wrapper_end(r, wb); } else { - wb->contenttype = CT_APPLICATION_JSON; + wb->content_type = CT_APPLICATION_JSON; rrdr2ssv(r, wb, options, "[", ",", "]"); } break; case DATASOURCE_CSV: if(options & RRDR_OPTION_JSON_WRAP) { - wb->contenttype = CT_APPLICATION_JSON; - rrdr_json_wrapper_begin(r, wb, format, options, 1, group_method); + wb->content_type = CT_APPLICATION_JSON; + wrapper_begin(r, wb); + buffer_json_member_add_string_open(wb, "result"); rrdr2csv(r, wb, format, options, "", ",", "\\n", ""); - rrdr_json_wrapper_end(r, wb, format, options, 1); + buffer_json_member_add_string_close(wb); + wrapper_end(r, wb); } else { - wb->contenttype = CT_TEXT_PLAIN; + wb->content_type = CT_TEXT_PLAIN; rrdr2csv(r, wb, format, options, "", ",", "\r\n", ""); } break; case DATASOURCE_CSV_MARKDOWN: if(options & RRDR_OPTION_JSON_WRAP) { - wb->contenttype = CT_APPLICATION_JSON; - rrdr_json_wrapper_begin(r, wb, format, options, 1, group_method); + wb->content_type = CT_APPLICATION_JSON; + wrapper_begin(r, wb); + buffer_json_member_add_string_open(wb, "result"); rrdr2csv(r, wb, format, options, "", "|", "\\n", ""); - rrdr_json_wrapper_end(r, wb, format, options, 1); + buffer_json_member_add_string_close(wb); + wrapper_end(r, wb); } else { - wb->contenttype = CT_TEXT_PLAIN; + wb->content_type = CT_TEXT_PLAIN; rrdr2csv(r, wb, format, options, "", "|", "\r\n", ""); } break; case DATASOURCE_CSV_JSON_ARRAY: - wb->contenttype = CT_APPLICATION_JSON; + wb->content_type = CT_APPLICATION_JSON; if(options & RRDR_OPTION_JSON_WRAP) { - rrdr_json_wrapper_begin(r, wb, format, options, 0, group_method); - buffer_strcat(wb, "[\n"); + wrapper_begin(r, wb); + buffer_json_member_add_array(wb, "result"); rrdr2csv(r, wb, format, options + RRDR_OPTION_LABEL_QUOTES, "[", ",", "]", ",\n"); - buffer_strcat(wb, "\n]"); - rrdr_json_wrapper_end(r, wb, format, options, 0); + buffer_json_array_close(wb); + wrapper_end(r, wb); } else { - wb->contenttype = CT_APPLICATION_JSON; + wb->content_type = CT_APPLICATION_JSON; buffer_strcat(wb, "[\n"); rrdr2csv(r, wb, format, options + RRDR_OPTION_LABEL_QUOTES, "[", ",", "]", ",\n"); buffer_strcat(wb, "\n]"); @@ -254,28 +279,32 @@ int data_query_execute(ONEWAYALLOC *owa, BUFFER *wb, QUERY_TARGET *qt, time_t *l case DATASOURCE_TSV: if(options & RRDR_OPTION_JSON_WRAP) { - wb->contenttype = CT_APPLICATION_JSON; - rrdr_json_wrapper_begin(r, wb, format, options, 1, group_method); + wb->content_type = CT_APPLICATION_JSON; + wrapper_begin(r, wb); + buffer_json_member_add_string_open(wb, "result"); rrdr2csv(r, wb, format, options, "", "\t", "\\n", ""); - rrdr_json_wrapper_end(r, wb, format, options, 1); + buffer_json_member_add_string_close(wb); + wrapper_end(r, wb); } else { - wb->contenttype = CT_TEXT_PLAIN; + wb->content_type = CT_TEXT_PLAIN; rrdr2csv(r, wb, format, options, "", "\t", "\r\n", ""); } break; case DATASOURCE_HTML: if(options & RRDR_OPTION_JSON_WRAP) { - wb->contenttype = CT_APPLICATION_JSON; - rrdr_json_wrapper_begin(r, wb, format, options, 1, group_method); + wb->content_type = CT_APPLICATION_JSON; + wrapper_begin(r, wb); + buffer_json_member_add_string_open(wb, "result"); buffer_strcat(wb, "\\n
\\n\\n"); rrdr2csv(r, wb, format, options, "\\n", ""); buffer_strcat(wb, "
", "", "
\\n
\\n\\n"); - rrdr_json_wrapper_end(r, wb, format, options, 1); + buffer_json_member_add_string_close(wb); + wrapper_end(r, wb); } else { - wb->contenttype = CT_TEXT_HTML; + wb->content_type = CT_TEXT_HTML; buffer_strcat(wb, "\n
\n\n"); rrdr2csv(r, wb, format, options, "\n", ""); buffer_strcat(wb, "
", "", "
\n
\n\n"); @@ -283,57 +312,75 @@ int data_query_execute(ONEWAYALLOC *owa, BUFFER *wb, QUERY_TARGET *qt, time_t *l break; case DATASOURCE_DATATABLE_JSONP: - wb->contenttype = CT_APPLICATION_X_JAVASCRIPT; + wb->content_type = CT_APPLICATION_X_JAVASCRIPT; - if(options & RRDR_OPTION_JSON_WRAP) - rrdr_json_wrapper_begin(r, wb, format, options, 0, group_method); + if(options & RRDR_OPTION_JSON_WRAP) { + wrapper_begin(r, wb); + buffer_json_member_add_key_only(wb, "result"); + } rrdr2json(r, wb, options, 1); if(options & RRDR_OPTION_JSON_WRAP) - rrdr_json_wrapper_end(r, wb, format, options, 0); + wrapper_end(r, wb); + break; case DATASOURCE_DATATABLE_JSON: - wb->contenttype = CT_APPLICATION_JSON; + wb->content_type = CT_APPLICATION_JSON; - if(options & RRDR_OPTION_JSON_WRAP) - rrdr_json_wrapper_begin(r, wb, format, options, 0, group_method); + if(options & RRDR_OPTION_JSON_WRAP) { + wrapper_begin(r, wb); + buffer_json_member_add_key_only(wb, "result"); + } rrdr2json(r, wb, options, 1); if(options & RRDR_OPTION_JSON_WRAP) - rrdr_json_wrapper_end(r, wb, format, options, 0); + wrapper_end(r, wb); + break; case DATASOURCE_JSONP: - wb->contenttype = CT_APPLICATION_X_JAVASCRIPT; - if(options & RRDR_OPTION_JSON_WRAP) - rrdr_json_wrapper_begin(r, wb, format, options, 0, group_method); + wb->content_type = CT_APPLICATION_X_JAVASCRIPT; + if(options & RRDR_OPTION_JSON_WRAP) { + wrapper_begin(r, wb); + buffer_json_member_add_key_only(wb, "result"); + } rrdr2json(r, wb, options, 0); if(options & RRDR_OPTION_JSON_WRAP) - rrdr_json_wrapper_end(r, wb, format, options, 0); + wrapper_end(r, wb); + break; case DATASOURCE_JSON: default: - wb->contenttype = CT_APPLICATION_JSON; + wb->content_type = CT_APPLICATION_JSON; - if(options & RRDR_OPTION_JSON_WRAP) - rrdr_json_wrapper_begin(r, wb, format, options, 0, group_method); + if(options & RRDR_OPTION_JSON_WRAP) { + wrapper_begin(r, wb); + buffer_json_member_add_key_only(wb, "result"); + } rrdr2json(r, wb, options, 0); if(options & RRDR_OPTION_JSON_WRAP) { - if(options & RRDR_OPTION_RETURN_JWAR) { - rrdr_json_wrapper_anomaly_rates(r, wb, format, options, 0); - rrdr2json(r, wb, options | RRDR_OPTION_INTERNAL_AR, 0); + if (options & RRDR_OPTION_RETURN_JWAR) { + buffer_json_member_add_key_only(wb, "anomaly_rates"); + rrdr2json(r, wb, options | RRDR_OPTION_INTERNAL_AR, false); } - rrdr_json_wrapper_end(r, wb, format, options, 0); + wrapper_end(r, wb); } break; + + case DATASOURCE_JSON2: + wb->content_type = CT_APPLICATION_JSON; + wrapper_begin(r, wb); + rrdr2json_v2(r, wb); + wrapper_end(r, wb); + break; } rrdr_free(owa, r); diff --git a/web/api/formatters/rrd2json.h b/web/api/formatters/rrd2json.h index 88b9f773f..def26c754 100644 --- a/web/api/formatters/rrd2json.h +++ b/web/api/formatters/rrd2json.h @@ -3,6 +3,23 @@ #ifndef NETDATA_RRD2JSON_H #define NETDATA_RRD2JSON_H 1 +// type of JSON generations +typedef enum { + DATASOURCE_JSON = 0, + DATASOURCE_DATATABLE_JSON = 1, + DATASOURCE_DATATABLE_JSONP = 2, + DATASOURCE_SSV = 3, + DATASOURCE_CSV = 4, + DATASOURCE_JSONP = 5, + DATASOURCE_TSV = 6, + DATASOURCE_HTML = 7, + DATASOURCE_JS_ARRAY = 8, + DATASOURCE_SSV_COMMA = 9, + DATASOURCE_CSV_JSON_ARRAY = 10, + DATASOURCE_CSV_MARKDOWN = 11, + DATASOURCE_JSON2 = 12, +} DATASOURCE_FORMAT; + #include "web/api/web_api_v1.h" #include "web/api/exporters/allmetrics.h" @@ -23,23 +40,8 @@ #define API_RELATIVE_TIME_MAX (3 * 365 * 86400) -// type of JSON generations -typedef enum { - DATASOURCE_JSON = 0, - DATASOURCE_DATATABLE_JSON = 1, - DATASOURCE_DATATABLE_JSONP = 2, - DATASOURCE_SSV = 3, - DATASOURCE_CSV = 4, - DATASOURCE_JSONP = 5, - DATASOURCE_TSV = 6, - DATASOURCE_HTML = 7, - DATASOURCE_JS_ARRAY = 8, - DATASOURCE_SSV_COMMA = 9, - DATASOURCE_CSV_JSON_ARRAY = 10, - DATASOURCE_CSV_MARKDOWN = 11, -} DATASOURCE_FORMAT; - #define DATASOURCE_FORMAT_JSON "json" +#define DATASOURCE_FORMAT_JSON2 "json2" #define DATASOURCE_FORMAT_DATATABLE_JSON "datatable" #define DATASOURCE_FORMAT_DATATABLE_JSONP "datasource" #define DATASOURCE_FORMAT_JSONP "jsonp" @@ -53,19 +55,21 @@ typedef enum { #define DATASOURCE_FORMAT_CSV_MARKDOWN "markdown" void rrd_stats_api_v1_chart(RRDSET *st, BUFFER *wb); -void rrdr_buffer_print_format(BUFFER *wb, uint32_t format); +const char *rrdr_format_to_string(DATASOURCE_FORMAT format); int data_query_execute(ONEWAYALLOC *owa, BUFFER *wb, struct query_target *qt, time_t *latest_timestamp); +void rrdr_json_group_by_labels(BUFFER *wb, const char *key, RRDR *r, RRDR_OPTIONS options); + int rrdset2value_api_v1( - RRDSET *st + RRDSET *st , BUFFER *wb , NETDATA_DOUBLE *n , const char *dimensions , size_t points , time_t after , time_t before - , RRDR_GROUPING group_method + , RRDR_TIME_GROUPING group_method , const char *group_options , time_t resampling_time , uint32_t options @@ -82,4 +86,15 @@ int rrdset2value_api_v1( , STORAGE_PRIORITY priority ); +static inline bool rrdr_dimension_should_be_exposed(RRDR_DIMENSION_FLAGS rrdr_dim_flags, RRDR_OPTIONS options) { + if(unlikely(options & RRDR_OPTION_RETURN_RAW)) + return true; + + if(unlikely(rrdr_dim_flags & RRDR_DIMENSION_HIDDEN)) return false; + if(unlikely(!(rrdr_dim_flags & RRDR_DIMENSION_QUERIED))) return false; + if(unlikely((options & RRDR_OPTION_NONZERO) && !(rrdr_dim_flags & RRDR_DIMENSION_NONZERO))) return false; + + return true; +} + #endif /* NETDATA_RRD2JSON_H */ diff --git a/web/api/formatters/rrdset2json.c b/web/api/formatters/rrdset2json.c index 449d4ddf5..156f4486b 100644 --- a/web/api/formatters/rrdset2json.c +++ b/web/api/formatters/rrdset2json.c @@ -96,9 +96,9 @@ void rrdset2json(RRDSET *st, BUFFER *wb, size_t *dimensions_count, size_t *memor buffer_strcat(wb, ",\n\t\t\t\t\""); else buffer_strcat(wb, "\t\t\t\t\""); - buffer_strcat_jsonescape(wb, rrddim_id(rd)); + buffer_json_strcat(wb, rrddim_id(rd)); buffer_strcat(wb, "\": { \"name\": \""); - buffer_strcat_jsonescape(wb, rrddim_name(rd)); + buffer_json_strcat(wb, rrddim_name(rd)); buffer_strcat(wb, "\" }"); dimensions++; @@ -112,9 +112,9 @@ void rrdset2json(RRDSET *st, BUFFER *wb, size_t *dimensions_count, size_t *memor health_api_v1_chart_custom_variables2json(st, wb); buffer_strcat(wb, ",\n\t\t\t\"green\": "); - buffer_rrd_value(wb, st->green); + buffer_print_netdata_double(wb, st->green); buffer_strcat(wb, ",\n\t\t\t\"red\": "); - buffer_rrd_value(wb, st->red); + buffer_print_netdata_double(wb, st->red); if (likely(!skip_volatile)) { buffer_strcat(wb, ",\n\t\t\t\"alarms\": {\n"); diff --git a/web/api/formatters/ssv/README.md b/web/api/formatters/ssv/README.md index 4ca2a64ca..434d56721 100644 --- a/web/api/formatters/ssv/README.md +++ b/web/api/formatters/ssv/README.md @@ -1,6 +1,10 @@ # SSV formatter diff --git a/web/api/formatters/ssv/ssv.c b/web/api/formatters/ssv/ssv.c index d561980d9..65de0464b 100644 --- a/web/api/formatters/ssv/ssv.c +++ b/web/api/formatters/ssv/ssv.c @@ -20,12 +20,12 @@ void rrdr2ssv(RRDR *r, BUFFER *wb, RRDR_OPTIONS options, const char *prefix, con NETDATA_DOUBLE v = rrdr2value(r, i, options, &all_values_are_null, NULL); if(likely(i != start)) { - if(r->min > v) r->min = v; - if(r->max < v) r->max = v; + if(r->view.min > v) r->view.min = v; + if(r->view.max < v) r->view.max = v; } else { - r->min = v; - r->max = v; + r->view.min = v; + r->view.max = v; } if(likely(i != start)) @@ -38,7 +38,7 @@ void rrdr2ssv(RRDR *r, BUFFER *wb, RRDR_OPTIONS options, const char *prefix, con buffer_strcat(wb, "null"); } else - buffer_rrd_value(wb, v); + buffer_print_netdata_double(wb, v); } buffer_strcat(wb, suffix); //info("RRD2SSV(): %s: END", r->st->id); diff --git a/web/api/formatters/value/README.md b/web/api/formatters/value/README.md index 5b75ded7c..5631d8207 100644 --- a/web/api/formatters/value/README.md +++ b/web/api/formatters/value/README.md @@ -1,6 +1,10 @@ # Value formatter diff --git a/web/api/formatters/value/value.c b/web/api/formatters/value/value.c index fd9188057..1d07f62f6 100644 --- a/web/api/formatters/value/value.c +++ b/web/api/formatters/value/value.c @@ -4,9 +4,7 @@ inline NETDATA_DOUBLE rrdr2value(RRDR *r, long i, RRDR_OPTIONS options, int *all_values_are_null, NETDATA_DOUBLE *anomaly_rate) { - QUERY_TARGET *qt = r->internal.qt; - long c; - const long used = qt->query.used; + size_t c; NETDATA_DOUBLE *cn = &r->v[ i * r->d ]; RRDR_VALUE_FLAGS *co = &r->o[ i * r->d ]; @@ -15,49 +13,15 @@ inline NETDATA_DOUBLE rrdr2value(RRDR *r, long i, RRDR_OPTIONS options, int *all NETDATA_DOUBLE sum = 0, min = 0, max = 0, v; int all_null = 1, init = 1; - NETDATA_DOUBLE total = 1; NETDATA_DOUBLE total_anomaly_rate = 0; - int set_min_max = 0; - if(unlikely(options & RRDR_OPTION_PERCENTAGE)) { - total = 0; - for (c = 0; c < used; c++) { - if(unlikely(!(r->od[c] & RRDR_DIMENSION_QUERIED))) continue; - NETDATA_DOUBLE n = cn[c]; - - if(likely((options & RRDR_OPTION_ABSOLUTE) && n < 0)) - n = -n; - - total += n; - } - // prevent a division by zero - if(total == 0) total = 1; - set_min_max = 1; - } - // for each dimension - for (c = 0; c < used; c++) { - if(unlikely(r->od[c] & RRDR_DIMENSION_HIDDEN)) continue; - if(unlikely(!(r->od[c] & RRDR_DIMENSION_QUERIED))) continue; - if(unlikely((options & RRDR_OPTION_NONZERO) && !(r->od[c] & RRDR_DIMENSION_NONZERO))) continue; + for (c = 0; c < r->d ; c++) { + if(!rrdr_dimension_should_be_exposed(r->od[c], options)) + continue; NETDATA_DOUBLE n = cn[c]; - if(likely((options & RRDR_OPTION_ABSOLUTE) && n < 0)) - n = -n; - - if(unlikely(options & RRDR_OPTION_PERCENTAGE)) { - n = n * 100 / total; - - if(unlikely(set_min_max)) { - r->min = r->max = n; - set_min_max = 0; - } - - if(n < r->min) r->min = n; - if(n > r->max) r->max = n; - } - if(unlikely(init)) { if(n > 0) { min = 0; @@ -107,10 +71,11 @@ inline NETDATA_DOUBLE rrdr2value(RRDR *r, long i, RRDR_OPTIONS options, int *all QUERY_VALUE rrdmetric2value(RRDHOST *host, struct rrdcontext_acquired *rca, struct rrdinstance_acquired *ria, struct rrdmetric_acquired *rma, time_t after, time_t before, - RRDR_OPTIONS options, RRDR_GROUPING group_method, const char *group_options, + RRDR_OPTIONS options, RRDR_TIME_GROUPING time_group_method, const char *time_group_options, size_t tier, time_t timeout, QUERY_SOURCE query_source, STORAGE_PRIORITY priority ) { QUERY_TARGET_REQUEST qtr = { + .version = 1, .host = host, .rca = rca, .ria = ria, @@ -119,16 +84,17 @@ QUERY_VALUE rrdmetric2value(RRDHOST *host, .before = before, .points = 1, .options = options, - .group_method = group_method, - .group_options = group_options, + .time_group_method = time_group_method, + .time_group_options = time_group_options, .tier = tier, - .timeout = timeout, + .timeout_ms = timeout, .query_source = query_source, .priority = priority, }; ONEWAYALLOC *owa = onewayalloc_create(16 * 1024); - RRDR *r = rrd2rrdr(owa, query_target_create(&qtr)); + QUERY_TARGET *qt = query_target_create(&qtr); + RRDR *r = rrd2rrdr(owa, qt); QUERY_VALUE qv; @@ -136,18 +102,37 @@ QUERY_VALUE rrdmetric2value(RRDHOST *host, qv = (QUERY_VALUE) { .value = NAN, .anomaly_rate = NAN, + .sp = { + .count = 0, + .min = NAN, + .max = NAN, + .sum = NAN, + .anomaly_count = 0, + }, + .duration_ut = (r) ? r->internal.qt->timings.executed_ut - r->internal.qt->timings.received_ut : 0, }; } else { qv = (QUERY_VALUE) { - .after = r->after, - .before = r->before, - .points_read = r->internal.db_points_read, - .result_points = r->internal.result_points_generated, + .after = r->view.after, + .before = r->view.before, + .points_read = r->stats.db_points_read, + .result_points = r->stats.result_points_generated, + .sp = { + .count = 0, + }, + .duration_ut = r->internal.qt->timings.executed_ut - r->internal.qt->timings.received_ut, }; + for(size_t d = 0; d < r->internal.qt->query.used ;d++) { + if(!rrdr_dimension_should_be_exposed(r->internal.qt->query.array[d].status, options)) + continue; + + storage_point_merge_to(qv.sp, r->internal.qt->query.array[d].query_points); + } + for(size_t t = 0; t < storage_tiers ;t++) - qv.storage_points_per_tier[t] = r->internal.tier_points_read[t]; + qv.storage_points_per_tier[t] = r->internal.qt->db.tiers[t].points; long i = (!(options & RRDR_OPTION_REVERSED))?(long)rrdr_rows(r) - 1:0; int all_values_are_null = 0; @@ -159,6 +144,7 @@ QUERY_VALUE rrdmetric2value(RRDHOST *host, } rrdr_free(owa, r); + query_target_release(qt); onewayalloc_destroy(owa); return qv; diff --git a/web/api/formatters/value/value.h b/web/api/formatters/value/value.h index 3f7f51ccb..072ca14f8 100644 --- a/web/api/formatters/value/value.h +++ b/web/api/formatters/value/value.h @@ -13,6 +13,8 @@ typedef struct storage_value { size_t points_read; size_t storage_points_per_tier[RRD_STORAGE_TIERS]; size_t result_points; + STORAGE_POINT sp; + usec_t duration_ut; } QUERY_VALUE; struct rrdmetric_acquired; @@ -22,7 +24,7 @@ struct rrdcontext_acquired; QUERY_VALUE rrdmetric2value(RRDHOST *host, struct rrdcontext_acquired *rca, struct rrdinstance_acquired *ria, struct rrdmetric_acquired *rma, time_t after, time_t before, - RRDR_OPTIONS options, RRDR_GROUPING group_method, const char *group_options, + RRDR_OPTIONS options, RRDR_TIME_GROUPING time_group_method, const char *time_group_options, size_t tier, time_t timeout, QUERY_SOURCE query_source, STORAGE_PRIORITY priority ); diff --git a/web/api/health/README.md b/web/api/health/README.md index bfdd0ac68..dd46854a1 100644 --- a/web/api/health/README.md +++ b/web/api/health/README.md @@ -2,6 +2,10 @@ title: "Health API Calls" date: 2020-04-27 custom_edit_url: https://github.com/netdata/netdata/edit/master/web/api/health/README.md +sidebar_label: "Health API Calls" +learn_status: "Published" +learn_topic_type: "References" +learn_rel_path: "Developers/Web/Api" --> # Health API Calls diff --git a/web/api/health/health_cmdapi.c b/web/api/health/health_cmdapi.c index 7a939bc0f..7c4869bd3 100644 --- a/web/api/health/health_cmdapi.c +++ b/web/api/health/health_cmdapi.c @@ -121,7 +121,7 @@ int web_client_api_request_v1_mgmt_health(RRDHOST *host, struct web_client *w, c BUFFER *wb = w->response.data; buffer_flush(wb); - wb->contenttype = CT_TEXT_PLAIN; + wb->content_type = CT_TEXT_PLAIN; buffer_flush(w->response.data); @@ -139,10 +139,10 @@ int web_client_api_request_v1_mgmt_health(RRDHOST *host, struct web_client *w, c ret = HTTP_RESP_FORBIDDEN; } else { while (url) { - char *value = mystrsep(&url, "&"); + char *value = strsep_skip_consecutive_separators(&url, "&"); if (!value || !*value) continue; - char *key = mystrsep(&value, "="); + char *key = strsep_skip_consecutive_separators(&value, "="); if (!key || !*key) continue; if (!value || !*value) continue; @@ -171,7 +171,7 @@ int web_client_api_request_v1_mgmt_health(RRDHOST *host, struct web_client *w, c silencers->silencers = NULL; buffer_strcat(wb, HEALTH_CMDAPI_MSG_RESET); } else if (!strcmp(value, HEALTH_CMDAPI_CMD_LIST)) { - w->response.data->contenttype = CT_APPLICATION_JSON; + w->response.data->content_type = CT_APPLICATION_JSON; health_silencers2json(wb); config_changed=0; } diff --git a/web/api/netdata-swagger.json b/web/api/netdata-swagger.json index cb2b4809c..16d8bfaf1 100644 --- a/web/api/netdata-swagger.json +++ b/web/api/netdata-swagger.json @@ -3,12 +3,210 @@ "info": { "title": "Netdata API", "description": "Real-time performance and health monitoring.", - "version": "1.33.1" + "version": "1.38", + "contact": { + "name": "Netdata Agent API", + "email": "info@netdata.cloud", + "url": "https://netdata.cloud" + }, + "license": { + "name": "GPL v3+", + "url": "https://github.com/netdata/netdata/blob/master/LICENSE" + } }, + "servers": [ + { + "url": "https://registry.my-netdata.io" + }, + { + "url": "http://registry.my-netdata.io" + }, + { + "url": "http://localhost:19999" + } + ], + "tags": [ + { + "name": "nodes", + "description": "Everything related to monitored nodes" + }, + { + "name": "charts", + "description": "Everything related to chart instances - DO NOT USE IN NEW CODE - use contexts instead" + }, + { + "name": "contexts", + "description": "Everything related contexts - in new code, use this instead of charts" + }, + { + "name": "data", + "description": "Everything related to data queries" + }, + { + "name": "badges", + "description": "Everything related to dynamic badges based on metric data" + }, + { + "name": "weights", + "description": "Everything related to scoring / weighting metrics" + }, + { + "name": "functions", + "description": "Everything related to functions" + }, + { + "name": "alerts", + "description": "Everything related to alerts" + }, + { + "name": "management", + "description": "Everything related to managing netdata agents" + } + ], "paths": { - "/info": { + "/api/v2/nodes": { + "get": { + "operationId": "getNodes2", + "tags": [ + "nodes" + ], + "summary": "Nodes Info v2", + "description": "Get a list of all nodes hosted by this Netdata agent.\n", + "parameters": [ + { + "$ref": "#/components/parameters/scopeNodes" + }, + { + "$ref": "#/components/parameters/scopeContexts" + }, + { + "$ref": "#/components/parameters/filterNodes" + }, + { + "$ref": "#/components/parameters/filterContexts" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "description": "`/api/v2/nodes` response for all nodes hosted by a Netdata agent.\n", + "type": "object", + "properties": { + "api": { + "$ref": "#/components/schemas/api" + }, + "agents": { + "$ref": "#/components/schemas/agents" + }, + "versions": { + "$ref": "#/components/schemas/versions" + }, + "nodes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/nodeFull" + } + } + } + } + } + } + } + } + } + }, + "/api/v2/contexts": { + "get": { + "operationId": "getContexts2", + "tags": [ + "contexts" + ], + "summary": "Contexts Info v2", + "description": "Get a list of all contexts, across all nodes, hosted by this Netdata agent.\n", + "parameters": [ + { + "$ref": "#/components/parameters/scopeNodes" + }, + { + "$ref": "#/components/parameters/scopeContexts" + }, + { + "$ref": "#/components/parameters/filterNodes" + }, + { + "$ref": "#/components/parameters/filterContexts" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/contexts2" + } + } + } + } + } + } + }, + "/api/v2/q": { + "get": { + "operationId": "q2", + "tags": [ + "contexts" + ], + "summary": "Full Text Search v2", + "description": "Get a list of contexts, across all nodes, hosted by this Netdata agent, matching a string expression\n", + "parameters": [ + { + "name": "q", + "in": "query", + "description": "The strings to search for, formatted as a simple pattern", + "required": true, + "schema": { + "type": "string", + "format": "simple pattern" + } + }, + { + "$ref": "#/components/parameters/scopeNodes" + }, + { + "$ref": "#/components/parameters/scopeContexts" + }, + { + "$ref": "#/components/parameters/filterNodes" + }, + { + "$ref": "#/components/parameters/filterContexts" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/contexts2" + } + } + } + } + } + } + }, + "/api/v1/info": { "get": { - "summary": "Get netdata basic information", + "operationId": "getNodeInfo1", + "tags": [ + "nodes" + ], + "summary": "Node Info v1", "description": "The info endpoint returns basic information about netdata. It provides:\n* netdata version\n* netdata unique id\n* list of hosts mirrored (includes itself)\n* Operating System, Virtualization, K8s nodes and Container technology information\n* List of active collector plugins and modules\n* Streaming information\n* number of alarms in the host\n * number of alarms in normal state\n * number of alarms in warning state\n * number of alarms in critical state\n", "responses": { "200": { @@ -27,9 +225,13 @@ } } }, - "/charts": { + "/api/v1/charts": { "get": { - "summary": "Get a list of all charts available at the server", + "operationId": "getNodeCharts1", + "tags": [ + "charts" + ], + "summary": "List all charts v1 - EOL", "description": "The charts endpoint returns a summary about all charts stored in the netdata server.", "responses": { "200": { @@ -45,21 +247,17 @@ } } }, - "/chart": { + "/api/v1/chart": { "get": { - "summary": "Get info about a specific chart", + "operationId": "getNodeChart1", + "tags": [ + "charts" + ], + "summary": "Get one chart v1 - EOL", "description": "The chart endpoint returns detailed information about a chart.", "parameters": [ { - "name": "chart", - "in": "query", - "description": "The id of the chart as returned by the /charts call.", - "required": true, - "schema": { - "type": "string", - "format": "as returned by /charts", - "default": "system.cpu" - } + "$ref": "#/components/parameters/chart" } ], "responses": { @@ -82,88 +280,32 @@ } } }, - "/contexts": { + "/api/v1/contexts": { "get": { - "summary": "Get a list of all contexts available at the server", + "operationId": "getNodeContexts1", + "tags": [ + "contexts" + ], + "summary": "Get a list of all node contexts available v1", "description": "The contexts endpoint returns a summary about all contexts stored in the netdata server.", "parameters": [ { - "name": "options", - "in": "query", - "description": "Options that affect data generation.", - "required": false, - "allowEmptyValue": true, - "schema": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "full", - "all", - "charts", - "dimensions", - "labels", - "uuids", - "queue", - "flags", - "deleted", - "deepscan" - ] - }, - "default": [ - "full" - ] - } + "$ref": "#/components/parameters/dimensions" }, { - "name": "after", - "in": "query", - "description": "limit the results on context having data after this timestamp.", - "required": false, - "schema": { - "type": "number", - "format": "integer" - } + "$ref": "#/components/parameters/chart_label_key" }, { - "name": "before", - "in": "query", - "description": "limit the results on context having data before this timestamp.", - "required": false, - "schema": { - "type": "number", - "format": "integer" - } + "$ref": "#/components/parameters/chart_labels_filter" }, { - "name": "chart_label_key", - "in": "query", - "description": "a simple pattern matching charts label keys (use comma or pipe as separator)", - "required": false, - "allowEmptyValue": true, - "schema": { - "type": "string" - } + "$ref": "#/components/parameters/contextOptions1" }, { - "name": "chart_labels_filter", - "in": "query", - "description": "a simple pattern matching charts label key and values (use colon for equality, comma or pipe as separator)", - "required": false, - "allowEmptyValue": true, - "schema": { - "type": "string" - } + "$ref": "#/components/parameters/after" }, { - "name": "dimensions", - "in": "query", - "description": "a simple pattern matching dimensions (use comma or pipe as separator)", - "required": false, - "allowEmptyValue": true, - "schema": { - "type": "string" - } + "$ref": "#/components/parameters/before" } ], "responses": { @@ -180,99 +322,35 @@ } } }, - "/context": { + "/api/v1/context": { "get": { + "operationId": "getNodeContext1", + "tags": [ + "contexts" + ], "summary": "Get info about a specific context", - "description": "The context endpoint returns detailed information about a given context.", + "description": "The context endpoint returns detailed information about a given context.\nThe `context` parameter is required for this call.\n", "parameters": [ { - "name": "context", - "in": "query", - "description": "The id of the context as returned by the /contexts call.", - "required": true, - "schema": { - "type": "string", - "format": "as returned by /contexts", - "default": "system.cpu" - } + "$ref": "#/components/parameters/context" }, { - "name": "options", - "in": "query", - "description": "Options that affect data generation.", - "required": false, - "allowEmptyValue": true, - "schema": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "full", - "all", - "charts", - "dimensions", - "labels", - "uuids", - "queue", - "flags", - "deleted", - "deepscan" - ] - }, - "default": [ - "full" - ] - } + "$ref": "#/components/parameters/dimensions" }, { - "name": "after", - "in": "query", - "description": "limit the results on context having data after this timestamp.", - "required": false, - "schema": { - "type": "number", - "format": "integer" - } + "$ref": "#/components/parameters/chart_label_key" }, { - "name": "before", - "in": "query", - "description": "limit the results on context having data before this timestamp.", - "required": false, - "schema": { - "type": "number", - "format": "integer" - } + "$ref": "#/components/parameters/chart_labels_filter" }, { - "name": "chart_label_key", - "in": "query", - "description": "a simple pattern matching charts label keys (use comma or pipe as separator)", - "required": false, - "allowEmptyValue": true, - "schema": { - "type": "string" - } + "$ref": "#/components/parameters/contextOptions1" }, { - "name": "chart_labels_filter", - "in": "query", - "description": "a simple pattern matching charts label key and values (use colon for equality, comma or pipe as separator)", - "required": false, - "allowEmptyValue": true, - "schema": { - "type": "string" - } + "$ref": "#/components/parameters/after" }, { - "name": "dimensions", - "in": "query", - "description": "a simple pattern matching dimensions (use comma or pipe as separator)", - "required": false, - "allowEmptyValue": true, - "schema": { - "type": "string" - } + "$ref": "#/components/parameters/before" } ], "responses": { @@ -295,332 +373,273 @@ } } }, - "/alarm_variables": { + "/api/v2/data": { "get": { - "summary": "List variables available to configure alarms for a chart", - "description": "Returns the basic information of a chart and all the variables that can be used in alarm and template health configurations for the particular chart or family.", + "operationId": "dataQuery2", + "tags": [ + "data" + ], + "summary": "Data Query v2", + "description": "Multi-node, multi-context, multi-instance, multi-dimension data queries, with time and metric aggregation.\n", "parameters": [ { - "name": "chart", + "name": "group_by", "in": "query", - "description": "The id of the chart as returned by the /charts call.", - "required": true, + "description": "A comma separated list of the groupings required.\nAll possible values can be combined together, except `selected`. If `selected` is given in the list, all others are ignored.\nThe order they are placed in the list is currently ignored.\n", + "required": false, "schema": { - "type": "string", - "format": "as returned by /charts", - "default": "system.cpu" + "type": "array", + "items": { + "type": "string", + "enum": [ + "dimension", + "instance", + "percentage-of-instance", + "label", + "node", + "context", + "units", + "selected" + ] + }, + "default": [ + "dimension" + ] } - } - ], - "responses": { - "200": { - "description": "A javascript object with information about the chart and the available variables.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/alarm_variables" - } - } + }, + { + "name": "group_by_label", + "in": "query", + "description": "A comma separated list of the label keys to group by their values. The order of the labels in the list is respected.\n", + "required": false, + "schema": { + "type": "string", + "format": "comma separated list of label keys to group by", + "default": "" } }, - "400": { - "description": "Bad request - the body will include a message stating what is wrong." + { + "name": "aggregation", + "in": "query", + "description": "The aggregation function to apply when grouping metrics together.\nWhen option `raw` is given, `average` and `avg` behave like `sum` and the caller is expected to calculate the average.\n", + "required": false, + "schema": { + "type": "string", + "enum": [ + "min", + "max", + "avg", + "average", + "sum" + ], + "default": "average" + } }, - "404": { - "description": "No chart with the given id is found." + { + "$ref": "#/components/parameters/scopeNodes" + }, + { + "$ref": "#/components/parameters/scopeContexts" + }, + { + "$ref": "#/components/parameters/filterNodes" + }, + { + "$ref": "#/components/parameters/filterContexts" + }, + { + "$ref": "#/components/parameters/filterInstances" + }, + { + "$ref": "#/components/parameters/filterLabels" + }, + { + "$ref": "#/components/parameters/filterAlerts" + }, + { + "$ref": "#/components/parameters/filterDimensions" + }, + { + "$ref": "#/components/parameters/after" + }, + { + "$ref": "#/components/parameters/before" + }, + { + "$ref": "#/components/parameters/points" + }, + { + "$ref": "#/components/parameters/tier" + }, + { + "$ref": "#/components/parameters/dataQueryOptions" + }, + { + "$ref": "#/components/parameters/dataTimeGroup2" + }, + { + "$ref": "#/components/parameters/dataTimeGroupOptions2" + }, + { + "$ref": "#/components/parameters/dataTimeResampling2" + }, + { + "$ref": "#/components/parameters/dataFormat2" + }, + { + "$ref": "#/components/parameters/timeoutMS" + }, + { + "$ref": "#/components/parameters/callback" + }, + { + "$ref": "#/components/parameters/filename" + }, + { + "$ref": "#/components/parameters/tqx" + } + ], + "responses": { + "200": { + "description": "The call was successful. The response includes the data in the format requested.\n", + "content": { + "application/json": { + "schema": { + "oneOf": [ + { + "$ref": "#/components/schemas/jsonwrap2" + }, + { + "$ref": "#/components/schemas/data_json_formats2" + } + ] + } + }, + "text/plain": { + "schema": { + "type": "string", + "format": "according to the format requested." + } + }, + "text/html": { + "schema": { + "type": "string", + "format": "html" + } + }, + "application/x-javascript": { + "schema": { + "type": "string", + "format": "javascript" + } + } + } + }, + "400": { + "description": "Bad request - the body will include a message stating what is wrong.\n" }, "500": { - "description": "Internal server error. This usually means the server is out of memory." + "description": "Internal server error. This usually means the server is out of memory.\n" } } } }, - "/data": { + "/api/v1/data": { "get": { - "summary": "Get collected data for a specific chart", - "description": "The data endpoint returns data stored in the round robin database of a chart.", + "operationId": "dataQuery1", + "tags": [ + "data" + ], + "summary": "Data Query v1 - Single node, single chart or context queries. without group-by.", + "description": "Query metric data of a chart or context of a node and return a dataset having time-series data for all dimensions available.\nFor group-by functionality, use `/api/v2/data`.\nAt least a `chart` or a `context` have to be given for the data query to be executed.\n", "parameters": [ { - "name": "chart", - "in": "query", - "description": "The id of the chart as returned by the /charts call. Note chart or context must be specified", - "required": false, - "allowEmptyValue": false, - "schema": { - "type": "string", - "format": "as returned by /charts", - "default": "system.cpu" - } + "$ref": "#/components/parameters/chart" }, { - "name": "context", - "in": "query", - "description": "The context of the chart as returned by the /charts call. Note chart or context must be specified", - "required": false, - "allowEmptyValue": false, - "schema": { - "type": "string", - "format": "as returned by /charts" - } + "$ref": "#/components/parameters/context" }, { - "name": "dimension", - "in": "query", - "description": "Zero, one or more dimension ids or names, as returned by the /chart call, separated with comma or pipe. Netdata simple patterns are supported.", - "required": false, - "allowEmptyValue": false, - "schema": { - "type": "array", - "items": { - "type": "string", - "format": "as returned by /charts" - } - } + "$ref": "#/components/parameters/dimension" }, { - "name": "after", - "in": "query", - "description": "This parameter can either be an absolute timestamp specifying the starting point of the data to be returned, or a relative number of seconds (negative, relative to parameter: before). Netdata will assume it is a relative number if it is less that 3 years (in seconds). If not specified the default is -600 seconds. Netdata will adapt this parameter to the boundaries of the round robin database unless the allow_past option is specified.", - "required": true, - "allowEmptyValue": false, - "schema": { - "type": "number", - "format": "integer", - "default": -600 - } + "$ref": "#/components/parameters/chart_label_key" }, { - "name": "before", - "in": "query", - "description": "This parameter can either be an absolute timestamp specifying the ending point of the data to be returned, or a relative number of seconds (negative), relative to the last collected timestamp. Netdata will assume it is a relative number if it is less than 3 years (in seconds). Netdata will adapt this parameter to the boundaries of the round robin database. The default is zero (i.e. the timestamp of the last value collected).", - "required": false, - "schema": { - "type": "number", - "format": "integer", - "default": 0 - } + "$ref": "#/components/parameters/chart_labels_filter" }, { - "name": "points", - "in": "query", - "description": "The number of points to be returned. If not given, or it is <= 0, or it is bigger than the points stored in the round robin database for this chart for the given duration, all the available collected values for the given duration will be returned.", - "required": true, - "allowEmptyValue": false, - "schema": { - "type": "number", - "format": "integer", - "default": 20 - } + "$ref": "#/components/parameters/after" }, { - "name": "chart_label_key", - "in": "query", - "description": "Specify the chart label keys that need to match for context queries as comma separated values. At least one matching key is needed to match the corresponding chart.", - "required": false, - "allowEmptyValue": false, - "schema": { - "type": "string", - "format": "key1,key2,key3" - } + "$ref": "#/components/parameters/before" }, { - "name": "chart_labels_filter", - "in": "query", - "description": "Specify the chart label keys and values to match for context queries. All keys/values need to match for the chart to be included in the query. The labels are specified as key1:value1,key2:value2", - "required": false, - "allowEmptyValue": false, - "schema": { - "type": "string", - "format": "key1:value1,key2:value2,key3:value3" - } + "$ref": "#/components/parameters/points" }, { - "name": "group", - "in": "query", - "description": "The grouping method. If multiple collected values are to be grouped in order to return fewer points, this parameters defines the method of grouping. methods supported \"min\", \"max\", \"average\", \"sum\", \"incremental-sum\". \"max\" is actually calculated on the absolute value collected (so it works for both positive and negative dimensions to return the most extreme value in either direction).", - "required": true, - "allowEmptyValue": false, - "schema": { - "type": "string", - "enum": [ - "min", - "max", - "average", - "median", - "stddev", - "sum", - "incremental-sum", - "ses", - "des", - "cv", - "countif", - "percentile", - "percentile25", - "percentile50", - "percentile75", - "percentile80", - "percentile90", - "percentile95", - "percentile97", - "percentile98", - "percentile99", - "trimmed-mean", - "trimmed-mean1", - "trimmed-mean2", - "trimmed-mean3", - "trimmed-mean5", - "trimmed-mean10", - "trimmed-mean15", - "trimmed-mean20", - "trimmed-mean25", - "trimmed-median", - "trimmed-median1", - "trimmed-median2", - "trimmed-median3", - "trimmed-median5", - "trimmed-median10", - "trimmed-median15", - "trimmed-median20", - "trimmed-median25" - ], - "default": "average" - } + "$ref": "#/components/parameters/tier" }, { - "name": "group_options", - "in": "query", - "description": "When the group function supports additional parameters, this field can be used to pass them to it. Currently only \"countif\" supports this.", - "required": false, - "allowEmptyValue": false, - "schema": { - "type": "string" - } + "$ref": "#/components/parameters/dataQueryOptions" }, { - "name": "gtime", - "in": "query", - "description": "The grouping number of seconds. This is used in conjunction with group=average to change the units of metrics (ie when the data is per-second, setting gtime=60 will turn them to per-minute).", - "required": false, - "allowEmptyValue": false, - "schema": { - "type": "number", - "format": "integer", - "default": 0 - } + "$ref": "#/components/parameters/dataFormat1" }, { - "name": "timeout", - "in": "query", - "description": "Specify a timeout value in milliseconds after which the agent will abort the query and return a 503 error. A value of 0 indicates no timeout.", - "required": false, - "allowEmptyValue": false, - "schema": { - "type": "number", - "format": "integer", - "default": 0 - } + "$ref": "#/components/parameters/dataTimeGroup1" }, { - "name": "format", - "in": "query", - "description": "The format of the data to be returned.", - "required": true, - "allowEmptyValue": false, - "schema": { - "type": "string", - "enum": [ - "json", - "jsonp", - "csv", - "tsv", - "tsv-excel", - "ssv", - "ssvcomma", - "datatable", - "datasource", - "html", - "markdown", - "array", - "csvjsonarray" - ], - "default": "json" - } + "$ref": "#/components/parameters/dataTimeGroupOptions1" }, { - "name": "options", - "in": "query", - "description": "Options that affect data generation.", - "required": false, - "allowEmptyValue": false, - "schema": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "nonzero", - "flip", - "jsonwrap", - "min2max", - "seconds", - "milliseconds", - "abs", - "absolute", - "absolute-sum", - "null2zero", - "objectrows", - "google_json", - "percentage", - "unaligned", - "match-ids", - "match-names", - "allow_past", - "anomaly-bit" - ] - }, - "default": [ - "seconds", - "jsonwrap" - ] - } + "$ref": "#/components/parameters/dataTimeResampling1" }, { - "name": "callback", - "in": "query", - "description": "For JSONP responses, the callback function name.", - "required": false, - "allowEmptyValue": true, - "schema": { - "type": "string" - } + "$ref": "#/components/parameters/timeoutMS" }, { - "name": "filename", - "in": "query", - "description": "Add Content-Disposition: attachment; filename= header to the response, that will instruct the browser to save the response with the given filename.", - "required": false, - "allowEmptyValue": true, - "schema": { - "type": "string" - } + "$ref": "#/components/parameters/callback" }, { - "name": "tqx", - "in": "query", - "description": "[Google Visualization API](https://developers.google.com/chart/interactive/docs/dev/implementing_data_source?hl=en) formatted parameter.", - "required": false, - "allowEmptyValue": true, - "schema": { - "type": "string" - } + "$ref": "#/components/parameters/filename" + }, + { + "$ref": "#/components/parameters/tqx" } ], "responses": { "200": { - "description": "The call was successful. The response includes the data in the format requested. Swagger2.0 does not process the discriminator field to show polymorphism. The response will be one of the sub-types of the data-schema according to the chosen format, e.g. json -> data_json.", + "description": "The call was successful. The response includes the data in the format requested.\n", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/data" + "oneOf": [ + { + "$ref": "#/components/schemas/jsonwrap1" + }, + { + "$ref": "#/components/schemas/data_json_formats1" + } + ] + } + }, + "text/plain": { + "schema": { + "type": "string", + "format": "according to the format requested." + } + }, + "text/html": { + "schema": { + "type": "string", + "format": "html" + } + }, + "application/x-javascript": { + "schema": { + "type": "string", + "format": "javascript" } } } @@ -637,147 +656,221 @@ } } }, - "/badge.svg": { + "/api/v1/allmetrics": { "get": { - "summary": "Generate a badge in form of SVG image for a chart (or dimension)", - "description": "Successful responses are SVG images.", + "operationId": "allMetrics1", + "tags": [ + "data" + ], + "summary": "All Metrics v1 - Fetch latest value for all metrics", + "description": "The `allmetrics` endpoint returns the latest value of all metrics maintained for a netdata node.\n", "parameters": [ { - "name": "chart", + "name": "format", "in": "query", - "description": "The id of the chart as returned by the /charts call.", + "description": "The format of the response to be returned.", "required": true, - "allowEmptyValue": false, "schema": { "type": "string", - "format": "as returned by /charts", - "default": "system.cpu" + "enum": [ + "shell", + "prometheus", + "prometheus_all_hosts", + "json" + ], + "default": "shell" } }, { - "name": "alarm", + "name": "filter", "in": "query", - "description": "The name of an alarm linked to the chart.", + "description": "Allows to filter charts out using simple patterns.", "required": false, - "allowEmptyValue": true, "schema": { "type": "string", "format": "any text" } }, { - "name": "dimension", + "name": "variables", "in": "query", - "description": "Zero, one or more dimension ids, as returned by the /chart call.", + "description": "When enabled, netdata will expose various system configuration variables.\n", "required": false, - "allowEmptyValue": false, "schema": { - "type": "array", - "items": { - "type": "string", - "format": "as returned by /charts" - } - } - }, - { - "name": "after", + "type": "string", + "enum": [ + "yes", + "no" + ], + "default": "no" + } + }, + { + "name": "help", "in": "query", - "description": "This parameter can either be an absolute timestamp specifying the starting point of the data to be returned, or a relative number of seconds, to the last collected timestamp. Netdata will assume it is a relative number if it is smaller than the duration of the round robin database for this chart. So, if the round robin database is 3600 seconds, any value from -3600 to 3600 will trigger relative arithmetics. Netdata will adapt this parameter to the boundaries of the round robin database.", - "required": true, - "allowEmptyValue": false, + "description": "Enable or disable HELP lines in prometheus output.\n", + "required": false, "schema": { - "type": "number", - "format": "integer", - "default": -600 + "type": "string", + "enum": [ + "yes", + "no" + ], + "default": "no" } }, { - "name": "before", + "name": "types", "in": "query", - "description": "This parameter can either be an absolute timestamp specifying the ending point of the data to be returned, or a relative number of seconds, to the last collected timestamp. Netdata will assume it is a relative number if it is smaller than the duration of the round robin database for this chart. So, if the round robin database is 3600 seconds, any value from -3600 to 3600 will trigger relative arithmetics. Netdata will adapt this parameter to the boundaries of the round robin database.", + "description": "Enable or disable TYPE lines in prometheus output.\n", "required": false, "schema": { - "type": "number", - "format": "integer", - "default": 0 + "type": "string", + "enum": [ + "yes", + "no" + ], + "default": "no" } }, { - "name": "group", + "name": "timestamps", "in": "query", - "description": "The grouping method. If multiple collected values are to be grouped in order to return fewer points, this parameters defines the method of grouping. methods are supported \"min\", \"max\", \"average\", \"sum\", \"incremental-sum\". \"max\" is actually calculated on the absolute value collected (so it works for both positive and negative dimensions to return the most extreme value in either direction).", - "required": true, - "allowEmptyValue": false, + "description": "Enable or disable timestamps in prometheus output.\n", + "required": false, "schema": { "type": "string", "enum": [ - "min", - "max", + "yes", + "no" + ], + "default": "yes" + } + }, + { + "name": "names", + "in": "query", + "description": "When enabled netdata will report dimension names. When disabled netdata will report dimension IDs. The default is controlled in netdata.conf.\n", + "required": false, + "schema": { + "type": "string", + "enum": [ + "yes", + "no" + ], + "default": "yes" + } + }, + { + "name": "oldunits", + "in": "query", + "description": "When enabled, netdata will show metric names for the default `source=average` as they appeared before 1.12, by using the legacy unit naming conventions.\n", + "required": false, + "schema": { + "type": "string", + "enum": [ + "yes", + "no" + ], + "default": "yes" + } + }, + { + "name": "hideunits", + "in": "query", + "description": "When enabled, netdata will not include the units in the metric names, for the default `source=average`.\n", + "required": false, + "schema": { + "type": "string", + "enum": [ + "yes", + "no" + ], + "default": "yes" + } + }, + { + "name": "server", + "in": "query", + "description": "Set a distinct name of the client querying prometheus metrics. Netdata will use the client IP if this is not set.\n", + "required": false, + "schema": { + "type": "string", + "format": "any text" + } + }, + { + "name": "prefix", + "in": "query", + "description": "Prefix all prometheus metrics with this string.\n", + "required": false, + "schema": { + "type": "string", + "format": "any text" + } + }, + { + "name": "data", + "in": "query", + "description": "Select the prometheus response data source. There is a setting in netdata.conf for the default.\n", + "required": false, + "schema": { + "type": "string", + "enum": [ + "as-collected", "average", - "median", - "stddev", - "sum", - "incremental-sum", - "ses", - "des", - "cv", - "countif", - "percentile", - "percentile25", - "percentile50", - "percentile75", - "percentile80", - "percentile90", - "percentile95", - "percentile97", - "percentile98", - "percentile99", - "trimmed-mean", - "trimmed-mean1", - "trimmed-mean2", - "trimmed-mean3", - "trimmed-mean5", - "trimmed-mean10", - "trimmed-mean15", - "trimmed-mean20", - "trimmed-mean25", - "trimmed-median", - "trimmed-median1", - "trimmed-median2", - "trimmed-median3", - "trimmed-median5", - "trimmed-median10", - "trimmed-median15", - "trimmed-median20", - "trimmed-median25" + "sum" ], "default": "average" } + } + ], + "responses": { + "200": { + "description": "All the metrics returned in the format requested." + }, + "400": { + "description": "The format requested is not supported." + } + } + } + }, + "/api/v1/badge.svg": { + "get": { + "operationId": "badge1", + "tags": [ + "badges" + ], + "summary": "Generate a badge in form of SVG image for a chart (or dimension)", + "description": "Successful responses are SVG images.", + "parameters": [ + { + "$ref": "#/components/parameters/chart" + }, + { + "$ref": "#/components/parameters/dimension" + }, + { + "$ref": "#/components/parameters/after" + }, + { + "$ref": "#/components/parameters/before" + }, + { + "$ref": "#/components/parameters/dataTimeGroup1" + }, + { + "$ref": "#/components/parameters/dataQueryOptions" }, { - "name": "options", + "name": "alarm", "in": "query", - "description": "Options that affect data generation.", + "description": "The name of an alarm linked to the chart.", "required": false, "allowEmptyValue": true, "schema": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "abs", - "absolute", - "display-absolute", - "absolute-sum", - "null2zero", - "percentage", - "unaligned", - "anomaly-bit" - ] - }, - "default": [ - "absolute" - ] + "type": "string", + "format": "any text" } }, { @@ -805,7 +898,7 @@ { "name": "label_color", "in": "query", - "description": "A color to be used for the background of the label side(left side) of the badge. One of predefined colors or specific color in hex `RGB` or `RRGGBB` format (without preceding `#` character). If value wrong or not given default color will be used.", + "description": "A color to be used for the background of the label side(left side) of the badge. One of predefined colors or specific color in hex `RGB` or `RRGGBB` format (without preceding `#` character). If value wrong or not given default color will be used.\n", "required": false, "allowEmptyValue": true, "schema": { @@ -836,7 +929,7 @@ { "name": "value_color", "in": "query", - "description": "A color to be used for the background of the value *(right)* part of badge. You can set multiple using a pipe with a condition each, like this: `color, <, >=, <=, =, :null (to check if no value exists). Each color can be specified in same manner as for `label_color` parameter. Currently only integers are supported as values.", + "description": "A color to be used for the background of the value *(right)* part of badge. You can set multiple using a pipe with a condition each, like this: `color, <, >=, <=, =, :null (to check if no value exists). Each color can be specified in same manner as for `label_color` parameter. Currently only integers are supported as values.\n", "required": false, "allowEmptyValue": true, "schema": { @@ -847,7 +940,7 @@ { "name": "text_color_lbl", "in": "query", - "description": "Font color for label *(left)* part of the badge. One of predefined colors or as HTML hexadecimal color without preceding `#` character. Formats allowed `RGB` or `RRGGBB`. If no or wrong value given default color will be used.", + "description": "Font color for label *(left)* part of the badge. One of predefined colors or as HTML hexadecimal color without preceding `#` character. Formats allowed `RGB` or `RRGGBB`. If no or wrong value given default color will be used.\n", "required": false, "allowEmptyValue": true, "schema": { @@ -878,7 +971,7 @@ { "name": "text_color_val", "in": "query", - "description": "Font color for value *(right)* part of the badge. One of predefined colors or as HTML hexadecimal color without preceding `#` character. Formats allowed `RGB` or `RRGGBB`. If no or wrong value given default color will be used.", + "description": "Font color for value *(right)* part of the badge. One of predefined colors or as HTML hexadecimal color without preceding `#` character. Formats allowed `RGB` or `RRGGBB`. If no or wrong value given default color will be used.\n", "required": false, "allowEmptyValue": true, "schema": { @@ -942,7 +1035,7 @@ { "name": "fixed_width_lbl", "in": "query", - "description": "This parameter overrides auto-sizing of badge and creates it with fixed width. This parameter determines the size of the label's left side *(label/name)*. You must set this parameter together with `fixed_width_val` otherwise it will be ignored. You should set the label/value widths wide enough to provide space for all the possible values/contents of the badge you're requesting. In case the text cannot fit the space given it will be clipped. The `scale` parameter still applies on the values you give to `fixed_width_lbl` and `fixed_width_val`.", + "description": "This parameter overrides auto-sizing of badge and creates it with fixed width. This parameter determines the size of the label's left side *(label/name)*. You must set this parameter together with `fixed_width_val` otherwise it will be ignored. You should set the label/value widths wide enough to provide space for all the possible values/contents of the badge you're requesting. In case the text cannot fit the space given it will be clipped. The `scale` parameter still applies on the values you give to `fixed_width_lbl` and `fixed_width_val`.\n", "required": false, "allowEmptyValue": false, "schema": { @@ -953,7 +1046,7 @@ { "name": "fixed_width_val", "in": "query", - "description": "This parameter overrides auto-sizing of badge and creates it with fixed width. This parameter determines the size of the label's right side *(value)*. You must set this parameter together with `fixed_width_lbl` otherwise it will be ignored. You should set the label/value widths wide enough to provide space for all the possible values/contents of the badge you're requesting. In case the text cannot fit the space given it will be clipped. The `scale` parameter still applies on the values you give to `fixed_width_lbl` and `fixed_width_val`.", + "description": "This parameter overrides auto-sizing of badge and creates it with fixed width. This parameter determines the size of the label's right side *(value)*. You must set this parameter together with `fixed_width_lbl` otherwise it will be ignored. You should set the label/value widths wide enough to provide space for all the possible values/contents of the badge you're requesting. In case the text cannot fit the space given it will be clipped. The `scale` parameter still applies on the values you give to `fixed_width_lbl` and `fixed_width_val`.\n", "required": false, "allowEmptyValue": false, "schema": { @@ -978,185 +1071,310 @@ } } }, - "/allmetrics": { + "/api/v2/weights": { "get": { - "summary": "Get a value of all the metrics maintained by netdata", - "description": "The allmetrics endpoint returns the latest value of all charts and dimensions stored in the netdata server.", + "operationId": "weights2", + "tags": [ + "weights" + ], + "summary": "Score or weight all or some of the metrics, across all nodes, according to various algorithms.", + "description": "This endpoint goes through all metrics and scores them according to an algorithm.\n", "parameters": [ { - "name": "format", - "in": "query", - "description": "The format of the response to be returned.", - "required": true, - "schema": { - "type": "string", - "enum": [ - "shell", - "prometheus", - "prometheus_all_hosts", - "json" - ], - "default": "shell" - } + "$ref": "#/components/parameters/weightMethods" }, { - "name": "filter", - "in": "query", - "description": "Allows to filter charts out using simple patterns.", - "required": false, - "schema": { - "type": "string", - "format": "any text" - } + "$ref": "#/components/parameters/scopeNodes" }, { - "name": "variables", - "in": "query", - "description": "When enabled, netdata will expose various system configuration metrics.", - "required": false, - "schema": { - "type": "string", - "enum": [ - "yes", - "no" - ], - "default": "no" - } + "$ref": "#/components/parameters/scopeContexts" }, { - "name": "help", - "in": "query", - "description": "Enable or disable HELP lines in prometheus output.", - "required": false, - "schema": { - "type": "string", - "enum": [ - "yes", - "no" - ], - "default": "no" - } + "$ref": "#/components/parameters/filterNodes" }, { - "name": "types", - "in": "query", - "description": "Enable or disable TYPE lines in prometheus output.", - "required": false, - "schema": { - "type": "string", - "enum": [ - "yes", - "no" - ], - "default": "no" - } + "$ref": "#/components/parameters/filterContexts" }, { - "name": "timestamps", - "in": "query", - "description": "Enable or disable timestamps in prometheus output.", - "required": false, - "schema": { - "type": "string", - "enum": [ - "yes", - "no" - ], - "default": "yes" - } + "$ref": "#/components/parameters/filterInstances" }, { - "name": "names", - "in": "query", - "description": "When enabled netdata will report dimension names. When disabled netdata will report dimension IDs. The default is controlled in netdata.conf.", - "required": false, - "schema": { - "type": "string", - "enum": [ - "yes", - "no" - ], - "default": "yes" - } + "$ref": "#/components/parameters/filterLabels" }, { - "name": "oldunits", - "in": "query", - "description": "When enabled, netdata will show metric names for the default source=average as they appeared before 1.12, by using the legacy unit naming conventions.", - "required": false, - "schema": { - "type": "string", - "enum": [ - "yes", - "no" - ], - "default": "yes" - } + "$ref": "#/components/parameters/filterAlerts" }, { - "name": "hideunits", - "in": "query", - "description": "When enabled, netdata will not include the units in the metric names, for the default source=average.", - "required": false, - "schema": { - "type": "string", - "enum": [ - "yes", - "no" - ], - "default": "yes" - } + "$ref": "#/components/parameters/filterDimensions" }, { - "name": "server", - "in": "query", - "description": "Set a distinct name of the client querying prometheus metrics. Netdata will use the client IP if this is not set.", - "required": false, - "schema": { - "type": "string", - "format": "any text" - } + "$ref": "#/components/parameters/baselineAfter" }, { - "name": "prefix", - "in": "query", - "description": "Prefix all prometheus metrics with this string.", - "required": false, - "schema": { - "type": "string", - "format": "any text" + "$ref": "#/components/parameters/baselineBefore" + }, + { + "$ref": "#/components/parameters/after" + }, + { + "$ref": "#/components/parameters/before" + }, + { + "$ref": "#/components/parameters/tier" + }, + { + "$ref": "#/components/parameters/points" + }, + { + "$ref": "#/components/parameters/timeoutMS" + }, + { + "$ref": "#/components/parameters/dataQueryOptions" + }, + { + "$ref": "#/components/parameters/dataTimeGroup2" + }, + { + "$ref": "#/components/parameters/dataTimeGroupOptions2" + } + ], + "responses": { + "200": { + "description": "JSON object with weights for each context, chart and dimension.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/weights2" + } + } } }, + "400": { + "description": "The given parameters are invalid." + }, + "403": { + "description": "metrics correlations are not enabled on this Netdata Agent." + }, + "404": { + "description": "No charts could be found, or the method that correlated the metrics did not produce any result.\n" + }, + "504": { + "description": "Timeout - the query took too long and has been cancelled." + } + } + } + }, + "/api/v1/weights": { + "get": { + "operationId": "weights1", + "tags": [ + "weights" + ], + "summary": "Score or weight all or some of the metrics of a single node, according to various algorithms.", + "description": "This endpoint goes through all metrics and scores them according to an algorithm.\n", + "parameters": [ { - "name": "data", + "$ref": "#/components/parameters/weightMethods" + }, + { + "$ref": "#/components/parameters/context" + }, + { + "$ref": "#/components/parameters/baselineAfter" + }, + { + "$ref": "#/components/parameters/baselineBefore" + }, + { + "$ref": "#/components/parameters/after" + }, + { + "$ref": "#/components/parameters/before" + }, + { + "$ref": "#/components/parameters/tier" + }, + { + "$ref": "#/components/parameters/points" + }, + { + "$ref": "#/components/parameters/timeoutMS" + }, + { + "$ref": "#/components/parameters/dataQueryOptions" + }, + { + "$ref": "#/components/parameters/dataTimeGroup1" + }, + { + "$ref": "#/components/parameters/dataTimeGroupOptions1" + } + ], + "responses": { + "200": { + "description": "JSON object with weights for each context, chart and dimension.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/weights" + } + } + } + }, + "400": { + "description": "The given parameters are invalid." + }, + "403": { + "description": "metrics correlations are not enabled on this Netdata Agent." + }, + "404": { + "description": "No charts could be found, or the method that correlated the metrics did not produce any result." + }, + "504": { + "description": "Timeout - the query took too long and has been cancelled." + } + } + } + }, + "/api/v1/metric_correlations": { + "get": { + "operationId": "metricCorrelations1", + "tags": [ + "weights" + ], + "summary": "Analyze all the metrics to find their correlations - EOL", + "description": "THIS ENDPOINT IS OBSOLETE. Use the /weights endpoint. Given two time-windows (baseline, highlight), it goes through all the available metrics, querying both windows and tries to find how these two windows relate to each other. It supports multiple algorithms to do so. The result is a list of all metrics evaluated, weighted for 0.0 (the two windows are more different) to 1.0 (the two windows are similar). The algorithm adjusts automatically the baseline window to be a power of two multiple of the highlighted (1, 2, 4, 8, etc).\n", + "parameters": [ + { + "$ref": "#/components/parameters/weightMethods" + }, + { + "$ref": "#/components/parameters/baselineAfter" + }, + { + "$ref": "#/components/parameters/baselineBefore" + }, + { + "$ref": "#/components/parameters/after" + }, + { + "$ref": "#/components/parameters/before" + }, + { + "$ref": "#/components/parameters/points" + }, + { + "$ref": "#/components/parameters/tier" + }, + { + "$ref": "#/components/parameters/timeoutMS" + }, + { + "$ref": "#/components/parameters/dataQueryOptions" + }, + { + "$ref": "#/components/parameters/dataTimeGroup1" + }, + { + "$ref": "#/components/parameters/dataTimeGroupOptions1" + } + ], + "responses": { + "200": { + "description": "JSON object with weights for each chart and dimension.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/metric_correlations" + } + } + } + }, + "400": { + "description": "The given parameters are invalid." + }, + "403": { + "description": "metrics correlations are not enabled on this Netdata Agent." + }, + "404": { + "description": "No charts could be found, or the method that correlated the metrics did not produce any result." + }, + "504": { + "description": "Timeout - the query took too long and has been cancelled." + } + } + } + }, + "/api/v1/function": { + "get": { + "operationId": "function1", + "tags": [ + "functions" + ], + "description": "Execute a collector function.", + "parameters": [ + { + "name": "function", "in": "query", - "description": "Select the prometheus response data source. There is a setting in netdata.conf for the default.", - "required": false, + "description": "The name of the function, as returned by the collector.", + "required": true, + "allowEmptyValue": false, "schema": { - "type": "string", - "enum": [ - "as-collected", - "average", - "sum" - ], - "default": "average" + "type": "string" } + }, + { + "$ref": "#/components/parameters/timeoutSecs" } ], "responses": { "200": { - "description": "All the metrics returned in the format requested." + "description": "The collector function has been executed successfully. Each collector may return a different type of content." }, "400": { - "description": "The format requested is not supported." + "description": "The request was rejected by the collector." + }, + "404": { + "description": "The requested function is not found." + }, + "500": { + "description": "Other internal error, getting this error means there is a bug in Netdata." + }, + "503": { + "description": "The collector to execute the function is not currently available." + }, + "504": { + "description": "Timeout while waiting for the collector to execute the function." + }, + "591": { + "description": "The collector sent a response, but it was invalid or corrupted." + } + } + } + }, + "/api/v1/functions": { + "get": { + "operationId": "functions1", + "tags": [ + "functions" + ], + "summary": "Get a list of all registered collector functions.", + "description": "Collector functions are programs that can be executed on demand.", + "responses": { + "200": { + "description": "A JSON object containing one object per supported function." } } } }, - "/alarms": { + "/api/v1/alarms": { "get": { + "operationId": "alerts1", + "tags": [ + "alerts" + ], "summary": "Get a list of active or raised alarms on the server", - "description": "The alarms endpoint returns the list of all raised or enabled alarms on the netdata server. Called without any parameters, the raised alarms in state WARNING or CRITICAL are returned. By passing \"?all\", all the enabled alarms are returned.", + "description": "The alarms endpoint returns the list of all raised or enabled alarms on the netdata server. Called without any parameters, the raised alarms in state WARNING or CRITICAL are returned. By passing \"?all\", all the enabled alarms are returned.\n", "parameters": [ { "name": "all", @@ -1193,10 +1411,14 @@ } } }, - "/alarms_values": { + "/api/v1/alarms_values": { "get": { + "operationId": "alertValues1", + "tags": [ + "alerts" + ], "summary": "Get a list of active or raised alarms on the server", - "description": "The alarms_values endpoint returns the list of all raised or enabled alarms on the netdata server. Called without any parameters, the raised alarms in state WARNING or CRITICAL are returned. By passing '?all', all the enabled alarms are returned. This option output differs from `/alarms` in the number of variables delivered. This endpoint gives to user `id`, `value`, `last_updated` time, and alarm `status`.", + "description": "The alarms_values endpoint returns the list of all raised or enabled alarms on the netdata server. Called without any parameters, the raised alarms in state WARNING or CRITICAL are returned. By passing '?all', all the enabled alarms are returned. This option output differs from `/alarms` in the number of variables delivered. This endpoint gives to user `id`, `value`, `last_updated` time, and alarm `status`.\n", "parameters": [ { "name": "all", @@ -1233,15 +1455,19 @@ } } }, - "/alarm_log": { + "/api/v1/alarm_log": { "get": { + "operationId": "alertsLog1", + "tags": [ + "alerts" + ], "summary": "Retrieves the entries of the alarm log", - "description": "Returns an array of alarm_log entries, with historical information on raised and cleared alarms.", + "description": "Returns an array of alarm_log entries, with historical information on raised and cleared alarms.\n", "parameters": [ { "name": "after", "in": "query", - "description": "Passing the parameter after=UNIQUEID returns all the events in the alarm log that occurred after UNIQUEID. An automated series of calls would call the interface once without after=, store the last UNIQUEID of the returned set, and give it back to get incrementally the next events.", + "description": "Passing the parameter after=UNIQUEID returns all the events in the alarm log that occurred after UNIQUEID. An automated series of calls would call the interface once without after=, store the last UNIQUEID of the returned set, and give it back to get incrementally the next events.\n", "required": false, "schema": { "type": "integer" @@ -1265,30 +1491,21 @@ } } }, - "/alarm_count": { + "/api/v1/alarm_count": { "get": { + "operationId": "alertsCount1", + "tags": [ + "alerts" + ], "summary": "Get an overall status of the chart", - "description": "Checks multiple charts with the same context and counts number of alarms with given status.", + "description": "Checks multiple charts with the same context and counts number of alarms with given status.\n", "parameters": [ { - "in": "query", - "name": "context", - "description": "Specify context which should be checked.", - "required": false, - "allowEmptyValue": true, - "schema": { - "type": "array", - "items": { - "type": "string" - }, - "default": [ - "system.cpu" - ] - } + "$ref": "#/components/parameters/context" }, { - "in": "query", "name": "status", + "in": "query", "description": "Specify alarm status to count.", "required": false, "allowEmptyValue": true, @@ -1327,40 +1544,88 @@ } } }, - "/manage/health": { + "/api/v1/alarm_variables": { "get": { - "summary": "Accesses the health management API to control health checks and notifications at runtime.", - "description": "Available from Netdata v1.12 and above, protected via bearer authorization. Especially useful for maintenance periods, the API allows you to disable health checks completely, silence alarm notifications, or Disable/Silence specific alarms that match selectors on alarm/template name, chart, context, host and family. For the simple disable/silence all scenarios, only the cmd parameter is required. The other parameters are used to define alarm selectors. For more information and examples, refer to the netdata documentation.", + "operationId": "getNodeAlertVariables1", + "tags": [ + "alerts" + ], + "summary": "List variables available to configure alarms for a chart", + "description": "Returns the basic information of a chart and all the variables that can be used in alarm and template health configurations for the particular chart or family.\n", "parameters": [ { - "name": "cmd", + "name": "chart", "in": "query", - "description": "DISABLE ALL: No alarm criteria are evaluated, nothing is written in the alarm log. SILENCE ALL: No notifications are sent. RESET: Return to the default state. DISABLE/SILENCE: Set the mode to be used for the alarms matching the criteria of the alarm selectors. LIST: Show active configuration.", - "required": false, + "description": "The id of the chart as returned by the /charts call.", + "required": true, "schema": { "type": "string", - "enum": [ - "DISABLE ALL", - "SILENCE ALL", - "DISABLE", - "SILENCE", - "RESET", - "LIST" - ] + "format": "as returned by /charts", + "default": "system.cpu" } - }, - { - "name": "alarm", - "in": "query", - "description": "The expression provided will match both `alarm` and `template` names.", - "schema": { - "type": "string" + } + ], + "responses": { + "200": { + "description": "A javascript object with information about the chart and the available variables.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/alarm_variables" + } + } } }, - { - "name": "chart", - "in": "query", - "description": "Chart ids/names, as shown on the dashboard. These will match the `on` entry of a configured `alarm`.", + "400": { + "description": "Bad request - the body will include a message stating what is wrong." + }, + "404": { + "description": "No chart with the given id is found." + }, + "500": { + "description": "Internal server error. This usually means the server is out of memory." + } + } + } + }, + "/api/v1/manage/health": { + "get": { + "operationId": "health1", + "tags": [ + "management" + ], + "summary": "Accesses the health management API to control health checks and notifications at runtime.\n", + "description": "Available from Netdata v1.12 and above, protected via bearer authorization. Especially useful for maintenance periods, the API allows you to disable health checks completely, silence alarm notifications, or Disable/Silence specific alarms that match selectors on alarm/template name, chart, context, host and family. For the simple disable/silence all scenarios, only the cmd parameter is required. The other parameters are used to define alarm selectors. For more information and examples, refer to the netdata documentation.\n", + "parameters": [ + { + "name": "cmd", + "in": "query", + "description": "DISABLE ALL: No alarm criteria are evaluated, nothing is written in the alarm log. SILENCE ALL: No notifications are sent. RESET: Return to the default state. DISABLE/SILENCE: Set the mode to be used for the alarms matching the criteria of the alarm selectors. LIST: Show active configuration.\n", + "required": false, + "schema": { + "type": "string", + "enum": [ + "DISABLE ALL", + "SILENCE ALL", + "DISABLE", + "SILENCE", + "RESET", + "LIST" + ] + } + }, + { + "name": "alarm", + "in": "query", + "description": "The expression provided will match both `alarm` and `template` names.", + "schema": { + "type": "string" + } + }, + { + "name": "chart", + "in": "query", + "description": "Chart ids/names, as shown on the dashboard. These will match the `on` entry of a configured `alarm`.", "schema": { "type": "string" } @@ -1400,10 +1665,14 @@ } } }, - "/aclk": { + "/api/v1/aclk": { "get": { + "operationId": "aclk1", + "tags": [ + "management" + ], "summary": "Get information about current ACLK state", - "description": "ACLK endpoint returns detailed information about current state of ACLK (Agent to Cloud communication).", + "description": "ACLK endpoint returns detailed information about current state of ACLK (Agent to Cloud communication).\n", "responses": { "200": { "description": "JSON object with ACLK information.", @@ -1417,1013 +1686,1858 @@ } } } + } + }, + "components": { + "parameters": { + "scopeNodes": { + "name": "scope_nodes", + "in": "query", + "description": "A simple pattern limiting the nodes scope of the query. The scope controls both data and metadata response. The simple pattern is checked against the nodes' machine guid, node id and hostname. The default nodes scope is all nodes for which this agent has data for. Usually the nodes scope is used to slice the entire dashboard (e.g. the Global Nodes Selector at the Netdata Cloud overview dashboard). Both positive and negative simple pattern expressions are supported.\n", + "required": false, + "schema": { + "type": "string", + "format": "simple pattern", + "default": "*" + } + }, + "scopeContexts": { + "name": "scope_contexts", + "in": "query", + "description": "A simple pattern limiting the contexts scope of the query. The scope controls both data and metadata response. The default contexts scope is all contexts for which this agent has data for. Usually the contexts scope is used to slice data on the dashboard (e.g. each context based chart has its own contexts scope, limiting the chart to all the instances of the selected context). Both positive and negative simple pattern expressions are supported.\n", + "required": false, + "schema": { + "type": "string", + "format": "simple pattern", + "default": "*" + } + }, + "filterNodes": { + "name": "nodes", + "in": "query", + "description": "A simple pattern matching the nodes to be queried. This only controls the data response, not the metadata. The simple pattern is checked against the nodes' machine guid, node id, hostname. The default nodes selector is all the nodes matched by the nodes scope. Both positive and negative simple pattern expressions are supported.\n", + "required": false, + "schema": { + "type": "string", + "format": "simple pattern", + "default": "*" + } + }, + "filterContexts": { + "name": "contexts", + "in": "query", + "description": "A simple pattern matching the contexts to be queried. This only controls the data response, not the metadata. Both positive and negative simple pattern expressions are supported.\n", + "required": false, + "schema": { + "type": "string", + "format": "simple pattern", + "default": "*" + } + }, + "filterInstances": { + "name": "instances", + "in": "query", + "description": "A simple pattern matching the instances to be queried. The simple pattern is checked against the instance `id`, the instance `name`, the fully qualified name of the instance `id` and `name`, like `instance@machine_guid`, where `instance` is either its `id` or `name`. Both positive and negative simple pattern expressions are supported.\n", + "required": false, + "schema": { + "type": "string", + "format": "simple pattern", + "default": "*" + } + }, + "filterLabels": { + "name": "labels", + "in": "query", + "description": "A simple pattern matching the labels to be queried. The simple pattern is checked against `name:value` of all the labels of all the eligible instances (as filtered by all the above: scope nodes, scope contexts, nodes, contexts and instances). Negative simple patterns should not be used in this filter.\n", + "required": false, + "schema": { + "type": "string", + "format": "simple pattern", + "default": "*" + } + }, + "filterAlerts": { + "name": "alerts", + "in": "query", + "description": "A simple pattern matching the alerts to be queried. The simple pattern is checked against the `name` of alerts and the combination of `name:status`, when status is one of `CLEAR`, `WARNING`, `CRITICAL`, `REMOVED`, `UNDEFINED`, `UNINITIALIZED`, of all the alerts of all the eligible instances (as filtered by all the above). A negative simple pattern will exclude the instances having the labels matched.\n", + "required": false, + "schema": { + "type": "string", + "format": "simple pattern", + "default": "*" + } + }, + "filterDimensions": { + "name": "dimensions", + "in": "query", + "description": "A simple patterns matching the dimensions to be queried. The simple pattern is checked against and `id` and the `name` of the dimensions of the eligible instances (as filtered by all the above). Both positive and negative simple pattern expressions are supported.\n", + "required": false, + "schema": { + "type": "string", + "format": "simple pattern", + "default": "*" + } + }, + "dataFormat1": { + "name": "format", + "in": "query", + "description": "The format of the data to be returned.", + "allowEmptyValue": false, + "schema": { + "type": "string", + "enum": [ + "json", + "jsonp", + "csv", + "tsv", + "tsv-excel", + "ssv", + "ssvcomma", + "datatable", + "datasource", + "html", + "markdown", + "array", + "csvjsonarray" + ], + "default": "json" + } + }, + "dataFormat2": { + "name": "format", + "in": "query", + "description": "The format of the data to be returned.", + "allowEmptyValue": false, + "schema": { + "type": "string", + "enum": [ + "json", + "json2", + "jsonp", + "csv", + "tsv", + "tsv-excel", + "ssv", + "ssvcomma", + "datatable", + "datasource", + "html", + "markdown", + "array", + "csvjsonarray" + ], + "default": "json2" + } + }, + "dataQueryOptions": { + "name": "options", + "in": "query", + "description": "Options that affect data generation.\n* `jsonwrap` - Wrap the output in a JSON object with metadata about the query.\n* `raw` - change the output so that it is aggregatable across multiple such queries. Supported by `/api/v2` data queries and `json2` format.\n* `minify` - Remove unnecessary spaces and newlines from the output.\n* `debug` - Provide additional information in `jsonwrap` output to help tracing issues.\n* `nonzero` - Do not return dimensions that all their values are zero, to improve the visual appearance of charts. They will still be returned if all the dimensions are entirely zero.\n* `null2zero` - Replace `null` values with `0`.\n* `absolute` or `abs` - Traditionally Netdata returns select dimensions negative to improve visual appearance. This option turns this feature off.\n* `display-absolute` - Only used by badges, to do color calculation using the signed value, but render the value without a sign.\n* `flip` or `reversed` - Order the timestamps array in reverse order (newest to oldest).\n* `min2max` - When flattening multi-dimensional data into a single metric format, use `max - min` instead of `sum`. This is EOL - use `/api/v2` to control aggregation across dimensions.\n* `percentage` - Convert all values into a percentage vs the row total. When enabled, Netdata will query all dimensions, even the ones that have not been selected or are hidden, to find the row total, in order to calculate the percentage of each dimension selected.\n* `seconds` - Output timestamps in seconds instead of dates.\n* `milliseconds` or `ms` - Output timestamps in milliseconds instead of dates.\n* `unaligned` - by default queries are aligned to the the view, so that as time passes past data returned do not change. When a data query will not be used for visualization, `unaligned` can be given to avoid aligning the query time-frame for visual precision.\n* `match-ids`, `match-names`. By default filters match both IDs and names when they are available. Setting either of the two options will disable the other.\n* `anomaly-bit` - query the anomaly information instead of metric values. This is EOL, use `/api/v2` and `json2` format which always returns this information and many more.\n* `jw-anomaly-rates` - return anomaly rates as a separate result set in the same `json` format response. This is EOL, use `/api/v2` and `json2` format which always returns information and many more. \n* `details` - `/api/v2/data` returns in `jsonwrap` the full tree of dimensions that have been matched by the query.\n* `group-by-labels` - `/api/v2/data` returns in `jsonwrap` flattened labels per output dimension. These are used to identify the instances that have been aggregated into each dimension, making it possible to provide a map, like Netdata does for Kubernetes.\n* `natural-points` - return timestamps as found in the database. The result is again fixed-step, but the query engine attempts to align them with the timestamps found in the database.\n* `virtual-points` - return timestamps independent of the database alignment. This is needed aggregating data across multiple Netdata agents, to ensure that their outputs do not need to be interpolated to be merged.\n* `selected-tier` - use data exclusively from the selected tier given with the `tier` parameter. This option is set automatically when the `tier` parameter is set.\n* `all-dimensions` - In `/api/v1` `jsonwrap` include metadata for all candidate metrics examined. In `/api/v2` this is standard behavior and no option is needed.\n* `label-quotes` - In `csv` output format, enclose each header label in quotes.\n* `objectrows` - Each row of value should be an object, not an array (only for `json` format).\n* `google_json` - Comply with google JSON/JSONP specs (only for `json` format).\n", + "required": false, + "allowEmptyValue": false, + "schema": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "jsonwrap", + "raw", + "minify", + "debug", + "nonzero", + "null2zero", + "abs", + "absolute", + "display-absolute", + "flip", + "reversed", + "min2max", + "percentage", + "seconds", + "ms", + "milliseconds", + "unaligned", + "match-ids", + "match-names", + "anomaly-bit", + "jw-anomaly-rates", + "details", + "group-by-labels", + "natural-points", + "virtual-points", + "selected-tier", + "all-dimensions", + "label-quotes", + "objectrows", + "google_json" + ] + }, + "default": [ + "seconds", + "jsonwrap" + ] + } + }, + "dataTimeGroup1": { + "name": "group", + "in": "query", + "description": "Time aggregation function. If multiple collected values are to be grouped in order to return fewer points, this parameters defines the method of grouping. If the `absolute` option is set, the values are turned positive before applying this calculation.\n", + "required": false, + "schema": { + "type": "string", + "enum": [ + "min", + "max", + "avg", + "average", + "median", + "stddev", + "sum", + "incremental-sum", + "ses", + "des", + "cv", + "countif", + "percentile", + "percentile25", + "percentile50", + "percentile75", + "percentile80", + "percentile90", + "percentile95", + "percentile97", + "percentile98", + "percentile99", + "trimmed-mean", + "trimmed-mean1", + "trimmed-mean2", + "trimmed-mean3", + "trimmed-mean5", + "trimmed-mean10", + "trimmed-mean15", + "trimmed-mean20", + "trimmed-mean25", + "trimmed-median", + "trimmed-median1", + "trimmed-median2", + "trimmed-median3", + "trimmed-median5", + "trimmed-median10", + "trimmed-median15", + "trimmed-median20", + "trimmed-median25" + ], + "default": "average" + } + }, + "dataTimeGroup2": { + "name": "time_group", + "in": "query", + "description": "Time aggregation function. If multiple collected values are to be grouped in order to return fewer points, this parameters defines the method of grouping. If the `absolute` option is set, the values are turned positive before applying this calculation.\n", + "required": false, + "schema": { + "type": "string", + "enum": [ + "min", + "max", + "avg", + "average", + "median", + "stddev", + "sum", + "incremental-sum", + "ses", + "des", + "cv", + "countif", + "percentile", + "percentile25", + "percentile50", + "percentile75", + "percentile80", + "percentile90", + "percentile95", + "percentile97", + "percentile98", + "percentile99", + "trimmed-mean", + "trimmed-mean1", + "trimmed-mean2", + "trimmed-mean3", + "trimmed-mean5", + "trimmed-mean10", + "trimmed-mean15", + "trimmed-mean20", + "trimmed-mean25", + "trimmed-median", + "trimmed-median1", + "trimmed-median2", + "trimmed-median3", + "trimmed-median5", + "trimmed-median10", + "trimmed-median15", + "trimmed-median20", + "trimmed-median25" + ], + "default": "average" + } + }, + "dataTimeGroupOptions1": { + "name": "group_options", + "in": "query", + "description": "When the time grouping function supports additional parameters, this field can be used to pass them to it. Currently `countif`, `trimmed-mean`, `trimmed-median` and `percentile` support this. For `countif` the string may start with `<`, `<=`, `<:`, `<>`, `!=`, `>`, `>=`, `>:`. For all others just a number is expected.\n", + "required": false, + "schema": { + "type": "string" + } + }, + "dataTimeGroupOptions2": { + "name": "time_group_options", + "in": "query", + "description": "When the time grouping function supports additional parameters, this field can be used to pass them to it. Currently `countif`, `trimmed-mean`, `trimmed-median` and `percentile` support this. For `countif` the string may start with `<`, `<=`, `<:`, `<>`, `!=`, `>`, `>=`, `>:`. For all others just a number is expected.\n", + "required": false, + "schema": { + "type": "string" + } + }, + "dataTimeResampling1": { + "name": "gtime", + "in": "query", + "description": "The grouping number of seconds. This is used in conjunction with group=average to change the units of metrics (ie when the data is per-second, setting gtime=60 will turn them to per-minute).\n", + "required": false, + "allowEmptyValue": false, + "schema": { + "type": "number", + "format": "integer", + "default": 0 + } + }, + "dataTimeResampling2": { + "name": "time_resampling", + "in": "query", + "description": "For incremental values that are \"per second\", this value is used to resample them to \"per minute` (60) or \"per hour\" (3600). It can only be used in conjunction with group=average.\n", + "required": false, + "schema": { + "type": "number", + "format": "integer", + "default": 0 + } + }, + "timeoutMS": { + "name": "timeout", + "in": "query", + "description": "Specify a timeout value in milliseconds after which the agent will abort the query and return a 503 error. A value of 0 indicates no timeout.\n", + "required": false, + "schema": { + "type": "number", + "format": "integer", + "default": 0 + } + }, + "timeoutSecs": { + "name": "timeout", + "in": "query", + "description": "Specify a timeout value in seconds after which the agent will abort the query and return a 504 error. A value of 0 indicates no timeout, but some endpoints, like `weights`, do not accept infinite timeouts (they have a predefined default), so to disable the timeout it must be set to a really high value.\n", + "required": false, + "schema": { + "type": "number", + "format": "integer", + "default": 0 + } + }, + "before": { + "name": "before", + "in": "query", + "description": "`after` and `before` define the time-frame of a query. `before` can be a negative number of seconds, up to 3 years (-94608000), relative to current clock. If not set, it is assumed to be the current clock time. When `before` is positive, it is assumed to be a unix epoch timestamp. When non-data endpoints support the `after` and `before`, they use the time-frame to limit their response for objects having data retention within the time-frame given.\n", + "required": false, + "schema": { + "type": "integer", + "default": 0 + } + }, + "after": { + "name": "after", + "in": "query", + "description": "`after` and `before` define the time-frame of a query. `after` can be a negative number of seconds, up to 3 years (-94608000), relative to `before`. If not set, it is usually assumed to be -600. When non-data endpoints support the `after` and `before`, they use the time-frame to limit their response for objects having data retention within the time-frame given.\n", + "required": false, + "schema": { + "type": "integer", + "default": -600 + } + }, + "baselineBefore": { + "name": "baseline_before", + "in": "query", + "description": "`baseline_after` and `baseline_before` define the baseline time-frame of a comparative query. `baseline_before` can be a negative number of seconds, up to 3 years (-94608000), relative to current clock. If not set, it is assumed to be the current clock time. When `baseline_before` is positive, it is assumed to be a unix epoch timestamp.\n", + "required": false, + "schema": { + "type": "integer", + "default": 0 + } + }, + "baselineAfter": { + "name": "baseline_after", + "in": "query", + "description": "`baseline_after` and `baseline_before` define the baseline time-frame of a comparative query. `baseline_after` can be a negative number of seconds, up to 3 years (-94608000), relative to `baseline_before`. If not set, it is usually assumed to be -300.\n", + "required": false, + "schema": { + "type": "integer", + "default": -600 + } + }, + "points": { + "name": "points", + "in": "query", + "description": "The number of points to be returned. If not given, or it is <= 0, or it is bigger than the points stored in the database for the given duration, all the available collected values for the given duration will be returned. For `weights` endpoints that do statistical analysis, the `points` define the detail of this analysis (the default is 500).\n", + "required": false, + "schema": { + "type": "number", + "format": "integer", + "default": 0 + } + }, + "tier": { + "name": "tier", + "in": "query", + "description": "Use only the given dbengine tier for executing the query. Setting this parameters automatically sets the option `selected-tier` for the query.\n", + "required": false, + "schema": { + "type": "number", + "format": "integer" + } + }, + "callback": { + "name": "callback", + "in": "query", + "description": "For JSONP responses, the callback function name.\n", + "required": false, + "schema": { + "type": "string" + } + }, + "filename": { + "name": "filename", + "in": "query", + "description": "Add `Content-Disposition: attachment; filename=` header to the response, that will instruct the browser to save the response with the given filename.\"\n", + "required": false, + "schema": { + "type": "string" + } + }, + "tqx": { + "name": "tqx", + "in": "query", + "description": "[Google Visualization API](https://developers.google.com/chart/interactive/docs/dev/implementing_data_source?hl=en) formatted parameter.\n", + "required": false, + "schema": { + "type": "string" + } + }, + "contextOptions1": { + "name": "options", + "in": "query", + "description": "Options that affect data generation.", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "full", + "all", + "charts", + "dimensions", + "labels", + "uuids", + "queue", + "flags", + "deleted", + "deepscan" + ] + } + } + }, + "chart": { + "name": "chart", + "in": "query", + "description": "The id of the chart as returned by the `/api/v1/charts` call.", + "required": false, + "allowEmptyValue": false, + "schema": { + "type": "string", + "format": "as returned by `/api/v1/charts`" + } + }, + "context": { + "name": "context", + "in": "query", + "description": "The context of the chart as returned by the /charts call.", + "required": false, + "allowEmptyValue": false, + "schema": { + "type": "string", + "format": "as returned by /charts" + } + }, + "dimension": { + "name": "dimension", + "in": "query", + "description": "Zero, one or more dimension ids or names, as returned by the /chart call, separated with comma or pipe. Netdata simple patterns are supported.", + "required": false, + "allowEmptyValue": false, + "schema": { + "type": "array", + "items": { + "type": "string", + "format": "as returned by /charts" + } + } + }, + "dimensions": { + "name": "dimensions", + "in": "query", + "description": "a simple pattern matching dimensions (use comma or pipe as separator)", + "required": false, + "allowEmptyValue": true, + "schema": { + "type": "string" + } + }, + "chart_label_key": { + "name": "chart_label_key", + "in": "query", + "description": "Specify the chart label keys that need to match for context queries as comma separated values. At least one matching key is needed to match the corresponding chart.\n", + "required": false, + "allowEmptyValue": false, + "schema": { + "type": "string", + "format": "key1,key2,key3" + } + }, + "chart_labels_filter": { + "name": "chart_labels_filter", + "in": "query", + "description": "Specify the chart label keys and values to match for context queries. All keys/values need to match for the chart to be included in the query. The labels are specified as key1:value1,key2:value2\n", + "required": false, + "allowEmptyValue": false, + "schema": { + "type": "string", + "format": "key1:value1,key2:value2,key3:value3" + } + }, + "weightMethods": { + "name": "method", + "in": "query", + "description": "The weighting / scoring algorithm.", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ks2", + "volume", + "anomaly-rate", + "value" + ] + } + } }, - "/metric_correlations": { - "get": { - "summary": "Analyze all the metrics to find their correlations", - "description": "THIS ENDPOINT IS OBSOLETE. Use the /weights endpoint. Given two time-windows (baseline, highlight), it goes through all the available metrics, querying both windows and tries to find how these two windows relate to each other. It supports multiple algorithms to do so. The result is a list of all metrics evaluated, weighted for 0.0 (the two windows are more different) to 1.0 (the two windows are similar). The algorithm adjusts automatically the baseline window to be a power of two multiple of the highlighted (1, 2, 4, 8, etc).", - "parameters": [ - { - "name": "baseline_after", - "in": "query", - "description": "This parameter can either be an absolute timestamp specifying the starting point of baseline window, or a relative number of seconds (negative, relative to parameter baseline_before). Netdata will assume it is a relative number if it is less that 3 years (in seconds).", - "required": false, - "allowEmptyValue": false, - "schema": { - "type": "number", - "format": "integer", - "default": -300 - } + "schemas": { + "info": { + "type": "object", + "properties": { + "version": { + "type": "string", + "description": "netdata version of the server.", + "example": "1.11.1_rolling" }, - { - "name": "baseline_before", - "in": "query", - "description": "This parameter can either be an absolute timestamp specifying the ending point of the baseline window, or a relative number of seconds (negative), relative to the last collected timestamp. Netdata will assume it is a relative number if it is less than 3 years (in seconds).", - "required": false, - "schema": { - "type": "number", - "format": "integer", - "default": -60 - } + "uid": { + "type": "string", + "description": "netdata unique id of the server.", + "example": "24e9fe3c-f2ac-11e8-bafc-0242ac110002" }, - { - "name": "after", - "in": "query", - "description": "This parameter can either be an absolute timestamp specifying the starting point of highlighted window, or a relative number of seconds (negative, relative to parameter highlight_before). Netdata will assume it is a relative number if it is less that 3 years (in seconds).", - "required": false, - "allowEmptyValue": false, - "schema": { - "type": "number", - "format": "integer", - "default": -60 - } + "mirrored_hosts": { + "type": "array", + "description": "List of hosts mirrored of the server (include itself).", + "items": { + "type": "string" + }, + "example": [ + "host1.example.com", + "host2.example.com" + ] }, - { - "name": "before", - "in": "query", - "description": "This parameter can either be an absolute timestamp specifying the ending point of the highlighted window, or a relative number of seconds (negative), relative to the last collected timestamp. Netdata will assume it is a relative number if it is less than 3 years (in seconds).", - "required": false, - "schema": { - "type": "number", - "format": "integer", - "default": 0 + "mirrored_hosts_status": { + "type": "array", + "description": "List of details of hosts mirrored to this served (including self). Indexes correspond to indexes in \"mirrored_hosts\".", + "items": { + "type": "object", + "description": "Host data", + "properties": { + "guid": { + "type": "string", + "format": "uuid", + "nullable": false, + "description": "Host unique GUID from `netdata.public.unique.id`.", + "example": "245e4bff-3b34-47c1-a6e5-5c535a9abfb2" + }, + "reachable": { + "type": "boolean", + "nullable": false, + "description": "Current state of streaming. Always true for localhost/self." + }, + "claim_id": { + "type": "string", + "format": "uuid", + "nullable": true, + "description": "Cloud GUID/identifier in case the host is claimed. If child status unknown or unclaimed this field is set to `null`", + "example": "c3b2a66a-3052-498c-ac52-7fe9e8cccb0c" + } + } } }, - { - "name": "points", - "in": "query", - "description": "The number of points to be evaluated for the highlighted window. The baseline window will be adjusted automatically to receive a proportional amount of points.", - "required": false, - "allowEmptyValue": false, - "schema": { - "type": "number", - "format": "integer", - "default": 500 - } + "os_name": { + "type": "string", + "description": "Operating System Name.", + "example": "Manjaro Linux" }, - { - "name": "method", - "in": "query", - "description": "the algorithm to run", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ks2", - "volume" - ], - "default": "ks2" - } + "os_id": { + "type": "string", + "description": "Operating System ID.", + "example": "manjaro" }, - { - "name": "timeout", - "in": "query", - "description": "Cancel the query if to takes more that this amount of milliseconds.", - "required": false, - "allowEmptyValue": false, - "schema": { - "type": "number", - "format": "integer", - "default": 60000 - } + "os_id_like": { + "type": "string", + "description": "Known OS similar to this OS.", + "example": "arch" }, - { - "name": "options", - "in": "query", - "description": "Options that affect data generation.", - "required": false, - "allowEmptyValue": false, - "schema": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "min2max", - "abs", - "absolute", - "absolute-sum", - "null2zero", - "percentage", - "unaligned", - "allow_past", - "nonzero", - "anomaly-bit", - "raw" - ] - }, - "default": [ - "null2zero", - "allow_past", - "nonzero", - "unaligned" - ] - } - }, - { - "name": "group", - "in": "query", - "description": "The grouping method. If multiple collected values are to be grouped in order to return fewer points, this parameters defines the method of grouping. methods supported \"min\", \"max\", \"average\", \"sum\", \"incremental-sum\". \"max\" is actually calculated on the absolute value collected (so it works for both positive and negative dimensions to return the most extreme value in either direction).", - "required": true, - "allowEmptyValue": false, - "schema": { - "type": "string", - "enum": [ - "min", - "max", - "average", - "median", - "stddev", - "sum", - "incremental-sum", - "ses", - "des", - "cv", - "countif", - "percentile", - "percentile25", - "percentile50", - "percentile75", - "percentile80", - "percentile90", - "percentile95", - "percentile97", - "percentile98", - "percentile99", - "trimmed-mean", - "trimmed-mean1", - "trimmed-mean2", - "trimmed-mean3", - "trimmed-mean5", - "trimmed-mean10", - "trimmed-mean15", - "trimmed-mean20", - "trimmed-mean25", - "trimmed-median", - "trimmed-median1", - "trimmed-median2", - "trimmed-median3", - "trimmed-median5", - "trimmed-median10", - "trimmed-median15", - "trimmed-median20", - "trimmed-median25" - ], - "default": "average" - } - }, - { - "name": "group_options", - "in": "query", - "description": "When the group function supports additional parameters, this field can be used to pass them to it. Currently only \"countif\" supports this.", - "required": false, - "allowEmptyValue": false, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "JSON object with weights for each chart and dimension.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/metric_correlations" - } - } - } + "os_version": { + "type": "string", + "description": "Operating System Version.", + "example": "18.0.4" }, - "400": { - "description": "The given parameters are invalid." + "os_version_id": { + "type": "string", + "description": "Operating System Version ID.", + "example": "unknown" }, - "403": { - "description": "metrics correlations are not enabled on this Netdata Agent." + "os_detection": { + "type": "string", + "description": "OS parameters detection method.", + "example": "Mixed" }, - "404": { - "description": "No charts could be found, or the method that correlated the metrics did not produce any result." + "kernel_name": { + "type": "string", + "description": "Kernel Name.", + "example": "Linux" }, - "504": { - "description": "Timeout - the query took too long and has been cancelled." - } - } - } - }, - "/function": { - "get": { - "summary": "Execute a collector function.", - "parameters": [ - { - "name": "function", - "in": "query", - "description": "The name of the function, as returned by the collector.", - "required": true, - "allowEmptyValue": false, - "schema": { - "type": "string" - } + "kernel_version": { + "type": "string", + "description": "Kernel Version.", + "example": "4.19.32-1-MANJARO" }, - { - "name": "timeout", - "in": "query", - "description": "The timeout in seconds to wait for the function to complete.", - "required": false, - "schema": { - "type": "number", - "format": "integer", - "default": 10 - } - } - ], - "responses": { - "200": { - "description": "The collector function has been executed successfully. Each collector may return a different type of content." + "is_k8s_node": { + "type": "boolean", + "description": "Netdata is running on a K8s node.", + "example": false }, - "400": { - "description": "The request was rejected by the collector." + "architecture": { + "type": "string", + "description": "Kernel architecture.", + "example": "x86_64" }, - "404": { - "description": "The requested function is not found." + "virtualization": { + "type": "string", + "description": "Virtualization Type.", + "example": "kvm" }, - "500": { - "description": "Other internal error, getting this error means there is a bug in Netdata." + "virt_detection": { + "type": "string", + "description": "Virtualization detection method.", + "example": "systemd-detect-virt" }, - "503": { - "description": "The collector to execute the function is not currently available." + "container": { + "type": "string", + "description": "Container technology.", + "example": "docker" }, - "504": { - "description": "Timeout while waiting for the collector to execute the function." + "container_detection": { + "type": "string", + "description": "Container technology detection method.", + "example": "dockerenv" }, - "591": { - "description": "The collector sent a response, but it was invalid or corrupted." - } - } - } - }, - "/functions": { - "get": { - "summary": "Get a list of all registered collector functions.", - "description": "Collector functions are programs that can be executed on demand.", - "responses": { - "200": { - "description": "A JSON object containing one object per supported function." - } - } - } - }, - "/weights": { - "get": { - "summary": "Analyze all the metrics using an algorithm and score them accordingly", - "description": "This endpoint goes through all metrics and scores them according to an algorithm.", - "parameters": [ - { - "name": "baseline_after", - "in": "query", - "description": "This parameter can either be an absolute timestamp specifying the starting point of baseline window, or a relative number of seconds (negative, relative to parameter baseline_before). Netdata will assume it is a relative number if it is less that 3 years (in seconds). This parameter is used in KS2 and VOLUME algorithms.", - "required": false, - "allowEmptyValue": false, - "schema": { - "type": "number", - "format": "integer", - "default": -300 - } + "stream_compression": { + "type": "boolean", + "description": "Stream transmission compression method.", + "example": true }, - { - "name": "baseline_before", - "in": "query", - "description": "This parameter can either be an absolute timestamp specifying the ending point of the baseline window, or a relative number of seconds (negative), relative to the last collected timestamp. Netdata will assume it is a relative number if it is less than 3 years (in seconds). This parameter is used in KS2 and VOLUME algorithms.", - "required": false, - "schema": { - "type": "number", - "format": "integer", - "default": -60 + "labels": { + "type": "object", + "description": "List of host labels.", + "properties": { + "app": { + "type": "string", + "description": "Host label.", + "example": "netdata" + } } }, - { - "name": "after", - "in": "query", - "description": "This parameter can either be an absolute timestamp specifying the starting point of highlighted window, or a relative number of seconds (negative, relative to parameter highlight_before). Netdata will assume it is a relative number if it is less that 3 years (in seconds).", - "required": false, - "allowEmptyValue": false, - "schema": { - "type": "number", - "format": "integer", - "default": -60 + "collectors": { + "type": "array", + "items": { + "type": "object", + "description": "Array of collector plugins and modules.", + "properties": { + "plugin": { + "type": "string", + "description": "Collector plugin.", + "example": "python.d.plugin" + }, + "module": { + "type": "string", + "description": "Module of the collector plugin.", + "example": "dockerd" + } + } } }, - { - "name": "before", - "in": "query", - "description": "This parameter can either be an absolute timestamp specifying the ending point of the highlighted window, or a relative number of seconds (negative), relative to the last collected timestamp. Netdata will assume it is a relative number if it is less than 3 years (in seconds).", - "required": false, - "schema": { - "type": "number", - "format": "integer", - "default": 0 + "alarms": { + "type": "object", + "description": "Number of alarms in the server.", + "properties": { + "normal": { + "type": "integer", + "description": "Number of alarms in normal state." + }, + "warning": { + "type": "integer", + "description": "Number of alarms in warning state." + }, + "critical": { + "type": "integer", + "description": "Number of alarms in critical state." + } } + } + } + }, + "chart_summary": { + "type": "object", + "properties": { + "hostname": { + "type": "string", + "description": "The hostname of the netdata server." }, - { - "name": "context", - "in": "query", - "description": "A simple pattern matching the contexts to evaluate.", - "required": false, - "allowEmptyValue": false, - "schema": { - "type": "string" - } + "version": { + "type": "string", + "description": "netdata version of the server." }, - { - "name": "points", - "in": "query", - "description": "The number of points to be evaluated for the highlighted window. The baseline window will be adjusted automatically to receive a proportional amount of points. This parameter is only used by the KS2 algorithm.", - "required": false, - "allowEmptyValue": false, - "schema": { - "type": "number", - "format": "integer", - "default": 500 - } + "release_channel": { + "type": "string", + "description": "The release channel of the build on the server.", + "example": "nightly" }, - { - "name": "method", - "in": "query", - "description": "the algorithm to run", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ks2", - "volume", - "anomaly-rate" - ], - "default": "anomaly-rate" - } + "timezone": { + "type": "string", + "description": "The current timezone on the server." }, - { - "name": "tier", - "in": "query", - "description": "Use the specified database tier", - "required": false, - "allowEmptyValue": false, - "schema": { - "type": "number", - "format": "integer" - } + "os": { + "type": "string", + "description": "The netdata server host operating system.", + "enum": [ + "macos", + "linux", + "freebsd" + ] }, - { - "name": "timeout", - "in": "query", - "description": "Cancel the query if to takes more that this amount of milliseconds.", - "required": false, - "allowEmptyValue": false, - "schema": { - "type": "number", - "format": "integer", - "default": 60000 - } + "history": { + "type": "number", + "description": "The duration, in seconds, of the round robin database maintained by netdata." }, - { - "name": "options", - "in": "query", - "description": "Options that affect data generation.", - "required": false, - "allowEmptyValue": false, - "schema": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "min2max", - "abs", - "absolute", - "absolute-sum", - "null2zero", - "percentage", - "unaligned", - "nonzero", - "anomaly-bit", - "raw" - ] - }, - "default": [ - "null2zero", - "nonzero", - "unaligned" - ] - } + "memory_mode": { + "type": "string", + "description": "The name of the database memory mode on the server." }, - { - "name": "group", - "in": "query", - "description": "The grouping method. If multiple collected values are to be grouped in order to return fewer points, this parameters defines the method of grouping. methods supported \"min\", \"max\", \"average\", \"sum\", \"incremental-sum\". \"max\" is actually calculated on the absolute value collected (so it works for both positive and negative dimensions to return the most extreme value in either direction).", - "required": true, - "allowEmptyValue": false, - "schema": { - "type": "string", - "enum": [ - "min", - "max", - "average", - "median", - "stddev", - "sum", - "incremental-sum", - "ses", - "des", - "cv", - "countif", - "percentile", - "percentile25", - "percentile50", - "percentile75", - "percentile80", - "percentile90", - "percentile95", - "percentile97", - "percentile98", - "percentile99", - "trimmed-mean", - "trimmed-mean1", - "trimmed-mean2", - "trimmed-mean3", - "trimmed-mean5", - "trimmed-mean10", - "trimmed-mean15", - "trimmed-mean20", - "trimmed-mean25", - "trimmed-median", - "trimmed-median1", - "trimmed-median2", - "trimmed-median3", - "trimmed-median5", - "trimmed-median10", - "trimmed-median15", - "trimmed-median20", - "trimmed-median25" - ], - "default": "average" - } + "update_every": { + "type": "number", + "description": "The default update frequency of the netdata server. All charts have an update frequency equal or bigger than this." }, - { - "name": "group_options", - "in": "query", - "description": "When the group function supports additional parameters, this field can be used to pass them to it. Currently only \"countif\" supports this.", - "required": false, - "allowEmptyValue": false, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "JSON object with weights for each context, chart and dimension.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/weights" - } - } + "charts": { + "type": "object", + "description": "An object containing all the chart objects available at the netdata server. This is used as an indexed array. The key of each chart object is the id of the chart.", + "additionalProperties": { + "$ref": "#/components/schemas/chart" } }, - "400": { - "description": "The given parameters are invalid." + "charts_count": { + "type": "number", + "description": "The number of charts." }, - "403": { - "description": "metrics correlations are not enabled on this Netdata Agent." + "dimensions_count": { + "type": "number", + "description": "The total number of dimensions." }, - "404": { - "description": "No charts could be found, or the method that correlated the metrics did not produce any result." + "alarms_count": { + "type": "number", + "description": "The number of alarms." }, - "504": { - "description": "Timeout - the query took too long and has been cancelled." + "rrd_memory_bytes": { + "type": "number", + "description": "The size of the round robin database in bytes." } } - } - } - }, - "servers": [ - { - "url": "https://registry.my-netdata.io/api/v1" - }, - { - "url": "http://registry.my-netdata.io/api/v1" - } - ], - "components": { - "schemas": { - "info": { + }, + "chart": { "type": "object", "properties": { - "version": { - "type": "string", - "description": "netdata version of the server.", - "example": "1.11.1_rolling" - }, - "uid": { - "type": "string", - "description": "netdata unique id of the server.", - "example": "24e9fe3c-f2ac-11e8-bafc-0242ac110002" - }, - "mirrored_hosts": { - "type": "array", - "description": "List of hosts mirrored of the server (include itself).", - "items": { - "type": "string" - }, - "example": [ - "host1.example.com", - "host2.example.com" - ] - }, - "mirrored_hosts_status": { - "type": "array", - "description": "List of details of hosts mirrored to this served (including self). Indexes correspond to indexes in \"mirrored_hosts\".", - "items": { - "type": "object", - "description": "Host data", - "properties": { - "guid": { - "type": "string", - "format": "uuid", - "nullable": false, - "description": "Host unique GUID from `netdata.public.unique.id`.", - "example": "245e4bff-3b34-47c1-a6e5-5c535a9abfb2" - }, - "reachable": { - "type": "boolean", - "nullable": false, - "description": "Current state of streaming. Always true for localhost/self." - }, - "claim_id": { - "type": "string", - "format": "uuid", - "nullable": true, - "description": "Cloud GUID/identifier in case the host is claimed. If child status unknown or unclaimed this field is set to `null`", - "example": "c3b2a66a-3052-498c-ac52-7fe9e8cccb0c" - } - } - } - }, - "os_name": { - "type": "string", - "description": "Operating System Name.", - "example": "Manjaro Linux" - }, - "os_id": { - "type": "string", - "description": "Operating System ID.", - "example": "manjaro" - }, - "os_id_like": { + "id": { "type": "string", - "description": "Known OS similar to this OS.", - "example": "arch" + "description": "The unique id of the chart." }, - "os_version": { + "name": { "type": "string", - "description": "Operating System Version.", - "example": "18.0.4" + "description": "The name of the chart." }, - "os_version_id": { + "type": { "type": "string", - "description": "Operating System Version ID.", - "example": "unknown" + "description": "The type of the chart. Types are not handled by netdata. You can use this field for anything you like." }, - "os_detection": { + "family": { "type": "string", - "description": "OS parameters detection method.", - "example": "Mixed" + "description": "The family of the chart. Families are not handled by netdata. You can use this field for anything you like." }, - "kernel_name": { + "title": { "type": "string", - "description": "Kernel Name.", - "example": "Linux" + "description": "The title of the chart." }, - "kernel_version": { - "type": "string", - "description": "Kernel Version.", - "example": "4.19.32-1-MANJARO" + "priority": { + "type": "number", + "description": "The relative priority of the chart. Netdata does not care about priorities. This is just an indication of importance for the chart viewers to sort charts of higher priority (lower number) closer to the top. Priority sorting should only be used among charts of the same type or family." }, - "is_k8s_node": { + "enabled": { "type": "boolean", - "description": "Netdata is running on a K8s node.", - "example": false + "description": "True when the chart is enabled. Disabled charts do not currently collect values, but they may have historical values available." }, - "architecture": { + "units": { "type": "string", - "description": "Kernel architecture.", - "example": "x86_64" + "description": "The unit of measurement for the values of all dimensions of the chart." }, - "virtualization": { + "data_url": { "type": "string", - "description": "Virtualization Type.", - "example": "kvm" + "description": "The absolute path to get data values for this chart. You are expected to use this path as the base when constructing the URL to fetch data values for this chart." }, - "virt_detection": { + "chart_type": { "type": "string", - "description": "Virtualization detection method.", - "example": "systemd-detect-virt" + "description": "The chart type.", + "enum": [ + "line", + "area", + "stacked" + ] }, - "container": { - "type": "string", - "description": "Container technology.", - "example": "docker" + "duration": { + "type": "number", + "description": "The duration, in seconds, of the round robin database maintained by netdata." }, - "container_detection": { - "type": "string", - "description": "Container technology detection method.", - "example": "dockerenv" + "first_entry": { + "type": "number", + "description": "The UNIX timestamp of the first entry (the oldest) in the round robin database." }, - "stream_compression": { - "type": "boolean", - "description": "Stream transmission compression method.", - "example": true + "last_entry": { + "type": "number", + "description": "The UNIX timestamp of the latest entry in the round robin database." }, - "labels": { + "update_every": { + "type": "number", + "description": "The update frequency of this chart, in seconds. One value every this amount of time is kept in the round robin database." + }, + "dimensions": { + "type": "object", + "description": "An object containing all the chart dimensions available for the chart. This is used as an indexed array. For each pair in the dictionary: the key is the id of the dimension and the value is a dictionary containing the name.\"\n", + "additionalProperties": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "The name of the dimension" + } + } + } + }, + "chart_variables": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/chart_variables" + } + }, + "green": { + "type": "number", + "nullable": true, + "description": "Chart health green threshold." + }, + "red": { + "type": "number", + "nullable": true, + "description": "Chart health red threshold." + } + } + }, + "context_summary": { + "type": "object", + "properties": { + "hostname": { + "type": "string", + "description": "The hostname of the netdata server." + }, + "machine_guid": { + "type": "string", + "description": "The unique installation id of this netdata server." + }, + "node_id": { + "type": "string", + "description": "The unique node id of this netdata server at the hub.", + "example": "nightly" + }, + "claim_id": { + "type": "string", + "description": "The unique handshake id of this netdata server and the hub." + }, + "host_labels": { + "type": "object", + "description": "The host labels associated with this netdata server." + }, + "context": { + "type": "object", + "description": "An object containing all the context objects available at the netdata server. This is used as an indexed array. The key of each context object is the id of the context.", + "additionalProperties": { + "$ref": "#/components/schemas/context" + } + } + } + }, + "context": { + "type": "object", + "properties": { + "version": { + "type": "string", + "description": "The version of this context. The number are not sequential, but bigger numbers depict a newer object." + }, + "hub_version": { + "type": "string", + "description": "The version of this context, as known by hub." + }, + "family": { + "type": "string", + "description": "The family of the context. When multiple charts of a context have different families, the netdata server replaces the different parts with [x], so that the context can have only one family." + }, + "title": { + "type": "string", + "description": "The title of the context. When multiple charts of a context have different titles, the netdata server replaces the different parts with [x], so that the context can have only one title." + }, + "priority": { + "type": "number", + "description": "The relative priority of the context. When multiple contexts have different priorities, the minimum among them is selected as the priority of the context." + }, + "units": { + "type": "string", + "description": "The unit of measurement for the values of all dimensions of the context. If multiple charts of context have different units, the latest collected is selected." + }, + "chart_type": { + "type": "string", + "description": "The chart type.", + "enum": [ + "line", + "area", + "stacked" + ] + }, + "first_time_t": { + "type": "number", + "description": "The UNIX timestamp of the first entry (the oldest) in the database." + }, + "last_time_t": { + "type": "number", + "description": "The UNIX timestamp of the latest entry in the database." + }, + "charts": { + "type": "object", + "description": "An object containing all the charts available for the chart. This is used as an indexed array. For each pair in the dictionary, the key is the id of the chart and the value provides all details about the chart." + } + } + }, + "alarm_variables": { + "type": "object", + "properties": { + "chart": { + "type": "string", + "description": "The unique id of the chart." + }, + "chart_name": { + "type": "string", + "description": "The name of the chart." + }, + "cnart_context": { + "type": "string", + "description": "The context of the chart. It is shared across multiple monitored software or hardware instances and used in alarm templates." + }, + "family": { + "type": "string", + "description": "The family of the chart." + }, + "host": { + "type": "string", + "description": "The host containing the chart." + }, + "chart_variables": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/chart_variables" + } + }, + "family_variables": { "type": "object", - "description": "List of host labels.", "properties": { - "app": { - "type": "string", - "description": "Host label.", - "example": "netdata" + "varname1": { + "type": "number", + "format": "float" + }, + "varname2": { + "type": "number", + "format": "float" } } }, - "collectors": { + "host_variables": { + "type": "object", + "properties": { + "varname1": { + "type": "number", + "format": "float" + }, + "varname2": { + "type": "number", + "format": "float" + } + } + } + } + }, + "chart_variables": { + "type": "object", + "properties": { + "varname1": { + "type": "number", + "format": "float" + }, + "varname2": { + "type": "number", + "format": "float" + } + } + }, + "jsonwrap2": { + "description": "Data response with `format=json2`\n", + "type": "object", + "properties": { + "api": { + "$ref": "#/components/schemas/api" + }, + "agents": { + "$ref": "#/components/schemas/agents" + }, + "versions": { + "$ref": "#/components/schemas/versions" + }, + "summary": { + "description": "Summarized information about nodes, contexts, instances, labels, alerts, and dimensions. The items returned are determined by the scope of the query only, however the statistical data in them are influenced by the filters of the query. Using this information the dashboard allows users to slice and dice the data by filtering and grouping.\n", + "type": "object", + "properties": { + "nodes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/nodeWithDataStatistics" + } + }, + "contexts": { + "type": "array", + "items": { + "type": "object", + "description": "An object describing a unique context. `is` stands for instances, `ds` for dimensions, `al` for alerts, `sts` for statistics.\n", + "properties": { + "id": { + "description": "the context id.", + "type": "string" + }, + "is": { + "$ref": "#/components/schemas/jsonwrap2_items_count" + }, + "ds": { + "$ref": "#/components/schemas/jsonwrap2_items_count" + }, + "al": { + "$ref": "#/components/schemas/jsonwrap2_alerts_count" + }, + "sts": { + "oneOf": [ + { + "$ref": "#/components/schemas/jsonwrap2_sts" + }, + { + "$ref": "#/components/schemas/jsonwrap2_sts_raw" + } + ] + } + } + } + }, + "instances": { + "type": "array", + "items": { + "type": "object", + "description": "An object describing an instance. `ds` stands for dimensions, `al` for alerts, `sts` for statistics.\n", + "properties": { + "id": { + "description": "the id of the instance.", + "type": "string" + }, + "nm": { + "description": "the name of the instance (may be absent when it is the same with the id)", + "type": "string" + }, + "ni": { + "description": "the node index id this instance belongs to. The UI uses this to compone the fully qualified name of the instance, using the node hostname to present it to users and its machine guid to add it to filters." + }, + "ds": { + "$ref": "#/components/schemas/jsonwrap2_items_count" + }, + "al": { + "$ref": "#/components/schemas/jsonwrap2_alerts_count" + }, + "sts": { + "oneOf": [ + { + "$ref": "#/components/schemas/jsonwrap2_sts" + }, + { + "$ref": "#/components/schemas/jsonwrap2_sts_raw" + } + ] + } + } + } + }, + "dimensions": { + "type": "array", + "items": { + "type": "object", + "description": "An object describing a unique dimension. `ds` stands for `dimensions`, `sts` for statistics.\n", + "properties": { + "id": { + "description": "the id of the dimension.", + "type": "string" + }, + "nm": { + "description": "the name of the dimension (may be absent when it is the same with the id)", + "type": "string" + }, + "ds": { + "$ref": "#/components/schemas/jsonwrap2_items_count" + }, + "sts": { + "oneOf": [ + { + "$ref": "#/components/schemas/jsonwrap2_sts" + }, + { + "$ref": "#/components/schemas/jsonwrap2_sts_raw" + } + ] + } + } + } + }, + "labels": { + "type": "array", + "items": { + "type": "object", + "description": "An object describing a label key. `ds` stands for `dimensions`, `sts` for statistics.\n", + "properties": { + "id": { + "description": "the key of the label.", + "type": "string" + }, + "ds": { + "$ref": "#/components/schemas/jsonwrap2_items_count" + }, + "sts": { + "oneOf": [ + { + "$ref": "#/components/schemas/jsonwrap2_sts" + }, + { + "$ref": "#/components/schemas/jsonwrap2_sts_raw" + } + ] + }, + "vl": { + "description": "An array of values for this key.\n", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "The value string", + "type": "string" + }, + "ds": { + "$ref": "#/components/schemas/jsonwrap2_items_count" + }, + "sts": { + "oneOf": [ + { + "$ref": "#/components/schemas/jsonwrap2_sts" + }, + { + "$ref": "#/components/schemas/jsonwrap2_sts_raw" + } + ] + } + } + } + } + } + } + }, + "alerts": { + "description": "An array of all the unique alerts running, grouped by alert name (`nm` is available here)\n", + "type": "array", + "items": { + "$ref": "#/components/schemas/jsonwrap2_alerts_count" + } + } + } + }, + "totals": { + "type": "object", + "properties": { + "nodes": { + "$ref": "#/components/schemas/jsonwrap2_items_count" + }, + "contexts": { + "$ref": "#/components/schemas/jsonwrap2_items_count" + }, + "instances": { + "$ref": "#/components/schemas/jsonwrap2_items_count" + }, + "dimensions": { + "$ref": "#/components/schemas/jsonwrap2_items_count" + }, + "label_keys": { + "$ref": "#/components/schemas/jsonwrap2_items_count" + }, + "label_key_values": { + "$ref": "#/components/schemas/jsonwrap2_items_count" + } + } + }, + "functions": { "type": "array", "items": { - "type": "object", - "description": "Array of collector plugins and modules.", - "properties": { - "plugin": { - "type": "string", - "description": "Collector plugin.", - "example": "python.d.plugin" - }, - "module": { - "type": "string", - "description": "Module of the collector plugin.", - "example": "dockerd" + "type": "string" + } + }, + "db": { + "type": "object", + "properties": { + "tiers": { + "description": "The number of tiers this server is using.\n", + "type": "integer" + }, + "update_every": { + "description": "The minimum update every, in seconds, for all tiers and all metrics aggregated into this query.\n", + "type": "integer" + }, + "first_entry": { + "description": "The minimum unix epoch timestamp of the retention across all tiers for all metrics aggregated into this query.\n", + "type": "integer" + }, + "last_entry": { + "description": "The maximum unix epoch timestamp of the retention across all tier for all metrics aggregated into this query.\n", + "type": "integer" + }, + "per_tier": { + "description": "An array with information for each of the tiers available, related to this query.\n", + "type": "array", + "items": { + "type": "object", + "properties": { + "tier": { + "description": "The tier number of this tier, starting at 0.\n", + "type": "integer" + }, + "queries": { + "description": "The number of queries executed on this tier. Usually one query per metric is made, but the query may cross multiple tier, in which case more than one query per metric is made.\n", + "type": "integer" + }, + "points": { + "description": "The number of points read from this tier.\n", + "type": "integer" + }, + "update_every": { + "description": "The minimum resolution of all metrics queried on this tier.\n", + "type": "integer" + }, + "first_entry": { + "description": "The minimum unix epoch timestamp available across all metrics that used this tier. This reflects the oldest timestamp of the tier's retention.\n", + "type": "integer" + }, + "last_entry": { + "description": "The maximum unix epoch timestamp available across all metrics that used this tier. This reflects the newest timestamp of the tier's retention.\n" + } + } + } + }, + "units": { + "description": "The units of the database data\n", + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ] + }, + "dimensions": { + "type": "object", + "properties": { + "ids": { + "description": "An array with the dimension ids that uniquely identify the dimensions for this query. It is the same with `view.dimensions.ids`.\n", + "type": "array", + "items": { + "type": "string" + } + }, + "units": { + "description": "An array with the units each dimension has in the database (independent of group-by aggregation that may override the units).\n", + "type": "array", + "items": { + "type": "string" + } + }, + "sts": { + "description": "Statistics about the data collection points used for each dimension.\n", + "oneOf": [ + { + "$ref": "#/components/schemas/jsonwrap2_sts" + }, + { + "$ref": "#/components/schemas/jsonwrap2_sts_raw" + } + ] + } } } } }, - "alarms": { + "view": { "type": "object", - "description": "Number of alarms in the server.", "properties": { - "normal": { - "type": "integer", - "description": "Number of alarms in normal state." + "title": { + "description": "The title the chart should have.\n", + "type": "string" + }, + "format": { + "description": "The format the `result` top level member has. Available on when `debug` flag is set.\n", + "type": "string" + }, + "options": { + "description": "An array presenting all the options given to the query. Available on when `debug` flag is set.\n", + "type": "array", + "items": { + "type": "string" + } + }, + "time_group": { + "description": "The same as the parameter `time_group`. Available on when `debug` flag is set.\n", + "type": "string" + }, + "after": { + "description": "The oldest unix epoch timestamp of the data returned in the `result`.\n", + "type": "integer" + }, + "before": { + "description": "The newest unix epoch timestamp of the data returned in the `result`.\n", + "type": "integer" + }, + "partial_data_trimming": { + "description": "Information related to trimming of the last few points of the `result`, that was required to remove (increasing) partial data.\nTrimming is disabled when the `raw` option is given to the query.\nThis object is available only when the `debug` flag is set.\n", + "type": "object", + "properties": { + "max_update_every": { + "description": "The maximum `update_every` for all metrics aggregated into the query.\nTrimming is by default enabled at `view.before - max_update_every`, but only when `view.before >= now - max_update_every`.\n", + "type": "integer" + }, + "expected_after": { + "description": "The timestamp at which trimming can be enabled.\nIf this timestamp is greater or equal to `view.before`, there is no trimming.\n", + "type": "integer" + }, + "trimmed_after": { + "description": "The timestamp at which trimming has been applied.\nIf this timestamp is greater or equal to `view.before`, there is no trimming.\n" + } + } + }, + "points": { + "description": "The number of points in `result`. Available only when `raw` is given.\n", + "type": "integer" + }, + "units": { + "description": "The units of the query.\n", + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ] + }, + "chart_type": { + "description": "The default chart type of the query.\n", + "type": "string", + "enum": [ + "line", + "area", + "stacked" + ] + }, + "dimensions": { + "description": "Detailed information about the chart dimensions included in the `result`.\n", + "type": "object", + "properties": { + "grouped_by": { + "description": "An array with the order of the groupings performed.\n", + "type": "array", + "items": { + "type": "string", + "enum": [ + "selected", + "dimension", + "instance", + "node", + "context", + "units", + "label:key1", + "label:key2", + "label:keyN" + ] + } + }, + "ids": { + "description": "An array with the dimension ids that uniquely identify the dimensions for this query.\n", + "type": "array", + "items": { + "type": "string" + } + }, + "names": { + "description": "An array with the dimension names to be presented to users. Names may be overlapping, but IDs are not.\n", + "type": "array", + "items": { + "type": "string" + } + }, + "priorities": { + "description": "An array with the relative priorities of the dimensions.\nNumbers may not be sequential or unique. The application is expected to order by this and then by name.\n", + "type": "array", + "items": { + "type": "integer" + } + }, + "aggregated": { + "description": "An array with the number of source metrics aggregated into each dimension.\n", + "type": "array", + "items": { + "type": "integer" + } + }, + "units": { + "description": "An array with the units each dimension has.\n", + "type": "array", + "items": { + "type": "string" + } + }, + "sts": { + "description": "Statistics about the view points for each dimension.\n", + "oneOf": [ + { + "$ref": "#/components/schemas/jsonwrap2_sts" + }, + { + "$ref": "#/components/schemas/jsonwrap2_sts_raw" + } + ] + }, + "labels": { + "description": "The labels associated with each dimension in the query.\nThis object is only available when the `group-by-labels` option is given to the query.\n", + "type": "object", + "properties": { + "label_key1": { + "description": "An array having one entry for each of the dimensions of the query.\n", + "type": "array", + "items": { + "description": "An array having one entry for each of the values this label key has for the given dimension.\n", + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + } }, - "warning": { - "type": "integer", - "description": "Number of alarms in warning state." + "min": { + "description": "The minimum value of all points included in the `result`.\n", + "type": "number" }, - "critical": { - "type": "integer", - "description": "Number of alarms in critical state." + "max": { + "description": "The maximum value of all points included in the `result`.\n", + "type": "number" } } + }, + "result": { + "$ref": "#/components/schemas/data_json_formats2" + }, + "timings": { + "type": "object" } } }, - "chart_summary": { + "jsonwrap2_sts": { + "description": "Statistical values\n", "type": "object", "properties": { - "hostname": { - "type": "string", - "description": "The hostname of the netdata server." - }, - "version": { - "type": "string", - "description": "netdata version of the server." - }, - "release_channel": { - "type": "string", - "description": "The release channel of the build on the server.", - "example": "nightly" - }, - "timezone": { - "type": "string", - "description": "The current timezone on the server." - }, - "os": { - "type": "string", - "description": "The netdata server host operating system.", - "enum": [ - "macos", - "linux", - "freebsd" - ] - }, - "history": { - "type": "number", - "description": "The duration, in seconds, of the round robin database maintained by netdata." - }, - "memory_mode": { - "type": "string", - "description": "The name of the database memory mode on the server." - }, - "update_every": { - "type": "number", - "description": "The default update frequency of the netdata server. All charts have an update frequency equal or bigger than this." - }, - "charts": { - "type": "object", - "description": "An object containing all the chart objects available at the netdata server. This is used as an indexed array. The key of each chart object is the id of the chart.", - "additionalProperties": { - "$ref": "#/components/schemas/chart" - } + "min": { + "description": "The minimum value of all metrics aggregated", + "type": "number" }, - "charts_count": { - "type": "number", - "description": "The number of charts." + "max": { + "description": "The maximum value of all metrics aggregated", + "type": "number" }, - "dimensions_count": { - "type": "number", - "description": "The total number of dimensions." + "avg": { + "description": "The average value of all metrics aggregated", + "type": "number" }, - "alarms_count": { - "type": "number", - "description": "The number of alarms." + "arp": { + "description": "The average anomaly rate of all metrics aggregated", + "type": "number" }, - "rrd_memory_bytes": { - "type": "number", - "description": "The size of the round robin database in bytes." + "con": { + "description": "The contribution percentage of all the metrics aggregated", + "type": "number" } } }, - "chart": { + "jsonwrap2_sts_raw": { + "description": "Statistical values when `raw` option is given.\n", "type": "object", "properties": { - "id": { - "type": "string", - "description": "The unique id of the chart." - }, - "name": { - "type": "string", - "description": "The name of the chart." - }, - "type": { - "type": "string", - "description": "The type of the chart. Types are not handled by netdata. You can use this field for anything you like." - }, - "family": { - "type": "string", - "description": "The family of the chart. Families are not handled by netdata. You can use this field for anything you like." - }, - "title": { - "type": "string", - "description": "The title of the chart." - }, - "priority": { - "type": "number", - "description": "The relative priority of the chart. Netdata does not care about priorities. This is just an indication of importance for the chart viewers to sort charts of higher priority (lower number) closer to the top. Priority sorting should only be used among charts of the same type or family." - }, - "enabled": { - "type": "boolean", - "description": "True when the chart is enabled. Disabled charts do not currently collect values, but they may have historical values available." - }, - "units": { - "type": "string", - "description": "The unit of measurement for the values of all dimensions of the chart." - }, - "data_url": { - "type": "string", - "description": "The absolute path to get data values for this chart. You are expected to use this path as the base when constructing the URL to fetch data values for this chart." - }, - "chart_type": { - "type": "string", - "description": "The chart type.", - "enum": [ - "line", - "area", - "stacked" - ] - }, - "duration": { - "type": "number", - "description": "The duration, in seconds, of the round robin database maintained by netdata." - }, - "first_entry": { - "type": "number", - "description": "The UNIX timestamp of the first entry (the oldest) in the round robin database." - }, - "last_entry": { - "type": "number", - "description": "The UNIX timestamp of the latest entry in the round robin database." + "min": { + "description": "The minimum value of all metrics aggregated", + "type": "number" }, - "update_every": { - "type": "number", - "description": "The update frequency of this chart, in seconds. One value every this amount of time is kept in the round robin database." + "max": { + "description": "The maximum value of all metrics aggregated", + "type": "number" }, - "dimensions": { - "type": "object", - "description": "An object containing all the chart dimensions available for the chart. This is used as an indexed array. For each pair in the dictionary: the key is the id of the dimension and the value is a dictionary containing the name.", - "additionalProperties": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "The name of the dimension" - } - } - } + "sum": { + "description": "The sum value of all metrics aggregated", + "type": "number" }, - "chart_variables": { - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/chart_variables" - } + "ars": { + "description": "The sum anomaly rate of all metrics aggregated", + "type": "number" }, - "green": { - "type": "number", - "nullable": true, - "description": "Chart health green threshold." + "vol": { + "description": "The volume of all the metrics aggregated", + "type": "number" }, - "red": { - "type": "number", - "nullable": true, - "description": "Chart health red threshold." + "cnt": { + "description": "The count of all metrics aggregated", + "type": "integer" } } }, - "context_summary": { + "jsonwrap2_items_count": { + "description": "Depending on the placement of this object, `items` may be `nodes`, `contexts`, `instances`, `dimensions`, `label keys`, `label key-value pairs`. Furthermore, if the whole object is missing it should be assumed that all its members are zero.\n", "type": "object", "properties": { - "hostname": { - "type": "string", - "description": "The hostname of the netdata server." - }, - "machine_guid": { - "type": "string", - "description": "The unique installation id of this netdata server." - }, - "node_id": { - "type": "string", - "description": "The unique node id of this netdata server at the hub.", - "example": "nightly" + "sl": { + "description": "The number of items `selected` to query. If absent it is zero.", + "type": "integer" }, - "claim_id": { - "type": "string", - "description": "The unique handshake id of this netdata server and the hub." + "ex": { + "description": "The number of items `excluded` from querying. If absent it is zero.", + "type": "integer" }, - "host_labels": { - "type": "object", - "description": "The host labels associated with this netdata server." + "qr": { + "description": "The number of items (out of `selected`) the query successfully `queried`. If absent it is zero.", + "type": "integer" }, - "context": { - "type": "object", - "description": "An object containing all the context objects available at the netdata server. This is used as an indexed array. The key of each context object is the id of the context.", - "additionalProperties": { - "$ref": "#/components/schemas/context" - } + "fl": { + "description": "The number of items (from `selected`) that `failed` to be queried. If absent it is zero.", + "type": "integer" } } }, - "context": { + "jsonwrap2_alerts_count": { + "description": "Counters about alert statuses. If this object is missing, it is assumed that all its members are zero.\n", "type": "object", "properties": { - "version": { - "type": "string", - "description": "The version of this context. The number are not sequential, but bigger numbers depict a newer object." - }, - "hub_version": { - "type": "string", - "description": "The version of this context, as known by hub." - }, - "family": { - "type": "string", - "description": "The family of the context. When multiple charts of a context have different families, the netdata server replaces the different parts with [x], so that the context can have only one family." + "nm": { + "description": "The name of the alert. Can be absent when the counters refer to more than one alert instances.", + "type": "string" }, - "title": { - "type": "string", - "description": "The title of the context. When multiple charts of a context have different titles, the netdata server replaces the different parts with [x], so that the context can have only one title." + "cl": { + "description": "The number of CLEAR alerts. If absent, it is zero.", + "type": "integer" }, - "priority": { - "type": "number", - "description": "The relative priority of the context. When multiple contexts have different priorities, the minimum among them is selected as the priority of the context." + "wr": { + "description": "The number of WARNING alerts. If absent, it is zero.", + "type": "integer" }, - "units": { - "type": "string", - "description": "The unit of measurement for the values of all dimensions of the context. If multiple charts of context have different units, the latest collected is selected." + "cr": { + "description": "The number of CRITICAL alerts. If absent, it is zero.", + "type": "integer" }, - "chart_type": { - "type": "string", - "description": "The chart type.", - "enum": [ - "line", - "area", - "stacked" - ] + "ot": { + "description": "The number of alerts that are not CLEAR, WARNING, CRITICAL (so, they are \"other\"). If absent, it is zero.\n", + "type": "integer" + } + } + }, + "api": { + "description": "The version of the API used.", + "type": "integer" + }, + "agents": { + "description": "An array of agent definitions consulted to compose this response.\n", + "type": "array", + "items": { + "type": "object", + "properties": { + "mg": { + "description": "The agent machine GUID.", + "type": "string", + "format": "uuid" + }, + "nd": { + "description": "The agent cloud node ID.", + "type": "string", + "format": "uuid" + }, + "nm": { + "description": "The agent hostname.", + "type": "string" + }, + "ai": { + "description": "The agent index ID for this agent, in this response.", + "type": "integer" + }, + "now": { + "description": "The current unix epoch timestamp of this agent.", + "type": "integer" + } + } + } + }, + "versions": { + "description": "Hashes that allow the caller to detect important database changes of Netdata agents.\n", + "type": "object", + "properties": { + "nodes_hard_hash": { + "description": "An auto-increment value that reflects the number of changes to the number of nodes maintained by the server. Everytime a node is added or removed, this number gets incremented.\n", + "type": "integer" }, - "first_time_t": { - "type": "number", - "description": "The UNIX timestamp of the first entry (the oldest) in the database." + "contexts_hard_hash": { + "description": "An auto-increment value that reflects the number of changes to the number of contexts maintained by the server. Everytime a context is added or removed, this number gets incremented.\n", + "type": "integer" }, - "last_time_t": { - "type": "number", - "description": "The UNIX timestamp of the latest entry in the database." + "contexts_soft_hash": { + "description": "An auto-increment value that reflects the number of changes to the queue that sends contexts updates to Netdata Cloud. Everytime the contents of a context are updated, this number gets incremented.\n", + "type": "integer" }, - "charts": { - "type": "object", - "description": "An object containing all the charts available for the chart. This is used as an indexed array. For each pair in the dictionary, the key is the id of the chart and the value provides all details about the chart." + "alerts_hard_hash": { + "description": "An auto-increment value that reflects the number of changes to the number of alerts. Everytime an alert is added or removed, this number gets incremented.\n", + "type": "integer" + }, + "alerts_soft_hash": { + "description": "An auto-increment value that reflects the number of alerts transitions. Everytime an alert transitions to a new state, this number gets incremented.\n", + "type": "integer" } } }, - "alarm_variables": { + "nodeBasic": { "type": "object", + "description": "Basic information about a node.", + "required": [ + "ni", + "st" + ], "properties": { - "chart": { - "type": "string", - "description": "The unique id of the chart." - }, - "chart_name": { + "mg": { + "description": "The machine guid of the node. May not be available if the request is served by the Netdata Cloud.", "type": "string", - "description": "The name of the chart." + "format": "UUID" }, - "cnart_context": { + "nd": { + "description": "The node id of the node. May not be available if the node is not registered to Netdata Cloud.", "type": "string", - "description": "The context of the chart. It is shared across multiple monitored software or hardware instances and used in alarm templates." + "format": "UUID" }, - "family": { - "type": "string", - "description": "The family of the chart." + "nm": { + "description": "The name (hostname) of the node.", + "type": "string" }, - "host": { - "type": "string", - "description": "The host containing the chart." + "ni": { + "description": "The node index id, a number that uniquely identifies this node for this query.", + "type": "integer" }, - "chart_variables": { + "st": { + "description": "Status information about the communication with this node.", "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/chart_variables" + "properties": { + "ai": { + "description": "The agent index id that has been contacted for this node.", + "type": "integer" + }, + "code": { + "description": "The HTTP response code of the response for this node. When working directly with an agent, this is always 200. If the `code` is missing, it should be assumed to be 200.", + "type": "integer" + }, + "msg": { + "description": "A human readable description of the error, if any. If `msg` is missing, or is the empty string `\"\"` or is `null`, there is no description associated with the current status.", + "type": "string" + }, + "ms": { + "description": "The time in milliseconds this node took to respond, or if the local agent responded for this node, the time it needed to execute the query. If `ms` is missing, the time that was required to query this node is unknown.", + "type": "number" + } } + } + } + }, + "nodeWithDataStatistics": { + "allOf": [ + { + "$ref": "#/components/schemas/nodeBasic" }, - "family_variables": { + { "type": "object", + "description": "`is` stands for instances, `ds` for dimensions, `al` for alerts, `sts` for statistics.\n", "properties": { - "varname1": { - "type": "number", - "format": "float" + "is": { + "$ref": "#/components/schemas/jsonwrap2_items_count" }, - "varname2": { - "type": "number", - "format": "float" + "ds": { + "$ref": "#/components/schemas/jsonwrap2_items_count" + }, + "al": { + "$ref": "#/components/schemas/jsonwrap2_alerts_count" + }, + "sts": { + "oneOf": [ + { + "$ref": "#/components/schemas/jsonwrap2_sts" + }, + { + "$ref": "#/components/schemas/jsonwrap2_sts_raw" + } + ] } } + } + ] + }, + "nodeFull": { + "allOf": [ + { + "$ref": "#/components/schemas/nodeBasic" }, - "host_variables": { + { "type": "object", "properties": { - "varname1": { - "type": "number", - "format": "float" + "version": { + "description": "The version of the Netdata Agent the node runs.", + "type": "string" }, - "varname2": { - "type": "number", - "format": "float" + "hops": { + "description": "How many hops away from the origin node, the queried one is. 0 means the agent itself is the origin node.", + "type": "integer" + }, + "state": { + "description": "The current state of the node on this agent.", + "type": "string", + "enum": [ + "reachable", + "stale", + "offline" + ] } } } + ] + }, + "context2Basic": { + "type": "object", + "properties": { + "family": { + "type": "string" + }, + "priority": { + "type": "integer" + }, + "first_entry": { + "type": "integer" + }, + "last_entry": { + "type": "integer" + }, + "live": { + "type": "boolean" + } } }, - "chart_variables": { + "contexts2": { + "description": "`/api/v2/contexts` and `/api/v2/q` response about multi-node contexts hosted by a Netdata agent.\n", "type": "object", "properties": { - "varname1": { - "type": "number", - "format": "float" + "api": { + "$ref": "#/components/schemas/api" }, - "varname2": { - "type": "number", - "format": "float" + "agents": { + "$ref": "#/components/schemas/agents" + }, + "versions": { + "$ref": "#/components/schemas/versions" + }, + "contexts": { + "additionalProperties": { + "$ref": "#/components/schemas/context2Basic" + } } } }, - "data": { + "jsonwrap1": { "type": "object", "discriminator": { "propertyName": "format" @@ -2432,7 +3546,7 @@ "properties": { "api": { "type": "number", - "description": "The API version this conforms to, currently 1." + "description": "The API version this conforms to." }, "id": { "type": "string", @@ -2519,149 +3633,173 @@ "additionalProperties": { "$ref": "#/components/schemas/chart_variables" } + }, + "result": { + "$ref": "#/components/schemas/data_json_formats1" } } }, - "data_json": { - "description": "Data response in json format.", - "allOf": [ + "data_json_formats1": { + "description": "Depending on the `format` given to a data query, any of the following may be returned.\n", + "oneOf": [ { - "$ref": "#/components/schemas/data" + "$ref": "#/components/schemas/data_json" }, { - "properties": { - "result": { - "type": "object", - "properties": { - "labels": { - "description": "The dimensions retrieved from the chart.", - "type": "array", - "items": { - "type": "string" - } - }, - "data": { - "description": "The data requested, one element per sample with each element containing the values of the dimensions described in the labels value.", - "type": "array", - "items": { - "type": "number" - } - } - }, - "description": "The result requested, in the format requested." - } - } + "$ref": "#/components/schemas/data_datatable" + }, + { + "$ref": "#/components/schemas/data_csvjsonarray" + }, + { + "$ref": "#/components/schemas/data_array" + }, + { + "$ref": "#/components/schemas/data_txt" } ] }, - "data_flat": { - "description": "Data response in csv / tsv / tsv-excel / ssv / ssv-comma / markdown / html formats.", - "allOf": [ + "data_json_formats2": { + "description": "Depending on the `format` given to a data query, any of the following may be returned.\n", + "oneOf": [ { - "$ref": "#/components/schemas/data" + "$ref": "#/components/schemas/data_json2" }, { - "properties": { - "result": { - "type": "string" - } - } + "$ref": "#/components/schemas/data_json_formats1" } ] }, - "data_array": { - "description": "Data response in array format.", - "allOf": [ - { - "$ref": "#/components/schemas/data" + "data_json2": { + "type": "object", + "properties": { + "labels": { + "description": "The IDs of the dimensions returned. The first is always `time`.\n", + "type": "array", + "items": { + "type": "string" + } }, - { + "point": { + "description": "The format of each point returned.\n", + "type": "object", "properties": { - "result": { - "type": "array", - "items": { - "type": "number" - } + "value": { + "description": "The index of the value in each point.\n", + "type": "integer" + }, + "arp": { + "description": "The index of the anomaly rate in each point.\n", + "type": "integer" + }, + "pa": { + "description": "The index of the point annotations in each point.\nThis is a bitmap. `EMPTY = 1`, `RESET = 2`, `PARTIAL = 4`.\n`EMPTY` means the point has no value.\n`RESET` means that at least one metric aggregated experienced an overflow (a counter that wrapped).\n`PARTIAL` means that this point should have more metrics aggregated into it, but not all metrics had data.\n", + "type": "integer" + }, + "count": { + "description": "The number of metrics aggregated into this point. This exists only when the option `raw` is given to the query.\n", + "type": "integer" } } + }, + "data": { + "type": "array", + "items": { + "allOf": [ + { + "type": "integer" + }, + { + "type": "array" + } + ] + } } - ] + } }, - "data_csvjsonarray": { - "description": "Data response in csvjsonarray format.", - "allOf": [ - { - "$ref": "#/components/schemas/data" + "data_json": { + "description": "Data response in `json` format.", + "type": "object", + "properties": { + "labels": { + "description": "The dimensions retrieved from the chart.", + "type": "array", + "items": { + "type": "string" + } }, - { - "properties": { - "result": { - "description": "The first inner array contains strings showing the labels of each column, each subsequent array contains the values for each point in time.", - "type": "array", - "items": { - "type": "array", - "items": {} - } - } + "data": { + "description": "The data requested, one element per sample with each element containing the values of the dimensions described in the labels value.\n", + "type": "array", + "items": { + "type": "number" } } - ] + } + }, + "data_txt": { + "description": "Data response in `csv`, `tsv`, `tsv-excel`, `ssv`, `ssv-comma`, `markdown`, `html` formats.\n", + "type": "string" + }, + "data_array": { + "description": "Data response in `array` format.", + "type": "array", + "items": { + "type": "number" + } + }, + "data_csvjsonarray": { + "description": "The first inner array contains strings showing the labels of each column, each subsequent array contains the values for each point in time.\n", + "type": "array", + "items": { + "type": "array", + "items": {} + } }, "data_datatable": { - "description": "Data response in datatable / datasource formats (suitable for Google Charts).", - "allOf": [ - { - "$ref": "#/components/schemas/data" + "description": "Data response in datatable / datasource formats (suitable for Google Charts).\n", + "type": "object", + "properties": { + "cols": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Always empty - for future use." + }, + "label": { + "description": "The dimension returned from the chart." + }, + "pattern": { + "description": "Always empty - for future use." + }, + "type": { + "description": "The type of data in the column / chart-dimension." + }, + "p": { + "description": "Contains any annotations for the column." + } + }, + "required": [ + "id", + "label", + "pattern", + "type" + ] + } }, - { - "properties": { - "result": { - "type": "object", - "properties": { - "cols": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "description": "Always empty - for future use." - }, - "label": { - "description": "The dimension returned from the chart." - }, - "pattern": { - "description": "Always empty - for future use." - }, - "type": { - "description": "The type of data in the column / chart-dimension." - }, - "p": { - "description": "Contains any annotations for the column." - } - }, - "required": [ - "id", - "label", - "pattern", - "type" - ] - } - }, - "rows": { - "type": "array", - "items": { - "type": "object", - "properties": { - "c": { - "type": "array", - "items": { - "properties": { - "v": { - "description": "Each value in the row is represented by an object named `c` with five v fields: data, null, null, 0, the value. This format is fixed by the Google Charts API." - } - } - } - } + "rows": { + "type": "array", + "items": { + "type": "object", + "properties": { + "c": { + "type": "array", + "items": { + "properties": { + "v": { + "description": "Each value in the row is represented by an object named `c` with five v fields: data, null, null, 0, the value. This format is fixed by the Google Charts API.\"\n" } } } @@ -2669,7 +3807,7 @@ } } } - ] + } }, "alarms": { "type": "object", @@ -3009,7 +4147,7 @@ "properties": { "aclk-available": { "type": "string", - "description": "Describes whether this agent is capable of connection to the Cloud. False means agent has been built without ACLK component either on purpose (user choice) or due to missing dependency." + "description": "Describes whether this agent is capable of connection to the Cloud. False means agent has been built without ACLK component either on purpose (user choice) or due to missing dependency.\n" }, "aclk-version": { "type": "integer", @@ -3165,6 +4303,9 @@ } } }, + "weights2": { + "type": "object" + }, "weights": { "type": "object", "properties": { diff --git a/web/api/netdata-swagger.yaml b/web/api/netdata-swagger.yaml index fced6544f..c25f0b719 100644 --- a/web/api/netdata-swagger.yaml +++ b/web/api/netdata-swagger.yaml @@ -2,11 +2,124 @@ openapi: 3.0.0 info: title: Netdata API description: Real-time performance and health monitoring. - version: 1.33.1 + version: "1.38" + contact: + name: Netdata Agent API + email: info@netdata.cloud + url: https://netdata.cloud + license: + name: GPL v3+ + url: https://github.com/netdata/netdata/blob/master/LICENSE +servers: + - url: https://registry.my-netdata.io + - url: http://registry.my-netdata.io + - url: http://localhost:19999 +tags: + - name: nodes + description: Everything related to monitored nodes + - name: charts + description: Everything related to chart instances - DO NOT USE IN NEW CODE - use contexts instead + - name: contexts + description: Everything related contexts - in new code, use this instead of charts + - name: data + description: Everything related to data queries + - name: badges + description: Everything related to dynamic badges based on metric data + - name: weights + description: Everything related to scoring / weighting metrics + - name: functions + description: Everything related to functions + - name: alerts + description: Everything related to alerts + - name: management + description: Everything related to managing netdata agents paths: - /info: + /api/v2/nodes: + get: + operationId: getNodes2 + tags: + - nodes + summary: Nodes Info v2 + description: | + Get a list of all nodes hosted by this Netdata agent. + parameters: + - $ref: '#/components/parameters/scopeNodes' + - $ref: '#/components/parameters/scopeContexts' + - $ref: '#/components/parameters/filterNodes' + - $ref: '#/components/parameters/filterContexts' + responses: + "200": + description: OK + content: + application/json: + schema: + description: | + `/api/v2/nodes` response for all nodes hosted by a Netdata agent. + type: object + properties: + api: + $ref: '#/components/schemas/api' + agents: + $ref: '#/components/schemas/agents' + versions: + $ref: '#/components/schemas/versions' + nodes: + type: array + items: + $ref: '#/components/schemas/nodeFull' + /api/v2/contexts: + get: + operationId: getContexts2 + tags: + - contexts + summary: Contexts Info v2 + description: | + Get a list of all contexts, across all nodes, hosted by this Netdata agent. + parameters: + - $ref: '#/components/parameters/scopeNodes' + - $ref: '#/components/parameters/scopeContexts' + - $ref: '#/components/parameters/filterNodes' + - $ref: '#/components/parameters/filterContexts' + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/contexts2' + /api/v2/q: + get: + operationId: q2 + tags: + - contexts + summary: Full Text Search v2 + description: | + Get a list of contexts, across all nodes, hosted by this Netdata agent, matching a string expression + parameters: + - name: q + in: query + description: The strings to search for, formatted as a simple pattern + required: true + schema: + type: string + format: simple pattern + - $ref: '#/components/parameters/scopeNodes' + - $ref: '#/components/parameters/scopeContexts' + - $ref: '#/components/parameters/filterNodes' + - $ref: '#/components/parameters/filterContexts' + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/contexts2' + /api/v1/info: get: - summary: Get netdata basic information + operationId: getNodeInfo1 + tags: + - nodes + summary: Node Info v1 description: | The info endpoint returns basic information about netdata. It provides: * netdata version @@ -28,9 +141,12 @@ paths: $ref: "#/components/schemas/info" "503": description: netdata daemon not ready (used for health checks). - /charts: + /api/v1/charts: get: - summary: Get a list of all charts available at the server + operationId: getNodeCharts1 + tags: + - charts + summary: List all charts v1 - EOL description: The charts endpoint returns a summary about all charts stored in the netdata server. responses: @@ -40,19 +156,15 @@ paths: application/json: schema: $ref: "#/components/schemas/chart_summary" - /chart: + /api/v1/chart: get: - summary: Get info about a specific chart + operationId: getNodeChart1 + tags: + - charts + summary: Get one chart v1 - EOL description: The chart endpoint returns detailed information about a chart. parameters: - - name: chart - in: query - description: The id of the chart as returned by the /charts call. - required: true - schema: - type: string - format: as returned by /charts - default: system.cpu + - $ref: '#/components/parameters/chart' responses: "200": description: A javascript object with detailed information about the chart. @@ -64,70 +176,21 @@ paths: description: No chart id was supplied in the request. "404": description: No chart with the given id is found. - /contexts: + /api/v1/contexts: get: - summary: Get a list of all contexts available at the server + operationId: getNodeContexts1 + tags: + - contexts + summary: Get a list of all node contexts available v1 description: The contexts endpoint returns a summary about all contexts stored in the netdata server. parameters: - - name: options - in: query - description: Options that affect data generation. - required: false - allowEmptyValue: true - schema: - type: array - items: - type: string - enum: - - full - - all - - charts - - dimensions - - labels - - uuids - - queue - - flags - - deleted - - deepscan - default: - - full - - name: after - in: query - description: limit the results on context having data after this timestamp. - required: false - schema: - type: number - format: integer - - name: before - in: query - description: limit the results on context having data before this timestamp. - required: false - schema: - type: number - format: integer - - name: chart_label_key - in: query - description: a simple pattern matching charts label keys (use comma or pipe as separator) - required: false - allowEmptyValue: true - schema: - type: string - - name: chart_labels_filter - in: query - description: "a simple pattern matching charts label key and values (use colon for equality, comma or pipe - as separator)" - required: false - allowEmptyValue: true - schema: - type: string - - name: dimensions - in: query - description: a simple pattern matching dimensions (use comma or pipe as separator) - required: false - allowEmptyValue: true - schema: - type: string + - $ref: '#/components/parameters/dimensions' + - $ref: '#/components/parameters/chart_label_key' + - $ref: '#/components/parameters/chart_labels_filter' + - $ref: '#/components/parameters/contextOptions1' + - $ref: '#/components/parameters/after' + - $ref: '#/components/parameters/before' responses: "200": description: An array of contexts. @@ -135,404 +198,348 @@ paths: application/json: schema: $ref: "#/components/schemas/context_summary" - /context: + /api/v1/context: get: + operationId: getNodeContext1 + tags: + - contexts summary: Get info about a specific context - description: The context endpoint returns detailed information about a given context. + description: | + The context endpoint returns detailed information about a given context. + The `context` parameter is required for this call. parameters: - - name: context - in: query - description: The id of the context as returned by the /contexts call. - required: true - schema: - type: string - format: as returned by /contexts - default: system.cpu - - name: options + - $ref: '#/components/parameters/context' + - $ref: '#/components/parameters/dimensions' + - $ref: '#/components/parameters/chart_label_key' + - $ref: '#/components/parameters/chart_labels_filter' + - $ref: '#/components/parameters/contextOptions1' + - $ref: '#/components/parameters/after' + - $ref: '#/components/parameters/before' + responses: + "200": + description: A javascript object with detailed information about the context. + content: + application/json: + schema: + $ref: "#/components/schemas/context" + "400": + description: No context id was supplied in the request. + "404": + description: No context with the given id is found. + /api/v2/data: + get: + operationId: dataQuery2 + tags: + - data + summary: Data Query v2 + description: | + Multi-node, multi-context, multi-instance, multi-dimension data queries, with time and metric aggregation. + parameters: + - name: group_by in: query - description: Options that affect data generation. + description: | + A comma separated list of the groupings required. + All possible values can be combined together, except `selected`. If `selected` is given in the list, all others are ignored. + The order they are placed in the list is currently ignored. required: false - allowEmptyValue: true schema: type: array items: type: string enum: - - full - - all - - charts - - dimensions - - labels - - uuids - - queue - - flags - - deleted - - deepscan + - dimension + - instance + - percentage-of-instance + - label + - node + - context + - units + - selected default: - - full - - name: after - in: query - description: limit the results on context having data after this timestamp. - required: false - schema: - type: number - format: integer - - name: before - in: query - description: limit the results on context having data before this timestamp. - required: false - schema: - type: number - format: integer - - name: chart_label_key - in: query - description: a simple pattern matching charts label keys (use comma or pipe as separator) - required: false - allowEmptyValue: true - schema: - type: string - - name: chart_labels_filter + - dimension + - name: group_by_label in: query - description: "a simple pattern matching charts label key and values (use colon for equality, comma or pipe - as separator)" + description: | + A comma separated list of the label keys to group by their values. The order of the labels in the list is respected. required: false - allowEmptyValue: true schema: type: string - - name: dimensions + format: comma separated list of label keys to group by + default: "" + - name: aggregation in: query - description: a simple pattern matching dimensions (use comma or pipe as separator) + description: | + The aggregation function to apply when grouping metrics together. + When option `raw` is given, `average` and `avg` behave like `sum` and the caller is expected to calculate the average. required: false - allowEmptyValue: true schema: type: string + enum: + - min + - max + - avg + - average + - sum + default: average + - $ref: '#/components/parameters/scopeNodes' + - $ref: '#/components/parameters/scopeContexts' + - $ref: '#/components/parameters/filterNodes' + - $ref: '#/components/parameters/filterContexts' + - $ref: '#/components/parameters/filterInstances' + - $ref: '#/components/parameters/filterLabels' + - $ref: '#/components/parameters/filterAlerts' + - $ref: '#/components/parameters/filterDimensions' + - $ref: '#/components/parameters/after' + - $ref: '#/components/parameters/before' + - $ref: '#/components/parameters/points' + - $ref: '#/components/parameters/tier' + - $ref: '#/components/parameters/dataQueryOptions' + - $ref: '#/components/parameters/dataTimeGroup2' + - $ref: '#/components/parameters/dataTimeGroupOptions2' + - $ref: '#/components/parameters/dataTimeResampling2' + - $ref: '#/components/parameters/dataFormat2' + - $ref: '#/components/parameters/timeoutMS' + - $ref: '#/components/parameters/callback' + - $ref: '#/components/parameters/filename' + - $ref: '#/components/parameters/tqx' responses: "200": - description: A javascript object with detailed information about the context. + description: | + The call was successful. The response includes the data in the format requested. content: application/json: schema: - $ref: "#/components/schemas/context" + oneOf: + - $ref: '#/components/schemas/jsonwrap2' + - $ref: '#/components/schemas/data_json_formats2' + text/plain: + schema: + type: string + format: according to the format requested. + text/html: + schema: + type: string + format: html + application/x-javascript: + schema: + type: string + format: javascript "400": - description: No context id was supplied in the request. - "404": - description: No context with the given id is found. - /alarm_variables: + description: | + Bad request - the body will include a message stating what is wrong. + "500": + description: | + Internal server error. This usually means the server is out of memory. + /api/v1/data: get: - summary: List variables available to configure alarms for a chart - description: Returns the basic information of a chart and all the variables that can - be used in alarm and template health configurations for the particular - chart or family. + operationId: dataQuery1 + tags: + - data + summary: Data Query v1 - Single node, single chart or context queries. without group-by. + description: | + Query metric data of a chart or context of a node and return a dataset having time-series data for all dimensions available. + For group-by functionality, use `/api/v2/data`. + At least a `chart` or a `context` have to be given for the data query to be executed. parameters: - - name: chart - in: query - description: The id of the chart as returned by the /charts call. - required: true - schema: - type: string - format: as returned by /charts - default: system.cpu + - $ref: '#/components/parameters/chart' + - $ref: '#/components/parameters/context' + - $ref: '#/components/parameters/dimension' + - $ref: '#/components/parameters/chart_label_key' + - $ref: '#/components/parameters/chart_labels_filter' + - $ref: '#/components/parameters/after' + - $ref: '#/components/parameters/before' + - $ref: '#/components/parameters/points' + - $ref: '#/components/parameters/tier' + - $ref: '#/components/parameters/dataQueryOptions' + - $ref: '#/components/parameters/dataFormat1' + - $ref: '#/components/parameters/dataTimeGroup1' + - $ref: '#/components/parameters/dataTimeGroupOptions1' + - $ref: '#/components/parameters/dataTimeResampling1' + - $ref: '#/components/parameters/timeoutMS' + - $ref: '#/components/parameters/callback' + - $ref: '#/components/parameters/filename' + - $ref: '#/components/parameters/tqx' responses: "200": - description: A javascript object with information about the chart and the - available variables. + description: | + The call was successful. The response includes the data in the format requested. content: application/json: schema: - $ref: "#/components/schemas/alarm_variables" + oneOf: + - $ref: '#/components/schemas/jsonwrap1' + - $ref: '#/components/schemas/data_json_formats1' + text/plain: + schema: + type: string + format: according to the format requested. + text/html: + schema: + type: string + format: html + application/x-javascript: + schema: + type: string + format: javascript "400": description: Bad request - the body will include a message stating what is wrong. "404": - description: No chart with the given id is found. + description: Chart or context is not found. The supplied chart or context will be reported. "500": description: Internal server error. This usually means the server is out of memory. - /data: + /api/v1/allmetrics: get: - summary: Get collected data for a specific chart - description: The data endpoint returns data stored in the round robin database of a - chart. + operationId: allMetrics1 + tags: + - data + summary: All Metrics v1 - Fetch latest value for all metrics + description: | + The `allmetrics` endpoint returns the latest value of all metrics maintained for a netdata node. parameters: - - name: chart + - name: format in: query - description: The id of the chart as returned by the /charts call. Note chart or context must be specified - required: false - allowEmptyValue: false + description: The format of the response to be returned. + required: true schema: type: string - format: as returned by /charts - default: system.cpu - - name: context + enum: + - shell + - prometheus + - prometheus_all_hosts + - json + default: shell + - name: filter in: query - description: The context of the chart as returned by the /charts call. Note chart or context must be specified + description: Allows to filter charts out using simple patterns. required: false - allowEmptyValue: false schema: type: string - format: as returned by /charts - - name: dimension + format: any text + - name: variables in: query - description: Zero, one or more dimension ids or names, as returned by the /chart - call, separated with comma or pipe. Netdata simple patterns are - supported. + description: | + When enabled, netdata will expose various system configuration variables. required: false - allowEmptyValue: false - schema: - type: array - items: - type: string - format: as returned by /charts - - name: after - in: query - description: "This parameter can either be an absolute timestamp specifying the - starting point of the data to be returned, or a relative number of - seconds (negative, relative to parameter: before). Netdata will - assume it is a relative number if it is less that 3 years (in seconds). - If not specified the default is -600 seconds. Netdata will adapt this - parameter to the boundaries of the round robin database unless the allow_past - option is specified." - required: true - allowEmptyValue: false schema: - type: number - format: integer - default: -600 - - name: before + type: string + enum: + - yes + - no + default: no + - name: help in: query - description: This parameter can either be an absolute timestamp specifying the - ending point of the data to be returned, or a relative number of - seconds (negative), relative to the last collected timestamp. - Netdata will assume it is a relative number if it is less than 3 - years (in seconds). Netdata will adapt this parameter to the - boundaries of the round robin database. The default is zero (i.e. - the timestamp of the last value collected). + description: | + Enable or disable HELP lines in prometheus output. required: false schema: - type: number - format: integer - default: 0 - - name: points + type: string + enum: + - yes + - no + default: no + - name: types in: query - description: The number of points to be returned. If not given, or it is <= 0, or - it is bigger than the points stored in the round robin database for - this chart for the given duration, all the available collected - values for the given duration will be returned. - required: true - allowEmptyValue: false + description: | + Enable or disable TYPE lines in prometheus output. + required: false schema: - type: number - format: integer - default: 20 - - name: chart_label_key + type: string + enum: + - yes + - no + default: no + - name: timestamps in: query - description: Specify the chart label keys that need to match for context queries as comma separated values. - At least one matching key is needed to match the corresponding chart. + description: | + Enable or disable timestamps in prometheus output. required: false - allowEmptyValue: false schema: type: string - format: key1,key2,key3 - - name: chart_labels_filter + enum: + - yes + - no + default: yes + - name: names in: query - description: Specify the chart label keys and values to match for context queries. All keys/values need to - match for the chart to be included in the query. The labels are specified as key1:value1,key2:value2 + description: | + When enabled netdata will report dimension names. When disabled netdata will report dimension IDs. The default is controlled in netdata.conf. required: false - allowEmptyValue: false schema: type: string - format: key1:value1,key2:value2,key3:value3 - - name: group + enum: + - yes + - no + default: yes + - name: oldunits in: query - description: The grouping method. If multiple collected values are to be grouped - in order to return fewer points, this parameters defines the method - of grouping. methods supported "min", "max", "average", "sum", - "incremental-sum". "max" is actually calculated on the absolute - value collected (so it works for both positive and negative - dimensions to return the most extreme value in either direction). - required: true - allowEmptyValue: false + description: | + When enabled, netdata will show metric names for the default `source=average` as they appeared before 1.12, by using the legacy unit naming conventions. + required: false schema: type: string enum: - - min - - max - - average - - median - - stddev - - sum - - incremental-sum - - ses - - des - - cv - - countif - - percentile - - percentile25 - - percentile50 - - percentile75 - - percentile80 - - percentile90 - - percentile95 - - percentile97 - - percentile98 - - percentile99 - - trimmed-mean - - trimmed-mean1 - - trimmed-mean2 - - trimmed-mean3 - - trimmed-mean5 - - trimmed-mean10 - - trimmed-mean15 - - trimmed-mean20 - - trimmed-mean25 - - trimmed-median - - trimmed-median1 - - trimmed-median2 - - trimmed-median3 - - trimmed-median5 - - trimmed-median10 - - trimmed-median15 - - trimmed-median20 - - trimmed-median25 - default: average - - name: group_options + - yes + - no + default: yes + - name: hideunits in: query - description: When the group function supports additional parameters, this field - can be used to pass them to it. Currently only "countif" supports this. + description: | + When enabled, netdata will not include the units in the metric names, for the default `source=average`. required: false - allowEmptyValue: false schema: type: string - - name: gtime + enum: + - yes + - no + default: yes + - name: server in: query - description: The grouping number of seconds. This is used in conjunction with - group=average to change the units of metrics (ie when the data is - per-second, setting gtime=60 will turn them to per-minute). + description: | + Set a distinct name of the client querying prometheus metrics. Netdata will use the client IP if this is not set. required: false - allowEmptyValue: false schema: - type: number - format: integer - default: 0 - - name: timeout + type: string + format: any text + - name: prefix in: query - description: Specify a timeout value in milliseconds after which the agent will - abort the query and return a 503 error. A value of 0 indicates no timeout. + description: | + Prefix all prometheus metrics with this string. required: false - allowEmptyValue: false schema: - type: number - format: integer - default: 0 - - name: format + type: string + format: any text + - name: data in: query - description: The format of the data to be returned. - required: true - allowEmptyValue: false + description: | + Select the prometheus response data source. There is a setting in netdata.conf for the default. + required: false schema: type: string enum: - - json - - jsonp - - csv - - tsv - - tsv-excel - - ssv - - ssvcomma - - datatable - - datasource - - html - - markdown - - array - - csvjsonarray - default: json - - name: options - in: query - description: Options that affect data generation. - required: false - allowEmptyValue: false - schema: - type: array - items: - type: string - enum: - - nonzero - - flip - - jsonwrap - - min2max - - seconds - - milliseconds - - abs - - absolute - - absolute-sum - - null2zero - - objectrows - - google_json - - percentage - - unaligned - - match-ids - - match-names - - allow_past - - anomaly-bit - default: - - seconds - - jsonwrap - - name: callback - in: query - description: For JSONP responses, the callback function name. - required: false - allowEmptyValue: true - schema: - type: string - - name: filename - in: query - description: "Add Content-Disposition: attachment; filename= header to - the response, that will instruct the browser to save the response - with the given filename." - required: false - allowEmptyValue: true - schema: - type: string - - name: tqx - in: query - description: "[Google Visualization - API](https://developers.google.com/chart/interactive/docs/dev/imple\ - menting_data_source?hl=en) formatted parameter." - required: false - allowEmptyValue: true - schema: - type: string + - as-collected + - average + - sum + default: average responses: "200": - description: The call was successful. The response includes the data in the - format requested. Swagger2.0 does not process the discriminator - field to show polymorphism. The response will be one of the - sub-types of the data-schema according to the chosen format, e.g. - json -> data_json. - content: - application/json: - schema: - $ref: "#/components/schemas/data" + description: All the metrics returned in the format requested. "400": - description: Bad request - the body will include a message stating what is wrong. - "404": - description: Chart or context is not found. The supplied chart or context will be reported. - "500": - description: Internal server error. This usually means the server is out of - memory. - /badge.svg: + description: The format requested is not supported. + /api/v1/badge.svg: get: + operationId: badge1 + tags: + - badges summary: Generate a badge in form of SVG image for a chart (or dimension) description: Successful responses are SVG images. parameters: - - name: chart - in: query - description: The id of the chart as returned by the /charts call. - required: true - allowEmptyValue: false - schema: - type: string - format: as returned by /charts - default: system.cpu + - $ref: '#/components/parameters/chart' + - $ref: '#/components/parameters/dimension' + - $ref: '#/components/parameters/after' + - $ref: '#/components/parameters/before' + - $ref: '#/components/parameters/dataTimeGroup1' + - $ref: '#/components/parameters/dataQueryOptions' - name: alarm in: query description: The name of an alarm linked to the chart. @@ -541,120 +548,6 @@ paths: schema: type: string format: any text - - name: dimension - in: query - description: Zero, one or more dimension ids, as returned by the /chart call. - required: false - allowEmptyValue: false - schema: - type: array - items: - type: string - format: as returned by /charts - - name: after - in: query - description: This parameter can either be an absolute timestamp specifying the - starting point of the data to be returned, or a relative number of - seconds, to the last collected timestamp. Netdata will assume it is - a relative number if it is smaller than the duration of the round - robin database for this chart. So, if the round robin database is - 3600 seconds, any value from -3600 to 3600 will trigger relative - arithmetics. Netdata will adapt this parameter to the boundaries of - the round robin database. - required: true - allowEmptyValue: false - schema: - type: number - format: integer - default: -600 - - name: before - in: query - description: This parameter can either be an absolute timestamp specifying the - ending point of the data to be returned, or a relative number of - seconds, to the last collected timestamp. Netdata will assume it is - a relative number if it is smaller than the duration of the round - robin database for this chart. So, if the round robin database is - 3600 seconds, any value from -3600 to 3600 will trigger relative - arithmetics. Netdata will adapt this parameter to the boundaries of - the round robin database. - required: false - schema: - type: number - format: integer - default: 0 - - name: group - in: query - description: The grouping method. If multiple collected values are to be grouped - in order to return fewer points, this parameters defines the method - of grouping. methods are supported "min", "max", "average", "sum", - "incremental-sum". "max" is actually calculated on the absolute - value collected (so it works for both positive and negative - dimensions to return the most extreme value in either direction). - required: true - allowEmptyValue: false - schema: - type: string - enum: - - min - - max - - average - - median - - stddev - - sum - - incremental-sum - - ses - - des - - cv - - countif - - percentile - - percentile25 - - percentile50 - - percentile75 - - percentile80 - - percentile90 - - percentile95 - - percentile97 - - percentile98 - - percentile99 - - trimmed-mean - - trimmed-mean1 - - trimmed-mean2 - - trimmed-mean3 - - trimmed-mean5 - - trimmed-mean10 - - trimmed-mean15 - - trimmed-mean20 - - trimmed-mean25 - - trimmed-median - - trimmed-median1 - - trimmed-median2 - - trimmed-median3 - - trimmed-median5 - - trimmed-median10 - - trimmed-median15 - - trimmed-median20 - - trimmed-median25 - default: average - - name: options - in: query - description: Options that affect data generation. - required: false - allowEmptyValue: true - schema: - type: array - items: - type: string - enum: - - abs - - absolute - - display-absolute - - absolute-sum - - null2zero - - percentage - - unaligned - - anomaly-bit - default: - - absolute - name: label in: query description: A text to be used as the label. @@ -673,9 +566,8 @@ paths: format: any text - name: label_color in: query - description: "A color to be used for the background of the label side(left side) of the badge. - One of predefined colors or specific color in hex `RGB` or `RRGGBB` format (without preceding `#` character). - If value wrong or not given default color will be used." + description: | + A color to be used for the background of the label side(left side) of the badge. One of predefined colors or specific color in hex `RGB` or `RRGGBB` format (without preceding `#` character). If value wrong or not given default color will be used. required: false allowEmptyValue: true schema: @@ -697,12 +589,8 @@ paths: format: ^([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$ - name: value_color in: query - description: "A color to be used for the background of the value *(right)* part of badge. You can set - multiple using a pipe with a condition each, like this: - `color, <, >=, <=, =, :null (to check if no value exists). - Each color can be specified in same manner as for `label_color` parameter. - Currently only integers are supported as values." + description: | + A color to be used for the background of the value *(right)* part of badge. You can set multiple using a pipe with a condition each, like this: `color, <, >=, <=, =, :null (to check if no value exists). Each color can be specified in same manner as for `label_color` parameter. Currently only integers are supported as values. required: false allowEmptyValue: true schema: @@ -710,9 +598,8 @@ paths: format: any text - name: text_color_lbl in: query - description: "Font color for label *(left)* part of the badge. One of predefined colors or as HTML hexadecimal - color without preceding `#` character. Formats allowed `RGB` or `RRGGBB`. If no or wrong value given default - color will be used." + description: | + Font color for label *(left)* part of the badge. One of predefined colors or as HTML hexadecimal color without preceding `#` character. Formats allowed `RGB` or `RRGGBB`. If no or wrong value given default color will be used. required: false allowEmptyValue: true schema: @@ -734,9 +621,8 @@ paths: format: ^([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$ - name: text_color_val in: query - description: "Font color for value *(right)* part of the badge. One of predefined colors or as HTML - hexadecimal color without preceding `#` character. Formats allowed `RGB` or `RRGGBB`. If no or wrong value - given default color will be used." + description: | + Font color for value *(right)* part of the badge. One of predefined colors or as HTML hexadecimal color without preceding `#` character. Formats allowed `RGB` or `RRGGBB`. If no or wrong value given default color will be used. required: false allowEmptyValue: true schema: @@ -784,12 +670,8 @@ paths: format: integer - name: fixed_width_lbl in: query - description: "This parameter overrides auto-sizing of badge and creates it with fixed width. - This parameter determines the size of the label's left side *(label/name)*. - You must set this parameter together with `fixed_width_val` otherwise it will be ignored. - You should set the label/value widths wide enough to provide space for all the possible values/contents of - the badge you're requesting. In case the text cannot fit the space given it will be clipped. - The `scale` parameter still applies on the values you give to `fixed_width_lbl` and `fixed_width_val`." + description: | + This parameter overrides auto-sizing of badge and creates it with fixed width. This parameter determines the size of the label's left side *(label/name)*. You must set this parameter together with `fixed_width_val` otherwise it will be ignored. You should set the label/value widths wide enough to provide space for all the possible values/contents of the badge you're requesting. In case the text cannot fit the space given it will be clipped. The `scale` parameter still applies on the values you give to `fixed_width_lbl` and `fixed_width_val`. required: false allowEmptyValue: false schema: @@ -797,12 +679,8 @@ paths: format: integer - name: fixed_width_val in: query - description: "This parameter overrides auto-sizing of badge and creates it with fixed width. This parameter - determines the size of the label's right side *(value)*. You must set this parameter together with - `fixed_width_lbl` otherwise it will be ignored. You should set the label/value widths wide enough to - provide space for all the possible values/contents of the badge you're requesting. In case the text cannot - fit the space given it will be clipped. The `scale` parameter still applies on the values you give to - `fixed_width_lbl` and `fixed_width_val`." + description: | + This parameter overrides auto-sizing of badge and creates it with fixed width. This parameter determines the size of the label's right side *(value)*. You must set this parameter together with `fixed_width_lbl` otherwise it will be ignored. You should set the label/value widths wide enough to provide space for all the possible values/contents of the badge you're requesting. In case the text cannot fit the space given it will be clipped. The `scale` parameter still applies on the values you give to `fixed_width_lbl` and `fixed_width_val`. required: false allowEmptyValue: false schema: @@ -818,212 +696,236 @@ paths: "500": description: Internal server error. This usually means the server is out of memory. - /allmetrics: + /api/v2/weights: get: - summary: Get a value of all the metrics maintained by netdata - description: The allmetrics endpoint returns the latest value of all charts and - dimensions stored in the netdata server. + operationId: weights2 + tags: + - weights + summary: Score or weight all or some of the metrics, across all nodes, according to various algorithms. + description: | + This endpoint goes through all metrics and scores them according to an algorithm. parameters: - - name: format + - $ref: '#/components/parameters/weightMethods' + - $ref: '#/components/parameters/scopeNodes' + - $ref: '#/components/parameters/scopeContexts' + - $ref: '#/components/parameters/filterNodes' + - $ref: '#/components/parameters/filterContexts' + - $ref: '#/components/parameters/filterInstances' + - $ref: '#/components/parameters/filterLabels' + - $ref: '#/components/parameters/filterAlerts' + - $ref: '#/components/parameters/filterDimensions' + - $ref: '#/components/parameters/baselineAfter' + - $ref: '#/components/parameters/baselineBefore' + - $ref: '#/components/parameters/after' + - $ref: '#/components/parameters/before' + - $ref: '#/components/parameters/tier' + - $ref: '#/components/parameters/points' + - $ref: '#/components/parameters/timeoutMS' + - $ref: '#/components/parameters/dataQueryOptions' + - $ref: '#/components/parameters/dataTimeGroup2' + - $ref: '#/components/parameters/dataTimeGroupOptions2' + responses: + "200": + description: JSON object with weights for each context, chart and dimension. + content: + application/json: + schema: + $ref: "#/components/schemas/weights2" + "400": + description: The given parameters are invalid. + "403": + description: metrics correlations are not enabled on this Netdata Agent. + "404": + description: | + No charts could be found, or the method that correlated the metrics did not produce any result. + "504": + description: Timeout - the query took too long and has been cancelled. + /api/v1/weights: + get: + operationId: weights1 + tags: + - weights + summary: Score or weight all or some of the metrics of a single node, according to various algorithms. + description: | + This endpoint goes through all metrics and scores them according to an algorithm. + parameters: + - $ref: '#/components/parameters/weightMethods' + - $ref: '#/components/parameters/context' + - $ref: '#/components/parameters/baselineAfter' + - $ref: '#/components/parameters/baselineBefore' + - $ref: '#/components/parameters/after' + - $ref: '#/components/parameters/before' + - $ref: '#/components/parameters/tier' + - $ref: '#/components/parameters/points' + - $ref: '#/components/parameters/timeoutMS' + - $ref: '#/components/parameters/dataQueryOptions' + - $ref: '#/components/parameters/dataTimeGroup1' + - $ref: '#/components/parameters/dataTimeGroupOptions1' + responses: + "200": + description: JSON object with weights for each context, chart and dimension. + content: + application/json: + schema: + $ref: "#/components/schemas/weights" + "400": + description: The given parameters are invalid. + "403": + description: metrics correlations are not enabled on this Netdata Agent. + "404": + description: No charts could be found, or the method + that correlated the metrics did not produce any result. + "504": + description: Timeout - the query took too long and has been cancelled. + /api/v1/metric_correlations: + get: + operationId: metricCorrelations1 + tags: + - weights + summary: Analyze all the metrics to find their correlations - EOL + description: | + THIS ENDPOINT IS OBSOLETE. Use the /weights endpoint. Given two time-windows (baseline, highlight), it goes through all the available metrics, querying both windows and tries to find how these two windows relate to each other. It supports multiple algorithms to do so. The result is a list of all metrics evaluated, weighted for 0.0 (the two windows are more different) to 1.0 (the two windows are similar). The algorithm adjusts automatically the baseline window to be a power of two multiple of the highlighted (1, 2, 4, 8, etc). + parameters: + - $ref: '#/components/parameters/weightMethods' + - $ref: '#/components/parameters/baselineAfter' + - $ref: '#/components/parameters/baselineBefore' + - $ref: '#/components/parameters/after' + - $ref: '#/components/parameters/before' + - $ref: '#/components/parameters/points' + - $ref: '#/components/parameters/tier' + - $ref: '#/components/parameters/timeoutMS' + - $ref: '#/components/parameters/dataQueryOptions' + - $ref: '#/components/parameters/dataTimeGroup1' + - $ref: '#/components/parameters/dataTimeGroupOptions1' + responses: + "200": + description: JSON object with weights for each chart and dimension. + content: + application/json: + schema: + $ref: "#/components/schemas/metric_correlations" + "400": + description: The given parameters are invalid. + "403": + description: metrics correlations are not enabled on this Netdata Agent. + "404": + description: No charts could be found, or the method + that correlated the metrics did not produce any result. + "504": + description: Timeout - the query took too long and has been cancelled. + /api/v1/function: + get: + operationId: function1 + tags: + - functions + description: "Execute a collector function." + parameters: + - name: function in: query - description: The format of the response to be returned. + description: The name of the function, as returned by the collector. required: true + allowEmptyValue: false schema: type: string - enum: - - shell - - prometheus - - prometheus_all_hosts - - json - default: shell - - name: filter - in: query - description: Allows to filter charts out using simple patterns. - required: false - schema: - type: string - format: any text - - name: variables + - $ref: '#/components/parameters/timeoutSecs' + responses: + "200": + description: The collector function has been executed successfully. Each collector may return a different type of content. + "400": + description: The request was rejected by the collector. + "404": + description: The requested function is not found. + "500": + description: Other internal error, getting this error means there is a bug in Netdata. + "503": + description: The collector to execute the function is not currently available. + "504": + description: Timeout while waiting for the collector to execute the function. + "591": + description: The collector sent a response, but it was invalid or corrupted. + /api/v1/functions: + get: + operationId: functions1 + tags: + - functions + summary: Get a list of all registered collector functions. + description: Collector functions are programs that can be executed on demand. + responses: + "200": + description: A JSON object containing one object per supported function. + /api/v1/alarms: + get: + operationId: alerts1 + tags: + - alerts + summary: Get a list of active or raised alarms on the server + description: | + The alarms endpoint returns the list of all raised or enabled alarms on the netdata server. Called without any parameters, the raised alarms in state WARNING or CRITICAL are returned. By passing "?all", all the enabled alarms are returned. + parameters: + - name: all in: query - description: When enabled, netdata will expose various system - configuration metrics. + description: If passed, all enabled alarms are returned. required: false + allowEmptyValue: true schema: - type: string - enum: - - yes - - no - default: no - - name: help + type: boolean + - name: active in: query - description: Enable or disable HELP lines in prometheus output. + description: If passed, the raised alarms in state WARNING or CRITICAL are returned. required: false + allowEmptyValue: true schema: - type: string - enum: - - yes - - no - default: no - - name: types + type: boolean + responses: + "200": + description: An object containing general info and a linked list of alarms. + content: + application/json: + schema: + $ref: "#/components/schemas/alarms" + /api/v1/alarms_values: + get: + operationId: alertValues1 + tags: + - alerts + summary: Get a list of active or raised alarms on the server + description: | + The alarms_values endpoint returns the list of all raised or enabled alarms on the netdata server. Called without any parameters, the raised alarms in state WARNING or CRITICAL are returned. By passing '?all', all the enabled alarms are returned. This option output differs from `/alarms` in the number of variables delivered. This endpoint gives to user `id`, `value`, `last_updated` time, and alarm `status`. + parameters: + - name: all in: query - description: Enable or disable TYPE lines in prometheus output. + description: If passed, all enabled alarms are returned. required: false + allowEmptyValue: true schema: - type: string - enum: - - yes - - no - default: no - - name: timestamps + type: boolean + - name: active in: query - description: Enable or disable timestamps in prometheus output. + description: If passed, the raised alarms in state WARNING or CRITICAL are returned. required: false + allowEmptyValue: true schema: - type: string - enum: - - yes - - no - default: yes - - name: names + type: boolean + responses: + "200": + description: An object containing general info and a linked list of alarms. + content: + application/json: + schema: + $ref: "#/components/schemas/alarms_values" + /api/v1/alarm_log: + get: + operationId: alertsLog1 + tags: + - alerts + summary: Retrieves the entries of the alarm log + description: | + Returns an array of alarm_log entries, with historical information on raised and cleared alarms. + parameters: + - name: after in: query - description: When enabled netdata will report dimension names. When disabled - netdata will report dimension IDs. The default is controlled in - netdata.conf. - required: false - schema: - type: string - enum: - - yes - - no - default: yes - - name: oldunits - in: query - description: When enabled, netdata will show metric names for the default - source=average as they appeared before 1.12, by using the legacy - unit naming conventions. - required: false - schema: - type: string - enum: - - yes - - no - default: yes - - name: hideunits - in: query - description: When enabled, netdata will not include the units in the metric - names, for the default source=average. - required: false - schema: - type: string - enum: - - yes - - no - default: yes - - name: server - in: query - description: Set a distinct name of the client querying prometheus metrics. - Netdata will use the client IP if this is not set. - required: false - schema: - type: string - format: any text - - name: prefix - in: query - description: Prefix all prometheus metrics with this string. - required: false - schema: - type: string - format: any text - - name: data - in: query - description: Select the prometheus response data source. There is a setting in - netdata.conf for the default. - required: false - schema: - type: string - enum: - - as-collected - - average - - sum - default: average - responses: - "200": - description: All the metrics returned in the format requested. - "400": - description: The format requested is not supported. - /alarms: - get: - summary: Get a list of active or raised alarms on the server - description: The alarms endpoint returns the list of all raised or enabled alarms on - the netdata server. Called without any parameters, the raised alarms in - state WARNING or CRITICAL are returned. By passing "?all", all the - enabled alarms are returned. - parameters: - - name: all - in: query - description: If passed, all enabled alarms are returned. - required: false - allowEmptyValue: true - schema: - type: boolean - - name: active - in: query - description: If passed, the raised alarms in state WARNING or CRITICAL are returned. - required: false - allowEmptyValue: true - schema: - type: boolean - responses: - "200": - description: An object containing general info and a linked list of alarms. - content: - application/json: - schema: - $ref: "#/components/schemas/alarms" - /alarms_values: - get: - summary: Get a list of active or raised alarms on the server - description: "The alarms_values endpoint returns the list of all raised or enabled alarms on - the netdata server. Called without any parameters, the raised alarms in - state WARNING or CRITICAL are returned. By passing '?all', all the - enabled alarms are returned. - This option output differs from `/alarms` in the number of variables delivered. This endpoint gives - to user `id`, `value`, `last_updated` time, and alarm `status`." - parameters: - - name: all - in: query - description: If passed, all enabled alarms are returned. - required: false - allowEmptyValue: true - schema: - type: boolean - - name: active - in: query - description: If passed, the raised alarms in state WARNING or CRITICAL are returned. - required: false - allowEmptyValue: true - schema: - type: boolean - responses: - "200": - description: An object containing general info and a linked list of alarms. - content: - application/json: - schema: - $ref: "#/components/schemas/alarms_values" - /alarm_log: - get: - summary: Retrieves the entries of the alarm log - description: Returns an array of alarm_log entries, with historical information on - raised and cleared alarms. - parameters: - - name: after - in: query - description: Passing the parameter after=UNIQUEID returns all the events in the - alarm log that occurred after UNIQUEID. An automated series of calls - would call the interface once without after=, store the last - UNIQUEID of the returned set, and give it back to get incrementally - the next events. + description: | + Passing the parameter after=UNIQUEID returns all the events in the alarm log that occurred after UNIQUEID. An automated series of calls would call the interface once without after=, store the last UNIQUEID of the returned set, and give it back to get incrementally the next events. required: false schema: type: integer @@ -1036,25 +938,18 @@ paths: type: array items: $ref: "#/components/schemas/alarm_log_entry" - /alarm_count: + /api/v1/alarm_count: get: + operationId: alertsCount1 + tags: + - alerts summary: Get an overall status of the chart - description: Checks multiple charts with the same context and counts number of alarms - with given status. + description: | + Checks multiple charts with the same context and counts number of alarms with given status. parameters: - - in: query - name: context - description: Specify context which should be checked. - required: false - allowEmptyValue: true - schema: - type: array - items: - type: string - default: - - system.cpu - - in: query - name: status + - $ref: '#/components/parameters/context' + - name: status + in: query description: Specify alarm status to count. required: false allowEmptyValue: true @@ -1082,26 +977,52 @@ paths: "500": description: Internal server error. This usually means the server is out of memory. - /manage/health: + /api/v1/alarm_variables: + get: + operationId: getNodeAlertVariables1 + tags: + - alerts + summary: List variables available to configure alarms for a chart + description: | + Returns the basic information of a chart and all the variables that can be used in alarm and template health configurations for the particular chart or family. + parameters: + - name: chart + in: query + description: The id of the chart as returned by the /charts call. + required: true + schema: + type: string + format: as returned by /charts + default: system.cpu + responses: + "200": + description: A javascript object with information about the chart and the + available variables. + content: + application/json: + schema: + $ref: "#/components/schemas/alarm_variables" + "400": + description: Bad request - the body will include a message stating what is wrong. + "404": + description: No chart with the given id is found. + "500": + description: Internal server error. This usually means the server is out of + memory. + /api/v1/manage/health: get: - summary: "Accesses the health management API to control health checks and - notifications at runtime." - description: "Available from Netdata v1.12 and above, protected via bearer - authorization. Especially useful for maintenance periods, the API allows - you to disable health checks completely, silence alarm notifications, or - Disable/Silence specific alarms that match selectors on alarm/template - name, chart, context, host and family. For the simple disable/silence - all scenarios, only the cmd parameter is required. The other parameters - are used to define alarm selectors. For more information and examples, - refer to the netdata documentation." + operationId: health1 + tags: + - management + summary: | + Accesses the health management API to control health checks and notifications at runtime. + description: | + Available from Netdata v1.12 and above, protected via bearer authorization. Especially useful for maintenance periods, the API allows you to disable health checks completely, silence alarm notifications, or Disable/Silence specific alarms that match selectors on alarm/template name, chart, context, host and family. For the simple disable/silence all scenarios, only the cmd parameter is required. The other parameters are used to define alarm selectors. For more information and examples, refer to the netdata documentation. parameters: - name: cmd in: query - description: "DISABLE ALL: No alarm criteria are evaluated, nothing is written in - the alarm log. SILENCE ALL: No notifications are sent. RESET: Return - to the default state. DISABLE/SILENCE: Set the mode to be used for - the alarms matching the criteria of the alarm selectors. LIST: Show - active configuration." + description: | + DISABLE ALL: No alarm criteria are evaluated, nothing is written in the alarm log. SILENCE ALL: No notifications are sent. RESET: Return to the default state. DISABLE/SILENCE: Set the mode to be used for the alarms matching the criteria of the alarm selectors. LIST: Show active configuration. required: false schema: type: string @@ -1144,11 +1065,14 @@ paths: description: A plain text response based on the result of the command. "403": description: Bearer authentication error. - /aclk: + /api/v1/aclk: get: + operationId: aclk1 + tags: + - management summary: Get information about current ACLK state - description: "ACLK endpoint returns detailed information - about current state of ACLK (Agent to Cloud communication)." + description: | + ACLK endpoint returns detailed information about current state of ACLK (Agent to Cloud communication). responses: "200": description: JSON object with ACLK information. @@ -1156,448 +1080,532 @@ paths: application/json: schema: $ref: "#/components/schemas/aclk_state" - /metric_correlations: - get: - summary: "Analyze all the metrics to find their correlations" - description: "THIS ENDPOINT IS OBSOLETE. Use the /weights endpoint. - Given two time-windows (baseline, highlight), it goes - through all the available metrics, querying both windows and tries to find - how these two windows relate to each other. It supports - multiple algorithms to do so. The result is a list of all - metrics evaluated, weighted for 0.0 (the two windows are - more different) to 1.0 (the two windows are similar). - The algorithm adjusts automatically the baseline window to be - a power of two multiple of the highlighted (1, 2, 4, 8, etc)." - parameters: - - name: baseline_after - in: query - description: This parameter can either be an absolute timestamp specifying the - starting point of baseline window, or a relative number of - seconds (negative, relative to parameter baseline_before). Netdata will - assume it is a relative number if it is less that 3 years (in seconds). - required: false - allowEmptyValue: false - schema: - type: number - format: integer - default: -300 - - name: baseline_before - in: query - description: This parameter can either be an absolute timestamp specifying the - ending point of the baseline window, or a relative number of - seconds (negative), relative to the last collected timestamp. - Netdata will assume it is a relative number if it is less than 3 - years (in seconds). - required: false - schema: - type: number - format: integer - default: -60 - - name: after - in: query - description: This parameter can either be an absolute timestamp specifying the - starting point of highlighted window, or a relative number of - seconds (negative, relative to parameter highlight_before). Netdata will - assume it is a relative number if it is less that 3 years (in seconds). - required: false - allowEmptyValue: false - schema: - type: number - format: integer - default: -60 - - name: before - in: query - description: This parameter can either be an absolute timestamp specifying the - ending point of the highlighted window, or a relative number of - seconds (negative), relative to the last collected timestamp. - Netdata will assume it is a relative number if it is less than 3 - years (in seconds). - required: false - schema: - type: number - format: integer - default: 0 - - name: points - in: query - description: The number of points to be evaluated for the highlighted window. - The baseline window will be adjusted automatically to receive a proportional - amount of points. - required: false - allowEmptyValue: false - schema: - type: number - format: integer - default: 500 - - name: method - in: query - description: the algorithm to run - required: false - schema: - type: string - enum: - - ks2 - - volume - default: ks2 - - name: timeout - in: query - description: Cancel the query if to takes more that this amount of milliseconds. - required: false - allowEmptyValue: false - schema: - type: number - format: integer - default: 60000 - - name: options - in: query - description: Options that affect data generation. - required: false - allowEmptyValue: false - schema: - type: array - items: - type: string - enum: - - min2max - - abs - - absolute - - absolute-sum - - null2zero - - percentage - - unaligned - - allow_past - - nonzero - - anomaly-bit - - raw - default: - - null2zero - - allow_past - - nonzero - - unaligned - - name: group - in: query - description: The grouping method. If multiple collected values are to be grouped - in order to return fewer points, this parameters defines the method - of grouping. methods supported "min", "max", "average", "sum", - "incremental-sum". "max" is actually calculated on the absolute - value collected (so it works for both positive and negative - dimensions to return the most extreme value in either direction). - required: true - allowEmptyValue: false - schema: - type: string - enum: - - min - - max - - average - - median - - stddev - - sum - - incremental-sum - - ses - - des - - cv - - countif - - percentile - - percentile25 - - percentile50 - - percentile75 - - percentile80 - - percentile90 - - percentile95 - - percentile97 - - percentile98 - - percentile99 - - trimmed-mean - - trimmed-mean1 - - trimmed-mean2 - - trimmed-mean3 - - trimmed-mean5 - - trimmed-mean10 - - trimmed-mean15 - - trimmed-mean20 - - trimmed-mean25 - - trimmed-median - - trimmed-median1 - - trimmed-median2 - - trimmed-median3 - - trimmed-median5 - - trimmed-median10 - - trimmed-median15 - - trimmed-median20 - - trimmed-median25 - default: average - - name: group_options - in: query - description: When the group function supports additional parameters, this field - can be used to pass them to it. Currently only "countif" supports this. - required: false - allowEmptyValue: false - schema: - type: string - responses: - "200": - description: JSON object with weights for each chart and dimension. - content: - application/json: - schema: - $ref: "#/components/schemas/metric_correlations" - "400": - description: The given parameters are invalid. - "403": - description: metrics correlations are not enabled on this Netdata Agent. - "404": - description: No charts could be found, or the method - that correlated the metrics did not produce any result. - "504": - description: Timeout - the query took too long and has been cancelled. - /function: - get: - summary: "Execute a collector function." - parameters: - - name: function - in: query - description: The name of the function, as returned by the collector. - required: true - allowEmptyValue: false - schema: - type: string - - name: timeout - in: query - description: The timeout in seconds to wait for the function to complete. - required: false - schema: - type: number - format: integer - default: 10 - responses: - "200": - description: The collector function has been executed successfully. Each collector may return a different type of content. - "400": - description: The request was rejected by the collector. - "404": - description: The requested function is not found. - "500": - description: Other internal error, getting this error means there is a bug in Netdata. - "503": - description: The collector to execute the function is not currently available. - "504": - description: Timeout while waiting for the collector to execute the function. - "591": - description: The collector sent a response, but it was invalid or corrupted. - /functions: - get: - summary: Get a list of all registered collector functions. - description: Collector functions are programs that can be executed on demand. - responses: - "200": - description: A JSON object containing one object per supported function. - /weights: - get: - summary: "Analyze all the metrics using an algorithm and score them accordingly" - description: "This endpoint goes through all metrics and scores them according to an algorithm." - parameters: - - name: baseline_after - in: query - description: This parameter can either be an absolute timestamp specifying the - starting point of baseline window, or a relative number of - seconds (negative, relative to parameter baseline_before). Netdata will - assume it is a relative number if it is less that 3 years (in seconds). - This parameter is used in KS2 and VOLUME algorithms. - required: false - allowEmptyValue: false - schema: - type: number - format: integer - default: -300 - - name: baseline_before - in: query - description: This parameter can either be an absolute timestamp specifying the - ending point of the baseline window, or a relative number of - seconds (negative), relative to the last collected timestamp. - Netdata will assume it is a relative number if it is less than 3 - years (in seconds). - This parameter is used in KS2 and VOLUME algorithms. - required: false - schema: - type: number - format: integer - default: -60 - - name: after - in: query - description: This parameter can either be an absolute timestamp specifying the - starting point of highlighted window, or a relative number of - seconds (negative, relative to parameter highlight_before). Netdata will - assume it is a relative number if it is less that 3 years (in seconds). - required: false - allowEmptyValue: false - schema: - type: number - format: integer - default: -60 - - name: before - in: query - description: This parameter can either be an absolute timestamp specifying the - ending point of the highlighted window, or a relative number of - seconds (negative), relative to the last collected timestamp. - Netdata will assume it is a relative number if it is less than 3 - years (in seconds). - required: false - schema: - type: number - format: integer - default: 0 - - name: context - in: query - description: A simple pattern matching the contexts to evaluate. - required: false - allowEmptyValue: false - schema: - type: string - - name: points - in: query - description: The number of points to be evaluated for the highlighted window. - The baseline window will be adjusted automatically to receive a proportional - amount of points. - This parameter is only used by the KS2 algorithm. - required: false - allowEmptyValue: false - schema: - type: number - format: integer - default: 500 - - name: method - in: query - description: the algorithm to run - required: false - schema: - type: string - enum: - - ks2 - - volume - - anomaly-rate - default: anomaly-rate - - name: tier - in: query - description: Use the specified database tier - required: false - allowEmptyValue: false - schema: - type: number - format: integer - - name: timeout - in: query - description: Cancel the query if to takes more that this amount of milliseconds. - required: false - allowEmptyValue: false - schema: - type: number - format: integer - default: 60000 - - name: options - in: query - description: Options that affect data generation. - required: false - allowEmptyValue: false - schema: - type: array - items: - type: string - enum: - - min2max - - abs - - absolute - - absolute-sum - - null2zero - - percentage - - unaligned - - nonzero - - anomaly-bit - - raw - default: - - null2zero - - nonzero - - unaligned - - name: group - in: query - description: The grouping method. If multiple collected values are to be grouped - in order to return fewer points, this parameters defines the method - of grouping. methods supported "min", "max", "average", "sum", - "incremental-sum". "max" is actually calculated on the absolute - value collected (so it works for both positive and negative - dimensions to return the most extreme value in either direction). - required: true - allowEmptyValue: false - schema: - type: string - enum: - - min - - max - - average - - median - - stddev - - sum - - incremental-sum - - ses - - des - - cv - - countif - - percentile - - percentile25 - - percentile50 - - percentile75 - - percentile80 - - percentile90 - - percentile95 - - percentile97 - - percentile98 - - percentile99 - - trimmed-mean - - trimmed-mean1 - - trimmed-mean2 - - trimmed-mean3 - - trimmed-mean5 - - trimmed-mean10 - - trimmed-mean15 - - trimmed-mean20 - - trimmed-mean25 - - trimmed-median - - trimmed-median1 - - trimmed-median2 - - trimmed-median3 - - trimmed-median5 - - trimmed-median10 - - trimmed-median15 - - trimmed-median20 - - trimmed-median25 - default: average - - name: group_options - in: query - description: When the group function supports additional parameters, this field - can be used to pass them to it. Currently only "countif" supports this. - required: false - allowEmptyValue: false - schema: - type: string - responses: - "200": - description: JSON object with weights for each context, chart and dimension. - content: - application/json: - schema: - $ref: "#/components/schemas/weights" - "400": - description: The given parameters are invalid. - "403": - description: metrics correlations are not enabled on this Netdata Agent. - "404": - description: No charts could be found, or the method - that correlated the metrics did not produce any result. - "504": - description: Timeout - the query took too long and has been cancelled. -servers: - - url: https://registry.my-netdata.io/api/v1 - - url: http://registry.my-netdata.io/api/v1 components: + parameters: + scopeNodes: + name: scope_nodes + in: query + description: | + A simple pattern limiting the nodes scope of the query. The scope controls both data and metadata response. The simple pattern is checked against the nodes' machine guid, node id and hostname. The default nodes scope is all nodes for which this agent has data for. Usually the nodes scope is used to slice the entire dashboard (e.g. the Global Nodes Selector at the Netdata Cloud overview dashboard). Both positive and negative simple pattern expressions are supported. + required: false + schema: + type: string + format: simple pattern + default: "*" + scopeContexts: + name: scope_contexts + in: query + description: | + A simple pattern limiting the contexts scope of the query. The scope controls both data and metadata response. The default contexts scope is all contexts for which this agent has data for. Usually the contexts scope is used to slice data on the dashboard (e.g. each context based chart has its own contexts scope, limiting the chart to all the instances of the selected context). Both positive and negative simple pattern expressions are supported. + required: false + schema: + type: string + format: simple pattern + default: "*" + filterNodes: + name: nodes + in: query + description: | + A simple pattern matching the nodes to be queried. This only controls the data response, not the metadata. The simple pattern is checked against the nodes' machine guid, node id, hostname. The default nodes selector is all the nodes matched by the nodes scope. Both positive and negative simple pattern expressions are supported. + required: false + schema: + type: string + format: simple pattern + default: "*" + filterContexts: + name: contexts + in: query + description: | + A simple pattern matching the contexts to be queried. This only controls the data response, not the metadata. Both positive and negative simple pattern expressions are supported. + required: false + schema: + type: string + format: simple pattern + default: "*" + filterInstances: + name: instances + in: query + description: | + A simple pattern matching the instances to be queried. The simple pattern is checked against the instance `id`, the instance `name`, the fully qualified name of the instance `id` and `name`, like `instance@machine_guid`, where `instance` is either its `id` or `name`. Both positive and negative simple pattern expressions are supported. + required: false + schema: + type: string + format: simple pattern + default: "*" + filterLabels: + name: labels + in: query + description: | + A simple pattern matching the labels to be queried. The simple pattern is checked against `name:value` of all the labels of all the eligible instances (as filtered by all the above: scope nodes, scope contexts, nodes, contexts and instances). Negative simple patterns should not be used in this filter. + required: false + schema: + type: string + format: simple pattern + default: "*" + filterAlerts: + name: alerts + in: query + description: | + A simple pattern matching the alerts to be queried. The simple pattern is checked against the `name` of alerts and the combination of `name:status`, when status is one of `CLEAR`, `WARNING`, `CRITICAL`, `REMOVED`, `UNDEFINED`, `UNINITIALIZED`, of all the alerts of all the eligible instances (as filtered by all the above). A negative simple pattern will exclude the instances having the labels matched. + required: false + schema: + type: string + format: simple pattern + default: "*" + filterDimensions: + name: dimensions + in: query + description: | + A simple patterns matching the dimensions to be queried. The simple pattern is checked against and `id` and the `name` of the dimensions of the eligible instances (as filtered by all the above). Both positive and negative simple pattern expressions are supported. + required: false + schema: + type: string + format: simple pattern + default: "*" + + dataFormat1: + name: format + in: query + description: The format of the data to be returned. + allowEmptyValue: false + schema: + type: string + enum: + - json + - jsonp + - csv + - tsv + - tsv-excel + - ssv + - ssvcomma + - datatable + - datasource + - html + - markdown + - array + - csvjsonarray + default: json + dataFormat2: + name: format + in: query + description: The format of the data to be returned. + allowEmptyValue: false + schema: + type: string + enum: + - json + - json2 + - jsonp + - csv + - tsv + - tsv-excel + - ssv + - ssvcomma + - datatable + - datasource + - html + - markdown + - array + - csvjsonarray + default: json2 + dataQueryOptions: + name: options + in: query + description: | + Options that affect data generation. + * `jsonwrap` - Wrap the output in a JSON object with metadata about the query. + * `raw` - change the output so that it is aggregatable across multiple such queries. Supported by `/api/v2` data queries and `json2` format. + * `minify` - Remove unnecessary spaces and newlines from the output. + * `debug` - Provide additional information in `jsonwrap` output to help tracing issues. + * `nonzero` - Do not return dimensions that all their values are zero, to improve the visual appearance of charts. They will still be returned if all the dimensions are entirely zero. + * `null2zero` - Replace `null` values with `0`. + * `absolute` or `abs` - Traditionally Netdata returns select dimensions negative to improve visual appearance. This option turns this feature off. + * `display-absolute` - Only used by badges, to do color calculation using the signed value, but render the value without a sign. + * `flip` or `reversed` - Order the timestamps array in reverse order (newest to oldest). + * `min2max` - When flattening multi-dimensional data into a single metric format, use `max - min` instead of `sum`. This is EOL - use `/api/v2` to control aggregation across dimensions. + * `percentage` - Convert all values into a percentage vs the row total. When enabled, Netdata will query all dimensions, even the ones that have not been selected or are hidden, to find the row total, in order to calculate the percentage of each dimension selected. + * `seconds` - Output timestamps in seconds instead of dates. + * `milliseconds` or `ms` - Output timestamps in milliseconds instead of dates. + * `unaligned` - by default queries are aligned to the the view, so that as time passes past data returned do not change. When a data query will not be used for visualization, `unaligned` can be given to avoid aligning the query time-frame for visual precision. + * `match-ids`, `match-names`. By default filters match both IDs and names when they are available. Setting either of the two options will disable the other. + * `anomaly-bit` - query the anomaly information instead of metric values. This is EOL, use `/api/v2` and `json2` format which always returns this information and many more. + * `jw-anomaly-rates` - return anomaly rates as a separate result set in the same `json` format response. This is EOL, use `/api/v2` and `json2` format which always returns information and many more. + * `details` - `/api/v2/data` returns in `jsonwrap` the full tree of dimensions that have been matched by the query. + * `group-by-labels` - `/api/v2/data` returns in `jsonwrap` flattened labels per output dimension. These are used to identify the instances that have been aggregated into each dimension, making it possible to provide a map, like Netdata does for Kubernetes. + * `natural-points` - return timestamps as found in the database. The result is again fixed-step, but the query engine attempts to align them with the timestamps found in the database. + * `virtual-points` - return timestamps independent of the database alignment. This is needed aggregating data across multiple Netdata agents, to ensure that their outputs do not need to be interpolated to be merged. + * `selected-tier` - use data exclusively from the selected tier given with the `tier` parameter. This option is set automatically when the `tier` parameter is set. + * `all-dimensions` - In `/api/v1` `jsonwrap` include metadata for all candidate metrics examined. In `/api/v2` this is standard behavior and no option is needed. + * `label-quotes` - In `csv` output format, enclose each header label in quotes. + * `objectrows` - Each row of value should be an object, not an array (only for `json` format). + * `google_json` - Comply with google JSON/JSONP specs (only for `json` format). + required: false + allowEmptyValue: false + schema: + type: array + items: + type: string + enum: + - jsonwrap + - raw + - minify + - debug + - nonzero + - null2zero + - abs + - absolute + - display-absolute + - flip + - reversed + - min2max + - percentage + - seconds + - ms + - milliseconds + - unaligned + - match-ids + - match-names + - anomaly-bit + - jw-anomaly-rates + - details + - group-by-labels + - natural-points + - virtual-points + - selected-tier + - all-dimensions + - label-quotes + - objectrows + - google_json + default: + - seconds + - jsonwrap + dataTimeGroup1: + name: group + in: query + description: | + Time aggregation function. If multiple collected values are to be grouped in order to return fewer points, this parameters defines the method of grouping. If the `absolute` option is set, the values are turned positive before applying this calculation. + required: false + schema: + type: string + enum: + - min + - max + - avg + - average + - median + - stddev + - sum + - incremental-sum + - ses + - des + - cv + - countif + - percentile + - percentile25 + - percentile50 + - percentile75 + - percentile80 + - percentile90 + - percentile95 + - percentile97 + - percentile98 + - percentile99 + - trimmed-mean + - trimmed-mean1 + - trimmed-mean2 + - trimmed-mean3 + - trimmed-mean5 + - trimmed-mean10 + - trimmed-mean15 + - trimmed-mean20 + - trimmed-mean25 + - trimmed-median + - trimmed-median1 + - trimmed-median2 + - trimmed-median3 + - trimmed-median5 + - trimmed-median10 + - trimmed-median15 + - trimmed-median20 + - trimmed-median25 + default: average + dataTimeGroup2: + name: time_group + in: query + description: | + Time aggregation function. If multiple collected values are to be grouped in order to return fewer points, this parameters defines the method of grouping. If the `absolute` option is set, the values are turned positive before applying this calculation. + required: false + schema: + type: string + enum: + - min + - max + - avg + - average + - median + - stddev + - sum + - incremental-sum + - ses + - des + - cv + - countif + - percentile + - percentile25 + - percentile50 + - percentile75 + - percentile80 + - percentile90 + - percentile95 + - percentile97 + - percentile98 + - percentile99 + - trimmed-mean + - trimmed-mean1 + - trimmed-mean2 + - trimmed-mean3 + - trimmed-mean5 + - trimmed-mean10 + - trimmed-mean15 + - trimmed-mean20 + - trimmed-mean25 + - trimmed-median + - trimmed-median1 + - trimmed-median2 + - trimmed-median3 + - trimmed-median5 + - trimmed-median10 + - trimmed-median15 + - trimmed-median20 + - trimmed-median25 + default: average + dataTimeGroupOptions1: + name: group_options + in: query + description: | + When the time grouping function supports additional parameters, this field can be used to pass them to it. Currently `countif`, `trimmed-mean`, `trimmed-median` and `percentile` support this. For `countif` the string may start with `<`, `<=`, `<:`, `<>`, `!=`, `>`, `>=`, `>:`. For all others just a number is expected. + required: false + schema: + type: string + dataTimeGroupOptions2: + name: time_group_options + in: query + description: | + When the time grouping function supports additional parameters, this field can be used to pass them to it. Currently `countif`, `trimmed-mean`, `trimmed-median` and `percentile` support this. For `countif` the string may start with `<`, `<=`, `<:`, `<>`, `!=`, `>`, `>=`, `>:`. For all others just a number is expected. + required: false + schema: + type: string + dataTimeResampling1: + name: gtime + in: query + description: | + The grouping number of seconds. This is used in conjunction with group=average to change the units of metrics (ie when the data is per-second, setting gtime=60 will turn them to per-minute). + required: false + allowEmptyValue: false + schema: + type: number + format: integer + default: 0 + dataTimeResampling2: + name: time_resampling + in: query + description: | + For incremental values that are "per second", this value is used to resample them to "per minute` (60) or "per hour" (3600). It can only be used in conjunction with group=average. + required: false + schema: + type: number + format: integer + default: 0 + timeoutMS: + name: timeout + in: query + description: | + Specify a timeout value in milliseconds after which the agent will abort the query and return a 503 error. A value of 0 indicates no timeout. + required: false + schema: + type: number + format: integer + default: 0 + timeoutSecs: + name: timeout + in: query + description: | + Specify a timeout value in seconds after which the agent will abort the query and return a 504 error. A value of 0 indicates no timeout, but some endpoints, like `weights`, do not accept infinite timeouts (they have a predefined default), so to disable the timeout it must be set to a really high value. + required: false + schema: + type: number + format: integer + default: 0 + before: + name: before + in: query + description: | + `after` and `before` define the time-frame of a query. `before` can be a negative number of seconds, up to 3 years (-94608000), relative to current clock. If not set, it is assumed to be the current clock time. When `before` is positive, it is assumed to be a unix epoch timestamp. When non-data endpoints support the `after` and `before`, they use the time-frame to limit their response for objects having data retention within the time-frame given. + required: false + schema: + type: integer + default: 0 + after: + name: after + in: query + description: | + `after` and `before` define the time-frame of a query. `after` can be a negative number of seconds, up to 3 years (-94608000), relative to `before`. If not set, it is usually assumed to be -600. When non-data endpoints support the `after` and `before`, they use the time-frame to limit their response for objects having data retention within the time-frame given. + required: false + schema: + type: integer + default: -600 + baselineBefore: + name: baseline_before + in: query + description: | + `baseline_after` and `baseline_before` define the baseline time-frame of a comparative query. `baseline_before` can be a negative number of seconds, up to 3 years (-94608000), relative to current clock. If not set, it is assumed to be the current clock time. When `baseline_before` is positive, it is assumed to be a unix epoch timestamp. + required: false + schema: + type: integer + default: 0 + baselineAfter: + name: baseline_after + in: query + description: | + `baseline_after` and `baseline_before` define the baseline time-frame of a comparative query. `baseline_after` can be a negative number of seconds, up to 3 years (-94608000), relative to `baseline_before`. If not set, it is usually assumed to be -300. + required: false + schema: + type: integer + default: -600 + points: + name: points + in: query + description: | + The number of points to be returned. If not given, or it is <= 0, or it is bigger than the points stored in the database for the given duration, all the available collected values for the given duration will be returned. For `weights` endpoints that do statistical analysis, the `points` define the detail of this analysis (the default is 500). + required: false + schema: + type: number + format: integer + default: 0 + tier: + name: tier + in: query + description: | + Use only the given dbengine tier for executing the query. Setting this parameters automatically sets the option `selected-tier` for the query. + required: false + schema: + type: number + format: integer + callback: + name: callback + in: query + description: | + For JSONP responses, the callback function name. + required: false + schema: + type: string + filename: + name: filename + in: query + description: | + Add `Content-Disposition: attachment; filename=` header to the response, that will instruct the browser to save the response with the given filename." + required: false + schema: + type: string + tqx: + name: tqx + in: query + description: | + [Google Visualization API](https://developers.google.com/chart/interactive/docs/dev/implementing_data_source?hl=en) formatted parameter. + required: false + schema: + type: string + contextOptions1: + name: options + in: query + description: Options that affect data generation. + required: false + schema: + type: array + items: + type: string + enum: + - full + - all + - charts + - dimensions + - labels + - uuids + - queue + - flags + - deleted + - deepscan + chart: + name: chart + in: query + description: The id of the chart as returned by the `/api/v1/charts` call. + required: false + allowEmptyValue: false + schema: + type: string + format: as returned by `/api/v1/charts` + context: + name: context + in: query + description: The context of the chart as returned by the /charts call. + required: false + allowEmptyValue: false + schema: + type: string + format: as returned by /charts + dimension: + name: dimension + in: query + description: Zero, one or more dimension ids or names, as returned by the /chart + call, separated with comma or pipe. Netdata simple patterns are + supported. + required: false + allowEmptyValue: false + schema: + type: array + items: + type: string + format: as returned by /charts + dimensions: + name: dimensions + in: query + description: a simple pattern matching dimensions (use comma or pipe as separator) + required: false + allowEmptyValue: true + schema: + type: string + chart_label_key: + name: chart_label_key + in: query + description: | + Specify the chart label keys that need to match for context queries as comma separated values. At least one matching key is needed to match the corresponding chart. + required: false + allowEmptyValue: false + schema: + type: string + format: key1,key2,key3 + chart_labels_filter: + name: chart_labels_filter + in: query + description: | + Specify the chart label keys and values to match for context queries. All keys/values need to match for the chart to be included in the query. The labels are specified as key1:value1,key2:value2 + required: false + allowEmptyValue: false + schema: + type: string + format: key1:value1,key2:value2,key3:value3 + weightMethods: + name: method + in: query + description: The weighting / scoring algorithm. + required: false + schema: + type: string + enum: + - ks2 + - volume + - anomaly-rate + - value schemas: info: type: object @@ -1857,10 +1865,8 @@ components: amount of time is kept in the round robin database. dimensions: type: object - description: "An object containing all the chart dimensions available for the - chart. This is used as an indexed array. For each pair in the - dictionary: the key is the id of the dimension and the value is a - dictionary containing the name." + description: | + An object containing all the chart dimensions available for the chart. This is used as an indexed array. For each pair in the dictionary: the key is the id of the dimension and the value is a dictionary containing the name." additionalProperties: type: object properties: @@ -1998,7 +2004,612 @@ components: varname2: type: number format: float - data: + jsonwrap2: + description: | + Data response with `format=json2` + type: object + properties: + api: + $ref: '#/components/schemas/api' + agents: + $ref: '#/components/schemas/agents' + versions: + $ref: '#/components/schemas/versions' + summary: + description: | + Summarized information about nodes, contexts, instances, labels, alerts, and dimensions. The items returned are determined by the scope of the query only, however the statistical data in them are influenced by the filters of the query. Using this information the dashboard allows users to slice and dice the data by filtering and grouping. + type: object + properties: + nodes: + type: array + items: + $ref: '#/components/schemas/nodeWithDataStatistics' + contexts: + type: array + items: + type: object + description: | + An object describing a unique context. `is` stands for instances, `ds` for dimensions, `al` for alerts, `sts` for statistics. + properties: + id: + description: the context id. + type: string + is: + $ref: "#/components/schemas/jsonwrap2_items_count" + ds: + $ref: "#/components/schemas/jsonwrap2_items_count" + al: + $ref: "#/components/schemas/jsonwrap2_alerts_count" + sts: + oneOf: + - $ref: "#/components/schemas/jsonwrap2_sts" + - $ref: "#/components/schemas/jsonwrap2_sts_raw" + instances: + type: array + items: + type: object + description: | + An object describing an instance. `ds` stands for dimensions, `al` for alerts, `sts` for statistics. + properties: + id: + description: the id of the instance. + type: string + nm: + description: the name of the instance (may be absent when it is the same with the id) + type: string + ni: + description: the node index id this instance belongs to. The UI uses this to compone the fully qualified name of the instance, using the node hostname to present it to users and its machine guid to add it to filters. + ds: + $ref: "#/components/schemas/jsonwrap2_items_count" + al: + $ref: "#/components/schemas/jsonwrap2_alerts_count" + sts: + oneOf: + - $ref: "#/components/schemas/jsonwrap2_sts" + - $ref: "#/components/schemas/jsonwrap2_sts_raw" + dimensions: + type: array + items: + type: object + description: | + An object describing a unique dimension. `ds` stands for `dimensions`, `sts` for statistics. + properties: + id: + description: the id of the dimension. + type: string + nm: + description: the name of the dimension (may be absent when it is the same with the id) + type: string + ds: + $ref: "#/components/schemas/jsonwrap2_items_count" + sts: + oneOf: + - $ref: "#/components/schemas/jsonwrap2_sts" + - $ref: "#/components/schemas/jsonwrap2_sts_raw" + labels: + type: array + items: + type: object + description: | + An object describing a label key. `ds` stands for `dimensions`, `sts` for statistics. + properties: + id: + description: the key of the label. + type: string + ds: + $ref: "#/components/schemas/jsonwrap2_items_count" + sts: + oneOf: + - $ref: "#/components/schemas/jsonwrap2_sts" + - $ref: "#/components/schemas/jsonwrap2_sts_raw" + vl: + description: | + An array of values for this key. + type: array + items: + type: object + properties: + id: + description: The value string + type: string + ds: + $ref: "#/components/schemas/jsonwrap2_items_count" + sts: + oneOf: + - $ref: "#/components/schemas/jsonwrap2_sts" + - $ref: "#/components/schemas/jsonwrap2_sts_raw" + alerts: + description: | + An array of all the unique alerts running, grouped by alert name (`nm` is available here) + type: array + items: + $ref: "#/components/schemas/jsonwrap2_alerts_count" + totals: + type: object + properties: + nodes: + $ref: "#/components/schemas/jsonwrap2_items_count" + contexts: + $ref: "#/components/schemas/jsonwrap2_items_count" + instances: + $ref: "#/components/schemas/jsonwrap2_items_count" + dimensions: + $ref: "#/components/schemas/jsonwrap2_items_count" + label_keys: + $ref: "#/components/schemas/jsonwrap2_items_count" + label_key_values: + $ref: "#/components/schemas/jsonwrap2_items_count" + functions: + type: array + items: + type: string + db: + type: object + properties: + tiers: + description: | + The number of tiers this server is using. + type: integer + update_every: + description: | + The minimum update every, in seconds, for all tiers and all metrics aggregated into this query. + type: integer + first_entry: + description: | + The minimum unix epoch timestamp of the retention across all tiers for all metrics aggregated into this query. + type: integer + last_entry: + description: | + The maximum unix epoch timestamp of the retention across all tier for all metrics aggregated into this query. + type: integer + per_tier: + description: | + An array with information for each of the tiers available, related to this query. + type: array + items: + type: object + properties: + tier: + description: | + The tier number of this tier, starting at 0. + type: integer + queries: + description: | + The number of queries executed on this tier. Usually one query per metric is made, but the query may cross multiple tier, in which case more than one query per metric is made. + type: integer + points: + description: | + The number of points read from this tier. + type: integer + update_every: + description: | + The minimum resolution of all metrics queried on this tier. + type: integer + first_entry: + description: | + The minimum unix epoch timestamp available across all metrics that used this tier. This reflects the oldest timestamp of the tier's retention. + type: integer + last_entry: + description: | + The maximum unix epoch timestamp available across all metrics that used this tier. This reflects the newest timestamp of the tier's retention. + units: + description: | + The units of the database data + oneOf: + - type: string + - type: array + items: + type: string + dimensions: + type: object + properties: + ids: + description: | + An array with the dimension ids that uniquely identify the dimensions for this query. It is the same with `view.dimensions.ids`. + type: array + items: + type: string + units: + description: | + An array with the units each dimension has in the database (independent of group-by aggregation that may override the units). + type: array + items: + type: string + sts: + description: | + Statistics about the data collection points used for each dimension. + oneOf: + - $ref: "#/components/schemas/jsonwrap2_sts" + - $ref: "#/components/schemas/jsonwrap2_sts_raw" + view: + type: object + properties: + title: + description: | + The title the chart should have. + type: string + format: + description: | + The format the `result` top level member has. Available on when `debug` flag is set. + type: string + options: + description: | + An array presenting all the options given to the query. Available on when `debug` flag is set. + type: array + items: + type: string + time_group: + description: | + The same as the parameter `time_group`. Available on when `debug` flag is set. + type: string + after: + description: | + The oldest unix epoch timestamp of the data returned in the `result`. + type: integer + before: + description: | + The newest unix epoch timestamp of the data returned in the `result`. + type: integer + partial_data_trimming: + description: | + Information related to trimming of the last few points of the `result`, that was required to remove (increasing) partial data. + Trimming is disabled when the `raw` option is given to the query. + This object is available only when the `debug` flag is set. + type: object + properties: + max_update_every: + description: | + The maximum `update_every` for all metrics aggregated into the query. + Trimming is by default enabled at `view.before - max_update_every`, but only when `view.before >= now - max_update_every`. + type: integer + expected_after: + description: | + The timestamp at which trimming can be enabled. + If this timestamp is greater or equal to `view.before`, there is no trimming. + type: integer + trimmed_after: + description: | + The timestamp at which trimming has been applied. + If this timestamp is greater or equal to `view.before`, there is no trimming. + points: + description: | + The number of points in `result`. Available only when `raw` is given. + type: integer + units: + description: | + The units of the query. + oneOf: + - type: string + - type: array + items: + type: string + chart_type: + description: | + The default chart type of the query. + type: string + enum: + - line + - area + - stacked + dimensions: + description: | + Detailed information about the chart dimensions included in the `result`. + type: object + properties: + grouped_by: + description: | + An array with the order of the groupings performed. + type: array + items: + type: string + enum: + - selected + - dimension + - instance + - node + - context + - units + - "label:key1" + - "label:key2" + - "label:keyN" + ids: + description: | + An array with the dimension ids that uniquely identify the dimensions for this query. + type: array + items: + type: string + names: + description: | + An array with the dimension names to be presented to users. Names may be overlapping, but IDs are not. + type: array + items: + type: string + priorities: + description: | + An array with the relative priorities of the dimensions. + Numbers may not be sequential or unique. The application is expected to order by this and then by name. + type: array + items: + type: integer + aggregated: + description: | + An array with the number of source metrics aggregated into each dimension. + type: array + items: + type: integer + units: + description: | + An array with the units each dimension has. + type: array + items: + type: string + sts: + description: | + Statistics about the view points for each dimension. + oneOf: + - $ref: "#/components/schemas/jsonwrap2_sts" + - $ref: "#/components/schemas/jsonwrap2_sts_raw" + labels: + description: | + The labels associated with each dimension in the query. + This object is only available when the `group-by-labels` option is given to the query. + type: object + properties: + label_key1: + description: | + An array having one entry for each of the dimensions of the query. + type: array + items: + description: | + An array having one entry for each of the values this label key has for the given dimension. + type: array + items: + type: string + min: + description: | + The minimum value of all points included in the `result`. + type: number + max: + description: | + The maximum value of all points included in the `result`. + type: number + result: + $ref: '#/components/schemas/data_json_formats2' + timings: + type: object + jsonwrap2_sts: + description: | + Statistical values + type: object + properties: + min: + description: The minimum value of all metrics aggregated + type: number + max: + description: The maximum value of all metrics aggregated + type: number + avg: + description: The average value of all metrics aggregated + type: number + arp: + description: The average anomaly rate of all metrics aggregated + type: number + con: + description: The contribution percentage of all the metrics aggregated + type: number + jsonwrap2_sts_raw: + description: | + Statistical values when `raw` option is given. + type: object + properties: + min: + description: The minimum value of all metrics aggregated + type: number + max: + description: The maximum value of all metrics aggregated + type: number + sum: + description: The sum value of all metrics aggregated + type: number + ars: + description: The sum anomaly rate of all metrics aggregated + type: number + vol: + description: The volume of all the metrics aggregated + type: number + cnt: + description: The count of all metrics aggregated + type: integer + jsonwrap2_items_count: + description: | + Depending on the placement of this object, `items` may be `nodes`, `contexts`, `instances`, `dimensions`, `label keys`, `label key-value pairs`. Furthermore, if the whole object is missing it should be assumed that all its members are zero. + type: object + properties: + sl: + description: The number of items `selected` to query. If absent it is zero. + type: integer + ex: + description: The number of items `excluded` from querying. If absent it is zero. + type: integer + qr: + description: The number of items (out of `selected`) the query successfully `queried`. If absent it is zero. + type: integer + fl: + description: The number of items (from `selected`) that `failed` to be queried. If absent it is zero. + type: integer + jsonwrap2_alerts_count: + description: | + Counters about alert statuses. If this object is missing, it is assumed that all its members are zero. + type: object + properties: + nm: + description: The name of the alert. Can be absent when the counters refer to more than one alert instances. + type: string + cl: + description: The number of CLEAR alerts. If absent, it is zero. + type: integer + wr: + description: The number of WARNING alerts. If absent, it is zero. + type: integer + cr: + description: The number of CRITICAL alerts. If absent, it is zero. + type: integer + ot: + description: | + The number of alerts that are not CLEAR, WARNING, CRITICAL (so, they are "other"). If absent, it is zero. + type: integer + api: + description: The version of the API used. + type: integer + agents: + description: | + An array of agent definitions consulted to compose this response. + type: array + items: + type: object + properties: + mg: + description: The agent machine GUID. + type: string + format: uuid + nd: + description: The agent cloud node ID. + type: string + format: uuid + nm: + description: The agent hostname. + type: string + ai: + description: The agent index ID for this agent, in this response. + type: integer + now: + description: The current unix epoch timestamp of this agent. + type: integer + versions: + description: | + Hashes that allow the caller to detect important database changes of Netdata agents. + type: object + properties: + nodes_hard_hash: + description: | + An auto-increment value that reflects the number of changes to the number of nodes maintained by the server. Everytime a node is added or removed, this number gets incremented. + type: integer + contexts_hard_hash: + description: | + An auto-increment value that reflects the number of changes to the number of contexts maintained by the server. Everytime a context is added or removed, this number gets incremented. + type: integer + contexts_soft_hash: + description: | + An auto-increment value that reflects the number of changes to the queue that sends contexts updates to Netdata Cloud. Everytime the contents of a context are updated, this number gets incremented. + type: integer + alerts_hard_hash: + description: | + An auto-increment value that reflects the number of changes to the number of alerts. Everytime an alert is added or removed, this number gets incremented. + type: integer + alerts_soft_hash: + description: | + An auto-increment value that reflects the number of alerts transitions. Everytime an alert transitions to a new state, this number gets incremented. + type: integer + nodeBasic: + type: object + description: Basic information about a node. + required: + - ni + - st + properties: + mg: + description: The machine guid of the node. May not be available if the request is served by the Netdata Cloud. + type: string + format: UUID + nd: + description: The node id of the node. May not be available if the node is not registered to Netdata Cloud. + type: string + format: UUID + nm: + description: The name (hostname) of the node. + type: string + ni: + description: The node index id, a number that uniquely identifies this node for this query. + type: integer + st: + description: Status information about the communication with this node. + type: object + properties: + ai: + description: The agent index id that has been contacted for this node. + type: integer + code: + description: The HTTP response code of the response for this node. When working directly with an agent, this is always 200. If the `code` is missing, it should be assumed to be 200. + type: integer + msg: + description: A human readable description of the error, if any. If `msg` is missing, or is the empty string `""` or is `null`, there is no description associated with the current status. + type: string + ms: + description: The time in milliseconds this node took to respond, or if the local agent responded for this node, the time it needed to execute the query. If `ms` is missing, the time that was required to query this node is unknown. + type: number + nodeWithDataStatistics: + allOf: + - $ref: '#/components/schemas/nodeBasic' + - type: object + description: | + `is` stands for instances, `ds` for dimensions, `al` for alerts, `sts` for statistics. + properties: + is: + $ref: "#/components/schemas/jsonwrap2_items_count" + ds: + $ref: "#/components/schemas/jsonwrap2_items_count" + al: + $ref: "#/components/schemas/jsonwrap2_alerts_count" + sts: + oneOf: + - $ref: "#/components/schemas/jsonwrap2_sts" + - $ref: "#/components/schemas/jsonwrap2_sts_raw" + nodeFull: + allOf: + - $ref: '#/components/schemas/nodeBasic' + - type: object + properties: + version: + description: The version of the Netdata Agent the node runs. + type: string + hops: + description: How many hops away from the origin node, the queried one is. 0 means the agent itself is the origin node. + type: integer + state: + description: The current state of the node on this agent. + type: string + enum: + - reachable + - stale + - offline + context2Basic: + type: object + properties: + family: + type: string + priority: + type: integer + first_entry: + type: integer + last_entry: + type: integer + live: + type: boolean + contexts2: + description: | + `/api/v2/contexts` and `/api/v2/q` response about multi-node contexts hosted by a Netdata agent. + type: object + properties: + api: + $ref: '#/components/schemas/api' + agents: + $ref: '#/components/schemas/agents' + versions: + $ref: '#/components/schemas/versions' + contexts: + additionalProperties: + $ref: '#/components/schemas/context2Basic' + jsonwrap1: type: object discriminator: propertyName: format @@ -2007,7 +2618,7 @@ components: properties: api: type: number - description: The API version this conforms to, currently 1. + description: The API version this conforms to. id: type: string description: The unique id of the chart. @@ -2080,101 +2691,132 @@ components: chart_variables: type: object additionalProperties: - $ref: "#/components/schemas/chart_variables" + $ref: '#/components/schemas/chart_variables' + result: + $ref: '#/components/schemas/data_json_formats1' + data_json_formats1: + description: | + Depending on the `format` given to a data query, any of the following may be returned. + oneOf: + - $ref: '#/components/schemas/data_json' + - $ref: '#/components/schemas/data_datatable' + - $ref: '#/components/schemas/data_csvjsonarray' + - $ref: '#/components/schemas/data_array' + - $ref: '#/components/schemas/data_txt' + data_json_formats2: + description: | + Depending on the `format` given to a data query, any of the following may be returned. + oneOf: + - $ref: '#/components/schemas/data_json2' + - $ref: '#/components/schemas/data_json_formats1' + data_json2: + type: object + properties: + labels: + description: | + The IDs of the dimensions returned. The first is always `time`. + type: array + items: + type: string + point: + description: | + The format of each point returned. + type: object + properties: + value: + description: | + The index of the value in each point. + type: integer + arp: + description: | + The index of the anomaly rate in each point. + type: integer + pa: + description: | + The index of the point annotations in each point. + This is a bitmap. `EMPTY = 1`, `RESET = 2`, `PARTIAL = 4`. + `EMPTY` means the point has no value. + `RESET` means that at least one metric aggregated experienced an overflow (a counter that wrapped). + `PARTIAL` means that this point should have more metrics aggregated into it, but not all metrics had data. + type: integer + count: + description: | + The number of metrics aggregated into this point. This exists only when the option `raw` is given to the query. + type: integer + data: + type: array + items: + allOf: + - type: integer + - type: array data_json: - description: Data response in json format. - allOf: - - $ref: "#/components/schemas/data" - - properties: - result: - type: object - properties: - labels: - description: The dimensions retrieved from the chart. - type: array - items: - type: string - data: - description: The data requested, one element per sample with each element - containing the values of the dimensions described in the - labels value. - type: array - items: - type: number - description: The result requested, in the format requested. - data_flat: - description: Data response in csv / tsv / tsv-excel / ssv / ssv-comma / markdown / - html formats. - allOf: - - $ref: "#/components/schemas/data" - - properties: - result: - type: string + description: Data response in `json` format. + type: object + properties: + labels: + description: The dimensions retrieved from the chart. + type: array + items: + type: string + data: + description: | + The data requested, one element per sample with each element containing the values of the dimensions described in the labels value. + type: array + items: + type: number + data_txt: + description: | + Data response in `csv`, `tsv`, `tsv-excel`, `ssv`, `ssv-comma`, `markdown`, `html` formats. + type: string data_array: - description: Data response in array format. - allOf: - - $ref: "#/components/schemas/data" - - properties: - result: - type: array - items: - type: number + description: Data response in `array` format. + type: array + items: + type: number data_csvjsonarray: - description: Data response in csvjsonarray format. - allOf: - - $ref: "#/components/schemas/data" - - properties: - result: - description: The first inner array contains strings showing the labels of - each column, each subsequent array contains the values for each - point in time. - type: array - items: - type: array - items: {} + description: | + The first inner array contains strings showing the labels of each column, each subsequent array contains the values for each point in time. + type: array + items: + type: array + items: {} data_datatable: - description: Data response in datatable / datasource formats (suitable for Google - Charts). - allOf: - - $ref: "#/components/schemas/data" - - properties: - result: - type: object - properties: - cols: - type: array - items: - type: object - properties: - id: - description: Always empty - for future use. - label: - description: The dimension returned from the chart. - pattern: - description: Always empty - for future use. - type: - description: The type of data in the column / chart-dimension. - p: - description: Contains any annotations for the column. - required: - - id - - label - - pattern - - type - rows: - type: array - items: - type: object - properties: - c: - type: array - items: - properties: - v: - description: "Each value in the row is represented by an - object named `c` with five v fields: data, null, - null, 0, the value. This format is fixed by the - Google Charts API." + description: | + Data response in datatable / datasource formats (suitable for Google Charts). + type: object + properties: + cols: + type: array + items: + type: object + properties: + id: + description: Always empty - for future use. + label: + description: The dimension returned from the chart. + pattern: + description: Always empty - for future use. + type: + description: The type of data in the column / chart-dimension. + p: + description: Contains any annotations for the column. + required: + - id + - label + - pattern + - type + rows: + type: array + items: + type: object + properties: + c: + type: array + items: + properties: + v: + description: | + Each value in the row is represented by an object named `c` with five v fields: data, null, null, 0, the value. This format is fixed by the Google Charts API." alarms: type: object properties: @@ -2419,9 +3061,8 @@ components: properties: aclk-available: type: string - description: "Describes whether this agent is capable of connection to the Cloud. - False means agent has been built without ACLK component either on purpose (user choice) - or due to missing dependency." + description: | + Describes whether this agent is capable of connection to the Cloud. False means agent has been built without ACLK component either on purpose (user choice) or due to missing dependency. aclk-version: type: integer description: Describes which ACLK version is currently used. @@ -2529,6 +3170,8 @@ components: type: number dimension2-name: type: number + weights2: + type: object weights: type: object properties: diff --git a/web/api/queries/README.md b/web/api/queries/README.md index 2a17ac784..dacd2900e 100644 --- a/web/api/queries/README.md +++ b/web/api/queries/README.md @@ -1,11 +1,10 @@ - +# Database queries/lookup -# Database Queries +This document explains in detail the options available to retrieve data from the Netdata timeseries database in order to configure alerts, create badges or +create custom charts. -Netdata database can be queried with `/api/v1/data` and `/api/v1/badge.svg` REST API methods. +The Netdata database can be queried with the `/api/v1/data` and `/api/v1/badge.svg` REST API methods. The database is also queried from the `lookup` line +in an [alert configuration](https://github.com/netdata/netdata/blob/master/health/REFERENCE.md). Every data query accepts the following parameters: @@ -104,18 +103,24 @@ For each value it calls the **grouping method** given with the `&group=` query p The following grouping methods are supported. These are given all the values in the time-frame and they group the values every `group points`. -- ![](https://registry.my-netdata.io/api/v1/badge.svg?chart=web_log_nginx.response_statuses&options=unaligned&dimensions=success&group=min&after=-60&label=min&value_color=blue) finds the minimum value -- ![](https://registry.my-netdata.io/api/v1/badge.svg?chart=web_log_nginx.response_statuses&options=unaligned&dimensions=success&group=max&after=-60&label=max&value_color=lightblue) finds the maximum value -- ![](https://registry.my-netdata.io/api/v1/badge.svg?chart=web_log_nginx.response_statuses&options=unaligned&dimensions=success&group=average&after=-60&label=average&value_color=yellow) finds the average value -- ![](https://registry.my-netdata.io/api/v1/badge.svg?chart=web_log_nginx.response_statuses&options=unaligned&dimensions=success&group=sum&after=-60&label=sum&units=requests&value_color=orange) adds all the values and returns the sum -- ![](https://registry.my-netdata.io/api/v1/badge.svg?chart=web_log_nginx.response_statuses&options=unaligned&dimensions=success&group=median&after=-60&label=median&value_color=red) sorts the values and returns the value in the middle of the list -- ![](https://registry.my-netdata.io/api/v1/badge.svg?chart=web_log_nginx.response_statuses&options=unaligned&dimensions=success&group=stddev&after=-60&label=stddev&value_color=green) finds the standard deviation of the values -- ![](https://registry.my-netdata.io/api/v1/badge.svg?chart=web_log_nginx.response_statuses&options=unaligned&dimensions=success&group=cv&after=-60&label=cv&units=pcent&value_color=yellow) finds the relative standard deviation (coefficient of variation) of the values -- ![](https://registry.my-netdata.io/api/v1/badge.svg?chart=web_log_nginx.response_statuses&options=unaligned&dimensions=success&group=ses&after=-60&label=ses&value_color=brown) finds the exponential weighted moving average of the values -- ![](https://registry.my-netdata.io/api/v1/badge.svg?chart=web_log_nginx.response_statuses&options=unaligned&dimensions=success&group=des&after=-60&label=des&value_color=blue) applies Holt-Winters double exponential smoothing -- ![](https://registry.my-netdata.io/api/v1/badge.svg?chart=web_log_nginx.response_statuses&options=unaligned&dimensions=success&group=incremental_sum&after=-60&label=incremental_sum&value_color=red) finds the difference of the last vs the first value - -The examples shown above, are live information from the `successful` web requests of the global Netdata registry. +- ![](https://registry.my-netdata.io/api/v1/badge.svg?chart=net.eth0&options=unaligned&dimensions=received&group=min&after=-60&label=min&value_color=blue) finds the minimum value +- ![](https://registry.my-netdata.io/api/v1/badge.svg?chart=net.eth0&options=unaligned&dimensions=received&group=max&after=-60&label=max&value_color=lightblue) finds the maximum value +- ![](https://registry.my-netdata.io/api/v1/badge.svg?chart=net.eth0&options=unaligned&dimensions=received&group=average&after=-60&label=average&value_color=yellow) finds the average value +- ![](https://registry.my-netdata.io/api/v1/badge.svg?chart=net.eth0&options=unaligned&dimensions=received&group=sum&units=kilobits&after=-60&label=sum&value_color=orange) adds all the values and returns the sum +- ![](https://registry.my-netdata.io/api/v1/badge.svg?chart=net.eth0&options=unaligned&dimensions=received&group=median&after=-60&label=median&value_color=red) sorts the values and returns the value in the middle of the list +- ![](https://registry.my-netdata.io/api/v1/badge.svg?chart=net.eth0&options=unaligned&dimensions=received&group=stddev&after=-60&label=stddev&value_color=green) finds the standard deviation of the values +- ![](https://registry.my-netdata.io/api/v1/badge.svg?chart=net.eth0&options=unaligned&dimensions=received&group=cv&after=-60&label=cv&units=pcent&value_color=yellow) finds the relative standard deviation (coefficient of variation) of the values +- ![](https://registry.my-netdata.io/api/v1/badge.svg?chart=net.eth0&options=unaligned&dimensions=received&group=ses&after=-60&label=ses&value_color=brown) finds the exponential weighted moving average of the values +- ![](https://registry.my-netdata.io/api/v1/badge.svg?chart=net.eth0&options=unaligned&dimensions=received&group=des&after=-60&label=des&value_color=blue) applies Holt-Winters double exponential smoothing +- ![](https://registry.my-netdata.io/api/v1/badge.svg?chart=net.eth0&options=unaligned&dimensions=received&group=incremental_sum&after=-60&label=incremental_sum&value_color=red) finds the difference of the last vs the first value + +The examples shown above show live information from the `received` traffic on the `eth0` interface of the global Netdata registry. +Inspect any of the badges to see the parameters provided. You can directly issue the request to the registry server's API yourself, e.g. by +passing the following to get the value shown on the badge for the sum of the values within the period: + +``` +https://registry.my-netdata.io/api/v1/data?chart=net.eth0&options=unaligned&dimensions=received&group=sum&units=kilobits&after=-60&label=sum&points=1 +``` ## Further processing diff --git a/web/api/queries/average/README.md b/web/api/queries/average/README.md index b8d4ba7e7..c9aa402cb 100644 --- a/web/api/queries/average/README.md +++ b/web/api/queries/average/README.md @@ -1,6 +1,10 @@ # Average or Mean diff --git a/web/api/queries/average/average.c b/web/api/queries/average/average.c index 0719d57fa..f54dcb243 100644 --- a/web/api/queries/average/average.c +++ b/web/api/queries/average/average.c @@ -2,58 +2,3 @@ #include "average.h" -// ---------------------------------------------------------------------------- -// average - -struct grouping_average { - NETDATA_DOUBLE sum; - size_t count; -}; - -void grouping_create_average(RRDR *r, const char *options __maybe_unused) { - r->internal.grouping_data = onewayalloc_callocz(r->internal.owa, 1, sizeof(struct grouping_average)); -} - -// resets when switches dimensions -// so, clear everything to restart -void grouping_reset_average(RRDR *r) { - struct grouping_average *g = (struct grouping_average *)r->internal.grouping_data; - g->sum = 0; - g->count = 0; -} - -void grouping_free_average(RRDR *r) { - onewayalloc_freez(r->internal.owa, r->internal.grouping_data); - r->internal.grouping_data = NULL; -} - -void grouping_add_average(RRDR *r, NETDATA_DOUBLE value) { - struct grouping_average *g = (struct grouping_average *)r->internal.grouping_data; - g->sum += value; - g->count++; -} - -NETDATA_DOUBLE grouping_flush_average(RRDR *r, RRDR_VALUE_FLAGS *rrdr_value_options_ptr) { - struct grouping_average *g = (struct grouping_average *)r->internal.grouping_data; - - NETDATA_DOUBLE value; - - if(unlikely(!g->count)) { - value = 0.0; - *rrdr_value_options_ptr |= RRDR_VALUE_EMPTY; - } - else { - if(unlikely(r->internal.resampling_group != 1)) { - if (unlikely(r->result_options & RRDR_RESULT_OPTION_VARIABLE_STEP)) - value = g->sum / g->count / r->internal.resampling_divisor; - else - value = g->sum / r->internal.resampling_divisor; - } else - value = g->sum / g->count; - } - - g->sum = 0.0; - g->count = 0; - - return value; -} diff --git a/web/api/queries/average/average.h b/web/api/queries/average/average.h index b31966886..2d77cc571 100644 --- a/web/api/queries/average/average.h +++ b/web/api/queries/average/average.h @@ -6,10 +6,57 @@ #include "../query.h" #include "../rrdr.h" -void grouping_create_average(RRDR *r, const char *options __maybe_unused); -void grouping_reset_average(RRDR *r); -void grouping_free_average(RRDR *r); -void grouping_add_average(RRDR *r, NETDATA_DOUBLE value); -NETDATA_DOUBLE grouping_flush_average(RRDR *r, RRDR_VALUE_FLAGS *rrdr_value_options_ptr); +// ---------------------------------------------------------------------------- +// average + +struct tg_average { + NETDATA_DOUBLE sum; + size_t count; +}; + +static inline void tg_average_create(RRDR *r, const char *options __maybe_unused) { + r->time_grouping.data = onewayalloc_callocz(r->internal.owa, 1, sizeof(struct tg_average)); +} + +// resets when switches dimensions +// so, clear everything to restart +static inline void tg_average_reset(RRDR *r) { + struct tg_average *g = (struct tg_average *)r->time_grouping.data; + g->sum = 0; + g->count = 0; +} + +static inline void tg_average_free(RRDR *r) { + onewayalloc_freez(r->internal.owa, r->time_grouping.data); + r->time_grouping.data = NULL; +} + +static inline void tg_average_add(RRDR *r, NETDATA_DOUBLE value) { + struct tg_average *g = (struct tg_average *)r->time_grouping.data; + g->sum += value; + g->count++; +} + +static inline NETDATA_DOUBLE tg_average_flush(RRDR *r, RRDR_VALUE_FLAGS *rrdr_value_options_ptr) { + struct tg_average *g = (struct tg_average *)r->time_grouping.data; + + NETDATA_DOUBLE value; + + if(unlikely(!g->count)) { + value = 0.0; + *rrdr_value_options_ptr |= RRDR_VALUE_EMPTY; + } + else { + if(unlikely(r->time_grouping.resampling_group != 1)) + value = g->sum / r->time_grouping.resampling_divisor; + else + value = g->sum / g->count; + } + + g->sum = 0.0; + g->count = 0; + + return value; +} #endif //NETDATA_API_QUERY_AVERAGE_H diff --git a/web/api/queries/countif/README.md b/web/api/queries/countif/README.md index 200a4c9ed..37b3f6423 100644 --- a/web/api/queries/countif/README.md +++ b/web/api/queries/countif/README.md @@ -1,6 +1,10 @@ # CountIf diff --git a/web/api/queries/countif/countif.c b/web/api/queries/countif/countif.c index 369b20be9..8a3a1f50b 100644 --- a/web/api/queries/countif/countif.c +++ b/web/api/queries/countif/countif.c @@ -5,132 +5,3 @@ // ---------------------------------------------------------------------------- // countif -struct grouping_countif { - size_t (*comparison)(NETDATA_DOUBLE, NETDATA_DOUBLE); - NETDATA_DOUBLE target; - size_t count; - size_t matched; -}; - -static size_t countif_equal(NETDATA_DOUBLE v, NETDATA_DOUBLE target) { - return (v == target); -} - -static size_t countif_notequal(NETDATA_DOUBLE v, NETDATA_DOUBLE target) { - return (v != target); -} - -static size_t countif_less(NETDATA_DOUBLE v, NETDATA_DOUBLE target) { - return (v < target); -} - -static size_t countif_lessequal(NETDATA_DOUBLE v, NETDATA_DOUBLE target) { - return (v <= target); -} - -static size_t countif_greater(NETDATA_DOUBLE v, NETDATA_DOUBLE target) { - return (v > target); -} - -static size_t countif_greaterequal(NETDATA_DOUBLE v, NETDATA_DOUBLE target) { - return (v >= target); -} - -void grouping_create_countif(RRDR *r, const char *options __maybe_unused) { - struct grouping_countif *g = onewayalloc_callocz(r->internal.owa, 1, sizeof(struct grouping_countif)); - r->internal.grouping_data = g; - - if(options && *options) { - // skip any leading spaces - while(isspace(*options)) options++; - - // find the comparison function - switch(*options) { - case '!': - options++; - if(*options != '=' && *options != ':') - options--; - g->comparison = countif_notequal; - break; - - case '>': - options++; - if(*options == '=' || *options == ':') { - g->comparison = countif_greaterequal; - } - else { - options--; - g->comparison = countif_greater; - } - break; - - case '<': - options++; - if(*options == '>') { - g->comparison = countif_notequal; - } - else if(*options == '=' || *options == ':') { - g->comparison = countif_lessequal; - } - else { - options--; - g->comparison = countif_less; - } - break; - - default: - case '=': - case ':': - g->comparison = countif_equal; - break; - } - if(*options) options++; - - // skip everything up to the first digit - while(isspace(*options)) options++; - - g->target = str2ndd(options, NULL); - } - else { - g->target = 0.0; - g->comparison = countif_equal; - } -} - -// resets when switches dimensions -// so, clear everything to restart -void grouping_reset_countif(RRDR *r) { - struct grouping_countif *g = (struct grouping_countif *)r->internal.grouping_data; - g->matched = 0; - g->count = 0; -} - -void grouping_free_countif(RRDR *r) { - onewayalloc_freez(r->internal.owa, r->internal.grouping_data); - r->internal.grouping_data = NULL; -} - -void grouping_add_countif(RRDR *r, NETDATA_DOUBLE value) { - struct grouping_countif *g = (struct grouping_countif *)r->internal.grouping_data; - g->matched += g->comparison(value, g->target); - g->count++; -} - -NETDATA_DOUBLE grouping_flush_countif(RRDR *r, RRDR_VALUE_FLAGS *rrdr_value_options_ptr) { - struct grouping_countif *g = (struct grouping_countif *)r->internal.grouping_data; - - NETDATA_DOUBLE value; - - if(unlikely(!g->count)) { - value = 0.0; - *rrdr_value_options_ptr |= RRDR_VALUE_EMPTY; - } - else { - value = (NETDATA_DOUBLE)g->matched * 100 / (NETDATA_DOUBLE)g->count; - } - - g->matched = 0; - g->count = 0; - - return value; -} diff --git a/web/api/queries/countif/countif.h b/web/api/queries/countif/countif.h index dfe805658..896b9d873 100644 --- a/web/api/queries/countif/countif.h +++ b/web/api/queries/countif/countif.h @@ -6,10 +6,143 @@ #include "../query.h" #include "../rrdr.h" -void grouping_create_countif(RRDR *r, const char *options __maybe_unused); -void grouping_reset_countif(RRDR *r); -void grouping_free_countif(RRDR *r); -void grouping_add_countif(RRDR *r, NETDATA_DOUBLE value); -NETDATA_DOUBLE grouping_flush_countif(RRDR *r, RRDR_VALUE_FLAGS *rrdr_value_options_ptr); +enum tg_countif_cmp { + TG_COUNTIF_EQUAL, + TG_COUNTIF_NOTEQUAL, + TG_COUNTIF_LESS, + TG_COUNTIF_LESSEQUAL, + TG_COUNTIF_GREATER, + TG_COUNTIF_GREATEREQUAL, +}; + +struct tg_countif { + enum tg_countif_cmp comparison; + NETDATA_DOUBLE target; + size_t count; + size_t matched; +}; + +static inline void tg_countif_create(RRDR *r, const char *options __maybe_unused) { + struct tg_countif *g = onewayalloc_callocz(r->internal.owa, 1, sizeof(struct tg_countif)); + r->time_grouping.data = g; + + if(options && *options) { + // skip any leading spaces + while(isspace(*options)) options++; + + // find the comparison function + switch(*options) { + case '!': + options++; + if(*options != '=' && *options != ':') + options--; + g->comparison = TG_COUNTIF_NOTEQUAL; + break; + + case '>': + options++; + if(*options == '=' || *options == ':') { + g->comparison = TG_COUNTIF_GREATEREQUAL; + } + else { + options--; + g->comparison = TG_COUNTIF_GREATER; + } + break; + + case '<': + options++; + if(*options == '>') { + g->comparison = TG_COUNTIF_NOTEQUAL; + } + else if(*options == '=' || *options == ':') { + g->comparison = TG_COUNTIF_LESSEQUAL; + } + else { + options--; + g->comparison = TG_COUNTIF_LESS; + } + break; + + default: + case '=': + case ':': + g->comparison = TG_COUNTIF_EQUAL; + break; + } + if(*options) options++; + + // skip everything up to the first digit + while(isspace(*options)) options++; + + g->target = str2ndd(options, NULL); + } + else { + g->target = 0.0; + g->comparison = TG_COUNTIF_EQUAL; + } +} + +// resets when switches dimensions +// so, clear everything to restart +static inline void tg_countif_reset(RRDR *r) { + struct tg_countif *g = (struct tg_countif *)r->time_grouping.data; + g->matched = 0; + g->count = 0; +} + +static inline void tg_countif_free(RRDR *r) { + onewayalloc_freez(r->internal.owa, r->time_grouping.data); + r->time_grouping.data = NULL; +} + +static inline void tg_countif_add(RRDR *r, NETDATA_DOUBLE value) { + struct tg_countif *g = (struct tg_countif *)r->time_grouping.data; + switch(g->comparison) { + case TG_COUNTIF_GREATER: + if(value > g->target) g->matched++; + break; + + case TG_COUNTIF_GREATEREQUAL: + if(value >= g->target) g->matched++; + break; + + case TG_COUNTIF_LESS: + if(value < g->target) g->matched++; + break; + + case TG_COUNTIF_LESSEQUAL: + if(value <= g->target) g->matched++; + break; + + case TG_COUNTIF_EQUAL: + if(value == g->target) g->matched++; + break; + + case TG_COUNTIF_NOTEQUAL: + if(value != g->target) g->matched++; + break; + } + g->count++; +} + +static inline NETDATA_DOUBLE tg_countif_flush(RRDR *r, RRDR_VALUE_FLAGS *rrdr_value_options_ptr) { + struct tg_countif *g = (struct tg_countif *)r->time_grouping.data; + + NETDATA_DOUBLE value; + + if(unlikely(!g->count)) { + value = 0.0; + *rrdr_value_options_ptr |= RRDR_VALUE_EMPTY; + } + else { + value = (NETDATA_DOUBLE)g->matched * 100 / (NETDATA_DOUBLE)g->count; + } + + g->matched = 0; + g->count = 0; + + return value; +} #endif //NETDATA_API_QUERY_COUNTIF_H diff --git a/web/api/queries/des/README.md b/web/api/queries/des/README.md index 33c5f1a0c..b12751a40 100644 --- a/web/api/queries/des/README.md +++ b/web/api/queries/des/README.md @@ -1,6 +1,10 @@ # double exponential smoothing diff --git a/web/api/queries/des/des.c b/web/api/queries/des/des.c index a6c4e4051..d0e234e23 100644 --- a/web/api/queries/des/des.c +++ b/web/api/queries/des/des.c @@ -6,132 +6,3 @@ // ---------------------------------------------------------------------------- // single exponential smoothing - -struct grouping_des { - NETDATA_DOUBLE alpha; - NETDATA_DOUBLE alpha_other; - NETDATA_DOUBLE beta; - NETDATA_DOUBLE beta_other; - - NETDATA_DOUBLE level; - NETDATA_DOUBLE trend; - - size_t count; -}; - -static size_t max_window_size = 15; - -void grouping_init_des(void) { - long long ret = config_get_number(CONFIG_SECTION_WEB, "des max window", (long long)max_window_size); - if(ret <= 1) { - config_set_number(CONFIG_SECTION_WEB, "des max window", (long long)max_window_size); - } - else { - max_window_size = (size_t) ret; - } -} - -static inline NETDATA_DOUBLE window(RRDR *r, struct grouping_des *g) { - (void)g; - - NETDATA_DOUBLE points; - if(r->group == 1) { - // provide a running DES - points = (NETDATA_DOUBLE)r->internal.points_wanted; - } - else { - // provide a SES with flush points - points = (NETDATA_DOUBLE)r->group; - } - - // https://en.wikipedia.org/wiki/Moving_average#Exponential_moving_average - // A commonly used value for alpha is 2 / (N + 1) - return (points > (NETDATA_DOUBLE)max_window_size) ? (NETDATA_DOUBLE)max_window_size : points; -} - -static inline void set_alpha(RRDR *r, struct grouping_des *g) { - // https://en.wikipedia.org/wiki/Moving_average#Exponential_moving_average - // A commonly used value for alpha is 2 / (N + 1) - - g->alpha = 2.0 / (window(r, g) + 1.0); - g->alpha_other = 1.0 - g->alpha; - - //info("alpha for chart '%s' is " CALCULATED_NUMBER_FORMAT, r->st->name, g->alpha); -} - -static inline void set_beta(RRDR *r, struct grouping_des *g) { - // https://en.wikipedia.org/wiki/Moving_average#Exponential_moving_average - // A commonly used value for alpha is 2 / (N + 1) - - g->beta = 2.0 / (window(r, g) + 1.0); - g->beta_other = 1.0 - g->beta; - - //info("beta for chart '%s' is " CALCULATED_NUMBER_FORMAT, r->st->name, g->beta); -} - -void grouping_create_des(RRDR *r, const char *options __maybe_unused) { - struct grouping_des *g = (struct grouping_des *)onewayalloc_mallocz(r->internal.owa, sizeof(struct grouping_des)); - set_alpha(r, g); - set_beta(r, g); - g->level = 0.0; - g->trend = 0.0; - g->count = 0; - r->internal.grouping_data = g; -} - -// resets when switches dimensions -// so, clear everything to restart -void grouping_reset_des(RRDR *r) { - struct grouping_des *g = (struct grouping_des *)r->internal.grouping_data; - g->level = 0.0; - g->trend = 0.0; - g->count = 0; - - // fprintf(stderr, "\nDES: "); - -} - -void grouping_free_des(RRDR *r) { - onewayalloc_freez(r->internal.owa, r->internal.grouping_data); - r->internal.grouping_data = NULL; -} - -void grouping_add_des(RRDR *r, NETDATA_DOUBLE value) { - struct grouping_des *g = (struct grouping_des *)r->internal.grouping_data; - - if(likely(g->count > 0)) { - // we have at least a number so far - - if(unlikely(g->count == 1)) { - // the second value we got - g->trend = value - g->trend; - g->level = value; - } - - // for the values, except the first - NETDATA_DOUBLE last_level = g->level; - g->level = (g->alpha * value) + (g->alpha_other * (g->level + g->trend)); - g->trend = (g->beta * (g->level - last_level)) + (g->beta_other * g->trend); - } - else { - // the first value we got - g->level = g->trend = value; - } - - g->count++; - - //fprintf(stderr, "value: " CALCULATED_NUMBER_FORMAT ", level: " CALCULATED_NUMBER_FORMAT ", trend: " CALCULATED_NUMBER_FORMAT "\n", value, g->level, g->trend); -} - -NETDATA_DOUBLE grouping_flush_des(RRDR *r, RRDR_VALUE_FLAGS *rrdr_value_options_ptr) { - struct grouping_des *g = (struct grouping_des *)r->internal.grouping_data; - - if(unlikely(!g->count || !netdata_double_isnumber(g->level))) { - *rrdr_value_options_ptr |= RRDR_VALUE_EMPTY; - return 0.0; - } - - //fprintf(stderr, " RESULT for %zu values = " CALCULATED_NUMBER_FORMAT " \n", g->count, g->level); - - return g->level; -} diff --git a/web/api/queries/des/des.h b/web/api/queries/des/des.h index 05fa01b34..3153d497c 100644 --- a/web/api/queries/des/des.h +++ b/web/api/queries/des/des.h @@ -6,12 +6,133 @@ #include "../query.h" #include "../rrdr.h" -void grouping_init_des(void); +struct tg_des { + NETDATA_DOUBLE alpha; + NETDATA_DOUBLE alpha_other; + NETDATA_DOUBLE beta; + NETDATA_DOUBLE beta_other; -void grouping_create_des(RRDR *r, const char *options __maybe_unused); -void grouping_reset_des(RRDR *r); -void grouping_free_des(RRDR *r); -void grouping_add_des(RRDR *r, NETDATA_DOUBLE value); -NETDATA_DOUBLE grouping_flush_des(RRDR *r, RRDR_VALUE_FLAGS *rrdr_value_options_ptr); + NETDATA_DOUBLE level; + NETDATA_DOUBLE trend; + + size_t count; +}; + +static size_t tg_des_max_window_size = 15; + +static inline void tg_des_init(void) { + long long ret = config_get_number(CONFIG_SECTION_WEB, "des max tg_des_window", (long long)tg_des_max_window_size); + if(ret <= 1) { + config_set_number(CONFIG_SECTION_WEB, "des max tg_des_window", (long long)tg_des_max_window_size); + } + else { + tg_des_max_window_size = (size_t) ret; + } +} + +static inline NETDATA_DOUBLE tg_des_window(RRDR *r, struct tg_des *g) { + (void)g; + + NETDATA_DOUBLE points; + if(r->view.group == 1) { + // provide a running DES + points = (NETDATA_DOUBLE)r->time_grouping.points_wanted; + } + else { + // provide a SES with flush points + points = (NETDATA_DOUBLE)r->view.group; + } + + // https://en.wikipedia.org/wiki/Moving_average#Exponential_moving_average + // A commonly used value for alpha is 2 / (N + 1) + return (points > (NETDATA_DOUBLE)tg_des_max_window_size) ? (NETDATA_DOUBLE)tg_des_max_window_size : points; +} + +static inline void tg_des_set_alpha(RRDR *r, struct tg_des *g) { + // https://en.wikipedia.org/wiki/Moving_average#Exponential_moving_average + // A commonly used value for alpha is 2 / (N + 1) + + g->alpha = 2.0 / (tg_des_window(r, g) + 1.0); + g->alpha_other = 1.0 - g->alpha; + + //info("alpha for chart '%s' is " CALCULATED_NUMBER_FORMAT, r->st->name, g->alpha); +} + +static inline void tg_des_set_beta(RRDR *r, struct tg_des *g) { + // https://en.wikipedia.org/wiki/Moving_average#Exponential_moving_average + // A commonly used value for alpha is 2 / (N + 1) + + g->beta = 2.0 / (tg_des_window(r, g) + 1.0); + g->beta_other = 1.0 - g->beta; + + //info("beta for chart '%s' is " CALCULATED_NUMBER_FORMAT, r->st->name, g->beta); +} + +static inline void tg_des_create(RRDR *r, const char *options __maybe_unused) { + struct tg_des *g = (struct tg_des *)onewayalloc_mallocz(r->internal.owa, sizeof(struct tg_des)); + tg_des_set_alpha(r, g); + tg_des_set_beta(r, g); + g->level = 0.0; + g->trend = 0.0; + g->count = 0; + r->time_grouping.data = g; +} + +// resets when switches dimensions +// so, clear everything to restart +static inline void tg_des_reset(RRDR *r) { + struct tg_des *g = (struct tg_des *)r->time_grouping.data; + g->level = 0.0; + g->trend = 0.0; + g->count = 0; + + // fprintf(stderr, "\nDES: "); + +} + +static inline void tg_des_free(RRDR *r) { + onewayalloc_freez(r->internal.owa, r->time_grouping.data); + r->time_grouping.data = NULL; +} + +static inline void tg_des_add(RRDR *r, NETDATA_DOUBLE value) { + struct tg_des *g = (struct tg_des *)r->time_grouping.data; + + if(likely(g->count > 0)) { + // we have at least a number so far + + if(unlikely(g->count == 1)) { + // the second value we got + g->trend = value - g->trend; + g->level = value; + } + + // for the values, except the first + NETDATA_DOUBLE last_level = g->level; + g->level = (g->alpha * value) + (g->alpha_other * (g->level + g->trend)); + g->trend = (g->beta * (g->level - last_level)) + (g->beta_other * g->trend); + } + else { + // the first value we got + g->level = g->trend = value; + } + + g->count++; + + //fprintf(stderr, "value: " CALCULATED_NUMBER_FORMAT ", level: " CALCULATED_NUMBER_FORMAT ", trend: " CALCULATED_NUMBER_FORMAT "\n", value, g->level, g->trend); +} + +static inline NETDATA_DOUBLE tg_des_flush(RRDR *r, RRDR_VALUE_FLAGS *rrdr_value_options_ptr) { + struct tg_des *g = (struct tg_des *)r->time_grouping.data; + + if(unlikely(!g->count || !netdata_double_isnumber(g->level))) { + *rrdr_value_options_ptr |= RRDR_VALUE_EMPTY; + return 0.0; + } + + //fprintf(stderr, " RESULT for %zu values = " CALCULATED_NUMBER_FORMAT " \n", g->count, g->level); + + return g->level; +} #endif //NETDATA_API_QUERIES_DES_H diff --git a/web/api/queries/incremental_sum/README.md b/web/api/queries/incremental_sum/README.md index 44301172e..9b89f3188 100644 --- a/web/api/queries/incremental_sum/README.md +++ b/web/api/queries/incremental_sum/README.md @@ -1,6 +1,10 @@ # Incremental Sum (`incremental_sum`) diff --git a/web/api/queries/incremental_sum/incremental_sum.c b/web/api/queries/incremental_sum/incremental_sum.c index afca530c3..88072f297 100644 --- a/web/api/queries/incremental_sum/incremental_sum.c +++ b/web/api/queries/incremental_sum/incremental_sum.c @@ -5,62 +5,3 @@ // ---------------------------------------------------------------------------- // incremental sum -struct grouping_incremental_sum { - NETDATA_DOUBLE first; - NETDATA_DOUBLE last; - size_t count; -}; - -void grouping_create_incremental_sum(RRDR *r, const char *options __maybe_unused) { - r->internal.grouping_data = onewayalloc_callocz(r->internal.owa, 1, sizeof(struct grouping_incremental_sum)); -} - -// resets when switches dimensions -// so, clear everything to restart -void grouping_reset_incremental_sum(RRDR *r) { - struct grouping_incremental_sum *g = (struct grouping_incremental_sum *)r->internal.grouping_data; - g->first = 0; - g->last = 0; - g->count = 0; -} - -void grouping_free_incremental_sum(RRDR *r) { - onewayalloc_freez(r->internal.owa, r->internal.grouping_data); - r->internal.grouping_data = NULL; -} - -void grouping_add_incremental_sum(RRDR *r, NETDATA_DOUBLE value) { - struct grouping_incremental_sum *g = (struct grouping_incremental_sum *)r->internal.grouping_data; - - if(unlikely(!g->count)) { - g->first = value; - g->count++; - } - else { - g->last = value; - g->count++; - } -} - -NETDATA_DOUBLE grouping_flush_incremental_sum(RRDR *r, RRDR_VALUE_FLAGS *rrdr_value_options_ptr) { - struct grouping_incremental_sum *g = (struct grouping_incremental_sum *)r->internal.grouping_data; - - NETDATA_DOUBLE value; - - if(unlikely(!g->count)) { - value = 0.0; - *rrdr_value_options_ptr |= RRDR_VALUE_EMPTY; - } - else if(unlikely(g->count == 1)) { - value = 0.0; - } - else { - value = g->last - g->first; - } - - g->first = 0.0; - g->last = 0.0; - g->count = 0; - - return value; -} diff --git a/web/api/queries/incremental_sum/incremental_sum.h b/web/api/queries/incremental_sum/incremental_sum.h index c24507fcf..dd6483b2c 100644 --- a/web/api/queries/incremental_sum/incremental_sum.h +++ b/web/api/queries/incremental_sum/incremental_sum.h @@ -6,10 +6,64 @@ #include "../query.h" #include "../rrdr.h" -void grouping_create_incremental_sum(RRDR *r, const char *options __maybe_unused); -void grouping_reset_incremental_sum(RRDR *r); -void grouping_free_incremental_sum(RRDR *r); -void grouping_add_incremental_sum(RRDR *r, NETDATA_DOUBLE value); -NETDATA_DOUBLE grouping_flush_incremental_sum(RRDR *r, RRDR_VALUE_FLAGS *rrdr_value_options_ptr); +struct tg_incremental_sum { + NETDATA_DOUBLE first; + NETDATA_DOUBLE last; + size_t count; +}; + +static inline void tg_incremental_sum_create(RRDR *r, const char *options __maybe_unused) { + r->time_grouping.data = onewayalloc_callocz(r->internal.owa, 1, sizeof(struct tg_incremental_sum)); +} + +// resets when switches dimensions +// so, clear everything to restart +static inline void tg_incremental_sum_reset(RRDR *r) { + struct tg_incremental_sum *g = (struct tg_incremental_sum *)r->time_grouping.data; + g->first = 0; + g->last = 0; + g->count = 0; +} + +static inline void tg_incremental_sum_free(RRDR *r) { + onewayalloc_freez(r->internal.owa, r->time_grouping.data); + r->time_grouping.data = NULL; +} + +static inline void tg_incremental_sum_add(RRDR *r, NETDATA_DOUBLE value) { + struct tg_incremental_sum *g = (struct tg_incremental_sum *)r->time_grouping.data; + + if(unlikely(!g->count)) { + g->first = value; + g->count++; + } + else { + g->last = value; + g->count++; + } +} + +static inline NETDATA_DOUBLE tg_incremental_sum_flush(RRDR *r, RRDR_VALUE_FLAGS *rrdr_value_options_ptr) { + struct tg_incremental_sum *g = (struct tg_incremental_sum *)r->time_grouping.data; + + NETDATA_DOUBLE value; + + if(unlikely(!g->count)) { + value = 0.0; + *rrdr_value_options_ptr |= RRDR_VALUE_EMPTY; + } + else if(unlikely(g->count == 1)) { + value = 0.0; + } + else { + value = g->last - g->first; + } + + g->first = 0.0; + g->last = 0.0; + g->count = 0; + + return value; +} #endif //NETDATA_API_QUERY_INCREMENTAL_SUM_H diff --git a/web/api/queries/max/README.md b/web/api/queries/max/README.md index 48da7cf08..82749c4ab 100644 --- a/web/api/queries/max/README.md +++ b/web/api/queries/max/README.md @@ -1,6 +1,10 @@ # Max diff --git a/web/api/queries/max/max.c b/web/api/queries/max/max.c index 73cf9fa66..cc5999a29 100644 --- a/web/api/queries/max/max.c +++ b/web/api/queries/max/max.c @@ -5,53 +5,3 @@ // ---------------------------------------------------------------------------- // max -struct grouping_max { - NETDATA_DOUBLE max; - size_t count; -}; - -void grouping_create_max(RRDR *r, const char *options __maybe_unused) { - r->internal.grouping_data = onewayalloc_callocz(r->internal.owa, 1, sizeof(struct grouping_max)); -} - -// resets when switches dimensions -// so, clear everything to restart -void grouping_reset_max(RRDR *r) { - struct grouping_max *g = (struct grouping_max *)r->internal.grouping_data; - g->max = 0; - g->count = 0; -} - -void grouping_free_max(RRDR *r) { - onewayalloc_freez(r->internal.owa, r->internal.grouping_data); - r->internal.grouping_data = NULL; -} - -void grouping_add_max(RRDR *r, NETDATA_DOUBLE value) { - struct grouping_max *g = (struct grouping_max *)r->internal.grouping_data; - - if(!g->count || fabsndd(value) > fabsndd(g->max)) { - g->max = value; - g->count++; - } -} - -NETDATA_DOUBLE grouping_flush_max(RRDR *r, RRDR_VALUE_FLAGS *rrdr_value_options_ptr) { - struct grouping_max *g = (struct grouping_max *)r->internal.grouping_data; - - NETDATA_DOUBLE value; - - if(unlikely(!g->count)) { - value = 0.0; - *rrdr_value_options_ptr |= RRDR_VALUE_EMPTY; - } - else { - value = g->max; - } - - g->max = 0.0; - g->count = 0; - - return value; -} - diff --git a/web/api/queries/max/max.h b/web/api/queries/max/max.h index e2427d26d..c26bb79ad 100644 --- a/web/api/queries/max/max.h +++ b/web/api/queries/max/max.h @@ -6,10 +6,54 @@ #include "../query.h" #include "../rrdr.h" -void grouping_create_max(RRDR *r, const char *options __maybe_unused); -void grouping_reset_max(RRDR *r); -void grouping_free_max(RRDR *r); -void grouping_add_max(RRDR *r, NETDATA_DOUBLE value); -NETDATA_DOUBLE grouping_flush_max(RRDR *r, RRDR_VALUE_FLAGS *rrdr_value_options_ptr); +struct tg_max { + NETDATA_DOUBLE max; + size_t count; +}; + +static inline void tg_max_create(RRDR *r, const char *options __maybe_unused) { + r->time_grouping.data = onewayalloc_callocz(r->internal.owa, 1, sizeof(struct tg_max)); +} + +// resets when switches dimensions +// so, clear everything to restart +static inline void tg_max_reset(RRDR *r) { + struct tg_max *g = (struct tg_max *)r->time_grouping.data; + g->max = 0; + g->count = 0; +} + +static inline void tg_max_free(RRDR *r) { + onewayalloc_freez(r->internal.owa, r->time_grouping.data); + r->time_grouping.data = NULL; +} + +static inline void tg_max_add(RRDR *r, NETDATA_DOUBLE value) { + struct tg_max *g = (struct tg_max *)r->time_grouping.data; + + if(!g->count || fabsndd(value) > fabsndd(g->max)) { + g->max = value; + g->count++; + } +} + +static inline NETDATA_DOUBLE tg_max_flush(RRDR *r, RRDR_VALUE_FLAGS *rrdr_value_options_ptr) { + struct tg_max *g = (struct tg_max *)r->time_grouping.data; + + NETDATA_DOUBLE value; + + if(unlikely(!g->count)) { + value = 0.0; + *rrdr_value_options_ptr |= RRDR_VALUE_EMPTY; + } + else { + value = g->max; + } + + g->max = 0.0; + g->count = 0; + + return value; +} #endif //NETDATA_API_QUERY_MAX_H diff --git a/web/api/queries/median/README.md b/web/api/queries/median/README.md index 5600284c2..15549b3b5 100644 --- a/web/api/queries/median/README.md +++ b/web/api/queries/median/README.md @@ -1,7 +1,11 @@ # Median diff --git a/web/api/queries/median/median.c b/web/api/queries/median/median.c index 40fd4ec3a..9865b485c 100644 --- a/web/api/queries/median/median.c +++ b/web/api/queries/median/median.c @@ -4,137 +4,3 @@ // ---------------------------------------------------------------------------- // median - -struct grouping_median { - size_t series_size; - size_t next_pos; - NETDATA_DOUBLE percent; - - NETDATA_DOUBLE *series; -}; - -void grouping_create_median_internal(RRDR *r, const char *options, NETDATA_DOUBLE def) { - long entries = r->group; - if(entries < 10) entries = 10; - - struct grouping_median *g = (struct grouping_median *)onewayalloc_callocz(r->internal.owa, 1, sizeof(struct grouping_median)); - g->series = onewayalloc_mallocz(r->internal.owa, entries * sizeof(NETDATA_DOUBLE)); - g->series_size = (size_t)entries; - - g->percent = def; - if(options && *options) { - g->percent = str2ndd(options, NULL); - if(!netdata_double_isnumber(g->percent)) g->percent = 0.0; - if(g->percent < 0.0) g->percent = 0.0; - if(g->percent > 50.0) g->percent = 50.0; - } - - g->percent = g->percent / 100.0; - r->internal.grouping_data = g; -} - -void grouping_create_median(RRDR *r, const char *options) { - grouping_create_median_internal(r, options, 0.0); -} -void grouping_create_trimmed_median1(RRDR *r, const char *options) { - grouping_create_median_internal(r, options, 1.0); -} -void grouping_create_trimmed_median2(RRDR *r, const char *options) { - grouping_create_median_internal(r, options, 2.0); -} -void grouping_create_trimmed_median3(RRDR *r, const char *options) { - grouping_create_median_internal(r, options, 3.0); -} -void grouping_create_trimmed_median5(RRDR *r, const char *options) { - grouping_create_median_internal(r, options, 5.0); -} -void grouping_create_trimmed_median10(RRDR *r, const char *options) { - grouping_create_median_internal(r, options, 10.0); -} -void grouping_create_trimmed_median15(RRDR *r, const char *options) { - grouping_create_median_internal(r, options, 15.0); -} -void grouping_create_trimmed_median20(RRDR *r, const char *options) { - grouping_create_median_internal(r, options, 20.0); -} -void grouping_create_trimmed_median25(RRDR *r, const char *options) { - grouping_create_median_internal(r, options, 25.0); -} - -// resets when switches dimensions -// so, clear everything to restart -void grouping_reset_median(RRDR *r) { - struct grouping_median *g = (struct grouping_median *)r->internal.grouping_data; - g->next_pos = 0; -} - -void grouping_free_median(RRDR *r) { - struct grouping_median *g = (struct grouping_median *)r->internal.grouping_data; - if(g) onewayalloc_freez(r->internal.owa, g->series); - - onewayalloc_freez(r->internal.owa, r->internal.grouping_data); - r->internal.grouping_data = NULL; -} - -void grouping_add_median(RRDR *r, NETDATA_DOUBLE value) { - struct grouping_median *g = (struct grouping_median *)r->internal.grouping_data; - - if(unlikely(g->next_pos >= g->series_size)) { - g->series = onewayalloc_doublesize( r->internal.owa, g->series, g->series_size * sizeof(NETDATA_DOUBLE)); - g->series_size *= 2; - } - - g->series[g->next_pos++] = value; -} - -NETDATA_DOUBLE grouping_flush_median(RRDR *r, RRDR_VALUE_FLAGS *rrdr_value_options_ptr) { - struct grouping_median *g = (struct grouping_median *)r->internal.grouping_data; - - size_t available_slots = g->next_pos; - NETDATA_DOUBLE value; - - if(unlikely(!available_slots)) { - value = 0.0; - *rrdr_value_options_ptr |= RRDR_VALUE_EMPTY; - } - else if(available_slots == 1) { - value = g->series[0]; - } - else { - sort_series(g->series, available_slots); - - size_t start_slot = 0; - size_t end_slot = available_slots - 1; - - if(g->percent > 0.0) { - NETDATA_DOUBLE min = g->series[0]; - NETDATA_DOUBLE max = g->series[available_slots - 1]; - NETDATA_DOUBLE delta = (max - min) * g->percent; - - NETDATA_DOUBLE wanted_min = min + delta; - NETDATA_DOUBLE wanted_max = max - delta; - - for (start_slot = 0; start_slot < available_slots; start_slot++) - if (g->series[start_slot] >= wanted_min) break; - - for (end_slot = available_slots - 1; end_slot > start_slot; end_slot--) - if (g->series[end_slot] <= wanted_max) break; - } - - if(start_slot == end_slot) - value = g->series[start_slot]; - else - value = median_on_sorted_series(&g->series[start_slot], end_slot - start_slot + 1); - } - - if(unlikely(!netdata_double_isnumber(value))) { - value = 0.0; - *rrdr_value_options_ptr |= RRDR_VALUE_EMPTY; - } - - //log_series_to_stderr(g->series, g->next_pos, value, "median"); - - g->next_pos = 0; - - return value; -} diff --git a/web/api/queries/median/median.h b/web/api/queries/median/median.h index 9fc159db4..3d6d35925 100644 --- a/web/api/queries/median/median.h +++ b/web/api/queries/median/median.h @@ -6,18 +6,138 @@ #include "../query.h" #include "../rrdr.h" -void grouping_create_median(RRDR *r, const char *options); -void grouping_create_trimmed_median1(RRDR *r, const char *options); -void grouping_create_trimmed_median2(RRDR *r, const char *options); -void grouping_create_trimmed_median3(RRDR *r, const char *options); -void grouping_create_trimmed_median5(RRDR *r, const char *options); -void grouping_create_trimmed_median10(RRDR *r, const char *options); -void grouping_create_trimmed_median15(RRDR *r, const char *options); -void grouping_create_trimmed_median20(RRDR *r, const char *options); -void grouping_create_trimmed_median25(RRDR *r, const char *options); -void grouping_reset_median(RRDR *r); -void grouping_free_median(RRDR *r); -void grouping_add_median(RRDR *r, NETDATA_DOUBLE value); -NETDATA_DOUBLE grouping_flush_median(RRDR *r, RRDR_VALUE_FLAGS *rrdr_value_options_ptr); +struct tg_median { + size_t series_size; + size_t next_pos; + NETDATA_DOUBLE percent; + + NETDATA_DOUBLE *series; +}; + +static inline void tg_median_create_internal(RRDR *r, const char *options, NETDATA_DOUBLE def) { + long entries = r->view.group; + if(entries < 10) entries = 10; + + struct tg_median *g = (struct tg_median *)onewayalloc_callocz(r->internal.owa, 1, sizeof(struct tg_median)); + g->series = onewayalloc_mallocz(r->internal.owa, entries * sizeof(NETDATA_DOUBLE)); + g->series_size = (size_t)entries; + + g->percent = def; + if(options && *options) { + g->percent = str2ndd(options, NULL); + if(!netdata_double_isnumber(g->percent)) g->percent = 0.0; + if(g->percent < 0.0) g->percent = 0.0; + if(g->percent > 50.0) g->percent = 50.0; + } + + g->percent = g->percent / 100.0; + r->time_grouping.data = g; +} + +static inline void tg_median_create(RRDR *r, const char *options) { + tg_median_create_internal(r, options, 0.0); +} +static inline void tg_median_create_trimmed_1(RRDR *r, const char *options) { + tg_median_create_internal(r, options, 1.0); +} +static inline void tg_median_create_trimmed_2(RRDR *r, const char *options) { + tg_median_create_internal(r, options, 2.0); +} +static inline void tg_median_create_trimmed_3(RRDR *r, const char *options) { + tg_median_create_internal(r, options, 3.0); +} +static inline void tg_median_create_trimmed_5(RRDR *r, const char *options) { + tg_median_create_internal(r, options, 5.0); +} +static inline void tg_median_create_trimmed_10(RRDR *r, const char *options) { + tg_median_create_internal(r, options, 10.0); +} +static inline void tg_median_create_trimmed_15(RRDR *r, const char *options) { + tg_median_create_internal(r, options, 15.0); +} +static inline void tg_median_create_trimmed_20(RRDR *r, const char *options) { + tg_median_create_internal(r, options, 20.0); +} +static inline void tg_median_create_trimmed_25(RRDR *r, const char *options) { + tg_median_create_internal(r, options, 25.0); +} + +// resets when switches dimensions +// so, clear everything to restart +static inline void tg_median_reset(RRDR *r) { + struct tg_median *g = (struct tg_median *)r->time_grouping.data; + g->next_pos = 0; +} + +static inline void tg_median_free(RRDR *r) { + struct tg_median *g = (struct tg_median *)r->time_grouping.data; + if(g) onewayalloc_freez(r->internal.owa, g->series); + + onewayalloc_freez(r->internal.owa, r->time_grouping.data); + r->time_grouping.data = NULL; +} + +static inline void tg_median_add(RRDR *r, NETDATA_DOUBLE value) { + struct tg_median *g = (struct tg_median *)r->time_grouping.data; + + if(unlikely(g->next_pos >= g->series_size)) { + g->series = onewayalloc_doublesize( r->internal.owa, g->series, g->series_size * sizeof(NETDATA_DOUBLE)); + g->series_size *= 2; + } + + g->series[g->next_pos++] = value; +} + +static inline NETDATA_DOUBLE tg_median_flush(RRDR *r, RRDR_VALUE_FLAGS *rrdr_value_options_ptr) { + struct tg_median *g = (struct tg_median *)r->time_grouping.data; + + size_t available_slots = g->next_pos; + NETDATA_DOUBLE value; + + if(unlikely(!available_slots)) { + value = 0.0; + *rrdr_value_options_ptr |= RRDR_VALUE_EMPTY; + } + else if(available_slots == 1) { + value = g->series[0]; + } + else { + sort_series(g->series, available_slots); + + size_t start_slot = 0; + size_t end_slot = available_slots - 1; + + if(g->percent > 0.0) { + NETDATA_DOUBLE min = g->series[0]; + NETDATA_DOUBLE max = g->series[available_slots - 1]; + NETDATA_DOUBLE delta = (max - min) * g->percent; + + NETDATA_DOUBLE wanted_min = min + delta; + NETDATA_DOUBLE wanted_max = max - delta; + + for (start_slot = 0; start_slot < available_slots; start_slot++) + if (g->series[start_slot] >= wanted_min) break; + + for (end_slot = available_slots - 1; end_slot > start_slot; end_slot--) + if (g->series[end_slot] <= wanted_max) break; + } + + if(start_slot == end_slot) + value = g->series[start_slot]; + else + value = median_on_sorted_series(&g->series[start_slot], end_slot - start_slot + 1); + } + + if(unlikely(!netdata_double_isnumber(value))) { + value = 0.0; + *rrdr_value_options_ptr |= RRDR_VALUE_EMPTY; + } + + //log_series_to_stderr(g->series, g->next_pos, value, "median"); + + g->next_pos = 0; + + return value; +} #endif //NETDATA_API_QUERIES_MEDIAN_H diff --git a/web/api/queries/min/README.md b/web/api/queries/min/README.md index 495523c04..cf63aaa01 100644 --- a/web/api/queries/min/README.md +++ b/web/api/queries/min/README.md @@ -1,6 +1,10 @@ # Min diff --git a/web/api/queries/min/min.c b/web/api/queries/min/min.c index 1752e9e0c..cefa7cf31 100644 --- a/web/api/queries/min/min.c +++ b/web/api/queries/min/min.c @@ -5,53 +5,3 @@ // ---------------------------------------------------------------------------- // min -struct grouping_min { - NETDATA_DOUBLE min; - size_t count; -}; - -void grouping_create_min(RRDR *r, const char *options __maybe_unused) { - r->internal.grouping_data = onewayalloc_callocz(r->internal.owa, 1, sizeof(struct grouping_min)); -} - -// resets when switches dimensions -// so, clear everything to restart -void grouping_reset_min(RRDR *r) { - struct grouping_min *g = (struct grouping_min *)r->internal.grouping_data; - g->min = 0; - g->count = 0; -} - -void grouping_free_min(RRDR *r) { - onewayalloc_freez(r->internal.owa, r->internal.grouping_data); - r->internal.grouping_data = NULL; -} - -void grouping_add_min(RRDR *r, NETDATA_DOUBLE value) { - struct grouping_min *g = (struct grouping_min *)r->internal.grouping_data; - - if(!g->count || fabsndd(value) < fabsndd(g->min)) { - g->min = value; - g->count++; - } -} - -NETDATA_DOUBLE grouping_flush_min(RRDR *r, RRDR_VALUE_FLAGS *rrdr_value_options_ptr) { - struct grouping_min *g = (struct grouping_min *)r->internal.grouping_data; - - NETDATA_DOUBLE value; - - if(unlikely(!g->count)) { - value = 0.0; - *rrdr_value_options_ptr |= RRDR_VALUE_EMPTY; - } - else { - value = g->min; - } - - g->min = 0.0; - g->count = 0; - - return value; -} - diff --git a/web/api/queries/min/min.h b/web/api/queries/min/min.h index dcdfe252f..3c53dfd1d 100644 --- a/web/api/queries/min/min.h +++ b/web/api/queries/min/min.h @@ -6,10 +6,54 @@ #include "../query.h" #include "../rrdr.h" -void grouping_create_min(RRDR *r, const char *options __maybe_unused); -void grouping_reset_min(RRDR *r); -void grouping_free_min(RRDR *r); -void grouping_add_min(RRDR *r, NETDATA_DOUBLE value); -NETDATA_DOUBLE grouping_flush_min(RRDR *r, RRDR_VALUE_FLAGS *rrdr_value_options_ptr); +struct tg_min { + NETDATA_DOUBLE min; + size_t count; +}; + +static inline void tg_min_create(RRDR *r, const char *options __maybe_unused) { + r->time_grouping.data = onewayalloc_callocz(r->internal.owa, 1, sizeof(struct tg_min)); +} + +// resets when switches dimensions +// so, clear everything to restart +static inline void tg_min_reset(RRDR *r) { + struct tg_min *g = (struct tg_min *)r->time_grouping.data; + g->min = 0; + g->count = 0; +} + +static inline void tg_min_free(RRDR *r) { + onewayalloc_freez(r->internal.owa, r->time_grouping.data); + r->time_grouping.data = NULL; +} + +static inline void tg_min_add(RRDR *r, NETDATA_DOUBLE value) { + struct tg_min *g = (struct tg_min *)r->time_grouping.data; + + if(!g->count || fabsndd(value) < fabsndd(g->min)) { + g->min = value; + g->count++; + } +} + +static inline NETDATA_DOUBLE tg_min_flush(RRDR *r, RRDR_VALUE_FLAGS *rrdr_value_options_ptr) { + struct tg_min *g = (struct tg_min *)r->time_grouping.data; + + NETDATA_DOUBLE value; + + if(unlikely(!g->count)) { + value = 0.0; + *rrdr_value_options_ptr |= RRDR_VALUE_EMPTY; + } + else { + value = g->min; + } + + g->min = 0.0; + g->count = 0; + + return value; +} #endif //NETDATA_API_QUERY_MIN_H diff --git a/web/api/queries/percentile/README.md b/web/api/queries/percentile/README.md index 70afc7420..19ec81ed6 100644 --- a/web/api/queries/percentile/README.md +++ b/web/api/queries/percentile/README.md @@ -1,7 +1,11 @@ # Percentile diff --git a/web/api/queries/percentile/percentile.c b/web/api/queries/percentile/percentile.c index 88f8600dd..da3b32696 100644 --- a/web/api/queries/percentile/percentile.c +++ b/web/api/queries/percentile/percentile.c @@ -4,166 +4,3 @@ // ---------------------------------------------------------------------------- // median - -struct grouping_percentile { - size_t series_size; - size_t next_pos; - NETDATA_DOUBLE percent; - - NETDATA_DOUBLE *series; -}; - -static void grouping_create_percentile_internal(RRDR *r, const char *options, NETDATA_DOUBLE def) { - long entries = r->group; - if(entries < 10) entries = 10; - - struct grouping_percentile *g = (struct grouping_percentile *)onewayalloc_callocz(r->internal.owa, 1, sizeof(struct grouping_percentile)); - g->series = onewayalloc_mallocz(r->internal.owa, entries * sizeof(NETDATA_DOUBLE)); - g->series_size = (size_t)entries; - - g->percent = def; - if(options && *options) { - g->percent = str2ndd(options, NULL); - if(!netdata_double_isnumber(g->percent)) g->percent = 0.0; - if(g->percent < 0.0) g->percent = 0.0; - if(g->percent > 100.0) g->percent = 100.0; - } - - g->percent = g->percent / 100.0; - r->internal.grouping_data = g; -} - -void grouping_create_percentile25(RRDR *r, const char *options) { - grouping_create_percentile_internal(r, options, 25.0); -} -void grouping_create_percentile50(RRDR *r, const char *options) { - grouping_create_percentile_internal(r, options, 50.0); -} -void grouping_create_percentile75(RRDR *r, const char *options) { - grouping_create_percentile_internal(r, options, 75.0); -} -void grouping_create_percentile80(RRDR *r, const char *options) { - grouping_create_percentile_internal(r, options, 80.0); -} -void grouping_create_percentile90(RRDR *r, const char *options) { - grouping_create_percentile_internal(r, options, 90.0); -} -void grouping_create_percentile95(RRDR *r, const char *options) { - grouping_create_percentile_internal(r, options, 95.0); -} -void grouping_create_percentile97(RRDR *r, const char *options) { - grouping_create_percentile_internal(r, options, 97.0); -} -void grouping_create_percentile98(RRDR *r, const char *options) { - grouping_create_percentile_internal(r, options, 98.0); -} -void grouping_create_percentile99(RRDR *r, const char *options) { - grouping_create_percentile_internal(r, options, 99.0); -} - -// resets when switches dimensions -// so, clear everything to restart -void grouping_reset_percentile(RRDR *r) { - struct grouping_percentile *g = (struct grouping_percentile *)r->internal.grouping_data; - g->next_pos = 0; -} - -void grouping_free_percentile(RRDR *r) { - struct grouping_percentile *g = (struct grouping_percentile *)r->internal.grouping_data; - if(g) onewayalloc_freez(r->internal.owa, g->series); - - onewayalloc_freez(r->internal.owa, r->internal.grouping_data); - r->internal.grouping_data = NULL; -} - -void grouping_add_percentile(RRDR *r, NETDATA_DOUBLE value) { - struct grouping_percentile *g = (struct grouping_percentile *)r->internal.grouping_data; - - if(unlikely(g->next_pos >= g->series_size)) { - g->series = onewayalloc_doublesize( r->internal.owa, g->series, g->series_size * sizeof(NETDATA_DOUBLE)); - g->series_size *= 2; - } - - g->series[g->next_pos++] = value; -} - -NETDATA_DOUBLE grouping_flush_percentile(RRDR *r, RRDR_VALUE_FLAGS *rrdr_value_options_ptr) { - struct grouping_percentile *g = (struct grouping_percentile *)r->internal.grouping_data; - - NETDATA_DOUBLE value; - size_t available_slots = g->next_pos; - - if(unlikely(!available_slots)) { - value = 0.0; - *rrdr_value_options_ptr |= RRDR_VALUE_EMPTY; - } - else if(available_slots == 1) { - value = g->series[0]; - } - else { - sort_series(g->series, available_slots); - - NETDATA_DOUBLE min = g->series[0]; - NETDATA_DOUBLE max = g->series[available_slots - 1]; - - if (min != max) { - size_t slots_to_use = (size_t)((NETDATA_DOUBLE)available_slots * g->percent); - if(!slots_to_use) slots_to_use = 1; - - NETDATA_DOUBLE percent_to_use = (NETDATA_DOUBLE)slots_to_use / (NETDATA_DOUBLE)available_slots; - NETDATA_DOUBLE percent_delta = g->percent - percent_to_use; - - NETDATA_DOUBLE percent_interpolation_slot = 0.0; - NETDATA_DOUBLE percent_last_slot = 0.0; - if(percent_delta > 0.0) { - NETDATA_DOUBLE percent_to_use_plus_1_slot = (NETDATA_DOUBLE)(slots_to_use + 1) / (NETDATA_DOUBLE)available_slots; - NETDATA_DOUBLE percent_1slot = percent_to_use_plus_1_slot - percent_to_use; - - percent_interpolation_slot = percent_delta / percent_1slot; - percent_last_slot = 1 - percent_interpolation_slot; - } - - int start_slot, stop_slot, step, last_slot, interpolation_slot; - if(min >= 0.0 && max >= 0.0) { - start_slot = 0; - stop_slot = start_slot + (int)slots_to_use; - last_slot = stop_slot - 1; - interpolation_slot = stop_slot; - step = 1; - } - else { - start_slot = (int)available_slots - 1; - stop_slot = start_slot - (int)slots_to_use; - last_slot = stop_slot + 1; - interpolation_slot = stop_slot; - step = -1; - } - - value = 0.0; - for(int slot = start_slot; slot != stop_slot ; slot += step) - value += g->series[slot]; - - size_t counted = slots_to_use; - if(percent_interpolation_slot > 0.0 && interpolation_slot >= 0 && interpolation_slot < (int)available_slots) { - value += g->series[interpolation_slot] * percent_interpolation_slot; - value += g->series[last_slot] * percent_last_slot; - counted++; - } - - value = value / (NETDATA_DOUBLE)counted; - } - else - value = min; - } - - if(unlikely(!netdata_double_isnumber(value))) { - value = 0.0; - *rrdr_value_options_ptr |= RRDR_VALUE_EMPTY; - } - - //log_series_to_stderr(g->series, g->next_pos, value, "percentile"); - - g->next_pos = 0; - - return value; -} diff --git a/web/api/queries/percentile/percentile.h b/web/api/queries/percentile/percentile.h index 65e335c11..0532f9d3f 100644 --- a/web/api/queries/percentile/percentile.h +++ b/web/api/queries/percentile/percentile.h @@ -6,18 +6,167 @@ #include "../query.h" #include "../rrdr.h" -void grouping_create_percentile25(RRDR *r, const char *options); -void grouping_create_percentile50(RRDR *r, const char *options); -void grouping_create_percentile75(RRDR *r, const char *options); -void grouping_create_percentile80(RRDR *r, const char *options); -void grouping_create_percentile90(RRDR *r, const char *options); -void grouping_create_percentile95(RRDR *r, const char *options); -void grouping_create_percentile97(RRDR *r, const char *options); -void grouping_create_percentile98(RRDR *r, const char *options); -void grouping_create_percentile99(RRDR *r, const char *options ); -void grouping_reset_percentile(RRDR *r); -void grouping_free_percentile(RRDR *r); -void grouping_add_percentile(RRDR *r, NETDATA_DOUBLE value); -NETDATA_DOUBLE grouping_flush_percentile(RRDR *r, RRDR_VALUE_FLAGS *rrdr_value_options_ptr); +struct tg_percentile { + size_t series_size; + size_t next_pos; + NETDATA_DOUBLE percent; + + NETDATA_DOUBLE *series; +}; + +static inline void tg_percentile_create_internal(RRDR *r, const char *options, NETDATA_DOUBLE def) { + long entries = r->view.group; + if(entries < 10) entries = 10; + + struct tg_percentile *g = (struct tg_percentile *)onewayalloc_callocz(r->internal.owa, 1, sizeof(struct tg_percentile)); + g->series = onewayalloc_mallocz(r->internal.owa, entries * sizeof(NETDATA_DOUBLE)); + g->series_size = (size_t)entries; + + g->percent = def; + if(options && *options) { + g->percent = str2ndd(options, NULL); + if(!netdata_double_isnumber(g->percent)) g->percent = 0.0; + if(g->percent < 0.0) g->percent = 0.0; + if(g->percent > 100.0) g->percent = 100.0; + } + + g->percent = g->percent / 100.0; + r->time_grouping.data = g; +} + +static inline void tg_percentile_create_25(RRDR *r, const char *options) { + tg_percentile_create_internal(r, options, 25.0); +} +static inline void tg_percentile_create_50(RRDR *r, const char *options) { + tg_percentile_create_internal(r, options, 50.0); +} +static inline void tg_percentile_create_75(RRDR *r, const char *options) { + tg_percentile_create_internal(r, options, 75.0); +} +static inline void tg_percentile_create_80(RRDR *r, const char *options) { + tg_percentile_create_internal(r, options, 80.0); +} +static inline void tg_percentile_create_90(RRDR *r, const char *options) { + tg_percentile_create_internal(r, options, 90.0); +} +static inline void tg_percentile_create_95(RRDR *r, const char *options) { + tg_percentile_create_internal(r, options, 95.0); +} +static inline void tg_percentile_create_97(RRDR *r, const char *options) { + tg_percentile_create_internal(r, options, 97.0); +} +static inline void tg_percentile_create_98(RRDR *r, const char *options) { + tg_percentile_create_internal(r, options, 98.0); +} +static inline void tg_percentile_create_99(RRDR *r, const char *options) { + tg_percentile_create_internal(r, options, 99.0); +} + +// resets when switches dimensions +// so, clear everything to restart +static inline void tg_percentile_reset(RRDR *r) { + struct tg_percentile *g = (struct tg_percentile *)r->time_grouping.data; + g->next_pos = 0; +} + +static inline void tg_percentile_free(RRDR *r) { + struct tg_percentile *g = (struct tg_percentile *)r->time_grouping.data; + if(g) onewayalloc_freez(r->internal.owa, g->series); + + onewayalloc_freez(r->internal.owa, r->time_grouping.data); + r->time_grouping.data = NULL; +} + +static inline void tg_percentile_add(RRDR *r, NETDATA_DOUBLE value) { + struct tg_percentile *g = (struct tg_percentile *)r->time_grouping.data; + + if(unlikely(g->next_pos >= g->series_size)) { + g->series = onewayalloc_doublesize( r->internal.owa, g->series, g->series_size * sizeof(NETDATA_DOUBLE)); + g->series_size *= 2; + } + + g->series[g->next_pos++] = value; +} + +static inline NETDATA_DOUBLE tg_percentile_flush(RRDR *r, RRDR_VALUE_FLAGS *rrdr_value_options_ptr) { + struct tg_percentile *g = (struct tg_percentile *)r->time_grouping.data; + + NETDATA_DOUBLE value; + size_t available_slots = g->next_pos; + + if(unlikely(!available_slots)) { + value = 0.0; + *rrdr_value_options_ptr |= RRDR_VALUE_EMPTY; + } + else if(available_slots == 1) { + value = g->series[0]; + } + else { + sort_series(g->series, available_slots); + + NETDATA_DOUBLE min = g->series[0]; + NETDATA_DOUBLE max = g->series[available_slots - 1]; + + if (min != max) { + size_t slots_to_use = (size_t)((NETDATA_DOUBLE)available_slots * g->percent); + if(!slots_to_use) slots_to_use = 1; + + NETDATA_DOUBLE percent_to_use = (NETDATA_DOUBLE)slots_to_use / (NETDATA_DOUBLE)available_slots; + NETDATA_DOUBLE percent_delta = g->percent - percent_to_use; + + NETDATA_DOUBLE percent_interpolation_slot = 0.0; + NETDATA_DOUBLE percent_last_slot = 0.0; + if(percent_delta > 0.0) { + NETDATA_DOUBLE percent_to_use_plus_1_slot = (NETDATA_DOUBLE)(slots_to_use + 1) / (NETDATA_DOUBLE)available_slots; + NETDATA_DOUBLE percent_1slot = percent_to_use_plus_1_slot - percent_to_use; + + percent_interpolation_slot = percent_delta / percent_1slot; + percent_last_slot = 1 - percent_interpolation_slot; + } + + int start_slot, stop_slot, step, last_slot, interpolation_slot; + if(min >= 0.0 && max >= 0.0) { + start_slot = 0; + stop_slot = start_slot + (int)slots_to_use; + last_slot = stop_slot - 1; + interpolation_slot = stop_slot; + step = 1; + } + else { + start_slot = (int)available_slots - 1; + stop_slot = start_slot - (int)slots_to_use; + last_slot = stop_slot + 1; + interpolation_slot = stop_slot; + step = -1; + } + + value = 0.0; + for(int slot = start_slot; slot != stop_slot ; slot += step) + value += g->series[slot]; + + size_t counted = slots_to_use; + if(percent_interpolation_slot > 0.0 && interpolation_slot >= 0 && interpolation_slot < (int)available_slots) { + value += g->series[interpolation_slot] * percent_interpolation_slot; + value += g->series[last_slot] * percent_last_slot; + counted++; + } + + value = value / (NETDATA_DOUBLE)counted; + } + else + value = min; + } + + if(unlikely(!netdata_double_isnumber(value))) { + value = 0.0; + *rrdr_value_options_ptr |= RRDR_VALUE_EMPTY; + } + + //log_series_to_stderr(g->series, g->next_pos, value, "percentile"); + + g->next_pos = 0; + + return value; +} #endif //NETDATA_API_QUERIES_PERCENTILE_H diff --git a/web/api/queries/query.c b/web/api/queries/query.c index df7e09799..3770d4770 100644 --- a/web/api/queries/query.c +++ b/web/api/queries/query.c @@ -24,7 +24,8 @@ static struct { const char *name; uint32_t hash; - RRDR_GROUPING value; + RRDR_TIME_GROUPING value; + RRDR_TIME_GROUPING add_flush; // One time initialization for the module. // This is called once, when netdata starts. @@ -59,397 +60,445 @@ static struct { {.name = "average", .hash = 0, .value = RRDR_GROUPING_AVERAGE, + .add_flush = RRDR_GROUPING_AVERAGE, .init = NULL, - .create= grouping_create_average, - .reset = grouping_reset_average, - .free = grouping_free_average, - .add = grouping_add_average, - .flush = grouping_flush_average, + .create= tg_average_create, + .reset = tg_average_reset, + .free = tg_average_free, + .add = tg_average_add, + .flush = tg_average_flush, .tier_query_fetch = TIER_QUERY_FETCH_AVERAGE }, - {.name = "mean", // alias on 'average' + {.name = "avg", // alias on 'average' .hash = 0, .value = RRDR_GROUPING_AVERAGE, + .add_flush = RRDR_GROUPING_AVERAGE, .init = NULL, - .create= grouping_create_average, - .reset = grouping_reset_average, - .free = grouping_free_average, - .add = grouping_add_average, - .flush = grouping_flush_average, + .create= tg_average_create, + .reset = tg_average_reset, + .free = tg_average_free, + .add = tg_average_add, + .flush = tg_average_flush, + .tier_query_fetch = TIER_QUERY_FETCH_AVERAGE + }, + {.name = "mean", // alias on 'average' + .hash = 0, + .value = RRDR_GROUPING_AVERAGE, + .add_flush = RRDR_GROUPING_AVERAGE, + .init = NULL, + .create= tg_average_create, + .reset = tg_average_reset, + .free = tg_average_free, + .add = tg_average_add, + .flush = tg_average_flush, .tier_query_fetch = TIER_QUERY_FETCH_AVERAGE }, {.name = "trimmed-mean1", .hash = 0, .value = RRDR_GROUPING_TRIMMED_MEAN1, + .add_flush = RRDR_GROUPING_TRIMMED_MEAN, .init = NULL, - .create= grouping_create_trimmed_mean1, - .reset = grouping_reset_trimmed_mean, - .free = grouping_free_trimmed_mean, - .add = grouping_add_trimmed_mean, - .flush = grouping_flush_trimmed_mean, + .create= tg_trimmed_mean_create_1, + .reset = tg_trimmed_mean_reset, + .free = tg_trimmed_mean_free, + .add = tg_trimmed_mean_add, + .flush = tg_trimmed_mean_flush, .tier_query_fetch = TIER_QUERY_FETCH_AVERAGE }, {.name = "trimmed-mean2", .hash = 0, .value = RRDR_GROUPING_TRIMMED_MEAN2, + .add_flush = RRDR_GROUPING_TRIMMED_MEAN, .init = NULL, - .create= grouping_create_trimmed_mean2, - .reset = grouping_reset_trimmed_mean, - .free = grouping_free_trimmed_mean, - .add = grouping_add_trimmed_mean, - .flush = grouping_flush_trimmed_mean, + .create= tg_trimmed_mean_create_2, + .reset = tg_trimmed_mean_reset, + .free = tg_trimmed_mean_free, + .add = tg_trimmed_mean_add, + .flush = tg_trimmed_mean_flush, .tier_query_fetch = TIER_QUERY_FETCH_AVERAGE }, {.name = "trimmed-mean3", .hash = 0, .value = RRDR_GROUPING_TRIMMED_MEAN3, + .add_flush = RRDR_GROUPING_TRIMMED_MEAN, .init = NULL, - .create= grouping_create_trimmed_mean3, - .reset = grouping_reset_trimmed_mean, - .free = grouping_free_trimmed_mean, - .add = grouping_add_trimmed_mean, - .flush = grouping_flush_trimmed_mean, + .create= tg_trimmed_mean_create_3, + .reset = tg_trimmed_mean_reset, + .free = tg_trimmed_mean_free, + .add = tg_trimmed_mean_add, + .flush = tg_trimmed_mean_flush, .tier_query_fetch = TIER_QUERY_FETCH_AVERAGE }, {.name = "trimmed-mean5", .hash = 0, - .value = RRDR_GROUPING_TRIMMED_MEAN5, + .value = RRDR_GROUPING_TRIMMED_MEAN, + .add_flush = RRDR_GROUPING_TRIMMED_MEAN, .init = NULL, - .create= grouping_create_trimmed_mean5, - .reset = grouping_reset_trimmed_mean, - .free = grouping_free_trimmed_mean, - .add = grouping_add_trimmed_mean, - .flush = grouping_flush_trimmed_mean, + .create= tg_trimmed_mean_create_5, + .reset = tg_trimmed_mean_reset, + .free = tg_trimmed_mean_free, + .add = tg_trimmed_mean_add, + .flush = tg_trimmed_mean_flush, .tier_query_fetch = TIER_QUERY_FETCH_AVERAGE }, {.name = "trimmed-mean10", .hash = 0, .value = RRDR_GROUPING_TRIMMED_MEAN10, + .add_flush = RRDR_GROUPING_TRIMMED_MEAN, .init = NULL, - .create= grouping_create_trimmed_mean10, - .reset = grouping_reset_trimmed_mean, - .free = grouping_free_trimmed_mean, - .add = grouping_add_trimmed_mean, - .flush = grouping_flush_trimmed_mean, + .create= tg_trimmed_mean_create_10, + .reset = tg_trimmed_mean_reset, + .free = tg_trimmed_mean_free, + .add = tg_trimmed_mean_add, + .flush = tg_trimmed_mean_flush, .tier_query_fetch = TIER_QUERY_FETCH_AVERAGE }, {.name = "trimmed-mean15", .hash = 0, .value = RRDR_GROUPING_TRIMMED_MEAN15, + .add_flush = RRDR_GROUPING_TRIMMED_MEAN, .init = NULL, - .create= grouping_create_trimmed_mean15, - .reset = grouping_reset_trimmed_mean, - .free = grouping_free_trimmed_mean, - .add = grouping_add_trimmed_mean, - .flush = grouping_flush_trimmed_mean, + .create= tg_trimmed_mean_create_15, + .reset = tg_trimmed_mean_reset, + .free = tg_trimmed_mean_free, + .add = tg_trimmed_mean_add, + .flush = tg_trimmed_mean_flush, .tier_query_fetch = TIER_QUERY_FETCH_AVERAGE }, {.name = "trimmed-mean20", .hash = 0, .value = RRDR_GROUPING_TRIMMED_MEAN20, + .add_flush = RRDR_GROUPING_TRIMMED_MEAN, .init = NULL, - .create= grouping_create_trimmed_mean20, - .reset = grouping_reset_trimmed_mean, - .free = grouping_free_trimmed_mean, - .add = grouping_add_trimmed_mean, - .flush = grouping_flush_trimmed_mean, + .create= tg_trimmed_mean_create_20, + .reset = tg_trimmed_mean_reset, + .free = tg_trimmed_mean_free, + .add = tg_trimmed_mean_add, + .flush = tg_trimmed_mean_flush, .tier_query_fetch = TIER_QUERY_FETCH_AVERAGE }, {.name = "trimmed-mean25", .hash = 0, .value = RRDR_GROUPING_TRIMMED_MEAN25, + .add_flush = RRDR_GROUPING_TRIMMED_MEAN, .init = NULL, - .create= grouping_create_trimmed_mean25, - .reset = grouping_reset_trimmed_mean, - .free = grouping_free_trimmed_mean, - .add = grouping_add_trimmed_mean, - .flush = grouping_flush_trimmed_mean, + .create= tg_trimmed_mean_create_25, + .reset = tg_trimmed_mean_reset, + .free = tg_trimmed_mean_free, + .add = tg_trimmed_mean_add, + .flush = tg_trimmed_mean_flush, .tier_query_fetch = TIER_QUERY_FETCH_AVERAGE }, {.name = "trimmed-mean", .hash = 0, - .value = RRDR_GROUPING_TRIMMED_MEAN5, + .value = RRDR_GROUPING_TRIMMED_MEAN, + .add_flush = RRDR_GROUPING_TRIMMED_MEAN, .init = NULL, - .create= grouping_create_trimmed_mean5, - .reset = grouping_reset_trimmed_mean, - .free = grouping_free_trimmed_mean, - .add = grouping_add_trimmed_mean, - .flush = grouping_flush_trimmed_mean, + .create= tg_trimmed_mean_create_5, + .reset = tg_trimmed_mean_reset, + .free = tg_trimmed_mean_free, + .add = tg_trimmed_mean_add, + .flush = tg_trimmed_mean_flush, .tier_query_fetch = TIER_QUERY_FETCH_AVERAGE }, {.name = "incremental_sum", .hash = 0, .value = RRDR_GROUPING_INCREMENTAL_SUM, + .add_flush = RRDR_GROUPING_INCREMENTAL_SUM, .init = NULL, - .create= grouping_create_incremental_sum, - .reset = grouping_reset_incremental_sum, - .free = grouping_free_incremental_sum, - .add = grouping_add_incremental_sum, - .flush = grouping_flush_incremental_sum, + .create= tg_incremental_sum_create, + .reset = tg_incremental_sum_reset, + .free = tg_incremental_sum_free, + .add = tg_incremental_sum_add, + .flush = tg_incremental_sum_flush, .tier_query_fetch = TIER_QUERY_FETCH_AVERAGE }, {.name = "incremental-sum", .hash = 0, .value = RRDR_GROUPING_INCREMENTAL_SUM, + .add_flush = RRDR_GROUPING_INCREMENTAL_SUM, .init = NULL, - .create= grouping_create_incremental_sum, - .reset = grouping_reset_incremental_sum, - .free = grouping_free_incremental_sum, - .add = grouping_add_incremental_sum, - .flush = grouping_flush_incremental_sum, + .create= tg_incremental_sum_create, + .reset = tg_incremental_sum_reset, + .free = tg_incremental_sum_free, + .add = tg_incremental_sum_add, + .flush = tg_incremental_sum_flush, .tier_query_fetch = TIER_QUERY_FETCH_AVERAGE }, {.name = "median", .hash = 0, .value = RRDR_GROUPING_MEDIAN, + .add_flush = RRDR_GROUPING_MEDIAN, .init = NULL, - .create= grouping_create_median, - .reset = grouping_reset_median, - .free = grouping_free_median, - .add = grouping_add_median, - .flush = grouping_flush_median, + .create= tg_median_create, + .reset = tg_median_reset, + .free = tg_median_free, + .add = tg_median_add, + .flush = tg_median_flush, .tier_query_fetch = TIER_QUERY_FETCH_AVERAGE }, {.name = "trimmed-median1", .hash = 0, .value = RRDR_GROUPING_TRIMMED_MEDIAN1, + .add_flush = RRDR_GROUPING_MEDIAN, .init = NULL, - .create= grouping_create_trimmed_median1, - .reset = grouping_reset_median, - .free = grouping_free_median, - .add = grouping_add_median, - .flush = grouping_flush_median, + .create= tg_median_create_trimmed_1, + .reset = tg_median_reset, + .free = tg_median_free, + .add = tg_median_add, + .flush = tg_median_flush, .tier_query_fetch = TIER_QUERY_FETCH_AVERAGE }, {.name = "trimmed-median2", .hash = 0, .value = RRDR_GROUPING_TRIMMED_MEDIAN2, + .add_flush = RRDR_GROUPING_MEDIAN, .init = NULL, - .create= grouping_create_trimmed_median2, - .reset = grouping_reset_median, - .free = grouping_free_median, - .add = grouping_add_median, - .flush = grouping_flush_median, + .create= tg_median_create_trimmed_2, + .reset = tg_median_reset, + .free = tg_median_free, + .add = tg_median_add, + .flush = tg_median_flush, .tier_query_fetch = TIER_QUERY_FETCH_AVERAGE }, {.name = "trimmed-median3", .hash = 0, .value = RRDR_GROUPING_TRIMMED_MEDIAN3, + .add_flush = RRDR_GROUPING_MEDIAN, .init = NULL, - .create= grouping_create_trimmed_median3, - .reset = grouping_reset_median, - .free = grouping_free_median, - .add = grouping_add_median, - .flush = grouping_flush_median, + .create= tg_median_create_trimmed_3, + .reset = tg_median_reset, + .free = tg_median_free, + .add = tg_median_add, + .flush = tg_median_flush, .tier_query_fetch = TIER_QUERY_FETCH_AVERAGE }, {.name = "trimmed-median5", .hash = 0, .value = RRDR_GROUPING_TRIMMED_MEDIAN5, + .add_flush = RRDR_GROUPING_MEDIAN, .init = NULL, - .create= grouping_create_trimmed_median5, - .reset = grouping_reset_median, - .free = grouping_free_median, - .add = grouping_add_median, - .flush = grouping_flush_median, + .create= tg_median_create_trimmed_5, + .reset = tg_median_reset, + .free = tg_median_free, + .add = tg_median_add, + .flush = tg_median_flush, .tier_query_fetch = TIER_QUERY_FETCH_AVERAGE }, {.name = "trimmed-median10", .hash = 0, .value = RRDR_GROUPING_TRIMMED_MEDIAN10, + .add_flush = RRDR_GROUPING_MEDIAN, .init = NULL, - .create= grouping_create_trimmed_median10, - .reset = grouping_reset_median, - .free = grouping_free_median, - .add = grouping_add_median, - .flush = grouping_flush_median, + .create= tg_median_create_trimmed_10, + .reset = tg_median_reset, + .free = tg_median_free, + .add = tg_median_add, + .flush = tg_median_flush, .tier_query_fetch = TIER_QUERY_FETCH_AVERAGE }, {.name = "trimmed-median15", .hash = 0, .value = RRDR_GROUPING_TRIMMED_MEDIAN15, + .add_flush = RRDR_GROUPING_MEDIAN, .init = NULL, - .create= grouping_create_trimmed_median15, - .reset = grouping_reset_median, - .free = grouping_free_median, - .add = grouping_add_median, - .flush = grouping_flush_median, + .create= tg_median_create_trimmed_15, + .reset = tg_median_reset, + .free = tg_median_free, + .add = tg_median_add, + .flush = tg_median_flush, .tier_query_fetch = TIER_QUERY_FETCH_AVERAGE }, {.name = "trimmed-median20", .hash = 0, .value = RRDR_GROUPING_TRIMMED_MEDIAN20, + .add_flush = RRDR_GROUPING_MEDIAN, .init = NULL, - .create= grouping_create_trimmed_median20, - .reset = grouping_reset_median, - .free = grouping_free_median, - .add = grouping_add_median, - .flush = grouping_flush_median, + .create= tg_median_create_trimmed_20, + .reset = tg_median_reset, + .free = tg_median_free, + .add = tg_median_add, + .flush = tg_median_flush, .tier_query_fetch = TIER_QUERY_FETCH_AVERAGE }, {.name = "trimmed-median25", .hash = 0, .value = RRDR_GROUPING_TRIMMED_MEDIAN25, + .add_flush = RRDR_GROUPING_MEDIAN, .init = NULL, - .create= grouping_create_trimmed_median25, - .reset = grouping_reset_median, - .free = grouping_free_median, - .add = grouping_add_median, - .flush = grouping_flush_median, + .create= tg_median_create_trimmed_25, + .reset = tg_median_reset, + .free = tg_median_free, + .add = tg_median_add, + .flush = tg_median_flush, .tier_query_fetch = TIER_QUERY_FETCH_AVERAGE }, {.name = "trimmed-median", .hash = 0, .value = RRDR_GROUPING_TRIMMED_MEDIAN5, + .add_flush = RRDR_GROUPING_MEDIAN, .init = NULL, - .create= grouping_create_trimmed_median5, - .reset = grouping_reset_median, - .free = grouping_free_median, - .add = grouping_add_median, - .flush = grouping_flush_median, + .create= tg_median_create_trimmed_5, + .reset = tg_median_reset, + .free = tg_median_free, + .add = tg_median_add, + .flush = tg_median_flush, .tier_query_fetch = TIER_QUERY_FETCH_AVERAGE }, {.name = "percentile25", .hash = 0, .value = RRDR_GROUPING_PERCENTILE25, + .add_flush = RRDR_GROUPING_PERCENTILE, .init = NULL, - .create= grouping_create_percentile25, - .reset = grouping_reset_percentile, - .free = grouping_free_percentile, - .add = grouping_add_percentile, - .flush = grouping_flush_percentile, + .create= tg_percentile_create_25, + .reset = tg_percentile_reset, + .free = tg_percentile_free, + .add = tg_percentile_add, + .flush = tg_percentile_flush, .tier_query_fetch = TIER_QUERY_FETCH_AVERAGE }, {.name = "percentile50", .hash = 0, .value = RRDR_GROUPING_PERCENTILE50, + .add_flush = RRDR_GROUPING_PERCENTILE, .init = NULL, - .create= grouping_create_percentile50, - .reset = grouping_reset_percentile, - .free = grouping_free_percentile, - .add = grouping_add_percentile, - .flush = grouping_flush_percentile, + .create= tg_percentile_create_50, + .reset = tg_percentile_reset, + .free = tg_percentile_free, + .add = tg_percentile_add, + .flush = tg_percentile_flush, .tier_query_fetch = TIER_QUERY_FETCH_AVERAGE }, {.name = "percentile75", .hash = 0, .value = RRDR_GROUPING_PERCENTILE75, + .add_flush = RRDR_GROUPING_PERCENTILE, .init = NULL, - .create= grouping_create_percentile75, - .reset = grouping_reset_percentile, - .free = grouping_free_percentile, - .add = grouping_add_percentile, - .flush = grouping_flush_percentile, + .create= tg_percentile_create_75, + .reset = tg_percentile_reset, + .free = tg_percentile_free, + .add = tg_percentile_add, + .flush = tg_percentile_flush, .tier_query_fetch = TIER_QUERY_FETCH_AVERAGE }, {.name = "percentile80", .hash = 0, .value = RRDR_GROUPING_PERCENTILE80, + .add_flush = RRDR_GROUPING_PERCENTILE, .init = NULL, - .create= grouping_create_percentile80, - .reset = grouping_reset_percentile, - .free = grouping_free_percentile, - .add = grouping_add_percentile, - .flush = grouping_flush_percentile, + .create= tg_percentile_create_80, + .reset = tg_percentile_reset, + .free = tg_percentile_free, + .add = tg_percentile_add, + .flush = tg_percentile_flush, .tier_query_fetch = TIER_QUERY_FETCH_AVERAGE }, {.name = "percentile90", .hash = 0, .value = RRDR_GROUPING_PERCENTILE90, + .add_flush = RRDR_GROUPING_PERCENTILE, .init = NULL, - .create= grouping_create_percentile90, - .reset = grouping_reset_percentile, - .free = grouping_free_percentile, - .add = grouping_add_percentile, - .flush = grouping_flush_percentile, + .create= tg_percentile_create_90, + .reset = tg_percentile_reset, + .free = tg_percentile_free, + .add = tg_percentile_add, + .flush = tg_percentile_flush, .tier_query_fetch = TIER_QUERY_FETCH_AVERAGE }, {.name = "percentile95", .hash = 0, - .value = RRDR_GROUPING_PERCENTILE95, + .value = RRDR_GROUPING_PERCENTILE, + .add_flush = RRDR_GROUPING_PERCENTILE, .init = NULL, - .create= grouping_create_percentile95, - .reset = grouping_reset_percentile, - .free = grouping_free_percentile, - .add = grouping_add_percentile, - .flush = grouping_flush_percentile, + .create= tg_percentile_create_95, + .reset = tg_percentile_reset, + .free = tg_percentile_free, + .add = tg_percentile_add, + .flush = tg_percentile_flush, .tier_query_fetch = TIER_QUERY_FETCH_AVERAGE }, {.name = "percentile97", .hash = 0, .value = RRDR_GROUPING_PERCENTILE97, + .add_flush = RRDR_GROUPING_PERCENTILE, .init = NULL, - .create= grouping_create_percentile97, - .reset = grouping_reset_percentile, - .free = grouping_free_percentile, - .add = grouping_add_percentile, - .flush = grouping_flush_percentile, + .create= tg_percentile_create_97, + .reset = tg_percentile_reset, + .free = tg_percentile_free, + .add = tg_percentile_add, + .flush = tg_percentile_flush, .tier_query_fetch = TIER_QUERY_FETCH_AVERAGE }, {.name = "percentile98", .hash = 0, .value = RRDR_GROUPING_PERCENTILE98, + .add_flush = RRDR_GROUPING_PERCENTILE, .init = NULL, - .create= grouping_create_percentile98, - .reset = grouping_reset_percentile, - .free = grouping_free_percentile, - .add = grouping_add_percentile, - .flush = grouping_flush_percentile, + .create= tg_percentile_create_98, + .reset = tg_percentile_reset, + .free = tg_percentile_free, + .add = tg_percentile_add, + .flush = tg_percentile_flush, .tier_query_fetch = TIER_QUERY_FETCH_AVERAGE }, {.name = "percentile99", .hash = 0, .value = RRDR_GROUPING_PERCENTILE99, + .add_flush = RRDR_GROUPING_PERCENTILE, .init = NULL, - .create= grouping_create_percentile99, - .reset = grouping_reset_percentile, - .free = grouping_free_percentile, - .add = grouping_add_percentile, - .flush = grouping_flush_percentile, + .create= tg_percentile_create_99, + .reset = tg_percentile_reset, + .free = tg_percentile_free, + .add = tg_percentile_add, + .flush = tg_percentile_flush, .tier_query_fetch = TIER_QUERY_FETCH_AVERAGE }, {.name = "percentile", .hash = 0, - .value = RRDR_GROUPING_PERCENTILE95, + .value = RRDR_GROUPING_PERCENTILE, + .add_flush = RRDR_GROUPING_PERCENTILE, .init = NULL, - .create= grouping_create_percentile95, - .reset = grouping_reset_percentile, - .free = grouping_free_percentile, - .add = grouping_add_percentile, - .flush = grouping_flush_percentile, + .create= tg_percentile_create_95, + .reset = tg_percentile_reset, + .free = tg_percentile_free, + .add = tg_percentile_add, + .flush = tg_percentile_flush, .tier_query_fetch = TIER_QUERY_FETCH_AVERAGE }, {.name = "min", .hash = 0, .value = RRDR_GROUPING_MIN, + .add_flush = RRDR_GROUPING_MIN, .init = NULL, - .create= grouping_create_min, - .reset = grouping_reset_min, - .free = grouping_free_min, - .add = grouping_add_min, - .flush = grouping_flush_min, + .create= tg_min_create, + .reset = tg_min_reset, + .free = tg_min_free, + .add = tg_min_add, + .flush = tg_min_flush, .tier_query_fetch = TIER_QUERY_FETCH_MIN }, {.name = "max", .hash = 0, .value = RRDR_GROUPING_MAX, + .add_flush = RRDR_GROUPING_MAX, .init = NULL, - .create= grouping_create_max, - .reset = grouping_reset_max, - .free = grouping_free_max, - .add = grouping_add_max, - .flush = grouping_flush_max, + .create= tg_max_create, + .reset = tg_max_reset, + .free = tg_max_free, + .add = tg_max_add, + .flush = tg_max_flush, .tier_query_fetch = TIER_QUERY_FETCH_MAX }, {.name = "sum", .hash = 0, .value = RRDR_GROUPING_SUM, + .add_flush = RRDR_GROUPING_SUM, .init = NULL, - .create= grouping_create_sum, - .reset = grouping_reset_sum, - .free = grouping_free_sum, - .add = grouping_add_sum, - .flush = grouping_flush_sum, + .create= tg_sum_create, + .reset = tg_sum_reset, + .free = tg_sum_free, + .add = tg_sum_add, + .flush = tg_sum_flush, .tier_query_fetch = TIER_QUERY_FETCH_SUM }, @@ -457,97 +506,75 @@ static struct { {.name = "stddev", .hash = 0, .value = RRDR_GROUPING_STDDEV, + .add_flush = RRDR_GROUPING_STDDEV, .init = NULL, - .create= grouping_create_stddev, - .reset = grouping_reset_stddev, - .free = grouping_free_stddev, - .add = grouping_add_stddev, - .flush = grouping_flush_stddev, + .create= tg_stddev_create, + .reset = tg_stddev_reset, + .free = tg_stddev_free, + .add = tg_stddev_add, + .flush = tg_stddev_flush, .tier_query_fetch = TIER_QUERY_FETCH_AVERAGE }, {.name = "cv", // coefficient variation is calculated by stddev .hash = 0, .value = RRDR_GROUPING_CV, + .add_flush = RRDR_GROUPING_CV, .init = NULL, - .create= grouping_create_stddev, // not an error, stddev calculates this too - .reset = grouping_reset_stddev, // not an error, stddev calculates this too - .free = grouping_free_stddev, // not an error, stddev calculates this too - .add = grouping_add_stddev, // not an error, stddev calculates this too - .flush = grouping_flush_coefficient_of_variation, + .create= tg_stddev_create, // not an error, stddev calculates this too + .reset = tg_stddev_reset, // not an error, stddev calculates this too + .free = tg_stddev_free, // not an error, stddev calculates this too + .add = tg_stddev_add, // not an error, stddev calculates this too + .flush = tg_stddev_coefficient_of_variation_flush, .tier_query_fetch = TIER_QUERY_FETCH_AVERAGE }, {.name = "rsd", // alias of 'cv' .hash = 0, .value = RRDR_GROUPING_CV, + .add_flush = RRDR_GROUPING_CV, .init = NULL, - .create= grouping_create_stddev, // not an error, stddev calculates this too - .reset = grouping_reset_stddev, // not an error, stddev calculates this too - .free = grouping_free_stddev, // not an error, stddev calculates this too - .add = grouping_add_stddev, // not an error, stddev calculates this too - .flush = grouping_flush_coefficient_of_variation, - .tier_query_fetch = TIER_QUERY_FETCH_AVERAGE - }, - - /* - {.name = "mean", // same as average, no need to define it again - .hash = 0, - .value = RRDR_GROUPING_MEAN, - .setup = NULL, - .create= grouping_create_stddev, - .reset = grouping_reset_stddev, - .free = grouping_free_stddev, - .add = grouping_add_stddev, - .flush = grouping_flush_mean, - .tier_query_fetch = TIER_QUERY_FETCH_AVERAGE - }, - */ - - /* - {.name = "variance", // meaningless to offer - .hash = 0, - .value = RRDR_GROUPING_VARIANCE, - .setup = NULL, - .create= grouping_create_stddev, - .reset = grouping_reset_stddev, - .free = grouping_free_stddev, - .add = grouping_add_stddev, - .flush = grouping_flush_variance, + .create= tg_stddev_create, // not an error, stddev calculates this too + .reset = tg_stddev_reset, // not an error, stddev calculates this too + .free = tg_stddev_free, // not an error, stddev calculates this too + .add = tg_stddev_add, // not an error, stddev calculates this too + .flush = tg_stddev_coefficient_of_variation_flush, .tier_query_fetch = TIER_QUERY_FETCH_AVERAGE }, - */ // single exponential smoothing {.name = "ses", .hash = 0, .value = RRDR_GROUPING_SES, - .init = grouping_init_ses, - .create= grouping_create_ses, - .reset = grouping_reset_ses, - .free = grouping_free_ses, - .add = grouping_add_ses, - .flush = grouping_flush_ses, + .add_flush = RRDR_GROUPING_SES, + .init = tg_ses_init, + .create= tg_ses_create, + .reset = tg_ses_reset, + .free = tg_ses_free, + .add = tg_ses_add, + .flush = tg_ses_flush, .tier_query_fetch = TIER_QUERY_FETCH_AVERAGE }, {.name = "ema", // alias for 'ses' .hash = 0, .value = RRDR_GROUPING_SES, + .add_flush = RRDR_GROUPING_SES, .init = NULL, - .create= grouping_create_ses, - .reset = grouping_reset_ses, - .free = grouping_free_ses, - .add = grouping_add_ses, - .flush = grouping_flush_ses, + .create= tg_ses_create, + .reset = tg_ses_reset, + .free = tg_ses_free, + .add = tg_ses_add, + .flush = tg_ses_flush, .tier_query_fetch = TIER_QUERY_FETCH_AVERAGE }, {.name = "ewma", // alias for ses .hash = 0, .value = RRDR_GROUPING_SES, + .add_flush = RRDR_GROUPING_SES, .init = NULL, - .create= grouping_create_ses, - .reset = grouping_reset_ses, - .free = grouping_free_ses, - .add = grouping_add_ses, - .flush = grouping_flush_ses, + .create= tg_ses_create, + .reset = tg_ses_reset, + .free = tg_ses_free, + .add = tg_ses_add, + .flush = tg_ses_flush, .tier_query_fetch = TIER_QUERY_FETCH_AVERAGE }, @@ -555,24 +582,26 @@ static struct { {.name = "des", .hash = 0, .value = RRDR_GROUPING_DES, - .init = grouping_init_des, - .create= grouping_create_des, - .reset = grouping_reset_des, - .free = grouping_free_des, - .add = grouping_add_des, - .flush = grouping_flush_des, + .add_flush = RRDR_GROUPING_DES, + .init = tg_des_init, + .create= tg_des_create, + .reset = tg_des_reset, + .free = tg_des_free, + .add = tg_des_add, + .flush = tg_des_flush, .tier_query_fetch = TIER_QUERY_FETCH_AVERAGE }, {.name = "countif", .hash = 0, .value = RRDR_GROUPING_COUNTIF, + .add_flush = RRDR_GROUPING_COUNTIF, .init = NULL, - .create= grouping_create_countif, - .reset = grouping_reset_countif, - .free = grouping_free_countif, - .add = grouping_add_countif, - .flush = grouping_flush_countif, + .create= tg_countif_create, + .reset = tg_countif_reset, + .free = tg_countif_free, + .add = tg_countif_add, + .flush = tg_countif_flush, .tier_query_fetch = TIER_QUERY_FETCH_AVERAGE }, @@ -580,17 +609,18 @@ static struct { {.name = NULL, .hash = 0, .value = RRDR_GROUPING_UNDEFINED, + .add_flush = RRDR_GROUPING_AVERAGE, .init = NULL, - .create= grouping_create_average, - .reset = grouping_reset_average, - .free = grouping_free_average, - .add = grouping_add_average, - .flush = grouping_flush_average, + .create= tg_average_create, + .reset = tg_average_reset, + .free = tg_average_free, + .add = tg_average_add, + .flush = tg_average_flush, .tier_query_fetch = TIER_QUERY_FETCH_AVERAGE } }; -void web_client_api_v1_init_grouping(void) { +void time_grouping_init(void) { int i; for(i = 0; api_v1_data_groups[i].name ; i++) { @@ -601,7 +631,7 @@ void web_client_api_v1_init_grouping(void) { } } -const char *group_method2string(RRDR_GROUPING group) { +const char *time_grouping_method2string(RRDR_TIME_GROUPING group) { int i; for(i = 0; api_v1_data_groups[i].name ; i++) { @@ -613,7 +643,7 @@ const char *group_method2string(RRDR_GROUPING group) { return "unknown-group-method"; } -RRDR_GROUPING web_client_api_request_v1_data_group(const char *name, RRDR_GROUPING def) { +RRDR_TIME_GROUPING time_grouping_parse(const char *name, RRDR_TIME_GROUPING def) { int i; uint32_t hash = simple_hash(name); @@ -624,7 +654,7 @@ RRDR_GROUPING web_client_api_request_v1_data_group(const char *name, RRDR_GROUPI return def; } -const char *web_client_api_request_v1_data_group_to_string(RRDR_GROUPING group) { +const char *time_grouping_tostring(RRDR_TIME_GROUPING group) { int i; for(i = 0; api_v1_data_groups[i].name ; i++) @@ -634,28 +664,242 @@ const char *web_client_api_request_v1_data_group_to_string(RRDR_GROUPING group) return "unknown"; } -static void rrdr_set_grouping_function(RRDR *r, RRDR_GROUPING group_method) { +static void rrdr_set_grouping_function(RRDR *r, RRDR_TIME_GROUPING group_method) { int i, found = 0; for(i = 0; !found && api_v1_data_groups[i].name ;i++) { if(api_v1_data_groups[i].value == group_method) { - r->internal.grouping_create = api_v1_data_groups[i].create; - r->internal.grouping_reset = api_v1_data_groups[i].reset; - r->internal.grouping_free = api_v1_data_groups[i].free; - r->internal.grouping_add = api_v1_data_groups[i].add; - r->internal.grouping_flush = api_v1_data_groups[i].flush; - r->internal.tier_query_fetch = api_v1_data_groups[i].tier_query_fetch; + r->time_grouping.create = api_v1_data_groups[i].create; + r->time_grouping.reset = api_v1_data_groups[i].reset; + r->time_grouping.free = api_v1_data_groups[i].free; + r->time_grouping.add = api_v1_data_groups[i].add; + r->time_grouping.flush = api_v1_data_groups[i].flush; + r->time_grouping.tier_query_fetch = api_v1_data_groups[i].tier_query_fetch; + r->time_grouping.add_flush = api_v1_data_groups[i].add_flush; found = 1; } } if(!found) { errno = 0; internal_error(true, "QUERY: grouping method %u not found. Using 'average'", (unsigned int)group_method); - r->internal.grouping_create = grouping_create_average; - r->internal.grouping_reset = grouping_reset_average; - r->internal.grouping_free = grouping_free_average; - r->internal.grouping_add = grouping_add_average; - r->internal.grouping_flush = grouping_flush_average; - r->internal.tier_query_fetch = TIER_QUERY_FETCH_AVERAGE; + r->time_grouping.create = tg_average_create; + r->time_grouping.reset = tg_average_reset; + r->time_grouping.free = tg_average_free; + r->time_grouping.add = tg_average_add; + r->time_grouping.flush = tg_average_flush; + r->time_grouping.tier_query_fetch = TIER_QUERY_FETCH_AVERAGE; + r->time_grouping.add_flush = RRDR_GROUPING_AVERAGE; + } +} + +static inline void time_grouping_add(RRDR *r, NETDATA_DOUBLE value, const RRDR_TIME_GROUPING add_flush) { + switch(add_flush) { + case RRDR_GROUPING_AVERAGE: + tg_average_add(r, value); + break; + + case RRDR_GROUPING_MAX: + tg_max_add(r, value); + break; + + case RRDR_GROUPING_MIN: + tg_min_add(r, value); + break; + + case RRDR_GROUPING_MEDIAN: + tg_median_add(r, value); + break; + + case RRDR_GROUPING_STDDEV: + case RRDR_GROUPING_CV: + tg_stddev_add(r, value); + break; + + case RRDR_GROUPING_SUM: + tg_sum_add(r, value); + break; + + case RRDR_GROUPING_COUNTIF: + tg_countif_add(r, value); + break; + + case RRDR_GROUPING_TRIMMED_MEAN: + tg_trimmed_mean_add(r, value); + break; + + case RRDR_GROUPING_PERCENTILE: + tg_percentile_add(r, value); + break; + + case RRDR_GROUPING_SES: + tg_ses_add(r, value); + break; + + case RRDR_GROUPING_DES: + tg_des_add(r, value); + break; + + case RRDR_GROUPING_INCREMENTAL_SUM: + tg_incremental_sum_add(r, value); + break; + + default: + r->time_grouping.add(r, value); + break; + } +} + +static inline NETDATA_DOUBLE time_grouping_flush(RRDR *r, RRDR_VALUE_FLAGS *rrdr_value_options_ptr, const RRDR_TIME_GROUPING add_flush) { + switch(add_flush) { + case RRDR_GROUPING_AVERAGE: + return tg_average_flush(r, rrdr_value_options_ptr); + + case RRDR_GROUPING_MAX: + return tg_max_flush(r, rrdr_value_options_ptr); + + case RRDR_GROUPING_MIN: + return tg_min_flush(r, rrdr_value_options_ptr); + + case RRDR_GROUPING_MEDIAN: + return tg_median_flush(r, rrdr_value_options_ptr); + + case RRDR_GROUPING_STDDEV: + return tg_stddev_flush(r, rrdr_value_options_ptr); + + case RRDR_GROUPING_CV: + return tg_stddev_coefficient_of_variation_flush(r, rrdr_value_options_ptr); + + case RRDR_GROUPING_SUM: + return tg_sum_flush(r, rrdr_value_options_ptr); + + case RRDR_GROUPING_COUNTIF: + return tg_countif_flush(r, rrdr_value_options_ptr); + + case RRDR_GROUPING_TRIMMED_MEAN: + return tg_trimmed_mean_flush(r, rrdr_value_options_ptr); + + case RRDR_GROUPING_PERCENTILE: + return tg_percentile_flush(r, rrdr_value_options_ptr); + + case RRDR_GROUPING_SES: + return tg_ses_flush(r, rrdr_value_options_ptr); + + case RRDR_GROUPING_DES: + return tg_des_flush(r, rrdr_value_options_ptr); + + case RRDR_GROUPING_INCREMENTAL_SUM: + return tg_incremental_sum_flush(r, rrdr_value_options_ptr); + + default: + return r->time_grouping.flush(r, rrdr_value_options_ptr); + } +} + +RRDR_GROUP_BY group_by_parse(char *s) { + RRDR_GROUP_BY group_by = RRDR_GROUP_BY_NONE; + + while(s) { + char *key = strsep_skip_consecutive_separators(&s, ",| "); + if (!key || !*key) continue; + + if (strcmp(key, "selected") == 0) + group_by |= RRDR_GROUP_BY_SELECTED; + + if (strcmp(key, "dimension") == 0) + group_by |= RRDR_GROUP_BY_DIMENSION; + + if (strcmp(key, "instance") == 0) + group_by |= RRDR_GROUP_BY_INSTANCE; + + if (strcmp(key, "percentage-of-instance") == 0) + group_by |= RRDR_GROUP_BY_PERCENTAGE_OF_INSTANCE; + + if (strcmp(key, "label") == 0) + group_by |= RRDR_GROUP_BY_LABEL; + + if (strcmp(key, "node") == 0) + group_by |= RRDR_GROUP_BY_NODE; + + if (strcmp(key, "context") == 0) + group_by |= RRDR_GROUP_BY_CONTEXT; + + if (strcmp(key, "units") == 0) + group_by |= RRDR_GROUP_BY_UNITS; + } + + if((group_by & RRDR_GROUP_BY_SELECTED) && (group_by & ~RRDR_GROUP_BY_SELECTED)) { + internal_error(true, "group-by given by query has 'selected' together with more groupings"); + group_by = RRDR_GROUP_BY_SELECTED; // remove all other groupings + } + + if(group_by & RRDR_GROUP_BY_PERCENTAGE_OF_INSTANCE) + group_by = RRDR_GROUP_BY_PERCENTAGE_OF_INSTANCE; // remove all other groupings + + return group_by; +} + +void buffer_json_group_by_to_array(BUFFER *wb, RRDR_GROUP_BY group_by) { + if(group_by == RRDR_GROUP_BY_NONE) + buffer_json_add_array_item_string(wb, "none"); + else { + if (group_by & RRDR_GROUP_BY_DIMENSION) + buffer_json_add_array_item_string(wb, "dimension"); + + if (group_by & RRDR_GROUP_BY_INSTANCE) + buffer_json_add_array_item_string(wb, "instance"); + + if (group_by & RRDR_GROUP_BY_PERCENTAGE_OF_INSTANCE) + buffer_json_add_array_item_string(wb, "percentage-of-instance"); + + if (group_by & RRDR_GROUP_BY_LABEL) + buffer_json_add_array_item_string(wb, "label"); + + if (group_by & RRDR_GROUP_BY_NODE) + buffer_json_add_array_item_string(wb, "node"); + + if (group_by & RRDR_GROUP_BY_CONTEXT) + buffer_json_add_array_item_string(wb, "context"); + + if (group_by & RRDR_GROUP_BY_UNITS) + buffer_json_add_array_item_string(wb, "units"); + + if (group_by & RRDR_GROUP_BY_SELECTED) + buffer_json_add_array_item_string(wb, "selected"); + } +} + +RRDR_GROUP_BY_FUNCTION group_by_aggregate_function_parse(const char *s) { + if(strcmp(s, "average") == 0) + return RRDR_GROUP_BY_FUNCTION_AVERAGE; + + if(strcmp(s, "avg") == 0) + return RRDR_GROUP_BY_FUNCTION_AVERAGE; + + if(strcmp(s, "min") == 0) + return RRDR_GROUP_BY_FUNCTION_MIN; + + if(strcmp(s, "max") == 0) + return RRDR_GROUP_BY_FUNCTION_MAX; + + if(strcmp(s, "sum") == 0) + return RRDR_GROUP_BY_FUNCTION_SUM; + + return RRDR_GROUP_BY_FUNCTION_AVERAGE; +} + +const char *group_by_aggregate_function_to_string(RRDR_GROUP_BY_FUNCTION group_by_function) { + switch(group_by_function) { + default: + case RRDR_GROUP_BY_FUNCTION_AVERAGE: + return "average"; + + case RRDR_GROUP_BY_FUNCTION_MIN: + return "min"; + + case RRDR_GROUP_BY_FUNCTION_MAX: + return "max"; + + case RRDR_GROUP_BY_FUNCTION_SUM: + return "sum"; } } @@ -670,28 +914,20 @@ static inline NETDATA_DOUBLE *UNUSED_FUNCTION(rrdr_line_values)(RRDR *r, long rr return &r->v[ rrdr_line * r->d ]; } -static inline long rrdr_line_init(RRDR *r, time_t t, long rrdr_line) { +static inline long rrdr_line_init(RRDR *r __maybe_unused, time_t t __maybe_unused, long rrdr_line) { rrdr_line++; - internal_error(rrdr_line >= (long)r->n, + internal_fatal(rrdr_line >= (long)r->n, "QUERY: requested to step above RRDR size for query '%s'", r->internal.qt->id); - internal_error(r->t[rrdr_line] != 0 && r->t[rrdr_line] != t, - "QUERY: overwriting the timestamp of RRDR line %zu from %zu to %zu, of query '%s'", - (size_t)rrdr_line, (size_t)r->t[rrdr_line], (size_t)t, r->internal.qt->id); - - // save the time - r->t[rrdr_line] = t; + internal_fatal(r->t[rrdr_line] != t, + "QUERY: wrong timestamp at RRDR line %ld, expected %ld, got %ld, of query '%s'", + rrdr_line, r->t[rrdr_line], t, r->internal.qt->id); return rrdr_line; } -static inline void rrdr_done(RRDR *r, long rrdr_line) { - r->rows = rrdr_line + 1; -} - - // ---------------------------------------------------------------------------- // tier management @@ -822,7 +1058,7 @@ static size_t rrddim_find_best_tier_for_timeframe(QUERY_TARGET *qt, time_t after // find the db time-range for this tier for all metrics for(size_t i = 0, used = qt->query.used; i < used ; i++) { - QUERY_METRIC *qm = &qt->query.array[i]; + QUERY_METRIC *qm = query_metric(qt, i); time_t first_time_s = qm->tiers[tier].db_first_time_s; time_t last_time_s = qm->tiers[tier].db_last_time_s; @@ -872,7 +1108,7 @@ static time_t rrdset_find_natural_update_every_for_timeframe(QUERY_TARGET *qt, t // find the db minimum update every for this tier for all metrics time_t common_update_every_s = default_rrd_update_every; for(size_t i = 0, used = qt->query.used; i < used ; i++) { - QUERY_METRIC *qm = &qt->query.array[i]; + QUERY_METRIC *qm = query_metric(qt, i); time_t update_every_s = qm->tiers[best_tier].db_update_every_s; @@ -889,24 +1125,20 @@ static time_t rrdset_find_natural_update_every_for_timeframe(QUERY_TARGET *qt, t // query ops typedef struct query_point { - time_t end_time; - time_t start_time; + STORAGE_POINT sp; NETDATA_DOUBLE value; - NETDATA_DOUBLE anomaly; - SN_FLAGS flags; + bool added; #ifdef NETDATA_INTERNAL_CHECKS size_t id; #endif } QUERY_POINT; QUERY_POINT QUERY_POINT_EMPTY = { - .end_time = 0, - .start_time = 0, - .value = NAN, - .anomaly = 0, - .flags = SN_FLAG_NONE, + .sp = STORAGE_POINT_UNSET, + .value = NAN, + .added = false, #ifdef NETDATA_INTERNAL_CHECKS - .id = 0, + .id = 0, #endif }; @@ -934,21 +1166,27 @@ typedef struct query_engine_ops { size_t tier; struct query_metric_tier *tier_ptr; struct storage_engine_query_handle *handle; - STORAGE_POINT (*next_metric)(struct storage_engine_query_handle *handle); - int (*is_finished)(struct storage_engine_query_handle *handle); - void (*finalize)(struct storage_engine_query_handle *handle); // aggregating points over time - void (*grouping_add)(struct rrdresult *r, NETDATA_DOUBLE value); - NETDATA_DOUBLE (*grouping_flush)(struct rrdresult *r, RRDR_VALUE_FLAGS *rrdr_value_options_ptr); size_t group_points_non_zero; size_t group_points_added; - NETDATA_DOUBLE group_anomaly_rate; + STORAGE_POINT group_point; // aggregates min, max, sum, count, anomaly count for each group point + STORAGE_POINT query_point; // aggregates min, max, sum, count, anomaly count across the whole query RRDR_VALUE_FLAGS group_value_flags; // statistics size_t db_total_points_read; size_t db_points_read_per_tier[RRD_STORAGE_TIERS]; + + struct { + time_t expanded_after; + time_t expanded_before; + struct storage_engine_query_handle handle; + bool initialized; + bool finalized; + } plans[QUERY_PLANS_MAX]; + + struct query_engine_ops *next; } QUERY_ENGINE_OPS; @@ -1005,40 +1243,28 @@ static void query_planer_initialize_plans(QUERY_ENGINE_OPS *ops) { time_t after = qm->plan.array[p].after - (time_t)(update_every * points_to_add_to_after); time_t before = qm->plan.array[p].before + (time_t)(update_every * points_to_add_to_before); - qm->plan.array[p].expanded_after = after; - qm->plan.array[p].expanded_before = before; + ops->plans[p].expanded_after = after; + ops->plans[p].expanded_before = before; + + ops->r->internal.qt->db.tiers[tier].queries++; struct query_metric_tier *tier_ptr = &qm->tiers[tier]; - tier_ptr->eng->api.query_ops.init( - tier_ptr->db_metric_handle, - &qm->plan.array[p].handle, - after, before, - ops->r->internal.qt->request.priority); - - qm->plan.array[p].next_metric = tier_ptr->eng->api.query_ops.next_metric; - qm->plan.array[p].is_finished = tier_ptr->eng->api.query_ops.is_finished; - qm->plan.array[p].finalize = tier_ptr->eng->api.query_ops.finalize; - qm->plan.array[p].initialized = true; - qm->plan.array[p].finalized = false; + STORAGE_ENGINE *eng = query_metric_storage_engine(ops->r->internal.qt, qm, tier); + storage_engine_query_init(eng->backend, tier_ptr->db_metric_handle, &ops->plans[p].handle, + after, before, ops->r->internal.qt->request.priority); + + ops->plans[p].initialized = true; + ops->plans[p].finalized = false; } } static void query_planer_finalize_plan(QUERY_ENGINE_OPS *ops, size_t plan_id) { - QUERY_METRIC *qm = ops->qm; + // QUERY_METRIC *qm = ops->qm; - if(qm->plan.array[plan_id].initialized && !qm->plan.array[plan_id].finalized) { - qm->plan.array[plan_id].finalize(&qm->plan.array[plan_id].handle); - qm->plan.array[plan_id].initialized = false; - qm->plan.array[plan_id].finalized = true; - qm->plan.array[plan_id].next_metric = NULL; - qm->plan.array[plan_id].is_finished = NULL; - qm->plan.array[plan_id].finalize = NULL; - - if(ops->current_plan == plan_id) { - ops->next_metric = NULL; - ops->is_finished = NULL; - ops->finalize = NULL; - } + if(ops->plans[plan_id].initialized && !ops->plans[plan_id].finalized) { + storage_engine_query_finalize(&ops->plans[plan_id].handle); + ops->plans[plan_id].initialized = false; + ops->plans[plan_id].finalized = true; } } @@ -1053,17 +1279,14 @@ static void query_planer_activate_plan(QUERY_ENGINE_OPS *ops, size_t plan_id, ti QUERY_METRIC *qm = ops->qm; internal_fatal(plan_id >= qm->plan.used, "QUERY: invalid plan_id given"); - internal_fatal(!qm->plan.array[plan_id].initialized, "QUERY: plan has not been initialized"); - internal_fatal(qm->plan.array[plan_id].finalized, "QUERY: plan has been finalized"); + internal_fatal(!ops->plans[plan_id].initialized, "QUERY: plan has not been initialized"); + internal_fatal(ops->plans[plan_id].finalized, "QUERY: plan has been finalized"); internal_fatal(qm->plan.array[plan_id].after > qm->plan.array[plan_id].before, "QUERY: flipped after/before"); ops->tier = qm->plan.array[plan_id].tier; ops->tier_ptr = &qm->tiers[ops->tier]; - ops->handle = &qm->plan.array[plan_id].handle; - ops->next_metric = qm->plan.array[plan_id].next_metric; - ops->is_finished = qm->plan.array[plan_id].is_finished; - ops->finalize = qm->plan.array[plan_id].finalize; + ops->handle = &ops->plans[plan_id].handle; ops->current_plan = plan_id; if(plan_id + 1 < qm->plan.used && qm->plan.array[plan_id + 1].after < qm->plan.array[plan_id].before) @@ -1071,8 +1294,8 @@ static void query_planer_activate_plan(QUERY_ENGINE_OPS *ops, size_t plan_id, ti else ops->current_plan_expire_time = qm->plan.array[plan_id].before; - ops->plan_expanded_after = qm->plan.array[plan_id].expanded_after; - ops->plan_expanded_before = qm->plan.array[plan_id].expanded_before; + ops->plan_expanded_after = ops->plans[plan_id].expanded_after; + ops->plan_expanded_before = ops->plans[plan_id].expanded_before; } static bool query_planer_next_plan(QUERY_ENGINE_OPS *ops, time_t now, time_t last_point_end_time) { @@ -1117,18 +1340,17 @@ static bool query_plan(QUERY_ENGINE_OPS *ops, time_t after_wanted, time_t before // put our selected tier as the first plan size_t selected_tier; + bool switch_tiers = true; - if(ops->r->internal.query_options & RRDR_OPTION_SELECTED_TIER + if((ops->r->internal.qt->window.options & RRDR_OPTION_SELECTED_TIER) && ops->r->internal.qt->window.tier < storage_tiers && query_metric_is_valid_tier(qm, ops->r->internal.qt->window.tier)) { selected_tier = ops->r->internal.qt->window.tier; + switch_tiers = false; } else { selected_tier = query_metric_best_tier_for_timeframe(qm, after_wanted, before_wanted, points_wanted); - if(ops->r->internal.query_options & RRDR_OPTION_SELECTED_TIER) - ops->r->internal.query_options &= ~RRDR_OPTION_SELECTED_TIER; - if(!query_metric_is_valid_tier(qm, selected_tier)) return false; @@ -1142,7 +1364,7 @@ static bool query_plan(QUERY_ENGINE_OPS *ops, time_t after_wanted, time_t before qm->plan.array[0].after = (qm->tiers[selected_tier].db_first_time_s < after_wanted) ? after_wanted : qm->tiers[selected_tier].db_first_time_s; qm->plan.array[0].before = (qm->tiers[selected_tier].db_last_time_s > before_wanted) ? before_wanted : qm->tiers[selected_tier].db_last_time_s; - if(!(ops->r->internal.query_options & RRDR_OPTION_SELECTED_TIER)) { + if(switch_tiers) { // the selected tier time_t selected_tier_first_time_s = qm->plan.array[0].after; time_t selected_tier_last_time_s = qm->plan.array[0].before; @@ -1150,7 +1372,7 @@ static bool query_plan(QUERY_ENGINE_OPS *ops, time_t after_wanted, time_t before // check if our selected tier can start the query if (selected_tier_first_time_s > after_wanted) { // we need some help from other tiers - for (size_t tr = (int)selected_tier + 1; tr < storage_tiers; tr++) { + for (size_t tr = (int)selected_tier + 1; tr < storage_tiers && qm->plan.used < QUERY_PLANS_MAX ; tr++) { if(!query_metric_is_valid_tier(qm, tr)) continue; @@ -1164,9 +1386,9 @@ static bool query_plan(QUERY_ENGINE_OPS *ops, time_t after_wanted, time_t before .tier = tr, .after = (tier_first_time_s < after_wanted) ? after_wanted : tier_first_time_s, .before = selected_tier_first_time_s, - .initialized = false, - .finalized = false, }; + ops->plans[qm->plan.used].initialized = false; + ops->plans[qm->plan.used].finalized = false; qm->plan.array[qm->plan.used++] = t; internal_fatal(!t.after || !t.before, "QUERY: invalid plan selected"); @@ -1183,7 +1405,7 @@ static bool query_plan(QUERY_ENGINE_OPS *ops, time_t after_wanted, time_t before // check if our selected tier can finish the query if (selected_tier_last_time_s < before_wanted) { // we need some help from other tiers - for (int tr = (int)selected_tier - 1; tr >= 0; tr--) { + for (int tr = (int)selected_tier - 1; tr >= 0 && qm->plan.used < QUERY_PLANS_MAX ; tr--) { if(!query_metric_is_valid_tier(qm, tr)) continue; @@ -1199,9 +1421,9 @@ static bool query_plan(QUERY_ENGINE_OPS *ops, time_t after_wanted, time_t before .tier = tr, .after = selected_tier_last_time_s, .before = (tier_last_time_s > before_wanted) ? before_wanted : tier_last_time_s, - .initialized = false, - .finalized = false, }; + ops->plans[qm->plan.used].initialized = false; + ops->plans[qm->plan.used].finalized = false; qm->plan.array[qm->plan.used++] = t; // prepare for the tier @@ -1244,60 +1466,102 @@ static bool query_plan(QUERY_ENGINE_OPS *ops, time_t after_wanted, time_t before #define query_interpolate_point(this_point, last_point, now) do { \ if(likely( \ /* the point to interpolate is more than 1s wide */ \ - (this_point).end_time - (this_point).start_time > 1 \ + (this_point).sp.end_time_s - (this_point).sp.start_time_s > 1 \ \ /* the two points are exactly next to each other */ \ - && (last_point).end_time == (this_point).start_time \ + && (last_point).sp.end_time_s == (this_point).sp.start_time_s \ \ /* both points are valid numbers */ \ && netdata_double_isnumber((this_point).value) \ && netdata_double_isnumber((last_point).value) \ \ )) { \ - (this_point).value = (last_point).value + ((this_point).value - (last_point).value) * (1.0 - (NETDATA_DOUBLE)((this_point).end_time - (now)) / (NETDATA_DOUBLE)((this_point).end_time - (this_point).start_time)); \ - (this_point).end_time = now; \ + (this_point).value = (last_point).value + ((this_point).value - (last_point).value) * (1.0 - (NETDATA_DOUBLE)((this_point).sp.end_time_s - (now)) / (NETDATA_DOUBLE)((this_point).sp.end_time_s - (this_point).sp.start_time_s)); \ + (this_point).sp.end_time_s = now; \ } \ } while(0) -#define query_add_point_to_group(r, point, ops) do { \ +#define query_add_point_to_group(r, point, ops, add_flush) do { \ if(likely(netdata_double_isnumber((point).value))) { \ if(likely(fpclassify((point).value) != FP_ZERO)) \ (ops)->group_points_non_zero++; \ \ - if(unlikely((point).flags & SN_FLAG_RESET)) \ + if(unlikely((point).sp.flags & SN_FLAG_RESET)) \ (ops)->group_value_flags |= RRDR_VALUE_RESET; \ \ - (ops)->grouping_add(r, (point).value); \ + time_grouping_add(r, (point).value, add_flush); \ + \ + storage_point_merge_to((ops)->group_point, (point).sp); \ + if(!(point).added) \ + storage_point_merge_to((ops)->query_point, (point).sp); \ } \ \ (ops)->group_points_added++; \ - (ops)->group_anomaly_rate += (point).anomaly; \ } while(0) -static QUERY_ENGINE_OPS *rrd2rrdr_query_prep(RRDR *r, size_t dim_id_in_rrdr) { +static __thread QUERY_ENGINE_OPS *released_ops = NULL; + +static void rrd2rrdr_query_ops_freeall(RRDR *r __maybe_unused) { + while(released_ops) { + QUERY_ENGINE_OPS *ops = released_ops; + released_ops = ops->next; + + onewayalloc_freez(r->internal.owa, ops); + } +} + +static void rrd2rrdr_query_ops_release(QUERY_ENGINE_OPS *ops) { + if(!ops) return; + + ops->next = released_ops; + released_ops = ops; +} + +static QUERY_ENGINE_OPS *rrd2rrdr_query_ops_get(RRDR *r) { + QUERY_ENGINE_OPS *ops; + if(released_ops) { + ops = released_ops; + released_ops = ops->next; + } + else { + ops = onewayalloc_mallocz(r->internal.owa, sizeof(QUERY_ENGINE_OPS)); + } + + memset(ops, 0, sizeof(*ops)); + return ops; +} + +static QUERY_ENGINE_OPS *rrd2rrdr_query_ops_prep(RRDR *r, size_t query_metric_id) { QUERY_TARGET *qt = r->internal.qt; - QUERY_ENGINE_OPS *ops = onewayalloc_mallocz(r->internal.owa, sizeof(QUERY_ENGINE_OPS)); + QUERY_ENGINE_OPS *ops = rrd2rrdr_query_ops_get(r); *ops = (QUERY_ENGINE_OPS) { .r = r, - .qm = &qt->query.array[dim_id_in_rrdr], - .grouping_add = r->internal.grouping_add, - .grouping_flush = r->internal.grouping_flush, - .tier_query_fetch = r->internal.tier_query_fetch, - .view_update_every = r->update_every, - .query_granularity = (time_t)(r->update_every / r->group), + .qm = query_metric(qt, query_metric_id), + .tier_query_fetch = r->time_grouping.tier_query_fetch, + .view_update_every = r->view.update_every, + .query_granularity = (time_t)(r->view.update_every / r->view.group), .group_value_flags = RRDR_VALUE_NOTHING, }; - if(!query_plan(ops, qt->window.after, qt->window.before, qt->window.points)) + if(!query_plan(ops, qt->window.after, qt->window.before, qt->window.points)) { + rrd2rrdr_query_ops_release(ops); return NULL; + } return ops; } static void rrd2rrdr_query_execute(RRDR *r, size_t dim_id_in_rrdr, QUERY_ENGINE_OPS *ops) { QUERY_TARGET *qt = r->internal.qt; - QUERY_METRIC *qm = &qt->query.array[dim_id_in_rrdr]; (void)qm; + QUERY_METRIC *qm = ops->qm; + + const RRDR_TIME_GROUPING add_flush = r->time_grouping.add_flush; + + ops->group_point = STORAGE_POINT_UNSET; + ops->query_point = STORAGE_POINT_UNSET; + + RRDR_OPTIONS options = qt->window.options; size_t points_wanted = qt->window.points; time_t after_wanted = qt->window.after; time_t before_wanted = qt->window.before; (void)before_wanted; @@ -1306,15 +1570,12 @@ static void rrd2rrdr_query_execute(RRDR *r, size_t dim_id_in_rrdr, QUERY_ENGINE_ // if(strcmp("user", string2str(rd->id)) == 0 && strcmp("system.cpu", string2str(rd->rrdset->id)) == 0) // debug_this = true; - time_t max_date = 0, - min_date = 0; - size_t points_added = 0; long rrdr_line = -1; - bool use_anomaly_bit_as_value = (r->internal.query_options & RRDR_OPTION_ANOMALY_BIT) ? true : false; + bool use_anomaly_bit_as_value = (r->internal.qt->window.options & RRDR_OPTION_ANOMALY_BIT) ? true : false; - NETDATA_DOUBLE min = r->min, max = r->max; + NETDATA_DOUBLE min = r->view.min, max = r->view.max; QUERY_POINT last2_point = QUERY_POINT_EMPTY; QUERY_POINT last1_point = QUERY_POINT_EMPTY; @@ -1329,12 +1590,14 @@ static void rrd2rrdr_query_execute(RRDR *r, size_t dim_id_in_rrdr, QUERY_ENGINE_ time_t now_end_time = after_wanted + ops->view_update_every - ops->query_granularity; size_t db_points_read_since_plan_switch = 0; (void)db_points_read_since_plan_switch; + size_t query_is_finished_counter = 0; // The main loop, based on the query granularity we need - for( ; points_added < points_wanted ; now_start_time = now_end_time, now_end_time += ops->view_update_every) { + for( ; points_added < points_wanted && query_is_finished_counter <= 10 ; + now_start_time = now_end_time, now_end_time += ops->view_update_every) { if(unlikely(query_plan_should_switch_plan(ops, now_end_time))) { - query_planer_next_plan(ops, now_end_time, new_point.end_time); + query_planer_next_plan(ops, now_end_time, new_point.sp.end_time_s); db_points_read_since_plan_switch = 0; } @@ -1347,26 +1610,35 @@ static void rrd2rrdr_query_execute(RRDR *r, size_t dim_id_in_rrdr, QUERY_ENGINE_ last1_point = new_point; } - if(unlikely(ops->is_finished(ops->handle))) { + if(unlikely(storage_engine_query_is_finished(ops->handle))) { + query_is_finished_counter++; + if(count_same_end_time != 0) { last2_point = last1_point; last1_point = new_point; } new_point = QUERY_POINT_EMPTY; - new_point.start_time = last1_point.end_time; - new_point.end_time = now_end_time; + new_point.sp.start_time_s = last1_point.sp.end_time_s; + new_point.sp.end_time_s = now_end_time; // // if(debug_this) info("QUERY: is finished() returned true"); // break; } + else + query_is_finished_counter = 0; // fetch the new point { STORAGE_POINT sp; if(likely(storage_point_is_unset(next1_point))) { db_points_read_since_plan_switch++; - sp = ops->next_metric(ops->handle); + sp = storage_engine_query_next_metric(ops->handle); + ops->db_points_read_per_tier[ops->tier]++; + ops->db_total_points_read++; + + if(unlikely(options & RRDR_OPTION_ABSOLUTE)) + storage_point_make_positive(sp); } else { // ONE POINT READ-AHEAD @@ -1377,7 +1649,7 @@ static void rrd2rrdr_query_execute(RRDR *r, size_t dim_id_in_rrdr, QUERY_ENGINE_ // ONE POINT READ-AHEAD if(unlikely(query_plan_should_switch_plan(ops, sp.end_time_s) && - query_planer_next_plan(ops, now_end_time, new_point.end_time))) { + query_planer_next_plan(ops, now_end_time, new_point.sp.end_time_s))) { // The end time of the current point, crosses our plans (tiers) // so, we switched plan (tier) @@ -1387,7 +1659,12 @@ static void rrd2rrdr_query_execute(RRDR *r, size_t dim_id_in_rrdr, QUERY_ENGINE_ // A. the entire point of the previous plan is to the future of point from the next plan // B. part of the point of the previous plan overlaps with the point from the next plan - STORAGE_POINT sp2 = ops->next_metric(ops->handle); + STORAGE_POINT sp2 = storage_engine_query_next_metric(ops->handle); + ops->db_points_read_per_tier[ops->tier]++; + ops->db_total_points_read++; + + if(unlikely(options & RRDR_OPTION_ABSOLUTE)) + storage_point_make_positive(sp); if(sp.start_time_s > sp2.start_time_s) // the point from the previous plan is useless @@ -1399,12 +1676,8 @@ static void rrd2rrdr_query_execute(RRDR *r, size_t dim_id_in_rrdr, QUERY_ENGINE_ next1_point = sp2; } - ops->db_points_read_per_tier[ops->tier]++; - ops->db_total_points_read++; - - new_point.start_time = sp.start_time_s; - new_point.end_time = sp.end_time_s; - new_point.anomaly = sp.count ? (NETDATA_DOUBLE)sp.anomaly_count * 100.0 / (NETDATA_DOUBLE)sp.count : 0.0; + new_point.sp = sp; + new_point.added = false; query_point_set_id(new_point, ops->db_total_points_read); // if(debug_this) @@ -1415,13 +1688,13 @@ static void rrd2rrdr_query_execute(RRDR *r, size_t dim_id_in_rrdr, QUERY_ENGINE_ if(likely(!storage_point_is_unset(sp) && !storage_point_is_gap(sp))) { if(unlikely(use_anomaly_bit_as_value)) - new_point.value = new_point.anomaly; + new_point.value = storage_point_anomaly_rate(new_point.sp); else { switch (ops->tier_query_fetch) { default: case TIER_QUERY_FETCH_AVERAGE: - new_point.value = sp.sum / sp.count; + new_point.value = sp.sum / (NETDATA_DOUBLE)sp.count; break; case TIER_QUERY_FETCH_MIN: @@ -1438,36 +1711,34 @@ static void rrd2rrdr_query_execute(RRDR *r, size_t dim_id_in_rrdr, QUERY_ENGINE_ }; } } - else { + else new_point.value = NAN; - new_point.flags = SN_FLAG_NONE; - } } // check if the db is giving us zero duration points if(unlikely(db_points_read_since_plan_switch > 1 && - new_point.start_time == new_point.end_time)) { + new_point.sp.start_time_s == new_point.sp.end_time_s)) { internal_error(true, "QUERY: '%s', dimension '%s' next_metric() returned " "point %zu from %ld to %ld, that are both equal", - qt->id, string2str(qm->dimension.id), - new_point.id, new_point.start_time, new_point.end_time); + qt->id, query_metric_id(qt, qm), + new_point.id, new_point.sp.start_time_s, new_point.sp.end_time_s); - new_point.start_time = new_point.end_time - ops->tier_ptr->db_update_every_s; + new_point.sp.start_time_s = new_point.sp.end_time_s - ops->tier_ptr->db_update_every_s; } // check if the db is advancing the query if(unlikely(db_points_read_since_plan_switch > 1 && - new_point.end_time <= last1_point.end_time)) { + new_point.sp.end_time_s <= last1_point.sp.end_time_s)) { internal_error(true, "QUERY: '%s', dimension '%s' next_metric() returned " "point %zu from %ld to %ld, before the " "last point %zu from %ld to %ld, " "now is %ld to %ld", - qt->id, string2str(qm->dimension.id), - new_point.id, new_point.start_time, new_point.end_time, - last1_point.id, last1_point.start_time, last1_point.end_time, + qt->id, query_metric_id(qt, qm), + new_point.id, new_point.sp.start_time_s, new_point.sp.end_time_s, + last1_point.id, last1_point.sp.start_time_s, last1_point.sp.end_time_s, now_start_time, now_end_time); count_same_end_time++; @@ -1476,13 +1747,14 @@ static void rrd2rrdr_query_execute(RRDR *r, size_t dim_id_in_rrdr, QUERY_ENGINE_ count_same_end_time = 0; // decide how to use this point - if(likely(new_point.end_time < now_end_time)) { // likely to favor tier0 + if(likely(new_point.sp.end_time_s < now_end_time)) { // likely to favor tier0 // this db point ends before our now_end_time - if(likely(new_point.end_time >= now_start_time)) { // likely to favor tier0 + if(likely(new_point.sp.end_time_s >= now_start_time)) { // likely to favor tier0 // this db point ends after our now_start time - query_add_point_to_group(r, new_point, ops); + query_add_point_to_group(r, new_point, ops, add_flush); + new_point.added = true; } else { // we don't need this db point @@ -1493,14 +1765,14 @@ static void rrd2rrdr_query_execute(RRDR *r, size_t dim_id_in_rrdr, QUERY_ENGINE_ // at exactly the time we will want // we only log if this is not point 1 - internal_error(new_point.end_time < ops->plan_expanded_after && + internal_error(new_point.sp.end_time_s < ops->plan_expanded_after && db_points_read_since_plan_switch > 1, "QUERY: '%s', dimension '%s' next_metric() " "returned point %zu from %ld time %ld, " "which is entirely before our current timeframe %ld to %ld " "(and before the entire query, after %ld, before %ld)", - qt->id, string2str(qm->dimension.id), - new_point.id, new_point.start_time, new_point.end_time, + qt->id, query_metric_id(qt, qm), + new_point.id, new_point.sp.start_time_s, new_point.sp.end_time_s, now_start_time, now_end_time, ops->plan_expanded_after, ops->plan_expanded_before); } @@ -1518,15 +1790,15 @@ static void rrd2rrdr_query_execute(RRDR *r, size_t dim_id_in_rrdr, QUERY_ENGINE_ "QUERY: '%s', dimension '%s', the database does not advance the query," " it returned an end time less or equal to the end time of the last " "point we got %ld, %zu times", - qt->id, string2str(qm->dimension.id), - last1_point.end_time, count_same_end_time); + qt->id, query_metric_id(qt, qm), + last1_point.sp.end_time_s, count_same_end_time); - if(unlikely(new_point.end_time <= last1_point.end_time)) - new_point.end_time = now_end_time; + if(unlikely(new_point.sp.end_time_s <= last1_point.sp.end_time_s)) + new_point.sp.end_time_s = now_end_time; } - time_t stop_time = new_point.end_time; - if(unlikely(!storage_point_is_unset(next1_point))) { + time_t stop_time = new_point.sp.end_time_s; + if(unlikely(!storage_point_is_unset(next1_point) && next1_point.start_time_s >= now_end_time)) { // ONE POINT READ-AHEAD // the point crosses the start time of the // read ahead storage point we have read @@ -1537,18 +1809,20 @@ static void rrd2rrdr_query_execute(RRDR *r, size_t dim_id_in_rrdr, QUERY_ENGINE_ // we have 3 points in memory: last2, last1, new // we select the one to use based on their timestamps - size_t iterations = 0; - for ( ; now_end_time <= stop_time && points_added < points_wanted ; - now_end_time += ops->view_update_every, iterations++) { + internal_fatal(now_end_time > stop_time || points_added >= points_wanted, + "QUERY: first part of query provides invalid point to interpolate (now_end_time %ld, stop_time %ld", + now_end_time, stop_time); + do { // now_start_time is wrong in this loop // but, we don't need it QUERY_POINT current_point; - if(likely(now_end_time > new_point.start_time)) { + if(likely(now_end_time > new_point.sp.start_time_s)) { // it is time for our NEW point to be used current_point = new_point; + new_point.added = true; // first copy, then set it, so that new_point will not be added again query_interpolate_point(current_point, last1_point, now_end_time); // internal_error(current_point.id > 0 @@ -1564,9 +1838,10 @@ static void rrd2rrdr_query_execute(RRDR *r, size_t dim_id_in_rrdr, QUERY_ENGINE_ // current_point.id, current_point.start_time, current_point.end_time, // now_end_time); } - else if(likely(now_end_time <= last1_point.end_time)) { + else if(likely(now_end_time <= last1_point.sp.end_time_s)) { // our LAST point is still valid current_point = last1_point; + last1_point.added = true; // first copy, then set it, so that last1_point will not be added again query_interpolate_point(current_point, last2_point, now_end_time); // internal_error(current_point.id > 0 @@ -1586,14 +1861,11 @@ static void rrd2rrdr_query_execute(RRDR *r, size_t dim_id_in_rrdr, QUERY_ENGINE_ current_point = QUERY_POINT_EMPTY; } - query_add_point_to_group(r, current_point, ops); + query_add_point_to_group(r, current_point, ops, add_flush); rrdr_line = rrdr_line_init(r, now_end_time, rrdr_line); size_t rrdr_o_v_index = rrdr_line * r->d + dim_id_in_rrdr; - if(unlikely(!min_date)) min_date = now_end_time; - max_date = now_end_time; - // find the place to store our values RRDR_VALUE_FLAGS *rrdr_value_options_ptr = &r->o[rrdr_o_v_index]; @@ -1605,15 +1877,12 @@ static void rrd2rrdr_query_execute(RRDR *r, size_t dim_id_in_rrdr, QUERY_ENGINE_ *rrdr_value_options_ptr = ops->group_value_flags; // store the group value - NETDATA_DOUBLE group_value = ops->grouping_flush(r, rrdr_value_options_ptr); + NETDATA_DOUBLE group_value = time_grouping_flush(r, rrdr_value_options_ptr, add_flush); r->v[rrdr_o_v_index] = group_value; - // we only store uint8_t anomaly rates, - // so let's get double precision by storing - // anomaly rates in the range 0 - 200 - r->ar[rrdr_o_v_index] = ops->group_anomaly_rate / (NETDATA_DOUBLE)ops->group_points_added; + r->ar[rrdr_o_v_index] = storage_point_anomaly_rate(ops->group_point); - if(likely(points_added || dim_id_in_rrdr)) { + if(likely(points_added || r->internal.queries_count)) { // find the min/max across all dimensions if(unlikely(group_value < min)) min = group_value; @@ -1621,7 +1890,7 @@ static void rrd2rrdr_query_execute(RRDR *r, size_t dim_id_in_rrdr, QUERY_ENGINE_ } else { - // runs only when dim_id_in_rrdr == 0 && points_added == 0 + // runs only when r->internal.queries_count == 0 && points_added == 0 // so, on the first point added for the query. min = max = group_value; } @@ -1630,31 +1899,38 @@ static void rrd2rrdr_query_execute(RRDR *r, size_t dim_id_in_rrdr, QUERY_ENGINE_ ops->group_points_added = 0; ops->group_value_flags = RRDR_VALUE_NOTHING; ops->group_points_non_zero = 0; - ops->group_anomaly_rate = 0; - } - // the loop above increased "now" by query_granularity, + ops->group_point = STORAGE_POINT_UNSET; + + now_end_time += ops->view_update_every; + } while(now_end_time <= stop_time && points_added < points_wanted); + + // the loop above increased "now" by ops->view_update_every, // but the main loop will increase it too, // so, let's undo the last iteration of this loop - if(iterations) - now_end_time -= ops->view_update_every; + now_end_time -= ops->view_update_every; } query_planer_finalize_remaining_plans(ops); - r->internal.result_points_generated += points_added; - r->internal.db_points_read += ops->db_total_points_read; + qm->query_points = ops->query_point; + + // fill the rest of the points with empty values + while (points_added < points_wanted) { + rrdr_line++; + size_t rrdr_o_v_index = rrdr_line * r->d + dim_id_in_rrdr; + r->o[rrdr_o_v_index] = RRDR_VALUE_EMPTY; + r->v[rrdr_o_v_index] = 0.0; + r->ar[rrdr_o_v_index] = 0.0; + points_added++; + } + + r->internal.queries_count++; + r->view.min = min; + r->view.max = max; + + r->stats.result_points_generated += points_added; + r->stats.db_points_read += ops->db_total_points_read; for(size_t tr = 0; tr < storage_tiers ; tr++) - r->internal.tier_points_read[tr] += ops->db_points_read_per_tier[tr]; - - r->min = min; - r->max = max; - r->before = max_date; - r->after = min_date - ops->view_update_every + ops->query_granularity; - rrdr_done(r, rrdr_line); - - internal_error(points_added != points_wanted, - "QUERY: '%s', dimension '%s', requested %zu points, but RRDR added %zu (%zu db points read).", - qt->id, string2str(qm->dimension.id), - (size_t)points_wanted, (size_t)points_added, ops->db_total_points_read); + qt->db.tiers[tr].points += ops->db_points_read_per_tier[tr]; } // ---------------------------------------------------------------------------- @@ -1669,7 +1945,7 @@ void rrdr_fill_tier_gap_from_smaller_tiers(RRDDIM *rd, size_t tier, time_t now_s struct rrddim_tier *t = &rd->tiers[tier]; if(unlikely(!t)) return; - time_t latest_time_s = t->query_ops->latest_time_s(t->db_metric_handle); + time_t latest_time_s = storage_engine_latest_time_s(t->backend, t->db_metric_handle); time_t granularity = (time_t)t->tier_grouping * (time_t)rd->update_every; time_t time_diff = now_s - latest_time_s; @@ -1683,21 +1959,21 @@ void rrdr_fill_tier_gap_from_smaller_tiers(RRDDIM *rd, size_t tier, time_t now_s // for each lower tier for(int read_tier = (int)tier - 1; read_tier >= 0 ; read_tier--){ - time_t smaller_tier_first_time = rd->tiers[read_tier].query_ops->oldest_time_s(rd->tiers[read_tier].db_metric_handle); - time_t smaller_tier_last_time = rd->tiers[read_tier].query_ops->latest_time_s(rd->tiers[read_tier].db_metric_handle); + time_t smaller_tier_first_time = storage_engine_oldest_time_s(rd->tiers[read_tier].backend, rd->tiers[read_tier].db_metric_handle); + time_t smaller_tier_last_time = storage_engine_latest_time_s(rd->tiers[read_tier].backend, rd->tiers[read_tier].db_metric_handle); if(smaller_tier_last_time <= latest_time_s) continue; // it is as bad as we are long after_wanted = (latest_time_s < smaller_tier_first_time) ? smaller_tier_first_time : latest_time_s; long before_wanted = smaller_tier_last_time; struct rrddim_tier *tmp = &rd->tiers[read_tier]; - tmp->query_ops->init(tmp->db_metric_handle, &handle, after_wanted, before_wanted, STORAGE_PRIORITY_HIGH); + storage_engine_query_init(tmp->backend, tmp->db_metric_handle, &handle, after_wanted, before_wanted, STORAGE_PRIORITY_HIGH); size_t points_read = 0; - while(!tmp->query_ops->is_finished(&handle)) { + while(!storage_engine_query_is_finished(&handle)) { - STORAGE_POINT sp = tmp->query_ops->next_metric(&handle); + STORAGE_POINT sp = storage_engine_query_next_metric(&handle); points_read++; if(sp.end_time_s > latest_time_s) { @@ -1706,7 +1982,7 @@ void rrdr_fill_tier_gap_from_smaller_tiers(RRDDIM *rd, size_t tier, time_t now_s } } - tmp->query_ops->finalize(&handle); + storage_engine_query_finalize(&handle); store_metric_collection_completed(); global_statistics_backfill_query_completed(points_read); @@ -1721,7 +1997,7 @@ void rrdr_fill_tier_gap_from_smaller_tiers(RRDDIM *rd, size_t tier, time_t now_s #ifdef NETDATA_INTERNAL_CHECKS static void rrd2rrdr_log_request_response_metadata(RRDR *r , RRDR_OPTIONS options __maybe_unused - , RRDR_GROUPING group_method + , RRDR_TIME_GROUPING group_method , bool aligned , size_t group , time_t resampling_time @@ -1737,8 +2013,9 @@ static void rrd2rrdr_log_request_response_metadata(RRDR *r , const char *msg ) { - time_t first_entry_s = r->internal.qt->db.first_time_s; - time_t last_entry_s = r->internal.qt->db.last_time_s; + QUERY_TARGET *qt = r->internal.qt; + time_t first_entry_s = qt->db.first_time_s; + time_t last_entry_s = qt->db.last_time_s; internal_error( true, @@ -1748,33 +2025,33 @@ static void rrd2rrdr_log_request_response_metadata(RRDR *r "duration (got: %ld, want: %ld, req: %ld, db: %ld), " "points (got: %zu, want: %zu, req: %zu), " "%s" - , r->internal.qt->id - , r->internal.qt->window.query_granularity + , qt->id + , qt->window.query_granularity // grouping , (aligned) ? "aligned" : "unaligned" - , group_method2string(group_method) + , time_grouping_method2string(group_method) , group , resampling_time , resampling_group // after - , r->after + , r->view.after , after_wanted , after_requested , first_entry_s // before - , r->before + , r->view.before , before_wanted , before_requested , last_entry_s // duration - , (long)(r->before - r->after + r->internal.qt->window.query_granularity) - , (long)(before_wanted - after_wanted + r->internal.qt->window.query_granularity) + , (long)(r->view.before - r->view.after + qt->window.query_granularity) + , (long)(before_wanted - after_wanted + qt->window.query_granularity) , (long)before_requested - after_requested - , (long)((last_entry_s - first_entry_s) + r->internal.qt->window.query_granularity) + , (long)((last_entry_s - first_entry_s) + qt->window.query_granularity) // points , r->rows @@ -1788,9 +2065,12 @@ static void rrd2rrdr_log_request_response_metadata(RRDR *r #endif // NETDATA_INTERNAL_CHECKS // Returns 1 if an absolute period was requested or 0 if it was a relative period -bool rrdr_relative_window_to_absolute(time_t *after, time_t *before) { +bool rrdr_relative_window_to_absolute(time_t *after, time_t *before, time_t *now_ptr) { time_t now = now_realtime_sec() - 1; + if(now_ptr) + *now_ptr = now; + int absolute_period_requested = -1; long long after_requested, before_requested; @@ -1890,11 +2170,11 @@ bool query_target_calculate_window(QUERY_TARGET *qt) { size_t points_requested = (long)qt->request.points; time_t after_requested = qt->request.after; time_t before_requested = qt->request.before; - RRDR_GROUPING group_method = qt->request.group_method; + RRDR_TIME_GROUPING group_method = qt->request.time_group_method; time_t resampling_time_requested = qt->request.resampling_time; - RRDR_OPTIONS options = qt->request.options; + RRDR_OPTIONS options = qt->window.options; size_t tier = qt->request.tier; - time_t update_every = qt->db.minimum_latest_update_every_s; + time_t update_every = qt->db.minimum_latest_update_every_s ? qt->db.minimum_latest_update_every_s : 1; // RULES // points_requested = 0 @@ -1953,27 +2233,36 @@ bool query_target_calculate_window(QUERY_TARGET *qt) { time_t last_entry_s = qt->db.last_time_s; if (first_entry_s == 0 || last_entry_s == 0) { - internal_error(true, "QUERY: no data detected on query '%s' (db first_entry_t = %ld, last_entry_t = %ld", qt->id, first_entry_s, last_entry_s); - query_debug_log_free(); - return false; - } + internal_error(true, "QUERY: no data detected on query '%s' (db first_entry_t = %ld, last_entry_t = %ld)", qt->id, first_entry_s, last_entry_s); + after_wanted = qt->window.after; + before_wanted = qt->window.before; - query_debug_log(":first_entry_t %ld, last_entry_t %ld", first_entry_s, last_entry_s); + if(after_wanted == before_wanted) + after_wanted = before_wanted - update_every; - if (after_wanted == 0) { - after_wanted = first_entry_s; - query_debug_log(":zero after_wanted %ld", after_wanted); + if (points_wanted == 0) { + points_wanted = (before_wanted - after_wanted) / update_every; + query_debug_log(":zero points_wanted %zu", points_wanted); + } } + else { + query_debug_log(":first_entry_t %ld, last_entry_t %ld", first_entry_s, last_entry_s); - if (before_wanted == 0) { - before_wanted = last_entry_s; - before_is_aligned_to_db_end = true; - query_debug_log(":zero before_wanted %ld", before_wanted); - } + if (after_wanted == 0) { + after_wanted = first_entry_s; + query_debug_log(":zero after_wanted %ld", after_wanted); + } + + if (before_wanted == 0) { + before_wanted = last_entry_s; + before_is_aligned_to_db_end = true; + query_debug_log(":zero before_wanted %ld", before_wanted); + } - if (points_wanted == 0) { - points_wanted = (last_entry_s - first_entry_s) / update_every; - query_debug_log(":zero points_wanted %zu", points_wanted); + if (points_wanted == 0) { + points_wanted = (last_entry_s - first_entry_s) / update_every; + query_debug_log(":zero points_wanted %zu", points_wanted); + } } } @@ -1983,7 +2272,7 @@ bool query_target_calculate_window(QUERY_TARGET *qt) { } // convert our before_wanted and after_wanted to absolute - rrdr_relative_window_to_absolute(&after_wanted, &before_wanted); + rrdr_relative_window_to_absolute(&after_wanted, &before_wanted, NULL); query_debug_log(":relative2absolute after %ld, before %ld", after_wanted, before_wanted); if (natural_points && (options & RRDR_OPTION_SELECTED_TIER) && tier > 0 && storage_tiers > 1) { @@ -2145,8 +2434,8 @@ bool query_target_calculate_window(QUERY_TARGET *qt) { qt->window.relative = relative_period_requested; qt->window.points = points_wanted; qt->window.group = group; - qt->window.group_method = group_method; - qt->window.group_options = qt->request.group_options; + qt->window.time_group_method = group_method; + qt->window.time_group_options = qt->request.time_group_options; qt->window.query_granularity = query_granularity; qt->window.resampling_group = resampling_group; qt->window.resampling_divisor = resampling_divisor; @@ -2157,204 +2446,1290 @@ bool query_target_calculate_window(QUERY_TARGET *qt) { return true; } -RRDR *rrd2rrdr_legacy( - ONEWAYALLOC *owa, - RRDSET *st, size_t points, time_t after, time_t before, - RRDR_GROUPING group_method, time_t resampling_time, RRDR_OPTIONS options, const char *dimensions, - const char *group_options, time_t timeout, size_t tier, QUERY_SOURCE query_source, - STORAGE_PRIORITY priority) { +// ---------------------------------------------------------------------------- +// group by - QUERY_TARGET_REQUEST qtr = { - .st = st, - .points = points, - .after = after, - .before = before, - .group_method = group_method, - .resampling_time = resampling_time, - .options = options, - .dimensions = dimensions, - .group_options = group_options, - .timeout = timeout, - .tier = tier, - .query_source = query_source, - .priority = priority, - }; +struct group_by_label_key { + DICTIONARY *values; +}; + +static void group_by_label_key_insert_cb(const DICTIONARY_ITEM *item __maybe_unused, void *value, void *data) { + // add the key to our r->label_keys global keys dictionary + DICTIONARY *label_keys = data; + dictionary_set(label_keys, dictionary_acquired_item_name(item), NULL, 0); - return rrd2rrdr(owa, query_target_create(&qtr)); + // create a dictionary for the values of this key + struct group_by_label_key *k = value; + k->values = dictionary_create_advanced(DICT_OPTION_SINGLE_THREADED | DICT_OPTION_DONT_OVERWRITE_VALUE, NULL, 0); } -RRDR *rrd2rrdr(ONEWAYALLOC *owa, QUERY_TARGET *qt) { - if(!qt) - return NULL; +static void group_by_label_key_delete_cb(const DICTIONARY_ITEM *item __maybe_unused, void *value, void *data __maybe_unused) { + struct group_by_label_key *k = value; + dictionary_destroy(k->values); +} - if(!owa) { - query_target_release(qt); - return NULL; - } +static int rrdlabels_traversal_cb_to_group_by_label_key(const char *name, const char *value, RRDLABEL_SRC ls __maybe_unused, void *data) { + DICTIONARY *dl = data; + struct group_by_label_key *k = dictionary_set(dl, name, NULL, sizeof(struct group_by_label_key)); + dictionary_set(k->values, value, NULL, 0); + return 1; +} - // qt.window members are the WANTED ones. - // qt.request members are the REQUESTED ones. +void rrdr_json_group_by_labels(BUFFER *wb, const char *key, RRDR *r, RRDR_OPTIONS options) { + if(!r->label_keys || !r->dl) + return; + + buffer_json_member_add_object(wb, key); + + void *t; + dfe_start_read(r->label_keys, t) { + buffer_json_member_add_array(wb, t_dfe.name); + + for(size_t d = 0; d < r->d ;d++) { + if(!rrdr_dimension_should_be_exposed(r->od[d], options)) + continue; + + struct group_by_label_key *k = dictionary_get(r->dl[d], t_dfe.name); + if(k) { + buffer_json_add_array_item_array(wb); + void *tt; + dfe_start_read(k->values, tt) { + buffer_json_add_array_item_string(wb, tt_dfe.name); + } + dfe_done(tt); + buffer_json_array_close(wb); + } + else + buffer_json_add_array_item_string(wb, NULL); + } - RRDR *r = rrdr_create(owa, qt); - if(unlikely(!r)) { - internal_error(true, "QUERY: cannot create RRDR for %s, after=%ld, before=%ld, points=%zu", - qt->id, qt->window.after, qt->window.before, qt->window.points); - return NULL; - } + buffer_json_array_close(wb); + } + dfe_done(t); - if(unlikely(!r->d || !qt->window.points)) { - internal_error(true, "QUERY: returning empty RRDR (no dimensions in RRDSET) for %s, after=%ld, before=%ld, points=%zu", - qt->id, qt->window.after, qt->window.before, qt->window.points); - return r; - } + buffer_json_object_close(wb); // key +} - if(qt->window.relative) - r->result_options |= RRDR_RESULT_OPTION_RELATIVE; - else - r->result_options |= RRDR_RESULT_OPTION_ABSOLUTE; +static int group_by_label_is_space(char c) { + if(c == ',' || c == '|') + return 1; - // ------------------------------------------------------------------------- - // initialize RRDR + return 0; +} - r->group = qt->window.group; - r->update_every = (int) (qt->window.group * qt->window.query_granularity); - r->before = qt->window.before; - r->after = qt->window.after; - r->internal.points_wanted = qt->window.points; - r->internal.resampling_group = qt->window.resampling_group; - r->internal.resampling_divisor = qt->window.resampling_divisor; - r->internal.query_options = qt->window.options; +static void rrd2rrdr_set_timestamps(RRDR *r) { + QUERY_TARGET *qt = r->internal.qt; - // ------------------------------------------------------------------------- - // assign the processor functions - rrdr_set_grouping_function(r, qt->window.group_method); + internal_fatal(qt->window.points != r->n, "QUERY: mismatch to the number of points in qt and r"); - // allocate any memory required by the grouping method - r->internal.grouping_create(r, qt->window.group_options); + r->view.group = qt->window.group; + r->view.update_every = (int) query_view_update_every(qt); + r->view.before = qt->window.before; + r->view.after = qt->window.after; - // ------------------------------------------------------------------------- - // do the work for each dimension + r->time_grouping.points_wanted = qt->window.points; + r->time_grouping.resampling_group = qt->window.resampling_group; + r->time_grouping.resampling_divisor = qt->window.resampling_divisor; - time_t max_after = 0, min_before = 0; - size_t max_rows = 0; + r->rows = qt->window.points; - long dimensions_used = 0, dimensions_nonzero = 0; - struct timeval query_start_time; - struct timeval query_current_time; - if (qt->request.timeout) - now_realtime_timeval(&query_start_time); + size_t points_wanted = qt->window.points; + time_t after_wanted = qt->window.after; + time_t before_wanted = qt->window.before; (void)before_wanted; - size_t last_db_points_read = 0; - size_t last_result_points_generated = 0; + time_t view_update_every = r->view.update_every; + time_t query_granularity = (time_t)(r->view.update_every / r->view.group); - QUERY_ENGINE_OPS **ops = onewayalloc_callocz(r->internal.owa, qt->query.used, sizeof(QUERY_ENGINE_OPS *)); + size_t rrdr_line = 0; + time_t first_point_end_time = after_wanted + view_update_every - query_granularity; + time_t now_end_time = first_point_end_time; - size_t capacity = libuv_worker_threads * 2; - size_t max_queries_to_prepare = (qt->query.used > (capacity - 1)) ? (capacity - 1) : qt->query.used; - size_t queries_prepared = 0; - while(queries_prepared < max_queries_to_prepare) { - // preload another query - ops[queries_prepared] = rrd2rrdr_query_prep(r, queries_prepared); - queries_prepared++; + while (rrdr_line < points_wanted) { + r->t[rrdr_line++] = now_end_time; + now_end_time += view_update_every; } - for(size_t c = 0, max = qt->query.used; c < max ; c++) { + internal_fatal(r->t[0] != first_point_end_time, "QUERY: wrong first timestamp in the query"); + internal_error(r->t[points_wanted - 1] != before_wanted, + "QUERY: wrong last timestamp in the query, expected %ld, found %ld", + before_wanted, r->t[points_wanted - 1]); +} - if(queries_prepared < max) { - // preload another query - ops[queries_prepared] = rrd2rrdr_query_prep(r, queries_prepared); - queries_prepared++; +static void query_group_by_make_dimension_key(BUFFER *key, RRDR_GROUP_BY group_by, size_t group_by_id, QUERY_TARGET *qt, QUERY_NODE *qn, QUERY_CONTEXT *qc, QUERY_INSTANCE *qi, QUERY_DIMENSION *qd __maybe_unused, QUERY_METRIC *qm, bool query_has_percentage_of_instance) { + buffer_flush(key); + if(unlikely(!query_has_percentage_of_instance && qm->status & RRDR_DIMENSION_HIDDEN)) { + buffer_strcat(key, "__hidden_dimensions__"); + } + else if(unlikely(group_by & RRDR_GROUP_BY_SELECTED)) { + buffer_strcat(key, "selected"); + } + else { + if (group_by & RRDR_GROUP_BY_DIMENSION) { + buffer_fast_strcat(key, "|", 1); + buffer_strcat(key, query_metric_name(qt, qm)); } - // set the query target dimension options to rrdr - r->od[c] = qt->query.array[c].dimension.options; + if (group_by & (RRDR_GROUP_BY_INSTANCE|RRDR_GROUP_BY_PERCENTAGE_OF_INSTANCE)) { + buffer_fast_strcat(key, "|", 1); + buffer_strcat(key, string2str(query_instance_id_fqdn(qi, qt->request.version))); + } - // reset the grouping for the new dimension - r->internal.grouping_reset(r); + if (group_by & RRDR_GROUP_BY_LABEL) { + DICTIONARY *labels = rrdinstance_acquired_labels(qi->ria); + for (size_t l = 0; l < qt->group_by[group_by_id].used; l++) { + buffer_fast_strcat(key, "|", 1); + rrdlabels_get_value_to_buffer_or_unset(labels, key, qt->group_by[group_by_id].label_keys[l], "[unset]"); + } + } - if(ops[c]) { - r->od[c] |= RRDR_DIMENSION_QUERIED; - rrd2rrdr_query_execute(r, c, ops[c]); + if (group_by & RRDR_GROUP_BY_NODE) { + buffer_fast_strcat(key, "|", 1); + buffer_strcat(key, qn->rrdhost->machine_guid); } - else - continue; - global_statistics_rrdr_query_completed( - 1, - r->internal.db_points_read - last_db_points_read, - r->internal.result_points_generated - last_result_points_generated, - qt->request.query_source); + if (group_by & RRDR_GROUP_BY_CONTEXT) { + buffer_fast_strcat(key, "|", 1); + buffer_strcat(key, rrdcontext_acquired_id(qc->rca)); + } - last_db_points_read = r->internal.db_points_read; - last_result_points_generated = r->internal.result_points_generated; + if (group_by & RRDR_GROUP_BY_UNITS) { + buffer_fast_strcat(key, "|", 1); + buffer_strcat(key, query_target_has_percentage_units(qt) ? "%" : rrdinstance_acquired_units(qi->ria)); + } + } +} - if (qt->request.timeout) - now_realtime_timeval(&query_current_time); +static void query_group_by_make_dimension_id(BUFFER *key, RRDR_GROUP_BY group_by, size_t group_by_id, QUERY_TARGET *qt, QUERY_NODE *qn, QUERY_CONTEXT *qc, QUERY_INSTANCE *qi, QUERY_DIMENSION *qd __maybe_unused, QUERY_METRIC *qm, bool query_has_percentage_of_instance) { + buffer_flush(key); + if(unlikely(!query_has_percentage_of_instance && qm->status & RRDR_DIMENSION_HIDDEN)) { + buffer_strcat(key, "__hidden_dimensions__"); + } + else if(unlikely(group_by & RRDR_GROUP_BY_SELECTED)) { + buffer_strcat(key, "selected"); + } + else { + if (group_by & RRDR_GROUP_BY_DIMENSION) { + buffer_strcat(key, query_metric_name(qt, qm)); + } - if(r->od[c] & RRDR_DIMENSION_NONZERO) - dimensions_nonzero++; + if (group_by & (RRDR_GROUP_BY_INSTANCE|RRDR_GROUP_BY_PERCENTAGE_OF_INSTANCE)) { + if (buffer_strlen(key) != 0) + buffer_fast_strcat(key, ",", 1); - // verify all dimensions are aligned - if(unlikely(!dimensions_used)) { - min_before = r->before; - max_after = r->after; - max_rows = r->rows; + if (group_by & RRDR_GROUP_BY_NODE) + buffer_strcat(key, rrdinstance_acquired_id(qi->ria)); + else + buffer_strcat(key, string2str(query_instance_id_fqdn(qi, qt->request.version))); } - else { - if(r->after != max_after) { - internal_error(true, "QUERY: 'after' mismatch between dimensions for chart '%s': max is %zu, dimension '%s' has %zu", - string2str(qt->query.array[c].dimension.id), (size_t)max_after, string2str(qt->query.array[c].dimension.name), (size_t)r->after); - r->after = (r->after > max_after) ? r->after : max_after; + if (group_by & RRDR_GROUP_BY_LABEL) { + DICTIONARY *labels = rrdinstance_acquired_labels(qi->ria); + for (size_t l = 0; l < qt->group_by[group_by_id].used; l++) { + if (buffer_strlen(key) != 0) + buffer_fast_strcat(key, ",", 1); + rrdlabels_get_value_to_buffer_or_unset(labels, key, qt->group_by[group_by_id].label_keys[l], "[unset]"); } + } - if(r->before != min_before) { - internal_error(true, "QUERY: 'before' mismatch between dimensions for chart '%s': max is %zu, dimension '%s' has %zu", - string2str(qt->query.array[c].dimension.id), (size_t)min_before, string2str(qt->query.array[c].dimension.name), (size_t)r->before); + if (group_by & RRDR_GROUP_BY_NODE) { + if (buffer_strlen(key) != 0) + buffer_fast_strcat(key, ",", 1); - r->before = (r->before < min_before) ? r->before : min_before; - } + buffer_strcat(key, qn->rrdhost->machine_guid); + } - if(r->rows != max_rows) { - internal_error(true, "QUERY: 'rows' mismatch between dimensions for chart '%s': max is %zu, dimension '%s' has %zu", - string2str(qt->query.array[c].dimension.id), (size_t)max_rows, string2str(qt->query.array[c].dimension.name), (size_t)r->rows); + if (group_by & RRDR_GROUP_BY_CONTEXT) { + if (buffer_strlen(key) != 0) + buffer_fast_strcat(key, ",", 1); - r->rows = (r->rows > max_rows) ? r->rows : max_rows; - } + buffer_strcat(key, rrdcontext_acquired_id(qc->rca)); + } + + if (group_by & RRDR_GROUP_BY_UNITS) { + if (buffer_strlen(key) != 0) + buffer_fast_strcat(key, ",", 1); + + buffer_strcat(key, query_target_has_percentage_units(qt) ? "%" : rrdinstance_acquired_units(qi->ria)); + } + } +} + +static void query_group_by_make_dimension_name(BUFFER *key, RRDR_GROUP_BY group_by, size_t group_by_id, QUERY_TARGET *qt, QUERY_NODE *qn, QUERY_CONTEXT *qc, QUERY_INSTANCE *qi, QUERY_DIMENSION *qd __maybe_unused, QUERY_METRIC *qm, bool query_has_percentage_of_instance) { + buffer_flush(key); + if(unlikely(!query_has_percentage_of_instance && qm->status & RRDR_DIMENSION_HIDDEN)) { + buffer_strcat(key, "__hidden_dimensions__"); + } + else if(unlikely(group_by & RRDR_GROUP_BY_SELECTED)) { + buffer_strcat(key, "selected"); + } + else { + if (group_by & RRDR_GROUP_BY_DIMENSION) { + buffer_strcat(key, query_metric_name(qt, qm)); + } + + if (group_by & (RRDR_GROUP_BY_INSTANCE|RRDR_GROUP_BY_PERCENTAGE_OF_INSTANCE)) { + if (buffer_strlen(key) != 0) + buffer_fast_strcat(key, ",", 1); + + if (group_by & RRDR_GROUP_BY_NODE) + buffer_strcat(key, rrdinstance_acquired_name(qi->ria)); + else + buffer_strcat(key, string2str(query_instance_name_fqdn(qi, qt->request.version))); + } + + if (group_by & RRDR_GROUP_BY_LABEL) { + DICTIONARY *labels = rrdinstance_acquired_labels(qi->ria); + for (size_t l = 0; l < qt->group_by[group_by_id].used; l++) { + if (buffer_strlen(key) != 0) + buffer_fast_strcat(key, ",", 1); + rrdlabels_get_value_to_buffer_or_unset(labels, key, qt->group_by[group_by_id].label_keys[l], "[unset]"); + } + } + + if (group_by & RRDR_GROUP_BY_NODE) { + if (buffer_strlen(key) != 0) + buffer_fast_strcat(key, ",", 1); + + buffer_strcat(key, rrdhost_hostname(qn->rrdhost)); + } + + if (group_by & RRDR_GROUP_BY_CONTEXT) { + if (buffer_strlen(key) != 0) + buffer_fast_strcat(key, ",", 1); + + buffer_strcat(key, rrdcontext_acquired_id(qc->rca)); + } + + if (group_by & RRDR_GROUP_BY_UNITS) { + if (buffer_strlen(key) != 0) + buffer_fast_strcat(key, ",", 1); + + buffer_strcat(key, query_target_has_percentage_units(qt) ? "%" : rrdinstance_acquired_units(qi->ria)); + } + } +} + +struct rrdr_group_by_entry { + size_t priority; + size_t count; + STRING *id; + STRING *name; + STRING *units; + RRDR_DIMENSION_FLAGS od; + DICTIONARY *dl; +}; + +static RRDR *rrd2rrdr_group_by_initialize(ONEWAYALLOC *owa, QUERY_TARGET *qt) { + RRDR *r_tmp = NULL; + RRDR_OPTIONS options = qt->window.options; + + if(qt->request.version < 2) { + // v1 query + RRDR *r = rrdr_create(owa, qt, qt->query.used, qt->window.points); + if(unlikely(!r)) { + internal_error(true, "QUERY: cannot create RRDR for %s, after=%ld, before=%ld, dimensions=%u, points=%zu", + qt->id, qt->window.after, qt->window.before, qt->query.used, qt->window.points); + return NULL; + } + r->group_by.r = NULL; + + for(size_t d = 0; d < qt->query.used ; d++) { + QUERY_METRIC *qm = query_metric(qt, d); + QUERY_DIMENSION *qd = query_dimension(qt, qm->link.query_dimension_id); + r->di[d] = rrdmetric_acquired_id_dup(qd->rma); + r->dn[d] = rrdmetric_acquired_name_dup(qd->rma); + } + + rrd2rrdr_set_timestamps(r); + return r; + } + // v2 query + + // parse all the group-by label keys + for(size_t g = 0; g < MAX_QUERY_GROUP_BY_PASSES ;g++) { + if (qt->request.group_by[g].group_by & RRDR_GROUP_BY_LABEL && + qt->request.group_by[g].group_by_label && *qt->request.group_by[g].group_by_label) + qt->group_by[g].used = quoted_strings_splitter( + qt->request.group_by[g].group_by_label, qt->group_by[g].label_keys, + GROUP_BY_MAX_LABEL_KEYS, group_by_label_is_space); + + if (!qt->group_by[g].used) + qt->request.group_by[g].group_by &= ~RRDR_GROUP_BY_LABEL; + } + + // make sure there are valid group-by methods + bool query_has_percentage_of_instance = false; + for(size_t g = 0; g < MAX_QUERY_GROUP_BY_PASSES - 1 ;g++) { + if(!(qt->request.group_by[g].group_by & SUPPORTED_GROUP_BY_METHODS)) + qt->request.group_by[g].group_by = (g == 0) ? RRDR_GROUP_BY_DIMENSION : RRDR_GROUP_BY_NONE; + + if(qt->request.group_by[g].group_by & RRDR_GROUP_BY_PERCENTAGE_OF_INSTANCE) + query_has_percentage_of_instance = true; + } + + // merge all group-by options to upper levels + for(size_t g = 0; g < MAX_QUERY_GROUP_BY_PASSES - 1 ;g++) { + if(qt->request.group_by[g].group_by == RRDR_GROUP_BY_NONE) + continue; + + if(qt->request.group_by[g].group_by == RRDR_GROUP_BY_SELECTED) { + for (size_t r = g + 1; r < MAX_QUERY_GROUP_BY_PASSES; r++) + qt->request.group_by[r].group_by = RRDR_GROUP_BY_NONE; + } + else { + for (size_t r = g + 1; r < MAX_QUERY_GROUP_BY_PASSES; r++) { + if (qt->request.group_by[r].group_by == RRDR_GROUP_BY_NONE) + continue; + + if (qt->request.group_by[r].group_by != RRDR_GROUP_BY_SELECTED) { + if(qt->request.group_by[r].group_by & RRDR_GROUP_BY_PERCENTAGE_OF_INSTANCE) + qt->request.group_by[g].group_by |= RRDR_GROUP_BY_INSTANCE; + else + qt->request.group_by[g].group_by |= qt->request.group_by[r].group_by; + + if(qt->request.group_by[r].group_by & RRDR_GROUP_BY_LABEL) { + for (size_t lr = 0; lr < qt->group_by[r].used; lr++) { + bool found = false; + for (size_t lg = 0; lg < qt->group_by[g].used; lg++) { + if (strcmp(qt->group_by[g].label_keys[lg], qt->group_by[r].label_keys[lr]) == 0) { + found = true; + break; + } + } + + if (!found && qt->group_by[g].used < GROUP_BY_MAX_LABEL_KEYS * MAX_QUERY_GROUP_BY_PASSES) + qt->group_by[g].label_keys[qt->group_by[g].used++] = qt->group_by[r].label_keys[lr]; + } + } + } + } + } + } + + int added = 0; + RRDR *first_r = NULL, *last_r = NULL; + BUFFER *key = buffer_create(0, NULL); + struct rrdr_group_by_entry *entries = onewayalloc_mallocz(owa, qt->query.used * sizeof(struct rrdr_group_by_entry)); + DICTIONARY *groups = dictionary_create(DICT_OPTION_SINGLE_THREADED | DICT_OPTION_DONT_OVERWRITE_VALUE); + DICTIONARY *label_keys = NULL; + + for(size_t g = 0; g < MAX_QUERY_GROUP_BY_PASSES ;g++) { + RRDR_GROUP_BY group_by = qt->request.group_by[g].group_by; + + if(group_by == RRDR_GROUP_BY_NONE) + break; + + memset(entries, 0, qt->query.used * sizeof(struct rrdr_group_by_entry)); + dictionary_flush(groups); + added = 0; + + size_t hidden_dimensions = 0; + bool final_grouping = (g == MAX_QUERY_GROUP_BY_PASSES - 1 || qt->request.group_by[g + 1].group_by == RRDR_GROUP_BY_NONE) ? true : false; + + if (final_grouping && (options & RRDR_OPTION_GROUP_BY_LABELS)) + label_keys = dictionary_create_advanced(DICT_OPTION_SINGLE_THREADED | DICT_OPTION_DONT_OVERWRITE_VALUE, NULL, 0); + + QUERY_INSTANCE *last_qi = NULL; + size_t priority = 0; + time_t update_every_max = 0; + for (size_t d = 0; d < qt->query.used; d++) { + QUERY_METRIC *qm = query_metric(qt, d); + QUERY_DIMENSION *qd = query_dimension(qt, qm->link.query_dimension_id); + QUERY_INSTANCE *qi = query_instance(qt, qm->link.query_instance_id); + QUERY_CONTEXT *qc = query_context(qt, qm->link.query_context_id); + QUERY_NODE *qn = query_node(qt, qm->link.query_node_id); + + if (qi != last_qi) { + last_qi = qi; + + time_t update_every = rrdinstance_acquired_update_every(qi->ria); + if (update_every > update_every_max) + update_every_max = update_every; + } + + priority = qd->priority; + + if(qm->status & RRDR_DIMENSION_HIDDEN) + hidden_dimensions++; + + // -------------------------------------------------------------------- + // generate the group by key + + query_group_by_make_dimension_key(key, group_by, g, qt, qn, qc, qi, qd, qm, query_has_percentage_of_instance); + + // lookup the key in the dictionary + + int pos = -1; + int *set = dictionary_set(groups, buffer_tostring(key), &pos, sizeof(pos)); + if (*set == -1) { + // the key just added to the dictionary + + *set = pos = added++; + + // ---------------------------------------------------------------- + // generate the dimension id + + query_group_by_make_dimension_id(key, group_by, g, qt, qn, qc, qi, qd, qm, query_has_percentage_of_instance); + entries[pos].id = string_strdupz(buffer_tostring(key)); + + // ---------------------------------------------------------------- + // generate the dimension name + + query_group_by_make_dimension_name(key, group_by, g, qt, qn, qc, qi, qd, qm, query_has_percentage_of_instance); + entries[pos].name = string_strdupz(buffer_tostring(key)); + + // add the rest of the info + entries[pos].units = rrdinstance_acquired_units_dup(qi->ria); + entries[pos].priority = priority; + + if (label_keys) { + entries[pos].dl = dictionary_create_advanced( + DICT_OPTION_SINGLE_THREADED | DICT_OPTION_FIXED_SIZE | DICT_OPTION_DONT_OVERWRITE_VALUE, + NULL, sizeof(struct group_by_label_key)); + dictionary_register_insert_callback(entries[pos].dl, group_by_label_key_insert_cb, label_keys); + dictionary_register_delete_callback(entries[pos].dl, group_by_label_key_delete_cb, label_keys); + } + } else { + // the key found in the dictionary + pos = *set; + } + + entries[pos].count++; + + if (unlikely(priority < entries[pos].priority)) + entries[pos].priority = priority; + + if(g > 0) + last_r->dgbs[qm->grouped_as.slot] = pos; + else + qm->grouped_as.first_slot = pos; + + qm->grouped_as.slot = pos; + qm->grouped_as.id = entries[pos].id; + qm->grouped_as.name = entries[pos].name; + qm->grouped_as.units = entries[pos].units; + + // copy the dimension flags decided by the query target + // we need this, because if a dimension is explicitly selected + // the query target adds to it the non-zero flag + qm->status |= RRDR_DIMENSION_GROUPED; + + if(query_has_percentage_of_instance) + // when the query has percentage of instance + // there will be no hidden dimensions in the final query + // so we have to remove the hidden flag from all dimensions + entries[pos].od |= qm->status & ~RRDR_DIMENSION_HIDDEN; + else + entries[pos].od |= qm->status; + + if (entries[pos].dl) + rrdlabels_walkthrough_read(rrdinstance_acquired_labels(qi->ria), + rrdlabels_traversal_cb_to_group_by_label_key, entries[pos].dl); + } + + RRDR *r = rrdr_create(owa, qt, added, qt->window.points); + if (!r) { + internal_error(true, + "QUERY: cannot create group by RRDR for %s, after=%ld, before=%ld, dimensions=%d, points=%zu", + qt->id, qt->window.after, qt->window.before, added, qt->window.points); + goto cleanup; + } + + bool hidden_dimension_on_percentage_of_instance = hidden_dimensions && (group_by & RRDR_GROUP_BY_PERCENTAGE_OF_INSTANCE); + + // prevent double cleanup in case of error + added = 0; + + if(!last_r) + first_r = last_r = r; + else + last_r->group_by.r = r; + + last_r = r; + + rrd2rrdr_set_timestamps(r); + r->dp = onewayalloc_callocz(owa, r->d, sizeof(*r->dp)); + r->dview = onewayalloc_callocz(owa, r->d, sizeof(*r->dview)); + r->dgbc = onewayalloc_callocz(owa, r->d, sizeof(*r->dgbc)); + r->gbc = onewayalloc_callocz(owa, r->n * r->d, sizeof(*r->gbc)); + r->dqp = onewayalloc_callocz(owa, r->d, sizeof(STORAGE_POINT)); + + if(hidden_dimension_on_percentage_of_instance) + // this is where we are going to group the hidden dimensions + r->vh = onewayalloc_mallocz(owa, r->n * r->d * sizeof(*r->vh)); + + if(!final_grouping) + // this is where we are going to store the slot in the next RRDR + // that we are going to group by the dimension of this RRDR + r->dgbs = onewayalloc_callocz(owa, r->d, sizeof(*r->dgbs)); + + if (label_keys) { + r->dl = onewayalloc_callocz(owa, r->d, sizeof(DICTIONARY *)); + r->label_keys = label_keys; + label_keys = NULL; + } + + // zero r (dimension options, names, and ids) + // this is required, because group-by may lead to empty dimensions + for (size_t d = 0; d < r->d; d++) { + r->di[d] = entries[d].id; + r->dn[d] = entries[d].name; + + r->od[d] = entries[d].od; + r->du[d] = entries[d].units; + r->dp[d] = entries[d].priority; + r->dgbc[d] = entries[d].count; + + if (r->dl) + r->dl[d] = entries[d].dl; + } + + // initialize partial trimming + r->partial_data_trimming.max_update_every = update_every_max; + r->partial_data_trimming.expected_after = + (!(qt->window.options & RRDR_OPTION_RETURN_RAW) && + qt->window.before >= qt->window.now - update_every_max) ? + qt->window.before - update_every_max : + qt->window.before; + r->partial_data_trimming.trimmed_after = qt->window.before; + + // make all values empty + for (size_t i = 0; i != r->n; i++) { + NETDATA_DOUBLE *cn = &r->v[i * r->d]; + RRDR_VALUE_FLAGS *co = &r->o[i * r->d]; + NETDATA_DOUBLE *ar = &r->ar[i * r->d]; + NETDATA_DOUBLE *vh = r->vh ? &r->vh[i * r->d] : NULL; + + for (size_t d = 0; d < r->d; d++) { + cn[d] = NAN; + ar[d] = 0.0; + co[d] = RRDR_VALUE_EMPTY; + + if(vh) + *vh = NAN; + } + } + } + + if(!first_r || !last_r) + goto cleanup; + + r_tmp = rrdr_create(owa, qt, 1, qt->window.points); + if (!r_tmp) { + internal_error(true, + "QUERY: cannot create group by temporary RRDR for %s, after=%ld, before=%ld, dimensions=%d, points=%zu", + qt->id, qt->window.after, qt->window.before, 1, qt->window.points); + goto cleanup; + } + rrd2rrdr_set_timestamps(r_tmp); + r_tmp->group_by.r = first_r; + +cleanup: + if(!first_r || !last_r || !r_tmp) { + if(r_tmp) { + r_tmp->group_by.r = NULL; + rrdr_free(owa, r_tmp); + } + + if(first_r) { + RRDR *r = first_r; + while (r) { + r_tmp = r->group_by.r; + r->group_by.r = NULL; + rrdr_free(owa, r); + r = r_tmp; + } + } + + if(entries && added) { + for (int d = 0; d < added; d++) { + string_freez(entries[d].id); + string_freez(entries[d].name); + string_freez(entries[d].units); + dictionary_destroy(entries[d].dl); + } + } + dictionary_destroy(label_keys); + + first_r = last_r = r_tmp = NULL; + } + + buffer_free(key); + onewayalloc_freez(owa, entries); + dictionary_destroy(groups); + + return r_tmp; +} + +static void rrd2rrdr_group_by_add_metric(RRDR *r_dst, size_t d_dst, RRDR *r_tmp, size_t d_tmp, + RRDR_GROUP_BY_FUNCTION group_by_aggregate_function, + STORAGE_POINT *query_points, size_t pass __maybe_unused) { + if(!r_tmp || r_dst == r_tmp || !(r_tmp->od[d_tmp] & RRDR_DIMENSION_QUERIED)) + return; + + internal_fatal(r_dst->n != r_tmp->n, "QUERY: group-by source and destination do not have the same number of rows"); + internal_fatal(d_dst >= r_dst->d, "QUERY: group-by destination dimension number exceeds destination RRDR size"); + internal_fatal(d_tmp >= r_tmp->d, "QUERY: group-by source dimension number exceeds source RRDR size"); + internal_fatal(!r_dst->dqp, "QUERY: group-by destination is not properly prepared (missing dqp array)"); + internal_fatal(!r_dst->gbc, "QUERY: group-by destination is not properly prepared (missing gbc array)"); + + bool hidden_dimension_on_percentage_of_instance = (r_tmp->od[d_tmp] & RRDR_DIMENSION_HIDDEN) && r_dst->vh; + + if(!hidden_dimension_on_percentage_of_instance) { + r_dst->od[d_dst] |= r_tmp->od[d_tmp]; + storage_point_merge_to(r_dst->dqp[d_dst], *query_points); + } + + // do the group_by + for(size_t i = 0; i != rrdr_rows(r_tmp) ; i++) { + + size_t idx_tmp = i * r_tmp->d + d_tmp; + NETDATA_DOUBLE n_tmp = r_tmp->v[ idx_tmp ]; + RRDR_VALUE_FLAGS o_tmp = r_tmp->o[ idx_tmp ]; + NETDATA_DOUBLE ar_tmp = r_tmp->ar[ idx_tmp ]; + + if(o_tmp & RRDR_VALUE_EMPTY) + continue; + + size_t idx_dst = i * r_dst->d + d_dst; + NETDATA_DOUBLE *cn = (hidden_dimension_on_percentage_of_instance) ? &r_dst->vh[ idx_dst ] : &r_dst->v[ idx_dst ]; + RRDR_VALUE_FLAGS *co = &r_dst->o[ idx_dst ]; + NETDATA_DOUBLE *ar = &r_dst->ar[ idx_dst ]; + uint32_t *gbc = &r_dst->gbc[ idx_dst ]; + + switch(group_by_aggregate_function) { + default: + case RRDR_GROUP_BY_FUNCTION_AVERAGE: + case RRDR_GROUP_BY_FUNCTION_SUM: + if(isnan(*cn)) + *cn = n_tmp; + else + *cn += n_tmp; + break; + + case RRDR_GROUP_BY_FUNCTION_MIN: + if(isnan(*cn) || n_tmp < *cn) + *cn = n_tmp; + break; + + case RRDR_GROUP_BY_FUNCTION_MAX: + if(isnan(*cn) || n_tmp > *cn) + *cn = n_tmp; + break; + } + + if(!hidden_dimension_on_percentage_of_instance) { + *co &= ~RRDR_VALUE_EMPTY; + *co |= (o_tmp & (RRDR_VALUE_RESET | RRDR_VALUE_PARTIAL)); + *ar += ar_tmp; + (*gbc)++; + } + } +} + +static void rrdr2rrdr_group_by_partial_trimming(RRDR *r) { + time_t trimmable_after = r->partial_data_trimming.expected_after; + + // find the point just before the trimmable ones + ssize_t i = (ssize_t)r->n - 1; + for( ; i >= 0 ;i--) { + if (r->t[i] < trimmable_after) + break; + } + + if(unlikely(i < 0)) + return; + + size_t last_row_gbc = 0; + for (; i < (ssize_t)r->n; i++) { + size_t row_gbc = 0; + for (size_t d = 0; d < r->d; d++) { + if (unlikely(!(r->od[d] & RRDR_DIMENSION_QUERIED))) + continue; + + row_gbc += r->gbc[ i * r->d + d ]; + } + + if (unlikely(r->t[i] >= trimmable_after && row_gbc < last_row_gbc)) { + // discard the rest of the points + r->partial_data_trimming.trimmed_after = r->t[i]; + r->rows = i; + break; + } + else + last_row_gbc = row_gbc; + } +} + +static void rrdr2rrdr_group_by_calculate_percentage_of_instance(RRDR *r) { + if(!r->vh) + return; + + for(size_t i = 0; i < r->n ;i++) { + NETDATA_DOUBLE *cn = &r->v[ i * r->d ]; + NETDATA_DOUBLE *ch = &r->vh[ i * r->d ]; + + for(size_t d = 0; d < r->d ;d++) { + NETDATA_DOUBLE n = cn[d]; + NETDATA_DOUBLE h = ch[d]; + + if(isnan(n)) + cn[d] = 0.0; + + else if(isnan(h)) + cn[d] = 100.0; + + else + cn[d] = n * 100.0 / (n + h); + } + } +} + +static void rrd2rrdr_convert_to_percentage(RRDR *r) { + size_t global_min_max_values = 0; + NETDATA_DOUBLE global_min = NAN, global_max = NAN; + + for(size_t i = 0; i != r->n ;i++) { + NETDATA_DOUBLE *cn = &r->v[ i * r->d ]; + RRDR_VALUE_FLAGS *co = &r->o[ i * r->d ]; + + NETDATA_DOUBLE total = 0; + for (size_t d = 0; d < r->d; d++) { + if (unlikely(!(r->od[d] & RRDR_DIMENSION_QUERIED))) + continue; + + if(co[d] & RRDR_VALUE_EMPTY) + continue; + + total += cn[d]; + } + + if(total == 0.0) + total = 1.0; + + for (size_t d = 0; d < r->d; d++) { + if (unlikely(!(r->od[d] & RRDR_DIMENSION_QUERIED))) + continue; + + if(co[d] & RRDR_VALUE_EMPTY) + continue; + + NETDATA_DOUBLE n = cn[d]; + n = cn[d] = n * 100.0 / total; + + if(unlikely(!global_min_max_values++)) + global_min = global_max = n; + else { + if(n < global_min) + global_min = n; + if(n > global_max) + global_max = n; + } + } + } + + r->view.min = global_min; + r->view.max = global_max; + + if(!r->dview) + // v1 query + return; + + // v2 query + + for (size_t d = 0; d < r->d; d++) { + if (unlikely(!(r->od[d] & RRDR_DIMENSION_QUERIED))) + continue; + + size_t count = 0; + NETDATA_DOUBLE min = 0.0, max = 0.0, sum = 0.0, ars = 0.0; + for(size_t i = 0; i != r->rows ;i++) { // we use r->rows to respect trimming + size_t idx = i * r->d + d; + + RRDR_VALUE_FLAGS o = r->o[ idx ]; + + if (o & RRDR_VALUE_EMPTY) + continue; + + NETDATA_DOUBLE ar = r->ar[ idx ]; + ars += ar; + + NETDATA_DOUBLE n = r->v[ idx ]; + sum += n; + + if(!count++) + min = max = n; + else { + if(n < min) + min = n; + if(n > max) + max = n; + } + } + + r->dview[d] = (STORAGE_POINT) { + .sum = sum, + .count = count, + .min = min, + .max = max, + .anomaly_count = (size_t)(ars * (NETDATA_DOUBLE)count), + }; + } +} + +static RRDR *rrd2rrdr_group_by_finalize(RRDR *r_tmp) { + QUERY_TARGET *qt = r_tmp->internal.qt; + RRDR_OPTIONS options = qt->window.options; + + if(!r_tmp->group_by.r) { + // v1 query + if(options & RRDR_OPTION_PERCENTAGE) + rrd2rrdr_convert_to_percentage(r_tmp); + return r_tmp; + } + // v2 query + + // do the additional passes on RRDRs + RRDR *last_r = r_tmp->group_by.r; + rrdr2rrdr_group_by_calculate_percentage_of_instance(last_r); + + RRDR *r = last_r->group_by.r; + size_t pass = 0; + while(r) { + pass++; + for(size_t d = 0; d < last_r->d ;d++) { + rrd2rrdr_group_by_add_metric(r, last_r->dgbs[d], last_r, d, + qt->request.group_by[pass].aggregation, + &last_r->dqp[d], pass); + } + rrdr2rrdr_group_by_calculate_percentage_of_instance(r); + + last_r = r; + r = last_r->group_by.r; + } + + // free all RRDRs except the last one + r = r_tmp; + while(r != last_r) { + r_tmp = r->group_by.r; + r->group_by.r = NULL; + rrdr_free(r->internal.owa, r); + r = r_tmp; + } + r = last_r; + + // find the final aggregation + RRDR_GROUP_BY_FUNCTION aggregation = qt->request.group_by[0].aggregation; + for(size_t g = 0; g < MAX_QUERY_GROUP_BY_PASSES ;g++) + if(qt->request.group_by[g].group_by != RRDR_GROUP_BY_NONE) + aggregation = qt->request.group_by[g].aggregation; + + if(!(options & RRDR_OPTION_RETURN_RAW) && r->partial_data_trimming.expected_after < qt->window.before) + rrdr2rrdr_group_by_partial_trimming(r); + + // apply averaging, remove RRDR_VALUE_EMPTY, find the non-zero dimensions, min and max + size_t global_min_max_values = 0; + size_t dimensions_nonzero = 0; + NETDATA_DOUBLE global_min = NAN, global_max = NAN; + for (size_t d = 0; d < r->d; d++) { + if (unlikely(!(r->od[d] & RRDR_DIMENSION_QUERIED))) + continue; + + size_t points_nonzero = 0; + NETDATA_DOUBLE min = 0, max = 0, sum = 0, ars = 0; + size_t count = 0; + + for(size_t i = 0; i != r->n ;i++) { + size_t idx = i * r->d + d; + + NETDATA_DOUBLE *cn = &r->v[ idx ]; + RRDR_VALUE_FLAGS *co = &r->o[ idx ]; + NETDATA_DOUBLE *ar = &r->ar[ idx ]; + uint32_t gbc = r->gbc[ idx ]; + + if(likely(gbc)) { + *co &= ~RRDR_VALUE_EMPTY; + + if(gbc != r->dgbc[d]) + *co |= RRDR_VALUE_PARTIAL; + + NETDATA_DOUBLE n; + + sum += *cn; + ars += *ar; + + if(aggregation == RRDR_GROUP_BY_FUNCTION_AVERAGE && !query_target_aggregatable(qt)) + n = (*cn /= gbc); + else + n = *cn; + + if(!query_target_aggregatable(qt)) + *ar /= gbc; + + if(islessgreater(n, 0.0)) + points_nonzero++; + + if(unlikely(!count)) + min = max = n; + else { + if(n < min) + min = n; + + if(n > max) + max = n; + } + + if(unlikely(!global_min_max_values++)) + global_min = global_max = n; + else { + if(n < global_min) + global_min = n; + + if(n > global_max) + global_max = n; + } + + count += gbc; + } + } + + if(points_nonzero) { + r->od[d] |= RRDR_DIMENSION_NONZERO; + dimensions_nonzero++; + } + + r->dview[d] = (STORAGE_POINT) { + .sum = sum, + .count = count, + .min = min, + .max = max, + .anomaly_count = (size_t)(ars * RRDR_DVIEW_ANOMALY_COUNT_MULTIPLIER / 100.0), + }; + } + + r->view.min = global_min; + r->view.max = global_max; + + if(!dimensions_nonzero && (qt->window.options & RRDR_OPTION_NONZERO)) { + // all dimensions are zero + // remove the nonzero option + qt->window.options &= ~RRDR_OPTION_NONZERO; + } + + if(options & RRDR_OPTION_PERCENTAGE && !(options & RRDR_OPTION_RETURN_RAW)) + rrd2rrdr_convert_to_percentage(r); + + // update query instance counts in query host and query context + { + size_t h = 0, c = 0, i = 0; + for(; h < qt->nodes.used ; h++) { + QUERY_NODE *qn = &qt->nodes.array[h]; + + for(; c < qt->contexts.used ;c++) { + QUERY_CONTEXT *qc = &qt->contexts.array[c]; + + if(!rrdcontext_acquired_belongs_to_host(qc->rca, qn->rrdhost)) + break; + + for(; i < qt->instances.used ;i++) { + QUERY_INSTANCE *qi = &qt->instances.array[i]; + + if(!rrdinstance_acquired_belongs_to_context(qi->ria, qc->rca)) + break; + + if(qi->metrics.queried) { + qc->instances.queried++; + qn->instances.queried++; + } + else if(qi->metrics.failed) { + qc->instances.failed++; + qn->instances.failed++; + } + } + } + } + } + + return r; +} + +// ---------------------------------------------------------------------------- +// query entry point + +RRDR *rrd2rrdr_legacy( + ONEWAYALLOC *owa, + RRDSET *st, size_t points, time_t after, time_t before, + RRDR_TIME_GROUPING group_method, time_t resampling_time, RRDR_OPTIONS options, const char *dimensions, + const char *group_options, time_t timeout_ms, size_t tier, QUERY_SOURCE query_source, + STORAGE_PRIORITY priority) { + + QUERY_TARGET_REQUEST qtr = { + .version = 1, + .st = st, + .points = points, + .after = after, + .before = before, + .time_group_method = group_method, + .resampling_time = resampling_time, + .options = options, + .dimensions = dimensions, + .time_group_options = group_options, + .timeout_ms = timeout_ms, + .tier = tier, + .query_source = query_source, + .priority = priority, + }; + + QUERY_TARGET *qt = query_target_create(&qtr); + RRDR *r = rrd2rrdr(owa, qt); + if(!r) { + query_target_release(qt); + return NULL; + } + + r->internal.release_with_rrdr_qt = qt; + return r; +} + +RRDR *rrd2rrdr(ONEWAYALLOC *owa, QUERY_TARGET *qt) { + if(!qt || !owa) + return NULL; + + // qt.window members are the WANTED ones. + // qt.request members are the REQUESTED ones. + + RRDR *r_tmp = rrd2rrdr_group_by_initialize(owa, qt); + if(!r_tmp) + return NULL; + + // the RRDR we group-by at + RRDR *r = (r_tmp->group_by.r) ? r_tmp->group_by.r : r_tmp; + + // the final RRDR to return to callers + RRDR *last_r = r_tmp; + while(last_r->group_by.r) + last_r = last_r->group_by.r; + + if(qt->window.relative) + last_r->view.flags |= RRDR_RESULT_FLAG_RELATIVE; + else + last_r->view.flags |= RRDR_RESULT_FLAG_ABSOLUTE; + + // ------------------------------------------------------------------------- + // assign the processor functions + rrdr_set_grouping_function(r_tmp, qt->window.time_group_method); + + // allocate any memory required by the grouping method + r_tmp->time_grouping.create(r_tmp, qt->window.time_group_options); + + // ------------------------------------------------------------------------- + // do the work for each dimension + + time_t max_after = 0, min_before = 0; + size_t max_rows = 0; + + long dimensions_used = 0, dimensions_nonzero = 0; + size_t last_db_points_read = 0; + size_t last_result_points_generated = 0; + + internal_fatal(released_ops, "QUERY: released_ops should be NULL when the query starts"); + + QUERY_ENGINE_OPS **ops = NULL; + if(qt->query.used) + ops = onewayalloc_callocz(owa, qt->query.used, sizeof(QUERY_ENGINE_OPS *)); + + size_t capacity = libuv_worker_threads * 10; + size_t max_queries_to_prepare = (qt->query.used > (capacity - 1)) ? (capacity - 1) : qt->query.used; + size_t queries_prepared = 0; + while(queries_prepared < max_queries_to_prepare) { + // preload another query + ops[queries_prepared] = rrd2rrdr_query_ops_prep(r_tmp, queries_prepared); + queries_prepared++; + } + + QUERY_NODE *last_qn = NULL; + usec_t last_ut = now_monotonic_usec(); + usec_t last_qn_ut = last_ut; + + for(size_t d = 0; d < qt->query.used ; d++) { + QUERY_METRIC *qm = query_metric(qt, d); + QUERY_DIMENSION *qd = query_dimension(qt, qm->link.query_dimension_id); + QUERY_INSTANCE *qi = query_instance(qt, qm->link.query_instance_id); + QUERY_CONTEXT *qc = query_context(qt, qm->link.query_context_id); + QUERY_NODE *qn = query_node(qt, qm->link.query_node_id); + + usec_t now_ut = last_ut; + if(qn != last_qn) { + if(last_qn) + last_qn->duration_ut = now_ut - last_qn_ut; + + last_qn = qn; + last_qn_ut = now_ut; + } + + if(queries_prepared < qt->query.used) { + // preload another query + ops[queries_prepared] = rrd2rrdr_query_ops_prep(r_tmp, queries_prepared); + queries_prepared++; + } + + size_t dim_in_rrdr_tmp = (r_tmp != r) ? 0 : d; + + // set the query target dimension options to rrdr + r_tmp->od[dim_in_rrdr_tmp] = qm->status; + + // reset the grouping for the new dimension + r_tmp->time_grouping.reset(r_tmp); + + if(ops[d]) { + rrd2rrdr_query_execute(r_tmp, dim_in_rrdr_tmp, ops[d]); + r_tmp->od[dim_in_rrdr_tmp] |= RRDR_DIMENSION_QUERIED; + + now_ut = now_monotonic_usec(); + qm->duration_ut = now_ut - last_ut; + last_ut = now_ut; + + if(r_tmp != r) { + // copy back whatever got updated from the temporary r + + // the query updates RRDR_DIMENSION_NONZERO + qm->status = r_tmp->od[dim_in_rrdr_tmp]; + + // the query updates these + r->view.min = r_tmp->view.min; + r->view.max = r_tmp->view.max; + r->view.after = r_tmp->view.after; + r->view.before = r_tmp->view.before; + r->rows = r_tmp->rows; + + rrd2rrdr_group_by_add_metric(r, qm->grouped_as.first_slot, r_tmp, dim_in_rrdr_tmp, + qt->request.group_by[0].aggregation, &qm->query_points, 0); + } + + rrd2rrdr_query_ops_release(ops[d]); // reuse this ops allocation + ops[d] = NULL; + + qi->metrics.queried++; + qc->metrics.queried++; + qn->metrics.queried++; + + qd->status |= QUERY_STATUS_QUERIED; + qm->status |= RRDR_DIMENSION_QUERIED; + + if(qt->request.version >= 2) { + // we need to make the query points positive now + // since we will aggregate it across multiple dimensions + storage_point_make_positive(qm->query_points); + storage_point_merge_to(qi->query_points, qm->query_points); + storage_point_merge_to(qc->query_points, qm->query_points); + storage_point_merge_to(qn->query_points, qm->query_points); + storage_point_merge_to(qt->query_points, qm->query_points); + } + } + else { + qi->metrics.failed++; + qc->metrics.failed++; + qn->metrics.failed++; + + qd->status |= QUERY_STATUS_FAILED; + qm->status |= RRDR_DIMENSION_FAILED; + + continue; + } + + global_statistics_rrdr_query_completed( + 1, + r_tmp->stats.db_points_read - last_db_points_read, + r_tmp->stats.result_points_generated - last_result_points_generated, + qt->request.query_source); + + last_db_points_read = r_tmp->stats.db_points_read; + last_result_points_generated = r_tmp->stats.result_points_generated; + + if(qm->status & RRDR_DIMENSION_NONZERO) + dimensions_nonzero++; + + // verify all dimensions are aligned + if(unlikely(!dimensions_used)) { + min_before = r->view.before; + max_after = r->view.after; + max_rows = r->rows; + } + else { + if(r->view.after != max_after) { + internal_error(true, "QUERY: 'after' mismatch between dimensions for chart '%s': max is %zu, dimension '%s' has %zu", + rrdinstance_acquired_id(qi->ria), (size_t)max_after, rrdmetric_acquired_id(qd->rma), (size_t)r->view.after); + + r->view.after = (r->view.after > max_after) ? r->view.after : max_after; + } + + if(r->view.before != min_before) { + internal_error(true, "QUERY: 'before' mismatch between dimensions for chart '%s': max is %zu, dimension '%s' has %zu", + rrdinstance_acquired_id(qi->ria), (size_t)min_before, rrdmetric_acquired_id(qd->rma), (size_t)r->view.before); + + r->view.before = (r->view.before < min_before) ? r->view.before : min_before; + } + + if(r->rows != max_rows) { + internal_error(true, "QUERY: 'rows' mismatch between dimensions for chart '%s': max is %zu, dimension '%s' has %zu", + rrdinstance_acquired_id(qi->ria), (size_t)max_rows, rrdmetric_acquired_id(qd->rma), (size_t)r->rows); + + r->rows = (r->rows > max_rows) ? r->rows : max_rows; + } } dimensions_used++; - if (qt->request.timeout && ((NETDATA_DOUBLE)dt_usec(&query_start_time, &query_current_time) / 1000.0) > (NETDATA_DOUBLE)qt->request.timeout) { + + bool cancel = false; + if (qt->request.interrupt_callback && qt->request.interrupt_callback(qt->request.interrupt_callback_data)) { + cancel = true; + log_access("QUERY INTERRUPTED"); + } + + if (qt->request.timeout_ms && ((NETDATA_DOUBLE)(now_ut - qt->timings.received_ut) / 1000.0) > (NETDATA_DOUBLE)qt->request.timeout_ms) { + cancel = true; log_access("QUERY CANCELED RUNTIME EXCEEDED %0.2f ms (LIMIT %lld ms)", - (NETDATA_DOUBLE)dt_usec(&query_start_time, &query_current_time) / 1000.0, (long long)qt->request.timeout); - r->result_options |= RRDR_RESULT_OPTION_CANCEL; + (NETDATA_DOUBLE)(now_ut - qt->timings.received_ut) / 1000.0, (long long)qt->request.timeout_ms); + } - for(size_t i = c + 1; i < queries_prepared ; i++) { - if(ops[i]) + if(cancel) { + r->view.flags |= RRDR_RESULT_FLAG_CANCEL; + + for(size_t i = d + 1; i < queries_prepared ; i++) { + if(ops[i]) { query_planer_finalize_remaining_plans(ops[i]); + rrd2rrdr_query_ops_release(ops[i]); + ops[i] = NULL; + } } break; } } + // free all resources used by the grouping method + r_tmp->time_grouping.free(r_tmp); + + // get the final RRDR to send to the caller + r = rrd2rrdr_group_by_finalize(r_tmp); + #ifdef NETDATA_INTERNAL_CHECKS - if (dimensions_used) { + if (dimensions_used && !(r->view.flags & RRDR_RESULT_FLAG_CANCEL)) { if(r->internal.log) - rrd2rrdr_log_request_response_metadata(r, qt->window.options, qt->window.group_method, qt->window.aligned, qt->window.group, qt->request.resampling_time, qt->window.resampling_group, + rrd2rrdr_log_request_response_metadata(r, qt->window.options, qt->window.time_group_method, qt->window.aligned, qt->window.group, qt->request.resampling_time, qt->window.resampling_group, qt->window.after, qt->request.after, qt->window.before, qt->request.before, qt->request.points, qt->window.points, /*after_slot, before_slot,*/ r->internal.log); if(r->rows != qt->window.points) - rrd2rrdr_log_request_response_metadata(r, qt->window.options, qt->window.group_method, qt->window.aligned, qt->window.group, qt->request.resampling_time, qt->window.resampling_group, + rrd2rrdr_log_request_response_metadata(r, qt->window.options, qt->window.time_group_method, qt->window.aligned, qt->window.group, qt->request.resampling_time, qt->window.resampling_group, qt->window.after, qt->request.after, qt->window.before, qt->request.before, qt->request.points, qt->window.points, /*after_slot, before_slot,*/ "got 'points' is not wanted 'points'"); - if(qt->window.aligned && (r->before % (qt->window.group * qt->window.query_granularity)) != 0) - rrd2rrdr_log_request_response_metadata(r, qt->window.options, qt->window.group_method, qt->window.aligned, qt->window.group, qt->request.resampling_time, qt->window.resampling_group, - qt->window.after, qt->request.after, qt->window.before,qt->request.before, + if(qt->window.aligned && (r->view.before % query_view_update_every(qt)) != 0) + rrd2rrdr_log_request_response_metadata(r, qt->window.options, qt->window.time_group_method, qt->window.aligned, qt->window.group, qt->request.resampling_time, qt->window.resampling_group, + qt->window.after, qt->request.after, qt->window.before, qt->request.before, qt->request.points, qt->window.points, /*after_slot, before_slot,*/ "'before' is not aligned but alignment is required"); @@ -2362,21 +3737,21 @@ RRDR *rrd2rrdr(ONEWAYALLOC *owa, QUERY_TARGET *qt) { //if(qt->window.aligned && (r->after % group) != 0) // rrd2rrdr_log_request_response_metadata(r, qt->window.options, qt->window.group_method, qt->window.aligned, qt->window.group, qt->request.resampling_time, qt->window.resampling_group, qt->window.after, after_requested, before_wanted, before_requested, points_requested, points_wanted, after_slot, before_slot, "'after' is not aligned but alignment is required"); - if(r->before != qt->window.before) - rrd2rrdr_log_request_response_metadata(r, qt->window.options, qt->window.group_method, qt->window.aligned, qt->window.group, qt->request.resampling_time, qt->window.resampling_group, + if(r->view.before != qt->window.before) + rrd2rrdr_log_request_response_metadata(r, qt->window.options, qt->window.time_group_method, qt->window.aligned, qt->window.group, qt->request.resampling_time, qt->window.resampling_group, qt->window.after, qt->request.after, qt->window.before, qt->request.before, qt->request.points, qt->window.points, /*after_slot, before_slot,*/ "chart is not aligned to requested 'before'"); - if(r->before != qt->window.before) - rrd2rrdr_log_request_response_metadata(r, qt->window.options, qt->window.group_method, qt->window.aligned, qt->window.group, qt->request.resampling_time, qt->window.resampling_group, + if(r->view.before != qt->window.before) + rrd2rrdr_log_request_response_metadata(r, qt->window.options, qt->window.time_group_method, qt->window.aligned, qt->window.group, qt->request.resampling_time, qt->window.resampling_group, qt->window.after, qt->request.after, qt->window.before, qt->request.before, qt->request.points, qt->window.points, /*after_slot, before_slot,*/ "got 'before' is not wanted 'before'"); // reported 'after' varies, depending on group - if(r->after != qt->window.after) - rrd2rrdr_log_request_response_metadata(r, qt->window.options, qt->window.group_method, qt->window.aligned, qt->window.group, qt->request.resampling_time, qt->window.resampling_group, + if(r->view.after != qt->window.after) + rrd2rrdr_log_request_response_metadata(r, qt->window.options, qt->window.time_group_method, qt->window.aligned, qt->window.group, qt->request.resampling_time, qt->window.resampling_group, qt->window.after, qt->request.after, qt->window.before, qt->request.before, qt->request.points, qt->window.points, /*after_slot, before_slot,*/ "got 'after' is not wanted 'after'"); @@ -2384,26 +3759,21 @@ RRDR *rrd2rrdr(ONEWAYALLOC *owa, QUERY_TARGET *qt) { } #endif - // free all resources used by the grouping method - r->internal.grouping_free(r); + // free the query pipelining ops + for(size_t d = 0; d < qt->query.used ; d++) { + rrd2rrdr_query_ops_release(ops[d]); + ops[d] = NULL; + } + rrd2rrdr_query_ops_freeall(r); + internal_fatal(released_ops, "QUERY: released_ops should be NULL when the query ends"); + + onewayalloc_freez(owa, ops); - if(likely(dimensions_used)) { + if(likely(dimensions_used && (qt->window.options & RRDR_OPTION_NONZERO) && !dimensions_nonzero)) // when all the dimensions are zero, we should return all of them - if (unlikely((qt->window.options & RRDR_OPTION_NONZERO) && !dimensions_nonzero && - !(r->result_options & RRDR_RESULT_OPTION_CANCEL))) { - // all the dimensions are zero - // mark them as NONZERO to send them all - for (size_t c = 0, max = qt->query.used; c < max; c++) { - if (unlikely(r->od[c] & RRDR_DIMENSION_HIDDEN)) continue; - if (unlikely(!(r->od[c] & RRDR_DIMENSION_QUERIED))) continue; - r->od[c] |= RRDR_DIMENSION_NONZERO; - } - } + qt->window.options &= ~RRDR_OPTION_NONZERO; - return r; - } + qt->timings.executed_ut = now_monotonic_usec(); - // we couldn't query any dimension - rrdr_free(owa, r); - return NULL; + return r; } diff --git a/web/api/queries/query.h b/web/api/queries/query.h index ebad5a1f8..e6fdcfbe4 100644 --- a/web/api/queries/query.h +++ b/web/api/queries/query.h @@ -7,7 +7,7 @@ extern "C" { #endif -typedef enum rrdr_grouping { +typedef enum rrdr_time_grouping { RRDR_GROUPING_UNDEFINED = 0, RRDR_GROUPING_AVERAGE, RRDR_GROUPING_MIN, @@ -17,7 +17,7 @@ typedef enum rrdr_grouping { RRDR_GROUPING_TRIMMED_MEAN1, RRDR_GROUPING_TRIMMED_MEAN2, RRDR_GROUPING_TRIMMED_MEAN3, - RRDR_GROUPING_TRIMMED_MEAN5, + RRDR_GROUPING_TRIMMED_MEAN, RRDR_GROUPING_TRIMMED_MEAN10, RRDR_GROUPING_TRIMMED_MEAN15, RRDR_GROUPING_TRIMMED_MEAN20, @@ -36,7 +36,7 @@ typedef enum rrdr_grouping { RRDR_GROUPING_PERCENTILE75, RRDR_GROUPING_PERCENTILE80, RRDR_GROUPING_PERCENTILE90, - RRDR_GROUPING_PERCENTILE95, + RRDR_GROUPING_PERCENTILE, RRDR_GROUPING_PERCENTILE97, RRDR_GROUPING_PERCENTILE98, RRDR_GROUPING_PERCENTILE99, @@ -45,12 +45,50 @@ typedef enum rrdr_grouping { RRDR_GROUPING_SES, RRDR_GROUPING_DES, RRDR_GROUPING_COUNTIF, -} RRDR_GROUPING; +} RRDR_TIME_GROUPING; -const char *group_method2string(RRDR_GROUPING group); -void web_client_api_v1_init_grouping(void); -RRDR_GROUPING web_client_api_request_v1_data_group(const char *name, RRDR_GROUPING def); -const char *web_client_api_request_v1_data_group_to_string(RRDR_GROUPING group); +const char *time_grouping_method2string(RRDR_TIME_GROUPING group); +void time_grouping_init(void); +RRDR_TIME_GROUPING time_grouping_parse(const char *name, RRDR_TIME_GROUPING def); +const char *time_grouping_tostring(RRDR_TIME_GROUPING group); + +typedef enum rrdr_group_by { + RRDR_GROUP_BY_NONE = 0, + RRDR_GROUP_BY_SELECTED = (1 << 0), + RRDR_GROUP_BY_DIMENSION = (1 << 1), + RRDR_GROUP_BY_INSTANCE = (1 << 2), + RRDR_GROUP_BY_LABEL = (1 << 3), + RRDR_GROUP_BY_NODE = (1 << 4), + RRDR_GROUP_BY_CONTEXT = (1 << 5), + RRDR_GROUP_BY_UNITS = (1 << 6), + RRDR_GROUP_BY_PERCENTAGE_OF_INSTANCE = (1 << 7), +} RRDR_GROUP_BY; + +#define SUPPORTED_GROUP_BY_METHODS (\ + RRDR_GROUP_BY_SELECTED |\ + RRDR_GROUP_BY_DIMENSION |\ + RRDR_GROUP_BY_INSTANCE |\ + RRDR_GROUP_BY_LABEL |\ + RRDR_GROUP_BY_NODE |\ + RRDR_GROUP_BY_CONTEXT |\ + RRDR_GROUP_BY_UNITS |\ + RRDR_GROUP_BY_PERCENTAGE_OF_INSTANCE \ +) + +struct web_buffer; + +RRDR_GROUP_BY group_by_parse(char *s); +void buffer_json_group_by_to_array(struct web_buffer *wb, RRDR_GROUP_BY group_by); + +typedef enum rrdr_group_by_function { + RRDR_GROUP_BY_FUNCTION_AVERAGE = 0, + RRDR_GROUP_BY_FUNCTION_MIN, + RRDR_GROUP_BY_FUNCTION_MAX, + RRDR_GROUP_BY_FUNCTION_SUM, +} RRDR_GROUP_BY_FUNCTION; + +RRDR_GROUP_BY_FUNCTION group_by_aggregate_function_parse(const char *s); +const char *group_by_aggregate_function_to_string(RRDR_GROUP_BY_FUNCTION group_by_function); #ifdef __cplusplus } diff --git a/web/api/queries/rrdr.c b/web/api/queries/rrdr.c index 676224c9d..2a0016891 100644 --- a/web/api/queries/rrdr.c +++ b/web/api/queries/rrdr.c @@ -61,41 +61,86 @@ static void rrdr_dump(RRDR *r) inline void rrdr_free(ONEWAYALLOC *owa, RRDR *r) { if(unlikely(!r)) return; - query_target_release(r->internal.qt); + for(size_t d = 0; d < r->d ;d++) { + string_freez(r->di[d]); + string_freez(r->dn[d]); + string_freez(r->du[d]); + } + + query_target_release(r->internal.release_with_rrdr_qt); + onewayalloc_freez(owa, r->t); onewayalloc_freez(owa, r->v); + onewayalloc_freez(owa, r->vh); onewayalloc_freez(owa, r->o); onewayalloc_freez(owa, r->od); + onewayalloc_freez(owa, r->di); + onewayalloc_freez(owa, r->dn); + onewayalloc_freez(owa, r->du); + onewayalloc_freez(owa, r->dp); + onewayalloc_freez(owa, r->dview); + onewayalloc_freez(owa, r->dqp); onewayalloc_freez(owa, r->ar); + onewayalloc_freez(owa, r->gbc); + onewayalloc_freez(owa, r->dgbc); + onewayalloc_freez(owa, r->dgbs); + + if(r->dl) { + for(size_t d = 0; d < r->d ;d++) + dictionary_destroy(r->dl[d]); + + onewayalloc_freez(owa, r->dl); + } + + dictionary_destroy(r->label_keys); + + if(r->group_by.r) { + // prevent accidental infinite recursion + r->group_by.r->group_by.r = NULL; + + // do not release qt twice + r->group_by.r->internal.qt = NULL; + + rrdr_free(owa, r->group_by.r); + } + onewayalloc_freez(owa, r); } -RRDR *rrdr_create(ONEWAYALLOC *owa, QUERY_TARGET *qt) { - if(unlikely(!qt || !qt->query.used || !qt->window.points)) +RRDR *rrdr_create(ONEWAYALLOC *owa, QUERY_TARGET *qt, size_t dimensions, size_t points) { + if(unlikely(!qt)) return NULL; - size_t dimensions = qt->query.used; - size_t points = qt->window.points; - // create the rrdr RRDR *r = onewayalloc_callocz(owa, 1, sizeof(RRDR)); r->internal.owa = owa; r->internal.qt = qt; - r->before = qt->window.before; - r->after = qt->window.after; - r->internal.points_wanted = qt->window.points; + r->view.before = qt->window.before; + r->view.after = qt->window.after; + r->time_grouping.points_wanted = points; r->d = (int)dimensions; r->n = (int)points; - r->t = onewayalloc_callocz(owa, points, sizeof(time_t)); - r->v = onewayalloc_mallocz(owa, points * dimensions * sizeof(NETDATA_DOUBLE)); - r->o = onewayalloc_mallocz(owa, points * dimensions * sizeof(RRDR_VALUE_FLAGS)); - r->ar = onewayalloc_mallocz(owa, points * dimensions * sizeof(NETDATA_DOUBLE)); - r->od = onewayalloc_mallocz(owa, dimensions * sizeof(RRDR_DIMENSION_FLAGS)); + if(points && dimensions) { + r->v = onewayalloc_mallocz(owa, points * dimensions * sizeof(NETDATA_DOUBLE)); + r->o = onewayalloc_mallocz(owa, points * dimensions * sizeof(RRDR_VALUE_FLAGS)); + r->ar = onewayalloc_mallocz(owa, points * dimensions * sizeof(NETDATA_DOUBLE)); + } + + if(points) { + r->t = onewayalloc_callocz(owa, points, sizeof(time_t)); + } + + if(dimensions) { + r->od = onewayalloc_mallocz(owa, dimensions * sizeof(RRDR_DIMENSION_FLAGS)); + r->di = onewayalloc_callocz(owa, dimensions, sizeof(STRING *)); + r->dn = onewayalloc_callocz(owa, dimensions, sizeof(STRING *)); + r->du = onewayalloc_callocz(owa, dimensions, sizeof(STRING *)); + } - r->group = 1; - r->update_every = 1; + r->view.group = 1; + r->view.update_every = 1; return r; } diff --git a/web/api/queries/rrdr.h b/web/api/queries/rrdr.h index 2d982b136..c57be67f5 100644 --- a/web/api/queries/rrdr.h +++ b/web/api/queries/rrdr.h @@ -18,111 +18,152 @@ typedef enum tier_query_fetch { } TIER_QUERY_FETCH; typedef enum rrdr_options { - RRDR_OPTION_NONZERO = 0x00000001, // don't output dimensions with just zero values - RRDR_OPTION_REVERSED = 0x00000002, // output the rows in reverse order (oldest to newest) - RRDR_OPTION_ABSOLUTE = 0x00000004, // values positive, for DATASOURCE_SSV before summing - RRDR_OPTION_MIN2MAX = 0x00000008, // when adding dimensions, use max - min, instead of sum - RRDR_OPTION_SECONDS = 0x00000010, // output seconds, instead of dates - RRDR_OPTION_MILLISECONDS = 0x00000020, // output milliseconds, instead of dates - RRDR_OPTION_NULL2ZERO = 0x00000040, // do not show nulls, convert them to zeros - RRDR_OPTION_OBJECTSROWS = 0x00000080, // each row of values should be an object, not an array - RRDR_OPTION_GOOGLE_JSON = 0x00000100, // comply with google JSON/JSONP specs - RRDR_OPTION_JSON_WRAP = 0x00000200, // wrap the response in a JSON header with info about the result - RRDR_OPTION_LABEL_QUOTES = 0x00000400, // in CSV output, wrap header labels in double quotes - RRDR_OPTION_PERCENTAGE = 0x00000800, // give values as percentage of total - RRDR_OPTION_NOT_ALIGNED = 0x00001000, // do not align charts for persistent timeframes - RRDR_OPTION_DISPLAY_ABS = 0x00002000, // for badges, display the absolute value, but calculate colors with sign - RRDR_OPTION_MATCH_IDS = 0x00004000, // when filtering dimensions, match only IDs - RRDR_OPTION_MATCH_NAMES = 0x00008000, // when filtering dimensions, match only names - RRDR_OPTION_NATURAL_POINTS = 0x00020000, // return the natural points of the database - RRDR_OPTION_VIRTUAL_POINTS = 0x00040000, // return virtual points - RRDR_OPTION_ANOMALY_BIT = 0x00080000, // Return the anomaly bit stored in each collected_number - RRDR_OPTION_RETURN_RAW = 0x00100000, // Return raw data for aggregating across multiple nodes - RRDR_OPTION_RETURN_JWAR = 0x00200000, // Return anomaly rates in jsonwrap - RRDR_OPTION_SELECTED_TIER = 0x00400000, // Use the selected tier for the query - RRDR_OPTION_ALL_DIMENSIONS = 0x00800000, // Return the full dimensions list - RRDR_OPTION_SHOW_PLAN = 0x01000000, // Return the query plan in jsonwrap + RRDR_OPTION_NONZERO = (1 << 0), // don't output dimensions with just zero values + RRDR_OPTION_REVERSED = (1 << 1), // output the rows in reverse order (oldest to newest) + RRDR_OPTION_ABSOLUTE = (1 << 2), // values positive, for DATASOURCE_SSV before summing + RRDR_OPTION_MIN2MAX = (1 << 3), // when adding dimensions, use max - min, instead of sum + RRDR_OPTION_SECONDS = (1 << 4), // output seconds, instead of dates + RRDR_OPTION_MILLISECONDS = (1 << 5), // output milliseconds, instead of dates + RRDR_OPTION_NULL2ZERO = (1 << 6), // do not show nulls, convert them to zeros + RRDR_OPTION_OBJECTSROWS = (1 << 7), // each row of values should be an object, not an array + RRDR_OPTION_GOOGLE_JSON = (1 << 8), // comply with google JSON/JSONP specs + RRDR_OPTION_JSON_WRAP = (1 << 9), // wrap the response in a JSON header with info about the result + RRDR_OPTION_LABEL_QUOTES = (1 << 10), // in CSV output, wrap header labels in double quotes + RRDR_OPTION_PERCENTAGE = (1 << 11), // give values as percentage of total + RRDR_OPTION_NOT_ALIGNED = (1 << 12), // do not align charts for persistent timeframes + RRDR_OPTION_DISPLAY_ABS = (1 << 13), // for badges, display the absolute value, but calculate colors with sign + RRDR_OPTION_MATCH_IDS = (1 << 14), // when filtering dimensions, match only IDs + RRDR_OPTION_MATCH_NAMES = (1 << 15), // when filtering dimensions, match only names + RRDR_OPTION_NATURAL_POINTS = (1 << 16), // return the natural points of the database + RRDR_OPTION_VIRTUAL_POINTS = (1 << 17), // return virtual points + RRDR_OPTION_ANOMALY_BIT = (1 << 18), // Return the anomaly bit stored in each collected_number + RRDR_OPTION_RETURN_RAW = (1 << 19), // Return raw data for aggregating across multiple nodes + RRDR_OPTION_RETURN_JWAR = (1 << 20), // Return anomaly rates in jsonwrap + RRDR_OPTION_SELECTED_TIER = (1 << 21), // Use the selected tier for the query + RRDR_OPTION_ALL_DIMENSIONS = (1 << 22), // Return the full dimensions list + RRDR_OPTION_SHOW_DETAILS = (1 << 23), // v2 returns detailed object tree + RRDR_OPTION_DEBUG = (1 << 24), // v2 returns request description + RRDR_OPTION_MINIFY = (1 << 25), // remove JSON spaces and newlines from JSON output + RRDR_OPTION_GROUP_BY_LABELS = (1 << 26), // v2 returns flattened labels per dimension of the chart // internal ones - not to be exposed to the API - RRDR_OPTION_INTERNAL_AR = 0x10000000, // internal use only, to let the formatters we want to render the anomaly rate - RRDR_OPTION_HEALTH_RSRVD1 = 0x80000000, // reserved for RRDCALC_OPTION_NO_CLEAR_NOTIFICATION + RRDR_OPTION_HEALTH_RSRVD1 = (1 << 30), // reserved for RRDCALC_OPTION_NO_CLEAR_NOTIFICATION + RRDR_OPTION_INTERNAL_AR = (1 << 31), // internal use only, to let the formatters know we want to render the anomaly rate } RRDR_OPTIONS; -typedef enum rrdr_value_flag { - RRDR_VALUE_NOTHING = 0x00, // no flag set (a good default) - RRDR_VALUE_EMPTY = 0x01, // the database value is empty - RRDR_VALUE_RESET = 0x02, // the database value is marked as reset (overflown) +typedef enum __attribute__ ((__packed__)) rrdr_value_flag { + + // IMPORTANT: + // THIS IS AN AGREED BIT MAP BETWEEN AGENT, CLOUD FRONT-END AND CLOUD BACK-END + // DO NOT CHANGE THE MAPPINGS ! + + RRDR_VALUE_NOTHING = 0, // no flag set (a good default) + RRDR_VALUE_EMPTY = (1 << 0), // the database value is empty + RRDR_VALUE_RESET = (1 << 1), // the database value is marked as reset (overflown) + RRDR_VALUE_PARTIAL = (1 << 2), // the database provides partial data about this point (used in group-by) } RRDR_VALUE_FLAGS; -typedef enum rrdr_dimension_flag { - RRDR_DIMENSION_DEFAULT = 0x00, - RRDR_DIMENSION_HIDDEN = 0x04, // the dimension is hidden (not to be presented to callers) - RRDR_DIMENSION_NONZERO = 0x08, // the dimension is non zero (contains non-zero values) - RRDR_DIMENSION_QUERIED = 0x10, // the dimension is selected for evaluation in this RRDR +typedef enum __attribute__ ((__packed__)) rrdr_dimension_flag { + RRDR_DIMENSION_DEFAULT = 0, + RRDR_DIMENSION_HIDDEN = (1 << 0), // the dimension is hidden (not to be presented to callers) + RRDR_DIMENSION_NONZERO = (1 << 1), // the dimension is non zero (contains non-zero values) + RRDR_DIMENSION_SELECTED = (1 << 2), // the dimension has been selected for query + RRDR_DIMENSION_QUERIED = (1 << 3), // the dimension has been queried + RRDR_DIMENSION_FAILED = (1 << 4), // the dimension failed to be queried + RRDR_DIMENSION_GROUPED = (1 << 5), // the dimension has been grouped in this RRDR } RRDR_DIMENSION_FLAGS; // RRDR result options -typedef enum rrdr_result_flags { - RRDR_RESULT_OPTION_ABSOLUTE = 0x00000001, // the query uses absolute time-frames - // (can be cached by browsers and proxies) - RRDR_RESULT_OPTION_RELATIVE = 0x00000002, // the query uses relative time-frames - // (should not to be cached by browsers and proxies) - RRDR_RESULT_OPTION_VARIABLE_STEP = 0x00000004, // the query uses variable-step time-frames - RRDR_RESULT_OPTION_CANCEL = 0x00000008, // the query needs to be cancelled -} RRDR_RESULT_OPTIONS; +typedef enum __attribute__ ((__packed__)) rrdr_result_flags { + RRDR_RESULT_FLAG_ABSOLUTE = (1 << 0), // the query uses absolute time-frames + // (can be cached by browsers and proxies) + RRDR_RESULT_FLAG_RELATIVE = (1 << 1), // the query uses relative time-frames + // (should not to be cached by browsers and proxies) + RRDR_RESULT_FLAG_CANCEL = (1 << 2), // the query needs to be cancelled +} RRDR_RESULT_FLAGS; -typedef struct rrdresult { - RRDR_RESULT_OPTIONS result_options; // RRDR_RESULT_OPTION_* +#define RRDR_DVIEW_ANOMALY_COUNT_MULTIPLIER 1000.0 +typedef struct rrdresult { size_t d; // the number of dimensions - size_t n; // the number of values in the arrays - size_t rows; // the number of rows used + size_t n; // the number of values in the arrays (number of points per dimension) + size_t rows; // the number of actual rows used RRDR_DIMENSION_FLAGS *od; // the options for the dimensions + STRING **di; // array of d dimension ids + STRING **dn; // array of d dimension names + STRING **du; // array of d dimension units + uint32_t *dgbs; // array of d dimension group by slots - NOT ALLOCATED when RRDR is created + uint32_t *dgbc; // array of d dimension group by counts - NOT ALLOCATED when RRDR is created + uint32_t *dp; // array of d dimension priority - NOT ALLOCATED when RRDR is created + DICTIONARY **dl; // array of d dimension labels - NOT ALLOCATED when RRDR is created + STORAGE_POINT *dqp; // array of d dimensions query points - NOT ALLOCATED when RRDR is created + STORAGE_POINT *dview; // array of d dimensions group by view - NOT ALLOCATED when RRDR is created + NETDATA_DOUBLE *vh; // array of n x d hidden values, while grouping - NOT ALLOCATED when RRDR is created + + DICTIONARY *label_keys; + time_t *t; // array of n timestamps NETDATA_DOUBLE *v; // array n x d values RRDR_VALUE_FLAGS *o; // array n x d options for each value returned NETDATA_DOUBLE *ar; // array n x d of anomaly rates (0 - 100) + uint32_t *gbc; // array n x d of group by count - NOT ALLOCATED when RRDR is created - size_t group; // how many collected values were grouped for each row - time_t update_every; // what is the suggested update frequency in seconds - - NETDATA_DOUBLE min; - NETDATA_DOUBLE max; + struct { + size_t group; // how many collected values were grouped for each row - NEEDED BY GROUPING FUNCTIONS + time_t after; + time_t before; + time_t update_every; // what is the suggested update frequency in seconds + NETDATA_DOUBLE min; + NETDATA_DOUBLE max; + RRDR_RESULT_FLAGS flags; // RRDR_RESULT_FLAG_* + } view; - time_t before; - time_t after; + struct { + size_t db_points_read; + size_t result_points_generated; + } stats; - // internal rrd2rrdr() members below this point struct { - ONEWAYALLOC *owa; // the allocator used - struct query_target *qt; // the QUERY_TARGET + void *data; // the internal data of the grouping function - RRDR_OPTIONS query_options; // RRDR_OPTION_* (as run by the query) + // grouping function pointers + RRDR_TIME_GROUPING add_flush; + void (*create)(struct rrdresult *r, const char *options); + void (*reset)(struct rrdresult *r); + void (*free)(struct rrdresult *r); + void (*add)(struct rrdresult *r, NETDATA_DOUBLE value); + NETDATA_DOUBLE (*flush)(struct rrdresult *r, RRDR_VALUE_FLAGS *rrdr_value_options_ptr); + + TIER_QUERY_FETCH tier_query_fetch; // which value to use from STORAGE_POINT size_t points_wanted; // used by SES and DES size_t resampling_group; // used by AVERAGE NETDATA_DOUBLE resampling_divisor; // used by AVERAGE + } time_grouping; - // grouping function pointers - void (*grouping_create)(struct rrdresult *r, const char *options); - void (*grouping_reset)(struct rrdresult *r); - void (*grouping_free)(struct rrdresult *r); - void (*grouping_add)(struct rrdresult *r, NETDATA_DOUBLE value); - NETDATA_DOUBLE (*grouping_flush)(struct rrdresult *r, RRDR_VALUE_FLAGS *rrdr_value_options_ptr); + struct { + struct rrdresult *r; + } group_by; - TIER_QUERY_FETCH tier_query_fetch; // which value to use from STORAGE_POINT - void *grouping_data; // the internal data of the grouping function + struct { + time_t max_update_every; + time_t expected_after; + time_t trimmed_after; + } partial_data_trimming; + + struct { + ONEWAYALLOC *owa; // the allocator used + struct query_target *qt; // the QUERY_TARGET + size_t contexts; // temp needed between json_wrapper_begin2() and json_wrapper_end2() + size_t queries_count; // temp needed to know if a query is the first executed #ifdef NETDATA_INTERNAL_CHECKS const char *log; #endif - // statistics - size_t db_points_read; - size_t result_points_generated; - size_t tier_points_read[RRD_STORAGE_TIERS]; + struct query_target *release_with_rrdr_qt; } internal; } RRDR; @@ -130,7 +171,7 @@ typedef struct rrdresult { #include "database/rrd.h" void rrdr_free(ONEWAYALLOC *owa, RRDR *r); -RRDR *rrdr_create(ONEWAYALLOC *owa, struct query_target *qt); +RRDR *rrdr_create(ONEWAYALLOC *owa, struct query_target *qt, size_t dimensions, size_t points); #include "../web_api_v1.h" #include "web/api/queries/query.h" @@ -138,14 +179,14 @@ RRDR *rrdr_create(ONEWAYALLOC *owa, struct query_target *qt); RRDR *rrd2rrdr_legacy( ONEWAYALLOC *owa, RRDSET *st, size_t points, time_t after, time_t before, - RRDR_GROUPING group_method, time_t resampling_time, RRDR_OPTIONS options, const char *dimensions, - const char *group_options, time_t timeout, size_t tier, QUERY_SOURCE query_source, + RRDR_TIME_GROUPING group_method, time_t resampling_time, RRDR_OPTIONS options, const char *dimensions, + const char *group_options, time_t timeout_ms, size_t tier, QUERY_SOURCE query_source, STORAGE_PRIORITY priority); RRDR *rrd2rrdr(ONEWAYALLOC *owa, struct query_target *qt); bool query_target_calculate_window(struct query_target *qt); -bool rrdr_relative_window_to_absolute(time_t *after, time_t *before); +bool rrdr_relative_window_to_absolute(time_t *after, time_t *before, time_t *now_ptr); #ifdef __cplusplus } diff --git a/web/api/queries/ses/README.md b/web/api/queries/ses/README.md index b835b8120..56634d36e 100644 --- a/web/api/queries/ses/README.md +++ b/web/api/queries/ses/README.md @@ -1,6 +1,10 @@ # Single (or Simple) Exponential Smoothing (`ses`) diff --git a/web/api/queries/ses/ses.c b/web/api/queries/ses/ses.c index 5e94002c3..39eb445a0 100644 --- a/web/api/queries/ses/ses.c +++ b/web/api/queries/ses/ses.c @@ -6,85 +6,3 @@ // ---------------------------------------------------------------------------- // single exponential smoothing -struct grouping_ses { - NETDATA_DOUBLE alpha; - NETDATA_DOUBLE alpha_other; - NETDATA_DOUBLE level; - size_t count; -}; - -static size_t max_window_size = 15; - -void grouping_init_ses(void) { - long long ret = config_get_number(CONFIG_SECTION_WEB, "ses max window", (long long)max_window_size); - if(ret <= 1) { - config_set_number(CONFIG_SECTION_WEB, "ses max window", (long long)max_window_size); - } - else { - max_window_size = (size_t) ret; - } -} - -static inline NETDATA_DOUBLE window(RRDR *r, struct grouping_ses *g) { - (void)g; - - NETDATA_DOUBLE points; - if(r->group == 1) { - // provide a running DES - points = (NETDATA_DOUBLE)r->internal.points_wanted; - } - else { - // provide a SES with flush points - points = (NETDATA_DOUBLE)r->group; - } - - return (points > (NETDATA_DOUBLE)max_window_size) ? (NETDATA_DOUBLE)max_window_size : points; -} - -static inline void set_alpha(RRDR *r, struct grouping_ses *g) { - // https://en.wikipedia.org/wiki/Moving_average#Exponential_moving_average - // A commonly used value for alpha is 2 / (N + 1) - g->alpha = 2.0 / (window(r, g) + 1.0); - g->alpha_other = 1.0 - g->alpha; -} - -void grouping_create_ses(RRDR *r, const char *options __maybe_unused) { - struct grouping_ses *g = (struct grouping_ses *)onewayalloc_callocz(r->internal.owa, 1, sizeof(struct grouping_ses)); - set_alpha(r, g); - g->level = 0.0; - r->internal.grouping_data = g; -} - -// resets when switches dimensions -// so, clear everything to restart -void grouping_reset_ses(RRDR *r) { - struct grouping_ses *g = (struct grouping_ses *)r->internal.grouping_data; - g->level = 0.0; - g->count = 0; -} - -void grouping_free_ses(RRDR *r) { - onewayalloc_freez(r->internal.owa, r->internal.grouping_data); - r->internal.grouping_data = NULL; -} - -void grouping_add_ses(RRDR *r, NETDATA_DOUBLE value) { - struct grouping_ses *g = (struct grouping_ses *)r->internal.grouping_data; - - if(unlikely(!g->count)) - g->level = value; - - g->level = g->alpha * value + g->alpha_other * g->level; - g->count++; -} - -NETDATA_DOUBLE grouping_flush_ses(RRDR *r, RRDR_VALUE_FLAGS *rrdr_value_options_ptr) { - struct grouping_ses *g = (struct grouping_ses *)r->internal.grouping_data; - - if(unlikely(!g->count || !netdata_double_isnumber(g->level))) { - *rrdr_value_options_ptr |= RRDR_VALUE_EMPTY; - return 0.0; - } - - return g->level; -} diff --git a/web/api/queries/ses/ses.h b/web/api/queries/ses/ses.h index 79b09fbdf..de8645ff0 100644 --- a/web/api/queries/ses/ses.h +++ b/web/api/queries/ses/ses.h @@ -6,12 +6,87 @@ #include "../query.h" #include "../rrdr.h" -void grouping_init_ses(void); +struct tg_ses { + NETDATA_DOUBLE alpha; + NETDATA_DOUBLE alpha_other; + NETDATA_DOUBLE level; + size_t count; +}; -void grouping_create_ses(RRDR *r, const char *options __maybe_unused); -void grouping_reset_ses(RRDR *r); -void grouping_free_ses(RRDR *r); -void grouping_add_ses(RRDR *r, NETDATA_DOUBLE value); -NETDATA_DOUBLE grouping_flush_ses(RRDR *r, RRDR_VALUE_FLAGS *rrdr_value_options_ptr); +static size_t tg_ses_max_window_size = 15; + +static inline void tg_ses_init(void) { + long long ret = config_get_number(CONFIG_SECTION_WEB, "ses max tg_des_window", (long long)tg_ses_max_window_size); + if(ret <= 1) { + config_set_number(CONFIG_SECTION_WEB, "ses max tg_des_window", (long long)tg_ses_max_window_size); + } + else { + tg_ses_max_window_size = (size_t) ret; + } +} + +static inline NETDATA_DOUBLE tg_ses_window(RRDR *r, struct tg_ses *g) { + (void)g; + + NETDATA_DOUBLE points; + if(r->view.group == 1) { + // provide a running DES + points = (NETDATA_DOUBLE)r->time_grouping.points_wanted; + } + else { + // provide a SES with flush points + points = (NETDATA_DOUBLE)r->view.group; + } + + return (points > (NETDATA_DOUBLE)tg_ses_max_window_size) ? (NETDATA_DOUBLE)tg_ses_max_window_size : points; +} + +static inline void tg_ses_set_alpha(RRDR *r, struct tg_ses *g) { + // https://en.wikipedia.org/wiki/Moving_average#Exponential_moving_average + // A commonly used value for alpha is 2 / (N + 1) + g->alpha = 2.0 / (tg_ses_window(r, g) + 1.0); + g->alpha_other = 1.0 - g->alpha; +} + +static inline void tg_ses_create(RRDR *r, const char *options __maybe_unused) { + struct tg_ses *g = (struct tg_ses *)onewayalloc_callocz(r->internal.owa, 1, sizeof(struct tg_ses)); + tg_ses_set_alpha(r, g); + g->level = 0.0; + r->time_grouping.data = g; +} + +// resets when switches dimensions +// so, clear everything to restart +static inline void tg_ses_reset(RRDR *r) { + struct tg_ses *g = (struct tg_ses *)r->time_grouping.data; + g->level = 0.0; + g->count = 0; +} + +static inline void tg_ses_free(RRDR *r) { + onewayalloc_freez(r->internal.owa, r->time_grouping.data); + r->time_grouping.data = NULL; +} + +static inline void tg_ses_add(RRDR *r, NETDATA_DOUBLE value) { + struct tg_ses *g = (struct tg_ses *)r->time_grouping.data; + + if(unlikely(!g->count)) + g->level = value; + + g->level = g->alpha * value + g->alpha_other * g->level; + g->count++; +} + +static inline NETDATA_DOUBLE tg_ses_flush(RRDR *r, RRDR_VALUE_FLAGS *rrdr_value_options_ptr) { + struct tg_ses *g = (struct tg_ses *)r->time_grouping.data; + + if(unlikely(!g->count || !netdata_double_isnumber(g->level))) { + *rrdr_value_options_ptr |= RRDR_VALUE_EMPTY; + return 0.0; + } + + return g->level; +} #endif //NETDATA_API_QUERIES_SES_H diff --git a/web/api/queries/stddev/README.md b/web/api/queries/stddev/README.md index 2fca47d5e..f0586a062 100644 --- a/web/api/queries/stddev/README.md +++ b/web/api/queries/stddev/README.md @@ -1,6 +1,10 @@ # standard deviation (`stddev`) diff --git a/web/api/queries/stddev/stddev.c b/web/api/queries/stddev/stddev.c index 92a67b42d..8f5431194 100644 --- a/web/api/queries/stddev/stddev.c +++ b/web/api/queries/stddev/stddev.c @@ -6,123 +6,11 @@ // ---------------------------------------------------------------------------- // stddev -// this implementation comes from: -// https://www.johndcook.com/blog/standard_deviation/ - -struct grouping_stddev { - long count; - NETDATA_DOUBLE m_oldM, m_newM, m_oldS, m_newS; -}; - -void grouping_create_stddev(RRDR *r, const char *options __maybe_unused) { - r->internal.grouping_data = onewayalloc_callocz(r->internal.owa, 1, sizeof(struct grouping_stddev)); -} - -// resets when switches dimensions -// so, clear everything to restart -void grouping_reset_stddev(RRDR *r) { - struct grouping_stddev *g = (struct grouping_stddev *)r->internal.grouping_data; - g->count = 0; -} - -void grouping_free_stddev(RRDR *r) { - onewayalloc_freez(r->internal.owa, r->internal.grouping_data); - r->internal.grouping_data = NULL; -} - -void grouping_add_stddev(RRDR *r, NETDATA_DOUBLE value) { - struct grouping_stddev *g = (struct grouping_stddev *)r->internal.grouping_data; - - g->count++; - - // See Knuth TAOCP vol 2, 3rd edition, page 232 - if (g->count == 1) { - g->m_oldM = g->m_newM = value; - g->m_oldS = 0.0; - } - else { - g->m_newM = g->m_oldM + (value - g->m_oldM) / g->count; - g->m_newS = g->m_oldS + (value - g->m_oldM) * (value - g->m_newM); - - // set up for next iteration - g->m_oldM = g->m_newM; - g->m_oldS = g->m_newS; - } -} - -static inline NETDATA_DOUBLE mean(struct grouping_stddev *g) { - return (g->count > 0) ? g->m_newM : 0.0; -} - -static inline NETDATA_DOUBLE variance(struct grouping_stddev *g) { - return ( (g->count > 1) ? g->m_newS/(NETDATA_DOUBLE)(g->count - 1) : 0.0 ); -} -static inline NETDATA_DOUBLE stddev(struct grouping_stddev *g) { - return sqrtndd(variance(g)); -} - -NETDATA_DOUBLE grouping_flush_stddev(RRDR *r, RRDR_VALUE_FLAGS *rrdr_value_options_ptr) { - struct grouping_stddev *g = (struct grouping_stddev *)r->internal.grouping_data; - - NETDATA_DOUBLE value; - - if(likely(g->count > 1)) { - value = stddev(g); - - if(!netdata_double_isnumber(value)) { - value = 0.0; - *rrdr_value_options_ptr |= RRDR_VALUE_EMPTY; - } - } - else if(g->count == 1) { - value = 0.0; - } - else { - value = 0.0; - *rrdr_value_options_ptr |= RRDR_VALUE_EMPTY; - } - - grouping_reset_stddev(r); - - return value; -} - -// https://en.wikipedia.org/wiki/Coefficient_of_variation -NETDATA_DOUBLE grouping_flush_coefficient_of_variation(RRDR *r, RRDR_VALUE_FLAGS *rrdr_value_options_ptr) { - struct grouping_stddev *g = (struct grouping_stddev *)r->internal.grouping_data; - - NETDATA_DOUBLE value; - - if(likely(g->count > 1)) { - NETDATA_DOUBLE m = mean(g); - value = 100.0 * stddev(g) / ((m < 0)? -m : m); - - if(unlikely(!netdata_double_isnumber(value))) { - value = 0.0; - *rrdr_value_options_ptr |= RRDR_VALUE_EMPTY; - } - } - else if(g->count == 1) { - // one value collected - value = 0.0; - } - else { - // no values collected - value = 0.0; - *rrdr_value_options_ptr |= RRDR_VALUE_EMPTY; - } - - grouping_reset_stddev(r); - - return value; -} - - /* * Mean = average * NETDATA_DOUBLE grouping_flush_mean(RRDR *r, RRDR_VALUE_FLAGS *rrdr_value_options_ptr) { - struct grouping_stddev *g = (struct grouping_stddev *)r->internal.grouping_data; + struct grouping_stddev *g = (struct grouping_stddev *)r->grouping.grouping_data; NETDATA_DOUBLE value; @@ -149,7 +37,7 @@ NETDATA_DOUBLE grouping_flush_mean(RRDR *r, RRDR_VALUE_FLAGS *rrdr_value_options * It is not advised to use this version of variance directly * NETDATA_DOUBLE grouping_flush_variance(RRDR *r, RRDR_VALUE_FLAGS *rrdr_value_options_ptr) { - struct grouping_stddev *g = (struct grouping_stddev *)r->internal.grouping_data; + struct grouping_stddev *g = (struct grouping_stddev *)r->grouping.grouping_data; NETDATA_DOUBLE value; diff --git a/web/api/queries/stddev/stddev.h b/web/api/queries/stddev/stddev.h index 4b8ffcd53..f7a1a06c3 100644 --- a/web/api/queries/stddev/stddev.h +++ b/web/api/queries/stddev/stddev.h @@ -6,13 +6,115 @@ #include "../query.h" #include "../rrdr.h" -void grouping_create_stddev(RRDR *r, const char *options __maybe_unused); -void grouping_reset_stddev(RRDR *r); -void grouping_free_stddev(RRDR *r); -void grouping_add_stddev(RRDR *r, NETDATA_DOUBLE value); -NETDATA_DOUBLE grouping_flush_stddev(RRDR *r, RRDR_VALUE_FLAGS *rrdr_value_options_ptr); -NETDATA_DOUBLE grouping_flush_coefficient_of_variation(RRDR *r, RRDR_VALUE_FLAGS *rrdr_value_options_ptr); -// NETDATA_DOUBLE grouping_flush_mean(RRDR *r, RRDR_VALUE_FLAGS *rrdr_value_options_ptr); -// NETDATA_DOUBLE grouping_flush_variance(RRDR *r, RRDR_VALUE_FLAGS *rrdr_value_options_ptr); +// this implementation comes from: +// https://www.johndcook.com/blog/standard_deviation/ + +struct tg_stddev { + long count; + NETDATA_DOUBLE m_oldM, m_newM, m_oldS, m_newS; +}; + +static inline void tg_stddev_create(RRDR *r, const char *options __maybe_unused) { + r->time_grouping.data = onewayalloc_callocz(r->internal.owa, 1, sizeof(struct tg_stddev)); +} + +// resets when switches dimensions +// so, clear everything to restart +static inline void tg_stddev_reset(RRDR *r) { + struct tg_stddev *g = (struct tg_stddev *)r->time_grouping.data; + g->count = 0; +} + +static inline void tg_stddev_free(RRDR *r) { + onewayalloc_freez(r->internal.owa, r->time_grouping.data); + r->time_grouping.data = NULL; +} + +static inline void tg_stddev_add(RRDR *r, NETDATA_DOUBLE value) { + struct tg_stddev *g = (struct tg_stddev *)r->time_grouping.data; + + g->count++; + + // See Knuth TAOCP vol 2, 3rd edition, page 232 + if (g->count == 1) { + g->m_oldM = g->m_newM = value; + g->m_oldS = 0.0; + } + else { + g->m_newM = g->m_oldM + (value - g->m_oldM) / g->count; + g->m_newS = g->m_oldS + (value - g->m_oldM) * (value - g->m_newM); + + // set up for next iteration + g->m_oldM = g->m_newM; + g->m_oldS = g->m_newS; + } +} + +static inline NETDATA_DOUBLE tg_stddev_mean(struct tg_stddev *g) { + return (g->count > 0) ? g->m_newM : 0.0; +} + +static inline NETDATA_DOUBLE tg_stddev_variance(struct tg_stddev *g) { + return ( (g->count > 1) ? g->m_newS/(NETDATA_DOUBLE)(g->count - 1) : 0.0 ); +} +static inline NETDATA_DOUBLE tg_stddev_stddev(struct tg_stddev *g) { + return sqrtndd(tg_stddev_variance(g)); +} + +static inline NETDATA_DOUBLE tg_stddev_flush(RRDR *r, RRDR_VALUE_FLAGS *rrdr_value_options_ptr) { + struct tg_stddev *g = (struct tg_stddev *)r->time_grouping.data; + + NETDATA_DOUBLE value; + + if(likely(g->count > 1)) { + value = tg_stddev_stddev(g); + + if(!netdata_double_isnumber(value)) { + value = 0.0; + *rrdr_value_options_ptr |= RRDR_VALUE_EMPTY; + } + } + else if(g->count == 1) { + value = 0.0; + } + else { + value = 0.0; + *rrdr_value_options_ptr |= RRDR_VALUE_EMPTY; + } + + tg_stddev_reset(r); + + return value; +} + +// https://en.wikipedia.org/wiki/Coefficient_of_variation +static inline NETDATA_DOUBLE tg_stddev_coefficient_of_variation_flush(RRDR *r, RRDR_VALUE_FLAGS *rrdr_value_options_ptr) { + struct tg_stddev *g = (struct tg_stddev *)r->time_grouping.data; + + NETDATA_DOUBLE value; + + if(likely(g->count > 1)) { + NETDATA_DOUBLE m = tg_stddev_mean(g); + value = 100.0 * tg_stddev_stddev(g) / ((m < 0)? -m : m); + + if(unlikely(!netdata_double_isnumber(value))) { + value = 0.0; + *rrdr_value_options_ptr |= RRDR_VALUE_EMPTY; + } + } + else if(g->count == 1) { + // one value collected + value = 0.0; + } + else { + // no values collected + value = 0.0; + *rrdr_value_options_ptr |= RRDR_VALUE_EMPTY; + } + + tg_stddev_reset(r); + + return value; +} #endif //NETDATA_API_QUERIES_STDDEV_H diff --git a/web/api/queries/sum/README.md b/web/api/queries/sum/README.md index d4465bd82..62e18acab 100644 --- a/web/api/queries/sum/README.md +++ b/web/api/queries/sum/README.md @@ -1,6 +1,10 @@ # Sum diff --git a/web/api/queries/sum/sum.c b/web/api/queries/sum/sum.c index eec6e2ad0..cf4484217 100644 --- a/web/api/queries/sum/sum.c +++ b/web/api/queries/sum/sum.c @@ -5,51 +5,5 @@ // ---------------------------------------------------------------------------- // sum -struct grouping_sum { - NETDATA_DOUBLE sum; - size_t count; -}; - -void grouping_create_sum(RRDR *r, const char *options __maybe_unused) { - r->internal.grouping_data = onewayalloc_callocz(r->internal.owa, 1, sizeof(struct grouping_sum)); -} - -// resets when switches dimensions -// so, clear everything to restart -void grouping_reset_sum(RRDR *r) { - struct grouping_sum *g = (struct grouping_sum *)r->internal.grouping_data; - g->sum = 0; - g->count = 0; -} - -void grouping_free_sum(RRDR *r) { - onewayalloc_freez(r->internal.owa, r->internal.grouping_data); - r->internal.grouping_data = NULL; -} - -void grouping_add_sum(RRDR *r, NETDATA_DOUBLE value) { - struct grouping_sum *g = (struct grouping_sum *)r->internal.grouping_data; - g->sum += value; - g->count++; -} - -NETDATA_DOUBLE grouping_flush_sum(RRDR *r, RRDR_VALUE_FLAGS *rrdr_value_options_ptr) { - struct grouping_sum *g = (struct grouping_sum *)r->internal.grouping_data; - - NETDATA_DOUBLE value; - - if(unlikely(!g->count)) { - value = 0.0; - *rrdr_value_options_ptr |= RRDR_VALUE_EMPTY; - } - else { - value = g->sum; - } - - g->sum = 0.0; - g->count = 0; - - return value; -} diff --git a/web/api/queries/sum/sum.h b/web/api/queries/sum/sum.h index 898782775..5e07f45d6 100644 --- a/web/api/queries/sum/sum.h +++ b/web/api/queries/sum/sum.h @@ -6,10 +6,51 @@ #include "../query.h" #include "../rrdr.h" -void grouping_create_sum(RRDR *r, const char *options __maybe_unused); -void grouping_reset_sum(RRDR *r); -void grouping_free_sum(RRDR *r); -void grouping_add_sum(RRDR *r, NETDATA_DOUBLE value); -NETDATA_DOUBLE grouping_flush_sum(RRDR *r, RRDR_VALUE_FLAGS *rrdr_value_options_ptr); +struct tg_sum { + NETDATA_DOUBLE sum; + size_t count; +}; + +static inline void tg_sum_create(RRDR *r, const char *options __maybe_unused) { + r->time_grouping.data = onewayalloc_callocz(r->internal.owa, 1, sizeof(struct tg_sum)); +} + +// resets when switches dimensions +// so, clear everything to restart +static inline void tg_sum_reset(RRDR *r) { + struct tg_sum *g = (struct tg_sum *)r->time_grouping.data; + g->sum = 0; + g->count = 0; +} + +static inline void tg_sum_free(RRDR *r) { + onewayalloc_freez(r->internal.owa, r->time_grouping.data); + r->time_grouping.data = NULL; +} + +static inline void tg_sum_add(RRDR *r, NETDATA_DOUBLE value) { + struct tg_sum *g = (struct tg_sum *)r->time_grouping.data; + g->sum += value; + g->count++; +} + +static inline NETDATA_DOUBLE tg_sum_flush(RRDR *r, RRDR_VALUE_FLAGS *rrdr_value_options_ptr) { + struct tg_sum *g = (struct tg_sum *)r->time_grouping.data; + + NETDATA_DOUBLE value; + + if(unlikely(!g->count)) { + value = 0.0; + *rrdr_value_options_ptr |= RRDR_VALUE_EMPTY; + } + else { + value = g->sum; + } + + g->sum = 0.0; + g->count = 0; + + return value; +} #endif //NETDATA_API_QUERY_SUM_H diff --git a/web/api/queries/trimmed_mean/README.md b/web/api/queries/trimmed_mean/README.md index 71cdb85db..08a32b83b 100644 --- a/web/api/queries/trimmed_mean/README.md +++ b/web/api/queries/trimmed_mean/README.md @@ -1,7 +1,11 @@ # Trimmed Mean diff --git a/web/api/queries/trimmed_mean/trimmed_mean.c b/web/api/queries/trimmed_mean/trimmed_mean.c index 2277208a7..c50db7ed6 100644 --- a/web/api/queries/trimmed_mean/trimmed_mean.c +++ b/web/api/queries/trimmed_mean/trimmed_mean.c @@ -5,162 +5,3 @@ // ---------------------------------------------------------------------------- // median -struct grouping_trimmed_mean { - size_t series_size; - size_t next_pos; - NETDATA_DOUBLE percent; - - NETDATA_DOUBLE *series; -}; - -static void grouping_create_trimmed_mean_internal(RRDR *r, const char *options, NETDATA_DOUBLE def) { - long entries = r->group; - if(entries < 10) entries = 10; - - struct grouping_trimmed_mean *g = (struct grouping_trimmed_mean *)onewayalloc_callocz(r->internal.owa, 1, sizeof(struct grouping_trimmed_mean)); - g->series = onewayalloc_mallocz(r->internal.owa, entries * sizeof(NETDATA_DOUBLE)); - g->series_size = (size_t)entries; - - g->percent = def; - if(options && *options) { - g->percent = str2ndd(options, NULL); - if(!netdata_double_isnumber(g->percent)) g->percent = 0.0; - if(g->percent < 0.0) g->percent = 0.0; - if(g->percent > 50.0) g->percent = 50.0; - } - - g->percent = 1.0 - ((g->percent / 100.0) * 2.0); - r->internal.grouping_data = g; -} - -void grouping_create_trimmed_mean1(RRDR *r, const char *options) { - grouping_create_trimmed_mean_internal(r, options, 1.0); -} -void grouping_create_trimmed_mean2(RRDR *r, const char *options) { - grouping_create_trimmed_mean_internal(r, options, 2.0); -} -void grouping_create_trimmed_mean3(RRDR *r, const char *options) { - grouping_create_trimmed_mean_internal(r, options, 3.0); -} -void grouping_create_trimmed_mean5(RRDR *r, const char *options) { - grouping_create_trimmed_mean_internal(r, options, 5.0); -} -void grouping_create_trimmed_mean10(RRDR *r, const char *options) { - grouping_create_trimmed_mean_internal(r, options, 10.0); -} -void grouping_create_trimmed_mean15(RRDR *r, const char *options) { - grouping_create_trimmed_mean_internal(r, options, 15.0); -} -void grouping_create_trimmed_mean20(RRDR *r, const char *options) { - grouping_create_trimmed_mean_internal(r, options, 20.0); -} -void grouping_create_trimmed_mean25(RRDR *r, const char *options) { - grouping_create_trimmed_mean_internal(r, options, 25.0); -} - -// resets when switches dimensions -// so, clear everything to restart -void grouping_reset_trimmed_mean(RRDR *r) { - struct grouping_trimmed_mean *g = (struct grouping_trimmed_mean *)r->internal.grouping_data; - g->next_pos = 0; -} - -void grouping_free_trimmed_mean(RRDR *r) { - struct grouping_trimmed_mean *g = (struct grouping_trimmed_mean *)r->internal.grouping_data; - if(g) onewayalloc_freez(r->internal.owa, g->series); - - onewayalloc_freez(r->internal.owa, r->internal.grouping_data); - r->internal.grouping_data = NULL; -} - -void grouping_add_trimmed_mean(RRDR *r, NETDATA_DOUBLE value) { - struct grouping_trimmed_mean *g = (struct grouping_trimmed_mean *)r->internal.grouping_data; - - if(unlikely(g->next_pos >= g->series_size)) { - g->series = onewayalloc_doublesize( r->internal.owa, g->series, g->series_size * sizeof(NETDATA_DOUBLE)); - g->series_size *= 2; - } - - g->series[g->next_pos++] = value; -} - -NETDATA_DOUBLE grouping_flush_trimmed_mean(RRDR *r, RRDR_VALUE_FLAGS *rrdr_value_options_ptr) { - struct grouping_trimmed_mean *g = (struct grouping_trimmed_mean *)r->internal.grouping_data; - - NETDATA_DOUBLE value; - size_t available_slots = g->next_pos; - - if(unlikely(!available_slots)) { - value = 0.0; - *rrdr_value_options_ptr |= RRDR_VALUE_EMPTY; - } - else if(available_slots == 1) { - value = g->series[0]; - } - else { - sort_series(g->series, available_slots); - - NETDATA_DOUBLE min = g->series[0]; - NETDATA_DOUBLE max = g->series[available_slots - 1]; - - if (min != max) { - size_t slots_to_use = (size_t)((NETDATA_DOUBLE)available_slots * g->percent); - if(!slots_to_use) slots_to_use = 1; - - NETDATA_DOUBLE percent_to_use = (NETDATA_DOUBLE)slots_to_use / (NETDATA_DOUBLE)available_slots; - NETDATA_DOUBLE percent_delta = g->percent - percent_to_use; - - NETDATA_DOUBLE percent_interpolation_slot = 0.0; - NETDATA_DOUBLE percent_last_slot = 0.0; - if(percent_delta > 0.0) { - NETDATA_DOUBLE percent_to_use_plus_1_slot = (NETDATA_DOUBLE)(slots_to_use + 1) / (NETDATA_DOUBLE)available_slots; - NETDATA_DOUBLE percent_1slot = percent_to_use_plus_1_slot - percent_to_use; - - percent_interpolation_slot = percent_delta / percent_1slot; - percent_last_slot = 1 - percent_interpolation_slot; - } - - int start_slot, stop_slot, step, last_slot, interpolation_slot; - if(min >= 0.0 && max >= 0.0) { - start_slot = (int)((available_slots - slots_to_use) / 2); - stop_slot = start_slot + (int)slots_to_use; - last_slot = stop_slot - 1; - interpolation_slot = stop_slot; - step = 1; - } - else { - start_slot = (int)available_slots - 1 - (int)((available_slots - slots_to_use) / 2); - stop_slot = start_slot - (int)slots_to_use; - last_slot = stop_slot + 1; - interpolation_slot = stop_slot; - step = -1; - } - - value = 0.0; - for(int slot = start_slot; slot != stop_slot ; slot += step) - value += g->series[slot]; - - size_t counted = slots_to_use; - if(percent_interpolation_slot > 0.0 && interpolation_slot >= 0 && interpolation_slot < (int)available_slots) { - value += g->series[interpolation_slot] * percent_interpolation_slot; - value += g->series[last_slot] * percent_last_slot; - counted++; - } - - value = value / (NETDATA_DOUBLE)counted; - } - else - value = min; - } - - if(unlikely(!netdata_double_isnumber(value))) { - value = 0.0; - *rrdr_value_options_ptr |= RRDR_VALUE_EMPTY; - } - - //log_series_to_stderr(g->series, g->next_pos, value, "trimmed_mean"); - - g->next_pos = 0; - - return value; -} diff --git a/web/api/queries/trimmed_mean/trimmed_mean.h b/web/api/queries/trimmed_mean/trimmed_mean.h index e66d92541..3c09015bf 100644 --- a/web/api/queries/trimmed_mean/trimmed_mean.h +++ b/web/api/queries/trimmed_mean/trimmed_mean.h @@ -6,17 +6,164 @@ #include "../query.h" #include "../rrdr.h" -void grouping_create_trimmed_mean1(RRDR *r, const char *options); -void grouping_create_trimmed_mean2(RRDR *r, const char *options); -void grouping_create_trimmed_mean3(RRDR *r, const char *options); -void grouping_create_trimmed_mean5(RRDR *r, const char *options); -void grouping_create_trimmed_mean10(RRDR *r, const char *options); -void grouping_create_trimmed_mean15(RRDR *r, const char *options); -void grouping_create_trimmed_mean20(RRDR *r, const char *options); -void grouping_create_trimmed_mean25(RRDR *r, const char *options); -void grouping_reset_trimmed_mean(RRDR *r); -void grouping_free_trimmed_mean(RRDR *r); -void grouping_add_trimmed_mean(RRDR *r, NETDATA_DOUBLE value); -NETDATA_DOUBLE grouping_flush_trimmed_mean(RRDR *r, RRDR_VALUE_FLAGS *rrdr_value_options_ptr); +struct tg_trimmed_mean { + size_t series_size; + size_t next_pos; + NETDATA_DOUBLE percent; + + NETDATA_DOUBLE *series; +}; + +static inline void tg_trimmed_mean_create_internal(RRDR *r, const char *options, NETDATA_DOUBLE def) { + long entries = r->view.group; + if(entries < 10) entries = 10; + + struct tg_trimmed_mean *g = (struct tg_trimmed_mean *)onewayalloc_callocz(r->internal.owa, 1, sizeof(struct tg_trimmed_mean)); + g->series = onewayalloc_mallocz(r->internal.owa, entries * sizeof(NETDATA_DOUBLE)); + g->series_size = (size_t)entries; + + g->percent = def; + if(options && *options) { + g->percent = str2ndd(options, NULL); + if(!netdata_double_isnumber(g->percent)) g->percent = 0.0; + if(g->percent < 0.0) g->percent = 0.0; + if(g->percent > 50.0) g->percent = 50.0; + } + + g->percent = 1.0 - ((g->percent / 100.0) * 2.0); + r->time_grouping.data = g; +} + +static inline void tg_trimmed_mean_create_1(RRDR *r, const char *options) { + tg_trimmed_mean_create_internal(r, options, 1.0); +} +static inline void tg_trimmed_mean_create_2(RRDR *r, const char *options) { + tg_trimmed_mean_create_internal(r, options, 2.0); +} +static inline void tg_trimmed_mean_create_3(RRDR *r, const char *options) { + tg_trimmed_mean_create_internal(r, options, 3.0); +} +static inline void tg_trimmed_mean_create_5(RRDR *r, const char *options) { + tg_trimmed_mean_create_internal(r, options, 5.0); +} +static inline void tg_trimmed_mean_create_10(RRDR *r, const char *options) { + tg_trimmed_mean_create_internal(r, options, 10.0); +} +static inline void tg_trimmed_mean_create_15(RRDR *r, const char *options) { + tg_trimmed_mean_create_internal(r, options, 15.0); +} +static inline void tg_trimmed_mean_create_20(RRDR *r, const char *options) { + tg_trimmed_mean_create_internal(r, options, 20.0); +} +static inline void tg_trimmed_mean_create_25(RRDR *r, const char *options) { + tg_trimmed_mean_create_internal(r, options, 25.0); +} + +// resets when switches dimensions +// so, clear everything to restart +static inline void tg_trimmed_mean_reset(RRDR *r) { + struct tg_trimmed_mean *g = (struct tg_trimmed_mean *)r->time_grouping.data; + g->next_pos = 0; +} + +static inline void tg_trimmed_mean_free(RRDR *r) { + struct tg_trimmed_mean *g = (struct tg_trimmed_mean *)r->time_grouping.data; + if(g) onewayalloc_freez(r->internal.owa, g->series); + + onewayalloc_freez(r->internal.owa, r->time_grouping.data); + r->time_grouping.data = NULL; +} + +static inline void tg_trimmed_mean_add(RRDR *r, NETDATA_DOUBLE value) { + struct tg_trimmed_mean *g = (struct tg_trimmed_mean *)r->time_grouping.data; + + if(unlikely(g->next_pos >= g->series_size)) { + g->series = onewayalloc_doublesize( r->internal.owa, g->series, g->series_size * sizeof(NETDATA_DOUBLE)); + g->series_size *= 2; + } + + g->series[g->next_pos++] = value; +} + +static inline NETDATA_DOUBLE tg_trimmed_mean_flush(RRDR *r, RRDR_VALUE_FLAGS *rrdr_value_options_ptr) { + struct tg_trimmed_mean *g = (struct tg_trimmed_mean *)r->time_grouping.data; + + NETDATA_DOUBLE value; + size_t available_slots = g->next_pos; + + if(unlikely(!available_slots)) { + value = 0.0; + *rrdr_value_options_ptr |= RRDR_VALUE_EMPTY; + } + else if(available_slots == 1) { + value = g->series[0]; + } + else { + sort_series(g->series, available_slots); + + NETDATA_DOUBLE min = g->series[0]; + NETDATA_DOUBLE max = g->series[available_slots - 1]; + + if (min != max) { + size_t slots_to_use = (size_t)((NETDATA_DOUBLE)available_slots * g->percent); + if(!slots_to_use) slots_to_use = 1; + + NETDATA_DOUBLE percent_to_use = (NETDATA_DOUBLE)slots_to_use / (NETDATA_DOUBLE)available_slots; + NETDATA_DOUBLE percent_delta = g->percent - percent_to_use; + + NETDATA_DOUBLE percent_interpolation_slot = 0.0; + NETDATA_DOUBLE percent_last_slot = 0.0; + if(percent_delta > 0.0) { + NETDATA_DOUBLE percent_to_use_plus_1_slot = (NETDATA_DOUBLE)(slots_to_use + 1) / (NETDATA_DOUBLE)available_slots; + NETDATA_DOUBLE percent_1slot = percent_to_use_plus_1_slot - percent_to_use; + + percent_interpolation_slot = percent_delta / percent_1slot; + percent_last_slot = 1 - percent_interpolation_slot; + } + + int start_slot, stop_slot, step, last_slot, interpolation_slot; + if(min >= 0.0 && max >= 0.0) { + start_slot = (int)((available_slots - slots_to_use) / 2); + stop_slot = start_slot + (int)slots_to_use; + last_slot = stop_slot - 1; + interpolation_slot = stop_slot; + step = 1; + } + else { + start_slot = (int)available_slots - 1 - (int)((available_slots - slots_to_use) / 2); + stop_slot = start_slot - (int)slots_to_use; + last_slot = stop_slot + 1; + interpolation_slot = stop_slot; + step = -1; + } + + value = 0.0; + for(int slot = start_slot; slot != stop_slot ; slot += step) + value += g->series[slot]; + + size_t counted = slots_to_use; + if(percent_interpolation_slot > 0.0 && interpolation_slot >= 0 && interpolation_slot < (int)available_slots) { + value += g->series[interpolation_slot] * percent_interpolation_slot; + value += g->series[last_slot] * percent_last_slot; + counted++; + } + + value = value / (NETDATA_DOUBLE)counted; + } + else + value = min; + } + + if(unlikely(!netdata_double_isnumber(value))) { + value = 0.0; + *rrdr_value_options_ptr |= RRDR_VALUE_EMPTY; + } + + //log_series_to_stderr(g->series, g->next_pos, value, "trimmed_mean"); + + g->next_pos = 0; + + return value; +} #endif //NETDATA_API_QUERIES_TRIMMED_MEAN_H diff --git a/web/api/queries/weights.c b/web/api/queries/weights.c index 485aaca26..0830a969a 100644 --- a/web/api/queries/weights.c +++ b/web/api/queries/weights.c @@ -24,10 +24,11 @@ static struct { const char *name; WEIGHTS_METHOD value; } weights_methods[] = { - { "ks2" , WEIGHTS_METHOD_MC_KS2} - , { "volume" , WEIGHTS_METHOD_MC_VOLUME} - , { "anomaly-rate" , WEIGHTS_METHOD_ANOMALY_RATE} - , { NULL , 0 } + { "ks2" , WEIGHTS_METHOD_MC_KS2} + , { "volume" , WEIGHTS_METHOD_MC_VOLUME} + , { "anomaly-rate" , WEIGHTS_METHOD_ANOMALY_RATE} + , { "value" , WEIGHTS_METHOD_VALUE} + , { NULL , 0 } }; WEIGHTS_METHOD weights_string_to_method(const char *method) { @@ -56,14 +57,18 @@ typedef enum { struct register_result { RESULT_FLAGS flags; + RRDHOST *host; RRDCONTEXT_ACQUIRED *rca; RRDINSTANCE_ACQUIRED *ria; RRDMETRIC_ACQUIRED *rma; NETDATA_DOUBLE value; + STORAGE_POINT highlighted; + STORAGE_POINT baseline; + usec_t duration_ut; }; static DICTIONARY *register_result_init() { - DICTIONARY *results = dictionary_create(DICT_OPTION_SINGLE_THREADED); + DICTIONARY *results = dictionary_create_advanced(DICT_OPTION_SINGLE_THREADED | DICT_OPTION_FIXED_SIZE, NULL, sizeof(struct register_result)); return results; } @@ -71,14 +76,10 @@ static void register_result_destroy(DICTIONARY *results) { dictionary_destroy(results); } -static void register_result(DICTIONARY *results, - RRDCONTEXT_ACQUIRED *rca, - RRDINSTANCE_ACQUIRED *ria, - RRDMETRIC_ACQUIRED *rma, - NETDATA_DOUBLE value, - RESULT_FLAGS flags, - WEIGHTS_STATS *stats, - bool register_zero) { +static void register_result(DICTIONARY *results, RRDHOST *host, RRDCONTEXT_ACQUIRED *rca, RRDINSTANCE_ACQUIRED *ria, + RRDMETRIC_ACQUIRED *rma, NETDATA_DOUBLE value, RESULT_FLAGS flags, + STORAGE_POINT *highlighted, STORAGE_POINT *baseline, WEIGHTS_STATS *stats, + bool register_zero, usec_t duration_ut) { if(!netdata_double_isnumber(value)) return; @@ -90,17 +91,25 @@ static void register_result(DICTIONARY *results, return; // keep track of the max of the baseline / highlight ratio - if(flags & RESULT_IS_BASE_HIGH_RATIO && v > stats->max_base_high_ratio) + if((flags & RESULT_IS_BASE_HIGH_RATIO) && v > stats->max_base_high_ratio) stats->max_base_high_ratio = v; struct register_result t = { .flags = flags, + .host = host, .rca = rca, .ria = ria, .rma = rma, - .value = v + .value = v, + .duration_ut = duration_ut, }; + if(highlighted) + t.highlighted = *highlighted; + + if(baseline) + t.baseline = *baseline; + // we can use the pointer address or RMA as a unique key for each metric char buf[20 + 1]; ssize_t len = snprintfz(buf, 20, "%p", rma); @@ -114,112 +123,92 @@ static void results_header_to_json(DICTIONARY *results __maybe_unused, BUFFER *w time_t after, time_t before, time_t baseline_after, time_t baseline_before, size_t points, WEIGHTS_METHOD method, - RRDR_GROUPING group, RRDR_OPTIONS options, uint32_t shifts, + RRDR_TIME_GROUPING group, RRDR_OPTIONS options, uint32_t shifts, size_t examined_dimensions __maybe_unused, usec_t duration, WEIGHTS_STATS *stats) { - buffer_sprintf(wb, "{\n" - "\t\"after\": %lld,\n" - "\t\"before\": %lld,\n" - "\t\"duration\": %lld,\n" - "\t\"points\": %zu,\n", - (long long)after, - (long long)before, - (long long)(before - after), - points - ); - - if(method == WEIGHTS_METHOD_MC_KS2 || method == WEIGHTS_METHOD_MC_VOLUME) - buffer_sprintf(wb, "" - "\t\"baseline_after\": %lld,\n" - "\t\"baseline_before\": %lld,\n" - "\t\"baseline_duration\": %lld,\n" - "\t\"baseline_points\": %zu,\n", - (long long)baseline_after, - (long long)baseline_before, - (long long)(baseline_before - baseline_after), - points << shifts - ); - - buffer_sprintf(wb, "" - "\t\"statistics\": {\n" - "\t\t\"query_time_ms\": %f,\n" - "\t\t\"db_queries\": %zu,\n" - "\t\t\"query_result_points\": %zu,\n" - "\t\t\"binary_searches\": %zu,\n" - "\t\t\"db_points_read\": %zu,\n" - "\t\t\"db_points_per_tier\": [ ", - (double)duration / (double)USEC_PER_MS, - stats->db_queries, - stats->result_points, - stats->binary_searches, - stats->db_points - ); - - for(size_t tier = 0; tier < storage_tiers ;tier++) - buffer_sprintf(wb, "%s%zu", tier?", ":"", stats->db_points_per_tier[tier]); - - buffer_sprintf(wb, " ]\n" - "\t},\n" - "\t\"group\": \"%s\",\n" - "\t\"method\": \"%s\",\n" - "\t\"options\": \"", - web_client_api_request_v1_data_group_to_string(group), - weights_method_to_string(method) - ); - - web_client_api_request_v1_data_options_to_buffer(wb, options); + buffer_json_member_add_time_t(wb, "after", after); + buffer_json_member_add_time_t(wb, "before", before); + buffer_json_member_add_time_t(wb, "duration", before - after); + buffer_json_member_add_uint64(wb, "points", points); + + if(method == WEIGHTS_METHOD_MC_KS2 || method == WEIGHTS_METHOD_MC_VOLUME) { + buffer_json_member_add_time_t(wb, "baseline_after", baseline_after); + buffer_json_member_add_time_t(wb, "baseline_before", baseline_before); + buffer_json_member_add_time_t(wb, "baseline_duration", baseline_before - baseline_after); + buffer_json_member_add_uint64(wb, "baseline_points", points << shifts); + } + + buffer_json_member_add_object(wb, "statistics"); + { + buffer_json_member_add_double(wb, "query_time_ms", (double) duration / (double) USEC_PER_MS); + buffer_json_member_add_uint64(wb, "db_queries", stats->db_queries); + buffer_json_member_add_uint64(wb, "query_result_points", stats->result_points); + buffer_json_member_add_uint64(wb, "binary_searches", stats->binary_searches); + buffer_json_member_add_uint64(wb, "db_points_read", stats->db_points); + + buffer_json_member_add_array(wb, "db_points_per_tier"); + { + for (size_t tier = 0; tier < storage_tiers; tier++) + buffer_json_add_array_item_uint64(wb, stats->db_points_per_tier[tier]); + } + buffer_json_array_close(wb); + } + buffer_json_object_close(wb); + + buffer_json_member_add_string(wb, "group", time_grouping_tostring(group)); + buffer_json_member_add_string(wb, "method", weights_method_to_string(method)); + web_client_api_request_v1_data_options_to_buffer_json_array(wb, "options", options); } static size_t registered_results_to_json_charts(DICTIONARY *results, BUFFER *wb, time_t after, time_t before, time_t baseline_after, time_t baseline_before, size_t points, WEIGHTS_METHOD method, - RRDR_GROUPING group, RRDR_OPTIONS options, uint32_t shifts, + RRDR_TIME_GROUPING group, RRDR_OPTIONS options, uint32_t shifts, size_t examined_dimensions, usec_t duration, WEIGHTS_STATS *stats) { + buffer_json_initialize(wb, "\"", "\"", 0, true, options & RRDR_OPTION_MINIFY); + results_header_to_json(results, wb, after, before, baseline_after, baseline_before, points, method, group, options, shifts, examined_dimensions, duration, stats); - buffer_strcat(wb, "\",\n\t\"correlated_charts\": {\n"); + buffer_json_member_add_object(wb, "correlated_charts"); - size_t charts = 0, chart_dims = 0, total_dimensions = 0; + size_t charts = 0, total_dimensions = 0; struct register_result *t; RRDINSTANCE_ACQUIRED *last_ria = NULL; // never access this - we use it only for comparison dfe_start_read(results, t) { if(t->ria != last_ria) { last_ria = t->ria; - if(charts) buffer_strcat(wb, "\n\t\t\t}\n\t\t},\n"); - buffer_strcat(wb, "\t\t\""); - buffer_strcat(wb, rrdinstance_acquired_id(t->ria)); - buffer_strcat(wb, "\": {\n"); - buffer_strcat(wb, "\t\t\t\"context\": \""); - buffer_strcat(wb, rrdcontext_acquired_id(t->rca)); - buffer_strcat(wb, "\",\n\t\t\t\"dimensions\": {\n"); + if(charts) { + buffer_json_object_close(wb); // dimensions + buffer_json_object_close(wb); // chart:id + } + + buffer_json_member_add_object(wb, rrdinstance_acquired_id(t->ria)); + buffer_json_member_add_string(wb, "context", rrdcontext_acquired_id(t->rca)); + buffer_json_member_add_object(wb, "dimensions"); charts++; - chart_dims = 0; } - if (chart_dims) buffer_sprintf(wb, ",\n"); - buffer_sprintf(wb, "\t\t\t\t\"%s\": " NETDATA_DOUBLE_FORMAT, rrdmetric_acquired_name(t->rma), t->value); - chart_dims++; + buffer_json_member_add_double(wb, rrdmetric_acquired_name(t->rma), t->value); total_dimensions++; } dfe_done(t); // close dimensions and chart - if (total_dimensions) - buffer_strcat(wb, "\n\t\t\t}\n\t\t}\n"); - - // close correlated_charts - buffer_sprintf(wb, "\t},\n" - "\t\"correlated_dimensions\": %zu,\n" - "\t\"total_dimensions_count\": %zu\n" - "}\n", - total_dimensions, - examined_dimensions - ); + if (total_dimensions) { + buffer_json_object_close(wb); // dimensions + buffer_json_object_close(wb); // chart:id + } + + buffer_json_object_close(wb); + + buffer_json_member_add_uint64(wb, "correlated_dimensions", total_dimensions); + buffer_json_member_add_uint64(wb, "total_dimensions_count", examined_dimensions); + buffer_json_finalize(wb); return total_dimensions; } @@ -228,14 +217,16 @@ static size_t registered_results_to_json_contexts(DICTIONARY *results, BUFFER *w time_t after, time_t before, time_t baseline_after, time_t baseline_before, size_t points, WEIGHTS_METHOD method, - RRDR_GROUPING group, RRDR_OPTIONS options, uint32_t shifts, + RRDR_TIME_GROUPING group, RRDR_OPTIONS options, uint32_t shifts, size_t examined_dimensions, usec_t duration, WEIGHTS_STATS *stats) { + buffer_json_initialize(wb, "\"", "\"", 0, true, options & RRDR_OPTION_MINIFY); + results_header_to_json(results, wb, after, before, baseline_after, baseline_before, points, method, group, options, shifts, examined_dimensions, duration, stats); - buffer_strcat(wb, "\",\n\t\"contexts\": {\n"); + buffer_json_member_add_object(wb, "contexts"); size_t contexts = 0, charts = 0, total_dimensions = 0, context_dims = 0, chart_dims = 0; NETDATA_DOUBLE contexts_total_weight = 0.0, charts_total_weight = 0.0; @@ -247,18 +238,17 @@ static size_t registered_results_to_json_contexts(DICTIONARY *results, BUFFER *w if(t->rca != last_rca) { last_rca = t->rca; - if(contexts) - buffer_sprintf(wb, "\n" - "\t\t\t\t\t},\n" - "\t\t\t\t\t\"weight\":" NETDATA_DOUBLE_FORMAT "\n" - "\t\t\t\t}\n\t\t\t},\n" - "\t\t\t\"weight\":" NETDATA_DOUBLE_FORMAT "\n\t\t},\n" - , charts_total_weight / (double)chart_dims - , contexts_total_weight / (double)context_dims); + if(contexts) { + buffer_json_object_close(wb); // dimensions + buffer_json_member_add_double(wb, "weight", charts_total_weight / (double) chart_dims); + buffer_json_object_close(wb); // chart:id + buffer_json_object_close(wb); // charts + buffer_json_member_add_double(wb, "weight", contexts_total_weight / (double) context_dims); + buffer_json_object_close(wb); // context + } - buffer_strcat(wb, "\t\t\""); - buffer_strcat(wb, rrdcontext_acquired_id(t->rca)); - buffer_strcat(wb, "\": {\n\t\t\t\"charts\":{\n"); + buffer_json_member_add_object(wb, rrdcontext_acquired_id(t->rca)); + buffer_json_member_add_object(wb, "charts"); contexts++; charts = 0; @@ -271,25 +261,21 @@ static size_t registered_results_to_json_contexts(DICTIONARY *results, BUFFER *w if(t->ria != last_ria) { last_ria = t->ria; - if(charts) - buffer_sprintf(wb, "\n" - "\t\t\t\t\t},\n" - "\t\t\t\t\t\"weight\":" NETDATA_DOUBLE_FORMAT "\n" - "\t\t\t\t},\n" - , charts_total_weight / (double)chart_dims); + if(charts) { + buffer_json_object_close(wb); // dimensions + buffer_json_member_add_double(wb, "weight", charts_total_weight / (double) chart_dims); + buffer_json_object_close(wb); // chart:id + } - buffer_strcat(wb, "\t\t\t\t\""); - buffer_strcat(wb, rrdinstance_acquired_id(t->ria)); - buffer_strcat(wb, "\": {\n"); - buffer_strcat(wb, "\t\t\t\t\t\"dimensions\": {\n"); + buffer_json_member_add_object(wb, rrdinstance_acquired_id(t->ria)); + buffer_json_member_add_object(wb, "dimensions"); charts++; chart_dims = 0; charts_total_weight = 0.0; } - if (chart_dims) buffer_sprintf(wb, ",\n"); - buffer_sprintf(wb, "\t\t\t\t\t\t\"%s\": " NETDATA_DOUBLE_FORMAT, rrdmetric_acquired_name(t->rma), t->value); + buffer_json_member_add_double(wb, rrdmetric_acquired_name(t->rma), t->value); charts_total_weight += t->value; contexts_total_weight += t->value; chart_dims++; @@ -299,25 +285,794 @@ static size_t registered_results_to_json_contexts(DICTIONARY *results, BUFFER *w dfe_done(t); // close dimensions and chart - if (total_dimensions) - buffer_sprintf(wb, "\n" - "\t\t\t\t\t},\n" - "\t\t\t\t\t\"weight\":" NETDATA_DOUBLE_FORMAT "\n" - "\t\t\t\t}\n" - "\t\t\t},\n" - "\t\t\t\"weight\":" NETDATA_DOUBLE_FORMAT "\n" - "\t\t}\n" - , charts_total_weight / (double)chart_dims - , contexts_total_weight / (double)context_dims); - - // close correlated_charts - buffer_sprintf(wb, "\t},\n" - "\t\"weighted_dimensions\": %zu,\n" - "\t\"total_dimensions_count\": %zu\n" - "}\n", - total_dimensions, - examined_dimensions - ); + if (total_dimensions) { + buffer_json_object_close(wb); // dimensions + buffer_json_member_add_double(wb, "weight", charts_total_weight / (double) chart_dims); + buffer_json_object_close(wb); // chart:id + buffer_json_object_close(wb); // charts + buffer_json_member_add_double(wb, "weight", contexts_total_weight / (double) context_dims); + buffer_json_object_close(wb); // context + } + + buffer_json_object_close(wb); + + buffer_json_member_add_uint64(wb, "correlated_dimensions", total_dimensions); + buffer_json_member_add_uint64(wb, "total_dimensions_count", examined_dimensions); + buffer_json_finalize(wb); + + return total_dimensions; +} + +struct query_weights_data { + QUERY_WEIGHTS_REQUEST *qwr; + + SIMPLE_PATTERN *scope_nodes_sp; + SIMPLE_PATTERN *scope_contexts_sp; + SIMPLE_PATTERN *nodes_sp; + SIMPLE_PATTERN *contexts_sp; + SIMPLE_PATTERN *instances_sp; + SIMPLE_PATTERN *dimensions_sp; + SIMPLE_PATTERN *labels_sp; + SIMPLE_PATTERN *alerts_sp; + + usec_t timeout_us; + bool timed_out; + bool interrupted; + + struct query_timings timings; + + size_t examined_dimensions; + bool register_zero; + + DICTIONARY *results; + WEIGHTS_STATS stats; + + uint32_t shifts; + + struct query_versions versions; +}; + +#define AGGREGATED_WEIGHT_EMPTY (struct aggregated_weight) { \ + .min = NAN, \ + .max = NAN, \ + .sum = NAN, \ + .count = 0, \ + .hsp = STORAGE_POINT_UNSET, \ + .bsp = STORAGE_POINT_UNSET, \ +} + +#define merge_into_aw(aw, t) do { \ + if(!(aw).count) { \ + (aw).count = 1; \ + (aw).min = (aw).max = (aw).sum = (t)->value; \ + (aw).hsp = (t)->highlighted; \ + if(baseline) \ + (aw).bsp = (t)->baseline; \ + } \ + else { \ + (aw).count++; \ + (aw).sum += (t)->value; \ + if((t)->value < (aw).min) \ + (aw).min = (t)->value; \ + if((t)->value > (aw).max) \ + (aw).max = (t)->value; \ + storage_point_merge_to((aw).hsp, (t)->highlighted); \ + if(baseline) \ + storage_point_merge_to((aw).bsp, (t)->baseline); \ + } \ +} while(0) + +static void results_header_to_json_v2(DICTIONARY *results __maybe_unused, BUFFER *wb, struct query_weights_data *qwd, + time_t after, time_t before, + time_t baseline_after, time_t baseline_before, + size_t points, WEIGHTS_METHOD method, + RRDR_TIME_GROUPING group, RRDR_OPTIONS options, uint32_t shifts, + size_t examined_dimensions __maybe_unused, usec_t duration __maybe_unused, + WEIGHTS_STATS *stats, bool group_by) { + + buffer_json_member_add_object(wb, "request"); + buffer_json_member_add_string(wb, "method", weights_method_to_string(method)); + web_client_api_request_v1_data_options_to_buffer_json_array(wb, "options", options); + + buffer_json_member_add_object(wb, "scope"); + buffer_json_member_add_string(wb, "scope_nodes", qwd->qwr->scope_nodes ? qwd->qwr->scope_nodes : "*"); + buffer_json_member_add_string(wb, "scope_contexts", qwd->qwr->scope_contexts ? qwd->qwr->scope_contexts : "*"); + buffer_json_object_close(wb); + + buffer_json_member_add_object(wb, "selectors"); + buffer_json_member_add_string(wb, "nodes", qwd->qwr->nodes ? qwd->qwr->nodes : "*"); + buffer_json_member_add_string(wb, "contexts", qwd->qwr->contexts ? qwd->qwr->contexts : "*"); + buffer_json_member_add_string(wb, "instances", qwd->qwr->instances ? qwd->qwr->instances : "*"); + buffer_json_member_add_string(wb, "dimensions", qwd->qwr->dimensions ? qwd->qwr->dimensions : "*"); + buffer_json_member_add_string(wb, "labels", qwd->qwr->labels ? qwd->qwr->labels : "*"); + buffer_json_member_add_string(wb, "alerts", qwd->qwr->alerts ? qwd->qwr->alerts : "*"); + buffer_json_object_close(wb); + + buffer_json_member_add_object(wb, "window"); + buffer_json_member_add_time_t(wb, "after", qwd->qwr->after); + buffer_json_member_add_time_t(wb, "before", qwd->qwr->before); + buffer_json_member_add_uint64(wb, "points", qwd->qwr->points); + if(qwd->qwr->options & RRDR_OPTION_SELECTED_TIER) + buffer_json_member_add_uint64(wb, "tier", qwd->qwr->tier); + else + buffer_json_member_add_string(wb, "tier", NULL); + buffer_json_object_close(wb); + + if(method == WEIGHTS_METHOD_MC_KS2 || method == WEIGHTS_METHOD_MC_VOLUME) { + buffer_json_member_add_object(wb, "baseline"); + buffer_json_member_add_time_t(wb, "baseline_after", qwd->qwr->baseline_after); + buffer_json_member_add_time_t(wb, "baseline_before", qwd->qwr->baseline_before); + buffer_json_object_close(wb); + } + + buffer_json_member_add_object(wb, "aggregations"); + buffer_json_member_add_object(wb, "time"); + buffer_json_member_add_string(wb, "time_group", time_grouping_tostring(qwd->qwr->time_group_method)); + buffer_json_member_add_string(wb, "time_group_options", qwd->qwr->time_group_options); + buffer_json_object_close(wb); // time + + buffer_json_member_add_array(wb, "metrics"); + buffer_json_add_array_item_object(wb); + { + buffer_json_member_add_array(wb, "group_by"); + buffer_json_group_by_to_array(wb, qwd->qwr->group_by.group_by); + buffer_json_array_close(wb); + +// buffer_json_member_add_array(wb, "group_by_label"); +// buffer_json_array_close(wb); + + buffer_json_member_add_string(wb, "aggregation", group_by_aggregate_function_to_string(qwd->qwr->group_by.aggregation)); + } + buffer_json_object_close(wb); // 1st group by + buffer_json_array_close(wb); // array + buffer_json_object_close(wb); // aggregations + + buffer_json_member_add_uint64(wb, "timeout", qwd->qwr->timeout_ms); + buffer_json_object_close(wb); // request + + buffer_json_member_add_object(wb, "view"); + buffer_json_member_add_string(wb, "format", (group_by)?"grouped":"full"); + buffer_json_member_add_string(wb, "time_group", time_grouping_tostring(group)); + + buffer_json_member_add_object(wb, "window"); + buffer_json_member_add_time_t(wb, "after", after); + buffer_json_member_add_time_t(wb, "before", before); + buffer_json_member_add_time_t(wb, "duration", before - after); + buffer_json_member_add_uint64(wb, "points", points); + buffer_json_object_close(wb); + + if(method == WEIGHTS_METHOD_MC_KS2 || method == WEIGHTS_METHOD_MC_VOLUME) { + buffer_json_member_add_object(wb, "baseline"); + buffer_json_member_add_time_t(wb, "after", baseline_after); + buffer_json_member_add_time_t(wb, "before", baseline_before); + buffer_json_member_add_time_t(wb, "duration", baseline_before - baseline_after); + buffer_json_member_add_uint64(wb, "points", points << shifts); + buffer_json_object_close(wb); + } + + buffer_json_object_close(wb); // view + + buffer_json_member_add_object(wb, "db"); + { + buffer_json_member_add_uint64(wb, "db_queries", stats->db_queries); + buffer_json_member_add_uint64(wb, "query_result_points", stats->result_points); + buffer_json_member_add_uint64(wb, "binary_searches", stats->binary_searches); + buffer_json_member_add_uint64(wb, "db_points_read", stats->db_points); + + buffer_json_member_add_array(wb, "db_points_per_tier"); + { + for (size_t tier = 0; tier < storage_tiers; tier++) + buffer_json_add_array_item_uint64(wb, stats->db_points_per_tier[tier]); + } + buffer_json_array_close(wb); + } + buffer_json_object_close(wb); // db +} + +typedef enum { + WPT_DIMENSION = 0, + WPT_INSTANCE = 1, + WPT_CONTEXT = 2, + WPT_NODE = 3, + WPT_GROUP = 4, +} WEIGHTS_POINT_TYPE; + +struct aggregated_weight { + const char *name; + NETDATA_DOUBLE min; + NETDATA_DOUBLE max; + NETDATA_DOUBLE sum; + size_t count; + STORAGE_POINT hsp; + STORAGE_POINT bsp; +}; + +static inline void storage_point_to_json(BUFFER *wb, WEIGHTS_POINT_TYPE type, ssize_t di, ssize_t ii, ssize_t ci, ssize_t ni, struct aggregated_weight *aw, RRDR_OPTIONS options __maybe_unused, bool baseline) { + if(type != WPT_GROUP) { + buffer_json_add_array_item_array(wb); + buffer_json_add_array_item_uint64(wb, type); // "type" + buffer_json_add_array_item_int64(wb, ni); + if (type != WPT_NODE) { + buffer_json_add_array_item_int64(wb, ci); + if (type != WPT_CONTEXT) { + buffer_json_add_array_item_int64(wb, ii); + if (type != WPT_INSTANCE) + buffer_json_add_array_item_int64(wb, di); + else + buffer_json_add_array_item_string(wb, NULL); + } + else { + buffer_json_add_array_item_string(wb, NULL); + buffer_json_add_array_item_string(wb, NULL); + } + } + else { + buffer_json_add_array_item_string(wb, NULL); + buffer_json_add_array_item_string(wb, NULL); + buffer_json_add_array_item_string(wb, NULL); + } + buffer_json_add_array_item_double(wb, (aw->count) ? aw->sum / (NETDATA_DOUBLE)aw->count : 0.0); // "weight" + } + else { + buffer_json_member_add_array(wb, "v"); + buffer_json_add_array_item_array(wb); + buffer_json_add_array_item_double(wb, aw->min); // "min" + buffer_json_add_array_item_double(wb, (aw->count) ? aw->sum / (NETDATA_DOUBLE)aw->count : 0.0); // "avg" + buffer_json_add_array_item_double(wb, aw->max); // "max" + buffer_json_add_array_item_double(wb, aw->sum); // "sum" + buffer_json_add_array_item_uint64(wb, aw->count); // "count" + buffer_json_array_close(wb); + } + + buffer_json_add_array_item_array(wb); + buffer_json_add_array_item_double(wb, aw->hsp.min); // "min" + buffer_json_add_array_item_double(wb, (aw->hsp.count) ? aw->hsp.sum / (NETDATA_DOUBLE) aw->hsp.count : 0.0); // "avg" + buffer_json_add_array_item_double(wb, aw->hsp.max); // "max" + buffer_json_add_array_item_double(wb, aw->hsp.sum); // "sum" + buffer_json_add_array_item_uint64(wb, aw->hsp.count); // "count" + buffer_json_add_array_item_uint64(wb, aw->hsp.anomaly_count); // "anomaly_count" + buffer_json_array_close(wb); + + if(baseline) { + buffer_json_add_array_item_array(wb); + buffer_json_add_array_item_double(wb, aw->bsp.min); // "min" + buffer_json_add_array_item_double(wb, (aw->bsp.count) ? aw->bsp.sum / (NETDATA_DOUBLE) aw->bsp.count : 0.0); // "avg" + buffer_json_add_array_item_double(wb, aw->bsp.max); // "max" + buffer_json_add_array_item_double(wb, aw->bsp.sum); // "sum" + buffer_json_add_array_item_uint64(wb, aw->bsp.count); // "count" + buffer_json_add_array_item_uint64(wb, aw->bsp.anomaly_count); // "anomaly_count" + buffer_json_array_close(wb); + } + + buffer_json_array_close(wb); +} + +static void multinode_data_schema(BUFFER *wb, RRDR_OPTIONS options __maybe_unused, const char *key, bool baseline, bool group_by) { + buffer_json_member_add_object(wb, key); // schema + + buffer_json_member_add_string(wb, "type", "array"); + buffer_json_member_add_array(wb, "items"); + + if(group_by) { + buffer_json_add_array_item_object(wb); + { + buffer_json_member_add_string(wb, "name", "weight"); + buffer_json_member_add_string(wb, "type", "array"); + buffer_json_member_add_array(wb, "labels"); + { + buffer_json_add_array_item_string(wb, "min"); + buffer_json_add_array_item_string(wb, "avg"); + buffer_json_add_array_item_string(wb, "max"); + buffer_json_add_array_item_string(wb, "sum"); + buffer_json_add_array_item_string(wb, "count"); + } + buffer_json_array_close(wb); + } + buffer_json_object_close(wb); + } + else { + buffer_json_add_array_item_object(wb); + buffer_json_member_add_string(wb, "name", "row_type"); + buffer_json_member_add_string(wb, "type", "integer"); + buffer_json_member_add_array(wb, "value"); + buffer_json_add_array_item_string(wb, "dimension"); + buffer_json_add_array_item_string(wb, "instance"); + buffer_json_add_array_item_string(wb, "context"); + buffer_json_add_array_item_string(wb, "node"); + buffer_json_array_close(wb); + buffer_json_object_close(wb); + + buffer_json_add_array_item_object(wb); + { + buffer_json_member_add_string(wb, "name", "ni"); + buffer_json_member_add_string(wb, "type", "integer"); + buffer_json_member_add_string(wb, "dictionary", "nodes"); + } + buffer_json_object_close(wb); + + buffer_json_add_array_item_object(wb); + { + buffer_json_member_add_string(wb, "name", "ci"); + buffer_json_member_add_string(wb, "type", "integer"); + buffer_json_member_add_string(wb, "dictionary", "contexts"); + } + buffer_json_object_close(wb); + + buffer_json_add_array_item_object(wb); + { + buffer_json_member_add_string(wb, "name", "ii"); + buffer_json_member_add_string(wb, "type", "integer"); + buffer_json_member_add_string(wb, "dictionary", "instances"); + } + buffer_json_object_close(wb); + + buffer_json_add_array_item_object(wb); + { + buffer_json_member_add_string(wb, "name", "di"); + buffer_json_member_add_string(wb, "type", "integer"); + buffer_json_member_add_string(wb, "dictionary", "dimensions"); + } + buffer_json_object_close(wb); + + buffer_json_add_array_item_object(wb); + { + buffer_json_member_add_string(wb, "name", "weight"); + buffer_json_member_add_string(wb, "type", "number"); + } + buffer_json_object_close(wb); + } + + buffer_json_add_array_item_object(wb); + { + buffer_json_member_add_string(wb, "name", "timeframe"); + buffer_json_member_add_string(wb, "type", "array"); + buffer_json_member_add_array(wb, "labels"); + { + buffer_json_add_array_item_string(wb, "min"); + buffer_json_add_array_item_string(wb, "avg"); + buffer_json_add_array_item_string(wb, "max"); + buffer_json_add_array_item_string(wb, "sum"); + buffer_json_add_array_item_string(wb, "count"); + buffer_json_add_array_item_string(wb, "anomaly_count"); + } + buffer_json_array_close(wb); + buffer_json_member_add_object(wb, "calculations"); + buffer_json_member_add_string(wb, "anomaly rate", "anomaly_count * 100 / count"); + buffer_json_object_close(wb); + } + buffer_json_object_close(wb); + + if(baseline) { + buffer_json_add_array_item_object(wb); + { + buffer_json_member_add_string(wb, "name", "baseline timeframe"); + buffer_json_member_add_string(wb, "type", "array"); + buffer_json_member_add_array(wb, "labels"); + { + buffer_json_add_array_item_string(wb, "min"); + buffer_json_add_array_item_string(wb, "avg"); + buffer_json_add_array_item_string(wb, "max"); + buffer_json_add_array_item_string(wb, "sum"); + buffer_json_add_array_item_string(wb, "count"); + buffer_json_add_array_item_string(wb, "anomaly_count"); + } + buffer_json_array_close(wb); + buffer_json_member_add_object(wb, "calculations"); + buffer_json_member_add_string(wb, "anomaly rate", "anomaly_count * 100 / count"); + buffer_json_object_close(wb); + } + buffer_json_object_close(wb); + } + + buffer_json_array_close(wb); // items + buffer_json_object_close(wb); // schema +} + +struct dict_unique_node { + bool existing; + bool exposed; + uint32_t i; + RRDHOST *host; + usec_t duration_ut; +}; + +struct dict_unique_name_units { + bool existing; + bool exposed; + uint32_t i; + const char *units; +}; + +struct dict_unique_id_name { + bool existing; + bool exposed; + uint32_t i; + const char *id; + const char *name; +}; + +static inline struct dict_unique_node *dict_unique_node_add(DICTIONARY *dict, RRDHOST *host, ssize_t *max_id) { + struct dict_unique_node *dun = dictionary_set(dict, host->machine_guid, NULL, sizeof(struct dict_unique_node)); + if(!dun->existing) { + dun->existing = true; + dun->host = host; + dun->i = *max_id; + (*max_id)++; + } + + return dun; +} + +static inline struct dict_unique_name_units *dict_unique_name_units_add(DICTIONARY *dict, const char *name, const char *units, ssize_t *max_id) { + struct dict_unique_name_units *dun = dictionary_set(dict, name, NULL, sizeof(struct dict_unique_name_units)); + if(!dun->existing) { + dun->units = units; + dun->existing = true; + dun->i = *max_id; + (*max_id)++; + } + + return dun; +} + +static inline struct dict_unique_id_name *dict_unique_id_name_add(DICTIONARY *dict, const char *id, const char *name, ssize_t *max_id) { + char key[1024 + 1]; + snprintfz(key, 1024, "%s:%s", id, name); + struct dict_unique_id_name *dun = dictionary_set(dict, key, NULL, sizeof(struct dict_unique_id_name)); + if(!dun->existing) { + dun->existing = true; + dun->i = *max_id; + (*max_id)++; + dun->id = id; + dun->name = name; + } + + return dun; +} + +static size_t registered_results_to_json_multinode_no_group_by( + DICTIONARY *results, BUFFER *wb, + time_t after, time_t before, + time_t baseline_after, time_t baseline_before, + size_t points, WEIGHTS_METHOD method, + RRDR_TIME_GROUPING group, RRDR_OPTIONS options, uint32_t shifts, + size_t examined_dimensions, struct query_weights_data *qwd, + WEIGHTS_STATS *stats, + struct query_versions *versions) { + buffer_json_initialize(wb, "\"", "\"", 0, true, options & RRDR_OPTION_MINIFY); + buffer_json_member_add_uint64(wb, "api", 2); + + results_header_to_json_v2(results, wb, qwd, after, before, baseline_after, baseline_before, + points, method, group, options, shifts, examined_dimensions, + qwd->timings.executed_ut - qwd->timings.received_ut, stats, false); + + version_hashes_api_v2(wb, versions); + + bool baseline = method == WEIGHTS_METHOD_MC_KS2 || method == WEIGHTS_METHOD_MC_VOLUME; + multinode_data_schema(wb, options, "schema", baseline, false); + + DICTIONARY *dict_nodes = dictionary_create_advanced(DICT_OPTION_SINGLE_THREADED | DICT_OPTION_DONT_OVERWRITE_VALUE | DICT_OPTION_FIXED_SIZE, NULL, sizeof(struct dict_unique_node)); + DICTIONARY *dict_contexts = dictionary_create_advanced(DICT_OPTION_SINGLE_THREADED | DICT_OPTION_DONT_OVERWRITE_VALUE | DICT_OPTION_FIXED_SIZE, NULL, sizeof(struct dict_unique_name_units)); + DICTIONARY *dict_instances = dictionary_create_advanced(DICT_OPTION_SINGLE_THREADED | DICT_OPTION_DONT_OVERWRITE_VALUE | DICT_OPTION_FIXED_SIZE, NULL, sizeof(struct dict_unique_id_name)); + DICTIONARY *dict_dimensions = dictionary_create_advanced(DICT_OPTION_SINGLE_THREADED | DICT_OPTION_DONT_OVERWRITE_VALUE | DICT_OPTION_FIXED_SIZE, NULL, sizeof(struct dict_unique_id_name)); + + buffer_json_member_add_array(wb, "result"); + + struct aggregated_weight node_aw = AGGREGATED_WEIGHT_EMPTY, context_aw = AGGREGATED_WEIGHT_EMPTY, instance_aw = AGGREGATED_WEIGHT_EMPTY; + struct register_result *t; + RRDHOST *last_host = NULL; + RRDCONTEXT_ACQUIRED *last_rca = NULL; + RRDINSTANCE_ACQUIRED *last_ria = NULL; + struct dict_unique_name_units *context_dun = NULL; + struct dict_unique_node *node_dun = NULL; + struct dict_unique_id_name *instance_dun = NULL; + struct dict_unique_id_name *dimension_dun = NULL; + ssize_t di = -1, ii = -1, ci = -1, ni = -1; + ssize_t di_max = 0, ii_max = 0, ci_max = 0, ni_max = 0; + size_t total_dimensions = 0; + dfe_start_read(results, t) { + + // close instance + if(t->ria != last_ria && last_ria) { + storage_point_to_json(wb, WPT_INSTANCE, di, ii, ci, ni, &instance_aw, options, baseline); + instance_dun->exposed = true; + last_ria = NULL; + instance_aw = AGGREGATED_WEIGHT_EMPTY; + } + + // close context + if(t->rca != last_rca && last_rca) { + storage_point_to_json(wb, WPT_CONTEXT, di, ii, ci, ni, &context_aw, options, baseline); + context_dun->exposed = true; + last_rca = NULL; + context_aw = AGGREGATED_WEIGHT_EMPTY; + } + + // close node + if(t->host != last_host && last_host) { + storage_point_to_json(wb, WPT_NODE, di, ii, ci, ni, &node_aw, options, baseline); + node_dun->exposed = true; + last_host = NULL; + node_aw = AGGREGATED_WEIGHT_EMPTY; + } + + // open node + if(t->host != last_host) { + last_host = t->host; + node_dun = dict_unique_node_add(dict_nodes, t->host, &ni_max); + ni = node_dun->i; + } + + // open context + if(t->rca != last_rca) { + last_rca = t->rca; + context_dun = dict_unique_name_units_add(dict_contexts, rrdcontext_acquired_id(t->rca), + rrdcontext_acquired_units(t->rca), &ci_max); + ci = context_dun->i; + } + + // open instance + if(t->ria != last_ria) { + last_ria = t->ria; + instance_dun = dict_unique_id_name_add(dict_instances, rrdinstance_acquired_id(t->ria), rrdinstance_acquired_name(t->ria), &ii_max); + ii = instance_dun->i; + } + + dimension_dun = dict_unique_id_name_add(dict_dimensions, rrdmetric_acquired_id(t->rma), rrdmetric_acquired_name(t->rma), &di_max); + di = dimension_dun->i; + + struct aggregated_weight aw = { + .min = t->value, + .max = t->value, + .sum = t->value, + .count = 1, + .hsp = t->highlighted, + .bsp = t->baseline, + }; + + storage_point_to_json(wb, WPT_DIMENSION, di, ii, ci, ni, &aw, options, baseline); + node_dun->exposed = true; + context_dun->exposed = true; + instance_dun->exposed = true; + dimension_dun->exposed = true; + + merge_into_aw(instance_aw, t); + merge_into_aw(context_aw, t); + merge_into_aw(node_aw, t); + + node_dun->duration_ut += t->duration_ut; + total_dimensions++; + } + dfe_done(t); + + // close instance + if(last_ria) { + storage_point_to_json(wb, WPT_INSTANCE, di, ii, ci, ni, &instance_aw, options, baseline); + instance_dun->exposed = true; + } + + // close context + if(last_rca) { + storage_point_to_json(wb, WPT_CONTEXT, di, ii, ci, ni, &context_aw, options, baseline); + context_dun->exposed = true; + } + + // close node + if(last_host) { + storage_point_to_json(wb, WPT_NODE, di, ii, ci, ni, &node_aw, options, baseline); + node_dun->exposed = true; + } + + buffer_json_array_close(wb); // points + + buffer_json_member_add_object(wb, "dictionaries"); + buffer_json_member_add_array(wb, "nodes"); + { + struct dict_unique_node *dun; + dfe_start_read(dict_nodes, dun) { + if(!dun->exposed) + continue; + + buffer_json_add_array_item_object(wb); + buffer_json_node_add_v2(wb, dun->host, dun->i, dun->duration_ut); + buffer_json_object_close(wb); + } + dfe_done(dun); + } + buffer_json_array_close(wb); + + buffer_json_member_add_array(wb, "contexts"); + { + struct dict_unique_name_units *dun; + dfe_start_read(dict_contexts, dun) { + if(!dun->exposed) + continue; + + buffer_json_add_array_item_object(wb); + buffer_json_member_add_string(wb, "id", dun_dfe.name); + buffer_json_member_add_string(wb, "units", dun->units); + buffer_json_member_add_int64(wb, "ci", dun->i); + buffer_json_object_close(wb); + } + dfe_done(dun); + } + buffer_json_array_close(wb); + + buffer_json_member_add_array(wb, "instances"); + { + struct dict_unique_id_name *dun; + dfe_start_read(dict_instances, dun) { + if(!dun->exposed) + continue; + + buffer_json_add_array_item_object(wb); + buffer_json_member_add_string(wb, "id", dun->id); + if(dun->id != dun->name) + buffer_json_member_add_string(wb, "nm", dun->name); + buffer_json_member_add_int64(wb, "ii", dun->i); + buffer_json_object_close(wb); + } + dfe_done(dun); + } + buffer_json_array_close(wb); + + buffer_json_member_add_array(wb, "dimensions"); + { + struct dict_unique_id_name *dun; + dfe_start_read(dict_dimensions, dun) { + if(!dun->exposed) + continue; + + buffer_json_add_array_item_object(wb); + buffer_json_member_add_string(wb, "id", dun->id); + if(dun->id != dun->name) + buffer_json_member_add_string(wb, "nm", dun->name); + buffer_json_member_add_int64(wb, "di", dun->i); + buffer_json_object_close(wb); + } + dfe_done(dun); + } + buffer_json_array_close(wb); + + buffer_json_object_close(wb); //dictionaries + + buffer_json_agents_array_v2(wb, &qwd->timings, 0); + buffer_json_member_add_uint64(wb, "correlated_dimensions", total_dimensions); + buffer_json_member_add_uint64(wb, "total_dimensions_count", examined_dimensions); + buffer_json_finalize(wb); + + dictionary_destroy(dict_nodes); + dictionary_destroy(dict_contexts); + dictionary_destroy(dict_instances); + dictionary_destroy(dict_dimensions); + + return total_dimensions; +} + +static size_t registered_results_to_json_multinode_group_by( + DICTIONARY *results, BUFFER *wb, + time_t after, time_t before, + time_t baseline_after, time_t baseline_before, + size_t points, WEIGHTS_METHOD method, + RRDR_TIME_GROUPING group, RRDR_OPTIONS options, uint32_t shifts, + size_t examined_dimensions, struct query_weights_data *qwd, + WEIGHTS_STATS *stats, + struct query_versions *versions) { + buffer_json_initialize(wb, "\"", "\"", 0, true, options & RRDR_OPTION_MINIFY); + buffer_json_member_add_uint64(wb, "api", 2); + + results_header_to_json_v2(results, wb, qwd, after, before, baseline_after, baseline_before, + points, method, group, options, shifts, examined_dimensions, + qwd->timings.executed_ut - qwd->timings.received_ut, stats, true); + + version_hashes_api_v2(wb, versions); + + bool baseline = method == WEIGHTS_METHOD_MC_KS2 || method == WEIGHTS_METHOD_MC_VOLUME; + multinode_data_schema(wb, options, "v_schema", baseline, true); + + DICTIONARY *group_by = dictionary_create_advanced(DICT_OPTION_SINGLE_THREADED | DICT_OPTION_DONT_OVERWRITE_VALUE | DICT_OPTION_FIXED_SIZE, + NULL, sizeof(struct aggregated_weight)); + + struct register_result *t; + size_t total_dimensions = 0; + BUFFER *key = buffer_create(0, NULL); + BUFFER *name = buffer_create(0, NULL); + dfe_start_read(results, t) { + + buffer_flush(key); + buffer_flush(name); + + if(qwd->qwr->group_by.group_by & RRDR_GROUP_BY_DIMENSION) { + buffer_strcat(key, rrdmetric_acquired_name(t->rma)); + buffer_strcat(name, rrdmetric_acquired_name(t->rma)); + } + if(qwd->qwr->group_by.group_by & RRDR_GROUP_BY_INSTANCE) { + if(buffer_strlen(key)) { + buffer_fast_strcat(key, ",", 1); + buffer_fast_strcat(name, ",", 1); + } + + buffer_strcat(key, rrdinstance_acquired_id(t->ria)); + buffer_strcat(name, rrdinstance_acquired_name(t->ria)); + + if(!(qwd->qwr->group_by.group_by & RRDR_GROUP_BY_NODE)) { + buffer_fast_strcat(key, "@", 1); + buffer_fast_strcat(name, "@", 1); + buffer_strcat(key, t->host->machine_guid); + buffer_strcat(name, rrdhost_hostname(t->host)); + } + } + if(qwd->qwr->group_by.group_by & RRDR_GROUP_BY_NODE) { + if(buffer_strlen(key)) { + buffer_fast_strcat(key, ",", 1); + buffer_fast_strcat(name, ",", 1); + } + + buffer_strcat(key, t->host->machine_guid); + buffer_strcat(name, rrdhost_hostname(t->host)); + } + if(qwd->qwr->group_by.group_by & RRDR_GROUP_BY_CONTEXT) { + if(buffer_strlen(key)) { + buffer_fast_strcat(key, ",", 1); + buffer_fast_strcat(name, ",", 1); + } + + buffer_strcat(key, rrdcontext_acquired_id(t->rca)); + buffer_strcat(name, rrdcontext_acquired_id(t->rca)); + } + if(qwd->qwr->group_by.group_by & RRDR_GROUP_BY_UNITS) { + if(buffer_strlen(key)) { + buffer_fast_strcat(key, ",", 1); + buffer_fast_strcat(name, ",", 1); + } + + buffer_strcat(key, rrdcontext_acquired_units(t->rca)); + buffer_strcat(name, rrdcontext_acquired_units(t->rca)); + } + + struct aggregated_weight *aw = dictionary_set(group_by, buffer_tostring(key), NULL, sizeof(struct aggregated_weight)); + if(!aw->name) { + aw->name = strdupz(buffer_tostring(name)); + aw->min = aw->max = aw->sum = t->value; + aw->count = 1; + aw->hsp = t->highlighted; + aw->bsp = t->baseline; + } + else + merge_into_aw(*aw, t); + + total_dimensions++; + } + dfe_done(t); + buffer_free(key); key = NULL; + buffer_free(name); name = NULL; + + struct aggregated_weight *aw; + buffer_json_member_add_array(wb, "result"); + dfe_start_read(group_by, aw) { + const char *k = aw_dfe.name; + const char *n = aw->name; + + buffer_json_add_array_item_object(wb); + buffer_json_member_add_string(wb, "id", k); + + if(strcmp(k, n) != 0) + buffer_json_member_add_string(wb, "nm", n); + + storage_point_to_json(wb, WPT_GROUP, 0, 0, 0, 0, aw, options, baseline); + buffer_json_object_close(wb); + + freez((void *)aw->name); + } + dfe_done(aw); + buffer_json_array_close(wb); // result + + buffer_json_agents_array_v2(wb, &qwd->timings, 0); + buffer_json_member_add_uint64(wb, "correlated_dimensions", total_dimensions); + buffer_json_member_add_uint64(wb, "total_dimensions_count", examined_dimensions); + buffer_json_finalize(wb); + + dictionary_destroy(group_by); return total_dimensions; } @@ -500,14 +1255,16 @@ NETDATA_DOUBLE *rrd2rrdr_ks2( ONEWAYALLOC *owa, RRDHOST *host, RRDCONTEXT_ACQUIRED *rca, RRDINSTANCE_ACQUIRED *ria, RRDMETRIC_ACQUIRED *rma, time_t after, time_t before, size_t points, RRDR_OPTIONS options, - RRDR_GROUPING group_method, const char *group_options, size_t tier, + RRDR_TIME_GROUPING time_group_method, const char *time_group_options, size_t tier, WEIGHTS_STATS *stats, - size_t *entries + size_t *entries, + STORAGE_POINT *sp ) { NETDATA_DOUBLE *ret = NULL; QUERY_TARGET_REQUEST qtr = { + .version = 1, .host = host, .rca = rca, .ria = ria, @@ -516,25 +1273,27 @@ NETDATA_DOUBLE *rrd2rrdr_ks2( .before = before, .points = points, .options = options, - .group_method = group_method, - .group_options = group_options, + .time_group_method = time_group_method, + .time_group_options = time_group_options, .tier = tier, .query_source = QUERY_SOURCE_API_WEIGHTS, - .priority = STORAGE_PRIORITY_NORMAL, + .priority = STORAGE_PRIORITY_SYNCHRONOUS, }; - RRDR *r = rrd2rrdr(owa, query_target_create(&qtr)); + QUERY_TARGET *qt = query_target_create(&qtr); + RRDR *r = rrd2rrdr(owa, qt); if(!r) goto cleanup; stats->db_queries++; - stats->result_points += r->internal.result_points_generated; - stats->db_points += r->internal.db_points_read; + stats->result_points += r->stats.result_points_generated; + stats->db_points += r->stats.db_points_read; for(size_t tr = 0; tr < storage_tiers ; tr++) - stats->db_points_per_tier[tr] += r->internal.tier_points_read[tr]; + stats->db_points_per_tier[tr] += r->internal.qt->db.tiers[tr].points; - if(r->d != 1) { - error("WEIGHTS: on query '%s' expected 1 dimension in RRDR but got %zu", r->internal.qt->id, r->d); + if(r->d != 1 || r->internal.qt->query.used != 1) { + error("WEIGHTS: on query '%s' expected 1 dimension in RRDR but got %zu r->d and %zu qt->query.used", + r->internal.qt->id, r->d, (size_t)r->internal.qt->query.used); goto cleanup; } @@ -553,6 +1312,9 @@ NETDATA_DOUBLE *rrd2rrdr_ks2( *entries = rrdr_rows(r); ret = onewayalloc_mallocz(owa, sizeof(NETDATA_DOUBLE) * rrdr_rows(r)); + if(sp) + *sp = r->internal.qt->query.array[0].query_points; + // copy the points of the dimension to a contiguous array // there is no need to check for empty values, since empty values are already zero // https://github.com/netdata/netdata/blob/6e3144683a73a2024d51425b20ecfd569034c858/web/api/queries/average/average.c#L41-L43 @@ -560,6 +1322,7 @@ NETDATA_DOUBLE *rrd2rrdr_ks2( cleanup: rrdr_free(owa, r); + query_target_release(qt); return ret; } @@ -570,27 +1333,30 @@ static void rrdset_metric_correlations_ks2( time_t baseline_after, time_t baseline_before, time_t after, time_t before, size_t points, RRDR_OPTIONS options, - RRDR_GROUPING group_method, const char *group_options, size_t tier, + RRDR_TIME_GROUPING time_group_method, const char *time_group_options, size_t tier, uint32_t shifts, WEIGHTS_STATS *stats, bool register_zero ) { options |= RRDR_OPTION_NATURAL_POINTS; + usec_t started_ut = now_monotonic_usec(); ONEWAYALLOC *owa = onewayalloc_create(16 * 1024); size_t high_points = 0; + STORAGE_POINT highlighted_sp; NETDATA_DOUBLE *highlight = rrd2rrdr_ks2( owa, host, rca, ria, rma, after, before, points, - options, group_method, group_options, tier, stats, &high_points); + options, time_group_method, time_group_options, tier, stats, &high_points, &highlighted_sp); if(!highlight) goto cleanup; size_t base_points = 0; + STORAGE_POINT baseline_sp; NETDATA_DOUBLE *baseline = rrd2rrdr_ks2( owa, host, rca, ria, rma, baseline_after, baseline_before, high_points << shifts, - options, group_method, group_options, tier, stats, &base_points); + options, time_group_method, time_group_options, tier, stats, &base_points, &baseline_sp); if(!baseline) goto cleanup; @@ -610,9 +1376,12 @@ static void rrdset_metric_correlations_ks2( prob = 1.0; } + usec_t ended_ut = now_monotonic_usec(); + // to spread the results evenly, 0.0 needs to be the less correlated and 1.0 the most correlated // so, we flip the result of kstwo() - register_result(results, rca, ria, rma, 1.0 - prob, RESULT_IS_BASE_HIGH_RATIO, stats, register_zero); + register_result(results, host, rca, ria, rma, 1.0 - prob, RESULT_IS_BASE_HIGH_RATIO, &highlighted_sp, + &baseline_sp, stats, register_zero, ended_ut - started_ut); } cleanup: @@ -622,8 +1391,8 @@ cleanup: // ---------------------------------------------------------------------------- // VOLUME algorithm functions -static void merge_query_value_to_stats(QUERY_VALUE *qv, WEIGHTS_STATS *stats) { - stats->db_queries++; +static void merge_query_value_to_stats(QUERY_VALUE *qv, WEIGHTS_STATS *stats, size_t queries) { + stats->db_queries += queries; stats->result_points += qv->result_points; stats->db_points += qv->points_read; for(size_t tier = 0; tier < storage_tiers ; tier++) @@ -636,16 +1405,16 @@ static void rrdset_metric_correlations_volume( DICTIONARY *results, time_t baseline_after, time_t baseline_before, time_t after, time_t before, - RRDR_OPTIONS options, RRDR_GROUPING group_method, const char *group_options, + RRDR_OPTIONS options, RRDR_TIME_GROUPING time_group_method, const char *time_group_options, size_t tier, WEIGHTS_STATS *stats, bool register_zero) { options |= RRDR_OPTION_MATCH_IDS | RRDR_OPTION_ABSOLUTE | RRDR_OPTION_NATURAL_POINTS; QUERY_VALUE baseline_average = rrdmetric2value(host, rca, ria, rma, baseline_after, baseline_before, - options, group_method, group_options, tier, 0, - QUERY_SOURCE_API_WEIGHTS, STORAGE_PRIORITY_NORMAL); - merge_query_value_to_stats(&baseline_average, stats); + options, time_group_method, time_group_options, tier, 0, + QUERY_SOURCE_API_WEIGHTS, STORAGE_PRIORITY_SYNCHRONOUS); + merge_query_value_to_stats(&baseline_average, stats, 1); if(!netdata_double_isnumber(baseline_average.value)) { // this means no data for the baseline window, but we may have data for the highlighted one - assume zero @@ -653,9 +1422,9 @@ static void rrdset_metric_correlations_volume( } QUERY_VALUE highlight_average = rrdmetric2value(host, rca, ria, rma, after, before, - options, group_method, group_options, tier, 0, - QUERY_SOURCE_API_WEIGHTS, STORAGE_PRIORITY_NORMAL); - merge_query_value_to_stats(&highlight_average, stats); + options, time_group_method, time_group_options, tier, 0, + QUERY_SOURCE_API_WEIGHTS, STORAGE_PRIORITY_SYNCHRONOUS); + merge_query_value_to_stats(&highlight_average, stats, 1); if(!netdata_double_isnumber(highlight_average.value)) return; @@ -665,12 +1434,17 @@ static void rrdset_metric_correlations_volume( return; } + if((options & RRDR_OPTION_ANOMALY_BIT) && highlight_average.value < baseline_average.value) { + // when working on anomaly bits, we are looking for an increase in the anomaly rate + return; + } + char highlight_countif_options[50 + 1]; snprintfz(highlight_countif_options, 50, "%s" NETDATA_DOUBLE_FORMAT, highlight_average.value < baseline_average.value ? "<" : ">", baseline_average.value); QUERY_VALUE highlight_countif = rrdmetric2value(host, rca, ria, rma, after, before, options, RRDR_GROUPING_COUNTIF, highlight_countif_options, tier, 0, - QUERY_SOURCE_API_WEIGHTS, STORAGE_PRIORITY_NORMAL); - merge_query_value_to_stats(&highlight_countif, stats); + QUERY_SOURCE_API_WEIGHTS, STORAGE_PRIORITY_SYNCHRONOUS); + merge_query_value_to_stats(&highlight_countif, stats, 1); if(!netdata_double_isnumber(highlight_countif.value)) { info("WEIGHTS: highlighted countif query failed, but highlighted average worked - strange..."); @@ -693,31 +1467,104 @@ static void rrdset_metric_correlations_volume( pcent = highlight_countif.value; } - register_result(results, rca, ria, rma, pcent, flags, stats, register_zero); + register_result(results, host, rca, ria, rma, pcent, flags, &highlight_average.sp, &baseline_average.sp, stats, + register_zero, baseline_average.duration_ut + highlight_average.duration_ut + highlight_countif.duration_ut); } // ---------------------------------------------------------------------------- -// ANOMALY RATE algorithm functions +// VALUE / ANOMALY RATE algorithm functions -static void rrdset_weights_anomaly_rate( +static void rrdset_weights_value( RRDHOST *host, RRDCONTEXT_ACQUIRED *rca, RRDINSTANCE_ACQUIRED *ria, RRDMETRIC_ACQUIRED *rma, DICTIONARY *results, time_t after, time_t before, - RRDR_OPTIONS options, RRDR_GROUPING group_method, const char *group_options, + RRDR_OPTIONS options, RRDR_TIME_GROUPING time_group_method, const char *time_group_options, size_t tier, WEIGHTS_STATS *stats, bool register_zero) { - options |= RRDR_OPTION_MATCH_IDS | RRDR_OPTION_ANOMALY_BIT | RRDR_OPTION_NATURAL_POINTS; + options |= RRDR_OPTION_MATCH_IDS | RRDR_OPTION_NATURAL_POINTS; QUERY_VALUE qv = rrdmetric2value(host, rca, ria, rma, after, before, - options, group_method, group_options, tier, 0, - QUERY_SOURCE_API_WEIGHTS, STORAGE_PRIORITY_NORMAL); + options, time_group_method, time_group_options, tier, 0, + QUERY_SOURCE_API_WEIGHTS, STORAGE_PRIORITY_SYNCHRONOUS); - merge_query_value_to_stats(&qv, stats); + merge_query_value_to_stats(&qv, stats, 1); if(netdata_double_isnumber(qv.value)) - register_result(results, rca, ria, rma, qv.value, 0, stats, register_zero); + register_result(results, host, rca, ria, rma, qv.value, 0, &qv.sp, NULL, stats, register_zero, qv.duration_ut); +} + +static void rrdset_weights_multi_dimensional_value(struct query_weights_data *qwd) { + QUERY_TARGET_REQUEST qtr = { + .version = 1, + .scope_nodes = qwd->qwr->scope_nodes, + .scope_contexts = qwd->qwr->scope_contexts, + .nodes = qwd->qwr->nodes, + .contexts = qwd->qwr->contexts, + .instances = qwd->qwr->instances, + .dimensions = qwd->qwr->dimensions, + .labels = qwd->qwr->labels, + .alerts = qwd->qwr->alerts, + .after = qwd->qwr->after, + .before = qwd->qwr->before, + .points = 1, + .options = qwd->qwr->options | RRDR_OPTION_NATURAL_POINTS, + .time_group_method = qwd->qwr->time_group_method, + .time_group_options = qwd->qwr->time_group_options, + .tier = qwd->qwr->tier, + .timeout_ms = qwd->qwr->timeout_ms, + .query_source = QUERY_SOURCE_API_WEIGHTS, + .priority = STORAGE_PRIORITY_NORMAL, + }; + + ONEWAYALLOC *owa = onewayalloc_create(16 * 1024); + QUERY_TARGET *qt = query_target_create(&qtr); + RRDR *r = rrd2rrdr(owa, qt); + + if(!r || rrdr_rows(r) != 1 || !r->d || r->d != r->internal.qt->query.used) + goto cleanup; + + QUERY_VALUE qv = { + .after = r->view.after, + .before = r->view.before, + .points_read = r->stats.db_points_read, + .result_points = r->stats.result_points_generated, + }; + + size_t queries = 0; + for(size_t d = 0; d < r->d ;d++) { + if(!rrdr_dimension_should_be_exposed(r->od[d], qwd->qwr->options)) + continue; + + long i = 0; // only one row + NETDATA_DOUBLE *cn = &r->v[ i * r->d ]; + NETDATA_DOUBLE *ar = &r->ar[ i * r->d ]; + + qv.value = cn[d]; + qv.anomaly_rate = ar[d]; + storage_point_merge_to(qv.sp, r->internal.qt->query.array[d].query_points); + + if(netdata_double_isnumber(qv.value)) { + QUERY_METRIC *qm = query_metric(r->internal.qt, d); + QUERY_DIMENSION *qd = query_dimension(r->internal.qt, qm->link.query_dimension_id); + QUERY_INSTANCE *qi = query_instance(r->internal.qt, qm->link.query_instance_id); + QUERY_CONTEXT *qc = query_context(r->internal.qt, qm->link.query_context_id); + QUERY_NODE *qn = query_node(r->internal.qt, qm->link.query_node_id); + + register_result(qwd->results, qn->rrdhost, qc->rca, qi->ria, qd->rma, qv.value, 0, &qv.sp, + NULL, &qwd->stats, qwd->register_zero, qm->duration_ut); + } + + queries++; + } + + merge_query_value_to_stats(&qv, &qwd->stats, queries); + +cleanup: + rrdr_free(owa, r); + query_target_release(qt); + onewayalloc_destroy(owa); } // ---------------------------------------------------------------------------- @@ -765,13 +1612,15 @@ static size_t spread_results_evenly(DICTIONARY *results, WEIGHTS_STATS *stats) { NETDATA_DOUBLE slots[dimensions]; dimensions = 0; dfe_start_read(results, t) { - if(t->flags & (RESULT_IS_PERCENTAGE_OF_TIME)) + if(t->flags & RESULT_IS_PERCENTAGE_OF_TIME) t->value = t->value * stats->max_base_high_ratio; slots[dimensions++] = t->value; } dfe_done(t); + if(!dimensions) return 0; // Coverity fix + // sort the array with the values of all dimensions qsort(slots, dimensions, sizeof(NETDATA_DOUBLE), compare_netdata_doubles); @@ -805,60 +1654,184 @@ static size_t spread_results_evenly(DICTIONARY *results, WEIGHTS_STATS *stats) { // ---------------------------------------------------------------------------- // The main function -int web_api_v1_weights( - RRDHOST *host, BUFFER *wb, WEIGHTS_METHOD method, WEIGHTS_FORMAT format, - RRDR_GROUPING group, const char *group_options, - time_t baseline_after, time_t baseline_before, - time_t after, time_t before, - size_t points, RRDR_OPTIONS options, SIMPLE_PATTERN *contexts, size_t tier, size_t timeout) { +static ssize_t weights_for_rrdmetric(void *data, RRDHOST *host, RRDCONTEXT_ACQUIRED *rca, RRDINSTANCE_ACQUIRED *ria, RRDMETRIC_ACQUIRED *rma) { + struct query_weights_data *qwd = data; + QUERY_WEIGHTS_REQUEST *qwr = qwd->qwr; + + if(qwd->qwr->interrupt_callback && qwd->qwr->interrupt_callback(qwd->qwr->interrupt_callback_data)) { + qwd->interrupted = true; + return -1; + } + + qwd->examined_dimensions++; + + switch(qwr->method) { + case WEIGHTS_METHOD_VALUE: + rrdset_weights_value( + host, rca, ria, rma, + qwd->results, + qwr->after, qwr->before, + qwr->options, qwr->time_group_method, qwr->time_group_options, qwr->tier, + &qwd->stats, qwd->register_zero + ); + break; + + case WEIGHTS_METHOD_ANOMALY_RATE: + qwr->options |= RRDR_OPTION_ANOMALY_BIT; + rrdset_weights_value( + host, rca, ria, rma, + qwd->results, + qwr->after, qwr->before, + qwr->options, qwr->time_group_method, qwr->time_group_options, qwr->tier, + &qwd->stats, qwd->register_zero + ); + break; + + case WEIGHTS_METHOD_MC_VOLUME: + rrdset_metric_correlations_volume( + host, rca, ria, rma, + qwd->results, + qwr->baseline_after, qwr->baseline_before, + qwr->after, qwr->before, + qwr->options, qwr->time_group_method, qwr->time_group_options, qwr->tier, + &qwd->stats, qwd->register_zero + ); + break; + + default: + case WEIGHTS_METHOD_MC_KS2: + rrdset_metric_correlations_ks2( + host, rca, ria, rma, + qwd->results, + qwr->baseline_after, qwr->baseline_before, + qwr->after, qwr->before, qwr->points, + qwr->options, qwr->time_group_method, qwr->time_group_options, qwr->tier, qwd->shifts, + &qwd->stats, qwd->register_zero + ); + break; + } + + qwd->timings.executed_ut = now_monotonic_usec(); + if(qwd->timings.executed_ut - qwd->timings.received_ut > qwd->timeout_us) { + qwd->timed_out = true; + return -1; + } + + return 1; +} + +static ssize_t weights_do_context_callback(void *data, RRDCONTEXT_ACQUIRED *rca, bool queryable_context) { + if(!queryable_context) + return false; + + struct query_weights_data *qwd = data; + + bool has_retention = false; + switch(qwd->qwr->method) { + case WEIGHTS_METHOD_VALUE: + case WEIGHTS_METHOD_ANOMALY_RATE: + has_retention = rrdcontext_retention_match(rca, qwd->qwr->after, qwd->qwr->before); + break; + + case WEIGHTS_METHOD_MC_KS2: + case WEIGHTS_METHOD_MC_VOLUME: + has_retention = rrdcontext_retention_match(rca, qwd->qwr->after, qwd->qwr->before); + if(has_retention) + has_retention = rrdcontext_retention_match(rca, qwd->qwr->baseline_after, qwd->qwr->baseline_before); + break; + } + + if(!has_retention) + return 0; + + ssize_t ret = weights_foreach_rrdmetric_in_context(rca, + qwd->instances_sp, + NULL, + qwd->labels_sp, + qwd->alerts_sp, + qwd->dimensions_sp, + true, true, qwd->qwr->version, + weights_for_rrdmetric, qwd); + return ret; +} + +ssize_t weights_do_node_callback(void *data, RRDHOST *host, bool queryable) { + if(!queryable) + return 0; - WEIGHTS_STATS stats = {}; + struct query_weights_data *qwd = data; + + ssize_t ret = query_scope_foreach_context(host, qwd->qwr->scope_contexts, + qwd->scope_contexts_sp, qwd->contexts_sp, + weights_do_context_callback, queryable, qwd); + + return ret; +} + +int web_api_v12_weights(BUFFER *wb, QUERY_WEIGHTS_REQUEST *qwr) { - DICTIONARY *results = register_result_init(); - DICTIONARY *metrics = NULL; char *error = NULL; int resp = HTTP_RESP_OK; // if the user didn't give a timeout // assume 60 seconds - if(!timeout) - timeout = 60 * MSEC_PER_SEC; + if(!qwr->timeout_ms) + qwr->timeout_ms = 5 * 60 * MSEC_PER_SEC; // if the timeout is less than 1 second // make it at least 1 second - if(timeout < (long)(1 * MSEC_PER_SEC)) - timeout = 1 * MSEC_PER_SEC; - - usec_t timeout_usec = timeout * USEC_PER_MS; - usec_t started_usec = now_realtime_usec(); + if(qwr->timeout_ms < (long)(1 * MSEC_PER_SEC)) + qwr->timeout_ms = 1 * MSEC_PER_SEC; + + struct query_weights_data qwd = { + .qwr = qwr, + + .scope_nodes_sp = string_to_simple_pattern(qwr->scope_nodes), + .scope_contexts_sp = string_to_simple_pattern(qwr->scope_contexts), + .nodes_sp = string_to_simple_pattern(qwr->nodes), + .contexts_sp = string_to_simple_pattern(qwr->contexts), + .instances_sp = string_to_simple_pattern(qwr->instances), + .dimensions_sp = string_to_simple_pattern(qwr->dimensions), + .labels_sp = string_to_simple_pattern(qwr->labels), + .alerts_sp = string_to_simple_pattern(qwr->alerts), + .timeout_us = qwr->timeout_ms * USEC_PER_MS, + .timed_out = false, + .examined_dimensions = 0, + .register_zero = true, + .results = register_result_init(), + .stats = {}, + .shifts = 0, + .timings = { + .received_ut = now_monotonic_usec(), + } + }; - if(!rrdr_relative_window_to_absolute(&after, &before)) + if(!rrdr_relative_window_to_absolute(&qwr->after, &qwr->before, NULL)) buffer_no_cacheable(wb); - if (before <= after) { + if (qwr->before <= qwr->after) { resp = HTTP_RESP_BAD_REQUEST; error = "Invalid selected time-range."; goto cleanup; } - uint32_t shifts = 0; - if(method == WEIGHTS_METHOD_MC_KS2 || method == WEIGHTS_METHOD_MC_VOLUME) { - if(!points) points = 500; + if(qwr->method == WEIGHTS_METHOD_MC_KS2 || qwr->method == WEIGHTS_METHOD_MC_VOLUME) { + if(!qwr->points) qwr->points = 500; - if(baseline_before <= API_RELATIVE_TIME_MAX) - baseline_before += after; + if(qwr->baseline_before <= API_RELATIVE_TIME_MAX) + qwr->baseline_before += qwr->after; - rrdr_relative_window_to_absolute(&baseline_after, &baseline_before); + rrdr_relative_window_to_absolute(&qwr->baseline_after, &qwr->baseline_before, NULL); - if (baseline_before <= baseline_after) { + if (qwr->baseline_before <= qwr->baseline_after) { resp = HTTP_RESP_BAD_REQUEST; error = "Invalid baseline time-range."; goto cleanup; } // baseline should be a power of two multiple of highlight - long long base_delta = baseline_before - baseline_after; - long long high_delta = before - after; + long long base_delta = qwr->baseline_before - qwr->baseline_after; + long long high_delta = qwr->before - qwr->after; uint32_t multiplier = (uint32_t)round((double)base_delta / (double)high_delta); // check if the multiplier is a power of two @@ -880,138 +1853,146 @@ int web_api_v1_weights( // we need to do, to divide baseline numbers to match // the highlight ones while(multiplier > 1) { - shifts++; + qwd.shifts++; multiplier = multiplier >> 1; } // if the baseline size will not comply to MAX_POINTS // lower the window of the baseline - while(shifts && (points << shifts) > MAX_POINTS) - shifts--; + while(qwd.shifts && (qwr->points << qwd.shifts) > MAX_POINTS) + qwd.shifts--; // if the baseline size still does not comply to MAX_POINTS // lower the resolution of the highlight and the baseline - while((points << shifts) > MAX_POINTS) - points = points >> 1; + while((qwr->points << qwd.shifts) > MAX_POINTS) + qwr->points = qwr->points >> 1; - if(points < 15) { + if(qwr->points < 15) { resp = HTTP_RESP_BAD_REQUEST; error = "Too few points available, at least 15 are needed."; goto cleanup; } // adjust the baseline to be multiplier times bigger than the highlight - baseline_after = baseline_before - (high_delta << shifts); + qwr->baseline_after = qwr->baseline_before - (high_delta << qwd.shifts); } - size_t examined_dimensions = 0; + if(qwr->options & RRDR_OPTION_NONZERO) { + qwd.register_zero = false; - bool register_zero = true; - if(options & RRDR_OPTION_NONZERO) { - register_zero = false; - options &= ~RRDR_OPTION_NONZERO; + // remove it to run the queries without it + qwr->options &= ~RRDR_OPTION_NONZERO; } - metrics = rrdcontext_all_metrics_to_dict(host, contexts); - struct metric_entry *me; - - // for every metric_entry in the dictionary - dfe_start_read(metrics, me) { - usec_t now_usec = now_realtime_usec(); - if(now_usec - started_usec > timeout_usec) { - error = "timed out"; - resp = HTTP_RESP_GATEWAY_TIMEOUT; - goto cleanup; + if(qwr->host && qwr->version == 1) + weights_do_node_callback(&qwd, qwr->host, true); + else { + if((qwd.qwr->method == WEIGHTS_METHOD_VALUE || qwd.qwr->method == WEIGHTS_METHOD_ANOMALY_RATE) && (qwd.contexts_sp || qwd.scope_contexts_sp)) { + rrdset_weights_multi_dimensional_value(&qwd); } - - examined_dimensions++; - - switch(method) { - case WEIGHTS_METHOD_ANOMALY_RATE: - options |= RRDR_OPTION_ANOMALY_BIT; - rrdset_weights_anomaly_rate( - host, - me->rca, me->ria, me->rma, - results, - after, before, - options, group, group_options, tier, - &stats, register_zero - ); - break; - - case WEIGHTS_METHOD_MC_VOLUME: - rrdset_metric_correlations_volume( - host, - me->rca, me->ria, me->rma, - results, - baseline_after, baseline_before, - after, before, - options, group, group_options, tier, - &stats, register_zero - ); - break; - - default: - case WEIGHTS_METHOD_MC_KS2: - rrdset_metric_correlations_ks2( - host, - me->rca, me->ria, me->rma, - results, - baseline_after, baseline_before, - after, before, points, - options, group, group_options, tier, shifts, - &stats, register_zero - ); - break; + else { + query_scope_foreach_host(qwd.scope_nodes_sp, qwd.nodes_sp, + weights_do_node_callback, &qwd, + &qwd.versions, + NULL); } } - dfe_done(me); - if(!register_zero) - options |= RRDR_OPTION_NONZERO; + if(!qwd.register_zero) { + // put it back, to show it in the response + qwr->options |= RRDR_OPTION_NONZERO; + } + + if(qwd.timed_out) { + error = "timed out"; + resp = HTTP_RESP_GATEWAY_TIMEOUT; + goto cleanup; + } + + if(qwd.interrupted) { + error = "interrupted"; + resp = HTTP_RESP_BACKEND_FETCH_FAILED; + goto cleanup; + } + + if(!qwd.register_zero) + qwr->options |= RRDR_OPTION_NONZERO; - if(!(options & RRDR_OPTION_RETURN_RAW)) - spread_results_evenly(results, &stats); + if(!(qwr->options & RRDR_OPTION_RETURN_RAW) && qwr->method != WEIGHTS_METHOD_VALUE) + spread_results_evenly(qwd.results, &qwd.stats); - usec_t ended_usec = now_realtime_usec(); + usec_t ended_usec = qwd.timings.executed_ut = now_monotonic_usec(); // generate the json output we need buffer_flush(wb); size_t added_dimensions = 0; - switch(format) { + switch(qwr->format) { case WEIGHTS_FORMAT_CHARTS: added_dimensions = registered_results_to_json_charts( - results, wb, - after, before, - baseline_after, baseline_before, - points, method, group, options, shifts, - examined_dimensions, - ended_usec - started_usec, &stats); + qwd.results, wb, + qwr->after, qwr->before, + qwr->baseline_after, qwr->baseline_before, + qwr->points, qwr->method, qwr->time_group_method, qwr->options, qwd.shifts, + qwd.examined_dimensions, + ended_usec - qwd.timings.received_ut, &qwd.stats); break; - default: case WEIGHTS_FORMAT_CONTEXTS: added_dimensions = registered_results_to_json_contexts( - results, wb, - after, before, - baseline_after, baseline_before, - points, method, group, options, shifts, - examined_dimensions, - ended_usec - started_usec, &stats); + qwd.results, wb, + qwr->after, qwr->before, + qwr->baseline_after, qwr->baseline_before, + qwr->points, qwr->method, qwr->time_group_method, qwr->options, qwd.shifts, + qwd.examined_dimensions, + ended_usec - qwd.timings.received_ut, &qwd.stats); + break; + + default: + case WEIGHTS_FORMAT_MULTINODE: + // we don't support these groupings in weights + qwr->group_by.group_by &= ~(RRDR_GROUP_BY_LABEL|RRDR_GROUP_BY_SELECTED|RRDR_GROUP_BY_PERCENTAGE_OF_INSTANCE); + if(qwr->group_by.group_by == RRDR_GROUP_BY_NONE) { + added_dimensions = + registered_results_to_json_multinode_no_group_by( + qwd.results, wb, + qwr->after, qwr->before, + qwr->baseline_after, qwr->baseline_before, + qwr->points, qwr->method, qwr->time_group_method, qwr->options, qwd.shifts, + qwd.examined_dimensions, + &qwd, &qwd.stats, &qwd.versions); + } + else { + added_dimensions = + registered_results_to_json_multinode_group_by( + qwd.results, wb, + qwr->after, qwr->before, + qwr->baseline_after, qwr->baseline_before, + qwr->points, qwr->method, qwr->time_group_method, qwr->options, qwd.shifts, + qwd.examined_dimensions, + &qwd, &qwd.stats, &qwd.versions); + } break; } - if(!added_dimensions) { + if(!added_dimensions && qwr->version < 2) { error = "no results produced."; resp = HTTP_RESP_NOT_FOUND; } cleanup: - if(metrics) dictionary_destroy(metrics); - if(results) register_result_destroy(results); + simple_pattern_free(qwd.scope_nodes_sp); + simple_pattern_free(qwd.scope_contexts_sp); + simple_pattern_free(qwd.nodes_sp); + simple_pattern_free(qwd.contexts_sp); + simple_pattern_free(qwd.instances_sp); + simple_pattern_free(qwd.dimensions_sp); + simple_pattern_free(qwd.labels_sp); + simple_pattern_free(qwd.alerts_sp); + + register_result_destroy(qwd.results); if(error) { buffer_flush(wb); diff --git a/web/api/queries/weights.h b/web/api/queries/weights.h index 50d8634ef..66bea6ab2 100644 --- a/web/api/queries/weights.h +++ b/web/api/queries/weights.h @@ -9,22 +9,57 @@ typedef enum { WEIGHTS_METHOD_MC_KS2 = 1, WEIGHTS_METHOD_MC_VOLUME = 2, WEIGHTS_METHOD_ANOMALY_RATE = 3, + WEIGHTS_METHOD_VALUE = 4, } WEIGHTS_METHOD; typedef enum { WEIGHTS_FORMAT_CHARTS = 1, WEIGHTS_FORMAT_CONTEXTS = 2, + WEIGHTS_FORMAT_MULTINODE = 3, } WEIGHTS_FORMAT; extern int enable_metric_correlations; extern int metric_correlations_version; extern WEIGHTS_METHOD default_metric_correlations_method; -int web_api_v1_weights (RRDHOST *host, BUFFER *wb, WEIGHTS_METHOD method, WEIGHTS_FORMAT format, - RRDR_GROUPING group, const char *group_options, - time_t baseline_after, time_t baseline_before, - time_t after, time_t before, - size_t points, RRDR_OPTIONS options, SIMPLE_PATTERN *contexts, size_t tier, size_t timeout); +typedef bool (*weights_interrupt_callback_t)(void *data); + +typedef struct query_weights_request { + size_t version; + RRDHOST *host; + const char *scope_nodes; + const char *scope_contexts; + const char *nodes; + const char *contexts; + const char *instances; + const char *dimensions; + const char *labels; + const char *alerts; + + struct { + RRDR_GROUP_BY group_by; + char *group_by_label; + RRDR_GROUP_BY_FUNCTION aggregation; + } group_by; + + WEIGHTS_METHOD method; + WEIGHTS_FORMAT format; + RRDR_TIME_GROUPING time_group_method; + const char *time_group_options; + time_t baseline_after; + time_t baseline_before; + time_t after; + time_t before; + size_t points; + RRDR_OPTIONS options; + size_t tier; + time_t timeout_ms; + + weights_interrupt_callback_t interrupt_callback; + void *interrupt_callback_data; +} QUERY_WEIGHTS_REQUEST; + +int web_api_v12_weights(BUFFER *wb, QUERY_WEIGHTS_REQUEST *qwr); WEIGHTS_METHOD weights_string_to_method(const char *method); const char *weights_method_to_string(WEIGHTS_METHOD method); diff --git a/web/api/web_api.c b/web/api/web_api.c new file mode 100644 index 000000000..7c1d0fa09 --- /dev/null +++ b/web/api/web_api.c @@ -0,0 +1,216 @@ +// SPDX-License-Identifier: GPL-3.0-or-later + +#include "web_api.h" + +int web_client_api_request_vX(RRDHOST *host, struct web_client *w, char *url_path_endpoint, struct web_api_command *api_commands) { + if(unlikely(!url_path_endpoint || !*url_path_endpoint)) { + buffer_flush(w->response.data); + buffer_sprintf(w->response.data, "Which API command?"); + return HTTP_RESP_BAD_REQUEST; + } + + uint32_t hash = simple_hash(url_path_endpoint); + + for(int i = 0; api_commands[i].command ; i++) { + if(unlikely(hash == api_commands[i].hash && !strcmp(url_path_endpoint, api_commands[i].command))) { + if(unlikely(api_commands[i].acl != WEB_CLIENT_ACL_NOCHECK) && !(w->acl & api_commands[i].acl)) + return web_client_permission_denied(w); + + char *query_string = (char *)buffer_tostring(w->url_query_string_decoded); + + if(*query_string == '?') + query_string = &query_string[1]; + + return api_commands[i].callback(host, w, query_string); + } + } + + buffer_flush(w->response.data); + buffer_strcat(w->response.data, "Unsupported API command: "); + buffer_strcat_htmlescape(w->response.data, url_path_endpoint); + return HTTP_RESP_NOT_FOUND; +} + +RRDCONTEXT_TO_JSON_OPTIONS rrdcontext_to_json_parse_options(char *o) { + RRDCONTEXT_TO_JSON_OPTIONS options = RRDCONTEXT_OPTION_NONE; + char *tok; + + while(o && *o && (tok = strsep_skip_consecutive_separators(&o, ", |"))) { + if(!*tok) continue; + + if(!strcmp(tok, "full") || !strcmp(tok, "all")) + options |= RRDCONTEXT_OPTIONS_ALL; + else if(!strcmp(tok, "charts") || !strcmp(tok, "instances")) + options |= RRDCONTEXT_OPTION_SHOW_INSTANCES; + else if(!strcmp(tok, "dimensions") || !strcmp(tok, "metrics")) + options |= RRDCONTEXT_OPTION_SHOW_METRICS; + else if(!strcmp(tok, "queue")) + options |= RRDCONTEXT_OPTION_SHOW_QUEUED; + else if(!strcmp(tok, "flags")) + options |= RRDCONTEXT_OPTION_SHOW_FLAGS; + else if(!strcmp(tok, "uuids")) + options |= RRDCONTEXT_OPTION_SHOW_UUIDS; + else if(!strcmp(tok, "deleted")) + options |= RRDCONTEXT_OPTION_SHOW_DELETED; + else if(!strcmp(tok, "labels")) + options |= RRDCONTEXT_OPTION_SHOW_LABELS; + else if(!strcmp(tok, "deepscan")) + options |= RRDCONTEXT_OPTION_DEEPSCAN; + else if(!strcmp(tok, "hidden")) + options |= RRDCONTEXT_OPTION_SHOW_HIDDEN; + } + + return options; +} + +int web_client_api_request_weights(RRDHOST *host, struct web_client *w, char *url, WEIGHTS_METHOD method, WEIGHTS_FORMAT format, size_t api_version) { + if (!netdata_ready) + return HTTP_RESP_BACKEND_FETCH_FAILED; + + time_t baseline_after = 0, baseline_before = 0, after = 0, before = 0; + size_t points = 0; + RRDR_OPTIONS options = 0; + RRDR_TIME_GROUPING time_group_method = RRDR_GROUPING_AVERAGE; + time_t timeout_ms = 0; + size_t tier = 0; + const char *time_group_options = NULL, *scope_contexts = NULL, *scope_nodes = NULL, *contexts = NULL, *nodes = NULL, + *instances = NULL, *dimensions = NULL, *labels = NULL, *alerts = NULL; + + struct group_by_pass group_by = { + .group_by = RRDR_GROUP_BY_NONE, + .group_by_label = NULL, + .aggregation = RRDR_GROUP_BY_FUNCTION_AVERAGE, + }; + + while (url) { + char *value = strsep_skip_consecutive_separators(&url, "&"); + if (!value || !*value) + continue; + + char *name = strsep_skip_consecutive_separators(&value, "="); + if (!name || !*name) + continue; + if (!value || !*value) + continue; + + if (!strcmp(name, "baseline_after")) + baseline_after = str2l(value); + + else if (!strcmp(name, "baseline_before")) + baseline_before = str2l(value); + + else if (!strcmp(name, "after") || !strcmp(name, "highlight_after")) + after = str2l(value); + + else if (!strcmp(name, "before") || !strcmp(name, "highlight_before")) + before = str2l(value); + + else if (!strcmp(name, "points") || !strcmp(name, "max_points")) + points = str2ul(value); + + else if (!strcmp(name, "timeout")) + timeout_ms = str2l(value); + + else if((api_version == 1 && !strcmp(name, "group")) || (api_version >= 2 && !strcmp(name, "time_group"))) + time_group_method = time_grouping_parse(value, RRDR_GROUPING_AVERAGE); + + else if((api_version == 1 && !strcmp(name, "group_options")) || (api_version >= 2 && !strcmp(name, "time_group_options"))) + time_group_options = value; + + else if(!strcmp(name, "options")) + options |= web_client_api_request_v1_data_options(value); + + else if(!strcmp(name, "method")) + method = weights_string_to_method(value); + + else if(api_version == 1 && (!strcmp(name, "context") || !strcmp(name, "contexts"))) + scope_contexts = value; + + else if(api_version >= 2 && !strcmp(name, "scope_nodes")) scope_nodes = value; + else if(api_version >= 2 && !strcmp(name, "scope_contexts")) scope_contexts = value; + else if(api_version >= 2 && !strcmp(name, "nodes")) nodes = value; + else if(api_version >= 2 && !strcmp(name, "contexts")) contexts = value; + else if(api_version >= 2 && !strcmp(name, "instances")) instances = value; + else if(api_version >= 2 && !strcmp(name, "dimensions")) dimensions = value; + else if(api_version >= 2 && !strcmp(name, "labels")) labels = value; + else if(api_version >= 2 && !strcmp(name, "alerts")) alerts = value; + else if(api_version >= 2 && (!strcmp(name, "group_by") || !strcmp(name, "group_by[0]"))) { + group_by.group_by = group_by_parse(value); + } + else if(api_version >= 2 && (!strcmp(name, "group_by_label") || !strcmp(name, "group_by_label[0]"))) { + group_by.group_by_label = value; + } + else if(api_version >= 2 && (!strcmp(name, "aggregation") || !strcmp(name, "aggregation[0]"))) { + group_by.aggregation = group_by_aggregate_function_parse(value); + } + + else if(!strcmp(name, "tier")) { + tier = str2ul(value); + if(tier < storage_tiers) + options |= RRDR_OPTION_SELECTED_TIER; + else + tier = 0; + } + } + + if(options == 0) + // the user did not set any options + options = RRDR_OPTION_NOT_ALIGNED | RRDR_OPTION_NULL2ZERO | RRDR_OPTION_NONZERO; + else + // the user set some options, add also these + options |= RRDR_OPTION_NOT_ALIGNED | RRDR_OPTION_NULL2ZERO; + + if(options & RRDR_OPTION_PERCENTAGE) + options |= RRDR_OPTION_ABSOLUTE; + + if(options & RRDR_OPTION_DEBUG) + options &= ~RRDR_OPTION_MINIFY; + + BUFFER *wb = w->response.data; + buffer_flush(wb); + wb->content_type = CT_APPLICATION_JSON; + + QUERY_WEIGHTS_REQUEST qwr = { + .version = api_version, + .host = (api_version == 1) ? NULL : host, + .scope_nodes = scope_nodes, + .scope_contexts = scope_contexts, + .nodes = nodes, + .contexts = contexts, + .instances = instances, + .dimensions = dimensions, + .labels = labels, + .alerts = alerts, + .group_by = { + .group_by = group_by.group_by, + .group_by_label = group_by.group_by_label, + .aggregation = group_by.aggregation, + }, + .method = method, + .format = format, + .time_group_method = time_group_method, + .time_group_options = time_group_options, + .baseline_after = baseline_after, + .baseline_before = baseline_before, + .after = after, + .before = before, + .points = points, + .options = options, + .tier = tier, + .timeout_ms = timeout_ms, + + .interrupt_callback = web_client_interrupt_callback, + .interrupt_callback_data = w, + }; + + return web_api_v12_weights(wb, &qwr); +} + +bool web_client_interrupt_callback(void *data) { + struct web_client *w = data; + + if(w->interrupt.callback) + return w->interrupt.callback(w, w->interrupt.callback_data); + + return sock_has_output_error(w->ofd); +} diff --git a/web/api/web_api.h b/web/api/web_api.h new file mode 100644 index 000000000..0ca91841f --- /dev/null +++ b/web/api/web_api.h @@ -0,0 +1,39 @@ +// SPDX-License-Identifier: GPL-3.0-or-later + +#ifndef NETDATA_WEB_API_H +#define NETDATA_WEB_API_H 1 + +#include "daemon/common.h" +#include "web/api/badges/web_buffer_svg.h" +#include "web/api/formatters/rrd2json.h" +#include "web/api/health/health_cmdapi.h" +#include "web/api/queries/weights.h" + +struct web_api_command { + const char *command; + uint32_t hash; + WEB_CLIENT_ACL acl; + int (*callback)(RRDHOST *host, struct web_client *w, char *url); +}; + +struct web_client; + +int web_client_api_request_vX(RRDHOST *host, struct web_client *w, char *url_path_endpoint, struct web_api_command *api_commands); + +static inline void fix_google_param(char *s) { + if(unlikely(!s || !*s)) return; + + for( ; *s ;s++) { + if(!isalnum(*s) && *s != '.' && *s != '_' && *s != '-') + *s = '_'; + } +} + +int web_client_api_request_weights(RRDHOST *host, struct web_client *w, char *url, WEIGHTS_METHOD method, WEIGHTS_FORMAT format, size_t api_version); + +bool web_client_interrupt_callback(void *data); + +#include "web_api_v1.h" +#include "web_api_v2.h" + +#endif //NETDATA_WEB_API_H diff --git a/web/api/web_api_v1.c b/web/api/web_api_v1.c index 1b38a33b1..6e23549d4 100644 --- a/web/api/web_api_v1.c +++ b/web/api/web_api_v1.c @@ -41,7 +41,12 @@ static struct { , {"natural-points" , 0 , RRDR_OPTION_NATURAL_POINTS} , {"virtual-points" , 0 , RRDR_OPTION_VIRTUAL_POINTS} , {"all-dimensions" , 0 , RRDR_OPTION_ALL_DIMENSIONS} - , {"plan" , 0 , RRDR_OPTION_SHOW_PLAN} + , {"details" , 0 , RRDR_OPTION_SHOW_DETAILS} + , {"debug" , 0 , RRDR_OPTION_DEBUG} + , {"plan" , 0 , RRDR_OPTION_DEBUG} + , {"minify" , 0 , RRDR_OPTION_MINIFY} + , {"group-by-labels" , 0 , RRDR_OPTION_GROUP_BY_LABELS} + , {"label-quotes" , 0 , RRDR_OPTION_LABEL_QUOTES} , {NULL , 0 , 0} }; @@ -53,6 +58,7 @@ static struct { { DATASOURCE_FORMAT_DATATABLE_JSON , 0 , DATASOURCE_DATATABLE_JSON} , {DATASOURCE_FORMAT_DATATABLE_JSONP, 0 , DATASOURCE_DATATABLE_JSONP} , {DATASOURCE_FORMAT_JSON , 0 , DATASOURCE_JSON} + , {DATASOURCE_FORMAT_JSON2 , 0 , DATASOURCE_JSON2} , {DATASOURCE_FORMAT_JSONP , 0 , DATASOURCE_JSONP} , {DATASOURCE_FORMAT_SSV , 0 , DATASOURCE_SSV} , {DATASOURCE_FORMAT_CSV , 0 , DATASOURCE_CSV} @@ -63,7 +69,9 @@ static struct { , {DATASOURCE_FORMAT_SSV_COMMA , 0 , DATASOURCE_SSV_COMMA} , {DATASOURCE_FORMAT_CSV_JSON_ARRAY , 0 , DATASOURCE_CSV_JSON_ARRAY} , {DATASOURCE_FORMAT_CSV_MARKDOWN , 0 , DATASOURCE_CSV_MARKDOWN} - , { NULL, 0, 0} + + // terminator + , {NULL, 0, 0} }; static struct { @@ -92,7 +100,7 @@ void web_client_api_v1_init(void) { for(i = 0; api_v1_data_google_formats[i].name ; i++) api_v1_data_google_formats[i].hash = simple_hash(api_v1_data_google_formats[i].name); - web_client_api_v1_init_grouping(); + time_grouping_init(); uuid_t uuid; @@ -170,7 +178,7 @@ inline RRDR_OPTIONS web_client_api_request_v1_data_options(char *o) { RRDR_OPTIONS ret = 0x00000000; char *tok; - while(o && *o && (tok = mystrsep(&o, ", |"))) { + while(o && *o && (tok = strsep_skip_consecutive_separators(&o, ", |"))) { if(!*tok) continue; uint32_t hash = simple_hash(tok); @@ -186,20 +194,20 @@ inline RRDR_OPTIONS web_client_api_request_v1_data_options(char *o) { return ret; } -void web_client_api_request_v1_data_options_to_buffer(BUFFER *wb, RRDR_OPTIONS options) { +void web_client_api_request_v1_data_options_to_buffer_json_array(BUFFER *wb, const char *key, RRDR_OPTIONS options) { + buffer_json_member_add_array(wb, key); + RRDR_OPTIONS used = 0; // to prevent adding duplicates - int added = 0; for(int i = 0; api_v1_data_options[i].name ; i++) { if (unlikely((api_v1_data_options[i].value & options) && !(api_v1_data_options[i].value & used))) { const char *name = api_v1_data_options[i].name; used |= api_v1_data_options[i].value; - if(added) buffer_strcat(wb, ","); - buffer_strcat(wb, name); - - added++; + buffer_json_add_array_item_string(wb, name); } } + + buffer_json_array_close(wb); } void web_client_api_request_v1_data_options_to_string(char *buf, size_t size, RRDR_OPTIONS options) { @@ -254,11 +262,11 @@ inline uint32_t web_client_api_request_v1_data_google_format(char *name) { int web_client_api_request_v1_alarms_select (char *url) { int all = 0; while(url) { - char *value = mystrsep(&url, "&"); + char *value = strsep_skip_consecutive_separators(&url, "&"); if (!value || !*value) continue; - if(!strcmp(value, "all")) all = 1; - else if(!strcmp(value, "active")) all = 0; + if(!strcmp(value, "all") || !strcmp(value, "all=true")) all = 1; + else if(!strcmp(value, "active") || !strcmp(value, "active=true")) all = 0; } return all; @@ -268,7 +276,7 @@ inline int web_client_api_request_v1_alarms(RRDHOST *host, struct web_client *w, int all = web_client_api_request_v1_alarms_select(url); buffer_flush(w->response.data); - w->response.data->contenttype = CT_APPLICATION_JSON; + w->response.data->content_type = CT_APPLICATION_JSON; health_alarms2json(host, w->response.data, all); buffer_no_cacheable(w->response.data); return HTTP_RESP_OK; @@ -278,7 +286,7 @@ inline int web_client_api_request_v1_alarms_values(RRDHOST *host, struct web_cli int all = web_client_api_request_v1_alarms_select(url); buffer_flush(w->response.data); - w->response.data->contenttype = CT_APPLICATION_JSON; + w->response.data->content_type = CT_APPLICATION_JSON; health_alarms_values2json(host, w->response.data, all); buffer_no_cacheable(w->response.data); return HTTP_RESP_OK; @@ -292,10 +300,10 @@ inline int web_client_api_request_v1_alarm_count(RRDHOST *host, struct web_clien buffer_sprintf(w->response.data, "["); while(url) { - char *value = mystrsep(&url, "&"); + char *value = strsep_skip_consecutive_separators(&url, "&"); if(!value || !*value) continue; - char *name = mystrsep(&value, "="); + char *name = strsep_skip_consecutive_separators(&value, "="); if(!name || !*name) continue; if(!value || !*value) continue; @@ -321,7 +329,7 @@ inline int web_client_api_request_v1_alarm_count(RRDHOST *host, struct web_clien health_aggregate_alarms(host, w->response.data, contexts, status); buffer_sprintf(w->response.data, "]\n"); - w->response.data->contenttype = CT_APPLICATION_JSON; + w->response.data->content_type = CT_APPLICATION_JSON; buffer_no_cacheable(w->response.data); buffer_free(contexts); @@ -333,10 +341,10 @@ inline int web_client_api_request_v1_alarm_log(RRDHOST *host, struct web_client char *chart = NULL; while(url) { - char *value = mystrsep(&url, "&"); + char *value = strsep_skip_consecutive_separators(&url, "&"); if (!value || !*value) continue; - char *name = mystrsep(&value, "="); + char *name = strsep_skip_consecutive_separators(&value, "="); if(!name || !*name) continue; if(!value || !*value) continue; @@ -345,7 +353,7 @@ inline int web_client_api_request_v1_alarm_log(RRDHOST *host, struct web_client } buffer_flush(w->response.data); - w->response.data->contenttype = CT_APPLICATION_JSON; + w->response.data->content_type = CT_APPLICATION_JSON; health_alarm_log2json(host, w->response.data, after, chart); return HTTP_RESP_OK; } @@ -357,10 +365,10 @@ inline int web_client_api_request_single_chart(RRDHOST *host, struct web_client buffer_flush(w->response.data); while(url) { - char *value = mystrsep(&url, "&"); + char *value = strsep_skip_consecutive_separators(&url, "&"); if(!value || !*value) continue; - char *name = mystrsep(&value, "="); + char *name = strsep_skip_consecutive_separators(&value, "="); if(!name || !*name) continue; if(!value || !*value) continue; @@ -388,7 +396,7 @@ inline int web_client_api_request_single_chart(RRDHOST *host, struct web_client goto cleanup; } - w->response.data->contenttype = CT_APPLICATION_JSON; + w->response.data->content_type = CT_APPLICATION_JSON; st->last_accessed_time_s = now_realtime_sec(); callback(st, w->response.data); return HTTP_RESP_OK; @@ -401,38 +409,6 @@ inline int web_client_api_request_v1_alarm_variables(RRDHOST *host, struct web_c return web_client_api_request_single_chart(host, w, url, health_api_v1_chart_variables2json); } -static RRDCONTEXT_TO_JSON_OPTIONS rrdcontext_to_json_parse_options(char *o) { - RRDCONTEXT_TO_JSON_OPTIONS options = RRDCONTEXT_OPTION_NONE; - char *tok; - - while(o && *o && (tok = mystrsep(&o, ", |"))) { - if(!*tok) continue; - - if(!strcmp(tok, "full") || !strcmp(tok, "all")) - options |= RRDCONTEXT_OPTIONS_ALL; - else if(!strcmp(tok, "charts") || !strcmp(tok, "instances")) - options |= RRDCONTEXT_OPTION_SHOW_INSTANCES; - else if(!strcmp(tok, "dimensions") || !strcmp(tok, "metrics")) - options |= RRDCONTEXT_OPTION_SHOW_METRICS; - else if(!strcmp(tok, "queue")) - options |= RRDCONTEXT_OPTION_SHOW_QUEUED; - else if(!strcmp(tok, "flags")) - options |= RRDCONTEXT_OPTION_SHOW_FLAGS; - else if(!strcmp(tok, "uuids")) - options |= RRDCONTEXT_OPTION_SHOW_UUIDS; - else if(!strcmp(tok, "deleted")) - options |= RRDCONTEXT_OPTION_SHOW_DELETED; - else if(!strcmp(tok, "labels")) - options |= RRDCONTEXT_OPTION_SHOW_LABELS; - else if(!strcmp(tok, "deepscan")) - options |= RRDCONTEXT_OPTION_DEEPSCAN; - else if(!strcmp(tok, "hidden")) - options |= RRDCONTEXT_OPTION_SHOW_HIDDEN; - } - - return options; -} - static int web_client_api_request_v1_context(RRDHOST *host, struct web_client *w, char *url) { char *context = NULL; RRDCONTEXT_TO_JSON_OPTIONS options = RRDCONTEXT_OPTION_NONE; @@ -443,10 +419,10 @@ static int web_client_api_request_v1_context(RRDHOST *host, struct web_client *w buffer_flush(w->response.data); while(url) { - char *value = mystrsep(&url, "&"); + char *value = strsep_skip_consecutive_separators(&url, "&"); if(!value || !*value) continue; - char *name = mystrsep(&value, "="); + char *name = strsep_skip_consecutive_separators(&value, "="); if(!name || !*name) continue; if(!value || !*value) continue; @@ -476,17 +452,19 @@ static int web_client_api_request_v1_context(RRDHOST *host, struct web_client *w SIMPLE_PATTERN *chart_dimensions_pattern = NULL; if(chart_label_key) - chart_label_key_pattern = simple_pattern_create(chart_label_key, ",|\t\r\n\f\v", SIMPLE_PATTERN_EXACT); + chart_label_key_pattern = simple_pattern_create(chart_label_key, ",|\t\r\n\f\v", SIMPLE_PATTERN_EXACT, true); if(chart_labels_filter) - chart_labels_filter_pattern = simple_pattern_create(chart_labels_filter, ",|\t\r\n\f\v", SIMPLE_PATTERN_EXACT); + chart_labels_filter_pattern = simple_pattern_create(chart_labels_filter, ",|\t\r\n\f\v", SIMPLE_PATTERN_EXACT, + true); if(dimensions) { - chart_dimensions_pattern = simple_pattern_create(buffer_tostring(dimensions), ",|\t\r\n\f\v", SIMPLE_PATTERN_EXACT); + chart_dimensions_pattern = simple_pattern_create(buffer_tostring(dimensions), ",|\t\r\n\f\v", + SIMPLE_PATTERN_EXACT, true); buffer_free(dimensions); } - w->response.data->contenttype = CT_APPLICATION_JSON; + w->response.data->content_type = CT_APPLICATION_JSON; int ret = rrdcontext_to_json(host, w->response.data, after, before, options, context, chart_label_key_pattern, chart_labels_filter_pattern, chart_dimensions_pattern); simple_pattern_free(chart_label_key_pattern); @@ -505,10 +483,10 @@ static int web_client_api_request_v1_contexts(RRDHOST *host, struct web_client * buffer_flush(w->response.data); while(url) { - char *value = mystrsep(&url, "&"); + char *value = strsep_skip_consecutive_separators(&url, "&"); if(!value || !*value) continue; - char *name = mystrsep(&value, "="); + char *name = strsep_skip_consecutive_separators(&value, "="); if(!name || !*name) continue; if(!value || !*value) continue; @@ -532,17 +510,19 @@ static int web_client_api_request_v1_contexts(RRDHOST *host, struct web_client * SIMPLE_PATTERN *chart_dimensions_pattern = NULL; if(chart_label_key) - chart_label_key_pattern = simple_pattern_create(chart_label_key, ",|\t\r\n\f\v", SIMPLE_PATTERN_EXACT); + chart_label_key_pattern = simple_pattern_create(chart_label_key, ",|\t\r\n\f\v", SIMPLE_PATTERN_EXACT, true); if(chart_labels_filter) - chart_labels_filter_pattern = simple_pattern_create(chart_labels_filter, ",|\t\r\n\f\v", SIMPLE_PATTERN_EXACT); + chart_labels_filter_pattern = simple_pattern_create(chart_labels_filter, ",|\t\r\n\f\v", SIMPLE_PATTERN_EXACT, + true); if(dimensions) { - chart_dimensions_pattern = simple_pattern_create(buffer_tostring(dimensions), ",|\t\r\n\f\v", SIMPLE_PATTERN_EXACT); + chart_dimensions_pattern = simple_pattern_create(buffer_tostring(dimensions), ",|\t\r\n\f\v", + SIMPLE_PATTERN_EXACT, true); buffer_free(dimensions); } - w->response.data->contenttype = CT_APPLICATION_JSON; + w->response.data->content_type = CT_APPLICATION_JSON; int ret = rrdcontexts_to_json(host, w->response.data, after, before, options, chart_label_key_pattern, chart_labels_filter_pattern, chart_dimensions_pattern); simple_pattern_free(chart_label_key_pattern); @@ -556,7 +536,7 @@ inline int web_client_api_request_v1_charts(RRDHOST *host, struct web_client *w, (void)url; buffer_flush(w->response.data); - w->response.data->contenttype = CT_APPLICATION_JSON; + w->response.data->content_type = CT_APPLICATION_JSON; charts2json(host, w->response.data, 0, 0); return HTTP_RESP_OK; } @@ -565,18 +545,8 @@ inline int web_client_api_request_v1_chart(RRDHOST *host, struct web_client *w, return web_client_api_request_single_chart(host, w, url, rrd_stats_api_v1_chart); } -void fix_google_param(char *s) { - if(unlikely(!s)) return; - - for( ; *s ;s++) { - if(!isalnum(*s) && *s != '.' && *s != '_' && *s != '-') - *s = '_'; - } -} - - // returns the HTTP code -inline int web_client_api_request_v1_data(RRDHOST *host, struct web_client *w, char *url) { +static inline int web_client_api_request_v1_data(RRDHOST *host, struct web_client *w, char *url) { debug(D_WEB_CLIENT, "%llu: API v1 data with URL '%s'", w->id, url); int ret = HTTP_RESP_BAD_REQUEST; @@ -604,15 +574,15 @@ inline int web_client_api_request_v1_data(RRDHOST *host, struct web_client *w, c char *chart_labels_filter = NULL; char *group_options = NULL; size_t tier = 0; - RRDR_GROUPING group = RRDR_GROUPING_AVERAGE; + RRDR_TIME_GROUPING group = RRDR_GROUPING_AVERAGE; DATASOURCE_FORMAT format = DATASOURCE_JSON; RRDR_OPTIONS options = 0; while(url) { - char *value = mystrsep(&url, "&"); + char *value = strsep_skip_consecutive_separators(&url, "&"); if(!value || !*value) continue; - char *name = mystrsep(&value, "="); + char *name = strsep_skip_consecutive_separators(&value, "="); if(!name || !*name) continue; if(!value || !*value) continue; @@ -638,7 +608,7 @@ inline int web_client_api_request_v1_data(RRDHOST *host, struct web_client *w, c else if(!strcmp(name, "gtime")) group_time_str = value; else if(!strcmp(name, "group_options")) group_options = value; else if(!strcmp(name, "group")) { - group = web_client_api_request_v1_data_group(value, RRDR_GROUPING_AVERAGE); + group = time_grouping_parse(value, RRDR_GROUPING_AVERAGE); } else if(!strcmp(name, "format")) { format = web_client_api_request_v1_data_format(value); @@ -658,10 +628,10 @@ inline int web_client_api_request_v1_data(RRDHOST *host, struct web_client *w, c char *tqx_name, *tqx_value; while(value) { - tqx_value = mystrsep(&value, ";"); + tqx_value = strsep_skip_consecutive_separators(&value, ";"); if(!tqx_value || !*tqx_value) continue; - tqx_name = mystrsep(&tqx_value, ":"); + tqx_name = strsep_skip_consecutive_separators(&tqx_value, ":"); if(!tqx_name || !*tqx_name) continue; if(!tqx_value || !*tqx_value) continue; @@ -722,26 +692,29 @@ inline int web_client_api_request_v1_data(RRDHOST *host, struct web_client *w, c long group_time = (group_time_str && *group_time_str)?str2l(group_time_str):0; QUERY_TARGET_REQUEST qtr = { + .version = 1, .after = after, .before = before, .host = host, .st = st, - .hosts = NULL, + .nodes = NULL, .contexts = context, - .charts = chart, + .instances = chart, .dimensions = (dimensions)?buffer_tostring(dimensions):NULL, - .timeout = timeout, + .timeout_ms = timeout, .points = points, .format = format, .options = options, - .group_method = group, - .group_options = group_options, + .time_group_method = group, + .time_group_options = group_options, .resampling_time = group_time, .tier = tier, .chart_label_key = chart_label_key, - .charts_labels_filter = chart_labels_filter, + .labels = chart_labels_filter, .query_source = QUERY_SOURCE_API_DATA, .priority = STORAGE_PRIORITY_NORMAL, + .interrupt_callback = web_client_interrupt_callback, + .interrupt_callback_data = w, }; qt = query_target_create(&qtr); @@ -751,22 +724,12 @@ inline int web_client_api_request_v1_data(RRDHOST *host, struct web_client *w, c goto cleanup; } - if (timeout) { - struct timeval now; - now_realtime_timeval(&now); - int inqueue = (int)dt_usec(&w->tv_in, &now) / 1000; - timeout -= inqueue; - if (timeout <= 0) { - buffer_flush(w->response.data); - buffer_strcat(w->response.data, "Query timeout exceeded"); - ret = HTTP_RESP_BACKEND_FETCH_FAILED; - goto cleanup; - } + web_client_timeout_checkpoint_set(w, timeout); + if(web_client_timeout_checkpoint_and_check(w, NULL)) { + ret = w->response.code; + goto cleanup; } - debug(D_WEB_CLIENT, "%llu: API command 'data' for chart '%s', dimensions '%s', after '%lld', before '%lld', points '%d', group '%u', format '%u', options '0x%08x'" - , w->id, chart, (dimensions)?buffer_tostring(dimensions):"", after, before , points, group, format, options); - if(outFileName && *outFileName) { buffer_sprintf(w->response.header, "Content-Disposition: attachment; filename=\"%s\"\r\n", outFileName); debug(D_WEB_CLIENT, "%llu: generating outfilename header: '%s'", w->id, outFileName); @@ -814,10 +777,7 @@ inline int web_client_api_request_v1_data(RRDHOST *host, struct web_client *w, c buffer_strcat(w->response.data, ");"); cleanup: - if(qt && qt->used) { - internal_error(true, "QUERY_TARGET: left non-released on query '%s'", qt->id); - query_target_release(qt); - } + query_target_release(qt); onewayalloc_destroy(owa); buffer_free(dimensions); return ret; @@ -886,10 +846,10 @@ inline int web_client_api_request_v1_registry(RRDHOST *host, struct web_client * buffer_no_cacheable(w->response.data); while(url) { - char *value = mystrsep(&url, "&"); + char *value = strsep_skip_consecutive_separators(&url, "&"); if (!value || !*value) continue; - char *name = mystrsep(&value, "="); + char *name = strsep_skip_consecutive_separators(&value, "="); if (!name || !*name) continue; if (!value || !*value) continue; @@ -1013,8 +973,10 @@ inline int web_client_api_request_v1_registry(RRDHOST *host, struct web_client * } } -static inline void web_client_api_request_v1_info_summary_alarm_statuses(RRDHOST *host, BUFFER *wb) { - int alarm_normal = 0, alarm_warn = 0, alarm_crit = 0; +void web_client_api_request_v1_info_summary_alarm_statuses(RRDHOST *host, BUFFER *wb, const char *key) { + buffer_json_member_add_object(wb, key); + + size_t normal = 0, warning = 0, critical = 0; RRDCALC *rc; foreach_rrdcalc_in_rrdhost_read(host, rc) { if(unlikely(!rc->rrdset || !rc->rrdset->last_collected_time.tv_sec)) @@ -1022,274 +984,217 @@ static inline void web_client_api_request_v1_info_summary_alarm_statuses(RRDHOST switch(rc->status) { case RRDCALC_STATUS_WARNING: - alarm_warn++; + warning++; break; case RRDCALC_STATUS_CRITICAL: - alarm_crit++; + critical++; break; default: - alarm_normal++; + normal++; } } foreach_rrdcalc_in_rrdhost_done(rc); - buffer_sprintf(wb, "\t\t\"normal\": %d,\n", alarm_normal); - buffer_sprintf(wb, "\t\t\"warning\": %d,\n", alarm_warn); - buffer_sprintf(wb, "\t\t\"critical\": %d\n", alarm_crit); + + buffer_json_member_add_uint64(wb, "normal", normal); + buffer_json_member_add_uint64(wb, "warning", warning); + buffer_json_member_add_uint64(wb, "critical", critical); + + buffer_json_object_close(wb); +} + +static inline void web_client_api_request_v1_info_mirrored_hosts_status(BUFFER *wb, RRDHOST *host) { + buffer_json_add_array_item_object(wb); + + buffer_json_member_add_string(wb, "hostname", rrdhost_hostname(host)); + buffer_json_member_add_uint64(wb, "hops", host->system_info ? host->system_info->hops : (host == localhost) ? 0 : 1); + buffer_json_member_add_boolean(wb, "reachable", (host == localhost || !rrdhost_flag_check(host, RRDHOST_FLAG_ORPHAN))); + + buffer_json_member_add_string(wb, "guid", host->machine_guid); + buffer_json_member_add_uuid(wb, "node_id", host->node_id); + rrdhost_aclk_state_lock(host); + buffer_json_member_add_string(wb, "claim_id", host->aclk_state.claimed_id); + rrdhost_aclk_state_unlock(host); + + buffer_json_object_close(wb); } static inline void web_client_api_request_v1_info_mirrored_hosts(BUFFER *wb) { RRDHOST *host; - int count = 0; - buffer_strcat(wb, "\t\"mirrored_hosts\": [\n"); rrd_rdlock(); - rrdhost_foreach_read(host) { - if (count > 0) - buffer_strcat(wb, ",\n"); - buffer_sprintf(wb, "\t\t\"%s\"", rrdhost_hostname(host)); - count++; - } - - buffer_strcat(wb, "\n\t],\n\t\"mirrored_hosts_status\": [\n"); - count = 0; + buffer_json_member_add_array(wb, "mirrored_hosts"); rrdhost_foreach_read(host) - { - if (count > 0) - buffer_strcat(wb, ",\n"); + buffer_json_add_array_item_string(wb, rrdhost_hostname(host)); + buffer_json_array_close(wb); - buffer_sprintf( - wb, "\t\t{ \"guid\": \"%s\", \"hostname\": \"%s\", \"reachable\": %s, \"hops\": %d" - , host->machine_guid - , rrdhost_hostname(host) - , (host == localhost || !rrdhost_flag_check(host, RRDHOST_FLAG_ORPHAN)) ? "true" : "false" - , host->system_info ? host->system_info->hops : (host == localhost) ? 0 : 1 - ); - - rrdhost_aclk_state_lock(host); - if (host->aclk_state.claimed_id) - buffer_sprintf(wb, ", \"claim_id\": \"%s\"", host->aclk_state.claimed_id); - else - buffer_strcat(wb, ", \"claim_id\": null"); - rrdhost_aclk_state_unlock(host); - - if (host->node_id) { - char node_id_str[GUID_LEN + 1]; - uuid_unparse_lower(*host->node_id, node_id_str); - buffer_sprintf(wb, ", \"node_id\": \"%s\" }", node_id_str); - } else - buffer_strcat(wb, ", \"node_id\": null }"); - - count++; + buffer_json_member_add_array(wb, "mirrored_hosts_status"); + rrdhost_foreach_read(host) { + if ((host == localhost || !rrdhost_flag_check(host, RRDHOST_FLAG_ORPHAN))) { + web_client_api_request_v1_info_mirrored_hosts_status(wb, host); + } } + rrdhost_foreach_read(host) { + if ((host != localhost && rrdhost_flag_check(host, RRDHOST_FLAG_ORPHAN))) { + web_client_api_request_v1_info_mirrored_hosts_status(wb, host); + } + } + buffer_json_array_close(wb); + rrd_unlock(); +} - buffer_strcat(wb, "\n\t],\n"); +void host_labels2json(RRDHOST *host, BUFFER *wb, const char *key) { + buffer_json_member_add_object(wb, key); + rrdlabels_to_buffer_json_members(host->rrdlabels, wb); + buffer_json_object_close(wb); } -inline void host_labels2json(RRDHOST *host, BUFFER *wb, size_t indentation) { - char tabs[11]; +static void host_collectors(RRDHOST *host, BUFFER *wb) { + buffer_json_member_add_array(wb, "collectors"); + + DICTIONARY *dict = dictionary_create(DICT_OPTION_SINGLE_THREADED|DICT_OPTION_DONT_OVERWRITE_VALUE); + RRDSET *st; + char name[500]; - if (indentation > 10) - indentation = 10; + time_t now = now_realtime_sec(); - tabs[0] = '\0'; - while (indentation) { - strcat(tabs, "\t"); - indentation--; + rrdset_foreach_read(st, host) { + if (!rrdset_is_available_for_viewers(st)) + continue; + + sprintf(name, "%s:%s", rrdset_plugin_name(st), rrdset_module_name(st)); + + bool old = 0; + bool *set = dictionary_set(dict, name, &old, sizeof(bool)); + if(!*set) { + *set = true; + st->last_accessed_time_s = now; + buffer_json_add_array_item_object(wb); + buffer_json_member_add_string(wb, "plugin", rrdset_plugin_name(st)); + buffer_json_member_add_string(wb, "module", rrdset_module_name(st)); + buffer_json_object_close(wb); + } } + rrdset_foreach_done(st); + dictionary_destroy(dict); - rrdlabels_to_buffer(host->rrdlabels, wb, tabs, ":", "\"", ",\n", NULL, NULL, NULL, NULL); - buffer_strcat(wb, "\n"); + buffer_json_array_close(wb); } extern int aclk_connected; -inline int web_client_api_request_v1_info_fill_buffer(RRDHOST *host, BUFFER *wb) -{ - buffer_strcat(wb, "{\n"); - buffer_sprintf(wb, "\t\"version\": \"%s\",\n", rrdhost_program_version(host)); - buffer_sprintf(wb, "\t\"uid\": \"%s\",\n", host->machine_guid); +inline int web_client_api_request_v1_info_fill_buffer(RRDHOST *host, BUFFER *wb) { + buffer_json_initialize(wb, "\"", "\"", 0, true, false); + buffer_json_member_add_string(wb, "version", rrdhost_program_version(host)); + buffer_json_member_add_string(wb, "uid", host->machine_guid); + + buffer_json_member_add_uint64(wb, "hosts-available", rrdhost_hosts_available()); web_client_api_request_v1_info_mirrored_hosts(wb); - buffer_strcat(wb, "\t\"alarms\": {\n"); - web_client_api_request_v1_info_summary_alarm_statuses(host, wb); - buffer_strcat(wb, "\t},\n"); - - buffer_sprintf(wb, "\t\"os_name\": \"%s\",\n", (host->system_info->host_os_name) ? host->system_info->host_os_name : ""); - buffer_sprintf(wb, "\t\"os_id\": \"%s\",\n", (host->system_info->host_os_id) ? host->system_info->host_os_id : ""); - buffer_sprintf(wb, "\t\"os_id_like\": \"%s\",\n", (host->system_info->host_os_id_like) ? host->system_info->host_os_id_like : ""); - buffer_sprintf(wb, "\t\"os_version\": \"%s\",\n", (host->system_info->host_os_version) ? host->system_info->host_os_version : ""); - buffer_sprintf(wb, "\t\"os_version_id\": \"%s\",\n", (host->system_info->host_os_version_id) ? host->system_info->host_os_version_id : ""); - buffer_sprintf(wb, "\t\"os_detection\": \"%s\",\n", (host->system_info->host_os_detection) ? host->system_info->host_os_detection : ""); - buffer_sprintf(wb, "\t\"cores_total\": \"%s\",\n", (host->system_info->host_cores) ? host->system_info->host_cores : ""); - buffer_sprintf(wb, "\t\"total_disk_space\": \"%s\",\n", (host->system_info->host_disk_space) ? host->system_info->host_disk_space : ""); - buffer_sprintf(wb, "\t\"cpu_freq\": \"%s\",\n", (host->system_info->host_cpu_freq) ? host->system_info->host_cpu_freq : ""); - buffer_sprintf(wb, "\t\"ram_total\": \"%s\",\n", (host->system_info->host_ram_total) ? host->system_info->host_ram_total : ""); - - if (host->system_info->container_os_name) - buffer_sprintf(wb, "\t\"container_os_name\": \"%s\",\n", host->system_info->container_os_name); - if (host->system_info->container_os_id) - buffer_sprintf(wb, "\t\"container_os_id\": \"%s\",\n", host->system_info->container_os_id); - if (host->system_info->container_os_id_like) - buffer_sprintf(wb, "\t\"container_os_id_like\": \"%s\",\n", host->system_info->container_os_id_like); - if (host->system_info->container_os_version) - buffer_sprintf(wb, "\t\"container_os_version\": \"%s\",\n", host->system_info->container_os_version); - if (host->system_info->container_os_version_id) - buffer_sprintf(wb, "\t\"container_os_version_id\": \"%s\",\n", host->system_info->container_os_version_id); - if (host->system_info->container_os_detection) - buffer_sprintf(wb, "\t\"container_os_detection\": \"%s\",\n", host->system_info->container_os_detection); - if (host->system_info->is_k8s_node) - buffer_sprintf(wb, "\t\"is_k8s_node\": \"%s\",\n", host->system_info->is_k8s_node); - - buffer_sprintf(wb, "\t\"kernel_name\": \"%s\",\n", (host->system_info->kernel_name) ? host->system_info->kernel_name : ""); - buffer_sprintf(wb, "\t\"kernel_version\": \"%s\",\n", (host->system_info->kernel_version) ? host->system_info->kernel_version : ""); - buffer_sprintf(wb, "\t\"architecture\": \"%s\",\n", (host->system_info->architecture) ? host->system_info->architecture : ""); - buffer_sprintf(wb, "\t\"virtualization\": \"%s\",\n", (host->system_info->virtualization) ? host->system_info->virtualization : ""); - buffer_sprintf(wb, "\t\"virt_detection\": \"%s\",\n", (host->system_info->virt_detection) ? host->system_info->virt_detection : ""); - buffer_sprintf(wb, "\t\"container\": \"%s\",\n", (host->system_info->container) ? host->system_info->container : ""); - buffer_sprintf(wb, "\t\"container_detection\": \"%s\",\n", (host->system_info->container_detection) ? host->system_info->container_detection : ""); - - if (host->system_info->cloud_provider_type) - buffer_sprintf(wb, "\t\"cloud_provider_type\": \"%s\",\n", host->system_info->cloud_provider_type); - if (host->system_info->cloud_instance_type) - buffer_sprintf(wb, "\t\"cloud_instance_type\": \"%s\",\n", host->system_info->cloud_instance_type); - if (host->system_info->cloud_instance_region) - buffer_sprintf(wb, "\t\"cloud_instance_region\": \"%s\",\n", host->system_info->cloud_instance_region); - - buffer_strcat(wb, "\t\"host_labels\": {\n"); - host_labels2json(host, wb, 2); - buffer_strcat(wb, "\t},\n"); - - buffer_strcat(wb, "\t\"functions\": {\n"); - host_functions2json(host, wb, 2, "\"", "\""); - buffer_strcat(wb, "\t},\n"); - - buffer_strcat(wb, "\t\"collectors\": ["); - chartcollectors2json(host, wb); - buffer_strcat(wb, "\n\t],\n"); + web_client_api_request_v1_info_summary_alarm_statuses(host, wb, "alarms"); + + buffer_json_member_add_string_or_empty(wb, "os_name", host->system_info->host_os_name); + buffer_json_member_add_string_or_empty(wb, "os_id", host->system_info->host_os_id); + buffer_json_member_add_string_or_empty(wb, "os_id_like", host->system_info->host_os_id_like); + buffer_json_member_add_string_or_empty(wb, "os_version", host->system_info->host_os_version); + buffer_json_member_add_string_or_empty(wb, "os_version_id", host->system_info->host_os_version_id); + buffer_json_member_add_string_or_empty(wb, "os_detection", host->system_info->host_os_detection); + buffer_json_member_add_string_or_empty(wb, "cores_total", host->system_info->host_cores); + buffer_json_member_add_string_or_empty(wb, "total_disk_space", host->system_info->host_disk_space); + buffer_json_member_add_string_or_empty(wb, "cpu_freq", host->system_info->host_cpu_freq); + buffer_json_member_add_string_or_empty(wb, "ram_total", host->system_info->host_ram_total); + + buffer_json_member_add_string_or_omit(wb, "container_os_name", host->system_info->container_os_name); + buffer_json_member_add_string_or_omit(wb, "container_os_id", host->system_info->container_os_id); + buffer_json_member_add_string_or_omit(wb, "container_os_id_like", host->system_info->container_os_id_like); + buffer_json_member_add_string_or_omit(wb, "container_os_version", host->system_info->container_os_version); + buffer_json_member_add_string_or_omit(wb, "container_os_version_id", host->system_info->container_os_version_id); + buffer_json_member_add_string_or_omit(wb, "container_os_detection", host->system_info->container_os_detection); + buffer_json_member_add_string_or_omit(wb, "is_k8s_node", host->system_info->is_k8s_node); + + buffer_json_member_add_string_or_empty(wb, "kernel_name", host->system_info->kernel_name); + buffer_json_member_add_string_or_empty(wb, "kernel_version", host->system_info->kernel_version); + buffer_json_member_add_string_or_empty(wb, "architecture", host->system_info->architecture); + buffer_json_member_add_string_or_empty(wb, "virtualization", host->system_info->virtualization); + buffer_json_member_add_string_or_empty(wb, "virt_detection", host->system_info->virt_detection); + buffer_json_member_add_string_or_empty(wb, "container", host->system_info->container); + buffer_json_member_add_string_or_empty(wb, "container_detection", host->system_info->container_detection); + + buffer_json_member_add_string_or_omit(wb, "cloud_provider_type", host->system_info->cloud_provider_type); + buffer_json_member_add_string_or_omit(wb, "cloud_instance_type", host->system_info->cloud_instance_type); + buffer_json_member_add_string_or_omit(wb, "cloud_instance_region", host->system_info->cloud_instance_region); + + host_labels2json(host, wb, "host_labels"); + host_functions2json(host, wb); + host_collectors(host, wb); #ifdef DISABLE_CLOUD - buffer_strcat(wb, "\t\"cloud-enabled\": false,\n"); + buffer_json_member_add_boolean(wb, "cloud-enabled", false); #else - buffer_sprintf(wb, "\t\"cloud-enabled\": %s,\n", - appconfig_get_boolean(&cloud_config, CONFIG_SECTION_GLOBAL, "enabled", 1) ? "true" : "false"); + buffer_json_member_add_boolean(wb, "cloud-enabled", + appconfig_get_boolean(&cloud_config, CONFIG_SECTION_GLOBAL, "enabled", true)); #endif #ifdef ENABLE_ACLK - buffer_strcat(wb, "\t\"cloud-available\": true,\n"); + buffer_json_member_add_boolean(wb, "cloud-available", true); #else - buffer_strcat(wb, "\t\"cloud-available\": false,\n"); + buffer_json_member_add_boolean(wb, "cloud-available", false); #endif + char *agent_id = get_agent_claimid(); - if (agent_id == NULL) - buffer_strcat(wb, "\t\"agent-claimed\": false,\n"); - else { - buffer_strcat(wb, "\t\"agent-claimed\": true,\n"); - freez(agent_id); - } + buffer_json_member_add_boolean(wb, "agent-claimed", agent_id != NULL); + freez(agent_id); + #ifdef ENABLE_ACLK - if (aclk_connected) { - buffer_strcat(wb, "\t\"aclk-available\": true,\n"); - } - else + buffer_json_member_add_boolean(wb, "aclk-available", aclk_connected); +#else + buffer_json_member_add_boolean(wb, "aclk-available", false); #endif - buffer_strcat(wb, "\t\"aclk-available\": false,\n"); // Intentionally valid with/without #ifdef above - - buffer_strcat(wb, "\t\"memory-mode\": "); - analytics_get_data(analytics_data.netdata_config_memory_mode, wb); - buffer_strcat(wb, ",\n"); - - buffer_strcat(wb, "\t\"multidb-disk-quota\": "); - analytics_get_data(analytics_data.netdata_config_multidb_disk_quota, wb); - buffer_strcat(wb, ",\n"); - buffer_strcat(wb, "\t\"page-cache-size\": "); - analytics_get_data(analytics_data.netdata_config_page_cache_size, wb); - buffer_strcat(wb, ",\n"); - - buffer_strcat(wb, "\t\"stream-enabled\": "); - analytics_get_data(analytics_data.netdata_config_stream_enabled, wb); - buffer_strcat(wb, ",\n"); + buffer_json_member_add_string(wb, "memory-mode", rrd_memory_mode_name(host->rrd_memory_mode)); +#ifdef ENABLE_DBENGINE + buffer_json_member_add_uint64(wb, "multidb-disk-quota", default_multidb_disk_quota_mb); + buffer_json_member_add_uint64(wb, "page-cache-size", default_rrdeng_page_cache_mb); +#endif // ENABLE_DBENGINE + buffer_json_member_add_boolean(wb, "web-enabled", web_server_mode != WEB_SERVER_MODE_NONE); + buffer_json_member_add_boolean(wb, "stream-enabled", default_rrdpush_enabled); #ifdef ENABLE_COMPRESSION - if(host->sender){ - buffer_strcat(wb, "\t\"stream-compression\": "); - buffer_strcat(wb, stream_has_capability(host->sender, STREAM_CAP_COMPRESSION) ? "true" : "false"); - buffer_strcat(wb, ",\n"); - }else{ - buffer_strcat(wb, "\t\"stream-compression\": null,\n"); - } + buffer_json_member_add_boolean(wb, "stream-compression", + host->sender && stream_has_capability(host->sender, STREAM_CAP_COMPRESSION)); #else - buffer_strcat(wb, "\t\"stream-compression\": null,\n"); -#endif //ENABLE_COMPRESSION - - buffer_strcat(wb, "\t\"hosts-available\": "); - analytics_get_data(analytics_data.netdata_config_hosts_available, wb); - buffer_strcat(wb, ",\n"); - - buffer_strcat(wb, "\t\"https-enabled\": "); - analytics_get_data(analytics_data.netdata_config_https_enabled, wb); - buffer_strcat(wb, ",\n"); + buffer_json_member_add_boolean(wb, "stream-compression", false); +#endif //ENABLE_COMPRESSION - buffer_strcat(wb, "\t\"buildinfo\": "); - analytics_get_data(analytics_data.netdata_buildinfo, wb); - buffer_strcat(wb, ",\n"); - - buffer_strcat(wb, "\t\"release-channel\": "); - analytics_get_data(analytics_data.netdata_config_release_channel, wb); - buffer_strcat(wb, ",\n"); - - buffer_strcat(wb, "\t\"web-enabled\": "); - analytics_get_data(analytics_data.netdata_config_web_enabled, wb); - buffer_strcat(wb, ",\n"); - - buffer_strcat(wb, "\t\"notification-methods\": "); - analytics_get_data(analytics_data.netdata_notification_methods, wb); - buffer_strcat(wb, ",\n"); - - buffer_strcat(wb, "\t\"exporting-enabled\": "); - analytics_get_data(analytics_data.netdata_config_exporting_enabled, wb); - buffer_strcat(wb, ",\n"); - - buffer_strcat(wb, "\t\"exporting-connectors\": "); - analytics_get_data(analytics_data.netdata_exporting_connectors, wb); - buffer_strcat(wb, ",\n"); - - buffer_strcat(wb, "\t\"allmetrics-prometheus-used\": "); - analytics_get_data(analytics_data.netdata_allmetrics_prometheus_used, wb); - buffer_strcat(wb, ",\n"); - - buffer_strcat(wb, "\t\"allmetrics-shell-used\": "); - analytics_get_data(analytics_data.netdata_allmetrics_shell_used, wb); - buffer_strcat(wb, ",\n"); +#ifdef ENABLE_HTTPS + buffer_json_member_add_boolean(wb, "https-enabled", true); +#else + buffer_json_member_add_boolean(wb, "https-enabled", false); +#endif - buffer_strcat(wb, "\t\"allmetrics-json-used\": "); - analytics_get_data(analytics_data.netdata_allmetrics_json_used, wb); - buffer_strcat(wb, ",\n"); + buffer_json_member_add_quoted_string(wb, "buildinfo", analytics_data.netdata_buildinfo); + buffer_json_member_add_quoted_string(wb, "release-channel", analytics_data.netdata_config_release_channel); + buffer_json_member_add_quoted_string(wb, "notification-methods", analytics_data.netdata_notification_methods); - buffer_strcat(wb, "\t\"dashboard-used\": "); - analytics_get_data(analytics_data.netdata_dashboard_used, wb); - buffer_strcat(wb, ",\n"); + buffer_json_member_add_boolean(wb, "exporting-enabled", analytics_data.exporting_enabled); + buffer_json_member_add_quoted_string(wb, "exporting-connectors", analytics_data.netdata_exporting_connectors); - buffer_strcat(wb, "\t\"charts-count\": "); - analytics_get_data(analytics_data.netdata_charts_count, wb); - buffer_strcat(wb, ",\n"); + buffer_json_member_add_uint64(wb, "allmetrics-prometheus-used", analytics_data.prometheus_hits); + buffer_json_member_add_uint64(wb, "allmetrics-shell-used", analytics_data.shell_hits); + buffer_json_member_add_uint64(wb, "allmetrics-json-used", analytics_data.json_hits); + buffer_json_member_add_uint64(wb, "dashboard-used", analytics_data.dashboard_hits); - buffer_strcat(wb, "\t\"metrics-count\": "); - analytics_get_data(analytics_data.netdata_metrics_count, wb); + buffer_json_member_add_uint64(wb, "charts-count", analytics_data.charts_count); + buffer_json_member_add_uint64(wb, "metrics-count", analytics_data.metrics_count); #if defined(ENABLE_ML) - buffer_strcat(wb, ",\n"); - char *ml_info = ml_get_host_info(host); - - buffer_strcat(wb, "\t\"ml-info\": "); - buffer_strcat(wb, ml_info); - - freez(ml_info); + buffer_json_member_add_object(wb, "ml-info"); + ml_host_get_info(host, wb); + buffer_json_object_close(wb); #endif - buffer_strcat(wb, "\n}"); + buffer_json_finalize(wb); return 0; } @@ -1300,17 +1205,16 @@ int web_client_api_request_v1_ml_info(RRDHOST *host, struct web_client *w, char if (!netdata_ready) return HTTP_RESP_BACKEND_FETCH_FAILED; - char *s = ml_get_host_runtime_info(host); - if (!s) - s = strdupz("{\"error\": \"json string is empty\" }\n"); - BUFFER *wb = w->response.data; buffer_flush(wb); - wb->contenttype = CT_APPLICATION_JSON; - buffer_strcat(wb, s); + wb->content_type = CT_APPLICATION_JSON; + + buffer_json_initialize(wb, "\"", "\"", 0, true, false); + ml_host_get_detection_info(host, wb); + buffer_json_finalize(wb); + buffer_no_cacheable(wb); - freez(s); return HTTP_RESP_OK; } @@ -1320,27 +1224,22 @@ int web_client_api_request_v1_ml_models(RRDHOST *host, struct web_client *w, cha if (!netdata_ready) return HTTP_RESP_BACKEND_FETCH_FAILED; - char *s = ml_get_host_models(host); - if (!s) - s = strdupz("{\"error\": \"json string is empty\" }\n"); - BUFFER *wb = w->response.data; buffer_flush(wb); - wb->contenttype = CT_APPLICATION_JSON; - buffer_strcat(wb, s); + wb->content_type = CT_APPLICATION_JSON; + ml_host_get_models(host, wb); buffer_no_cacheable(wb); - freez(s); return HTTP_RESP_OK; } -#endif +#endif // ENABLE_ML inline int web_client_api_request_v1_info(RRDHOST *host, struct web_client *w, char *url) { (void)url; if (!netdata_ready) return HTTP_RESP_BACKEND_FETCH_FAILED; BUFFER *wb = w->response.data; buffer_flush(wb); - wb->contenttype = CT_APPLICATION_JSON; + wb->content_type = CT_APPLICATION_JSON; web_client_api_request_v1_info_fill_buffer(host, wb); @@ -1360,94 +1259,19 @@ static int web_client_api_request_v1_aclk_state(RRDHOST *host, struct web_client buffer_strcat(wb, str); freez(str); - wb->contenttype = CT_APPLICATION_JSON; + wb->content_type = CT_APPLICATION_JSON; buffer_no_cacheable(wb); return HTTP_RESP_OK; } -static int web_client_api_request_v1_weights_internal(RRDHOST *host, struct web_client *w, char *url, WEIGHTS_METHOD method, WEIGHTS_FORMAT format) { - if (!netdata_ready) - return HTTP_RESP_BACKEND_FETCH_FAILED; - - long long baseline_after = 0, baseline_before = 0, after = 0, before = 0, points = 0; - RRDR_OPTIONS options = RRDR_OPTION_NOT_ALIGNED | RRDR_OPTION_NONZERO | RRDR_OPTION_NULL2ZERO; - int options_count = 0; - RRDR_GROUPING group = RRDR_GROUPING_AVERAGE; - int timeout = 0; - size_t tier = 0; - const char *group_options = NULL, *contexts_str = NULL; - - while (url) { - char *value = mystrsep(&url, "&"); - if (!value || !*value) - continue; - - char *name = mystrsep(&value, "="); - if (!name || !*name) - continue; - if (!value || !*value) - continue; - - if (!strcmp(name, "baseline_after")) - baseline_after = (long long) strtoul(value, NULL, 0); - - else if (!strcmp(name, "baseline_before")) - baseline_before = (long long) strtoul(value, NULL, 0); - - else if (!strcmp(name, "after") || !strcmp(name, "highlight_after")) - after = (long long) strtoul(value, NULL, 0); - - else if (!strcmp(name, "before") || !strcmp(name, "highlight_before")) - before = (long long) strtoul(value, NULL, 0); - - else if (!strcmp(name, "points") || !strcmp(name, "max_points")) - points = (long long) strtoul(value, NULL, 0); - - else if (!strcmp(name, "timeout")) - timeout = (int) strtoul(value, NULL, 0); - - else if(!strcmp(name, "group")) - group = web_client_api_request_v1_data_group(value, RRDR_GROUPING_AVERAGE); - - else if(!strcmp(name, "options")) { - if(!options_count) options = RRDR_OPTION_NOT_ALIGNED | RRDR_OPTION_NULL2ZERO; - options |= web_client_api_request_v1_data_options(value); - options_count++; - } - - else if(!strcmp(name, "method")) - method = weights_string_to_method(value); - - else if(!strcmp(name, "context") || !strcmp(name, "contexts")) - contexts_str = value; - - else if(!strcmp(name, "tier")) { - tier = str2ul(value); - if(tier < storage_tiers) - options |= RRDR_OPTION_SELECTED_TIER; - else - tier = 0; - } - } - - BUFFER *wb = w->response.data; - buffer_flush(wb); - wb->contenttype = CT_APPLICATION_JSON; - - SIMPLE_PATTERN *contexts = (contexts_str) ? simple_pattern_create(contexts_str, ",|\t\r\n\f\v", SIMPLE_PATTERN_EXACT) : NULL; - - int ret = web_api_v1_weights(host, wb, method, format, group, group_options, baseline_after, baseline_before, after, before, points, options, contexts, tier, timeout); - - simple_pattern_free(contexts); - return ret; -} - int web_client_api_request_v1_metric_correlations(RRDHOST *host, struct web_client *w, char *url) { - return web_client_api_request_v1_weights_internal(host, w, url, default_metric_correlations_method, WEIGHTS_FORMAT_CHARTS); + return web_client_api_request_weights(host, w, url, default_metric_correlations_method, + WEIGHTS_FORMAT_CHARTS, 1); } int web_client_api_request_v1_weights(RRDHOST *host, struct web_client *w, char *url) { - return web_client_api_request_v1_weights_internal(host, w, url, WEIGHTS_METHOD_ANOMALY_RATE, WEIGHTS_FORMAT_CONTEXTS); + return web_client_api_request_weights(host, w, url, WEIGHTS_METHOD_ANOMALY_RATE, + WEIGHTS_FORMAT_CONTEXTS, 1); } int web_client_api_request_v1_function(RRDHOST *host, struct web_client *w, char *url) { @@ -1458,11 +1282,11 @@ int web_client_api_request_v1_function(RRDHOST *host, struct web_client *w, char const char *function = NULL; while (url) { - char *value = mystrsep(&url, "&"); + char *value = strsep_skip_consecutive_separators(&url, "&"); if (!value || !*value) continue; - char *name = mystrsep(&value, "="); + char *name = strsep_skip_consecutive_separators(&value, "="); if (!name || !*name) continue; @@ -1475,7 +1299,7 @@ int web_client_api_request_v1_function(RRDHOST *host, struct web_client *w, char BUFFER *wb = w->response.data; buffer_flush(wb); - wb->contenttype = CT_APPLICATION_JSON; + wb->content_type = CT_APPLICATION_JSON; buffer_no_cacheable(wb); return rrd_call_function_and_wait(host, wb, timeout, function); @@ -1487,12 +1311,12 @@ int web_client_api_request_v1_functions(RRDHOST *host, struct web_client *w, cha BUFFER *wb = w->response.data; buffer_flush(wb); - wb->contenttype = CT_APPLICATION_JSON; + wb->content_type = CT_APPLICATION_JSON; buffer_no_cacheable(wb); - buffer_strcat(wb, "{\n"); - host_functions2json(host, wb, 1, "\"", "\""); - buffer_strcat(wb, "}"); + buffer_json_initialize(wb, "\"", "\"", 0, true, false); + host_functions2json(host, wb); + buffer_json_finalize(wb); return HTTP_RESP_OK; } @@ -1576,7 +1400,7 @@ int web_client_api_request_v1_dbengine_stats(RRDHOST *host __maybe_unused, struc return HTTP_RESP_NOT_FOUND; } - wb->contenttype = CT_APPLICATION_JSON; + wb->content_type = CT_APPLICATION_JSON; buffer_no_cacheable(wb); buffer_strcat(wb, "{"); for(size_t tier = 0; tier < storage_tiers ;tier++) { @@ -1596,85 +1420,55 @@ int web_client_api_request_v1_dbengine_stats(RRDHOST *host __maybe_unused, struc #define ACL_DEV_OPEN_ACCESS 0 #endif -static struct api_command { - const char *command; - uint32_t hash; - WEB_CLIENT_ACL acl; - int (*callback)(RRDHOST *host, struct web_client *w, char *url); -} api_commands[] = { - { "info", 0, WEB_CLIENT_ACL_DASHBOARD | WEB_CLIENT_ACL_ACLK, web_client_api_request_v1_info }, - { "data", 0, WEB_CLIENT_ACL_DASHBOARD | WEB_CLIENT_ACL_ACLK, web_client_api_request_v1_data }, - { "chart", 0, WEB_CLIENT_ACL_DASHBOARD | WEB_CLIENT_ACL_ACLK, web_client_api_request_v1_chart }, - { "charts", 0, WEB_CLIENT_ACL_DASHBOARD | WEB_CLIENT_ACL_ACLK, web_client_api_request_v1_charts }, - { "context", 0, WEB_CLIENT_ACL_DASHBOARD | WEB_CLIENT_ACL_ACLK, web_client_api_request_v1_context }, - { "contexts", 0, WEB_CLIENT_ACL_DASHBOARD | WEB_CLIENT_ACL_ACLK, web_client_api_request_v1_contexts }, +static struct web_api_command api_commands_v1[] = { + { "info", 0, WEB_CLIENT_ACL_DASHBOARD_ACLK_WEBRTC, web_client_api_request_v1_info }, + { "data", 0, WEB_CLIENT_ACL_DASHBOARD_ACLK_WEBRTC, web_client_api_request_v1_data }, + { "chart", 0, WEB_CLIENT_ACL_DASHBOARD_ACLK_WEBRTC, web_client_api_request_v1_chart }, + { "charts", 0, WEB_CLIENT_ACL_DASHBOARD_ACLK_WEBRTC, web_client_api_request_v1_charts }, + { "context", 0, WEB_CLIENT_ACL_DASHBOARD_ACLK_WEBRTC, web_client_api_request_v1_context }, + { "contexts", 0, WEB_CLIENT_ACL_DASHBOARD_ACLK_WEBRTC, web_client_api_request_v1_contexts }, // registry checks the ACL by itself, so we allow everything { "registry", 0, WEB_CLIENT_ACL_NOCHECK, web_client_api_request_v1_registry }, // badges can be fetched with both dashboard and badge permissions - { "badge.svg", 0, WEB_CLIENT_ACL_DASHBOARD | WEB_CLIENT_ACL_BADGE | WEB_CLIENT_ACL_ACLK, web_client_api_request_v1_badge }, + { "badge.svg", 0, WEB_CLIENT_ACL_DASHBOARD_ACLK_WEBRTC | WEB_CLIENT_ACL_BADGE, web_client_api_request_v1_badge }, - { "alarms", 0, WEB_CLIENT_ACL_DASHBOARD | WEB_CLIENT_ACL_ACLK, web_client_api_request_v1_alarms }, - { "alarms_values", 0, WEB_CLIENT_ACL_DASHBOARD | WEB_CLIENT_ACL_ACLK, web_client_api_request_v1_alarms_values }, - { "alarm_log", 0, WEB_CLIENT_ACL_DASHBOARD | WEB_CLIENT_ACL_ACLK, web_client_api_request_v1_alarm_log }, - { "alarm_variables", 0, WEB_CLIENT_ACL_DASHBOARD | WEB_CLIENT_ACL_ACLK, web_client_api_request_v1_alarm_variables }, - { "alarm_count", 0, WEB_CLIENT_ACL_DASHBOARD | WEB_CLIENT_ACL_ACLK, web_client_api_request_v1_alarm_count }, - { "allmetrics", 0, WEB_CLIENT_ACL_DASHBOARD | WEB_CLIENT_ACL_ACLK, web_client_api_request_v1_allmetrics }, + { "alarms", 0, WEB_CLIENT_ACL_DASHBOARD_ACLK_WEBRTC, web_client_api_request_v1_alarms }, + { "alarms_values", 0, WEB_CLIENT_ACL_DASHBOARD_ACLK_WEBRTC, web_client_api_request_v1_alarms_values }, + { "alarm_log", 0, WEB_CLIENT_ACL_DASHBOARD_ACLK_WEBRTC, web_client_api_request_v1_alarm_log }, + { "alarm_variables", 0, WEB_CLIENT_ACL_DASHBOARD_ACLK_WEBRTC, web_client_api_request_v1_alarm_variables }, + { "alarm_count", 0, WEB_CLIENT_ACL_DASHBOARD_ACLK_WEBRTC, web_client_api_request_v1_alarm_count }, + { "allmetrics", 0, WEB_CLIENT_ACL_DASHBOARD_ACLK_WEBRTC, web_client_api_request_v1_allmetrics }, #if defined(ENABLE_ML) - { "ml_info", 0, WEB_CLIENT_ACL_DASHBOARD | WEB_CLIENT_ACL_ACLK, web_client_api_request_v1_ml_info }, - { "ml_models", 0, WEB_CLIENT_ACL_DASHBOARD, web_client_api_request_v1_ml_models }, + { "ml_info", 0, WEB_CLIENT_ACL_DASHBOARD_ACLK_WEBRTC, web_client_api_request_v1_ml_info }, + { "ml_models", 0, WEB_CLIENT_ACL_DASHBOARD, web_client_api_request_v1_ml_models }, #endif { "manage/health", 0, WEB_CLIENT_ACL_MGMT | WEB_CLIENT_ACL_ACLK, web_client_api_request_v1_mgmt_health }, - { "aclk", 0, WEB_CLIENT_ACL_DASHBOARD | WEB_CLIENT_ACL_ACLK, web_client_api_request_v1_aclk_state }, - { "metric_correlations", 0, WEB_CLIENT_ACL_DASHBOARD | WEB_CLIENT_ACL_ACLK, web_client_api_request_v1_metric_correlations }, - { "weights", 0, WEB_CLIENT_ACL_DASHBOARD | WEB_CLIENT_ACL_ACLK, web_client_api_request_v1_weights }, + { "aclk", 0, WEB_CLIENT_ACL_DASHBOARD_ACLK_WEBRTC, web_client_api_request_v1_aclk_state }, + { "metric_correlations", 0, WEB_CLIENT_ACL_DASHBOARD_ACLK_WEBRTC, web_client_api_request_v1_metric_correlations }, + { "weights", 0, WEB_CLIENT_ACL_DASHBOARD_ACLK_WEBRTC, web_client_api_request_v1_weights }, { "function", 0, WEB_CLIENT_ACL_ACLK | ACL_DEV_OPEN_ACCESS, web_client_api_request_v1_function }, { "functions", 0, WEB_CLIENT_ACL_ACLK | ACL_DEV_OPEN_ACCESS, web_client_api_request_v1_functions }, - { "dbengine_stats", 0, WEB_CLIENT_ACL_DASHBOARD | WEB_CLIENT_ACL_ACLK, web_client_api_request_v1_dbengine_stats }, + { "dbengine_stats", 0, WEB_CLIENT_ACL_DASHBOARD_ACLK_WEBRTC, web_client_api_request_v1_dbengine_stats }, // terminator { NULL, 0, WEB_CLIENT_ACL_NONE, NULL }, }; -inline int web_client_api_request_v1(RRDHOST *host, struct web_client *w, char *url) { +inline int web_client_api_request_v1(RRDHOST *host, struct web_client *w, char *url_path_endpoint) { static int initialized = 0; - int i; if(unlikely(initialized == 0)) { initialized = 1; - for(i = 0; api_commands[i].command ; i++) - api_commands[i].hash = simple_hash(api_commands[i].command); + for(int i = 0; api_commands_v1[i].command ; i++) + api_commands_v1[i].hash = simple_hash(api_commands_v1[i].command); } - // get the command - if(url) { - debug(D_WEB_CLIENT, "%llu: Searching for API v1 command '%s'.", w->id, url); - uint32_t hash = simple_hash(url); - - for(i = 0; api_commands[i].command ;i++) { - if(unlikely(hash == api_commands[i].hash && !strcmp(url, api_commands[i].command))) { - if(unlikely(api_commands[i].acl != WEB_CLIENT_ACL_NOCHECK) && !(w->acl & api_commands[i].acl)) - return web_client_permission_denied(w); - - //return api_commands[i].callback(host, w, url); - return api_commands[i].callback(host, w, (w->decoded_query_string + 1)); - } - } - - buffer_flush(w->response.data); - buffer_strcat(w->response.data, "Unsupported v1 API command: "); - buffer_strcat_htmlescape(w->response.data, url); - return HTTP_RESP_NOT_FOUND; - } - else { - buffer_flush(w->response.data); - buffer_sprintf(w->response.data, "Which API v1 command?"); - return HTTP_RESP_BAD_REQUEST; - } + return web_client_api_request_vX(host, w, url_path_endpoint, api_commands_v1); } diff --git a/web/api/web_api_v1.h b/web/api/web_api_v1.h index 9dd6a1c23..6fa8de017 100644 --- a/web/api/web_api_v1.h +++ b/web/api/web_api_v1.h @@ -3,14 +3,12 @@ #ifndef NETDATA_WEB_API_V1_H #define NETDATA_WEB_API_V1_H 1 -#include "daemon/common.h" -#include "web/api/badges/web_buffer_svg.h" -#include "web/api/formatters/rrd2json.h" -#include "web/api/health/health_cmdapi.h" -#include "web/api/queries/weights.h" +#include "web_api.h" + +struct web_client; RRDR_OPTIONS web_client_api_request_v1_data_options(char *o); -void web_client_api_request_v1_data_options_to_buffer(BUFFER *wb, RRDR_OPTIONS options); +void web_client_api_request_v1_data_options_to_buffer_json_array(BUFFER *wb, const char *key, RRDR_OPTIONS options); void web_client_api_request_v1_data_options_to_string(char *buf, size_t size, RRDR_OPTIONS options); uint32_t web_client_api_request_v1_data_format(char *name); @@ -24,16 +22,17 @@ int web_client_api_request_v1_alarm_variables(RRDHOST *host, struct web_client * int web_client_api_request_v1_alarm_count(RRDHOST *host, struct web_client *w, char *url); int web_client_api_request_v1_charts(RRDHOST *host, struct web_client *w, char *url); int web_client_api_request_v1_chart(RRDHOST *host, struct web_client *w, char *url); -int web_client_api_request_v1_data(RRDHOST *host, struct web_client *w, char *url); int web_client_api_request_v1_registry(RRDHOST *host, struct web_client *w, char *url); int web_client_api_request_v1_info(RRDHOST *host, struct web_client *w, char *url); -int web_client_api_request_v1(RRDHOST *host, struct web_client *w, char *url); +int web_client_api_request_v1(RRDHOST *host, struct web_client *w, char *url_path_endpoint); int web_client_api_request_v1_info_fill_buffer(RRDHOST *host, BUFFER *wb); -void host_labels2json(RRDHOST *host, BUFFER *wb, size_t indentation); void web_client_api_v1_init(void); void web_client_api_v1_management_init(void); +void host_labels2json(RRDHOST *host, BUFFER *wb, const char *key); +void web_client_api_request_v1_info_summary_alarm_statuses(RRDHOST *host, BUFFER *wb, const char *key); + extern char *api_secret; #endif //NETDATA_WEB_API_V1_H diff --git a/web/api/web_api_v2.c b/web/api/web_api_v2.c new file mode 100644 index 000000000..7280c0427 --- /dev/null +++ b/web/api/web_api_v2.c @@ -0,0 +1,372 @@ +// SPDX-License-Identifier: GPL-3.0-or-later + +#include "web_api_v2.h" +#include "../rtc/webrtc.h" + +static int web_client_api_request_v2_contexts_internal(RRDHOST *host __maybe_unused, struct web_client *w, char *url, CONTEXTS_V2_OPTIONS options) { + struct api_v2_contexts_request req = { 0 }; + + while(url) { + char *value = strsep_skip_consecutive_separators(&url, "&"); + if(!value || !*value) continue; + + char *name = strsep_skip_consecutive_separators(&value, "="); + if(!name || !*name) continue; + if(!value || !*value) continue; + + // name and value are now the parameters + // they are not null and not empty + + if(!strcmp(name, "scope_nodes")) req.scope_nodes = value; + else if((options & (CONTEXTS_V2_NODES | CONTEXTS_V2_CONTEXTS)) && !strcmp(name, "nodes")) req.nodes = value; + else if((options & CONTEXTS_V2_CONTEXTS) && !strcmp(name, "scope_contexts")) req.scope_contexts = value; + else if((options & CONTEXTS_V2_CONTEXTS) && !strcmp(name, "contexts")) req.contexts = value; + else if((options & CONTEXTS_V2_SEARCH) && !strcmp(name, "q")) req.q = value; + else if(!strcmp(name, "timeout")) req.timeout_ms = str2l(value); + } + + options |= CONTEXTS_V2_DEBUG; + + buffer_flush(w->response.data); + buffer_no_cacheable(w->response.data); + return rrdcontext_to_json_v2(w->response.data, &req, options); +} + +static int web_client_api_request_v2_q(RRDHOST *host __maybe_unused, struct web_client *w, char *url) { + return web_client_api_request_v2_contexts_internal(host, w, url, CONTEXTS_V2_SEARCH | CONTEXTS_V2_CONTEXTS | CONTEXTS_V2_NODES); +} + +static int web_client_api_request_v2_contexts(RRDHOST *host __maybe_unused, struct web_client *w, char *url) { + return web_client_api_request_v2_contexts_internal(host, w, url, CONTEXTS_V2_CONTEXTS); +} + +static int web_client_api_request_v2_nodes(RRDHOST *host __maybe_unused, struct web_client *w, char *url) { + return web_client_api_request_v2_contexts_internal(host, w, url, CONTEXTS_V2_NODES | CONTEXTS_V2_NODES_DETAILED); +} + +static int web_client_api_request_v2_weights(RRDHOST *host __maybe_unused, struct web_client *w, char *url) { + return web_client_api_request_weights(host, w, url, WEIGHTS_METHOD_VALUE, + WEIGHTS_FORMAT_MULTINODE, 2); +} + +#define GROUP_BY_KEY_MAX_LENGTH 30 +static struct { + char group_by[GROUP_BY_KEY_MAX_LENGTH + 1]; + char aggregation[GROUP_BY_KEY_MAX_LENGTH + 1]; + char group_by_label[GROUP_BY_KEY_MAX_LENGTH + 1]; +} group_by_keys[MAX_QUERY_GROUP_BY_PASSES]; + +__attribute__((constructor)) void initialize_group_by_keys(void) { + for(size_t g = 0; g < MAX_QUERY_GROUP_BY_PASSES ;g++) { + snprintfz(group_by_keys[g].group_by, GROUP_BY_KEY_MAX_LENGTH, "group_by[%zu]", g); + snprintfz(group_by_keys[g].aggregation, GROUP_BY_KEY_MAX_LENGTH, "aggregation[%zu]", g); + snprintfz(group_by_keys[g].group_by_label, GROUP_BY_KEY_MAX_LENGTH, "group_by_label[%zu]", g); + } +} + +static int web_client_api_request_v2_data(RRDHOST *host __maybe_unused, struct web_client *w, char *url) { + usec_t received_ut = now_monotonic_usec(); + + int ret = HTTP_RESP_BAD_REQUEST; + + buffer_flush(w->response.data); + + char *google_version = "0.6", + *google_reqId = "0", + *google_sig = "0", + *google_out = "json", + *responseHandler = NULL, + *outFileName = NULL; + + time_t last_timestamp_in_data = 0, google_timestamp = 0; + + char *scope_nodes = NULL; + char *scope_contexts = NULL; + char *nodes = NULL; + char *contexts = NULL; + char *instances = NULL; + char *dimensions = NULL; + char *before_str = NULL; + char *after_str = NULL; + char *resampling_time_str = NULL; + char *points_str = NULL; + char *timeout_str = NULL; + char *labels = NULL; + char *alerts = NULL; + char *time_group_options = NULL; + char *tier_str = NULL; + size_t tier = 0; + RRDR_TIME_GROUPING time_group = RRDR_GROUPING_AVERAGE; + DATASOURCE_FORMAT format = DATASOURCE_JSON2; + RRDR_OPTIONS options = RRDR_OPTION_VIRTUAL_POINTS | RRDR_OPTION_JSON_WRAP | RRDR_OPTION_RETURN_JWAR; + + struct group_by_pass group_by[MAX_QUERY_GROUP_BY_PASSES] = { + { + .group_by = RRDR_GROUP_BY_DIMENSION, + .group_by_label = NULL, + .aggregation = RRDR_GROUP_BY_FUNCTION_AVERAGE, + }, + }; + + size_t group_by_idx = 0, group_by_label_idx = 0, aggregation_idx = 0; + + while(url) { + char *value = strsep_skip_consecutive_separators(&url, "&"); + if(!value || !*value) continue; + + char *name = strsep_skip_consecutive_separators(&value, "="); + if(!name || !*name) continue; + if(!value || !*value) continue; + + // name and value are now the parameters + // they are not null and not empty + + if(!strcmp(name, "scope_nodes")) scope_nodes = value; + else if(!strcmp(name, "scope_contexts")) scope_contexts = value; + else if(!strcmp(name, "nodes")) nodes = value; + else if(!strcmp(name, "contexts")) contexts = value; + else if(!strcmp(name, "instances")) instances = value; + else if(!strcmp(name, "dimensions")) dimensions = value; + else if(!strcmp(name, "labels")) labels = value; + else if(!strcmp(name, "alerts")) alerts = value; + else if(!strcmp(name, "after")) after_str = value; + else if(!strcmp(name, "before")) before_str = value; + else if(!strcmp(name, "points")) points_str = value; + else if(!strcmp(name, "timeout")) timeout_str = value; + else if(!strcmp(name, "group_by")) { + group_by[group_by_idx++].group_by = group_by_parse(value); + if(group_by_idx >= MAX_QUERY_GROUP_BY_PASSES) + group_by_idx = MAX_QUERY_GROUP_BY_PASSES - 1; + } + else if(!strcmp(name, "group_by_label")) { + group_by[group_by_label_idx++].group_by_label = value; + if(group_by_label_idx >= MAX_QUERY_GROUP_BY_PASSES) + group_by_label_idx = MAX_QUERY_GROUP_BY_PASSES - 1; + } + else if(!strcmp(name, "aggregation")) { + group_by[aggregation_idx++].aggregation = group_by_aggregate_function_parse(value); + if(aggregation_idx >= MAX_QUERY_GROUP_BY_PASSES) + aggregation_idx = MAX_QUERY_GROUP_BY_PASSES - 1; + } + else if(!strcmp(name, "format")) format = web_client_api_request_v1_data_format(value); + else if(!strcmp(name, "options")) options |= web_client_api_request_v1_data_options(value); + else if(!strcmp(name, "time_group")) time_group = time_grouping_parse(value, RRDR_GROUPING_AVERAGE); + else if(!strcmp(name, "time_group_options")) time_group_options = value; + else if(!strcmp(name, "time_resampling")) resampling_time_str = value; + else if(!strcmp(name, "tier")) tier_str = value; + else if(!strcmp(name, "callback")) responseHandler = value; + else if(!strcmp(name, "filename")) outFileName = value; + else if(!strcmp(name, "tqx")) { + // parse Google Visualization API options + // https://developers.google.com/chart/interactive/docs/dev/implementing_data_source + char *tqx_name, *tqx_value; + + while(value) { + tqx_value = strsep_skip_consecutive_separators(&value, ";"); + if(!tqx_value || !*tqx_value) continue; + + tqx_name = strsep_skip_consecutive_separators(&tqx_value, ":"); + if(!tqx_name || !*tqx_name) continue; + if(!tqx_value || !*tqx_value) continue; + + if(!strcmp(tqx_name, "version")) + google_version = tqx_value; + else if(!strcmp(tqx_name, "reqId")) + google_reqId = tqx_value; + else if(!strcmp(tqx_name, "sig")) { + google_sig = tqx_value; + google_timestamp = strtoul(google_sig, NULL, 0); + } + else if(!strcmp(tqx_name, "out")) { + google_out = tqx_value; + format = web_client_api_request_v1_data_google_format(google_out); + } + else if(!strcmp(tqx_name, "responseHandler")) + responseHandler = tqx_value; + else if(!strcmp(tqx_name, "outFileName")) + outFileName = tqx_value; + } + } + else { + for(size_t g = 0; g < MAX_QUERY_GROUP_BY_PASSES ;g++) { + if(!strcmp(name, group_by_keys[g].group_by)) + group_by[g].group_by = group_by_parse(value); + else if(!strcmp(name, group_by_keys[g].group_by_label)) + group_by[g].group_by_label = value; + else if(!strcmp(name, group_by_keys[g].aggregation)) + group_by[g].aggregation = group_by_aggregate_function_parse(value); + } + } + } + + // validate the google parameters given + fix_google_param(google_out); + fix_google_param(google_sig); + fix_google_param(google_reqId); + fix_google_param(google_version); + fix_google_param(responseHandler); + fix_google_param(outFileName); + + for(size_t g = 0; g < MAX_QUERY_GROUP_BY_PASSES ;g++) { + if (group_by[g].group_by_label && *group_by[g].group_by_label) + group_by[g].group_by |= RRDR_GROUP_BY_LABEL; + } + + if(group_by[0].group_by == RRDR_GROUP_BY_NONE) + group_by[0].group_by = RRDR_GROUP_BY_DIMENSION; + + for(size_t g = 0; g < MAX_QUERY_GROUP_BY_PASSES ;g++) { + if ((group_by[g].group_by & ~(RRDR_GROUP_BY_DIMENSION)) || (options & RRDR_OPTION_PERCENTAGE)) { + options |= RRDR_OPTION_ABSOLUTE; + break; + } + } + + if(options & RRDR_OPTION_DEBUG) + options &= ~RRDR_OPTION_MINIFY; + + if(tier_str && *tier_str) { + tier = str2ul(tier_str); + if(tier < storage_tiers) + options |= RRDR_OPTION_SELECTED_TIER; + else + tier = 0; + } + + time_t before = (before_str && *before_str)?str2l(before_str):0; + time_t after = (after_str && *after_str) ?str2l(after_str):-600; + size_t points = (points_str && *points_str)?str2u(points_str):0; + int timeout = (timeout_str && *timeout_str)?str2i(timeout_str): 0; + time_t resampling_time = (resampling_time_str && *resampling_time_str) ? str2l(resampling_time_str) : 0; + + QUERY_TARGET_REQUEST qtr = { + .version = 2, + .scope_nodes = scope_nodes, + .scope_contexts = scope_contexts, + .after = after, + .before = before, + .host = NULL, + .st = NULL, + .nodes = nodes, + .contexts = contexts, + .instances = instances, + .dimensions = dimensions, + .alerts = alerts, + .timeout_ms = timeout, + .points = points, + .format = format, + .options = options, + .time_group_method = time_group, + .time_group_options = time_group_options, + .resampling_time = resampling_time, + .tier = tier, + .chart_label_key = NULL, + .labels = labels, + .query_source = QUERY_SOURCE_API_DATA, + .priority = STORAGE_PRIORITY_NORMAL, + .received_ut = received_ut, + + .interrupt_callback = web_client_interrupt_callback, + .interrupt_callback_data = w, + }; + + for(size_t g = 0; g < MAX_QUERY_GROUP_BY_PASSES ;g++) + qtr.group_by[g] = group_by[g]; + + QUERY_TARGET *qt = query_target_create(&qtr); + ONEWAYALLOC *owa = NULL; + + if(!qt) { + buffer_sprintf(w->response.data, "Failed to prepare the query."); + ret = HTTP_RESP_INTERNAL_SERVER_ERROR; + goto cleanup; + } + + web_client_timeout_checkpoint_set(w, timeout); + if(web_client_timeout_checkpoint_and_check(w, NULL)) { + ret = w->response.code; + goto cleanup; + } + + if(outFileName && *outFileName) { + buffer_sprintf(w->response.header, "Content-Disposition: attachment; filename=\"%s\"\r\n", outFileName); + debug(D_WEB_CLIENT, "%llu: generating outfilename header: '%s'", w->id, outFileName); + } + + if(format == DATASOURCE_DATATABLE_JSONP) { + if(responseHandler == NULL) + responseHandler = "google.visualization.Query.setResponse"; + + debug(D_WEB_CLIENT_ACCESS, "%llu: GOOGLE JSON/JSONP: version = '%s', reqId = '%s', sig = '%s', out = '%s', responseHandler = '%s', outFileName = '%s'", + w->id, google_version, google_reqId, google_sig, google_out, responseHandler, outFileName + ); + + buffer_sprintf( + w->response.data, + "%s({version:'%s',reqId:'%s',status:'ok',sig:'%"PRId64"',table:", + responseHandler, + google_version, + google_reqId, + (int64_t)now_realtime_sec()); + } + else if(format == DATASOURCE_JSONP) { + if(responseHandler == NULL) + responseHandler = "callback"; + + buffer_strcat(w->response.data, responseHandler); + buffer_strcat(w->response.data, "("); + } + + owa = onewayalloc_create(0); + ret = data_query_execute(owa, w->response.data, qt, &last_timestamp_in_data); + + if(format == DATASOURCE_DATATABLE_JSONP) { + if(google_timestamp < last_timestamp_in_data) + buffer_strcat(w->response.data, "});"); + + else { + // the client already has the latest data + buffer_flush(w->response.data); + buffer_sprintf(w->response.data, + "%s({version:'%s',reqId:'%s',status:'error',errors:[{reason:'not_modified',message:'Data not modified'}]});", + responseHandler, google_version, google_reqId); + } + } + else if(format == DATASOURCE_JSONP) + buffer_strcat(w->response.data, ");"); + +cleanup: + query_target_release(qt); + onewayalloc_destroy(owa); + return ret; +} + +static int web_client_api_request_v2_webrtc(RRDHOST *host __maybe_unused, struct web_client *w, char *url __maybe_unused) { + return webrtc_new_connection(w->post_payload, w->response.data); +} + +static struct web_api_command api_commands_v2[] = { + {"data", 0, WEB_CLIENT_ACL_DASHBOARD_ACLK_WEBRTC, web_client_api_request_v2_data}, + {"nodes", 0, WEB_CLIENT_ACL_DASHBOARD_ACLK_WEBRTC, web_client_api_request_v2_nodes}, + {"contexts", 0, WEB_CLIENT_ACL_DASHBOARD_ACLK_WEBRTC, web_client_api_request_v2_contexts}, + {"weights", 0, WEB_CLIENT_ACL_DASHBOARD_ACLK_WEBRTC, web_client_api_request_v2_weights}, + {"q", 0, WEB_CLIENT_ACL_DASHBOARD_ACLK_WEBRTC, web_client_api_request_v2_q}, + + {"rtc_offer", 0, WEB_CLIENT_ACL_DASHBOARD | WEB_CLIENT_ACL_ACLK, web_client_api_request_v2_webrtc}, + + // terminator + {NULL, 0, WEB_CLIENT_ACL_NONE, NULL}, +}; + +inline int web_client_api_request_v2(RRDHOST *host, struct web_client *w, char *url_path_endpoint) { + static int initialized = 0; + + if(unlikely(initialized == 0)) { + initialized = 1; + + for(int i = 0; api_commands_v2[i].command ; i++) + api_commands_v2[i].hash = simple_hash(api_commands_v2[i].command); + } + + return web_client_api_request_vX(host, w, url_path_endpoint, api_commands_v2); +} diff --git a/web/api/web_api_v2.h b/web/api/web_api_v2.h new file mode 100644 index 000000000..4a1893bd8 --- /dev/null +++ b/web/api/web_api_v2.h @@ -0,0 +1,12 @@ +// SPDX-License-Identifier: GPL-3.0-or-later + +#ifndef NETDATA_WEB_API_V2_H +#define NETDATA_WEB_API_V2_H 1 + +#include "web_api.h" + +struct web_client; + +int web_client_api_request_v2(RRDHOST *host, struct web_client *w, char *url_path_endpoint); + +#endif //NETDATA_WEB_API_V2_H diff --git a/web/gui/README.md b/web/gui/README.md index fbd7da4df..eefeb6d0b 100644 --- a/web/gui/README.md +++ b/web/gui/README.md @@ -2,6 +2,9 @@ title: "Local Agent dashboard" description: "The local Netdata Agent dashboard is the heart of health monitoring and performance troubleshooting, with hundreds of real-time charts." custom_edit_url: https://github.com/netdata/netdata/edit/master/web/gui/README.md +sidebar_label: "Local Agent dashboard" +learn_status: "Published" +learn_rel_path: "Operations" --> # Local Agent dashboard @@ -28,10 +31,14 @@ behind an [Nginx proxy](https://github.com/netdata/netdata/blob/master/docs/Runn Beyond charts, the local dashboard can be broken down into three key areas: -1. [**Sections**](#sections) -2. [**Time & date picker**](#time--date-picker) -3. [**Metrics menus/submenus**](#metrics-menus) -4. [**Netdata Cloud menus: Spaces, War Rooms, and Visited nodes)**](#cloud-menus-spaces-war-rooms-and-visited-nodes) +- [Local Agent dashboard](#local-agent-dashboard) + - [Navigating the local dashboard](#navigating-the-local-dashboard) + - [Sections](#sections) + - [Time \& date picker](#time--date-picker) + - [Metrics menus](#metrics-menus) + - [Cloud menus (Spaces, War Rooms, and Visited nodes)](#cloud-menus-spaces-war-rooms-and-visited-nodes) + - [Customizing the local dashboard](#customizing-the-local-dashboard) + - [Custom dashboards](#custom-dashboards) ![Annotated screenshot of the local Agent dashboard](https://user-images.githubusercontent.com/1153921/101509403-f7e59400-3935-11eb-9abd-cbecfa3ee49a.png) @@ -99,9 +106,6 @@ a War Room's name to jump to the Netdata Cloud web interface. ![A screenshot of the Cloud menus](https://user-images.githubusercontent.com/1153921/80837210-3f8b8c80-8bab-11ea-9c75-128c2d823ef8.png) -If you want to know more about how Cloud populates this menu, and the Agent-Cloud integration at a high level, see our -document on [using the Agent with Netdata Cloud](https://github.com/netdata/netdata/blob/master/docs/agent-cloud.md). - ## Customizing the local dashboard Netdata stores information about individual charts in the `dashboard_info.js` diff --git a/web/gui/confluence/README.md b/web/gui/confluence/README.md index 9e7b8025f..219a48ccc 100644 --- a/web/gui/confluence/README.md +++ b/web/gui/confluence/README.md @@ -1,6 +1,10 @@ # Atlassian Confluence dashboards diff --git a/web/gui/custom/README.md b/web/gui/custom/README.md index 0751f2087..2924a3211 100644 --- a/web/gui/custom/README.md +++ b/web/gui/custom/README.md @@ -1,24 +1,10 @@ - - # Custom dashboards -You can: - -- create your own dashboards using simple HTML (no javascript is required for - basic dashboards) -- utilize any or all of the available chart libraries, on the same dashboard -- use data from one or more Netdata servers, on the same dashboard -- host your dashboard HTML page on any web server, anywhere +You can build custom Netdata dashboards just with some basic HTML knowledge. -You can also add Netdata charts to existing web pages. +Custom dashboards allow you to utilize any or all of the available chart libraries, on the same dashboard. +You can use data from one or more Netdata servers, on the same dashboard and host your dashboard HTML page on +any web server, anywhere. You can also add Netdata charts to existing web pages. Check this **[very simple working example of a custom dashboard](http://netdata.firehol.org/demo.html)**. @@ -30,7 +16,8 @@ If you plan to put the dashboard on TV, check out [tv.html](http://netdata.firehol.org/tv.html). Here's is a screenshot of it, monitoring two servers on the same page: -![image](https://cloud.githubusercontent.com/assets/2662304/14252187/d8d5f78e-fa8e-11e5-990d-99821d38c874.png) +image + diff --git a/web/gui/dashboard/Makefile.am b/web/gui/dashboard/Makefile.am index f939a7ead..e761167ee 100644 --- a/web/gui/dashboard/Makefile.am +++ b/web/gui/dashboard/Makefile.am @@ -26,7 +26,7 @@ dist_web_DATA = \ $(srcdir)/index.html \ $(srcdir)/infographic.html \ $(srcdir)/manifest.json \ - $(srcdir)/precache-manifest.5fec6109084644adf7bf854243e1a044.js \ + $(srcdir)/precache-manifest.21dcd7c609bff6504512face054c360f.js \ $(srcdir)/refresh-badges.js \ $(srcdir)/robots.txt \ $(srcdir)/service-worker.js \ @@ -147,9 +147,9 @@ webstaticjsdir=$(webdir)/static/js dist_webstaticjs_DATA = \ $(srcdir)/static/js/10.a5cd7d0e.chunk.js \ $(srcdir)/static/js/10.a5cd7d0e.chunk.js.map \ - $(srcdir)/static/js/2.92ca8446.chunk.js \ - $(srcdir)/static/js/2.92ca8446.chunk.js.LICENSE \ - $(srcdir)/static/js/2.92ca8446.chunk.js.map \ + $(srcdir)/static/js/2.ae48988e.chunk.js \ + $(srcdir)/static/js/2.ae48988e.chunk.js.LICENSE \ + $(srcdir)/static/js/2.ae48988e.chunk.js.map \ $(srcdir)/static/js/3.f137faca.chunk.js \ $(srcdir)/static/js/3.f137faca.chunk.js.map \ $(srcdir)/static/js/4.2dbcd906.chunk.js \ @@ -165,9 +165,9 @@ dist_webstaticjs_DATA = \ $(srcdir)/static/js/8.b4161ea2.chunk.js.map \ $(srcdir)/static/js/9.a4363968.chunk.js \ $(srcdir)/static/js/9.a4363968.chunk.js.map \ - $(srcdir)/static/js/main.7d1bdca1.chunk.js \ - $(srcdir)/static/js/main.7d1bdca1.chunk.js.LICENSE \ - $(srcdir)/static/js/main.7d1bdca1.chunk.js.map \ + $(srcdir)/static/js/main.76dfe4de.chunk.js \ + $(srcdir)/static/js/main.76dfe4de.chunk.js.LICENSE \ + $(srcdir)/static/js/main.76dfe4de.chunk.js.map \ $(srcdir)/static/js/runtime-main.08abed8f.js \ $(srcdir)/static/js/runtime-main.08abed8f.js.map \ $(NULL) diff --git a/web/gui/dashboard/asset-manifest.json b/web/gui/dashboard/asset-manifest.json index 584402417..25b8cded2 100644 --- a/web/gui/dashboard/asset-manifest.json +++ b/web/gui/dashboard/asset-manifest.json @@ -1,13 +1,13 @@ { "files": { "main.css": "./static/css/main.53ba10f1.chunk.css", - "main.js": "./static/js/main.7d1bdca1.chunk.js", - "main.js.map": "./static/js/main.7d1bdca1.chunk.js.map", + "main.js": "./static/js/main.76dfe4de.chunk.js", + "main.js.map": "./static/js/main.76dfe4de.chunk.js.map", "runtime-main.js": "./static/js/runtime-main.08abed8f.js", "runtime-main.js.map": "./static/js/runtime-main.08abed8f.js.map", "static/css/2.c454aab8.chunk.css": "./static/css/2.c454aab8.chunk.css", - "static/js/2.92ca8446.chunk.js": "./static/js/2.92ca8446.chunk.js", - "static/js/2.92ca8446.chunk.js.map": "./static/js/2.92ca8446.chunk.js.map", + "static/js/2.ae48988e.chunk.js": "./static/js/2.ae48988e.chunk.js", + "static/js/2.ae48988e.chunk.js.map": "./static/js/2.ae48988e.chunk.js.map", "static/js/3.f137faca.chunk.js": "./static/js/3.f137faca.chunk.js", "static/js/3.f137faca.chunk.js.map": "./static/js/3.f137faca.chunk.js.map", "static/css/4.a36e3b73.chunk.css": "./static/css/4.a36e3b73.chunk.css", @@ -26,22 +26,22 @@ "static/js/10.a5cd7d0e.chunk.js": "./static/js/10.a5cd7d0e.chunk.js", "static/js/10.a5cd7d0e.chunk.js.map": "./static/js/10.a5cd7d0e.chunk.js.map", "index.html": "./index.html", - "precache-manifest.5fec6109084644adf7bf854243e1a044.js": "./precache-manifest.5fec6109084644adf7bf854243e1a044.js", + "precache-manifest.21dcd7c609bff6504512face054c360f.js": "./precache-manifest.21dcd7c609bff6504512face054c360f.js", "service-worker.js": "./service-worker.js", "static/css/2.c454aab8.chunk.css.map": "./static/css/2.c454aab8.chunk.css.map", "static/css/4.a36e3b73.chunk.css.map": "./static/css/4.a36e3b73.chunk.css.map", "static/css/main.53ba10f1.chunk.css.map": "./static/css/main.53ba10f1.chunk.css.map", - "static/js/2.92ca8446.chunk.js.LICENSE": "./static/js/2.92ca8446.chunk.js.LICENSE", + "static/js/2.ae48988e.chunk.js.LICENSE": "./static/js/2.ae48988e.chunk.js.LICENSE", "static/js/5.2f783a54.chunk.js.LICENSE": "./static/js/5.2f783a54.chunk.js.LICENSE", - "static/js/main.7d1bdca1.chunk.js.LICENSE": "./static/js/main.7d1bdca1.chunk.js.LICENSE", + "static/js/main.76dfe4de.chunk.js.LICENSE": "./static/js/main.76dfe4de.chunk.js.LICENSE", "static/media/index.css": "./static/media/ibm-plex-sans-latin-700italic.72e9af40.woff", "static/media/fonts.css": "./static/media/material-icons.0509ab09.woff2" }, "entrypoints": [ "static/js/runtime-main.08abed8f.js", "static/css/2.c454aab8.chunk.css", - "static/js/2.92ca8446.chunk.js", + "static/js/2.ae48988e.chunk.js", "static/css/main.53ba10f1.chunk.css", - "static/js/main.7d1bdca1.chunk.js" + "static/js/main.76dfe4de.chunk.js" ] } \ No newline at end of file diff --git a/web/gui/dashboard/dashboard-react.js b/web/gui/dashboard/dashboard-react.js index 99f868f42..8dbe6c3a6 100644 --- a/web/gui/dashboard/dashboard-react.js +++ b/web/gui/dashboard/dashboard-react.js @@ -175,7 +175,7 @@ NETDATA.options = { sync_selection: true, // enable or disable selection sync - pan_and_zoom_delay: 50, // when panning or zooming, how ofter to update the chart + pan_and_zoom_delay: 50, // when panning or zooming, how often to update the chart sync_pan_and_zoom: true, // enable or disable pan and zoom sync @@ -356,7 +356,7 @@ NETDATA.localStorage = { // todo temporary stuff which was originally in dashboard.js -// but needs to be refractored +// but needs to be refactored NETDATA.name2id = function (s) { return s .replace(/ /g, '_') diff --git a/web/gui/dashboard/dashboard.js b/web/gui/dashboard/dashboard.js index 83f7b584b..3d470a65c 100644 --- a/web/gui/dashboard/dashboard.js +++ b/web/gui/dashboard/dashboard.js @@ -1468,7 +1468,7 @@ NETDATA.options = { sync_selection: true, // enable or disable selection sync - pan_and_zoom_delay: 50, // when panning or zooming, how ofter to update the chart + pan_and_zoom_delay: 50, // when panning or zooming, how often to update the chart sync_pan_and_zoom: true, // enable or disable pan and zoom sync diff --git a/web/gui/dashboard/index.html b/web/gui/dashboard/index.html index db46d079f..d2d09ce74 100644 --- a/web/gui/dashboard/index.html +++ b/web/gui/dashboard/index.html @@ -13,4 +13,4 @@ } const overlayEl = document.getElementById('loadOverlay'); overlayEl.innerHTML = 'netdata
Real-time performance monitoring, done right!
'; - overlayEl.style = theme == 'slate' ? "background-color: #272b30; color: #373b40;" : "background-color: #fff; color: #ddd;";
\ No newline at end of file + overlayEl.style = theme == 'slate' ? "background-color: #272b30; color: #373b40;" : "background-color: #fff; color: #ddd;";
\ No newline at end of file diff --git a/web/gui/dashboard/precache-manifest.21dcd7c609bff6504512face054c360f.js b/web/gui/dashboard/precache-manifest.21dcd7c609bff6504512face054c360f.js new file mode 100644 index 000000000..71c86640e --- /dev/null +++ b/web/gui/dashboard/precache-manifest.21dcd7c609bff6504512face054c360f.js @@ -0,0 +1,190 @@ +self.__precacheManifest = (self.__precacheManifest || []).concat([ + { + "revision": "e3c4d364a9ff58ad73696ca1489b2f53", + "url": "./index.html" + }, + { + "revision": "74af867d0b165be1d3e9", + "url": "./static/css/2.c454aab8.chunk.css" + }, + { + "revision": "3f3e6e773062ffa97127", + "url": "./static/css/4.a36e3b73.chunk.css" + }, + { + "revision": "16fe102ed87c5308ae90", + "url": "./static/css/main.53ba10f1.chunk.css" + }, + { + "revision": "2e1518ba242fafff36c2", + "url": "./static/js/10.a5cd7d0e.chunk.js" + }, + { + "revision": "74af867d0b165be1d3e9", + "url": "./static/js/2.ae48988e.chunk.js" + }, + { + "revision": "202231b589b831e707a2050ef8b04086", + "url": "./static/js/2.ae48988e.chunk.js.LICENSE" + }, + { + "revision": "9d949a4191279169d355", + "url": "./static/js/3.f137faca.chunk.js" + }, + { + "revision": "3f3e6e773062ffa97127", + "url": "./static/js/4.2dbcd906.chunk.js" + }, + { + "revision": "0a44fcc2aa7ee04633c0", + "url": "./static/js/5.2f783a54.chunk.js" + }, + { + "revision": "f05f27d89effd681fe0717b6a67b9a0d", + "url": "./static/js/5.2f783a54.chunk.js.LICENSE" + }, + { + "revision": "38dacb6fd8c4687e55a7", + "url": "./static/js/6.e1951239.chunk.js" + }, + { + "revision": "31df05c0a16aeb47134f", + "url": "./static/js/7.c2417fb0.chunk.js" + }, + { + "revision": "5a726e66eb5aa05866c5", + "url": "./static/js/8.b4161ea2.chunk.js" + }, + { + "revision": "79862bcda7c7424c10fc", + "url": "./static/js/9.a4363968.chunk.js" + }, + { + "revision": "16fe102ed87c5308ae90", + "url": "./static/js/main.76dfe4de.chunk.js" + }, + { + "revision": "19356475904bddb45614eb6ff7f6cd44", + "url": "./static/js/main.76dfe4de.chunk.js.LICENSE" + }, + { + "revision": "a99878aeea4445b20339", + "url": "./static/js/runtime-main.08abed8f.js" + }, + { + "revision": "245539db8ee56425757ef728eda8194e", + "url": "./static/media/ibm-plex-sans-latin-100.245539db.woff2" + }, + { + "revision": "9a582f3a304f421eca4027517706843c", + "url": "./static/media/ibm-plex-sans-latin-100.9a582f3a.woff" + }, + { + "revision": "1ea7c5d21b5956b602bdf9656cfb353f", + "url": "./static/media/ibm-plex-sans-latin-100italic.1ea7c5d2.woff" + }, + { + "revision": "3c34cf080b38f5fb1d4c59ffa45b3967", + "url": "./static/media/ibm-plex-sans-latin-100italic.3c34cf08.woff2" + }, + { + "revision": "67524c36348a323f78f2845e3aafc2d4", + "url": "./static/media/ibm-plex-sans-latin-200.67524c36.woff" + }, + { + "revision": "bf72c8412ab06c393f52efc5beb26ea7", + "url": "./static/media/ibm-plex-sans-latin-200.bf72c841.woff2" + }, + { + "revision": "52df25607ec284ca361ae50ba24b3580", + "url": "./static/media/ibm-plex-sans-latin-200italic.52df2560.woff" + }, + { + "revision": "bbc2d55223638ce450424a917e1104b2", + "url": "./static/media/ibm-plex-sans-latin-200italic.bbc2d552.woff2" + }, + { + "revision": "10bb6a0ae6dc8000d999ab622a45e281", + "url": "./static/media/ibm-plex-sans-latin-300.10bb6a0a.woff" + }, + { + "revision": "9e1c48af24191f6ea8aede14957c5d01", + "url": "./static/media/ibm-plex-sans-latin-300.9e1c48af.woff2" + }, + { + "revision": "c76f2ab53673e964b6e6734c1c455761", + "url": "./static/media/ibm-plex-sans-latin-300italic.c76f2ab5.woff2" + }, + { + "revision": "d3566d5bb4f31d86bfb9fda09563b416", + "url": "./static/media/ibm-plex-sans-latin-300italic.d3566d5b.woff" + }, + { + "revision": "263d6267533501f58c33b12b382e3abb", + "url": "./static/media/ibm-plex-sans-latin-400.263d6267.woff2" + }, + { + "revision": "a2c56f946488a9a267ba6ba21471a217", + "url": "./static/media/ibm-plex-sans-latin-400.a2c56f94.woff" + }, + { + "revision": "272f86114c980c52c131dfc3b4ae3276", + "url": "./static/media/ibm-plex-sans-latin-400italic.272f8611.woff" + }, + { + "revision": "89a93a1bdde48c7bb104150de88affce", + "url": "./static/media/ibm-plex-sans-latin-400italic.89a93a1b.woff2" + }, + { + "revision": "0866c24487514ad726738fb24f8e015b", + "url": "./static/media/ibm-plex-sans-latin-500.0866c244.woff2" + }, + { + "revision": "f6d5c5d5b849796d6a8f5a2953b60753", + "url": "./static/media/ibm-plex-sans-latin-500.f6d5c5d5.woff" + }, + { + "revision": "ccd41bd1a5bfa8bad2cd8d35fdaeb3d1", + "url": "./static/media/ibm-plex-sans-latin-500italic.ccd41bd1.woff" + }, + { + "revision": "ffd12d59339823b8cf53b9f99b47d87c", + "url": "./static/media/ibm-plex-sans-latin-500italic.ffd12d59.woff2" + }, + { + "revision": "337b16517a230dc830b84dc6e6167b68", + "url": "./static/media/ibm-plex-sans-latin-600.337b1651.woff" + }, + { + "revision": "7852d4dc26ef44df58e23dc0b9722d6f", + "url": "./static/media/ibm-plex-sans-latin-600.7852d4dc.woff2" + }, + { + "revision": "17e5379fd9a99b9bcb26ea983f391b6a", + "url": "./static/media/ibm-plex-sans-latin-600italic.17e5379f.woff2" + }, + { + "revision": "6f4ba6aa87fa99d5bc2b90a7b40a0ded", + "url": "./static/media/ibm-plex-sans-latin-600italic.6f4ba6aa.woff" + }, + { + "revision": "b8809d619a33eb825b0450281ff752e7", + "url": "./static/media/ibm-plex-sans-latin-700.b8809d61.woff" + }, + { + "revision": "c9983d3d04f3ed6c2eafee1db1d24e06", + "url": "./static/media/ibm-plex-sans-latin-700.c9983d3d.woff2" + }, + { + "revision": "02954beec9e742bb1f3ae27b7e7cb71f", + "url": "./static/media/ibm-plex-sans-latin-700italic.02954bee.woff2" + }, + { + "revision": "72e9af409ddafc63a5dd380e34758560", + "url": "./static/media/ibm-plex-sans-latin-700italic.72e9af40.woff" + }, + { + "revision": "0509ab09c1b0d2200a4135803c91d6ce", + "url": "./static/media/material-icons.0509ab09.woff2" + } +]); \ No newline at end of file diff --git a/web/gui/dashboard/precache-manifest.5fec6109084644adf7bf854243e1a044.js b/web/gui/dashboard/precache-manifest.5fec6109084644adf7bf854243e1a044.js deleted file mode 100644 index 2816bb2a0..000000000 --- a/web/gui/dashboard/precache-manifest.5fec6109084644adf7bf854243e1a044.js +++ /dev/null @@ -1,190 +0,0 @@ -self.__precacheManifest = (self.__precacheManifest || []).concat([ - { - "revision": "928c945fab999ac6b49d381d496fd4fa", - "url": "./index.html" - }, - { - "revision": "9ff07d20678a36d676fa", - "url": "./static/css/2.c454aab8.chunk.css" - }, - { - "revision": "3f3e6e773062ffa97127", - "url": "./static/css/4.a36e3b73.chunk.css" - }, - { - "revision": "1ede0c6b7366f2db76cd", - "url": "./static/css/main.53ba10f1.chunk.css" - }, - { - "revision": "2e1518ba242fafff36c2", - "url": "./static/js/10.a5cd7d0e.chunk.js" - }, - { - "revision": "9ff07d20678a36d676fa", - "url": "./static/js/2.92ca8446.chunk.js" - }, - { - "revision": "202231b589b831e707a2050ef8b04086", - "url": "./static/js/2.92ca8446.chunk.js.LICENSE" - }, - { - "revision": "9d949a4191279169d355", - "url": "./static/js/3.f137faca.chunk.js" - }, - { - "revision": "3f3e6e773062ffa97127", - "url": "./static/js/4.2dbcd906.chunk.js" - }, - { - "revision": "0a44fcc2aa7ee04633c0", - "url": "./static/js/5.2f783a54.chunk.js" - }, - { - "revision": "f05f27d89effd681fe0717b6a67b9a0d", - "url": "./static/js/5.2f783a54.chunk.js.LICENSE" - }, - { - "revision": "38dacb6fd8c4687e55a7", - "url": "./static/js/6.e1951239.chunk.js" - }, - { - "revision": "31df05c0a16aeb47134f", - "url": "./static/js/7.c2417fb0.chunk.js" - }, - { - "revision": "5a726e66eb5aa05866c5", - "url": "./static/js/8.b4161ea2.chunk.js" - }, - { - "revision": "79862bcda7c7424c10fc", - "url": "./static/js/9.a4363968.chunk.js" - }, - { - "revision": "1ede0c6b7366f2db76cd", - "url": "./static/js/main.7d1bdca1.chunk.js" - }, - { - "revision": "19356475904bddb45614eb6ff7f6cd44", - "url": "./static/js/main.7d1bdca1.chunk.js.LICENSE" - }, - { - "revision": "a99878aeea4445b20339", - "url": "./static/js/runtime-main.08abed8f.js" - }, - { - "revision": "245539db8ee56425757ef728eda8194e", - "url": "./static/media/ibm-plex-sans-latin-100.245539db.woff2" - }, - { - "revision": "9a582f3a304f421eca4027517706843c", - "url": "./static/media/ibm-plex-sans-latin-100.9a582f3a.woff" - }, - { - "revision": "1ea7c5d21b5956b602bdf9656cfb353f", - "url": "./static/media/ibm-plex-sans-latin-100italic.1ea7c5d2.woff" - }, - { - "revision": "3c34cf080b38f5fb1d4c59ffa45b3967", - "url": "./static/media/ibm-plex-sans-latin-100italic.3c34cf08.woff2" - }, - { - "revision": "67524c36348a323f78f2845e3aafc2d4", - "url": "./static/media/ibm-plex-sans-latin-200.67524c36.woff" - }, - { - "revision": "bf72c8412ab06c393f52efc5beb26ea7", - "url": "./static/media/ibm-plex-sans-latin-200.bf72c841.woff2" - }, - { - "revision": "52df25607ec284ca361ae50ba24b3580", - "url": "./static/media/ibm-plex-sans-latin-200italic.52df2560.woff" - }, - { - "revision": "bbc2d55223638ce450424a917e1104b2", - "url": "./static/media/ibm-plex-sans-latin-200italic.bbc2d552.woff2" - }, - { - "revision": "10bb6a0ae6dc8000d999ab622a45e281", - "url": "./static/media/ibm-plex-sans-latin-300.10bb6a0a.woff" - }, - { - "revision": "9e1c48af24191f6ea8aede14957c5d01", - "url": "./static/media/ibm-plex-sans-latin-300.9e1c48af.woff2" - }, - { - "revision": "c76f2ab53673e964b6e6734c1c455761", - "url": "./static/media/ibm-plex-sans-latin-300italic.c76f2ab5.woff2" - }, - { - "revision": "d3566d5bb4f31d86bfb9fda09563b416", - "url": "./static/media/ibm-plex-sans-latin-300italic.d3566d5b.woff" - }, - { - "revision": "263d6267533501f58c33b12b382e3abb", - "url": "./static/media/ibm-plex-sans-latin-400.263d6267.woff2" - }, - { - "revision": "a2c56f946488a9a267ba6ba21471a217", - "url": "./static/media/ibm-plex-sans-latin-400.a2c56f94.woff" - }, - { - "revision": "272f86114c980c52c131dfc3b4ae3276", - "url": "./static/media/ibm-plex-sans-latin-400italic.272f8611.woff" - }, - { - "revision": "89a93a1bdde48c7bb104150de88affce", - "url": "./static/media/ibm-plex-sans-latin-400italic.89a93a1b.woff2" - }, - { - "revision": "0866c24487514ad726738fb24f8e015b", - "url": "./static/media/ibm-plex-sans-latin-500.0866c244.woff2" - }, - { - "revision": "f6d5c5d5b849796d6a8f5a2953b60753", - "url": "./static/media/ibm-plex-sans-latin-500.f6d5c5d5.woff" - }, - { - "revision": "ccd41bd1a5bfa8bad2cd8d35fdaeb3d1", - "url": "./static/media/ibm-plex-sans-latin-500italic.ccd41bd1.woff" - }, - { - "revision": "ffd12d59339823b8cf53b9f99b47d87c", - "url": "./static/media/ibm-plex-sans-latin-500italic.ffd12d59.woff2" - }, - { - "revision": "337b16517a230dc830b84dc6e6167b68", - "url": "./static/media/ibm-plex-sans-latin-600.337b1651.woff" - }, - { - "revision": "7852d4dc26ef44df58e23dc0b9722d6f", - "url": "./static/media/ibm-plex-sans-latin-600.7852d4dc.woff2" - }, - { - "revision": "17e5379fd9a99b9bcb26ea983f391b6a", - "url": "./static/media/ibm-plex-sans-latin-600italic.17e5379f.woff2" - }, - { - "revision": "6f4ba6aa87fa99d5bc2b90a7b40a0ded", - "url": "./static/media/ibm-plex-sans-latin-600italic.6f4ba6aa.woff" - }, - { - "revision": "b8809d619a33eb825b0450281ff752e7", - "url": "./static/media/ibm-plex-sans-latin-700.b8809d61.woff" - }, - { - "revision": "c9983d3d04f3ed6c2eafee1db1d24e06", - "url": "./static/media/ibm-plex-sans-latin-700.c9983d3d.woff2" - }, - { - "revision": "02954beec9e742bb1f3ae27b7e7cb71f", - "url": "./static/media/ibm-plex-sans-latin-700italic.02954bee.woff2" - }, - { - "revision": "72e9af409ddafc63a5dd380e34758560", - "url": "./static/media/ibm-plex-sans-latin-700italic.72e9af40.woff" - }, - { - "revision": "0509ab09c1b0d2200a4135803c91d6ce", - "url": "./static/media/material-icons.0509ab09.woff2" - } -]); \ No newline at end of file diff --git a/web/gui/dashboard/service-worker.js b/web/gui/dashboard/service-worker.js index b7eba5a42..6b953f46d 100644 --- a/web/gui/dashboard/service-worker.js +++ b/web/gui/dashboard/service-worker.js @@ -14,7 +14,7 @@ importScripts("https://storage.googleapis.com/workbox-cdn/releases/4.3.1/workbox-sw.js"); importScripts( - "./precache-manifest.5fec6109084644adf7bf854243e1a044.js" + "./precache-manifest.21dcd7c609bff6504512face054c360f.js" ); self.addEventListener('message', (event) => { diff --git a/web/gui/dashboard/static/js/2.92ca8446.chunk.js b/web/gui/dashboard/static/js/2.92ca8446.chunk.js deleted file mode 100644 index 9a8101270..000000000 --- a/web/gui/dashboard/static/js/2.92ca8446.chunk.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! For license information please see 2.92ca8446.chunk.js.LICENSE */ -(this["webpackJsonp@netdata/dashboard"]=this["webpackJsonp@netdata/dashboard"]||[]).push([[2],[function(e,t,n){"use strict";e.exports=n(325)},function(e,t,n){(function(t){var n;n=function(){"use strict";var e=function(e){var t=e.id,n=e.viewBox,r=e.content;this.id=t,this.viewBox=n,this.content=r};function n(e,t){return e(t={exports:{}},t.exports),t.exports}e.prototype.stringify=function(){return this.content},e.prototype.toString=function(){return this.stringify()},e.prototype.destroy=function(){var e=this;["id","viewBox","content"].forEach((function(t){return delete e[t]}))},"undefined"!==typeof window?window:"undefined"!==typeof t||"undefined"!==typeof self&&self;var r=n((function(e,t){e.exports=function(){function e(e){return e&&"object"===typeof e&&"[object RegExp]"!==Object.prototype.toString.call(e)&&"[object Date]"!==Object.prototype.toString.call(e)}function t(t,n){var o;return n&&!0===n.clone&&e(t)?r((o=t,Array.isArray(o)?[]:{}),t,n):t}function n(n,o,i){var a=n.slice();return o.forEach((function(o,c){"undefined"===typeof a[c]?a[c]=t(o,i):e(o)?a[c]=r(n[c],o,i):-1===n.indexOf(o)&&a.push(t(o,i))})),a}function r(o,i,a){var c=Array.isArray(i),s=(a||{arrayMerge:n}).arrayMerge||n;return c?Array.isArray(o)?s(o,i,a):t(i,a):function(n,o,i){var a={};return e(n)&&Object.keys(n).forEach((function(e){a[e]=t(n[e],i)})),Object.keys(o).forEach((function(c){e(o[c])&&n[c]?a[c]=r(n[c],o[c],i):a[c]=t(o[c],i)})),a}(o,i,a)}return r.all=function(e,t){if(!Array.isArray(e)||e.length<2)throw new Error("first argument should be an array with at least two elements");return e.reduce((function(e,n){return r(e,n,t)}))},r}()})),o=n((function(e,t){t.default={svg:{name:"xmlns",uri:"http://www.w3.org/2000/svg"},xlink:{name:"xmlns:xlink",uri:"http://www.w3.org/1999/xlink"}},e.exports=t.default})),i=o.svg,a=o.xlink,c={};c[i.name]=i.uri,c[a.name]=a.uri;var s=function(e,t){return void 0===e&&(e=""),""+e+""};return function(e){function t(){e.apply(this,arguments)}e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t;var n={isMounted:{}};return n.isMounted.get=function(){return!!this.node},t.createFromExistingNode=function(e){return new t({id:e.getAttribute("id"),viewBox:e.getAttribute("viewBox"),content:e.outerHTML})},t.prototype.destroy=function(){this.isMounted&&this.unmount(),e.prototype.destroy.call(this)},t.prototype.mount=function(e){if(this.isMounted)return this.node;var t="string"===typeof e?document.querySelector(e):e,n=this.render();return this.node=n,t.appendChild(n),n},t.prototype.render=function(){var e=this.stringify();return function(e){var t=!!document.importNode,n=(new DOMParser).parseFromString(e,"image/svg+xml").documentElement;return t?document.importNode(n,!0):n}(s(e)).childNodes[0]},t.prototype.unmount=function(){this.node.parentNode.removeChild(this.node)},Object.defineProperties(t.prototype,n),t}(e)},e.exports=n()}).call(this,n(86))},function(e,t,n){(function(t){var n;n=function(){"use strict";function e(e,t){return e(t={exports:{}},t.exports),t.exports}"undefined"!==typeof window?window:"undefined"!==typeof t||"undefined"!==typeof self&&self;var n=e((function(e,t){e.exports=function(){function e(e){return e&&"object"===typeof e&&"[object RegExp]"!==Object.prototype.toString.call(e)&&"[object Date]"!==Object.prototype.toString.call(e)}function t(t,n){var o;return n&&!0===n.clone&&e(t)?r((o=t,Array.isArray(o)?[]:{}),t,n):t}function n(n,o,i){var a=n.slice();return o.forEach((function(o,c){"undefined"===typeof a[c]?a[c]=t(o,i):e(o)?a[c]=r(n[c],o,i):-1===n.indexOf(o)&&a.push(t(o,i))})),a}function r(o,i,a){var c=Array.isArray(i),s=(a||{arrayMerge:n}).arrayMerge||n;return c?Array.isArray(o)?s(o,i,a):t(i,a):function(n,o,i){var a={};return e(n)&&Object.keys(n).forEach((function(e){a[e]=t(n[e],i)})),Object.keys(o).forEach((function(c){e(o[c])&&n[c]?a[c]=r(n[c],o[c],i):a[c]=t(o[c],i)})),a}(o,i,a)}return r.all=function(e,t){if(!Array.isArray(e)||e.length<2)throw new Error("first argument should be an array with at least two elements");return e.reduce((function(e,n){return r(e,n,t)}))},r}()})),r=e((function(e,t){t.default={svg:{name:"xmlns",uri:"http://www.w3.org/2000/svg"},xlink:{name:"xmlns:xlink",uri:"http://www.w3.org/1999/xlink"}},e.exports=t.default})),o=r.svg,i=r.xlink,a={};a[o.name]=o.uri,a[i.name]=i.uri;var c,s=function(e,t){return void 0===e&&(e=""),""+e+""},l=r.svg,u=r.xlink,f={attrs:(c={style:["position: absolute","width: 0","height: 0"].join("; ")},c[l.name]=l.uri,c[u.name]=u.uri,c)},d=function(e){this.config=n(f,e||{}),this.symbols=[]};d.prototype.add=function(e){var t=this.symbols,n=this.find(e.id);return n?(t[t.indexOf(n)]=e,!1):(t.push(e),!0)},d.prototype.remove=function(e){var t=this.symbols,n=this.find(e);return!!n&&(t.splice(t.indexOf(n),1),n.destroy(),!0)},d.prototype.find=function(e){return this.symbols.filter((function(t){return t.id===e}))[0]||null},d.prototype.has=function(e){return null!==this.find(e)},d.prototype.stringify=function(){var e=this.config.attrs,t=this.symbols.map((function(e){return e.stringify()})).join("");return s(t,e)},d.prototype.toString=function(){return this.stringify()},d.prototype.destroy=function(){this.symbols.forEach((function(e){return e.destroy()}))};var h=function(e){var t=e.id,n=e.viewBox,r=e.content;this.id=t,this.viewBox=n,this.content=r};h.prototype.stringify=function(){return this.content},h.prototype.toString=function(){return this.stringify()},h.prototype.destroy=function(){var e=this;["id","viewBox","content"].forEach((function(t){return delete e[t]}))};var p=function(e){var t=!!document.importNode,n=(new DOMParser).parseFromString(e,"image/svg+xml").documentElement;return t?document.importNode(n,!0):n},z=function(e){function t(){e.apply(this,arguments)}e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t;var n={isMounted:{}};return n.isMounted.get=function(){return!!this.node},t.createFromExistingNode=function(e){return new t({id:e.getAttribute("id"),viewBox:e.getAttribute("viewBox"),content:e.outerHTML})},t.prototype.destroy=function(){this.isMounted&&this.unmount(),e.prototype.destroy.call(this)},t.prototype.mount=function(e){if(this.isMounted)return this.node;var t="string"===typeof e?document.querySelector(e):e,n=this.render();return this.node=n,t.appendChild(n),n},t.prototype.render=function(){var e=this.stringify();return p(s(e)).childNodes[0]},t.prototype.unmount=function(){this.node.parentNode.removeChild(this.node)},Object.defineProperties(t.prototype,n),t}(h),v={autoConfigure:!0,mountTo:"body",syncUrlsWithBaseTag:!1,listenLocationChangeEvent:!0,locationChangeEvent:"locationChange",locationChangeAngularEmitter:!1,usagesToUpdate:"use[*|href]",moveGradientsOutsideSymbol:!1},g=function(e){return Array.prototype.slice.call(e,0)},m={isChrome:function(){return/chrome/i.test(navigator.userAgent)},isFirefox:function(){return/firefox/i.test(navigator.userAgent)},isIE:function(){return/msie/i.test(navigator.userAgent)||/trident/i.test(navigator.userAgent)},isEdge:function(){return/edge/i.test(navigator.userAgent)}},y=function(e){var t=[];return g(e.querySelectorAll("style")).forEach((function(e){e.textContent+="",t.push(e)})),t},b=function(e){return(e||window.location.href).split("#")[0]},w=function(e){angular.module("ng").run(["$rootScope",function(t){t.$on("$locationChangeSuccess",(function(t,n,r){!function(e,t){var n=document.createEvent("CustomEvent");n.initCustomEvent(e,!1,!1,t),window.dispatchEvent(n)}(e,{oldUrl:r,newUrl:n})}))}])},k=function(e,t){return void 0===t&&(t="linearGradient, radialGradient, pattern"),g(e.querySelectorAll("symbol")).forEach((function(e){g(e.querySelectorAll(t)).forEach((function(t){e.parentNode.insertBefore(t,e)}))})),e},x=r.xlink.uri,j="xlink:href",M=/[{}|\\\^\[\]`"<>]/g;function C(e){return e.replace(M,(function(e){return"%"+e[0].charCodeAt(0).toString(16).toUpperCase()}))}var _,q=["clipPath","colorProfile","src","cursor","fill","filter","marker","markerStart","markerMid","markerEnd","mask","stroke","style"],S=q.map((function(e){return"["+e+"]"})).join(","),O=function(e,t,n,r){var o=C(n),i=C(r);(function(e,t){return g(e).reduce((function(e,n){if(!n.attributes)return e;var r=g(n.attributes),o=t?r.filter(t):r;return e.concat(o)}),[])})(e.querySelectorAll(S),(function(e){var t=e.localName,n=e.value;return-1!==q.indexOf(t)&&-1!==n.indexOf("url("+o)})).forEach((function(e){return e.value=e.value.replace(new RegExp(o.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),"g"),i)})),function(e,t,n){g(e).forEach((function(e){var r=e.getAttribute(j);if(r&&0===r.indexOf(t)){var o=r.replace(t,n);e.setAttributeNS(x,j,o)}}))}(t,o,i)},E={MOUNT:"mount",SYMBOL_MOUNT:"symbol_mount"},T=function(e){function t(t){var r=this;void 0===t&&(t={}),e.call(this,n(v,t));var o,i=(o=o||Object.create(null),{on:function(e,t){(o[e]||(o[e]=[])).push(t)},off:function(e,t){o[e]&&o[e].splice(o[e].indexOf(t)>>>0,1)},emit:function(e,t){(o[e]||[]).map((function(e){e(t)})),(o["*"]||[]).map((function(n){n(e,t)}))}});this._emitter=i,this.node=null;var a=this.config;if(a.autoConfigure&&this._autoConfigure(t),a.syncUrlsWithBaseTag){var c=document.getElementsByTagName("base")[0].getAttribute("href");i.on(E.MOUNT,(function(){return r.updateUrls("#",c)}))}var s=this._handleLocationChange.bind(this);this._handleLocationChange=s,a.listenLocationChangeEvent&&window.addEventListener(a.locationChangeEvent,s),a.locationChangeAngularEmitter&&w(a.locationChangeEvent),i.on(E.MOUNT,(function(e){a.moveGradientsOutsideSymbol&&k(e)})),i.on(E.SYMBOL_MOUNT,(function(e){a.moveGradientsOutsideSymbol&&k(e.parentNode),(m.isIE()||m.isEdge())&&y(e)}))}e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t;var r={isMounted:{}};return r.isMounted.get=function(){return!!this.node},t.prototype._autoConfigure=function(e){var t=this.config;"undefined"===typeof e.syncUrlsWithBaseTag&&(t.syncUrlsWithBaseTag="undefined"!==typeof document.getElementsByTagName("base")[0]),"undefined"===typeof e.locationChangeAngularEmitter&&(t.locationChangeAngularEmitter="angular"in window),"undefined"===typeof e.moveGradientsOutsideSymbol&&(t.moveGradientsOutsideSymbol=m.isFirefox())},t.prototype._handleLocationChange=function(e){var t=e.detail,n=t.oldUrl,r=t.newUrl;this.updateUrls(n,r)},t.prototype.add=function(t){var n=e.prototype.add.call(this,t);return this.isMounted&&n&&(t.mount(this.node),this._emitter.emit(E.SYMBOL_MOUNT,t.node)),n},t.prototype.attach=function(e){var t=this,n=this;if(n.isMounted)return n.node;var r="string"===typeof e?document.querySelector(e):e;return n.node=r,this.symbols.forEach((function(e){e.mount(n.node),t._emitter.emit(E.SYMBOL_MOUNT,e.node)})),g(r.querySelectorAll("symbol")).forEach((function(e){var t=z.createFromExistingNode(e);t.node=e,n.add(t)})),this._emitter.emit(E.MOUNT,r),r},t.prototype.destroy=function(){var e=this.config,t=this.symbols,n=this._emitter;t.forEach((function(e){return e.destroy()})),n.off("*"),window.removeEventListener(e.locationChangeEvent,this._handleLocationChange),this.isMounted&&this.unmount()},t.prototype.mount=function(e,t){if(void 0===e&&(e=this.config.mountTo),void 0===t&&(t=!1),this.isMounted)return this.node;var n="string"===typeof e?document.querySelector(e):e,r=this.render();return this.node=r,t&&n.childNodes[0]?n.insertBefore(r,n.childNodes[0]):n.appendChild(r),this._emitter.emit(E.MOUNT,r),r},t.prototype.render=function(){return p(this.stringify())},t.prototype.unmount=function(){this.node.parentNode.removeChild(this.node)},t.prototype.updateUrls=function(e,t){if(!this.isMounted)return!1;var n=document.querySelectorAll(this.config.usagesToUpdate);return O(this.node,n,b(e)+"#",b(t)+"#"),!0},Object.defineProperties(t.prototype,r),t}(d),A=e((function(e){e.exports=function(){var e,t=[],n=document,r=n.documentElement.doScroll,o=(r?/^loaded|^c/:/^loaded|^i|^c/).test(n.readyState);return o||n.addEventListener("DOMContentLoaded",e=function(){for(n.removeEventListener("DOMContentLoaded",e),o=1;e=t.shift();)e()}),function(e){o?setTimeout(e,0):t.push(e)}}()}));window.__SVG_SPRITE__?_=window.__SVG_SPRITE__:(_=new T({attrs:{id:"__SVG_SPRITE_NODE__"}}),window.__SVG_SPRITE__=_);var L=function(){var e=document.getElementById("__SVG_SPRITE_NODE__");e?_.attach(e):_.mount(document.body,!0)};return document.body?L():A(L),_},e.exports=n()}).call(this,n(86))},function(e,t,n){"use strict";var r={};n.r(r),n.d(r,"SIZE_SUB_UNIT",(function(){return h})),n.d(r,"SIZE_UNIT",(function(){return p})),n.d(r,"GUTTER_HEIGHT",(function(){return z}));var o={};n.r(o),n.d(o,"findFilterValues",(function(){return Uy})),n.d(o,"removeSingleFilterValue",(function(){return Wy})),n.d(o,"markSelectedFacetValuesFromFilters",(function(){return Gy})),n.d(o,"doFilterValuesMatch",(function(){return Yy})),n.d(o,"mergeFilters",(function(){return $y})),n.d(o,"isFilterValueRange",(function(){return Zy}));var i={};n.r(i),n.d(i,"addFilter",(function(){return Wb})),n.d(i,"trackAutocompleteClickThrough",(function(){return Gb})),n.d(i,"clearFilters",(function(){return Yb})),n.d(i,"removeFilter",(function(){return $b})),n.d(i,"reset",(function(){return Zb})),n.d(i,"setCurrent",(function(){return Xb})),n.d(i,"setFilter",(function(){return Kb})),n.d(i,"setResultsPerPage",(function(){return Qb})),n.d(i,"setSearchTerm",(function(){return Jb})),n.d(i,"setSort",(function(){return ew})),n.d(i,"trackClickThrough",(function(){return tw})),n.d(i,"a11yNotify",(function(){return cw}));var a=n(0),c=n.n(a),s=n(4),l={transparent:{full:"rgba(255, 255, 255, 0.0)",semi:"rgba(255, 255, 255, 0.5)",popover:"rgba(18, 36, 50, 0.9)"},green:{chateau:"#42B861",netdata:"#00AB44",deyork:"#68C47D",vista:"#96D4A2",fringyFlower:"#BFE5C6",frostee:"#E5F5E8",limeGreen:"#48E499"},red:{pomegranate:"#FF4136",carnation:"#F95251",apricot:"#ED7374",wewak:"#F59B9B",pastelpink:"#FFCED3",lavender:"#FFEBEF"},yellow:{amber:"#FFC300",sunglow:"#FFCC26",seaBuckthorn:"#F9A825",mustard:"#FFD74F",salomie:"#FFE182",buttermilk:"#FFEDB3",ginfizz:"#FFF8E1"},neutral:{white:"#FFFFFF",black:"#000000",limedSpruce:"#35414A",regentgrey:"#8F9EAA",blackhaze:"#F7F8F8",iron:"#CFD5DA",porcelain:"#ECEEEF",bluebayoux:"#536775",shark:"#1C1E22",tuna:"#383B40",outerSpace:"#2B3136"},purple:{mauve:"#DB94F4",daisy:"#563D7C",lilac:"#B596F8"},blue:{aquamarine:"#19C89E",indigo:"#5790FF",cyan:"#00BAE2"}},u=function(){return(u=Object.assign||function(e){for(var t,n=1,r=arguments.length;n=arguments.length)?c=t[a]:(c=arguments[o],o+=1),r[a]=c,x(c)||(i-=1),a+=1}return i<=0?n.apply(this,r):C(i,_(e,r,n))}}var q=M((function(e,t){return 1===e?j(t):C(e,_(e,[],t))}));function S(e){return function t(n,r,o){switch(arguments.length){case 0:return t;case 1:return x(n)?t:M((function(t,r){return e(n,t,r)}));case 2:return x(n)&&x(r)?t:x(n)?M((function(t,n){return e(t,r,n)})):x(r)?M((function(t,r){return e(n,t,r)})):j((function(t){return e(n,r,t)}));default:return x(n)&&x(r)&&x(o)?t:x(n)&&x(r)?M((function(t,n){return e(t,n,o)})):x(n)&&x(o)?M((function(t,n){return e(t,r,n)})):x(r)&&x(o)?M((function(t,r){return e(n,t,r)})):x(n)?j((function(t){return e(t,r,o)})):x(r)?j((function(t){return e(n,t,o)})):x(o)?j((function(t){return e(n,r,t)})):e(n,r,o)}}}var O=Array.isArray||function(e){return null!=e&&e.length>=0&&"[object Array]"===Object.prototype.toString.call(e)};function E(e){return null!=e&&"function"===typeof e["@@transducer/step"]}function T(e,t,n){return function(){if(0===arguments.length)return n();var r=arguments[arguments.length-1];if(!O(r)){for(var o=0;o0&&(e.hasOwnProperty(0)&&e.hasOwnProperty(e.length-1)))))})),P=function(){function e(e){this.f=e}return e.prototype["@@transducer/init"]=function(){throw new Error("init not implemented on XWrap")},e.prototype["@@transducer/result"]=function(e){return e},e.prototype["@@transducer/step"]=function(e,t){return this.f(e,t)},e}();function V(e){return new P(e)}var R=M((function(e,t){return C(e.length,(function(){return e.apply(t,arguments)}))}));function I(e,t,n){for(var r=n.next();!r.done;){if((t=e["@@transducer/step"](t,r.value))&&t["@@transducer/reduced"]){t=t["@@transducer/value"];break}r=n.next()}return e["@@transducer/result"](t)}function N(e,t,n,r){return e["@@transducer/result"](n[r](R(e["@@transducer/step"],e),t))}var F="undefined"!==typeof Symbol?Symbol.iterator:"@@iterator";function B(e,t,n){if("function"===typeof e&&(e=V(e)),D(n))return function(e,t,n){for(var r=0,o=n.length;r=0;)G(t=X[n],e)&&!Q(r,t)&&(r[r.length]=t),n-=1;return r})):j((function(e){return Object(e)!==e?[]:Object.keys(e)})),ee=M(T(["fantasy-land/map","map"],W,(function(e,t){switch(Object.prototype.toString.call(t)){case"[object Function]":return q(t.length,(function(){return e.call(this,t.apply(this,arguments))}));case"[object Object]":return B((function(n,r){return n[r]=e(t[r]),n}),{},J(t));default:return L(e,t)}}))),te=Number.isInteger||function(e){return e<<0===e},ne=M((function(e,t){var n=e<0?t.length+e:e;return H(t)?t.charAt(n):t[n]})),re=S(B);function oe(e){return function t(n){for(var r,o,i,a=[],c=0,s=n.length;c=0;){if(n[i]===e)return r[i]===t;i-=1}switch(o){case"Map":return e.size===t.size&&ve(e.entries(),t.entries(),n.concat([e]),r.concat([t]));case"Set":return e.size===t.size&&ve(e.values(),t.values(),n.concat([e]),r.concat([t]));case"Arguments":case"Array":case"Object":case"Boolean":case"Number":case"String":case"Date":case"Error":case"RegExp":case"Int8Array":case"Uint8Array":case"Uint8ClampedArray":case"Int16Array":case"Uint16Array":case"Int32Array":case"Uint32Array":case"Float32Array":case"Float64Array":case"ArrayBuffer":break;default:return!1}var a=J(e);if(a.length!==J(t).length)return!1;var c=n.concat([e]),s=r.concat([t]);for(i=a.length-1;i>=0;){var l=a[i];if(!G(l,t)||!ge(t[l],e[l],c,s))return!1;i-=1}return!0}var me=M((function(e,t){return ge(e,t,[],[])}));function ye(e,t,n){var r,o;if("function"===typeof e.indexOf)switch(typeof t){case"number":if(0===t){for(r=1/t;n=0}var we=function(e){return(e<10?"0":"")+e};Date.prototype.toISOString;var ke=M((function(e,t){return null==t||t!==t?e:t}));function xe(e,t,n){var r,o=typeof e;switch(o){case"string":case"number":return 0===e&&1/e===-1/0?!!n._items["-0"]||(t&&(n._items["-0"]=!0),!1):null!==n._nativeSet?t?(r=n._nativeSet.size,n._nativeSet.add(e),n._nativeSet.size===r):n._nativeSet.has(e):o in n._items?e in n._items[o]||(t&&(n._items[o][e]=!0),!1):(t&&(n._items[o]={},n._items[o][e]=!0),!1);case"boolean":if(o in n._items){var i=e?1:0;return!!n._items[o][i]||(t&&(n._items[o][i]=!0),!1)}return t&&(n._items[o]=e?[!1,!0]:[!0,!1]),!1;case"function":return null!==n._nativeSet?t?(r=n._nativeSet.size,n._nativeSet.add(e),n._nativeSet.size===r):n._nativeSet.has(e):o in n._items?!!be(e,n._items[o])||(t&&n._items[o].push(e),!1):(t&&(n._items[o]=[e]),!1);case"undefined":return!!n._items[o]||(t&&(n._items[o]=!0),!1);case"object":if(null===e)return!!n._items.null||(t&&(n._items.null=!0),!1);default:return(o=Object.prototype.toString.call(e))in n._items?!!be(e,n._items[o])||(t&&n._items[o].push(e),!1):(t&&(n._items[o]=[e]),!1)}}var je=function(){function e(){this._nativeSet="function"===typeof Set?new Set:null,this._items={}}return e.prototype.add=function(e){return!xe(e,!0,this)},e.prototype.has=function(e){return xe(e,!1,this)},e}();var Me=j(oe(!0)),Ce=function(){function e(e,t){this.xf=t,this.f=e,this.set=new je}return e.prototype["@@transducer/init"]=A.init,e.prototype["@@transducer/result"]=A.result,e.prototype["@@transducer/step"]=function(e,t){return this.set.add(this.f(t))?this.xf["@@transducer/step"](e,t):e},e}(),_e=M(T([],M((function(e,t){return new Ce(e,t)})),(function(e,t){for(var n,r,o=new je,i=[],a=0;a>8&255,c=255&i;return"rgba(".concat(i>>16&255,", ").concat(a,", ").concat(c,", ").concat(t,")")}},Ie=function(e){return void 0===e&&(e=1),function(t){var n=(Pe(t)||0)*e;return"".concat(n,"px")}},Ne=function(e,t){return void 0===e&&(e="border"),void 0===t&&(t="disabled"),function(n){var r=n.theme,o=n.success,i=n.error,a=n.disabled;return o?Ve(["success"])({theme:r}):i?Ve(["error"])({theme:r}):a?Ve([t])({theme:r}):Ve([e])({theme:r})}},Fe=function(e,t){return"number"===typeof t?0===(n=e.constants.SIZE_SUB_UNIT*t)?"0":"".concat(n,"px"):"auto";var n},Be=function(e,t){return t.map((function(t){return Fe(e,t)})).join(" ")},Ue=function(e){var t=e.theme,n=e.margin;return n?Array.isArray(n)&&n.length>=1&&n.length<=4?"margin: ".concat(Be(t,n),";"):(console.error("Please provide an array (max 4 elements) for `margin` style helper."),""):""},We=function(e){var t=e.theme,n=e.padding;return n?Array.isArray(n)&&n.length>=1&&n.length<=4?"padding: ".concat(Be(t,n),";"):(console.error("Please provide an array (max 4 elements) for `padding` style helper."),""):""},Ge={end:"flex-end",start:"flex-start",center:"center",stretch:"stretch"},Ye=function(e){var t=e.alignSelf;return t in Ge&&"align-self: ".concat(Ge[t],";")},$e={none:"none",capitalize:"capitalize",uppercase:"uppercase",lowercase:"lowercase",firstLetter:"firstLetter",fullWidth:"full-width"},Ze=function(e){var t=(void 0===e?{}:e).textTransform,n=void 0===t?$e.none:t;return n===$e.firstLetter?"text-transform: lowercase;\n &::first-letter {\n text-transform: uppercase;\n }\n":"text-transform: ".concat(n in $e?$e[n]:$e.none,";")},Xe=function(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e},Ke=function(){return(Ke=Object.assign||function(e){for(var t,n=1,r=arguments.length;n span {\n ",";\n margin-left: ",";\n }\n\n &:hover {\n border-color: ",";\n background-color: ",";\n color: ",";\n text-decoration: none;\n\n .button-icon {\n fill: ",";\n }\n }\n\n &:active {\n ","\n }\n ","\n\n &:focus {\n outline: none;\n }\n\n .button-icon {\n height: ",";\n width: ",";\n fill: ",";\n }\n\n .ntd-spinner {\n fill: none;\n stroke-width: 17px;\n stroke-dasharray: 100;\n stroke-dashoffset: 100;\n animation: ntd-draw 1s linear infinite;\n stroke: ",";\n width: 24px;\n }\n\n .path {\n stroke: ",";\n }\n\n @keyframes ntd-draw {\n to {\n stroke-dashoffset: 0;\n }\n }\n }\n"],["\n && {\n display: flex;\n justify-content: center;\n align-items: center;\n position: relative;\n ",";\n\n width: ",";\n height: ",";\n\n font-weight: 500;\n font-size: ",";\n line-height: ",";\n white-space: nowrap;\n word-break: keep-all;\n\n cursor: pointer;\n opacity: ",";\n pointer-events: ",";\n\n ","\n ","\n transition: all 150ms;\n\n background-color: ",";\n color: ",";\n\n border-width: 1px;\n border-style: solid;\n border-color: ",";\n border-radius: 4px;\n box-sizing: border-box;\n\n text-decoration: none;\n & > span {\n ",";\n margin-left: ",";\n }\n\n &:hover {\n border-color: ",";\n background-color: ",";\n color: ",";\n text-decoration: none;\n\n .button-icon {\n fill: ",";\n }\n }\n\n &:active {\n ","\n }\n ","\n\n &:focus {\n outline: none;\n }\n\n .button-icon {\n height: ",";\n width: ",";\n fill: ",";\n }\n\n .ntd-spinner {\n fill: none;\n stroke-width: 17px;\n stroke-dasharray: 100;\n stroke-dashoffset: 100;\n animation: ntd-draw 1s linear infinite;\n stroke: ",";\n width: 24px;\n }\n\n .path {\n stroke: ",";\n }\n\n @keyframes ntd-draw {\n to {\n stroke-dashoffset: 0;\n }\n }\n }\n"])),Ye,(function(e){return e.width?e.width:e.hasLabel?Ie(16):Ie(e.tiny?2.75:e.small?3:4)}),(function(e){return e.hasLabel?Ie(e.small?4:5):Ie(e.tiny?2.75:e.small?3:4)}),(function(e){var t=e.small;return e.tiny?"10px":t?"12px":"14px"}),Ie(2),(function(e){var t=e.disabled;return e.neutral?1:t?.4:1}),(function(e){return e.disabled?"none":"auto"}),Ue,We,(function(e){return e.colors.bg(e)}),(function(e){return e.colors.color(e)}),(function(e){return e.colors.border(e)}),Ze,(function(e){return e.hasIcon?Ie(1.5):"0px"}),(function(e){return e.colors.borderHover(e)}),(function(e){return e.colors.bgHover(e)}),(function(e){return e.colors.colorHover(e)}),(function(e){return e.colors.colorHover(e)}),Je,(function(e){return e.active&&"\n ".concat(Je,"\n ")}),Ie(2),Ie(2),(function(e){return e.colors.color(e)}),(function(e){return e.colors.color(e)}),(function(e){return e.colors.color(e)})),lt=function(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e},ut=s.d.svg.withConfig({displayName:"loader__StyledSvg",componentId:"sc-1mq98qd-0"})(Ae||(Ae=lt(["\n fill: none;\n stroke-width: 17px;\n stroke-dasharray: 100;\n stroke-dashoffset: 100;\n animation: ntd-draw 1s linear infinite;\n stroke: ",";\n width: 24px;\n .path {\n stroke: ",";\n }\n\n @keyframes ntd-draw {\n to {\n stroke-dashoffset: 0;\n }\n }\n"],["\n fill: none;\n stroke-width: 17px;\n stroke-dasharray: 100;\n stroke-dashoffset: 100;\n animation: ntd-draw 1s linear infinite;\n stroke: ",";\n width: 24px;\n .path {\n stroke: ",";\n }\n\n @keyframes ntd-draw {\n to {\n stroke-dashoffset: 0;\n }\n }\n"])),Ve("bright"),Ve("bright")),ft=function(e){var t=e.className;return c.a.createElement(ut,{className:t,viewBox:"0 0 21 17",version:"1.1",xmlns:"http://www.w3.org/2000/svg"},c.a.createElement("g",{className:"path",stroke:"none",strokeWidth:"1",fill:"none",fillRule:"evenodd"},c.a.createElement("path",{d:"M2,1 C8.25086152,1 11.9367136,1 13.0575562,1 C14.73882,1 19.6834591,2 19.9614325,7.72050108 C20.239406,13.4410022 15.7459591,15.1224845 13.6463763,15.1224845 C12.2466545,15.1224845 10.0279195,15.1224845 6.9901715,15.1224845 L2,1 Z",id:"Path-2",strokeWidth:"2"})))},dt=n(1),ht=n.n(dt),pt=n(2),zt=n.n(pt),vt=new ht.a({id:"add_node",use:"add_node-usage",viewBox:"0 0 18 18",content:''}),gt=(zt.a.add(vt),vt),mt=new ht.a({id:"add_user",use:"add_user-usage",viewBox:"0 0 15 16",content:''}),yt=(zt.a.add(mt),mt),bt=new ht.a({id:"aggregation_avg",use:"aggregation_avg-usage",viewBox:"0 0 16 12",content:''}),wt=(zt.a.add(bt),bt),kt=new ht.a({id:"aggregation_max",use:"aggregation_max-usage",viewBox:"0 0 15 16",content:''}),xt=(zt.a.add(kt),kt),jt=new ht.a({id:"aggregation_med",use:"aggregation_med-usage",viewBox:"0 0 14 14",content:''}),Mt=(zt.a.add(jt),jt),Ct=new ht.a({id:"aggregation_min",use:"aggregation_min-usage",viewBox:"0 0 15 16",content:''}),_t=(zt.a.add(Ct),Ct),qt=new ht.a({id:"aggregation_sum",use:"aggregation_sum-usage",viewBox:"0 0 12 14",content:''}),St=(zt.a.add(qt),qt),Ot=new ht.a({id:"aggregation_sum_abs",use:"aggregation_sum_abs-usage",viewBox:"0 0 14 14",content:''}),Et=(zt.a.add(Ot),Ot),Tt=new ht.a({id:"alarm",use:"alarm-usage",viewBox:"0 0 18 21",content:''}),At=(zt.a.add(Tt),Tt),Lt=new ht.a({id:"alarm_c",use:"alarm_c-usage",viewBox:"0 0 24 24",content:''}),Ht=(zt.a.add(Lt),Lt),Dt=new ht.a({id:"alarm_cw",use:"alarm_cw-usage",viewBox:"0 0 24 24",content:''}),Pt=(zt.a.add(Dt),Dt),Vt=new ht.a({id:"alarm_w",use:"alarm_w-usage",viewBox:"0 0 24 24",content:''}),Rt=(zt.a.add(Vt),Vt),It=new ht.a({id:"alarm_bell",use:"alarm_bell-usage",viewBox:"0 0 12 14",content:''}),Nt=(zt.a.add(It),It),Ft=new ht.a({id:"alarms_new",use:"alarms_new-usage",viewBox:"0 0 22 20",content:''}),Bt=(zt.a.add(Ft),Ft),Ut=new ht.a({id:"alarm_off",use:"alarm_off-usage",viewBox:"0 0 15 16",content:''}),Wt=(zt.a.add(Ut),Ut),Gt=new ht.a({id:"anomalies_brain",use:"anomalies_brain-usage",viewBox:"0 0 18 18",content:''}),Yt=(zt.a.add(Gt),Gt),$t=new ht.a({id:"anomalies_lens",use:"anomalies_lens-usage",viewBox:"0 0 18 18",content:''}),Zt=(zt.a.add($t),$t),Xt=new ht.a({id:"applications_hollow",use:"applications_hollow-usage",viewBox:"0 0 18 18",content:''}),Kt=(zt.a.add(Xt),Xt),Qt=new ht.a({id:"around_clock",use:"around_clock-usage",viewBox:"0 0 16 16",content:''}),Jt=(zt.a.add(Qt),Qt),en=new ht.a({id:"arrow_down",use:"arrow_down-usage",viewBox:"0 0 16 16",content:''}),tn=(zt.a.add(en),en),nn=new ht.a({id:"arrow_w_line_left",use:"arrow_w_line_left-usage",viewBox:"0 0 26 24",content:''}),rn=(zt.a.add(nn),nn),on=new ht.a({id:"arrow_w_line_right",use:"arrow_w_line_right-usage",viewBox:"0 0 24 13",content:''}),an=(zt.a.add(on),on),cn=new ht.a({id:"arrow_left",use:"arrow_left-usage",viewBox:"0 0 24 24",content:''}),sn=(zt.a.add(cn),cn),ln=new ht.a({id:"arrow-s_down",use:"arrow-s_down-usage",viewBox:"0 0 8 9",content:''}),un=(zt.a.add(ln),ln),fn=new ht.a({id:"arrow-s_left",use:"arrow-s_left-usage",viewBox:"0 0 8 9",content:''}),dn=(zt.a.add(fn),fn),hn=new ht.a({id:"arrows_vertical",use:"arrows_vertical-usage",viewBox:"0 0 6 10",content:''}),pn=(zt.a.add(hn),hn),zn=new ht.a({id:"bookmark",use:"bookmark-usage",viewBox:"0 0 12 14",content:''}),vn=(zt.a.add(zn),zn),gn=new ht.a({id:"bullet_one",use:"bullet_one-usage",viewBox:"0 0 10 10",content:''}),mn=(zt.a.add(gn),gn),yn=new ht.a({id:"bullet_three",use:"bullet_three-usage",viewBox:"0 0 10 10",content:''}),bn=(zt.a.add(yn),yn),wn=new ht.a({id:"bullet_two",use:"bullet_two-usage",viewBox:"0 0 10 10",content:''}),kn=(zt.a.add(wn),wn),xn=new ht.a({id:"calendar_full",use:"calendar_full-usage",viewBox:"0 0 18 18",content:''}),jn=(zt.a.add(xn),xn),Mn=new ht.a({id:"calendar_full_press",use:"calendar_full_press-usage",viewBox:"0 0 18 18",content:''}),Cn=(zt.a.add(Mn),Mn),_n=new ht.a({id:"chart_added",use:"chart_added-usage",viewBox:"0 0 17 17",content:''}),qn=(zt.a.add(_n),_n),Sn=new ht.a({id:"charts",use:"charts-usage",viewBox:"0 0 20 20",content:''}),On=(zt.a.add(Sn),Sn),En=new ht.a({id:"check",use:"check-usage",viewBox:"0 0 24 24",content:''}),Tn=(zt.a.add(En),En),An=new ht.a({id:"checkmark_partial_s",use:"checkmark_partial_s-usage",viewBox:"0 0 16 16",content:''}),Ln=(zt.a.add(An),An),Hn=new ht.a({id:"checkmark_s",use:"checkmark_s-usage",viewBox:"0 0 16 16",content:''}),Dn=(zt.a.add(Hn),Hn),Pn=new ht.a({id:"checkmark",use:"checkmark-usage",viewBox:"0 0 168 168",content:''}),Vn=(zt.a.add(Pn),Pn),Rn=new ht.a({id:"chevron_double",use:"chevron_double-usage",viewBox:"0 0 6 10",content:''}),In=(zt.a.add(Rn),Rn),Nn=new ht.a({id:"chevron_down",use:"chevron_down-usage",viewBox:"0 0 12 12",content:''}),Fn=(zt.a.add(Nn),Nn),Bn=new ht.a({id:"chevron_left",use:"chevron_left-usage",viewBox:"0 0 24 24",content:''}),Un=(zt.a.add(Bn),Bn),Wn=new ht.a({id:"chevron_right_s",use:"chevron_right_s-usage",viewBox:"0 0 5 6",content:''}),Gn=(zt.a.add(Wn),Wn),Yn=new ht.a({id:"chevron_right_small",use:"chevron_right_small-usage",viewBox:"0 0 5 6",content:''}),$n=(zt.a.add(Yn),Yn),Zn=new ht.a({id:"chevron_left_small",use:"chevron_left_small-usage",viewBox:"0 0 5 6",content:''}),Xn=(zt.a.add(Zn),Zn),Kn=new ht.a({id:"class_error",use:"class_error-usage",viewBox:"0 0 21 22",content:''}),Qn=(zt.a.add(Kn),Kn),Jn=new ht.a({id:"class_latency",use:"class_latency-usage",viewBox:"0 0 21 20",content:''}),er=(zt.a.add(Jn),Jn),tr=new ht.a({id:"class_utilization",use:"class_utilization-usage",viewBox:"0 0 25 19",content:''}),nr=(zt.a.add(tr),tr),rr=new ht.a({id:"class_workload",use:"class_workload-usage",viewBox:"0 0 22 21",content:''}),or=(zt.a.add(rr),rr),ir=new ht.a({id:"clock_hollow",use:"clock_hollow-usage",viewBox:"0 0 24 24",content:''}),ar=(zt.a.add(ir),ir),cr=new ht.a({id:"clock_5_min",use:"clock_5_min-usage",viewBox:"0 0 18 18",content:''}),sr=(zt.a.add(cr),cr),lr=new ht.a({id:"clock_5_min_press",use:"clock_5_min_press-usage",viewBox:"0 0 18 18",content:''}),ur=(zt.a.add(lr),lr),fr=new ht.a({id:"close_circle",use:"close_circle-usage",viewBox:"0 0 10 10",content:''}),dr=(zt.a.add(fr),fr),hr=new ht.a({id:"cluster",use:"cluster-usage",viewBox:"0 0 22 22",content:''}),pr=(zt.a.add(hr),hr),zr=new ht.a({id:"cluster_spaces",use:"cluster_spaces-usage",viewBox:"0 0 22 22",content:''}),vr=(zt.a.add(zr),zr),gr=new ht.a({id:"code",use:"code-usage",viewBox:"0 0 16 16",content:''}),mr=(zt.a.add(gr),gr),yr=new ht.a({id:"collapse",use:"collapse-usage",viewBox:"0 0 16 2",content:''}),br=(zt.a.add(yr),yr),wr=new ht.a({id:"community",use:"community-usage",viewBox:"0 0 18 18",content:''}),kr=(zt.a.add(wr),wr),xr=new ht.a({id:"connectivity_status_live",use:"connectivity_status_live-usage",viewBox:"0 0 18 18",content:''}),jr=(zt.a.add(xr),xr),Mr=new ht.a({id:"connectivity_status_offline",use:"connectivity_status_offline-usage",viewBox:"0 0 18 18",content:''}),Cr=(zt.a.add(Mr),Mr),_r=new ht.a({id:"connectivity_status_stale",use:"connectivity_status_stale-usage",viewBox:"0 0 18 18",content:''}),qr=(zt.a.add(_r),_r),Sr=new ht.a({id:"container",use:"container-usage",viewBox:"0 0 22 22",content:''}),Or=(zt.a.add(Sr),Sr),Er=new ht.a({id:"controller_kind",use:"controller_kind-usage",viewBox:"0 0 22 22",content:''}),Tr=(zt.a.add(Er),Er),Ar=new ht.a({id:"controller_name",use:"controller_name-usage",viewBox:"0 0 22 22",content:''}),Lr=(zt.a.add(Ar),Ar),Hr=new ht.a({id:"copy",use:"copy-usage",viewBox:"0 0 14 14",content:''}),Dr=(zt.a.add(Hr),Hr),Pr=new ht.a({id:"correlation",use:"correlation-usage",viewBox:"0 0 28 28",content:''}),Vr=(zt.a.add(Pr),Pr),Rr=new ht.a({id:"correlation_inv",use:"correlation_inv-usage",viewBox:"0 0 24 24",content:''}),Ir=(zt.a.add(Rr),Rr),Nr=new ht.a({id:"cpu",use:"cpu-usage",viewBox:"0 0 18 18",content:''}),Fr=(zt.a.add(Nr),Nr),Br=new ht.a({id:"cross_s",use:"cross_s-usage",viewBox:"0 0 16 16",content:''}),Ur=(zt.a.add(Br),Br),Wr=new ht.a({id:"data_retention",use:"data_retention-usage",viewBox:"0 0 18 18",content:''}),Gr=(zt.a.add(Wr),Wr),Yr=new ht.a({id:"database",use:"database-usage",viewBox:"0 0 24 24",content:''}),$r=(zt.a.add(Yr),Yr),Zr=new ht.a({id:"dashboard",use:"dashboard-usage",viewBox:"0 0 22 18",content:''}),Xr=(zt.a.add(Zr),Zr),Kr=new ht.a({id:"dashboard_add",use:"dashboard_add-usage",viewBox:"0 0 16 16",content:''}),Qr=(zt.a.add(Kr),Kr),Jr=new ht.a({id:"dashboards",use:"dashboards-usage",viewBox:"0 0 16 10",content:''}),eo=(zt.a.add(Jr),Jr),to=new ht.a({id:"disk",use:"disk-usage",viewBox:"0 0 18 18",content:''}),no=(zt.a.add(to),to),ro=new ht.a({id:"documentation",use:"documentation-usage",viewBox:"0 0 24 24",content:''}),oo=(zt.a.add(ro),ro),io=new ht.a({id:"dot",use:"dot-usage",viewBox:"0 0 10 10",content:''}),ao=(zt.a.add(io),io),co=new ht.a({id:"dots_2x3",use:"dots_2x3-usage",viewBox:"0 0 6 10",content:''}),so=(zt.a.add(co),co),lo=new ht.a({id:"download",use:"download-usage",viewBox:"0 0 20 20",content:''}),uo=(zt.a.add(lo),lo),fo=new ht.a({id:"error",use:"error-usage",viewBox:"0 0 24 24",content:''}),ho=(zt.a.add(fo),fo),po=new ht.a({id:"exclamation",use:"exclamation-usage",viewBox:"0 0 24 24",content:''}),zo=(zt.a.add(po),po),vo=new ht.a({id:"expand",use:"expand-usage",viewBox:"0 0 24 24",content:''}),go=(zt.a.add(vo),vo),mo=new ht.a({id:"filterList",use:"filterList-usage",viewBox:"0 0 18 18",content:''}),yo=(zt.a.add(mo),mo),bo=new ht.a({id:"force_play",use:"force_play-usage",viewBox:"0 0 18 18",content:''}),wo=(zt.a.add(bo),bo),ko=new ht.a({id:"force_play_outline",use:"force_play_outline-usage",viewBox:"0 0 18 18",content:''}),xo=(zt.a.add(ko),ko),jo=new ht.a({id:"gear",use:"gear-usage",viewBox:"0 0 20 20",content:''}),Mo=(zt.a.add(jo),jo),Co=new ht.a({id:"github",use:"github-usage",viewBox:"0 0 24 24",content:''}),_o=(zt.a.add(Co),Co),qo=new ht.a({id:"go_to_node",use:"go_to_node-usage",viewBox:"0 0 18 18",content:''}),So=(zt.a.add(qo),qo),Oo=new ht.a({id:"google",use:"google-usage",viewBox:"0 0 24 24",content:''}),Eo=(zt.a.add(Oo),Oo),To=new ht.a({id:"group_by",use:"group_by-usage",viewBox:"0 0 18 18",content:''}),Ao=(zt.a.add(To),To),Lo=new ht.a({id:"hamburger",use:"hamburger-usage",viewBox:"0 0 24 24",content:''}),Ho=(zt.a.add(Lo),Lo),Do=new ht.a({id:"help",use:"help-usage",viewBox:"0 0 20 21",content:''}),Po=(zt.a.add(Do),Do),Vo=new ht.a({id:"hide",use:"hide-usage",viewBox:"0 0 18 18",content:''}),Ro=(zt.a.add(Vo),Vo),Io=new ht.a({id:"highlight_area",use:"highlight_area-usage",viewBox:"0 0 16 16",content:''}),No=(zt.a.add(Io),Io),Fo=new ht.a({id:"holder",use:"holder-usage",viewBox:"0 0 24 24",content:''}),Bo=(zt.a.add(Fo),Fo),Uo=new ht.a({id:"incident_manager",use:"incident_manager-usage",viewBox:"0 0 18 18",content:''}),Wo=(zt.a.add(Uo),Uo),Go=new ht.a({id:"information",use:"information-usage",viewBox:"0 0 18 18",content:''}),Yo=(zt.a.add(Go),Go),$o=new ht.a({id:"information_press",use:"information_press-usage",viewBox:"0 0 18 18",content:''}),Zo=(zt.a.add($o),$o),Xo=new ht.a({id:"insights",use:"insights-usage",viewBox:"0 0 18 18",content:''}),Ko=(zt.a.add(Xo),Xo),Qo=new ht.a({id:"integrations",use:"integrations-usage",viewBox:"0 0 16 16",content:''}),Jo=(zt.a.add(Qo),Qo),ei=new ht.a({id:"ipNetworking",use:"ipNetworking-usage",viewBox:"0 0 16 16",content:''}),ti=(zt.a.add(ei),ei),ni=new ht.a({id:"ipNetworkingPress",use:"ipNetworkingPress-usage",viewBox:"0 0 16 16",content:''}),ri=(zt.a.add(ni),ni),oi=new ht.a({id:"last_week",use:"last_week-usage",viewBox:"0 0 18 18",content:''}),ii=(zt.a.add(oi),oi),ai=new ht.a({id:"line_chart",use:"line_chart-usage",viewBox:"0 0 15 15",content:''}),ci=(zt.a.add(ai),ai),si=new ht.a({id:"logo_s",use:"logo_s-usage",viewBox:"0 0 14 13",content:''}),li=(zt.a.add(si),si),ui=new ht.a({id:"loading",use:"loading-usage",viewBox:"0 0 24 24",content:''}),fi=(zt.a.add(ui),ui),di=new ht.a({id:"magnify",use:"magnify-usage",viewBox:"0 0 24 24",content:''}),hi=(zt.a.add(di),di),pi=new ht.a({id:"metrics",use:"metrics-usage",viewBox:"0 0 24 24",content:''}),zi=(zt.a.add(pi),pi),vi=new ht.a({id:"metrics_explorer",use:"metrics_explorer-usage",viewBox:"0 0 18 18",content:''}),gi=(zt.a.add(vi),vi),mi=new ht.a({id:"monitoring",use:"monitoring-usage",viewBox:"0 0 20 20",content:''}),yi=(zt.a.add(mi),mi),bi=new ht.a({id:"more",use:"more-usage",viewBox:"0 0 18 4",content:''}),wi=(zt.a.add(bi),bi),ki=new ht.a({id:"nav_left",use:"nav_left-usage",viewBox:"0 0 8 10",content:''}),xi=(zt.a.add(ki),ki),ji=new ht.a({id:"nav_right",use:"nav_right-usage",viewBox:"0 0 8 10",content:''}),Mi=(zt.a.add(ji),ji),Ci=new ht.a({id:"nav_arrow_goto",use:"nav_arrow_goto-usage",viewBox:"0 0 10 10",content:''}),_i=(zt.a.add(Ci),Ci),qi=new ht.a({id:"nav_dots",use:"nav_dots-usage",viewBox:"0 0 24 24",content:''}),Si=(zt.a.add(qi),qi),Oi=new ht.a({id:"netdata",use:"netdata-usage",viewBox:"0 0 24 24",content:''}),Ei=(zt.a.add(Oi),Oi),Ti=new ht.a({id:"netdata-press",use:"netdata-press-usage",viewBox:"0 0 18 18",content:''}),Ai=(zt.a.add(Ti),Ti),Li=new ht.a({id:"node",use:"node-usage",viewBox:"0 0 24 24",content:''}),Hi=(zt.a.add(Li),Li),Di=new ht.a({id:"node_child",use:"node_child-usage",viewBox:"0 0 18 18",content:''}),Pi=(zt.a.add(Di),Di),Vi=new ht.a({id:"node_default_l",use:"node_default_l-usage",viewBox:"0 0 40 40",content:''}),Ri=(zt.a.add(Vi),Vi),Ii=new ht.a({id:"node_hollow",use:"node_hollow-usage",viewBox:"0 0 22 12",content:''}),Ni=(zt.a.add(Ii),Ii),Fi=new ht.a({id:"node_import_export",use:"node_import_export-usage",viewBox:"0 0 24 24",content:''}),Bi=(zt.a.add(Fi),Fi),Ui=new ht.a({id:"node_notification_l",use:"node_notification_l-usage",viewBox:"0 0 40 40",content:''}),Wi=(zt.a.add(Ui),Ui),Gi=new ht.a({id:"node_parent",use:"node_parent-usage",viewBox:"0 0 18 18",content:''}),Yi=(zt.a.add(Gi),Gi),$i=new ht.a({id:"node_selected_l",use:"node_selected_l-usage",viewBox:"0 0 40 40",content:''}),Zi=(zt.a.add($i),$i),Xi=new ht.a({id:"nodes",use:"nodes-usage",viewBox:"0 0 16 16",content:''}),Ki=(zt.a.add(Xi),Xi),Qi=new ht.a({id:"nodes_hollow",use:"nodes_hollow-usage",viewBox:"0 0 18 18",content:''}),Ji=(zt.a.add(Qi),Qi),ea=new ht.a({id:"none_selected",use:"none_selected-usage",viewBox:"0 0 16 16",content:''}),ta=(zt.a.add(ea),ea),na=new ht.a({id:"os",use:"os-usage",viewBox:"0 0 18 18",content:''}),ra=(zt.a.add(na),na),oa=new ht.a({id:"alpine_linux",use:"alpine_linux-usage",viewBox:"0 0 18 18",content:''}),ia=(zt.a.add(oa),oa),aa=new ht.a({id:"amazon_linux",use:"amazon_linux-usage",viewBox:"0 0 18 18",content:''}),ca=(zt.a.add(aa),aa),sa=new ht.a({id:"arch_linux",use:"arch_linux-usage",viewBox:"0 0 18 18",content:''}),la=(zt.a.add(sa),sa),ua=new ht.a({id:"celarOS",use:"celarOS-usage",viewBox:"0 0 18 18",content:''}),fa=(zt.a.add(ua),ua),da=new ht.a({id:"centos",use:"centos-usage",viewBox:"0 0 18 18",content:''}),ha=(zt.a.add(da),da),pa=new ht.a({id:"centos_color",use:"centos_color-usage",viewBox:"0 0 18 18",content:''}),za=(zt.a.add(pa),pa),va=new ht.a({id:"coreOS",use:"coreOS-usage",viewBox:"0 0 18 18",content:''}),ga=(zt.a.add(va),va),ma=new ht.a({id:"debian",use:"debian-usage",viewBox:"0 0 18 18",content:''}),ya=(zt.a.add(ma),ma),ba=new ht.a({id:"debian_color",use:"debian_color-usage",viewBox:"0 0 18 18",content:''}),wa=(zt.a.add(ba),ba),ka=new ht.a({id:"fedora",use:"fedora-usage",viewBox:"0 0 18 18",content:''}),xa=(zt.a.add(ka),ka),ja=new ht.a({id:"freeBSD",use:"freeBSD-usage",viewBox:"0 0 18 18",content:''}),Ma=(zt.a.add(ja),ja),Ca=new ht.a({id:"gentoo",use:"gentoo-usage",viewBox:"0 0 18 18",content:''}),_a=(zt.a.add(Ca),Ca),qa=new ht.a({id:"linux",use:"linux-usage",viewBox:"0 0 18 18",content:''}),Sa=(zt.a.add(qa),qa),Oa=new ht.a({id:"linux_color",use:"linux_color-usage",viewBox:"0 0 18 18",content:''}),Ea=(zt.a.add(Oa),Oa),Ta=new ht.a({id:"macOSX",use:"macOSX-usage",viewBox:"0 0 18 18",content:''}),Aa=(zt.a.add(Ta),Ta),La=new ht.a({id:"oracle",use:"oracle-usage",viewBox:"0 0 18 18",content:''}),Ha=(zt.a.add(La),La),Da=new ht.a({id:"oracle_color",use:"oracle_color-usage",viewBox:"0 0 18 18",content:''}),Pa=(zt.a.add(Da),Da),Va=new ht.a({id:"os_press",use:"os_press-usage",viewBox:"0 0 18 18",content:''}),Ra=(zt.a.add(Va),Va),Ia=new ht.a({id:"raspbian",use:"raspbian-usage",viewBox:"0 0 18 18",content:''}),Na=(zt.a.add(Ia),Ia),Fa=new ht.a({id:"red_hat",use:"red_hat-usage",viewBox:"0 0 18 18",content:''}),Ba=(zt.a.add(Fa),Fa),Ua=new ht.a({id:"suse_linux",use:"suse_linux-usage",viewBox:"0 0 18 18",content:''}),Wa=(zt.a.add(Ua),Ua),Ga=new ht.a({id:"ubuntu",use:"ubuntu-usage",viewBox:"0 0 18 18",content:''}),Ya=(zt.a.add(Ga),Ga),$a=new ht.a({id:"ubuntu_color",use:"ubuntu_color-usage",viewBox:"0 0 18 18",content:''}),Za=(zt.a.add($a),$a),Xa=new ht.a({id:"notification",use:"notification-usage",viewBox:"0 0 40 24",content:''}),Ka=(zt.a.add(Xa),Xa),Qa=new ht.a({id:"padlock",use:"padlock-usage",viewBox:"0 0 18 18",content:''}),Ja=(zt.a.add(Qa),Qa),ec=new ht.a({id:"pause_outline",use:"pause_outline-usage",viewBox:"0 0 18 18",content:''}),tc=(zt.a.add(ec),ec),nc=new ht.a({id:"pause_solid",use:"pause_solid-usage",viewBox:"0 0 24 24",content:''}),rc=(zt.a.add(nc),nc),oc=new ht.a({id:"pencil_outline",use:"pencil_outline-usage",viewBox:"0 0 14 14",content:''}),ic=(zt.a.add(oc),oc),ac=new ht.a({id:"pencil_solid",use:"pencil_solid-usage",viewBox:"0 0 19 19",content:''}),cc=(zt.a.add(ac),ac),sc=new ht.a({id:"pie_chart_skeleton",use:"pie_chart_skeleton-usage",viewBox:"0 0 100 100",content:''}),lc=(zt.a.add(sc),sc),uc=new ht.a({id:"pin_element",use:"pin_element-usage",viewBox:"0 0 14 14",content:''}),fc=(zt.a.add(uc),uc),dc=new ht.a({id:"play_outline",use:"play_outline-usage",viewBox:"0 0 18 18",content:''}),hc=(zt.a.add(dc),dc),pc=new ht.a({id:"play_solid",use:"play_solid-usage",viewBox:"0 0 24 24",content:''}),zc=(zt.a.add(pc),pc),vc=new ht.a({id:"plus",use:"plus-usage",viewBox:"0 0 24 24",content:''}),gc=(zt.a.add(vc),vc),mc=new ht.a({id:"plus_mini_s",use:"plus_mini_s-usage",viewBox:"0 0 24 24",content:''}),yc=(zt.a.add(mc),mc),bc=new ht.a({id:"pod",use:"pod-usage",viewBox:"0 0 22 22",content:''}),wc=(zt.a.add(bc),bc),kc=new ht.a({id:"pricing",use:"pricing-usage",viewBox:"0 0 16 16",content:''}),xc=(zt.a.add(kc),kc),jc=new ht.a({id:"print",use:"print-usage",viewBox:"0 0 21 20",content:''}),Mc=(zt.a.add(jc),jc),Cc=new ht.a({id:"privacy",use:"privacy-usage",viewBox:"0 0 16 16",content:''}),_c=(zt.a.add(Cc),Cc),qc=new ht.a({id:"question",use:"question-usage",viewBox:"0 0 20 20",content:''}),Sc=(zt.a.add(qc),qc),Oc=new ht.a({id:"questionFilled",use:"questionFilled-usage",viewBox:"0 0 24 24",content:''}),Ec=(zt.a.add(Oc),Oc),Tc=new ht.a({id:"ram",use:"ram-usage",viewBox:"0 0 18 18",content:''}),Ac=(zt.a.add(Tc),Tc),Lc=new ht.a({id:"refresh",use:"refresh-usage",viewBox:"0 0 18 19",content:''}),Hc=(zt.a.add(Lc),Lc),Dc=new ht.a({id:"reload",use:"reload-usage",viewBox:"0 0 24 24",content:''}),Pc=(zt.a.add(Dc),Dc),Vc=new ht.a({id:"remove_node",use:"remove_node-usage",viewBox:"0 0 18 18",content:''}),Rc=(zt.a.add(Vc),Vc),Ic=new ht.a({id:"resize_handler",use:"resize_handler-usage",viewBox:"0 0 16 16",content:''}),Nc=(zt.a.add(Ic),Ic),Fc=new ht.a({id:"room",use:"room-usage",viewBox:"0 0 24 24",content:''}),Bc=(zt.a.add(Fc),Fc),Uc=new ht.a({id:"room_home",use:"room_home-usage",viewBox:"0 0 14 12",content:''}),Wc=(zt.a.add(Uc),Uc),Gc=new ht.a({id:"room_new",use:"room_new-usage",viewBox:"0 0 20 20",content:''}),Yc=(zt.a.add(Gc),Gc),$c=new ht.a({id:"room_overview",use:"room_overview-usage",viewBox:"0 0 24 25",content:''}),Zc=(zt.a.add($c),$c),Xc=new ht.a({id:"sad",use:"sad-usage",viewBox:"0 0 24 24",content:''}),Kc=(zt.a.add(Xc),Xc),Qc=new ht.a({id:"save",use:"save-usage",viewBox:"0 0 14 14",content:''}),Jc=(zt.a.add(Qc),Qc),es=new ht.a({id:"search",use:"search-usage",viewBox:"0 0 18 18",content:''}),ts=(zt.a.add(es),es),ns=new ht.a({id:"search_s",use:"search_s-usage",viewBox:"0 0 14 14",content:''}),rs=(zt.a.add(ns),ns),os=new ht.a({id:"search_press",use:"search_press-usage",viewBox:"0 0 18 18",content:''}),is=(zt.a.add(os),os),as=new ht.a({id:"apache",use:"apache-usage",viewBox:"0 0 18 18",content:''}),cs=(zt.a.add(as),as),ss=new ht.a({id:"apache_tomcat",use:"apache_tomcat-usage",viewBox:"0 0 18 18",content:''}),ls=(zt.a.add(ss),ss),us=new ht.a({id:"beanstalk",use:"beanstalk-usage",viewBox:"0 0 18 18",content:''}),fs=(zt.a.add(us),us),ds=new ht.a({id:"couchDB",use:"couchDB-usage",viewBox:"0 0 18 18",content:''}),hs=(zt.a.add(ds),ds),ps=new ht.a({id:"database",use:"database-usage",viewBox:"0 0 18 18",content:''}),zs=(zt.a.add(ps),ps),vs=new ht.a({id:"docker_hub",use:"docker_hub-usage",viewBox:"0 0 18 18",content:''}),gs=(zt.a.add(vs),vs),ms=new ht.a({id:"docker_hub_press",use:"docker_hub_press-usage",viewBox:"0 0 18 18",content:''}),ys=(zt.a.add(ms),ms),bs=new ht.a({id:"eBPF",use:"eBPF-usage",viewBox:"0 0 18 18",content:''}),ws=(zt.a.add(bs),bs),ks=new ht.a({id:"elasticSearch",use:"elasticSearch-usage",viewBox:"0 0 18 18",content:''}),xs=(zt.a.add(ks),ks),js=new ht.a({id:"freeNAS",use:"freeNAS-usage",viewBox:"0 0 18 18",content:''}),Ms=(zt.a.add(js),js),Cs=new ht.a({id:"haProxy",use:"haProxy-usage",viewBox:"0 0 18 18",content:''}),_s=(zt.a.add(Cs),Cs),qs=new ht.a({id:"httpCheck",use:"httpCheck-usage",viewBox:"0 0 18 18",content:''}),Ss=(zt.a.add(qs),qs),Os=new ht.a({id:"iceCast",use:"iceCast-usage",viewBox:"0 0 18 18",content:''}),Es=(zt.a.add(Os),Os),Ts=new ht.a({id:"influxDB",use:"influxDB-usage",viewBox:"0 0 18 18",content:''}),As=(zt.a.add(Ts),Ts),Ls=new ht.a({id:"ipfs",use:"ipfs-usage",viewBox:"0 0 18 18",content:''}),Hs=(zt.a.add(Ls),Ls),Ds=new ht.a({id:"ipvs",use:"ipvs-usage",viewBox:"0 0 18 18",content:''}),Ps=(zt.a.add(Ds),Ds),Vs=new ht.a({id:"kubermetes",use:"kubermetes-usage",viewBox:"0 0 18 18",content:''}),Rs=(zt.a.add(Vs),Vs),Is=new ht.a({id:"lighthttpd",use:"lighthttpd-usage",viewBox:"0 0 18 18",content:''}),Ns=(zt.a.add(Is),Is),Fs=new ht.a({id:"lighthttpd2",use:"lighthttpd2-usage",viewBox:"0 0 18 18",content:''}),Bs=(zt.a.add(Fs),Fs),Us=new ht.a({id:"liteSpeed",use:"liteSpeed-usage",viewBox:"0 0 18 18",content:''}),Ws=(zt.a.add(Us),Us),Gs=new ht.a({id:"lxc",use:"lxc-usage",viewBox:"0 0 18 18",content:''}),Ys=(zt.a.add(Gs),Gs),$s=new ht.a({id:"mariaDB",use:"mariaDB-usage",viewBox:"0 0 18 18",content:''}),Zs=(zt.a.add($s),$s),Xs=new ht.a({id:"memCached",use:"memCached-usage",viewBox:"0 0 18 18",content:''}),Ks=(zt.a.add(Xs),Xs),Qs=new ht.a({id:"mongoDB",use:"mongoDB-usage",viewBox:"0 0 18 18",content:''}),Js=(zt.a.add(Qs),Qs),el=new ht.a({id:"mySQL",use:"mySQL-usage",viewBox:"0 0 18 18",content:''}),tl=(zt.a.add(el),el),nl=new ht.a({id:"mySQL_press",use:"mySQL_press-usage",viewBox:"0 0 18 18",content:''}),rl=(zt.a.add(nl),nl),ol=new ht.a({id:"nginx",use:"nginx-usage",viewBox:"0 0 18 18",content:''}),il=(zt.a.add(ol),ol),al=new ht.a({id:"nginx_local",use:"nginx_local-usage",viewBox:"0 0 18 18",content:''}),cl=(zt.a.add(al),al),sl=new ht.a({id:"nginx_plus",use:"nginx_plus-usage",viewBox:"0 0 18 18",content:''}),ll=(zt.a.add(sl),sl),ul=new ht.a({id:"ntpd",use:"ntpd-usage",viewBox:"0 0 18 18",content:''}),fl=(zt.a.add(ul),ul),dl=new ht.a({id:"ntpd_press",use:"ntpd_press-usage",viewBox:"0 0 18 18",content:''}),hl=(zt.a.add(dl),dl),pl=new ht.a({id:"openStack",use:"openStack-usage",viewBox:"0 0 18 18",content:''}),zl=(zt.a.add(pl),pl),vl=new ht.a({id:"openWrt",use:"openWrt-usage",viewBox:"0 0 18 18",content:''}),gl=(zt.a.add(vl),vl),ml=new ht.a({id:"pan",use:"pan-usage",viewBox:"0 0 18 18",content:''}),yl=(zt.a.add(ml),ml),bl=new ht.a({id:"percona",use:"percona-usage",viewBox:"0 0 18 18",content:''}),wl=(zt.a.add(bl),bl),kl=new ht.a({id:"pfSense",use:"pfSense-usage",viewBox:"0 0 18 18",content:''}),xl=(zt.a.add(kl),kl),jl=new ht.a({id:"php_fpm",use:"php_fpm-usage",viewBox:"0 0 18 18",content:''}),Ml=(zt.a.add(jl),jl),Cl=new ht.a({id:"postgreSQL",use:"postgreSQL-usage",viewBox:"0 0 18 18",content:''}),_l=(zt.a.add(Cl),Cl),ql=new ht.a({id:"rabbitMQ",use:"rabbitMQ-usage",viewBox:"0 0 18 18",content:''}),Sl=(zt.a.add(ql),ql),Ol=new ht.a({id:"redis",use:"redis-usage",viewBox:"0 0 18 18",content:''}),El=(zt.a.add(Ol),Ol),Tl=new ht.a({id:"rethinkDB",use:"rethinkDB-usage",viewBox:"0 0 18 18",content:''}),Al=(zt.a.add(Tl),Tl),Ll=new ht.a({id:"retroShare",use:"retroShare-usage",viewBox:"0 0 18 18",content:''}),Hl=(zt.a.add(Ll),Ll),Dl=new ht.a({id:"services",use:"services-usage",viewBox:"0 0 18 18",content:''}),Pl=(zt.a.add(Dl),Dl),Vl=new ht.a({id:"selected_area",use:"selected_area-usage",viewBox:"0 0 18 18",content:''}),Rl=(zt.a.add(Vl),Vl),Il=new ht.a({id:"solr",use:"solr-usage",viewBox:"0 0 18 18",content:''}),Nl=(zt.a.add(Il),Il),Fl=new ht.a({id:"squid",use:"squid-usage",viewBox:"0 0 18 18",content:''}),Bl=(zt.a.add(Fl),Fl),Ul=new ht.a({id:"summary_statistic",use:"summary_statistic-usage",viewBox:"0 0 18 18",content:''}),Wl=(zt.a.add(Ul),Ul),Gl=new ht.a({id:"traefik",use:"traefik-usage",viewBox:"0 0 18 18",content:''}),Yl=(zt.a.add(Gl),Gl),$l=new ht.a({id:"varnish",use:"varnish-usage",viewBox:"0 0 18 18",content:''}),Zl=(zt.a.add($l),$l),Xl=new ht.a({id:"webLog",use:"webLog-usage",viewBox:"0 0 18 18",content:''}),Kl=(zt.a.add(Xl),Xl),Ql=new ht.a({id:"webLog_nginx",use:"webLog_nginx-usage",viewBox:"0 0 18 18",content:''}),Jl=(zt.a.add(Ql),Ql),eu=new ht.a({id:"x509_check",use:"x509_check-usage",viewBox:"0 0 18 18",content:''}),tu=(zt.a.add(eu),eu),nu=new ht.a({id:"xen",use:"xen-usage",viewBox:"0 0 18 18",content:''}),ru=(zt.a.add(nu),nu),ou=new ht.a({id:"settings",use:"settings-usage",viewBox:"0 0 17 15",content:''}),iu=(zt.a.add(ou),ou),au=new ht.a({id:"settings_h",use:"settings_h-usage",viewBox:"0 0 14 14",content:''}),cu=(zt.a.add(au),au),su=new ht.a({id:"sorting_vertical",use:"sorting_vertical-usage",viewBox:"0 0 19 18",content:''}),lu=(zt.a.add(su),su),uu=new ht.a({id:"sorting_desc",use:"sorting_desc-usage",viewBox:"0 0 8 9",content:''}),fu=(zt.a.add(uu),uu),du=new ht.a({id:"sorting_asc",use:"sorting_asc-usage",viewBox:"0 0 8 9",content:''}),hu=(zt.a.add(du),du),pu=new ht.a({id:"space",use:"space-usage",viewBox:"0 0 24 24",content:''}),zu=(zt.a.add(pu),pu),vu=new ht.a({id:"space_new",use:"space_new-usage",viewBox:"0 0 20 20",content:''}),gu=(zt.a.add(vu),vu),mu=new ht.a({id:"switch_off",use:"switch_off-usage",viewBox:"0 0 14 15",content:''}),yu=(zt.a.add(mu),mu),bu=new ht.a({id:"system_overview",use:"system_overview-usage",viewBox:"0 0 32 32",content:''}),wu=(zt.a.add(bu),bu),ku=new ht.a({id:"text_add",use:"text_add-usage",viewBox:"0 0 16 16",content:''}),xu=(zt.a.add(ku),ku),ju=new ht.a({id:"thumb_down",use:"thumb_down-usage",viewBox:"0 0 24 24",content:''}),Mu=(zt.a.add(ju),ju),Cu=new ht.a({id:"thumb_up",use:"thumb_up-usage",viewBox:"0 0 24 24",content:''}),_u=(zt.a.add(Cu),Cu),qu=new ht.a({id:"tiny_buttons",use:"tiny_buttons-usage",viewBox:"0 0 22 22",content:''}),Su=(zt.a.add(qu),qu),Ou=new ht.a({id:"training",use:"training-usage",viewBox:"0 0 16 16",content:''}),Eu=(zt.a.add(Ou),Ou),Tu=new ht.a({id:"trashcan",use:"trashcan-usage",viewBox:"0 0 14 15",content:''}),Au=(zt.a.add(Tu),Tu),Lu=new ht.a({id:"triangle",use:"triangle-usage",viewBox:"0 0 24 24",content:''}),Hu=(zt.a.add(Lu),Lu),Du=new ht.a({id:"triangle_down",use:"triangle_down-usage",viewBox:"0 0 10 5",content:''}),Pu=(zt.a.add(Du),Du),Vu=new ht.a({id:"unknownError",use:"unknownError-usage",viewBox:"0 0 16 16",content:''}),Ru=(zt.a.add(Vu),Vu),Iu=new ht.a({id:"universe",use:"universe-usage",viewBox:"0 0 18 18",content:''}),Nu=(zt.a.add(Iu),Iu),Fu=new ht.a({id:"unreachable",use:"unreachable-usage",viewBox:"0 0 12 14",content:''}),Bu=(zt.a.add(Fu),Fu),Uu=new ht.a({id:"unreachableNode",use:"unreachableNode-usage",viewBox:"0 0 231 230",content:''}),Wu=(zt.a.add(Uu),Uu),Gu=new ht.a({id:"update",use:"update-usage",viewBox:"0 0 20 20",content:''}),Yu=(zt.a.add(Gu),Gu),$u=new ht.a({id:"update_pending",use:"update_pending-usage",viewBox:"0 0 20 20",content:''}),Zu=(zt.a.add($u),$u),Xu=new ht.a({id:"upload",use:"upload-usage",viewBox:"0 0 20 21",content:''}),Ku=(zt.a.add(Xu),Xu),Qu=new ht.a({id:"user",use:"user-usage",viewBox:"0 0 16 18",content:''}),Ju=(zt.a.add(Qu),Qu),ef=new ht.a({id:"users",use:"users-usage",viewBox:"0 0 14 14",content:''}),tf=(zt.a.add(ef),ef),nf=new ht.a({id:"view_list",use:"view_list-usage",viewBox:"0 0 24 24",content:''}),rf=(zt.a.add(nf),nf),of=new ht.a({id:"single_node_view",use:"single_node_view-usage",viewBox:"0 0 18 18",content:''}),af=(zt.a.add(of),of),cf=new ht.a({id:"single_node_view_press",use:"single_node_view_press-usage",viewBox:"0 0 18 18",content:''}),sf=(zt.a.add(cf),cf),lf=new ht.a({id:"virtualization",use:"virtualization-usage",viewBox:"0 0 16 16",content:''}),uf=(zt.a.add(lf),lf),ff=new ht.a({id:"warning",use:"warning-usage",viewBox:"0 0 24 24",content:''}),df=(zt.a.add(ff),ff),hf=new ht.a({id:"warning_triangle",use:"warning_triangle-usage",viewBox:"0 0 12 10",content:''}),pf=(zt.a.add(hf),hf),zf=new ht.a({id:"warning_triangle_hollow",use:"warning_triangle_hollow-usage",viewBox:"0 0 24 24",content:''}),vf=(zt.a.add(zf),zf),gf=new ht.a({id:"x",use:"x-usage",viewBox:"0 0 24 24",content:''}),mf=(zt.a.add(gf),gf),yf=new ht.a({id:"firewall_solid",use:"firewall_solid-usage",viewBox:"0 0 24 24",content:''}),bf=(zt.a.add(yf),yf),wf=new ht.a({id:"qualityOfService_solid",use:"qualityOfService_solid-usage",viewBox:"0 0 24 24",content:''}),kf=(zt.a.add(wf),wf),xf=new ht.a({id:"applications_solid",use:"applications_solid-usage",viewBox:"0 0 24 24",content:''}),jf=(zt.a.add(xf),xf),Mf=new ht.a({id:"networking_stack",use:"networking_stack-usage",viewBox:"0 0 18 18",content:''}),Cf=(zt.a.add(Mf),Mf),_f=new ht.a({id:"charts_view",use:"charts_view-usage",viewBox:"0 0 16 15",content:''}),qf=(zt.a.add(_f),_f),Sf=new ht.a({id:"nodes_update",use:"nodes_update-usage",viewBox:"0 0 40 40",content:''}),Of=(zt.a.add(Sf),{add_node:gt,add_user:yt,aggregation_avg:wt,aggregation_max:xt,aggregation_med:Mt,aggregation_min:_t,aggregation_sum:St,aggregation_sum_abs:Et,alarm:At,alarmCritical:Ht,alarmCriticalWarning:Pt,alarmWarning:Rt,alarm_bell:Nt,alarms_new:Bt,alarm_off:Wt,anomaliesBrain:Yt,anomaliesLens:Zt,applications_hollow:Kt,applicationsSolid:jf,around_clock:Jt,arrow_down:tn,arrow_w_line_left:rn,arrow_w_line_right:an,arrow_left:sn,arrow_s_down:un,arrow_s_left:dn,arrows_vertical:pn,bookmark:vn,bullet_one:mn,bullet_three:bn,bullet_two:kn,calendarFull:jn,calendarFullPress:Cn,chart_added:qn,charts:On,charts_view:qf,check:Tn,checkmark_partial_s:Ln,checkmark_s:Dn,checkmark:Vn,chevron_double:In,chevron_down:Fn,chevron_left:Un,chevron_right_s:Gn,chevron_right_small:$n,chevron_left_small:Xn,classError:Qn,classLatency:er,classUtilization:nr,classWorkload:or,clock_hollow:ar,clock5Min:sr,clock5MinPress:ur,close_circle:dr,cluster:pr,cluster_spaces:vr,code:mr,collapse:br,community:kr,connectivityStatusLive:jr,connectivityStatusOffline:Cr,connectivityStatusStale:qr,container:Or,controller_kind:Tr,controller_name:Lr,copy:Dr,correlation:Vr,correlation_inv:Ir,cpu:Fr,cross_s:Ur,data_retention:Gr,database:$r,dashboard:Xr,dashboard_add:Qr,dashboards:eo,disk:no,documentation:oo,dot:ao,dots_2x3:so,download:uo,error:ho,exclamation:zo,expand:go,filterList:yo,firewallSolid:bf,forcePlay:wo,forcePlayOutline:xo,gear:Mo,github:_o,google:Eo,goToNode:So,group_by:Ao,hamburger:Ho,help:Po,hide:Ro,highlightArea:No,holder:Bo,incident_manager:Wo,information:Yo,informationPress:Zo,insights:Ko,integrations:Jo,ipNetworking:ti,ipNetworkingPress:ri,last_week:ii,line_chart:ci,logo_s:li,loading:fi,magnify:hi,metrics:zi,metrics_explorer:gi,monitoring:yi,more:wi,navLeft:xi,navRight:Mi,nav_arrow_goto:_i,nav_dots:Si,networkingStack:Cf,netdata:Ei,netdataPress:Ai,node:Hi,node_child:Pi,node_default_l:Ri,node_hollow:Ni,node_import_export:Bi,node_notification_l:Wi,node_parent:Yi,node_selected_l:Zi,nodes:Ki,nodes_hollow:Ji,none_selected:ta,nodes_update:Sf,notification:Ka,os:ra,osAlpineLinux:ia,osAmazonLinux:ca,osArchLinux:la,osCelarOS:fa,osCentos:ha,osCentosColor:za,osCoreOS:ga,osDebian:ya,osDebianColor:wa,osFedora:xa,osFreeBSD:Ma,osGentoo:_a,osLinux:Sa,osLinuxColor:Ea,osMacOSX:Aa,osOracle:Ha,osOracleColor:Pa,osPress:Ra,osRaspbian:Na,osRedHat:Ba,osSuseLinux:Wa,osUbuntu:Ya,osUbuntuColor:Za,padlock:Ja,pauseOutline:tc,pauseSolid:rc,pencilSolid:cc,pencilOutline:ic,pie_chart_skeleton:lc,pin_element:fc,playOutline:hc,playSolid:zc,plus:gc,plus_mini_s:yc,pod:wc,pricing:xc,print:Mc,privacy:_c,ram:Ac,qualityOfServiceSolid:kf,question:Sc,questionFilled:Ec,refresh:Hc,reload:Pc,removeNode:Rc,resize_handler:Nc,room:Bc,room_home:Wc,room_new:Yc,room_overview:Zc,sad:Kc,save:Jc,search:ts,search_s:rs,searchPress:is,serviceApache:cs,serviceApacheTomcat:ls,serviceBeanstalk:fs,serviceCouchDB:hs,serviceDatabase:zs,serviceDockerHub:gs,serviceDockerHubPress:ys,serviceEBPF:ws,serviceElasticSearch:xs,serviceFreeNAS:Ms,serviceHAProxy:_s,serviceHTTPCheck:Ss,serviceIceCast:Es,serviceInfluxDB:As,serviceIPFS:Hs,serviceIPVS:Ps,serviceKubernetes:Rs,serviceLighthttpd:Ns,serviceLighthttpd2:Bs,serviceLiteSpeed:Ws,serviceLxc:Ys,serviceMariaDB:Zs,serviceMemCached:Ks,serviceMongoDB:Js,serviceMySQL:tl,serviceMySQLPress:rl,serviceNginx:il,serviceNginxLocal:cl,serviceNginxPlus:ll,serviceNtpd:fl,serviceNtpdPress:hl,serviceOpenStack:zl,serviceOpenWrt:gl,servicePan:yl,servicePercona:wl,servicePfSense:xl,servicePhpFpm:Ml,servicePostgreSQL:_l,serviceProxySQL:_l,serviceRabbitMQ:Sl,serviceRedis:El,serviceRethinkDB:Al,serviceRetroShare:Hl,services:Pl,serviceSelectedArea:Rl,serviceSolr:Nl,serviceSquid:Bl,serviceSummaryStatistic:Wl,serviceTraefik:Yl,serviceVarnish:Zl,serviceWebLog:Kl,serviceWebLogNginx:Jl,serviceX509Check:tu,serviceXen:ru,settings:iu,settings_h:cu,sorting_vertical:lu,sorting_asc:hu,sorting_desc:fu,space:zu,space_new:gu,switch_off:yu,system_overview:wu,text_add:xu,thumb_down:Mu,thumb_up:_u,tiny_buttons:Su,training:Eu,trashcan:Au,triangle:Hu,triangle_down:Pu,unknownError:Ru,universe:Nu,unreachable:Bu,unreachableNode:Wu,update:Yu,update_pending:Zu,upload:Ku,user:Ju,users:tf,view_list:rf,viewSingleNode:af,viewSingleNodePress:sf,virtualization:uf,warning:df,warning_triangle:pf,warning_triangle_hollow:vf,x:mf}),Ef=function(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e},Tf={small:"16px",medium:"24px",large:"40px"},Af=s.d.svg.withConfig({displayName:"styled__StyledIcon",componentId:"sc-1pjn63w-0"})(Le||(Le=Ef(["\n height: ",";\n width: ",";\n opacity: ",";\n pointer-events: ",";\n ","\n ","\n ","\n ","\n ","\n"],["\n height: ",";\n width: ",";\n opacity: ",";\n pointer-events: ",";\n ","\n ","\n ","\n ","\n ","\n"])),(function(e){var t=e.size;return e.height||Tf[t]}),(function(e){var t=e.size;return e.width||Tf[t]}),(function(e){return e.disabled?.3:1}),(function(e){return e.disabled?"none":"unset"}),(function(e){var t=e.rotate;return!isNaN(t)&&"transform: rotate(".concat(90*t,"deg);")}),(function(e){var t=e.theme,n=e.color;return n&&"fill: ".concat(Ve(n)({theme:t}),";")}),(function(e){var t=e.theme,n=e.hoverColor;return n&&"&:hover { fill: ".concat(Ve(n)({theme:t}),"; }")}),Ue,Ye),Lf=function(){return(Lf=Object.assign||function(e){for(var t,n=1,r=arguments.length;n *:not(:last-child) {\n margin-".concat(a,": ").concat(t*n,"px;\n }\n ")},ud=function(e){var t=function(e,t,n){return e?"column":t?"column-reverse":n?"row-reverse":"row"}(e.column,e.columnReverse,e.rowReverse);return"flex-direction: ".concat(t,";")},fd=function(){return(fd=Object.assign||function(e){for(var t,n=1,r=arguments.length;n &",_invalid:"&[aria-invalid=true]",_pressed:"&[aria-pressed=true]",_readOnly:"&[aria-readonly=true], &[readonly]",_first:"&:first-of-type",_last:"&:last-of-type",_expanded:"&[aria-expanded=true]",_grabbed:"&[aria-grabbed=true]",_notFirst:"&:not(:first-of-type)",_notLast:"&:not(:last-of-type)",_groupHover:"[role=group]:hover &",_autofill:"&:-webkit-autofill",_placeholder:"&::placeholder"},bd=function(e){var t=e.theme,n=gd(e,["theme"]),r="";for(var o in n)if(o in yd){var i=o,a=n[i],c=md(zd,pd,ed)(vd({theme:t},a));r+="\n ".concat(yd[i],"{ \n ").concat(c," \n }")}return r.replace(/^(?=\n)$|^\s*|\s*$|\n\n+/gm,"")};function wd(){return(wd=Object.assign||function(e){for(var t=1;t=0)return xd(e,t,t);var n=Math.abs(t),r=xd(e,n,n);return"string"===typeof r?"-"+r:-1*r},Od=["margin","marginTop","marginRight","marginBottom","marginLeft","marginX","marginY","top","bottom","left","right"].reduce((function(e,t){var n;return wd({},e,((n={})[t]=Sd,n))}),{}),Ed=function e(t){return function(n){void 0===n&&(n={});var r=wd({},Md,{},n.theme||n),o={},i=function(e){return function(t){var n={},r=xd(t,"breakpoints",jd),o=[null].concat(r.map((function(e){return"@media screen and (min-width: "+e+")"})));for(var i in e){var a="function"===typeof e[i]?e[i](t):e[i];if(null!=a)if(Array.isArray(a))for(var c=0;c tr th {\n border-spacing: 0;\n border-bottom: 1px solid #aeb3b7;\n padding-bottom: 5px;\n }\n"],["\n & > tr th {\n border-spacing: 0;\n border-bottom: 1px solid #aeb3b7;\n padding-bottom: 5px;\n }\n"]))),pz=function(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e},zz=function(){return(zz=Object.assign||function(e){for(var t,n=1,r=arguments.length;n=t?e.call(null):r.id=requestAnimationFrame(o)}))};return r}var Dz=null;function Pz(e){if(void 0===e&&(e=!1),null===Dz||e){var t=document.createElement("div"),n=t.style;n.width="50px",n.height="50px",n.overflow="scroll",n.direction="rtl";var r=document.createElement("div"),o=r.style;return o.width="100px",o.height="100px",t.appendChild(r),document.body.appendChild(t),t.scrollLeft>0?Dz="positive-descending":(t.scrollLeft=1,Dz=0===t.scrollLeft?"negative":"positive-ascending"),document.body.removeChild(t),Dz}return Dz}var Vz=150,Rz=function(e,t){return e};function Iz(e){var t,n=e.getItemOffset,r=e.getEstimatedTotalSize,o=e.getItemSize,i=e.getOffsetForIndexAndAlignment,c=e.getStartIndexForOffset,s=e.getStopIndexForStartIndex,l=e.initInstanceProps,u=e.shouldResetStyleCacheOnItemSizeChange,f=e.validateProps;return(t=function(e){function t(t){var r;return(r=e.call(this,t)||this)._instanceProps=l(r.props,Object(qz.a)(r)),r._outerRef=void 0,r._resetIsScrollingTimeoutId=null,r.state={instance:Object(qz.a)(r),isScrolling:!1,scrollDirection:"forward",scrollOffset:"number"===typeof r.props.initialScrollOffset?r.props.initialScrollOffset:0,scrollUpdateWasRequested:!1},r._callOnItemsRendered=void 0,r._callOnItemsRendered=Tz((function(e,t,n,o){return r.props.onItemsRendered({overscanStartIndex:e,overscanStopIndex:t,visibleStartIndex:n,visibleStopIndex:o})})),r._callOnScroll=void 0,r._callOnScroll=Tz((function(e,t,n){return r.props.onScroll({scrollDirection:e,scrollOffset:t,scrollUpdateWasRequested:n})})),r._getItemStyle=void 0,r._getItemStyle=function(e){var t,i=r.props,a=i.direction,c=i.itemSize,s=i.layout,l=r._getItemStyleCache(u&&c,u&&s,u&&a);if(l.hasOwnProperty(e))t=l[e];else{var f=n(r.props,e,r._instanceProps),d=o(r.props,e,r._instanceProps),h="horizontal"===a||"horizontal"===s,p="rtl"===a,z=h?f:0;l[e]=t={position:"absolute",left:p?void 0:z,right:p?z:void 0,top:h?0:f,height:h?"100%":d,width:h?d:"100%"}}return t},r._getItemStyleCache=void 0,r._getItemStyleCache=Tz((function(e,t,n){return{}})),r._onScrollHorizontal=function(e){var t=e.currentTarget,n=t.clientWidth,o=t.scrollLeft,i=t.scrollWidth;r.setState((function(e){if(e.scrollOffset===o)return null;var t=r.props.direction,a=o;if("rtl"===t)switch(Pz()){case"negative":a=-o;break;case"positive-descending":a=i-n-o}return a=Math.max(0,Math.min(a,i-n)),{isScrolling:!0,scrollDirection:e.scrollOffset0)for(var _=j;_<=M;_++)C.push(Object(a.createElement)(t,{data:f,key:h(_,f),index:_,isScrolling:m?b:void 0,style:this._getItemStyle(_)}));var q=r(this.props,this._instanceProps);return Object(a.createElement)(z||v||"div",{className:n,onScroll:k,ref:this._outerRefSetter,style:Object(_z.a)({position:"relative",height:i,width:y,overflow:"auto",WebkitOverflowScrolling:"touch",willChange:"transform",direction:o},g)},Object(a.createElement)(s||l||"div",{children:C,ref:c,style:{height:w?"100%":q,pointerEvents:b?"none":void 0,width:w?q:"100%"}}))},d._callPropsCallbacks=function(){if("function"===typeof this.props.onItemsRendered&&this.props.itemCount>0){var e=this._getRangeToRender(),t=e[0],n=e[1],r=e[2],o=e[3];this._callOnItemsRendered(t,n,r,o)}if("function"===typeof this.props.onScroll){var i=this.state,a=i.scrollDirection,c=i.scrollOffset,s=i.scrollUpdateWasRequested;this._callOnScroll(a,c,s)}},d._getRangeToRender=function(){var e=this.props,t=e.itemCount,n=e.overscanCount,r=this.state,o=r.isScrolling,i=r.scrollDirection,a=r.scrollOffset;if(0===t)return[0,0,0,0];var l=c(this.props,a,this._instanceProps),u=s(this.props,l,a,this._instanceProps),f=o&&"backward"!==i?1:Math.max(1,n),d=o&&"forward"!==i?1:Math.max(1,n);return[Math.max(0,l-f),Math.max(0,Math.min(t-1,u+d)),l,u]},t}(a.PureComponent)).defaultProps={direction:"ltr",itemData:void 0,layout:"vertical",overscanCount:2,useIsScrolling:!1},t}var Nz=function(e,t){e.children,e.direction,e.height,e.layout,e.innerTagName,e.outerTagName,e.width,t.instance},Fz=function(e,t,n){var r=e.itemSize,o=n.itemMetadataMap,i=n.lastMeasuredIndex;if(t>i){var a=0;if(i>=0){var c=o[i];a=c.offset+c.size}for(var s=i+1;s<=t;s++){var l=r(s);o[s]={offset:a,size:l},a+=l}n.lastMeasuredIndex=t}return o[t]},Bz=function(e,t,n,r,o){for(;r<=n;){var i=r+Math.floor((n-r)/2),a=Fz(e,i,t).offset;if(a===o)return i;ao&&(n=i-1)}return r>0?r-1:0},Uz=function(e,t,n,r){for(var o=e.itemCount,i=1;n=n&&(i=n-1),i>=0){var c=r[i];a=c.offset+c.size}return a+(n-i-1)*o},Gz=Iz({getItemOffset:function(e,t,n){return Fz(e,t,n).offset},getItemSize:function(e,t,n){return n.itemMetadataMap[t].size},getEstimatedTotalSize:Wz,getOffsetForIndexAndAlignment:function(e,t,n,r,o){var i=e.direction,a=e.height,c=e.layout,s=e.width,l="horizontal"===i||"horizontal"===c?s:a,u=Fz(e,t,o),f=Wz(e,o),d=Math.max(0,Math.min(f-l,u.offset)),h=Math.max(0,u.offset-l+u.size);switch("smart"===n&&(n=r>=h-l&&r<=d+l?"auto":"center"),n){case"start":return d;case"end":return h;case"center":return Math.round(h+(d-h)/2);case"auto":default:return r>=h&&r<=d?r:r0?r[o].offset:0)>=n?Bz(e,t,o,0,n):Uz(e,t,Math.max(0,o),n)}(e,n,t)},getStopIndexForStartIndex:function(e,t,n,r){for(var o=e.direction,i=e.height,a=e.itemCount,c=e.layout,s=e.width,l="horizontal"===o||"horizontal"===c?s:i,u=Fz(e,t,r),f=n+l,d=u.offset+u.size,h=t;h=h-u&&r<=d+u?"auto":"center"),n){case"start":return d;case"end":return h;case"center":var p=Math.round(h+(d-h)/2);return pf+Math.floor(u/2)?f:p;case"auto":default:return r>=h&&r<=d?r:r span {\n font-weight: ",";\n }\n"],["\n border-bottom: "," solid\n ",";\n box-sizing: border-box;\n\n min-width: ",";\n max-width: ",";\n height: ",";\n color: ",";\n font-weight: ",";\n\n cursor: pointer;\n opacity: ",";\n pointer-events: ",";\n\n &:hover {\n border-bottom: "," solid ",";\n }\n\n & > span {\n font-weight: ",";\n }\n"])),(function(e){return e.small?"2px":"4px"}),(function(e){var t=e.active;return Ve(t?"accent":["transparent","full"])}),(function(e){var t=e.minWidth;return null!==t&&void 0!==t?t:Ie(10)}),(function(e){var t=e.maxWidth;return null!==t&&void 0!==t?t:Ie(26)}),(function(e){var t=e.small;return Ie(t?4:6)}),Ve("text"),(function(e){return e.active?"bold":"normal"}),(function(e){return e.disabled?.4:1}),(function(e){return e.disabled?"none":"auto"}),(function(e){return e.small?"2px":"4px"}),Ve("primary"),(function(e){return e.active?"bold":"normal"})),Vv=function(){return(Vv=Object.assign||function(e){for(var t,n=1,r=arguments.length;ne.clientHeight}));return n.forEach((function(e){return e.addEventListener("scroll",t,{capture:!1,passive:!0})})),function(){return n.forEach((function(e){return e.removeEventListener("scroll",t)}))}};n=r();var o=function(){n(),n=r(),t()};return window.addEventListener("resize",o),function(){n(),window.removeEventListener("resize",o)}}),[e,t])}(o,b),og(m,f,o),tg(d);var w=eg();return Gd.a.createPortal(r?c.a.createElement(c.a.Fragment,null,c.a.createElement(dg,zg({ref:y,width:{max:"100%"},column:!0,"data-testid":"drop"},v),h),c.a.createElement(gg,null)):c.a.createElement(dg,zg({ref:y,width:{max:"100%"},column:!0,"data-testid":"drop"},v),h),w)})),bg=function(){return(bg=Object.assign||function(e){for(var t,n=1,r=arguments.length;n1&&o.forEach((function(n){var o;r[n]=e(((o={})[n]=t[n],o))})),r},lm=function(e,t,n,r,o){var i={};return r.slice(0,e.length).forEach((function(r,a){var c,s=e[a],l=t(r,n,o);s?nm()(i,((c={})[s]=nm()({},i[s],l),c)):nm()(i,l)})),i},um=function(e,t,n,r,o){var i={};for(var a in r){var c=e[a],s=t(r[a],n,o);if(c){var l,u=im(c);nm()(i,((l={})[u]=nm()({},i[u],s),l))}else nm()(i,s)}return i},fm=function(e){var t=e.properties,n=e.property,r=e.scale,o=e.transform,i=void 0===o?am:o,a=e.defaultScale;t=t||[n];var c=function(e,n,r){var o={},a=i(e,n,r);if(null!==a)return t.forEach((function(e){o[e]=a})),o};return c.scale=r,c.defaults=a,c},dm=function(e){void 0===e&&(e={});var t={};return Object.keys(e).forEach((function(n){var r=e[n];t[n]=!0!==r?"function"!==typeof r?fm(r):r:fm({property:n,scale:n})})),sm(t)},hm=dm({width:{property:"width",scale:"sizes",transform:function(e,t){return cm(t,e,!function(e){return"number"===typeof e&&!isNaN(e)}(e)||e>1?e:100*e+"%")}},height:{property:"height",scale:"sizes"},minWidth:{property:"minWidth",scale:"sizes"},minHeight:{property:"minHeight",scale:"sizes"},maxWidth:{property:"maxWidth",scale:"sizes"},maxHeight:{property:"maxHeight",scale:"sizes"},size:{properties:["width","height"],scale:"sizes"},overflow:!0,overflowX:!0,overflowY:!0,display:!0,verticalAlign:!0}),pm={color:{property:"color",scale:"colors"},backgroundColor:{property:"backgroundColor",scale:"colors"},opacity:!0};pm.bg=pm.backgroundColor;var zm=dm(pm),vm=dm({fontFamily:{property:"fontFamily",scale:"fonts"},fontSize:{property:"fontSize",scale:"fontSizes",defaultScale:[12,14,16,20,24,32,48,64,72]},fontWeight:{property:"fontWeight",scale:"fontWeights"},lineHeight:{property:"lineHeight",scale:"lineHeights"},letterSpacing:{property:"letterSpacing",scale:"letterSpacings"},textAlign:!0,fontStyle:!0}),gm=dm({alignItems:!0,alignContent:!0,justifyItems:!0,justifyContent:!0,flexWrap:!0,flexDirection:!0,flex:!0,flexGrow:!0,flexShrink:!0,flexBasis:!0,justifySelf:!0,alignSelf:!0,order:!0}),mm={space:[0,4,8,16,32,64,128,256,512]},ym=dm({gridGap:{property:"gridGap",scale:"space",defaultScale:mm.space},gridColumnGap:{property:"gridColumnGap",scale:"space",defaultScale:mm.space},gridRowGap:{property:"gridRowGap",scale:"space",defaultScale:mm.space},gridColumn:!0,gridRow:!0,gridAutoFlow:!0,gridAutoColumns:!0,gridAutoRows:!0,gridTemplateColumns:!0,gridTemplateRows:!0,gridTemplateAreas:!0,gridArea:!0}),bm={border:{property:"border",scale:"borders"},borderWidth:{property:"borderWidth",scale:"borderWidths"},borderStyle:{property:"borderStyle",scale:"borderStyles"},borderColor:{property:"borderColor",scale:"colors"},borderRadius:{property:"borderRadius",scale:"radii"},borderTop:{property:"borderTop",scale:"borders"},borderTopLeftRadius:{property:"borderTopLeftRadius",scale:"radii"},borderTopRightRadius:{property:"borderTopRightRadius",scale:"radii"},borderRight:{property:"borderRight",scale:"borders"},borderBottom:{property:"borderBottom",scale:"borders"},borderBottomLeftRadius:{property:"borderBottomLeftRadius",scale:"radii"},borderBottomRightRadius:{property:"borderBottomRightRadius",scale:"radii"},borderLeft:{property:"borderLeft",scale:"borders"},borderX:{properties:["borderLeft","borderRight"],scale:"borders"},borderY:{properties:["borderTop","borderBottom"],scale:"borders"},borderTopWidth:{property:"borderTopWidth",scale:"borderWidths"},borderTopColor:{property:"borderTopColor",scale:"colors"},borderTopStyle:{property:"borderTopStyle",scale:"borderStyles"}};bm.borderTopLeftRadius={property:"borderTopLeftRadius",scale:"radii"},bm.borderTopRightRadius={property:"borderTopRightRadius",scale:"radii"},bm.borderBottomWidth={property:"borderBottomWidth",scale:"borderWidths"},bm.borderBottomColor={property:"borderBottomColor",scale:"colors"},bm.borderBottomStyle={property:"borderBottomStyle",scale:"borderStyles"},bm.borderBottomLeftRadius={property:"borderBottomLeftRadius",scale:"radii"},bm.borderBottomRightRadius={property:"borderBottomRightRadius",scale:"radii"},bm.borderLeftWidth={property:"borderLeftWidth",scale:"borderWidths"},bm.borderLeftColor={property:"borderLeftColor",scale:"colors"},bm.borderLeftStyle={property:"borderLeftStyle",scale:"borderStyles"},bm.borderRightWidth={property:"borderRightWidth",scale:"borderWidths"},bm.borderRightColor={property:"borderRightColor",scale:"colors"},bm.borderRightStyle={property:"borderRightStyle",scale:"borderStyles"};var wm=dm(bm),km={background:!0,backgroundImage:!0,backgroundSize:!0,backgroundPosition:!0,backgroundRepeat:!0};km.bgImage=km.backgroundImage,km.bgSize=km.backgroundSize,km.bgPosition=km.backgroundPosition,km.bgRepeat=km.backgroundRepeat;var xm=dm(km),jm={space:[0,4,8,16,32,64,128,256,512]},Mm=dm({position:!0,zIndex:{property:"zIndex",scale:"zIndices"},top:{property:"top",scale:"space",defaultScale:jm.space},right:{property:"right",scale:"space",defaultScale:jm.space},bottom:{property:"bottom",scale:"space",defaultScale:jm.space},left:{property:"left",scale:"space",defaultScale:jm.space}}),Cm=Mm,_m={space:[0,4,8,16,32,64,128,256,512]},qm=function(e){return"number"===typeof e&&!isNaN(e)},Sm=function(e,t){if(!qm(e))return cm(t,e,e);var n=e<0,r=Math.abs(e),o=cm(t,r,r);return qm(o)?o*(n?-1:1):n?"-"+o:o},Om={};Om.margin={margin:{property:"margin",scale:"space",transform:Sm,defaultScale:_m.space},marginTop:{property:"marginTop",scale:"space",transform:Sm,defaultScale:_m.space},marginRight:{property:"marginRight",scale:"space",transform:Sm,defaultScale:_m.space},marginBottom:{property:"marginBottom",scale:"space",transform:Sm,defaultScale:_m.space},marginLeft:{property:"marginLeft",scale:"space",transform:Sm,defaultScale:_m.space},marginX:{properties:["marginLeft","marginRight"],scale:"space",transform:Sm,defaultScale:_m.space},marginY:{properties:["marginTop","marginBottom"],scale:"space",transform:Sm,defaultScale:_m.space}},Om.margin.m=Om.margin.margin,Om.margin.mt=Om.margin.marginTop,Om.margin.mr=Om.margin.marginRight,Om.margin.mb=Om.margin.marginBottom,Om.margin.ml=Om.margin.marginLeft,Om.margin.mx=Om.margin.marginX,Om.margin.my=Om.margin.marginY,Om.padding={padding:{property:"padding",scale:"space",defaultScale:_m.space},paddingTop:{property:"paddingTop",scale:"space",defaultScale:_m.space},paddingRight:{property:"paddingRight",scale:"space",defaultScale:_m.space},paddingBottom:{property:"paddingBottom",scale:"space",defaultScale:_m.space},paddingLeft:{property:"paddingLeft",scale:"space",defaultScale:_m.space},paddingX:{properties:["paddingLeft","paddingRight"],scale:"space",defaultScale:_m.space},paddingY:{properties:["paddingTop","paddingBottom"],scale:"space",defaultScale:_m.space}},Om.padding.p=Om.padding.padding,Om.padding.pt=Om.padding.paddingTop,Om.padding.pr=Om.padding.paddingRight,Om.padding.pb=Om.padding.paddingBottom,Om.padding.pl=Om.padding.paddingLeft,Om.padding.px=Om.padding.paddingX,Om.padding.py=Om.padding.paddingY;(function(){for(var e={},t=arguments.length,n=new Array(t),r=0;r4)return Fm;var n=t.map((function(t){return Fe(e,t)}));return 1===n.length?{top:n[0],right:n[0],bottom:n[0],left:n[0]}:2===n.length?{top:n[0],right:n[1],bottom:n[0],left:n[1]}:3===n.length?{top:n[0],right:n[1],bottom:n[2],left:n[1]}:{top:n[0],right:n[1],bottom:n[2],left:n[3]}},Um=function(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e},Wm=function(e,t){return"0"!==e&&"0"!==t?"calc((100% - ".concat(e,") - ").concat(t,")"):"0"===e&&"0"===t?"100%":"calc(100% - ".concat("0"===e?t:e,")")},Gm=new Set(["top","center","bottom"]),Ym=new Set(["bottom-left","left","top-left"]),$m=new Set(["right","center","left"]),Zm=new Set(["top-left","top","top-right"]),Xm=new Set(["top-right","right","bottom-right"]),Km=new Set(["bottom-right","bottom","bottom-left"]),Qm=s.d.div.attrs((function(e){var t=e.theme,n=e.margin;return{marginDimensions:Bm(t,n)}})).withConfig({displayName:"container__Container",componentId:"sc-7g83tw-0"})(Tm||(Tm=Um(["\n position: ",";\n display: flex;\n z-index: 35;\n outline: none;\n pointer-events: all;\n\n ","\n ","\n ","\n ","\n ","\n ","\n ","\n\n ","\n"],["\n position: ",";\n display: flex;\n z-index: 35;\n outline: none;\n pointer-events: all;\n\n ","\n ","\n ","\n ","\n ","\n ","\n ","\n\n ","\n"])),(function(e){return e.isAbsolute?"absolute":"fixed"}),(function(e){var t=e.marginDimensions,n=t.top,r=t.bottom;return"max-height: ".concat(Wm(n,r),";")}),(function(e){var t=e.marginDimensions,n=t.right,r=t.left;return"max-width: ".concat(Wm(r,n),";")}),(function(e){var t=e.position,n=e.full,r=e.marginDimensions;return"vertical"===n||!0===n||Zm.has(t)?"top: ".concat(r.top,";"):$m.has(t)?"top: 50%;":""}),(function(e){var t=e.position,n=e.full,r=e.marginDimensions;return"horizontal"===n||!0===n||Xm.has(t)?"right: ".concat(r.right,";"):""}),(function(e){var t=e.position,n=e.full,r=e.marginDimensions;return"vertical"===n||!0===n||Km.has(t)?"bottom: ".concat(r.bottom,";"):""}),(function(e){var t=e.position,n=e.full,r=e.marginDimensions;return"horizontal"===n||!0===n||Ym.has(t)?"left: ".concat(r.left,";"):Gm.has(t)?"left: 50%;":""}),(function(e){var t=e.full,n=e.position,r=function(){var e=!0!==t&&"horizontal"!==t&&Gm.has(n),r=!0!==t&&"vertical"!==t&&$m.has(n);return e||r?e&&!r?"translateX(-50%)":!e&&r?"translateY(-50%)":"translate(-50%, -50%)":""}();return r&&"transform: ".concat(r,";")}),(function(e){return e.borderShadow&&"box-shadow: 0px 2px 68px rgba(0, 0, 0, 0.288);"})),Jm=function(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e},ey=function(){return(ey=Object.assign||function(e){for(var t,n=1,r=arguments.length;n * {\n min-width: initial;\n max-width: initial;\n }\n"],["\n width: 100%;\n\n .tabs > * {\n min-width: initial;\n max-width: initial;\n }\n"]))),Ty=function(){return c.a.createElement(Hd,{overflow:{vertical:"auto"},"data-testid":"dashboard"},c.a.createElement(Ey,null,c.a.createElement(Iv,{label:"Using a Mouse"},c.a.createElement(qy,null)),c.a.createElement(Iv,{label:"Using Touch"},c.a.createElement(Sy,null))))},Ay=n(21),Ly=n.n(Ay);function Hy(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Dy(e,t){for(var n=0;n0?e.concat(Object.assign({field:i,values:l,type:c},s)):e}return e.concat(o)}),[])}function Gy(e,t,n,r){var o=e.data,i=Uy(t,n,r)||[];return Object.assign(Object.assign({},e),{data:o.map((function(e){return Object.assign(Object.assign({},e),{selected:i.some((function(t){return Yy(t,e.value)}))})}))})}function Yy(e,t){return!!(e&&e.name&&t&&t.name&&e.name===t.name)||Fy()(e,t,{strict:!0})}function $y(e,t){return t?t.reduce((function(e,t){return e.find((function(e){return e.type===t.type&&e.field===t.field}))?e:[].concat(Object(Iy.a)(e),[t])}),e):e}function Zy(e){return void 0!==e.name}var Xy=Object.assign({},o),Ky=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"===typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o1)return console.warn("search-ui-site-search-connector: Cannot apply more than 1 none-value filters to a single field"),e;var o=r[0];if(Xy.isFilterValueRange(o)){o.name;var i=Ky(o,["name"]);return e[n]=Object.assign({type:"range"},i),e}return e}return e[n]=Object.assign(Object.assign({},"any"===t.type?{}:{type:"and"}),{values:r}),e}),{})}(void 0!==t.filters?t.filters:e.filters),l=void 0!==t.current?t.current:e.current,u=void 0!==t.resultsPerPage?t.resultsPerPage:e.resultsPerPage,f=void 0!==t.sortDirection?t.sortDirection:e.sortDirection,d=void 0!==t.sortField?t.sortField:e.sortField,h=void 0!==t.sortList?t.sortList:e.sortList,p=(i=t.result_fields)?[Object.keys(i),Object.entries(i).reduce((function(e,t){var n=Object(Vy.a)(t,2),r=n[0],o=n[1];return o.snippet?Object.assign(Object.assign({},e),Object(Ry.a)({},r,o.snippet)):e}),{})]:[],z=Object(Vy.a)(p,2),v=z[0],g=z[1],m=(a=t.search_fields)?Object.keys(a):[],y=e.searchTerm;return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},u&&{per_page:u}),l&&{page:l}),f&&{sort_direction:Object(Ry.a)({},n,f)}),d&&{sort_field:Object(Ry.a)({},n,d)}),h&&{sort_list:Object(Ry.a)({},n,h)}),s&&{filters:Object(Ry.a)({},n,s)}),c&&{facets:Object(Ry.a)({},n,c)}),v&&{fetch_fields:Object(Ry.a)({},n,v)}),g&&{highlight_fields:Object(Ry.a)({},n,g)}),m&&!!m.length&&{search_fields:Object(Ry.a)({},n,m)}),{q:y})}var Jy=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"===typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o0&&{facets:a})}var nb=function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{s(r.next(e))}catch(t){i(t)}}function c(e){try{s(r.throw(e))}catch(t){i(t)}}function s(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}s((r=r.apply(e,t||[])).next())}))};function rb(e,t,n,r){return nb(this,void 0,void 0,Ly.a.mark((function o(){var i,a,c,s;return Ly.a.wrap((function(o){for(;;)switch(o.prev=o.next){case 0:return i=new Headers({"Content-Type":"application/json"}),o.next=3,fetch("https://search-api.swiftype.com/api/v1/public/".concat(n),{method:t,headers:i,body:JSON.stringify(Object.assign({engine_key:e},r)),credentials:"include"});case 3:return a=o.sent,o.prev=4,o.next=7,a.json();case 7:c=o.sent,o.next=12;break;case 10:o.prev=10,o.t0=o.catch(4);case 12:if(!(a.status>=200&&a.status<300)){o.next=16;break}return o.abrupt("return",c);case 16:throw s=c&&c.errors&&Object.entries(c.errors).length>0?JSON.stringify(c.errors):a.status,new Error("".concat(s));case 18:case"end":return o.stop()}}),o,null,[[4,10]])})))}var ob=function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{s(r.next(e))}catch(t){i(t)}}function c(e){try{s(r.throw(e))}catch(t){i(t)}}function s(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}s((r=r.apply(e,t||[])).next())}))};function ib(e,t,n){var r=Object.entries(Object.assign({engine_key:e},n)).map((function(e){var t=Object(Vy.a)(e,2),n=t[0],r=t[1];return"".concat(n,"=").concat(encodeURIComponent(r))})).join("&");return fetch("https://search-api.swiftype.com/api/v1/public/".concat(t,"?").concat(r),{method:"GET",credentials:"include"})}var ab=function(){function e(t){var n=t.documentType,r=t.engineKey,o=t.beforeSearchCall,i=void 0===o?function(e,t){return t(e)}:o,a=t.beforeAutocompleteResultsCall,c=void 0===a?function(e,t){return t(e)}:a;Hy(this,e),this.documentType=n,this.engineKey=r,this.beforeSearchCall=i,this.beforeAutocompleteResultsCall=c,this.request=rb.bind(this,r),this._get=ib.bind(this,r)}return Py(e,[{key:"onResultClick",value:function(e){var t=e.query,n=e.documentId,r=e.tags;r&&r.length>0&&console.warn("search-ui-site-search-connector: Site Search does not support tags on click"),this._get("analytics/pc",{t:(new Date).getTime(),q:t,doc_id:n})}},{key:"onAutocompleteResultClick",value:function(e){var t=e.query,n=e.documentId;e.tags&&console.warn("search-ui-site-search-connector: Site Search does not support tags on autocompleteClick"),this._get("analytics/pas",{t:(new Date).getTime(),q:t,doc_id:n})}},{key:"onSearch",value:function(e,t){var n=this,r=Qy(e,t,this.documentType);return this.beforeSearchCall(r,(function(e){return n.request("POST","engines/search.json",e).then((function(e){return tb(e,n.documentType)}))}))}},{key:"onAutocomplete",value:function(e,t){var n=e.searchTerm;return ob(this,void 0,void 0,Ly.a.mark((function e(){var r,o=this;return Ly.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!t.results){e.next=3;break}return r=Qy({searchTerm:n},t.results,this.documentType),e.abrupt("return",this.beforeAutocompleteResultsCall(r,(function(e){return o.request("POST","engines/suggest.json",e).then((function(e){return{autocompletedResults:tb(e,o.documentType).results}}))})));case 3:t.suggestions&&console.warn("search-ui-site-search-connector: Site Search does support query suggestions on autocomplete");case 4:case"end":return e.stop()}}),e,this)})))}}]),e}();function cb(e){return"/"===e.charAt(0)}function sb(e,t){for(var n=t,r=n+1,o=e.length;r=0;u--){var f=o[u];"."===f?sb(o,u):".."===f?(sb(o,u),l++):l&&(sb(o,u),l--)}if(!c)for(;l--;l)o.unshift("..");!c||""===o[0]||o[0]&&cb(o[0])||o.unshift("");var d=o.join("/");return n&&"/"!==d.substr(-1)&&(d+="/"),d};var ub=!0,fb="Invariant failed";function db(e,t){if(!e){if(ub)throw new Error(fb);var n="function"===typeof t?t():t;throw new Error(n?fb+": "+n:fb)}}function hb(e){return"/"===e.charAt(0)?e:"/"+e}function pb(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function zb(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function vb(e){var t=e.pathname,n=e.search,r=e.hash,o=t||"/";return n&&"?"!==n&&(o+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(o+="#"===r.charAt(0)?r:"#"+r),o}function gb(e,t,n,r){var o;"string"===typeof e?(o=function(e){var t=e||"/",n="",r="",o=t.indexOf("#");-1!==o&&(r=t.substr(o),t=t.substr(0,o));var i=t.indexOf("?");return-1!==i&&(n=t.substr(i),t=t.substr(0,i)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e)).state=t:(void 0===(o=Object(_z.a)({},e)).pathname&&(o.pathname=""),o.search?"?"!==o.search.charAt(0)&&(o.search="?"+o.search):o.search="",o.hash?"#"!==o.hash.charAt(0)&&(o.hash="#"+o.hash):o.hash="",void 0!==t&&void 0===o.state&&(o.state=t));try{o.pathname=decodeURI(o.pathname)}catch(i){throw i instanceof URIError?new URIError('Pathname "'+o.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):i}return n&&(o.key=n),r?o.pathname?"/"!==o.pathname.charAt(0)&&(o.pathname=lb(o.pathname,r.pathname)):o.pathname=r.pathname:o.pathname||(o.pathname="/"),o}function mb(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,o){if(null!=e){var i="function"===typeof e?e(t,n):e;"string"===typeof i?"function"===typeof r?r(i,o):o(!0):o(!1!==i)}else o(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;r1&&(s.current=n),t&&(s.q=t),o&&(s.size=o),r&&r.length>0&&(s.filters=r),c&&c.length>0?s.sort=c:a&&(s["sort-field"]=a,s["sort-direction"]=i),s}(e))}var Ib=function(){function e(){Hy(this,e),this.history="undefined"!==typeof window?jb():function(e){void 0===e&&(e={});var t=e,n=t.getUserConfirmation,r=t.initialEntries,o=void 0===r?["/"]:r,i=t.initialIndex,a=void 0===i?0:i,c=t.keyLength,s=void 0===c?6:c,l=mb();function u(e){Object(_z.a)(v,e),v.length=v.entries.length,l.notifyListeners(v.location,v.action)}function f(){return Math.random().toString(36).substr(2,s)}var d=Mb(a,0,o.length-1),h=o.map((function(e){return gb(e,void 0,"string"===typeof e?f():e.key||f())})),p=vb;function z(e){var t=Mb(v.index+e,0,v.entries.length-1),r=v.entries[t];l.confirmTransitionTo(r,"POP",n,(function(e){e?u({action:"POP",location:r,index:t}):u()}))}var v={length:h.length,action:"POP",location:h[d],index:d,entries:h,createHref:p,push:function(e,t){var r=gb(e,t,f(),v.location);l.confirmTransitionTo(r,"PUSH",n,(function(e){if(e){var t=v.index+1,n=v.entries.slice(0);n.length>t?n.splice(t,n.length-t,r):n.push(r),u({action:"PUSH",location:r,index:t,entries:n})}}))},replace:function(e,t){var r=gb(e,t,f(),v.location);l.confirmTransitionTo(r,"REPLACE",n,(function(e){e&&(v.entries[v.index]=r,u({action:"REPLACE",location:r}))}))},go:z,goBack:function(){z(-1)},goForward:function(){z(1)},canGo:function(e){var t=v.index+e;return t>=0&&t1&&void 0!==arguments[1]?arguments[1]:{},n=t.replaceUrl,r=void 0!==n&&n,o=Rb(e);this.lastPushSearchString=o;var i=r?this.history.replace:this.history.push;i({search:"?".concat(o)})}},{key:"onURLStateChange",value:function(e){var t=this;this.unlisten=this.history.listen((function(n){"?".concat(t.lastPushSearchString)!==n.search&&(t.lastPushSearchString="",e(Vb(Sb.parse(n.search))))}))}},{key:"tearDown",value:function(){this.unlisten()}}]),e}(),Nb=function(){function e(){Hy(this,e),this.requestSequence=0,this.lastCompleted=0}return Py(e,[{key:"next",value:function(){return++this.requestSequence}},{key:"isOldRequest",value:function(e){return e3?r-3:0),i=3;i2&&void 0!==arguments[2]?arguments[2]:"all";this.debug&&(n=console).log.apply(n,["Search UI: Action","addFilter"].concat(Array.prototype.slice.call(arguments)));var o=this.state.filters,i=o.find((function(t){return t.field===e&&t.type===r}))||{},a=o.filter((function(t){return t.field!==e||t.type!==r}))||[],c=i.values||[],s=c.find((function(e){return Yy(e,t)}))?c:c.concat(t);this._updateSearchResults({current:1,filters:[].concat(Object(Iy.a)(a),[{field:e,values:s,type:r}])})}function Gb(e){var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];this.debug&&(t=console).log.apply(t,["Search UI: Action","trackAutocompleteClickThrough"].concat(Array.prototype.slice.call(arguments)));var r=this.state,o=r.autocompletedResultsRequestId,i=r.searchTerm,a=r.autocompletedResults,c=a.findIndex((function(t){return t._meta.id===e})),s=a[c];this.events.autocompleteResultClick({query:i,documentId:e,requestId:o,tags:n,result:s,resultIndex:c})}function Yb(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.debug&&(e=console).log.apply(e,["Search UI: Action","clearFilters"].concat(Array.prototype.slice.call(arguments)));var n=this.state.filters.filter((function(e){var n=e.field;return t.includes(n)}));this._updateSearchResults({current:1,filters:n})}function $b(e,t,n){var r;this.debug&&(r=console).log.apply(r,["Search UI: Action","removeFilter"].concat(Array.prototype.slice.call(arguments)));var o=this.state.filters,i=o;i=!t&&n?o.filter((function(t){return!(t.field===e&&t.type===n)})):t?Wy(o,e,t,n):o.filter((function(t){return t.field!==e})),this._updateSearchResults({current:1,filters:i})}function Zb(){var e;this.debug&&(e=console).log.apply(e,["Search UI: Action","reset"].concat(Array.prototype.slice.call(arguments))),this._setState(this.startingState),this.trackUrlState&&this.URLManager.pushStateToURL(this.state)}function Xb(e){var t;this.debug&&(t=console).log.apply(t,["Search UI: Action","setCurrent"].concat(Array.prototype.slice.call(arguments))),this._updateSearchResults({current:e})}function Kb(e,t){var n,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"all";this.debug&&(n=console).log.apply(n,["Search UI: Action","setFilter"].concat(Array.prototype.slice.call(arguments)));var o=this.state.filters;o=o.filter((function(t){return t.field!==e||t.type!==r})),this._updateSearchResults({current:1,filters:[].concat(Object(Iy.a)(o),[{field:e,values:[t],type:r}])})}function Qb(e){var t;this.debug&&(t=console).log.apply(t,["Search UI: Action","setResultsPerPage"].concat(Array.prototype.slice.call(arguments))),this._updateSearchResults({current:1,resultsPerPage:e})}function Jb(e){var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=n.autocompleteMinimumCharacters,o=void 0===r?0:r,i=n.autocompleteResults,a=void 0!==i&&i,c=n.autocompleteSuggestions,s=void 0!==c&&c,l=n.shouldClearFilters,u=void 0===l||l,f=n.refresh,d=void 0===f||f,h=n.debounce,p=void 0===h?0:h;this.debug&&(t=console).log.apply(t,["Search UI: Action","setSearchTerm"].concat(Array.prototype.slice.call(arguments))),this._setState({searchTerm:e}),d&&this.debounceManager.runWithDebounce(p,"_updateSearchResults",this._updateSearchResults,Object.assign({current:1},u&&{filters:[]})),(a||s)&&e.length>=o&&this.debounceManager.runWithDebounce(p,"_updateAutocomplete",this._updateAutocomplete,e,{autocompleteResults:a,autocompleteSuggestions:s})}function ew(e,t){var n;this.debug&&(n=console).log.apply(n,["Search UI: Action","setSort"].concat(Array.prototype.slice.call(arguments)));var r={current:1,sortList:null,sortField:null,sortDirection:null};Array.isArray(e)?r.sortList=e:(r.sortField=e,r.sortDirection=t),this._updateSearchResults(r)}function tw(e){var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];this.debug&&(t=console).log.apply(t,["Search UI: Action","trackClickThrough"].concat(Array.prototype.slice.call(arguments)));var r=this.state,o=r.requestId,i=r.searchTerm,a=r.results,c=r.current,s=r.resultsPerPage,l=a.findIndex((function(t){return t._meta.id===e})),u=a[l];this.events.resultClick({query:i,documentId:e,requestId:o,tags:n,result:u,page:c,resultsPerPage:s,resultIndexOnPage:l})}var nw="search-ui-screen-reader-notifications",rw="undefined"!==typeof document,ow=function(){if(!rw)return null;var e=document.getElementById(nw);return e||((e=document.createElement("div")).id=nw,e.setAttribute("role","status"),e.setAttribute("aria-live","polite"),e.style.position="absolute",e.style.width="1px",e.style.height="1px",e.style.margin="-1px",e.style.padding="0",e.style.border="0",e.style.overflow="hidden",e.style.clip="rect(0 0 0 0)",document.body.appendChild(e),e)},iw=function(e){var t=ow();t&&(t.textContent=e)},aw={searchResults:function(e){var t=e.start,n=e.end,r=e.totalResults,o=e.searchTerm,i="Showing ".concat(t," to ").concat(n," results out of ").concat(r);return o&&(i+=', searching for "'.concat(o,'".')),i}};function cw(e,t){if(this.hasA11yNotifications){var n=this.a11yNotificationMessages[e];if(n){var r=n(t);iw(r),this.debug&&console.log("Search UI: Action","a11yNotify",{messageFunc:e,messageArgs:t,message:r})}else{var o='Could not find corresponding message function in a11yNotificationMessages: "'.concat(e,'"');console.warn("Action","a11yNotify",o)}}}function sw(e,t,n){if(n){if(t){var r=t[e].bind(t);return function(){for(var e=arguments.length,t=new Array(e),o=0;o0&&void 0!==arguments[0]?arguments[0]:{},n=t.apiConnector,r=t.onSearch,o=t.onAutocomplete,i=t.onResultClick,a=t.onAutocompleteResultClick;Hy(this,e),this.search=sw("onSearch",n,r),this.autocomplete=sw("onAutocomplete",n,o),this.resultClick=sw("onResultClick",n,i),this.autocompleteResultClick=sw("onAutocompleteResultClick",n,a)},uw="Invalid credentials",fw=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"===typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];return Object.entries(e).reduce((function(e,r){var o=Object(Vy.a)(r,2),i=o[0],a=o[1];return t[i]&&"function"===typeof t[i]&&!t[i]({filters:n})?e:(e[i]=a,e)}),{})}var zw=function(){function e(t){var n,r=this,o=t.apiConnector,a=t.autocompleteQuery,c=void 0===a?{}:a,s=t.debug,l=t.initialState,u=t.onSearch,f=t.onAutocomplete,d=t.onResultClick,h=t.onAutocompleteResultClick,p=t.searchQuery,z=void 0===p?{}:p,v=t.trackUrlState,g=void 0===v||v,m=t.urlPushDebounceLength,y=void 0===m?500:m,b=t.hasA11yNotifications,w=void 0!==b&&b,k=t.a11yNotificationMessages,x=void 0===k?{}:k,j=t.alwaysSearchOnInitialLoad,M=void 0!==j&&j;Hy(this,e),this.state=hw,this._updateAutocomplete=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.autocompleteResults,o=t.autocompleteSuggestions,i=r.autocompleteRequestSequencer.next(),a=Object.assign(Object.assign({},n&&{results:r.autocompleteQuery.results||{}}),o&&{suggestions:r.autocompleteQuery.suggestions||{}});return r.events.autocomplete({searchTerm:e},a).then((function(e){r.autocompleteRequestSequencer.isOldRequest(i)||(r.autocompleteRequestSequencer.completed(i),r._setState(e))}))},this._updateSearchResults=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.skipPushToUrl,o=void 0!==n&&n,i=t.replaceUrl,a=void 0!==i&&i,c=Object.assign(Object.assign({},r.state),e),s=c.current,l=c.filters,u=c.resultsPerPage,f=c.searchTerm,d=c.sortDirection,h=c.sortField,p=c.sortList;r.debounceManager.cancelByName("_updateSearchResults"),r._setState({current:s,error:"",filters:l,resultsPerPage:u,searchTerm:f,sortDirection:d,sortField:h,sortList:p}),r._makeSearchRequest({skipPushToUrl:o,replaceUrl:a})},this._makeSearchRequest=Ub.debounce(0,(function(e){var t=e.skipPushToUrl,n=e.replaceUrl,o=r.state,i=o.current,a=o.filters,c=o.resultsPerPage,s=o.searchTerm,l=o.sortDirection,u=o.sortField,f=o.sortList;r._setState({isLoading:!0});var d=r.searchRequestSequencer.next(),h=r.searchQuery,p=h.conditionalFacets,z=fw(h,["conditionalFacets"]),v=Object.assign(Object.assign({},z),{facets:pw(r.searchQuery.facets,p,a)}),g=Object.assign(Object.assign({},dw(r.state)),{filters:$y(a,r.searchQuery.filters)});return r.events.search(g,v).then((function(e){if(!r.searchRequestSequencer.isOldRequest(d)){r.searchRequestSequencer.completed(d);var o=e.totalResults,h=0===o?0:(i-1)*c+1,p=o0||this.alwaysSearchOnInitialLoad)&&this._updateSearchResults(C,{replaceUrl:!0})}return Py(e,[{key:"_setState",value:function(e){var t=Object.assign(Object.assign({},this.state),e);this.debug&&console.log("Search UI: State Update",e,t),this.state=t,this.subscriptions.forEach((function(e){return e(t)}))}},{key:"setSearchQuery",value:function(e){this.searchQuery=e,this._updateSearchResults({})}},{key:"setAutocompleteQuery",value:function(e){this.autocompleteQuery=e}},{key:"subscribeToStateChanges",value:function(e){this.subscriptions.push(e)}},{key:"unsubscribeToStateChanges",value:function(e){this.subscriptions=this.subscriptions.filter((function(t){return t!==e}))}},{key:"tearDown",value:function(){this.subscriptions=[],this.URLManager&&this.URLManager.tearDown()}},{key:"getActions",value:function(){return this.actions}},{key:"getState",value:function(){return Object.assign({},this.state)}}]),e}(),vw=c.a.createContext(null),gw={moreFilters:function(e){var t=e.visibleOptionsCount,n=e.showingAll?"All ":"";return n+="".concat(t," options shown.")}},mw=function(e){var t=e.children,n=e.config,r=e.driver,o=Object(a.useState)(null),i=Object(Vy.a)(o,2),s=i[0],l=i[1];if(Object(a.useEffect)((function(){var e=r||new zw(Object.assign(Object.assign({},n),{a11yNotificationMessages:Object.assign(Object.assign({},gw),n.a11yNotificationMessages)}));return l(e),function(){e.tearDown()}}),[]),Object(a.useEffect)((function(){s&&s.setSearchQuery(n.searchQuery)}),[n.searchQuery]),Object(a.useEffect)((function(){s&&s.setAutocompleteQuery(n.autocompleteQuery)}),[n.autocompleteQuery]),!s)return null;var u={driver:s};return c.a.createElement(vw.Provider,{value:u},t)};function yw(e){return(yw="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"===typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function bw(e){return(bw="function"===typeof Symbol&&"symbol"===yw(Symbol.iterator)?function(e){return yw(e)}:function(e){return e&&"function"===typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":yw(e)})(e)}function ww(e,t){return!t||"object"!==bw(t)&&"function"!==typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function kw(e){return(kw=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function xw(e,t){return(xw=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var jw=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"===typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o0&&o[o.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]1&&e}));return e[n]=e[n]||[],e[n].push(t),e}),{})},Gw=function(){return(Gw=Object.assign||function(e){for(var t,n=1,r=arguments.length;n * {\n min-width: 160px;\n max-width: 100%;\n }\n"],["\n width: 100%;\n\n .tabs > * {\n min-width: 160px;\n max-width: 100%;\n }\n"]))),rk=["learn","community"],ok={learn:"learn.netdata",community:"discourse","github-cloud":"netdata-cloud","github-agent":"netdata"},ik={learn:"Documentation",community:"Community","github-cloud":"Github / Cloud","github-agent":"Github / Agent"},ak=function(e){var t=e.results;return c.a.createElement(Hd,{overflow:{vertical:"auto"},"data-testid":"searchResults",flex:!0,width:"1000px",height:"60vh"},c.a.createElement(nk,null,rk.map((function(e){var n=t[ok[e]],r=null===n||void 0===n?void 0:n.length;return c.a.createElement(Iv,{key:e,label:"".concat(ik[e]).concat(r?" (".concat(r,")"):"")},c.a.createElement(tk,null,r?n.map((function(e){var t=e.id,n=e.url,r=e.title,o=e.description;return c.a.createElement(ek,{key:t.raw,url:n.raw,title:r,description:o})})):c.a.createElement(Hd,{padding:[4]},c.a.createElement(xh,{strong:!0},"No results"))))}))))},ck=function(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e},sk=Object(s.d)(Hd).attrs({padding:[6],background:"dropdown",gap:6,column:!0,round:!0,overflow:{vertical:"auto"}}).withConfig({displayName:"documentation__Container",componentId:"sc-3qq6g2-0"})(Ow||(Ow=ck(["\n box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);\n"],["\n box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);\n"]))),lk=function(e){var t=e.children,n=e.onClose;return c.a.createElement(Hd,{width:"100%",alignItems:"center",justifyContent:"between",padding:[0,0,4],border:{side:"bottom",color:"disabled"}},c.a.createElement(Hd,{gap:2,alignItems:"center"},t),c.a.createElement(Vd,{icon:"x",neutral:!0,small:!0,onClick:n,flavour:"borderless","data-testid":"documentation-help-close"}))},uk="general",fk="dashboard",dk="search",hk={general:"Need help?",dashboard:"Need help?"},pk=function(e){var t=e.app,n=void 0===t?"cloud":t,r=e.onCloseClick,o=e.onVisitDocumentClick,i=e.onOpenIssueClick,s=e.onOpenBugClick,l=e.onContributeClick,u=e.onSupportClick,f=e.children,d=vy()(),h=d[0],p=d[1],z=Object(a.useState)(uk),v=z[0],g=z[1],m=v===uk,y=Object(a.useCallback)((function(){return g(fk)}),[]),b=Object(a.useCallback)((function(){return g(uk)}),[]),w=Object(a.useCallback)((function(){return g(dk)}),[]),k=Object(a.useCallback)((function(){p(),r&&r()}),[]);return c.a.createElement(a.Fragment,null,f(p,h),h&&c.a.createElement(iy,{position:"bottom-left",backdrop:!0,margin:[5,17],onClickOutside:p,onEsc:p},c.a.createElement(Zw,null,(function(e){var t=e.searchTerm,r=e.setSearchTerm,f=e.results,d=e.reset;return c.a.createElement(a.Fragment,null,c.a.createElement(sk,{width:{max:m?"325px":v===fk?"600px":"100%"},"data-testid":"documentation-layer"},c.a.createElement(lk,{onClose:k},m&&c.a.createElement(Df,{color:"text",name:"questionFilled",width:"18px",height:"18px"}),!m&&c.a.createElement(Vd,{icon:"arrow_left",neutral:!0,small:!0,onClick:function(){b(),d()},flavour:"borderless","data-testid":"dashboard-back"}),c.a.createElement(mh,{margin:[0]},hk[v]||hk.general)),v!==fk&&c.a.createElement(Xw,{defaultValue:t,setSearchTerm:r,setSearchView:w}),m&&c.a.createElement(Hd,{gap:6,overflow:{vertical:"auto"},column:!0,padding:[1]},c.a.createElement(ky,{app:n,onDashboardClick:y,onVisitDocumentClick:o,onOpenIssueClick:i,onOpenBugClick:s,onContributeClick:l,onSupportClick:u})),v===fk&&c.a.createElement(Ty,null),v===dk&&c.a.createElement(ak,{results:f})))}))))},zk=n(291),vk=n.n(zk),gk=function(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e},mk=Object(s.d)(Hd).attrs({overflow:{vertical:"auto"},padding:[0,4,0,0]}).withConfig({displayName:"container__Container",componentId:"sc-1v3y9uu-0"})(Ew||(Ew=gk(["\n ","\n"],["\n ","\n"])),jp),yk=function(e){var t=e.onClose;return c.a.createElement(Hd,{border:{side:"bottom",color:"selected"},justifyContent:"between",alignItems:"center",padding:[0,0,4,0]},c.a.createElement(Hd,{gap:2},c.a.createElement(Df,{color:"text",name:"insights"}),c.a.createElement(jh,{strong:!0},"Netdata News")),c.a.createElement(Vd,{flavour:"borderless",neutral:!0,icon:"x",title:"close news",onClick:t}))},bk=function(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e},wk=Object(s.d)(Hd).attrs({as:"img"}).withConfig({displayName:"image__Image",componentId:"sc-1l0yjz3-0"})(Tw||(Tw=bk(["\n object-fit: cover;\n"],["\n object-fit: cover;\n"]))),kk=function(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e},xk=Object(s.d)(Hd).attrs({as:"a"}).withConfig({displayName:"anchor__Anchor",componentId:"sc-5t4sos-0"})(Aw||(Aw=kk(["\n text-decoration: none;\n & :hover {\n text-decoration: none;\n }\n"],["\n text-decoration: none;\n & :hover {\n text-decoration: none;\n }\n"]))),jk=function(e){var t=e.item,n=t.last_publication_date,r=t.data,o=r.title,i=r.description,a=r.url,s=r.image,l=r.label,u=s&&s.url,f=new Date(n);return c.a.createElement(Hd,{column:!0,gap:2},c.a.createElement(Hd,{gap:4},u&&c.a.createElement(wk,{src:u,width:"160px"}),c.a.createElement(Hd,{column:!0,gap:2},c.a.createElement(xh,{strong:!0},o),c.a.createElement(xh,null,i))),c.a.createElement(Hd,{justifyContent:"between",alignItems:"center"},c.a.createElement(kh,null,f.toLocaleDateString()),c.a.createElement(xk,{href:a,target:"_blank",rel:"noopener noreferrer",gap:1,alignItems:"center"},c.a.createElement(xh,{color:"success",strong:!0},l),c.a.createElement(Df,{color:"success",rotate:2,name:"arrow_left"}))))},Mk=n(290),Ck=function(e,t){return(Ck=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)};function _k(e,t){function n(){this.constructor=e}Ck(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var qk=function(){return(qk=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0?this.running[0]:null},e.prototype.refFromCookie=function(e){if(!e||""===e.trim())return null;var t=e.trim().split(" ");if(t.length<2)return null;var n=t[0],r=parseInt(t[1],10),o=this.running.filter((function(e){return e.googleId()===n&&e.variations.length>r}))[0];return o?o.variations[r].ref():null},e}(),Tk=function(){function e(e,t){for(var n in this.httpClient=t,this.form=e,this.data={},e.fields)e.fields[n].default&&(this.data[n]=[e.fields[n].default])}return e.prototype.set=function(e,t){var n=this.form.fields[e];if(!n)throw new Error("Unknown field "+e);var r=""===t||void 0===t?null:t,o=this.data[e]||[];o=n.multiple?r?o.concat([r]):o:r?[r]:o,this.data[e]=o},e.prototype.url=function(){var e=this.form.action;if(this.data){var t=e.indexOf("?")>-1?"&":"?";for(var n in this.data)if(Object.prototype.hasOwnProperty.call(this.data,n)){var r=this.data[n];if(r)for(var o=0;o0&&(this.url+=function(e){return e.indexOf("?")>-1?"&":"?"}(e)+n.join("&")),this.apiDataTTL=this.options.apiDataTTL||5,this.httpClient=new wx(this.options.requestHandler,this.options.apiCache,this.options.proxyAgent,this.options.timeoutInMs)}return e.prototype.get=function(e){var t=this;return this.httpClient.cachedRequest(this.url,{ttl:this.apiDataTTL}).then((function(n){var r=new gx(n,t.httpClient,t.options);return e&&e(null,r),r})).catch((function(t){throw e&&e(t),t}))},e}(),xx=function(){function e(e,t){this.id=e,this.api=t,this.fields={}}return e.prototype.set=function(e,t){return this.fields[e]=t,this},e.prototype.ref=function(e){return this.set("ref",e)},e.prototype.query=function(e){return this.set("q",e)},e.prototype.pageSize=function(e){return this.set("pageSize",e)},e.prototype.graphQuery=function(e){return this.set("graphQuery",e)},e.prototype.lang=function(e){return this.set("lang",e)},e.prototype.page=function(e){return this.set("page",e)},e.prototype.after=function(e){return this.set("after",e)},e.prototype.orderings=function(e){return this.set("orderings",e)},e.prototype.url=function(){var t=this;return this.api.get().then((function(n){return e.toSearchForm(t,n).url()}))},e.prototype.submit=function(t){var n=this;return this.api.get().then((function(r){return e.toSearchForm(n,r).submit(t)}))},e.toSearchForm=function(e,t){var n=t.searchForm(e.id);if(n)return Object.keys(e.fields).reduce((function(t,n){var r=e.fields[n];return"q"===n?t.query(r):"pageSize"===n?t.pageSize(r):"graphQuery"===n?t.graphQuery(r):"lang"===n?t.lang(r):"page"===n?t.page(r):"after"===n?t.after(r):"orderings"===n?t.orderings(r):t.set(n,r)}),n);throw new Error("Unable to access to form "+e.id)},e}(),jx=function(){function e(e,t){this.api=new kx(e,t)}return e.prototype.getApi=function(){return this.api.get()},e.prototype.everything=function(){return this.form("everything")},e.prototype.form=function(e){return new xx(e,this.api)},e.prototype.query=function(e,t,n){return this.getApi().then((function(r){return r.query(e,t,n)}))},e.prototype.queryFirst=function(e,t,n){return this.getApi().then((function(r){return r.queryFirst(e,t,n)}))},e.prototype.getByID=function(e,t,n){return this.getApi().then((function(r){return r.getByID(e,t,n)}))},e.prototype.getByIDs=function(e,t,n){return this.getApi().then((function(r){return r.getByIDs(e,t,n)}))},e.prototype.getByUID=function(e,t,n,r){return this.getApi().then((function(o){return o.getByUID(e,t,n,r)}))},e.prototype.getSingle=function(e,t,n){return this.getApi().then((function(r){return r.getSingle(e,t,n)}))},e.prototype.getBookmark=function(e,t,n){return this.getApi().then((function(r){return r.getBookmark(e,t,n)}))},e.prototype.getTags=function(){return this.getApi().then((function(e){return e.getTags()}))},e.prototype.getPreviewResolver=function(e,t){var n=this;return vx(e,t,(function(e,t){return n.getApi().then((function(n){return n.getByID(e,t)}))}))},e.getApi=function(e,t){return new kx(e,t).get()},e}();function Mx(e,t){return jx.getApi(e,t)}var Cx={experimentCookie:"io.prismic.experiment",previewCookie:"io.prismic.preview",Predicates:hx,predicates:hx,Experiments:Ek,Api:kx,client:function(e,t){return new jx(e,t)},getApi:Mx,api:function(e,t){return Mx(e,t)}},_x=Cx.client("https://netdata-news.cdn.prismic.io/api/v2"),qx=[],Sx=function(e){var t=e.app,n=void 0===t?"cloud":t,r=e.onCloseClick,o=e.children,i=vk()("news_last_seen"),s=i[0],l=i[1],u=Object(a.useState)(qx),f=u[0],d=u[1],h=Object(a.useState)(),p=h[0],z=h[1],v=vy()(),g=v[0],m=v[1];Object(a.useEffect)((function(){!function(e,t,n){_x.query(Cx.Predicates.at("document.tags",[e]),{pageSize:100,orderings:"[document.last_publication_date desc]"}).then(t).catch(n)}(n,(function(e){var t=e.results;return d(t)}),(function(){return z(!0)}))}),[]);var y=Object(a.useMemo)((function(){if(!f.length)return!0;var e=f[0].last_publication_date;return new Date(s)>=new Date(e)}),[s,f]),b=Object(a.useCallback)((function(){m(),l(new Date),r&&r()}),[r]);return c.a.createElement(a.Fragment,null,o({toggle:m,isOpen:g,upToDate:y}),g&&c.a.createElement(iy,{backdrop:!0,onClickOutside:b,onEsc:b},c.a.createElement(Hd,{background:"dropdown",round:!0,padding:[6],width:"640px",height:{max:"640px"},gap:4,column:!0},c.a.createElement(yk,{onClose:b}),c.a.createElement(mk,{column:!0,gap:6},p&&c.a.createElement(kh,{textAlign:"center"},"Something went wrong \ud83d\ude14"),!p&&!f.length&&c.a.createElement(kh,{textAlign:"center"},"There are no latest news"),!p&&f.length>0&&f.map((function(e){return c.a.createElement(jk,{key:e.id,item:e})}))))))},Ox=function(){return(Ox=Object.assign||function(e){for(var t,n=1,r=arguments.length;n=0||(o[n]=e[n]);return o}var Qx=n(223),Jx=n.n(Qx),ej=n(292),tj=["getDisplayName","methodName","renderCountProp","shouldHandleStateChanges","storeKey","withRef","forwardRef","context"],nj=["reactReduxForwardedRef"],rj=[],oj=[null,null];function ij(e,t){var n=e[1];return[t.payload,n+1]}function aj(e,t,n){Zx((function(){return e.apply(void 0,t)}),n)}function cj(e,t,n,r,o,i,a){e.current=r,t.current=o,n.current=!1,i.current&&(i.current=null,a())}function sj(e,t,n,r,o,i,a,c,s,l){if(e){var u=!1,f=null,d=function(){if(!u){var e,n,d=t.getState();try{e=r(d,o.current)}catch(h){n=h,f=h}n||(f=null),e===i.current?a.current||s():(i.current=e,c.current=e,a.current=!0,l({type:"STORE_UPDATED",payload:{error:n}}))}};n.onStateChange=d,n.trySubscribe(),d();return function(){if(u=!0,n.tryUnsubscribe(),n.onStateChange=null,f)throw f}}}var lj=function(){return[null,0]};function uj(e,t){void 0===t&&(t={});var n=t,r=n.getDisplayName,o=void 0===r?function(e){return"ConnectAdvanced("+e+")"}:r,i=n.methodName,s=void 0===i?"connectAdvanced":i,l=n.renderCountProp,u=void 0===l?void 0:l,f=n.shouldHandleStateChanges,d=void 0===f||f,h=n.storeKey,p=void 0===h?"store":h,z=(n.withRef,n.forwardRef),v=void 0!==z&&z,g=n.context,m=void 0===g?Ux:g,y=Kx(n,tj),b=m;return function(t){var n=t.displayName||t.name||"Component",r=o(n),i=Fx({},y,{getDisplayName:o,methodName:s,renderCountProp:u,shouldHandleStateChanges:d,storeKey:p,displayName:r,wrappedComponentName:n,WrappedComponent:t}),l=y.pure;var f=l?a.useMemo:function(e){return e()};function h(n){var r=Object(a.useMemo)((function(){var e=n.reactReduxForwardedRef,t=Kx(n,nj);return[n.context,e,t]}),[n]),o=r[0],s=r[1],l=r[2],u=Object(a.useMemo)((function(){return o&&o.Consumer&&Object(ej.isContextConsumer)(c.a.createElement(o.Consumer,null))?o:b}),[o,b]),h=Object(a.useContext)(u),p=Boolean(n.store)&&Boolean(n.store.getState)&&Boolean(n.store.dispatch);Boolean(h)&&Boolean(h.store);var z=p?n.store:h.store,v=Object(a.useMemo)((function(){return function(t){return e(t.dispatch,i)}(z)}),[z]),g=Object(a.useMemo)((function(){if(!d)return oj;var e=$x(z,p?null:h.subscription),t=e.notifyNestedSubs.bind(e);return[e,t]}),[z,p,h]),m=g[0],y=g[1],w=Object(a.useMemo)((function(){return p?h:Fx({},h,{subscription:m})}),[p,h,m]),k=Object(a.useReducer)(ij,rj,lj),x=k[0][0],j=k[1];if(x&&x.error)throw x.error;var M=Object(a.useRef)(),C=Object(a.useRef)(l),_=Object(a.useRef)(),q=Object(a.useRef)(!1),S=f((function(){return _.current&&l===C.current?_.current:v(z.getState(),l)}),[z,x,l]);aj(cj,[C,M,q,l,S,_,y]),aj(sj,[d,z,m,v,C,M,q,_,y,j],[z,m,v]);var O=Object(a.useMemo)((function(){return c.a.createElement(t,Fx({},S,{ref:s}))}),[s,t,S]);return Object(a.useMemo)((function(){return d?c.a.createElement(u.Provider,{value:w},O):O}),[u,O,w])}var z=l?c.a.memo(h):h;if(z.WrappedComponent=t,z.displayName=h.displayName=r,v){var g=c.a.forwardRef((function(e,t){return c.a.createElement(z,Fx({},e,{reactReduxForwardedRef:t}))}));return g.displayName=r,g.WrappedComponent=t,Jx()(g,t)}return Jx()(z,t)}}function fj(e,t){return e===t?0!==e||0!==t||1/e===1/t:e!==e&&t!==t}function dj(e,t){if(fj(e,t))return!0;if("object"!==typeof e||null===e||"object"!==typeof t||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(var o=0;o=0;r--){var o=t[r](e);if(o)return o}return function(t,r){throw new Error("Invalid value of type "+typeof e+" for "+n+" argument when connecting component "+r.wrappedComponentName+".")}}function Cj(e,t){return e===t}function _j(e){var t=void 0===e?{}:e,n=t.connectHOC,r=void 0===n?uj:n,o=t.mapStateToPropsFactories,i=void 0===o?gj:o,a=t.mapDispatchToPropsFactories,c=void 0===a?vj:a,s=t.mergePropsFactories,l=void 0===s?yj:s,u=t.selectorFactory,f=void 0===u?xj:u;return function(e,t,n,o){void 0===o&&(o={});var a=o,s=a.pure,u=void 0===s||s,d=a.areStatesEqual,h=void 0===d?Cj:d,p=a.areOwnPropsEqual,z=void 0===p?dj:p,v=a.areStatePropsEqual,g=void 0===v?dj:v,m=a.areMergedPropsEqual,y=void 0===m?dj:m,b=Kx(a,jj),w=Mj(e,i,"mapStateToProps"),k=Mj(t,c,"mapDispatchToProps"),x=Mj(n,l,"mergeProps");return r(f,Fx({methodName:"connect",getDisplayName:function(e){return"Connect("+e+")"},shouldHandleStateChanges:Boolean(e),initMapStateToProps:w,initMapDispatchToProps:k,initMergeProps:x,pure:u,areStatesEqual:h,areOwnPropsEqual:z,areStatePropsEqual:g,areMergedPropsEqual:y},b))}}var qj=_j();var Sj;function Oj(e,t){var n=Object(a.useState)((function(){return{inputs:t,result:e()}}))[0],r=Object(a.useRef)(!0),o=Object(a.useRef)(n),i=r.current||Boolean(t&&o.current.inputs&&function(e,t){if(e.length!==t.length)return!1;for(var n=0;n");return t.callbacks},t.setCallbacks=function(e){t.callbacks=e},t}Nx(t,e);var n=t.prototype;return n.componentDidMount=function(){this.unbind=Jj(window,[{eventName:"error",fn:this.onWindowError}])},n.componentDidCatch=function(e){if(!(e instanceof nM))throw e;this.setState({})},n.componentWillUnmount=function(){this.unbind()},n.render=function(){return this.props.children(this.setCallbacks)},t}(c.a.Component),iM=function(e){return e+1},aM=function(e,t){var n=e.droppableId===t.droppableId,r=iM(e.index),o=iM(t.index);return n?"\n You have moved the item from position "+r+"\n to position "+o+"\n ":"\n You have moved the item from position "+r+"\n in list "+e.droppableId+"\n to list "+t.droppableId+"\n in position "+o+"\n "},cM=function(e,t,n){return t.droppableId===n.droppableId?"\n The item "+e+"\n has been combined with "+n.draggableId:"\n The item "+e+"\n in list "+t.droppableId+"\n has been combined with "+n.draggableId+"\n in list "+n.droppableId+"\n "},sM=function(e){return"\n The item has returned to its starting position\n of "+iM(e.index)+"\n"},lM={dragHandleUsageInstructions:"\n Press space bar to start a drag.\n When dragging you can use the arrow keys to move the item around and escape to cancel.\n Some screen readers may require you to be in focus mode or to use your pass through key\n",onDragStart:function(e){return"\n You have lifted an item in position "+iM(e.source.index)+"\n"},onDragUpdate:function(e){var t=e.destination;if(t)return aM(e.source,t);var n=e.combine;return n?cM(e.draggableId,e.source,n):"You are over an area that cannot be dropped on"},onDragEnd:function(e){if("CANCEL"===e.reason)return"\n Movement cancelled.\n "+sM(e.source)+"\n ";var t=e.destination,n=e.combine;return t?"\n You have dropped the item.\n "+aM(e.source,t)+"\n ":n?"\n You have dropped the item.\n "+cM(e.draggableId,e.source,n)+"\n ":"\n The item has been dropped while not over a drop area.\n "+sM(e.source)+"\n "}},uM={x:0,y:0},fM=function(e,t){return{x:e.x+t.x,y:e.y+t.y}},dM=function(e,t){return{x:e.x-t.x,y:e.y-t.y}},hM=function(e,t){return e.x===t.x&&e.y===t.y},pM=function(e){return{x:0!==e.x?-e.x:0,y:0!==e.y?-e.y:0}},zM=function(e,t,n){var r;return void 0===n&&(n=0),(r={})[e]=t,r["x"===e?"y":"x"]=n,r},vM=function(e,t){return Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2))},gM=function(e,t){return Math.min.apply(Math,t.map((function(t){return vM(e,t)})))},mM=function(e){return function(t){return{x:e(t.x),y:e(t.y)}}},yM=function(e,t){return{top:e.top+t.y,left:e.left+t.x,bottom:e.bottom+t.y,right:e.right+t.x}},bM=function(e){return[{x:e.left,y:e.top},{x:e.right,y:e.top},{x:e.left,y:e.bottom},{x:e.right,y:e.bottom}]},wM=function(e,t){return t&&t.shouldClipSubject?function(e,t){var n=Aj({top:Math.max(t.top,e.top),right:Math.min(t.right,e.right),bottom:Math.min(t.bottom,e.bottom),left:Math.max(t.left,e.left)});return n.width<=0||n.height<=0?null:n}(t.pageMarginBox,e):Aj(e)},kM=function(e){var t=e.page,n=e.withPlaceholder,r=e.axis,o=e.frame,i=function(e,t,n){var r;return n&&n.increasedBy?Fx({},e,((r={})[t.end]=e[t.end]+n.increasedBy[t.line],r)):e}(function(e,t){return t?yM(e,t.scroll.diff.displacement):e}(t.marginBox,o),r,n);return{page:t,withPlaceholder:n,active:wM(i,o)}},xM=function(e,t){e.frame||rM(!1);var n=e.frame,r=dM(t,n.scroll.initial),o=pM(r),i=Fx({},n,{scroll:{initial:n.scroll.initial,current:t,diff:{value:r,displacement:o},max:n.scroll.max}});return Fx({},e,{frame:i,subject:kM({page:e.subject.page,withPlaceholder:e.subject.withPlaceholder,axis:e.axis,frame:i})})};function jM(e){return Object.values?Object.values(e):Object.keys(e).map((function(t){return e[t]}))}function MM(e,t){if(e.findIndex)return e.findIndex(t);for(var n=0;ne.bottom,c=r.lefte.right;return!(!a||!c)||(a&&i||c&&o)}},FM=function(e){var t=IM(e.top,e.bottom),n=IM(e.left,e.right);return function(e){return t(e.top)&&t(e.bottom)&&n(e.left)&&n(e.right)}},BM={direction:"vertical",line:"y",crossAxisLine:"x",start:"top",end:"bottom",size:"height",crossAxisStart:"left",crossAxisEnd:"right",crossAxisSize:"width"},UM={direction:"horizontal",line:"x",crossAxisLine:"y",start:"left",end:"right",size:"width",crossAxisStart:"top",crossAxisEnd:"bottom",crossAxisSize:"height"},WM=function(e){var t=e.target,n=e.destination,r=e.viewport,o=e.withDroppableDisplacement,i=e.isVisibleThroughFrameFn,a=o?function(e,t){var n=t.frame?t.frame.scroll.diff.displacement:uM;return yM(e,n)}(t,n):t;return function(e,t,n){return!!t.subject.active&&n(t.subject.active)(e)}(a,n,i)&&function(e,t,n){return n(t)(e)}(a,r,i)},GM=function(e){return WM(Fx({},e,{isVisibleThroughFrameFn:NM}))},YM=function(e){return WM(Fx({},e,{isVisibleThroughFrameFn:FM}))},$M=function(e,t,n){if("boolean"===typeof n)return n;if(!t)return!0;var r=t.invisible,o=t.visible;if(r[e])return!1;var i=o[e];return!i||i.shouldAnimate};function ZM(e){var t=e.afterDragging,n=e.destination,r=e.displacedBy,o=e.viewport,i=e.forceShouldAnimate,a=e.last;return t.reduce((function(e,t){var c=function(e,t){var n=e.page.marginBox,r={top:t.point.y,right:0,bottom:0,left:t.point.x};return Aj(Lj(n,r))}(t,r),s=t.descriptor.id;if(e.all.push(s),!GM({target:c,destination:n,viewport:o,withDroppableDisplacement:!0}))return e.invisible[t.descriptor.id]=!0,e;var l={draggableId:s,shouldAnimate:$M(s,a,i)};return e.visible[s]=l,e}),{all:[],visible:{},invisible:{}})}function XM(e){var t=e.insideDestination,n=e.inHomeList,r=e.displacedBy,o=e.destination,i=function(e,t){if(!e.length)return 0;var n=e[e.length-1].descriptor.index;return t.inHomeList?n:n+1}(t,{inHomeList:n});return{displaced:VM,displacedBy:r,at:{type:"REORDER",destination:{droppableId:o.descriptor.id,index:i}}}}function KM(e){var t=e.draggable,n=e.insideDestination,r=e.destination,o=e.viewport,i=e.displacedBy,a=e.last,c=e.index,s=e.forceShouldAnimate,l=DM(t,r);if(null==c)return XM({insideDestination:n,inHomeList:l,displacedBy:i,destination:r});var u=CM(n,(function(e){return e.descriptor.index===c}));if(!u)return XM({insideDestination:n,inHomeList:l,displacedBy:i,destination:r});var f=HM(t,n),d=n.indexOf(u);return{displaced:ZM({afterDragging:f.slice(d),destination:r,displacedBy:i,last:a,viewport:o.frame,forceShouldAnimate:s}),displacedBy:i,at:{type:"REORDER",destination:{droppableId:r.descriptor.id,index:c}}}}function QM(e,t){return Boolean(t.effected[e])}var JM=function(e){var t=e.isMovingForward,n=e.isInHomeList,r=e.draggable,o=e.draggables,i=e.destination,a=e.insideDestination,c=e.previousImpact,s=e.viewport,l=e.afterCritical,u=c.at;if(u||rM(!1),"REORDER"===u.type){var f=function(e){var t=e.isMovingForward,n=e.isInHomeList,r=e.insideDestination,o=e.location;if(!r.length)return null;var i=o.index,a=t?i+1:i-1,c=r[0].descriptor.index,s=r[r.length-1].descriptor.index;return a(n?s:s+1)?null:a}({isMovingForward:t,isInHomeList:n,location:u.destination,insideDestination:a});return null==f?null:KM({draggable:r,insideDestination:a,destination:i,viewport:s,last:c.displaced,displacedBy:c.displacedBy,index:f})}var d=function(e){var t=e.isMovingForward,n=e.destination,r=e.draggables,o=e.combine,i=e.afterCritical;if(!n.isCombineEnabled)return null;var a=o.draggableId,c=r[a].descriptor.index;return QM(a,i)?t?c:c-1:t?c+1:c}({isMovingForward:t,destination:i,displaced:c.displaced,draggables:o,combine:u.combine,afterCritical:l});return null==d?null:KM({draggable:r,insideDestination:a,destination:i,viewport:s,last:c.displaced,displacedBy:c.displacedBy,index:d})},eC=function(e){var t=e.afterCritical,n=e.impact,r=e.draggables,o=LM(n);o||rM(!1);var i=o.draggableId,a=r[i].page.borderBox.center,c=function(e){var t=e.displaced,n=e.afterCritical,r=e.combineWith,o=e.displacedBy,i=Boolean(t.visible[r]||t.invisible[r]);return QM(r,n)?i?uM:pM(o.point):i?o.point:uM}({displaced:n.displaced,afterCritical:t,combineWith:i,displacedBy:n.displacedBy});return fM(a,c)},tC=function(e,t){return t.margin[e.start]+t.borderBox[e.size]/2},nC=function(e,t,n){return t[e.crossAxisStart]+n.margin[e.crossAxisStart]+n.borderBox[e.crossAxisSize]/2},rC=function(e){var t=e.axis,n=e.moveRelativeTo,r=e.isMoving;return zM(t.line,n.marginBox[t.end]+tC(t,r),nC(t,n.marginBox,r))},oC=function(e){var t=e.axis,n=e.moveRelativeTo,r=e.isMoving;return zM(t.line,n.marginBox[t.start]-function(e,t){return t.margin[e.end]+t.borderBox[e.size]/2}(t,r),nC(t,n.marginBox,r))},iC=function(e){var t=e.impact,n=e.draggable,r=e.draggables,o=e.droppable,i=e.afterCritical,a=TM(o.descriptor.id,r),c=n.page,s=o.axis;if(!a.length)return function(e){var t=e.axis,n=e.moveInto,r=e.isMoving;return zM(t.line,n.contentBox[t.start]+tC(t,r),nC(t,n.contentBox,r))}({axis:s,moveInto:o.page,isMoving:c});var l=t.displaced,u=t.displacedBy,f=l.all[0];if(f){var d=r[f];if(QM(f,i))return oC({axis:s,moveRelativeTo:d.page,isMoving:c});var h=Rj(d.page,u.point);return oC({axis:s,moveRelativeTo:h,isMoving:c})}var p=a[a.length-1];if(p.descriptor.id===n.descriptor.id)return c.borderBox.center;if(QM(p.descriptor.id,i)){var z=Rj(p.page,pM(i.displacedBy.point));return rC({axis:s,moveRelativeTo:z,isMoving:c})}return rC({axis:s,moveRelativeTo:p.page,isMoving:c})},aC=function(e,t){var n=e.frame;return n?fM(t,n.scroll.diff.displacement):t},cC=function(e){var t=function(e){var t=e.impact,n=e.draggable,r=e.droppable,o=e.draggables,i=e.afterCritical,a=n.page.borderBox.center,c=t.at;return r&&c?"REORDER"===c.type?iC({impact:t,draggable:n,draggables:o,droppable:r,afterCritical:i}):eC({impact:t,draggables:o,afterCritical:i}):a}(e),n=e.droppable;return n?aC(n,t):t},sC=function(e,t){var n=dM(t,e.scroll.initial),r=pM(n);return{frame:Aj({top:t.y,bottom:t.y+e.frame.height,left:t.x,right:t.x+e.frame.width}),scroll:{initial:e.scroll.initial,max:e.scroll.max,current:t,diff:{value:n,displacement:r}}}};function lC(e,t){return e.map((function(e){return t[e]}))}var uC=function(e){var t=e.pageBorderBoxCenter,n=e.draggable,r=function(e,t){return fM(e.scroll.diff.displacement,t)}(e.viewport,t),o=dM(r,n.page.borderBox.center);return fM(n.client.borderBox.center,o)},fC=function(e){var t=e.draggable,n=e.destination,r=e.newPageBorderBoxCenter,o=e.viewport,i=e.withDroppableDisplacement,a=e.onlyOnMainAxis,c=void 0!==a&&a,s=dM(r,t.page.borderBox.center),l={target:yM(t.page.borderBox,s),destination:n,withDroppableDisplacement:i,viewport:o};return c?function(e){return WM(Fx({},e,{isVisibleThroughFrameFn:(t=e.destination.axis,function(e){var n=IM(e.top,e.bottom),r=IM(e.left,e.right);return function(e){return t===BM?n(e.top)&&n(e.bottom):r(e.left)&&r(e.right)}})}));var t}(l):YM(l)},dC=function(e){var t=e.isMovingForward,n=e.draggable,r=e.destination,o=e.draggables,i=e.previousImpact,a=e.viewport,c=e.previousPageBorderBoxCenter,s=e.previousClientSelection,l=e.afterCritical;if(!r.isEnabled)return null;var u=TM(r.descriptor.id,o),f=DM(n,r),d=function(e){var t=e.isMovingForward,n=e.draggable,r=e.destination,o=e.insideDestination,i=e.previousImpact;if(!r.isCombineEnabled)return null;if(!AM(i))return null;function a(e){var t={type:"COMBINE",combine:{draggableId:e,droppableId:r.descriptor.id}};return Fx({},i,{at:t})}var c=i.displaced.all,s=c.length?c[0]:null;if(t)return s?a(s):null;var l=HM(n,o);if(!s)return l.length?a(l[l.length-1].descriptor.id):null;var u=MM(l,(function(e){return e.descriptor.id===s}));-1===u&&rM(!1);var f=u-1;return f<0?null:a(l[f].descriptor.id)}({isMovingForward:t,draggable:n,destination:r,insideDestination:u,previousImpact:i})||JM({isMovingForward:t,isInHomeList:f,draggable:n,draggables:o,destination:r,insideDestination:u,previousImpact:i,viewport:a,afterCritical:l});if(!d)return null;var h=cC({impact:d,draggable:n,droppable:r,draggables:o,afterCritical:l});if(fC({draggable:n,destination:r,newPageBorderBoxCenter:h,viewport:a.frame,withDroppableDisplacement:!1,onlyOnMainAxis:!0}))return{clientSelection:uC({pageBorderBoxCenter:h,draggable:n,viewport:a}),impact:d,scrollJumpRequest:null};var p=dM(h,c);return{clientSelection:s,impact:function(e){var t=e.impact,n=e.viewport,r=e.destination,o=e.draggables,i=e.maxScrollChange,a=sC(n,fM(n.scroll.current,i)),c=r.frame?xM(r,fM(r.frame.scroll.current,i)):r,s=t.displaced,l=ZM({afterDragging:lC(s.all,o),destination:r,displacedBy:t.displacedBy,viewport:a.frame,last:s,forceShouldAnimate:!1}),u=ZM({afterDragging:lC(s.all,o),destination:c,displacedBy:t.displacedBy,viewport:n.frame,last:s,forceShouldAnimate:!1}),f={},d={},h=[s,l,u];return s.all.forEach((function(e){var t=function(e,t){for(var n=0;n1?u.sort((function(e,t){return hC(e)[c.start]-hC(t)[c.start]}))[0]:l.sort((function(e,t){var r=gM(n,bM(hC(e))),o=gM(n,bM(hC(t)));return r!==o?r-o:hC(e)[c.start]-hC(t)[c.start]}))[0]}({isMovingForward:t,pageBorderBoxCenter:n,source:o,droppables:a,viewport:c});if(!l)return null;var u=TM(l.descriptor.id,i),f=function(e){var t=e.previousPageBorderBoxCenter,n=e.moveRelativeTo,r=e.insideDestination,o=e.draggable,i=e.draggables,a=e.destination,c=e.viewport,s=e.afterCritical;if(!n){if(r.length)return null;var l={displaced:VM,displacedBy:PM,at:{type:"REORDER",destination:{droppableId:a.descriptor.id,index:0}}},u=cC({impact:l,draggable:o,droppable:a,draggables:i,afterCritical:s}),f=DM(o,a)?a:mC(a,o,i);return fC({draggable:o,destination:f,newPageBorderBoxCenter:u,viewport:c.frame,withDroppableDisplacement:!1,onlyOnMainAxis:!0})?l:null}var d=Boolean(t[a.axis.line]<=n.page.borderBox.center[a.axis.line]),h=function(){var e=n.descriptor.index;return n.descriptor.id===o.descriptor.id?e:d?e:e+1}(),p=vC(a.axis,o.displaceBy);return KM({draggable:o,insideDestination:r,destination:a,viewport:c,displacedBy:p,last:VM,index:h})}({previousPageBorderBoxCenter:n,destination:l,draggable:r,draggables:i,moveRelativeTo:function(e){var t=e.pageBorderBoxCenter,n=e.viewport,r=e.destination,o=e.insideDestination,i=e.afterCritical;return o.filter((function(e){return YM({target:zC(e,i),destination:r,viewport:n.frame,withDroppableDisplacement:!0})})).sort((function(e,n){var o=vM(t,aC(r,pC(e,i))),a=vM(t,aC(r,pC(n,i)));return or.left&&n.topr.top))return!1;if(xC(o)(t.center))return!0;var i=e.axis,a=o.center[i.crossAxisLine],c=t[i.crossAxisStart],s=t[i.crossAxisEnd],l=IM(o[i.crossAxisStart],o[i.crossAxisEnd]),u=l(c),f=l(s);return!u&&!f||(u?ca)}));return o.length?1===o.length?o[0].descriptor.id:function(e){var t=e.pageBorderBox,n=e.draggable,r=e.candidates,o=n.page.borderBox.center,i=r.map((function(e){var n=e.axis,r=zM(e.axis.line,t.center[n.line],e.page.borderBox.center[n.crossAxisLine]);return{id:e.descriptor.id,distance:vM(o,r)}})).sort((function(e,t){return t.distance-e.distance}));return i[0]?i[0].id:null}({pageBorderBox:t,draggable:n,candidates:o}):null}var MC=function(e,t){return Aj(yM(e,t))};function CC(e){var t=e.displaced,n=e.id;return Boolean(t.visible[n]||t.invisible[n])}var _C=function(e){var t=e.pageOffset,n=e.draggable,r=e.draggables,o=e.droppables,i=e.previousImpact,a=e.viewport,c=e.afterCritical,s=MC(n.page.borderBox,t),l=jC({pageBorderBox:s,draggable:n,droppables:o});if(!l)return RM;var u=o[l],f=TM(u.descriptor.id,r),d=function(e,t){var n=e.frame;return n?MC(t,n.scroll.diff.value):t}(u,s);return function(e){var t=e.draggable,n=e.pageBorderBoxWithDroppableScroll,r=e.previousImpact,o=e.destination,i=e.insideDestination,a=e.afterCritical;if(!o.isCombineEnabled)return null;var c=o.axis,s=vC(o.axis,t.displaceBy),l=s.value,u=n[c.start],f=n[c.end],d=CM(HM(t,i),(function(e){var t=e.descriptor.id,n=e.page.borderBox,o=n[c.size]/4,i=QM(t,a),s=CC({displaced:r.displaced,id:t});return i?s?f>n[c.start]+o&&fn[c.start]-l+o&&un[c.start]+l+o&&fn[c.start]+o&&ut.descriptor.index?n.descriptor.index-1:n.descriptor.index:null}({draggable:n,closest:CM(HM(n,o),(function(e){var t=e.descriptor.id,n=e.page.borderBox.center[s.line],r=QM(t,c),o=CC({displaced:i,id:t});return r?o?d<=n:f=1500)return h_;var i=d_+p_*(o/1500);return Number(("CANCEL"===r?.6*i:i).toFixed(2))}({current:o.current.client.offset,destination:v,reason:i});n(function(e){return{type:"DROP_ANIMATE",payload:e}}({newHomeClientOffset:v,dropDuration:m,completed:g}))}else n(t_({completed:g}))}}else n(function(e){return{type:"DROP_PENDING",payload:e}}({reason:i}))}else e(r)}}},v_=function(){return{x:window.pageXOffset,y:window.pageYOffset}};function g_(e){var t=e.onWindowScroll;var n,r=Bj((function(){t(v_())})),o=(n=r,{eventName:"scroll",options:{passive:!0,capture:!1},fn:function(e){e.target!==window&&e.target!==window.document||n()}}),i=Qj;function a(){return i!==Qj}return{start:function(){a()&&rM(!1),i=Jj(window,[o])},stop:function(){a()||rM(!1),r.cancel(),i(),i=Qj},isActive:a}}var m_=function(e){var t=g_({onWindowScroll:function(t){e.dispatch({type:"MOVE_BY_WINDOW_SCROLL",payload:{newScroll:t}})}});return function(e){return function(n){t.isActive()||"INITIAL_PUBLISH"!==n.type||t.start(),t.isActive()&&function(e){return"DROP_COMPLETE"===e.type||"DROP_ANIMATE"===e.type||"FLUSH"===e.type}(n)&&t.stop(),e(n)}}},y_=function(){var e=[];return{add:function(t){var n=setTimeout((function(){return function(t){var n=MM(e,(function(e){return e.timerId===t}));-1===n&&rM(!1),e.splice(n,1)[0].callback()}(n)})),r={timerId:n,callback:t};e.push(r)},flush:function(){if(e.length){var t=[].concat(e);e.length=0,t.forEach((function(e){clearTimeout(e.timerId),e.callback()}))}}}},b_=function(e,t){HC(),t(),DC()},w_=function(e,t){return{draggableId:e.draggable.id,type:e.droppable.type,source:{droppableId:e.droppable.id,index:e.draggable.index},mode:t}},k_=function(e,t,n,r){if(e){var o=function(e){var t=!1,n=!1,r=setTimeout((function(){n=!0})),o=function(o){t||n||(t=!0,e(o),clearTimeout(r))};return o.wasCalled=function(){return t},o}(n);e(t,{announce:o}),o.wasCalled()||n(r(t))}else n(r(t))},x_=function(e,t){var n=function(e,t){var n=y_(),r=null,o=function(n){r||rM(!1),r=null,b_(0,(function(){return k_(e().onDragEnd,n,t,lM.onDragEnd)}))};return{beforeCapture:function(t,n){r&&rM(!1),b_(0,(function(){var r=e().onBeforeCapture;r&&r({draggableId:t,mode:n})}))},beforeStart:function(t,n){r&&rM(!1),b_(0,(function(){var r=e().onBeforeDragStart;r&&r(w_(t,n))}))},start:function(o,i){r&&rM(!1);var a=w_(o,i);r={mode:i,lastCritical:o,lastLocation:a.source,lastCombine:null},n.add((function(){b_(0,(function(){return k_(e().onDragStart,a,t,lM.onDragStart)}))}))},update:function(o,i){var a=AM(i),c=LM(i);r||rM(!1);var s=!function(e,t){if(e===t)return!0;var n=e.draggable.id===t.draggable.id&&e.draggable.droppableId===t.draggable.droppableId&&e.draggable.type===t.draggable.type&&e.draggable.index===t.draggable.index,r=e.droppable.id===t.droppable.id&&e.droppable.type===t.droppable.type;return n&&r}(o,r.lastCritical);s&&(r.lastCritical=o);var l,u,f=(l=r.lastLocation,u=a,!(null==l&&null==u||null!=l&&null!=u&&l.droppableId===u.droppableId&&l.index===u.index));f&&(r.lastLocation=a);var d=!function(e,t){return null==e&&null==t||null!=e&&null!=t&&(e.draggableId===t.draggableId&&e.droppableId===t.droppableId)}(r.lastCombine,c);if(d&&(r.lastCombine=c),s||f||d){var h=Fx({},w_(o,r.mode),{combine:c,destination:a});n.add((function(){b_(0,(function(){return k_(e().onDragUpdate,h,t,lM.onDragUpdate)}))}))}},flush:function(){r||rM(!1),n.flush()},drop:o,abort:function(){if(r){var e=Fx({},w_(r.lastCritical,r.mode),{combine:null,destination:null,reason:"CANCEL"});o(e)}}}}(e,t);return function(e){return function(t){return function(r){if("BEFORE_INITIAL_CAPTURE"!==r.type){if("INITIAL_PUBLISH"===r.type){var o=r.payload.critical;return n.beforeStart(o,r.payload.movementMode),t(r),void n.start(o,r.payload.movementMode)}if("DROP_COMPLETE"===r.type){var i=r.payload.completed.result;return n.flush(),t(r),void n.drop(i)}if(t(r),"FLUSH"!==r.type){var a=e.getState();"DRAGGING"===a.phase&&n.update(a.critical,a.impact)}else n.abort()}else n.beforeCapture(r.payload.draggableId,r.payload.movementMode)}}}},j_=function(e){return function(t){return function(n){if("DROP_ANIMATION_FINISHED"===n.type){var r=e.getState();"DROP_ANIMATING"!==r.phase&&rM(!1),e.dispatch(t_({completed:r.completed}))}else t(n)}}},M_=function(e){var t=null,n=null;return function(r){return function(o){if("FLUSH"!==o.type&&"DROP_COMPLETE"!==o.type&&"DROP_ANIMATION_FINISHED"!==o.type||(n&&(cancelAnimationFrame(n),n=null),t&&(t(),t=null)),r(o),"DROP_ANIMATE"===o.type){var i={eventName:"scroll",options:{capture:!0,passive:!1,once:!0},fn:function(){"DROP_ANIMATING"===e.getState().phase&&e.dispatch({type:"DROP_ANIMATION_FINISHED",payload:null})}};n=requestAnimationFrame((function(){n=null,t=Jj(window,[i])}))}}}},C_=function(e){return function(t){return function(n){if(t(n),"PUBLISH_WHILE_DRAGGING"===n.type){var r=e.getState();"DROP_PENDING"===r.phase&&(r.isWaiting||e.dispatch(n_({reason:r.reason})))}}}},__=Bx.d,q_=function(e){var t,n=e.dimensionMarshal,r=e.focusMarshal,o=e.styleMarshal,i=e.getResponders,a=e.announce,c=e.autoScroller;return Object(Bx.e)(FC,__(Object(Bx.a)((t=o,function(){return function(e){return function(n){"INITIAL_PUBLISH"===n.type&&t.dragging(),"DROP_ANIMATE"===n.type&&t.dropping(n.payload.completed.result.reason),"FLUSH"!==n.type&&"DROP_COMPLETE"!==n.type||t.resting(),e(n)}}}),function(e){return function(){return function(t){return function(n){"DROP_COMPLETE"!==n.type&&"FLUSH"!==n.type&&"DROP_ANIMATE"!==n.type||e.stopPublishing(),t(n)}}}}(n),function(e){return function(t){var n=t.getState,r=t.dispatch;return function(t){return function(o){if("LIFT"===o.type){var i=o.payload,a=i.id,c=i.clientSelection,s=i.movementMode,l=n();"DROP_ANIMATING"===l.phase&&r(t_({completed:l.completed})),"IDLE"!==n().phase&&rM(!1),r(e_()),r({type:"BEFORE_INITIAL_CAPTURE",payload:{draggableId:a,movementMode:s}});var u={draggableId:a,scrollOptions:{shouldPublishImmediately:"SNAP"===s}},f=e.startPublishing(u),d=f.critical,h=f.dimensions,p=f.viewport;r(function(e){return{type:"INITIAL_PUBLISH",payload:e}}({critical:d,dimensions:h,clientSelection:c,movementMode:s,viewport:p}))}else t(o)}}}}(n),z_,j_,M_,C_,function(e){return function(t){return function(n){return function(r){if(function(e){return"DROP_COMPLETE"===e.type||"DROP_ANIMATE"===e.type||"FLUSH"===e.type}(r))return e.stop(),void n(r);if("INITIAL_PUBLISH"===r.type){n(r);var o=t.getState();return"DRAGGING"!==o.phase&&rM(!1),void e.start(o)}n(r),e.scroll(t.getState())}}}}(c),m_,function(e){var t=!1;return function(){return function(n){return function(r){if("INITIAL_PUBLISH"===r.type)return t=!0,e.tryRecordFocus(r.payload.critical.draggable.id),n(r),void e.tryRestoreFocusRecorded();if(n(r),t){if("FLUSH"===r.type)return t=!1,void e.tryRestoreFocusRecorded();if("DROP_COMPLETE"===r.type){t=!1;var o=r.payload.completed.result;o.combine&&e.tryShiftRecord(o.draggableId,o.combine.draggableId),e.tryRestoreFocusRecorded()}}}}}}(r),x_(i,a))))},S_=function(){return{additions:{},removals:{},modified:{}}};var O_=function(e){var t=e.scrollHeight,n=e.scrollWidth,r=e.height,o=e.width,i=dM({x:n,y:t},{x:o,y:r});return{x:Math.max(0,i.x),y:Math.max(0,i.y)}},E_=function(){var e=document.documentElement;return e||rM(!1),e},T_=function(){var e=E_();return O_({scrollHeight:e.scrollHeight,scrollWidth:e.scrollWidth,width:e.clientWidth,height:e.clientHeight})},A_=function(e){var t=e.critical,n=e.scrollOptions,r=e.registry;HC();var o=function(){var e=v_(),t=T_(),n=e.y,r=e.x,o=E_(),i=o.clientWidth,a=o.clientHeight;return{frame:Aj({top:n,left:r,right:r+i,bottom:n+a}),scroll:{initial:e,current:e,max:t,diff:{value:uM,displacement:uM}}}}(),i=o.scroll.current,a=t.droppable,c=r.droppable.getAllByType(a.type).map((function(e){return e.callbacks.getDimensionAndWatchScroll(i,n)})),s=r.draggable.getAllByType(t.draggable.type).map((function(e){return e.getDimension(i)})),l={draggables:SM(s),droppables:qM(c)};return DC(),{dimensions:l,critical:t,viewport:o}};function L_(e,t,n){return n.descriptor.id!==t.id&&(n.descriptor.type===t.type&&"virtual"===e.droppable.getById(n.descriptor.droppableId).descriptor.mode)}var H_=function(e,t){var n=null,r=function(e){var t=e.registry,n=e.callbacks,r=S_(),o=null,i=function(){o||(n.collectionStarting(),o=requestAnimationFrame((function(){o=null,HC();var e=r,i=e.additions,a=e.removals,c=e.modified,s=Object.keys(i).map((function(e){return t.draggable.getById(e).getDimension(uM)})).sort((function(e,t){return e.descriptor.index-t.descriptor.index})),l=Object.keys(c).map((function(e){return{droppableId:e,scroll:t.droppable.getById(e).callbacks.getScrollWhileDragging()}})),u={additions:s,removals:Object.keys(a),modified:l};r=S_(),DC(),n.publish(u)})))};return{add:function(e){var t=e.descriptor.id;r.additions[t]=e,r.modified[e.descriptor.droppableId]=!0,r.removals[t]&&delete r.removals[t],i()},remove:function(e){var t=e.descriptor;r.removals[t.id]=!0,r.modified[t.droppableId]=!0,r.additions[t.id]&&delete r.additions[t.id],i()},stop:function(){o&&(cancelAnimationFrame(o),o=null,r=S_())}}}({callbacks:{publish:t.publishWhileDragging,collectionStarting:t.collectionStarting},registry:e}),o=function(t){n||rM(!1);var o=n.critical.draggable;"ADDITION"===t.type&&L_(e,o,t.value)&&r.add(t.value),"REMOVAL"===t.type&&L_(e,o,t.value)&&r.remove(t.value)};return{updateDroppableIsEnabled:function(r,o){e.droppable.exists(r)||rM(!1),n&&t.updateDroppableIsEnabled({id:r,isEnabled:o})},updateDroppableIsCombineEnabled:function(r,o){n&&(e.droppable.exists(r)||rM(!1),t.updateDroppableIsCombineEnabled({id:r,isCombineEnabled:o}))},scrollDroppable:function(t,r){n&&e.droppable.getById(t).callbacks.scroll(r)},updateDroppableScroll:function(r,o){n&&(e.droppable.exists(r)||rM(!1),t.updateDroppableScroll({id:r,newScroll:o}))},startPublishing:function(t){n&&rM(!1);var r=e.draggable.getById(t.draggableId),i=e.droppable.getById(r.descriptor.droppableId),a={draggable:r.descriptor,droppable:i.descriptor},c=e.subscribe(o);return n={critical:a,unsubscribe:c},A_({critical:a,registry:e,scrollOptions:t.scrollOptions})},stopPublishing:function(){if(n){r.stop();var t=n.critical.droppable;e.droppable.getAllByType(t.type).forEach((function(e){return e.callbacks.dragStopped()})),n.unsubscribe(),n=null}}}},D_=function(e,t){return"IDLE"===e.phase||"DROP_ANIMATING"===e.phase&&(e.completed.result.draggableId!==t&&"DROP"===e.completed.result.reason)},P_=function(e){window.scrollBy(e.x,e.y)},V_=Tz((function(e){return OM(e).filter((function(e){return!!e.isEnabled&&!!e.frame}))})),R_=function(e){var t=e.center,n=e.destination,r=e.droppables;if(n){var o=r[n];return o.frame?o:null}return function(e,t){return CM(V_(t),(function(t){return t.frame||rM(!1),xC(t.frame.pageMarginBox)(e)}))}(t,r)},I_=.25,N_=.05,F_=28,B_=function(e){return Math.pow(e,2)},U_={stopDampeningAt:1200,accelerateAt:360},W_=function(e){var t=e.startOfRange,n=e.endOfRange,r=e.current,o=n-t;return 0===o?0:(r-t)/o},G_=U_.accelerateAt,Y_=U_.stopDampeningAt,$_=function(e){var t=e.distanceToEdge,n=e.thresholds,r=e.dragStartTime,o=e.shouldUseTimeDampening,i=function(e,t){if(e>t.startScrollingFrom)return 0;if(e<=t.maxScrollValueAt)return F_;if(e===t.startScrollingFrom)return 1;var n=W_({startOfRange:t.maxScrollValueAt,endOfRange:t.startScrollingFrom,current:e}),r=F_*B_(1-n);return Math.ceil(r)}(t,n);return 0===i?0:o?Math.max(function(e,t){var n=t,r=Y_,o=Date.now()-n;if(o>=Y_)return e;if(ot.height,i=n.width>t.width;return i||o?i&&o?null:{x:i?0:r.x,y:o?0:r.y}:r}({container:n,subject:r,proposedScroll:l});return u?hM(u,uM)?null:u:null},Q_=mM((function(e){return 0===e?0:e>0?1:-1})),J_=function(){var e=function(e,t){return e<0?e:e>t?e-t:0};return function(t){var n=t.current,r=t.max,o=t.change,i=fM(n,o),a={x:e(i.x,r.x),y:e(i.y,r.y)};return hM(a,uM)?null:a}}(),eq=function(e){var t=e.max,n=e.current,r=e.change,o={x:Math.max(n.x,t.x),y:Math.max(n.y,t.y)},i=Q_(r),a=J_({max:o,current:n,change:i});return!a||(0!==i.x&&0===a.x||0!==i.y&&0===a.y)},tq=function(e,t){return eq({current:e.scroll.current,max:e.scroll.max,change:t})},nq=function(e,t){var n=e.frame;return!!n&&eq({current:n.scroll.current,max:n.scroll.max,change:t})},rq=function(e){var t=e.state,n=e.dragStartTime,r=e.shouldUseTimeDampening,o=e.scrollWindow,i=e.scrollDroppable,a=t.current.page.borderBoxCenter,c=t.dimensions.draggables[t.critical.draggable.id].page.marginBox;if(t.isWindowScrollAllowed){var s=function(e){var t=e.viewport,n=e.subject,r=e.center,o=e.dragStartTime,i=e.shouldUseTimeDampening,a=K_({dragStartTime:o,container:t.frame,subject:n,center:r,shouldUseTimeDampening:i});return a&&tq(t,a)?a:null}({dragStartTime:n,viewport:t.viewport,subject:c,center:a,shouldUseTimeDampening:r});if(s)return void o(s)}var l=R_({center:a,destination:bC(t.impact),droppables:t.dimensions.droppables});if(l){var u=function(e){var t=e.droppable,n=e.subject,r=e.center,o=e.dragStartTime,i=e.shouldUseTimeDampening,a=t.frame;if(!a)return null;var c=K_({dragStartTime:o,container:a.pageMarginBox,subject:n,center:r,shouldUseTimeDampening:i});return c&&nq(t,c)?c:null}({dragStartTime:n,droppable:l,subject:c,center:a,shouldUseTimeDampening:r});u&&i(l.descriptor.id,u)}},oq=function(e){var t=e.move,n=e.scrollDroppable,r=e.scrollWindow,o=function(e,t){if(!nq(e,t))return t;var r=function(e,t){var n=e.frame;return n&&nq(e,t)?J_({current:n.scroll.current,max:n.scroll.max,change:t}):null}(e,t);if(!r)return n(e.descriptor.id,t),null;var o=dM(t,r);return n(e.descriptor.id,o),dM(t,o)},i=function(e,t,n){if(!e)return n;if(!tq(t,n))return n;var o=function(e,t){if(!tq(e,t))return null;var n=e.scroll.max,r=e.scroll.current;return J_({current:r,max:n,change:t})}(t,n);if(!o)return r(n),null;var i=dM(n,o);return r(i),dM(n,i)};return function(e){var n=e.scrollJumpRequest;if(n){var r=bC(e.impact);r||rM(!1);var a=o(e.dimensions.droppables[r],n);if(a){var c=e.viewport,s=i(e.isWindowScrollAllowed,c,a);s&&function(e,n){var r=fM(e.current.client.selection,n);t({client:r})}(e,s)}}}},iq=function(e){var t=e.scrollDroppable,n=e.scrollWindow,r=e.move,o=function(e){var t=e.scrollWindow,n=e.scrollDroppable,r=Bj(t),o=Bj(n),i=null,a=function(e){i||rM(!1);var t=i,n=t.shouldUseTimeDampening,a=t.dragStartTime;rq({state:e,scrollWindow:r,scrollDroppable:o,dragStartTime:a,shouldUseTimeDampening:n})};return{start:function(e){HC(),i&&rM(!1);var t=Date.now(),n=!1,r=function(){n=!0};rq({state:e,dragStartTime:0,shouldUseTimeDampening:!1,scrollWindow:r,scrollDroppable:r}),i={dragStartTime:t,shouldUseTimeDampening:n},DC(),n&&a(e)},stop:function(){i&&(r.cancel(),o.cancel(),i=null)},scroll:a}}({scrollWindow:n,scrollDroppable:t}),i=oq({move:r,scrollWindow:n,scrollDroppable:t});return{scroll:function(e){"DRAGGING"===e.phase&&("FLUID"!==e.movementMode?e.scrollJumpRequest&&i(e):o.scroll(e))},start:o.start,stop:o.stop}},aq="data-rbd",cq=function(){var e=aq+"-drag-handle";return{base:e,draggableId:e+"-draggable-id",contextId:e+"-context-id"}}(),sq=function(){var e=aq+"-draggable";return{base:e,contextId:e+"-context-id",id:e+"-id"}}(),lq=function(){var e=aq+"-droppable";return{base:e,contextId:e+"-context-id",id:e+"-id"}}(),uq={contextId:aq+"-scroll-container-context-id"},fq=function(e,t){return e.map((function(e){var n=e.styles[t];return n?e.selector+" { "+n+" }":""})).join(" ")},dq=function(e){var t,n=(t=e,function(e){return"["+e+'="'+t+'"]'}),r=function(){var e="\n cursor: -webkit-grab;\n cursor: grab;\n ";return{selector:n(cq.contextId),styles:{always:"\n -webkit-touch-callout: none;\n -webkit-tap-highlight-color: rgba(0,0,0,0);\n touch-action: manipulation;\n ",resting:e,dragging:"pointer-events: none;",dropAnimating:e}}}(),o=[function(){var e="\n transition: "+l_.outOfTheWay+";\n ";return{selector:n(sq.contextId),styles:{dragging:e,dropAnimating:e,userCancel:e}}}(),r,{selector:n(lq.contextId),styles:{always:"overflow-anchor: none;"}},{selector:"body",styles:{dragging:"\n cursor: grabbing;\n cursor: -webkit-grabbing;\n user-select: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n overflow-anchor: none;\n "}}];return{always:fq(o,"always"),resting:fq(o,"resting"),dragging:fq(o,"dragging"),dropAnimating:fq(o,"dropAnimating"),userCancel:fq(o,"userCancel")}},hq="undefined"!==typeof window&&"undefined"!==typeof window.document&&"undefined"!==typeof window.document.createElement?a.useLayoutEffect:a.useEffect,pq=function(){var e=document.querySelector("head");return e||rM(!1),e},zq=function(e){var t=document.createElement("style");return e&&t.setAttribute("nonce",e),t.type="text/css",t};var vq=function(e){return e&&e.ownerDocument?e.ownerDocument.defaultView:window};function gq(e){return e instanceof vq(e).HTMLElement}function mq(e,t){var n="["+cq.contextId+'="'+e+'"]',r=_M(document.querySelectorAll(n));if(!r.length)return null;var o=CM(r,(function(e){return e.getAttribute(cq.draggableId)===t}));return o&&gq(o)?o:null}function yq(){var e={draggables:{},droppables:{}},t=[];function n(e){t.length&&t.forEach((function(t){return t(e)}))}function r(t){return e.draggables[t]||null}function o(t){return e.droppables[t]||null}return{draggable:{register:function(t){e.draggables[t.descriptor.id]=t,n({type:"ADDITION",value:t})},update:function(t,n){var r=e.draggables[n.descriptor.id];r&&r.uniqueId===t.uniqueId&&(delete e.draggables[n.descriptor.id],e.draggables[t.descriptor.id]=t)},unregister:function(t){var o=t.descriptor.id,i=r(o);i&&t.uniqueId===i.uniqueId&&(delete e.draggables[o],n({type:"REMOVAL",value:t}))},getById:function(e){var t=r(e);return t||rM(!1),t},findById:r,exists:function(e){return Boolean(r(e))},getAllByType:function(t){return jM(e.draggables).filter((function(e){return e.descriptor.type===t}))}},droppable:{register:function(t){e.droppables[t.descriptor.id]=t},unregister:function(t){var n=o(t.descriptor.id);n&&t.uniqueId===n.uniqueId&&delete e.droppables[t.descriptor.id]},getById:function(e){var t=o(e);return t||rM(!1),t},findById:o,exists:function(e){return Boolean(o(e))},getAllByType:function(t){return jM(e.droppables).filter((function(e){return e.descriptor.type===t}))}},subscribe:function(e){return t.push(e),function(){var n=t.indexOf(e);-1!==n&&t.splice(n,1)}},clean:function(){e.draggables={},e.droppables={},t.length=0}}}var bq=c.a.createContext(null),wq=function(){var e=document.body;return e||rM(!1),e},kq={position:"absolute",width:"1px",height:"1px",margin:"-1px",border:"0",padding:"0",overflow:"hidden",clip:"rect(0 0 0 0)","clip-path":"inset(100%)"},xq=function(e){return"rbd-announcement-"+e};var jq=0,Mq={separator:"::"};function Cq(e,t){return void 0===t&&(t=Mq),Ej((function(){return""+e+t.separator+jq++}),[t.separator,e])}var _q=c.a.createContext(null);function qq(e){0}function Sq(e,t){qq()}function Oq(e){var t=Object(a.useRef)(e);return Object(a.useEffect)((function(){t.current=e})),t}var Eq,Tq=27,Aq=32,Lq=37,Hq=38,Dq=39,Pq=40,Vq=((Eq={})[13]=!0,Eq[9]=!0,Eq),Rq=function(e){Vq[e.keyCode]&&e.preventDefault()},Iq=function(){var e="visibilitychange";return"undefined"===typeof document?e:CM([e,"ms"+e,"webkit"+e,"moz"+e,"o"+e],(function(e){return"on"+e in document}))||e}(),Nq=0,Fq=5;var Bq,Uq={type:"IDLE"};function Wq(e){var t=e.cancel,n=e.completed,r=e.getPhase,o=e.setPhase;return[{eventName:"mousemove",fn:function(e){var t=e.button,n=e.clientX,i=e.clientY;if(t===Nq){var a={x:n,y:i},c=r();if("DRAGGING"===c.type)return e.preventDefault(),void c.actions.move(a);"PENDING"!==c.type&&rM(!1);var s=c.point;if(l=s,u=a,Math.abs(u.x-l.x)>=Fq||Math.abs(u.y-l.y)>=Fq){var l,u;e.preventDefault();var f=c.actions.fluidLift(a);o({type:"DRAGGING",actions:f})}}}},{eventName:"mouseup",fn:function(e){var o=r();"DRAGGING"===o.type?(e.preventDefault(),o.actions.drop({shouldBlockNextClick:!0}),n()):t()}},{eventName:"mousedown",fn:function(e){"DRAGGING"===r().type&&e.preventDefault(),t()}},{eventName:"keydown",fn:function(e){if("PENDING"!==r().type)return e.keyCode===Tq?(e.preventDefault(),void t()):void Rq(e);t()}},{eventName:"resize",fn:t},{eventName:"scroll",options:{passive:!0,capture:!1},fn:function(){"PENDING"===r().type&&t()}},{eventName:"webkitmouseforcedown",fn:function(e){var n=r();"IDLE"===n.type&&rM(!1),n.actions.shouldRespectForcePress()?t():e.preventDefault()}},{eventName:Iq,fn:t}]}function Gq(){}var Yq=((Bq={})[34]=!0,Bq[33]=!0,Bq[36]=!0,Bq[35]=!0,Bq);function $q(e,t){function n(){t(),e.cancel()}return[{eventName:"keydown",fn:function(r){return r.keyCode===Tq?(r.preventDefault(),void n()):r.keyCode===Aq?(r.preventDefault(),t(),void e.drop()):r.keyCode===Pq?(r.preventDefault(),void e.moveDown()):r.keyCode===Hq?(r.preventDefault(),void e.moveUp()):r.keyCode===Dq?(r.preventDefault(),void e.moveRight()):r.keyCode===Lq?(r.preventDefault(),void e.moveLeft()):void(Yq[r.keyCode]?r.preventDefault():Rq(r))}},{eventName:"mousedown",fn:n},{eventName:"mouseup",fn:n},{eventName:"click",fn:n},{eventName:"touchstart",fn:n},{eventName:"resize",fn:n},{eventName:"wheel",fn:n,options:{passive:!0}},{eventName:Iq,fn:n}]}var Zq={type:"IDLE"},Xq=120,Kq=.15;var Qq={input:!0,button:!0,textarea:!0,select:!0,option:!0,optgroup:!0,video:!0,audio:!0};function Jq(e,t){var n=t.target;return!!gq(n)&&function e(t,n){if(null==n)return!1;if(Boolean(Qq[n.tagName.toLowerCase()]))return!0;var r=n.getAttribute("contenteditable");return"true"===r||""===r||n!==t&&e(t,n.parentElement)}(e,n)}var eS=function(e){return Aj(e.getBoundingClientRect()).center};var tS="undefined"===typeof document?"matches":CM(["matches","msMatchesSelector","webkitMatchesSelector"],(function(e){return e in Element.prototype}))||"matches";function nS(e,t){return e.closest?e.closest(t):function e(t,n){return null==t?null:t[tS](n)?t:e(t.parentElement,n)}(e,t)}function rS(e,t){var n,r=t.target;if(!((n=r)instanceof vq(n).Element))return null;var o=nS(r,function(e){return"["+cq.contextId+'="'+e+'"]'}(e));return o&&gq(o)?o:null}function oS(e){e.preventDefault()}function iS(e){var t=e.expected,n=e.phase,r=e.isLockActive;e.shouldWarn;return!!r()&&t===n}function aS(e){var t=e.lockAPI,n=e.store,r=e.registry,o=e.draggableId;if(t.isClaimed())return!1;var i=r.draggable.findById(o);return!!i&&(!!i.options.isEnabled&&!!D_(n.getState(),o))}function cS(e){var t=e.lockAPI,n=e.contextId,r=e.store,o=e.registry,i=e.draggableId,a=e.forceSensorStop,c=e.sourceEvent;if(!aS({lockAPI:t,store:r,registry:o,draggableId:i}))return null;var s=o.draggable.getById(i),l=function(e,t){var n="["+sq.contextId+'="'+e+'"]',r=CM(_M(document.querySelectorAll(n)),(function(e){return e.getAttribute(sq.id)===t}));return r&&gq(r)?r:null}(n,s.descriptor.id);if(!l)return null;if(c&&!s.options.canDragInteractiveElements&&Jq(l,c))return null;var u=t.claim(a||Qj),f="PRE_DRAG";function d(){return s.options.shouldRespectForcePress}function h(){return t.isActive(u)}var p=function(e,t){iS({expected:e,phase:f,isLockActive:h,shouldWarn:!0})&&r.dispatch(t())}.bind(null,"DRAGGING");function z(e){function n(){t.release(),f="COMPLETED"}function o(t,o){if(void 0===o&&(o={shouldBlockNextClick:!1}),e.cleanup(),o.shouldBlockNextClick){var i=Jj(window,[{eventName:"click",fn:oS,options:{once:!0,passive:!1,capture:!0}}]);setTimeout(i)}n(),r.dispatch(n_({reason:t}))}return"PRE_DRAG"!==f&&(n(),"PRE_DRAG"!==f&&rM(!1)),r.dispatch(BC(e.liftActionArgs)),f="DRAGGING",Fx({isActive:function(){return iS({expected:"DRAGGING",phase:f,isLockActive:h,shouldWarn:!1})},shouldRespectForcePress:d,drop:function(e){return o("DROP",e)},cancel:function(e){return o("CANCEL",e)}},e.actions)}return{isActive:function(){return iS({expected:"PRE_DRAG",phase:f,isLockActive:h,shouldWarn:!1})},shouldRespectForcePress:d,fluidLift:function(e){var t=Bj((function(e){p((function(){return ZC({client:e})}))}));return Fx({},z({liftActionArgs:{id:i,clientSelection:e,movementMode:"FLUID"},cleanup:function(){return t.cancel()},actions:{move:t}}),{move:t})},snapLift:function(){var e={moveUp:function(){return p(XC)},moveRight:function(){return p(QC)},moveDown:function(){return p(KC)},moveLeft:function(){return p(JC)}};return z({liftActionArgs:{id:i,clientSelection:eS(l),movementMode:"SNAP"},cleanup:Qj,actions:e})},abort:function(){iS({expected:"PRE_DRAG",phase:f,isLockActive:h,shouldWarn:!0})&&t.release()}}}var sS=[function(e){var t=Object(a.useRef)(Uq),n=Object(a.useRef)(Qj),r=Ej((function(){return{eventName:"mousedown",fn:function(t){if(!t.defaultPrevented&&t.button===Nq&&!(t.ctrlKey||t.metaKey||t.shiftKey||t.altKey)){var r=e.findClosestDraggableId(t);if(r){var o=e.tryGetLock(r,c,{sourceEvent:t});if(o){t.preventDefault();var i={x:t.clientX,y:t.clientY};n.current(),u(o,i)}}}}}}),[e]),o=Ej((function(){return{eventName:"webkitmouseforcewillbegin",fn:function(t){if(!t.defaultPrevented){var n=e.findClosestDraggableId(t);if(n){var r=e.findOptionsForDraggable(n);r&&(r.shouldRespectForcePress||e.canGetLock(n)&&t.preventDefault())}}}}}),[e]),i=Tj((function(){n.current=Jj(window,[o,r],{passive:!1,capture:!0})}),[o,r]),c=Tj((function(){"IDLE"!==t.current.type&&(t.current=Uq,n.current(),i())}),[i]),s=Tj((function(){var e=t.current;c(),"DRAGGING"===e.type&&e.actions.cancel({shouldBlockNextClick:!0}),"PENDING"===e.type&&e.actions.abort()}),[c]),l=Tj((function(){var e=Wq({cancel:s,completed:c,getPhase:function(){return t.current},setPhase:function(e){t.current=e}});n.current=Jj(window,e,{capture:!0,passive:!1})}),[s,c]),u=Tj((function(e,n){"IDLE"!==t.current.type&&rM(!1),t.current={type:"PENDING",point:n,actions:e},l()}),[l]);hq((function(){return i(),function(){n.current()}}),[i])},function(e){var t=Object(a.useRef)(Gq),n=Ej((function(){return{eventName:"keydown",fn:function(n){if(!n.defaultPrevented&&n.keyCode===Aq){var o=e.findClosestDraggableId(n);if(o){var i=e.tryGetLock(o,s,{sourceEvent:n});if(i){n.preventDefault();var a=!0,c=i.snapLift();t.current(),t.current=Jj(window,$q(c,s),{capture:!0,passive:!1})}}}function s(){a||rM(!1),a=!1,t.current(),r()}}}}),[e]),r=Tj((function(){t.current=Jj(window,[n],{passive:!1,capture:!0})}),[n]);hq((function(){return r(),function(){t.current()}}),[r])},function(e){var t=Object(a.useRef)(Zq),n=Object(a.useRef)(Qj),r=Tj((function(){return t.current}),[]),o=Tj((function(e){t.current=e}),[]),i=Ej((function(){return{eventName:"touchstart",fn:function(t){if(!t.defaultPrevented){var r=e.findClosestDraggableId(t);if(r){var o=e.tryGetLock(r,s,{sourceEvent:t});if(o){var i=t.touches[0],a={x:i.clientX,y:i.clientY};n.current(),d(o,a)}}}}}}),[e]),c=Tj((function(){n.current=Jj(window,[i],{capture:!0,passive:!1})}),[i]),s=Tj((function(){var e=t.current;"IDLE"!==e.type&&("PENDING"===e.type&&clearTimeout(e.longPressTimerId),o(Zq),n.current(),c())}),[c,o]),l=Tj((function(){var e=t.current;s(),"DRAGGING"===e.type&&e.actions.cancel({shouldBlockNextClick:!0}),"PENDING"===e.type&&e.actions.abort()}),[s]),u=Tj((function(){var e={capture:!0,passive:!1},t={cancel:l,completed:s,getPhase:r},o=Jj(window,function(e){var t=e.cancel,n=e.completed,r=e.getPhase;return[{eventName:"touchmove",options:{capture:!1},fn:function(e){var n=r();if("DRAGGING"===n.type){n.hasMoved=!0;var o=e.touches[0],i={x:o.clientX,y:o.clientY};e.preventDefault(),n.actions.move(i)}else t()}},{eventName:"touchend",fn:function(e){var o=r();"DRAGGING"===o.type?(e.preventDefault(),o.actions.drop({shouldBlockNextClick:!0}),n()):t()}},{eventName:"touchcancel",fn:function(e){"DRAGGING"===r().type?(e.preventDefault(),t()):t()}},{eventName:"touchforcechange",fn:function(e){var n=r();"IDLE"===n.type&&rM(!1);var o=e.touches[0];if(o&&o.force>=Kq){var i=n.actions.shouldRespectForcePress();if("PENDING"!==n.type)return i?n.hasMoved?void e.preventDefault():void t():void e.preventDefault();i&&t()}}},{eventName:Iq,fn:t}]}(t),e),i=Jj(window,function(e){var t=e.cancel,n=e.getPhase;return[{eventName:"orientationchange",fn:t},{eventName:"resize",fn:t},{eventName:"contextmenu",fn:function(e){e.preventDefault()}},{eventName:"keydown",fn:function(e){"DRAGGING"===n().type?(e.keyCode===Tq&&e.preventDefault(),t()):t()}},{eventName:Iq,fn:t}]}(t),e);n.current=function(){o(),i()}}),[l,r,s]),f=Tj((function(){var e=r();"PENDING"!==e.type&&rM(!1);var t=e.actions.fluidLift(e.point);o({type:"DRAGGING",actions:t,hasMoved:!1})}),[r,o]),d=Tj((function(e,t){"IDLE"!==r().type&&rM(!1);var n=setTimeout(f,Xq);o({type:"PENDING",point:t,actions:e,longPressTimerId:n}),u()}),[u,r,o,f]);hq((function(){return c(),function(){n.current();var e=r();"PENDING"===e.type&&(clearTimeout(e.longPressTimerId),o(Zq))}}),[r,c,o]),hq((function(){return Jj(window,[{eventName:"touchmove",fn:function(){},options:{capture:!1,passive:!1}}])}),[])}];function lS(e){var t=e.contextId,n=e.store,r=e.registry,o=e.customSensors,i=e.enableDefaultSensors,c=[].concat(i?sS:[],o||[]),s=Object(a.useState)((function(){return function(){var e=null;function t(){e||rM(!1),e=null}return{isClaimed:function(){return Boolean(e)},isActive:function(t){return t===e},claim:function(t){e&&rM(!1);var n={abandon:t};return e=n,n},release:t,tryAbandon:function(){e&&(e.abandon(),t())}}}()}))[0],l=Tj((function(e,t){e.isDragging&&!t.isDragging&&s.tryAbandon()}),[s]);hq((function(){var e=n.getState();return n.subscribe((function(){var t=n.getState();l(e,t),e=t}))}),[s,n,l]),hq((function(){return s.tryAbandon}),[s.tryAbandon]);var u=Tj((function(e){return aS({lockAPI:s,registry:r,store:n,draggableId:e})}),[s,r,n]),f=Tj((function(e,o,i){return cS({lockAPI:s,registry:r,contextId:t,store:n,draggableId:e,forceSensorStop:o,sourceEvent:i&&i.sourceEvent?i.sourceEvent:null})}),[t,s,r,n]),d=Tj((function(e){return function(e,t){var n=rS(e,t);return n?n.getAttribute(cq.draggableId):null}(t,e)}),[t]),h=Tj((function(e){var t=r.draggable.findById(e);return t?t.options:null}),[r.draggable]),p=Tj((function(){s.isClaimed()&&(s.tryAbandon(),"IDLE"!==n.getState().phase&&n.dispatch(e_()))}),[s,n]),z=Tj(s.isClaimed,[s]),v=Ej((function(){return{canGetLock:u,tryGetLock:f,findClosestDraggableId:d,findOptionsForDraggable:h,tryReleaseLock:p,isLockClaimed:z}}),[u,f,d,h,p,z]);qq();for(var g=0;go))return i.current=iO(iO({},i.current),{width:o,tabRight:f,containerRight:s}),f>=s&&!i.current.collapse?(i.current.collapse=!0,r(!0)):f+ds&&u(!0),l<=s&&u(!1),a>0&&c(!0),0===a&&c(!1)}}}),[r,n])]}(l,u,n,s),h=d[0],p=d[1],z=d[2];Object(a.useEffect)((function(){if(l.current){var e=l.current,t=Object(oO.a)(300,(function(){f(),z()}));return t(),e.addEventListener("scroll",z),window.addEventListener("resize",t),function(){e.removeEventListener("scroll",z),window.removeEventListener("resize",t)}}}),[n,s]);var v=Object(a.useCallback)((function(e){if(e){var t=u.current;n.length>=t.length&&(u.current=pO(pO([],t,!0),[e],!1)),n.length0||(o.disconnect(),jO.delete(e),delete kO[r],delete xO[r])}}((function(e){o&&o(e),u(e)}),e,s)}}),[t,n,r,o]);return Object(a.useEffect)((function(){return function(){var e;null===(e=c.current)||void 0===e||e.call(c),c.current=null}}),[]),[f,i,l]},qO=function(){return(qO=Object.assign||function(e){for(var t,n=1,r=arguments.length;n label {\n margin-bottom: 0;\n }\n"],["\n & input {\n background: transparent;\n }\n\n & > label {\n margin-bottom: 0;\n }\n"]))),zE=function(){return(zE=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0?BE(eT,--QE):0,XE--,10===JE&&(XE=1,ZE--),JE}function oT(){return JE=QE2||sT(JE)>3?"":" "}function hT(e,t){for(;--t&&oT()&&!(JE<48||JE>102||JE>57&&JE<65||JE>70&&JE<97););return cT(e,aT()+(t<6&&32==iT()&&32==oT()))}function pT(e,t){for(;oT()&&e+JE!==57&&(e+JE!==84||47!==iT()););return"/*"+cT(t,QE-1)+"*"+VE(47===e?e:oT())}function zT(e){for(;!sT(iT());)oT();return cT(e,QE)}function vT(e){return uT(function e(t,n,r,o,i,a,c,s,l){var u=0,f=0,d=c,h=0,p=0,z=0,v=1,g=1,m=1,y=0,b="",w=i,k=a,x=o,j=b;for(;g;)switch(z=y,y=oT()){case 40:if(108!=z&&58==j.charCodeAt(d-1)){-1!=FE(j+=NE(fT(y),"&","&\f"),"&\f")&&(m=-1);break}case 34:case 39:case 91:j+=fT(y);break;case 9:case 10:case 13:case 32:j+=dT(z);break;case 92:j+=hT(aT()-1,7);continue;case 47:switch(iT()){case 42:case 47:YE(mT(pT(oT(),aT()),n,r),l);break;default:j+="/"}break;case 123*v:s[u++]=WE(j)*m;case 125*v:case 59:case 0:switch(y){case 0:case 125:g=0;case 59+f:p>0&&WE(j)-d&&YE(p>32?yT(j+";",o,r,d-1):yT(NE(j," ","")+";",o,r,d-2),l);break;case 59:j+=";";default:if(YE(x=gT(j,n,r,u,f,i,s,b,w=[],k=[],d),a),123===y)if(0===f)e(j,n,x,x,w,a,d,s,k);else switch(h){case 100:case 109:case 115:e(t,x,x,o&&YE(gT(t,x,x,0,0,i,s,b,i,w=[],d),k),i,k,d,s,o?w:k);break;default:e(j,x,x,x,[""],k,0,s,k)}}u=f=p=0,v=m=1,b=j="",d=c;break;case 58:d=1+WE(j),p=z;default:if(v<1)if(123==y)--v;else if(125==y&&0==v++&&125==rT())continue;switch(j+=VE(y),y*v){case 38:m=f>0?1:(j+="\f",-1);break;case 44:s[u++]=(WE(j)-1)*m,m=1;break;case 64:45===iT()&&(j+=fT(oT())),h=iT(),f=d=WE(b=j+=zT(aT())),y++;break;case 45:45===z&&2==WE(j)&&(v=0)}}return a}("",null,null,null,[""],e=lT(e),0,[0],e))}function gT(e,t,n,r,o,i,a,c,s,l,u){for(var f=o-1,d=0===o?i:[""],h=GE(d),p=0,z=0,v=0;p0?d[g]+" "+m:NE(m,/&\f/g,d[g])))&&(s[v++]=y);return tT(e,t,n,0===o?AE:c,s,l,u)}function mT(e,t,n){return tT(e,t,n,TE,VE(JE),UE(e,2,-2),0)}function yT(e,t,n,r){return tT(e,t,n,LE,UE(e,0,r),UE(e,r+1,-1),r)}function bT(e,t){switch((((t<<2^BE(n=e,0))<<2^BE(n,1))<<2^BE(n,2))<<2^BE(n,3)){case 5103:return EE+"print-"+e+e;case 5737:case 4201:case 3177:case 3433:case 1641:case 4457:case 2921:case 5572:case 6356:case 5844:case 3191:case 6645:case 3005:case 6391:case 5879:case 5623:case 6135:case 4599:case 4855:case 4215:case 6389:case 5109:case 5365:case 5621:case 3829:return EE+e+e;case 5349:case 4246:case 4810:case 6968:case 2756:return EE+e+OE+e+SE+e+e;case 6828:case 4268:return EE+e+SE+e+e;case 6165:return EE+e+SE+"flex-"+e+e;case 5187:return EE+e+NE(e,/(\w+).+(:[^]+)/,EE+"box-$1$2"+SE+"flex-$1$2")+e;case 5443:return EE+e+SE+"flex-item-"+NE(e,/flex-|-self/,"")+e;case 4675:return EE+e+SE+"flex-line-pack"+NE(e,/align-content|flex-|-self/,"")+e;case 5548:return EE+e+SE+NE(e,"shrink","negative")+e;case 5292:return EE+e+SE+NE(e,"basis","preferred-size")+e;case 6060:return EE+"box-"+NE(e,"-grow","")+EE+e+SE+NE(e,"grow","positive")+e;case 4554:return EE+NE(e,/([^-])(transform)/g,"$1"+EE+"$2")+e;case 6187:return NE(NE(NE(e,/(zoom-|grab)/,EE+"$1"),/(image-set)/,EE+"$1"),e,"")+e;case 5495:case 3959:return NE(e,/(image-set\([^]*)/,EE+"$1$`$1");case 4968:return NE(NE(e,/(.+:)(flex-)?(.*)/,EE+"box-pack:$3"+SE+"flex-pack:$3"),/s.+-b[^;]+/,"justify")+EE+e+e;case 4095:case 3583:case 4068:case 2532:return NE(e,/(.+)-inline(.+)/,EE+"$1$2")+e;case 8116:case 7059:case 5753:case 5535:case 5445:case 5701:case 4933:case 4677:case 5533:case 5789:case 5021:case 4765:if(WE(e)-1-t>6)switch(BE(e,t+1)){case 109:if(45!==BE(e,t+4))break;case 102:return NE(e,/(.+:)(.+)-([^]+)/,"$1"+EE+"$2-$3$1"+OE+(108==BE(e,t+3)?"$3":"$2-$3"))+e;case 115:return~FE(e,"stretch")?bT(NE(e,"stretch","fill-available"),t)+e:e}break;case 4949:if(115!==BE(e,t+1))break;case 6444:switch(BE(e,WE(e)-3-(~FE(e,"!important")&&10))){case 107:return NE(e,":",":"+EE)+e;case 101:return NE(e,/(.+:)([^;!]+)(;|!.+)?/,"$1"+EE+(45===BE(e,14)?"inline-":"")+"box$3$1"+EE+"$2$3$1"+SE+"$2box$3")+e}break;case 5936:switch(BE(e,t+11)){case 114:return EE+e+SE+NE(e,/[svh]\w+-[tblr]{2}/,"tb")+e;case 108:return EE+e+SE+NE(e,/[svh]\w+-[tblr]{2}/,"tb-rl")+e;case 45:return EE+e+SE+NE(e,/[svh]\w+-[tblr]{2}/,"lr")+e}return EE+e+SE+e+e}var n;return e}function wT(e,t){for(var n="",r=GE(e),o=0;o-1&&!e.return)switch(e.type){case LE:e.return=bT(e.value,e.length);break;case DE:return wT([nT(e,{value:NE(e.value,"@","@"+EE)})],r);case AE:if(e.length)return $E(e.props,(function(t){switch((n=/(::plac\w+|:read-\w+)/.exec(n=t))?n[0]:n){case":read-only":case":read-write":return wT([nT(e,{props:[NE(t,/:(read-\w+)/,":"+OE+"$1")]})],r);case"::placeholder":return wT([nT(e,{props:[NE(t,/:(plac\w+)/,":"+EE+"input-$1")]}),nT(e,{props:[NE(t,/:(plac\w+)/,":"+OE+"$1")]}),nT(e,{props:[NE(t,/:(plac\w+)/,SE+"input-$1")]})],r)}var n;return""}))}}],OT=function(e){var t=e.key;if("css"===t){var n=document.querySelectorAll("style[data-emotion]:not([data-s])");Array.prototype.forEach.call(n,(function(e){-1!==e.getAttribute("data-emotion").indexOf(" ")&&(document.head.appendChild(e),e.setAttribute("data-s",""))}))}var r=e.stylisPlugins||ST;var o,i,a={},c=[];o=e.container||document.head,Array.prototype.forEach.call(document.querySelectorAll('style[data-emotion^="'+t+' "]'),(function(e){for(var t=e.getAttribute("data-emotion").split(" "),n=1;n=4;++r,o-=4)t=1540483477*(65535&(t=255&e.charCodeAt(r)|(255&e.charCodeAt(++r))<<8|(255&e.charCodeAt(++r))<<16|(255&e.charCodeAt(++r))<<24))+(59797*(t>>>16)<<16),n=1540483477*(65535&(t^=t>>>24))+(59797*(t>>>16)<<16)^1540483477*(65535&n)+(59797*(n>>>16)<<16);switch(o){case 3:n^=(255&e.charCodeAt(r+2))<<16;case 2:n^=(255&e.charCodeAt(r+1))<<8;case 1:n=1540483477*(65535&(n^=255&e.charCodeAt(r)))+(59797*(n>>>16)<<16)}return(((n=1540483477*(65535&(n^=n>>>13))+(59797*(n>>>16)<<16))^n>>>15)>>>0).toString(36)},HT=n(173),DT=/[A-Z]|^ms/g,PT=/_EMO_([^_]+?)_([^]*?)_EMO_/g,VT=function(e){return 45===e.charCodeAt(1)},RT=function(e){return null!=e&&"boolean"!==typeof e},IT=xT((function(e){return VT(e)?e:e.replace(DT,"-$&").toLowerCase()})),NT=function(e,t){switch(e){case"animation":case"animationName":if("string"===typeof t)return t.replace(PT,(function(e,t,n){return BT={name:t,styles:n,next:BT},t}))}return 1===HT.a[e]||VT(e)||"number"!==typeof t||0===t?t:t+"px"};function FT(e,t,n){if(null==n)return"";if(void 0!==n.__emotion_styles)return n;switch(typeof n){case"boolean":return"";case"object":if(1===n.anim)return BT={name:n.name,styles:n.styles,next:BT},n.name;if(void 0!==n.styles){var r=n.next;if(void 0!==r)for(;void 0!==r;)BT={name:r.name,styles:r.styles,next:BT},r=r.next;return n.styles+";"}return function(e,t,n){var r="";if(Array.isArray(n))for(var o=0;o=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function uA(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n-1}function AA(e){return TA(e)?window.pageYOffset:e.scrollTop}function LA(e,t){TA(e)?window.scrollTo(0,t):e.scrollTop=t}function HA(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:200,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:_A,o=AA(e),i=t-o,a=10,c=0;!function t(){var s=function(e,t,n,r){return n*((e=e/r-1)*e*e+1)+t}(c+=a,o,i,n);LA(e,s),c1?t-1:0),r=1;r=p)return{placement:"bottom",maxHeight:t};if(j>=p&&!a)return i&&HA(s,M,160),{placement:"bottom",maxHeight:t};if(!a&&j>=r||a&&k>=r)return i&&HA(s,M,160),{placement:"bottom",maxHeight:a?k-y:j-y};if("auto"===o||a){var _=t,q=a?w:x;return q>=r&&(_=Math.min(q-y-c.controlHeight,t)),{placement:"top",maxHeight:_}}if("bottom"===o)return i&&LA(s,M),{placement:"bottom",maxHeight:t};break;case"top":if(w>=p)return{placement:"top",maxHeight:t};if(x>=p&&!a)return i&&HA(s,C,160),{placement:"top",maxHeight:t};if(!a&&x>=r||a&&w>=r){var S=t;return(!a&&x>=r||a&&w>=r)&&(S=a?w-b:x-b),i&&HA(s,C,160),{placement:"top",maxHeight:S}}return{placement:"bottom",maxHeight:t};default:throw new Error('Invalid placement provided "'.concat(o,'".'))}return l}var WA=function(e){return"auto"===e?"bottom":e},GA=Object(a.createContext)({getPortalPlacement:null}),YA=function(e){mA(n,e);var t=MA(n);function n(){var e;pA(this,n);for(var r=arguments.length,o=new Array(r),i=0;i1?"s":""," ").concat(o.join(","),", selected.");case"select-option":return"option ".concat(r,i?" is disabled. Select another option.":", selected.");default:return""}},onFocus:function(e){var t=e.context,n=e.focused,r=e.options,o=e.label,i=void 0===o?"":o,a=e.selectValue,c=e.isDisabled,s=e.isSelected,l=function(e,t){return e&&e.length?"".concat(e.indexOf(t)+1," of ").concat(e.length):""};if("value"===t&&a)return"value ".concat(i," focused, ").concat(l(a,n),".");if("menu"===t){var u=c?" disabled":"",f="".concat(s?"selected":"focused").concat(u);return"option ".concat(i," ").concat(f,", ").concat(l(r,n),".")}return""},onFilter:function(e){var t=e.inputValue,n=e.resultsMessage;return"".concat(n).concat(t?" for search term "+t:"",".")}},_L=function(e){var t=e.ariaSelection,n=e.focusedOption,r=e.focusedValue,o=e.focusableOptions,i=e.isFocused,c=e.selectValue,s=e.selectProps,l=e.id,u=s.ariaLiveMessages,f=s.getOptionLabel,d=s.inputValue,h=s.isMulti,p=s.isOptionDisabled,z=s.isSearchable,v=s.menuIsOpen,g=s.options,m=s.screenReaderStatus,y=s.tabSelectsValue,b=s["aria-label"],w=s["aria-live"],k=Object(a.useMemo)((function(){return kA(kA({},CL),u||{})}),[u]),x=Object(a.useMemo)((function(){var e,n="";if(t&&k.onChange){var r=t.option,o=t.options,i=t.removedValue,a=t.removedValues,s=t.value,l=i||r||(e=s,Array.isArray(e)?null:e),u=l?f(l):"",d=o||a||void 0,h=d?d.map(f):[],z=kA({isDisabled:l&&p(l,c),label:u,labels:h},t);n=k.onChange(z)}return n}),[t,k,p,c,f]),j=Object(a.useMemo)((function(){var e="",t=n||r,o=!!(n&&c&&c.includes(n));if(t&&k.onFocus){var i={focused:t,label:f(t),isDisabled:p(t,c),isSelected:o,options:g,context:t===n?"menu":"value",selectValue:c};e=k.onFocus(i)}return e}),[n,r,f,p,k,g,c]),M=Object(a.useMemo)((function(){var e="";if(v&&g.length&&k.onFilter){var t=m({count:o.length});e=k.onFilter({inputValue:d,resultsMessage:t})}return e}),[o,d,v,k,g,m]),C=Object(a.useMemo)((function(){var e="";if(k.guidance){var t=r?"value":v?"menu":"input";e=k.guidance({"aria-label":b,context:t,isDisabled:n&&p(n,c),isMulti:h,isSearchable:z,tabSelectsValue:y})}return e}),[b,n,r,h,p,z,v,k,c,y]),_="".concat(j," ").concat(M," ").concat(C),q=rA(a.Fragment,null,rA("span",{id:"aria-selection"},x),rA("span",{id:"aria-context"},_)),S="initial-input-focus"===(null===t||void 0===t?void 0:t.action);return rA(a.Fragment,null,rA(ML,{id:l},S&&q),rA(ML,{"aria-live":w,"aria-atomic":"false","aria-relevant":"additions text"},i&&!S&&q))},qL=[{base:"A",letters:"A\u24b6\uff21\xc0\xc1\xc2\u1ea6\u1ea4\u1eaa\u1ea8\xc3\u0100\u0102\u1eb0\u1eae\u1eb4\u1eb2\u0226\u01e0\xc4\u01de\u1ea2\xc5\u01fa\u01cd\u0200\u0202\u1ea0\u1eac\u1eb6\u1e00\u0104\u023a\u2c6f"},{base:"AA",letters:"\ua732"},{base:"AE",letters:"\xc6\u01fc\u01e2"},{base:"AO",letters:"\ua734"},{base:"AU",letters:"\ua736"},{base:"AV",letters:"\ua738\ua73a"},{base:"AY",letters:"\ua73c"},{base:"B",letters:"B\u24b7\uff22\u1e02\u1e04\u1e06\u0243\u0182\u0181"},{base:"C",letters:"C\u24b8\uff23\u0106\u0108\u010a\u010c\xc7\u1e08\u0187\u023b\ua73e"},{base:"D",letters:"D\u24b9\uff24\u1e0a\u010e\u1e0c\u1e10\u1e12\u1e0e\u0110\u018b\u018a\u0189\ua779"},{base:"DZ",letters:"\u01f1\u01c4"},{base:"Dz",letters:"\u01f2\u01c5"},{base:"E",letters:"E\u24ba\uff25\xc8\xc9\xca\u1ec0\u1ebe\u1ec4\u1ec2\u1ebc\u0112\u1e14\u1e16\u0114\u0116\xcb\u1eba\u011a\u0204\u0206\u1eb8\u1ec6\u0228\u1e1c\u0118\u1e18\u1e1a\u0190\u018e"},{base:"F",letters:"F\u24bb\uff26\u1e1e\u0191\ua77b"},{base:"G",letters:"G\u24bc\uff27\u01f4\u011c\u1e20\u011e\u0120\u01e6\u0122\u01e4\u0193\ua7a0\ua77d\ua77e"},{base:"H",letters:"H\u24bd\uff28\u0124\u1e22\u1e26\u021e\u1e24\u1e28\u1e2a\u0126\u2c67\u2c75\ua78d"},{base:"I",letters:"I\u24be\uff29\xcc\xcd\xce\u0128\u012a\u012c\u0130\xcf\u1e2e\u1ec8\u01cf\u0208\u020a\u1eca\u012e\u1e2c\u0197"},{base:"J",letters:"J\u24bf\uff2a\u0134\u0248"},{base:"K",letters:"K\u24c0\uff2b\u1e30\u01e8\u1e32\u0136\u1e34\u0198\u2c69\ua740\ua742\ua744\ua7a2"},{base:"L",letters:"L\u24c1\uff2c\u013f\u0139\u013d\u1e36\u1e38\u013b\u1e3c\u1e3a\u0141\u023d\u2c62\u2c60\ua748\ua746\ua780"},{base:"LJ",letters:"\u01c7"},{base:"Lj",letters:"\u01c8"},{base:"M",letters:"M\u24c2\uff2d\u1e3e\u1e40\u1e42\u2c6e\u019c"},{base:"N",letters:"N\u24c3\uff2e\u01f8\u0143\xd1\u1e44\u0147\u1e46\u0145\u1e4a\u1e48\u0220\u019d\ua790\ua7a4"},{base:"NJ",letters:"\u01ca"},{base:"Nj",letters:"\u01cb"},{base:"O",letters:"O\u24c4\uff2f\xd2\xd3\xd4\u1ed2\u1ed0\u1ed6\u1ed4\xd5\u1e4c\u022c\u1e4e\u014c\u1e50\u1e52\u014e\u022e\u0230\xd6\u022a\u1ece\u0150\u01d1\u020c\u020e\u01a0\u1edc\u1eda\u1ee0\u1ede\u1ee2\u1ecc\u1ed8\u01ea\u01ec\xd8\u01fe\u0186\u019f\ua74a\ua74c"},{base:"OI",letters:"\u01a2"},{base:"OO",letters:"\ua74e"},{base:"OU",letters:"\u0222"},{base:"P",letters:"P\u24c5\uff30\u1e54\u1e56\u01a4\u2c63\ua750\ua752\ua754"},{base:"Q",letters:"Q\u24c6\uff31\ua756\ua758\u024a"},{base:"R",letters:"R\u24c7\uff32\u0154\u1e58\u0158\u0210\u0212\u1e5a\u1e5c\u0156\u1e5e\u024c\u2c64\ua75a\ua7a6\ua782"},{base:"S",letters:"S\u24c8\uff33\u1e9e\u015a\u1e64\u015c\u1e60\u0160\u1e66\u1e62\u1e68\u0218\u015e\u2c7e\ua7a8\ua784"},{base:"T",letters:"T\u24c9\uff34\u1e6a\u0164\u1e6c\u021a\u0162\u1e70\u1e6e\u0166\u01ac\u01ae\u023e\ua786"},{base:"TZ",letters:"\ua728"},{base:"U",letters:"U\u24ca\uff35\xd9\xda\xdb\u0168\u1e78\u016a\u1e7a\u016c\xdc\u01db\u01d7\u01d5\u01d9\u1ee6\u016e\u0170\u01d3\u0214\u0216\u01af\u1eea\u1ee8\u1eee\u1eec\u1ef0\u1ee4\u1e72\u0172\u1e76\u1e74\u0244"},{base:"V",letters:"V\u24cb\uff36\u1e7c\u1e7e\u01b2\ua75e\u0245"},{base:"VY",letters:"\ua760"},{base:"W",letters:"W\u24cc\uff37\u1e80\u1e82\u0174\u1e86\u1e84\u1e88\u2c72"},{base:"X",letters:"X\u24cd\uff38\u1e8a\u1e8c"},{base:"Y",letters:"Y\u24ce\uff39\u1ef2\xdd\u0176\u1ef8\u0232\u1e8e\u0178\u1ef6\u1ef4\u01b3\u024e\u1efe"},{base:"Z",letters:"Z\u24cf\uff3a\u0179\u1e90\u017b\u017d\u1e92\u1e94\u01b5\u0224\u2c7f\u2c6b\ua762"},{base:"a",letters:"a\u24d0\uff41\u1e9a\xe0\xe1\xe2\u1ea7\u1ea5\u1eab\u1ea9\xe3\u0101\u0103\u1eb1\u1eaf\u1eb5\u1eb3\u0227\u01e1\xe4\u01df\u1ea3\xe5\u01fb\u01ce\u0201\u0203\u1ea1\u1ead\u1eb7\u1e01\u0105\u2c65\u0250"},{base:"aa",letters:"\ua733"},{base:"ae",letters:"\xe6\u01fd\u01e3"},{base:"ao",letters:"\ua735"},{base:"au",letters:"\ua737"},{base:"av",letters:"\ua739\ua73b"},{base:"ay",letters:"\ua73d"},{base:"b",letters:"b\u24d1\uff42\u1e03\u1e05\u1e07\u0180\u0183\u0253"},{base:"c",letters:"c\u24d2\uff43\u0107\u0109\u010b\u010d\xe7\u1e09\u0188\u023c\ua73f\u2184"},{base:"d",letters:"d\u24d3\uff44\u1e0b\u010f\u1e0d\u1e11\u1e13\u1e0f\u0111\u018c\u0256\u0257\ua77a"},{base:"dz",letters:"\u01f3\u01c6"},{base:"e",letters:"e\u24d4\uff45\xe8\xe9\xea\u1ec1\u1ebf\u1ec5\u1ec3\u1ebd\u0113\u1e15\u1e17\u0115\u0117\xeb\u1ebb\u011b\u0205\u0207\u1eb9\u1ec7\u0229\u1e1d\u0119\u1e19\u1e1b\u0247\u025b\u01dd"},{base:"f",letters:"f\u24d5\uff46\u1e1f\u0192\ua77c"},{base:"g",letters:"g\u24d6\uff47\u01f5\u011d\u1e21\u011f\u0121\u01e7\u0123\u01e5\u0260\ua7a1\u1d79\ua77f"},{base:"h",letters:"h\u24d7\uff48\u0125\u1e23\u1e27\u021f\u1e25\u1e29\u1e2b\u1e96\u0127\u2c68\u2c76\u0265"},{base:"hv",letters:"\u0195"},{base:"i",letters:"i\u24d8\uff49\xec\xed\xee\u0129\u012b\u012d\xef\u1e2f\u1ec9\u01d0\u0209\u020b\u1ecb\u012f\u1e2d\u0268\u0131"},{base:"j",letters:"j\u24d9\uff4a\u0135\u01f0\u0249"},{base:"k",letters:"k\u24da\uff4b\u1e31\u01e9\u1e33\u0137\u1e35\u0199\u2c6a\ua741\ua743\ua745\ua7a3"},{base:"l",letters:"l\u24db\uff4c\u0140\u013a\u013e\u1e37\u1e39\u013c\u1e3d\u1e3b\u017f\u0142\u019a\u026b\u2c61\ua749\ua781\ua747"},{base:"lj",letters:"\u01c9"},{base:"m",letters:"m\u24dc\uff4d\u1e3f\u1e41\u1e43\u0271\u026f"},{base:"n",letters:"n\u24dd\uff4e\u01f9\u0144\xf1\u1e45\u0148\u1e47\u0146\u1e4b\u1e49\u019e\u0272\u0149\ua791\ua7a5"},{base:"nj",letters:"\u01cc"},{base:"o",letters:"o\u24de\uff4f\xf2\xf3\xf4\u1ed3\u1ed1\u1ed7\u1ed5\xf5\u1e4d\u022d\u1e4f\u014d\u1e51\u1e53\u014f\u022f\u0231\xf6\u022b\u1ecf\u0151\u01d2\u020d\u020f\u01a1\u1edd\u1edb\u1ee1\u1edf\u1ee3\u1ecd\u1ed9\u01eb\u01ed\xf8\u01ff\u0254\ua74b\ua74d\u0275"},{base:"oi",letters:"\u01a3"},{base:"ou",letters:"\u0223"},{base:"oo",letters:"\ua74f"},{base:"p",letters:"p\u24df\uff50\u1e55\u1e57\u01a5\u1d7d\ua751\ua753\ua755"},{base:"q",letters:"q\u24e0\uff51\u024b\ua757\ua759"},{base:"r",letters:"r\u24e1\uff52\u0155\u1e59\u0159\u0211\u0213\u1e5b\u1e5d\u0157\u1e5f\u024d\u027d\ua75b\ua7a7\ua783"},{base:"s",letters:"s\u24e2\uff53\xdf\u015b\u1e65\u015d\u1e61\u0161\u1e67\u1e63\u1e69\u0219\u015f\u023f\ua7a9\ua785\u1e9b"},{base:"t",letters:"t\u24e3\uff54\u1e6b\u1e97\u0165\u1e6d\u021b\u0163\u1e71\u1e6f\u0167\u01ad\u0288\u2c66\ua787"},{base:"tz",letters:"\ua729"},{base:"u",letters:"u\u24e4\uff55\xf9\xfa\xfb\u0169\u1e79\u016b\u1e7b\u016d\xfc\u01dc\u01d8\u01d6\u01da\u1ee7\u016f\u0171\u01d4\u0215\u0217\u01b0\u1eeb\u1ee9\u1eef\u1eed\u1ef1\u1ee5\u1e73\u0173\u1e77\u1e75\u0289"},{base:"v",letters:"v\u24e5\uff56\u1e7d\u1e7f\u028b\ua75f\u028c"},{base:"vy",letters:"\ua761"},{base:"w",letters:"w\u24e6\uff57\u1e81\u1e83\u0175\u1e87\u1e85\u1e98\u1e89\u2c73"},{base:"x",letters:"x\u24e7\uff58\u1e8b\u1e8d"},{base:"y",letters:"y\u24e8\uff59\u1ef3\xfd\u0177\u1ef9\u0233\u1e8f\xff\u1ef7\u1e99\u1ef5\u01b4\u024f\u1eff"},{base:"z",letters:"z\u24e9\uff5a\u017a\u1e91\u017c\u017e\u1e93\u1e95\u01b6\u0225\u0240\u2c6c\ua763"}],SL=new RegExp("["+qL.map((function(e){return e.letters})).join("")+"]","g"),OL={},EL=0;EL0,z=f-d-l,v=!1;z>t&&c.current&&(r&&r(e),c.current=!1),p&&s.current&&(i&&i(e),s.current=!1),p&&t>z?(n&&!c.current&&n(e),h.scrollTop=f,v=!0,c.current=!0):!p&&-t>l&&(o&&!s.current&&o(e),h.scrollTop=0,v=!0,s.current=!0),v&&IL(e)}}),[n,r,o,i]),d=Object(a.useCallback)((function(e){f(e,e.deltaY)}),[f]),h=Object(a.useCallback)((function(e){l.current=e.changedTouches[0].clientY}),[]),p=Object(a.useCallback)((function(e){var t=l.current-e.changedTouches[0].clientY;f(e,t)}),[f]),z=Object(a.useCallback)((function(e){if(e){var t=!!IA&&{passive:!1};e.addEventListener("wheel",d,t),e.addEventListener("touchstart",h,t),e.addEventListener("touchmove",p,t)}}),[p,h,d]),v=Object(a.useCallback)((function(e){e&&(e.removeEventListener("wheel",d,!1),e.removeEventListener("touchstart",h,!1),e.removeEventListener("touchmove",p,!1))}),[p,h,d]);return Object(a.useEffect)((function(){if(t){var e=u.current;return z(e),function(){v(e)}}}),[t,z,v]),function(e){u.current=e}}({isEnabled:void 0===r||r,onBottomArrive:e.onBottomArrive,onBottomLeave:e.onBottomLeave,onTopArrive:e.onTopArrive,onTopLeave:e.onTopLeave}),i=function(e){var t=e.isEnabled,n=e.accountForScrollbars,r=void 0===n||n,o=Object(a.useRef)({}),i=Object(a.useRef)(null),c=Object(a.useCallback)((function(e){if(YL){var t=document.body,n=t&&t.style;if(r&&NL.forEach((function(e){var t=n&&n[e];o.current[e]=t})),r&&$L<1){var i=parseInt(o.current.paddingRight,10)||0,a=document.body?document.body.clientWidth:0,c=window.innerWidth-a+i||0;Object.keys(FL).forEach((function(e){var t=FL[e];n&&(n[e]=t)})),n&&(n.paddingRight="".concat(c,"px"))}t&&GL()&&(t.addEventListener("touchmove",BL,ZL),e&&(e.addEventListener("touchstart",WL,ZL),e.addEventListener("touchmove",UL,ZL))),$L+=1}}),[r]),s=Object(a.useCallback)((function(e){if(YL){var t=document.body,n=t&&t.style;$L=Math.max($L-1,0),r&&$L<1&&NL.forEach((function(e){var t=o.current[e];n&&(n[e]=t)})),t&&GL()&&(t.removeEventListener("touchmove",BL,ZL),e&&(e.removeEventListener("touchstart",WL,ZL),e.removeEventListener("touchmove",UL,ZL)))}}),[r]);return Object(a.useEffect)((function(){if(t){var e=i.current;return c(e),function(){s(e)}}}),[t,c,s]),function(e){i.current=e}}({isEnabled:n});return rA(a.Fragment,null,n&&rA("div",{onClick:XL,css:KL}),t((function(e){o(e),i(e)})))}var JL={clearIndicator:uL,container:function(e){var t=e.isDisabled;return{label:"container",direction:e.isRtl?"rtl":void 0,pointerEvents:t?"none":void 0,position:"relative"}},control:function(e){var t=e.isDisabled,n=e.isFocused,r=e.theme,o=r.colors,i=r.borderRadius,a=r.spacing;return{label:"control",alignItems:"center",backgroundColor:t?o.neutral5:o.neutral0,borderColor:t?o.neutral10:n?o.primary:o.neutral20,borderRadius:i,borderStyle:"solid",borderWidth:1,boxShadow:n?"0 0 0 1px ".concat(o.primary):void 0,cursor:"default",display:"flex",flexWrap:"wrap",justifyContent:"space-between",minHeight:a.controlHeight,outline:"0 !important",position:"relative",transition:"all 100ms","&:hover":{borderColor:n?o.primary:o.neutral30}}},dropdownIndicator:lL,group:function(e){var t=e.theme.spacing;return{paddingBottom:2*t.baseUnit,paddingTop:2*t.baseUnit}},groupHeading:function(e){var t=e.theme.spacing;return{label:"group",color:"#999",cursor:"default",display:"block",fontSize:"75%",fontWeight:500,marginBottom:"0.25em",paddingLeft:3*t.baseUnit,paddingRight:3*t.baseUnit,textTransform:"uppercase"}},indicatorsContainer:function(){return{alignItems:"center",alignSelf:"stretch",display:"flex",flexShrink:0}},indicatorSeparator:function(e){var t=e.isDisabled,n=e.theme,r=n.spacing.baseUnit,o=n.colors;return{label:"indicatorSeparator",alignSelf:"stretch",backgroundColor:t?o.neutral10:o.neutral20,marginBottom:2*r,marginTop:2*r,width:1}},input:function(e){var t=e.isDisabled,n=e.value,r=e.theme,o=r.spacing,i=r.colors;return kA({margin:o.baseUnit/2,paddingBottom:o.baseUnit/2,paddingTop:o.baseUnit/2,visibility:t?"hidden":"visible",color:i.neutral80,transform:n?"translateZ(0)":""},gL)},loadingIndicator:function(e){var t=e.isFocused,n=e.size,r=e.theme,o=r.colors,i=r.spacing.baseUnit;return{label:"loadingIndicator",color:t?o.neutral60:o.neutral20,display:"flex",padding:2*i,transition:"color 150ms",alignSelf:"center",fontSize:n,lineHeight:1,marginRight:n,textAlign:"center",verticalAlign:"middle"}},loadingMessage:XA,menu:function(e){var t,n=e.placement,r=e.theme,o=r.borderRadius,i=r.spacing,a=r.colors;return yA(t={label:"menu"},function(e){return e?{bottom:"top",top:"bottom"}[e]:"bottom"}(n),"100%"),yA(t,"backgroundColor",a.neutral0),yA(t,"borderRadius",o),yA(t,"boxShadow","0 0 0 1px hsla(0, 0%, 0%, 0.1), 0 4px 11px hsla(0, 0%, 0%, 0.1)"),yA(t,"marginBottom",i.menuGutter),yA(t,"marginTop",i.menuGutter),yA(t,"position","absolute"),yA(t,"width","100%"),yA(t,"zIndex",1),t},menuList:function(e){var t=e.maxHeight,n=e.theme.spacing.baseUnit;return{maxHeight:t,overflowY:"auto",paddingBottom:n,paddingTop:n,position:"relative",WebkitOverflowScrolling:"touch"}},menuPortal:function(e){var t=e.rect,n=e.offset,r=e.position;return{left:t.left,position:r,top:n,width:t.width,zIndex:1}},multiValue:function(e){var t=e.theme,n=t.spacing,r=t.borderRadius;return{label:"multiValue",backgroundColor:t.colors.neutral10,borderRadius:r/2,display:"flex",margin:n.baseUnit/2,minWidth:0}},multiValueLabel:function(e){var t=e.theme,n=t.borderRadius,r=t.colors,o=e.cropWithEllipsis;return{borderRadius:n/2,color:r.neutral80,fontSize:"85%",overflow:"hidden",padding:3,paddingLeft:6,textOverflow:o||void 0===o?"ellipsis":void 0,whiteSpace:"nowrap"}},multiValueRemove:function(e){var t=e.theme,n=t.spacing,r=t.borderRadius,o=t.colors;return{alignItems:"center",borderRadius:r/2,backgroundColor:e.isFocused?o.dangerLight:void 0,display:"flex",paddingLeft:n.baseUnit,paddingRight:n.baseUnit,":hover":{backgroundColor:o.dangerLight,color:o.danger}}},noOptionsMessage:ZA,option:function(e){var t=e.isDisabled,n=e.isFocused,r=e.isSelected,o=e.theme,i=o.spacing,a=o.colors;return{label:"option",backgroundColor:r?a.primary:n?a.primary25:"transparent",color:t?a.neutral20:r?a.neutral0:"inherit",cursor:"default",display:"block",fontSize:"inherit",padding:"".concat(2*i.baseUnit,"px ").concat(3*i.baseUnit,"px"),width:"100%",userSelect:"none",WebkitTapHighlightColor:"rgba(0, 0, 0, 0)",":active":{backgroundColor:t?void 0:r?a.primary:a.primary50}}},placeholder:function(e){var t=e.theme,n=t.spacing;return{label:"placeholder",color:t.colors.neutral50,gridArea:"1 / 1 / 2 / 3",marginLeft:n.baseUnit/2,marginRight:n.baseUnit/2}},singleValue:function(e){var t=e.isDisabled,n=e.theme,r=n.spacing,o=n.colors;return{label:"singleValue",color:t?o.neutral40:o.neutral80,gridArea:"1 / 1 / 2 / 3",marginLeft:r.baseUnit/2,marginRight:r.baseUnit/2,maxWidth:"100%",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}},valueContainer:function(e){var t=e.theme.spacing,n=e.isMulti,r=e.hasValue,o=e.selectProps.controlShouldRenderValue;return{alignItems:"center",display:n&&r&&o?"flex":"grid",flex:1,flexWrap:"wrap",padding:"".concat(t.baseUnit/2,"px ").concat(2*t.baseUnit,"px"),WebkitOverflowScrolling:"touch",position:"relative",overflow:"hidden"}}};var eH,tH={borderRadius:4,colors:{primary:"#2684FF",primary75:"#4C9AFF",primary50:"#B2D4FF",primary25:"#DEEBFF",danger:"#DE350B",dangerLight:"#FFBDAD",neutral0:"hsl(0, 0%, 100%)",neutral5:"hsl(0, 0%, 95%)",neutral10:"hsl(0, 0%, 90%)",neutral20:"hsl(0, 0%, 80%)",neutral30:"hsl(0, 0%, 70%)",neutral40:"hsl(0, 0%, 60%)",neutral50:"hsl(0, 0%, 50%)",neutral60:"hsl(0, 0%, 40%)",neutral70:"hsl(0, 0%, 30%)",neutral80:"hsl(0, 0%, 20%)",neutral90:"hsl(0, 0%, 10%)"},spacing:{baseUnit:4,controlHeight:38,menuGutter:8}},nH={"aria-live":"polite",backspaceRemovesValue:!0,blurInputOnSelect:DA(),captureMenuScroll:!DA(),closeMenuOnSelect:!0,closeMenuOnScroll:!1,components:{},controlShouldRenderValue:!0,escapeClearsValue:!1,filterOption:function(e,t){if(e.data.__isNew__)return!0;var n=kA({ignoreCase:!0,ignoreAccents:!0,stringify:PL,trim:!0,matchFrom:"any"},eH),r=n.ignoreCase,o=n.ignoreAccents,i=n.stringify,a=n.trim,c=n.matchFrom,s=a?DL(t):t,l=a?DL(i(e)):i(e);return r&&(s=s.toLowerCase(),l=l.toLowerCase()),o&&(s=HL(s),l=LL(l)),"start"===c?l.substr(0,s.length)===s:l.indexOf(s)>-1},formatGroupLabel:function(e){return e.label},getOptionLabel:function(e){return e.label},getOptionValue:function(e){return e.value},isDisabled:!1,isLoading:!1,isMulti:!1,isRtl:!1,isSearchable:!0,isOptionDisabled:function(e){return!!e.isDisabled},loadingMessage:function(){return"Loading..."},maxMenuHeight:300,minMenuHeight:140,menuIsOpen:!1,menuPlacement:"bottom",menuPosition:"absolute",menuShouldBlockScroll:!1,menuShouldScrollIntoView:!function(){try{return/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)}catch(e){return!1}}(),noOptionsMessage:function(){return"No options"},openMenuOnFocus:!1,openMenuOnClick:!0,options:[],pageSize:5,placeholder:"Select...",screenReaderStatus:function(e){var t=e.count;return"".concat(t," result").concat(1!==t?"s":""," available")},styles:{},tabIndex:0,tabSelectsValue:!0};function rH(e,t,n,r){return{type:"option",data:t,isDisabled:lH(e,t,n),isSelected:uH(e,t,n),label:cH(e,t),value:sH(e,t),index:r}}function oH(e,t){return e.options.map((function(n,r){if("options"in n){var o=n.options.map((function(n,r){return rH(e,n,t,r)})).filter((function(t){return aH(e,t)}));return o.length>0?{type:"group",data:n,options:o,index:r}:void 0}var i=rH(e,n,t,r);return aH(e,i)?i:void 0})).filter(NA)}function iH(e){return e.reduce((function(e,t){return"group"===t.type?e.push.apply(e,xL(t.options.map((function(e){return e.data})))):e.push(t.data),e}),[])}function aH(e,t){var n=e.inputValue,r=void 0===n?"":n,o=t.data,i=t.isSelected,a=t.label,c=t.value;return(!dH(e)||!i)&&fH(e,{label:a,value:c,data:o},r)}var cH=function(e,t){return e.getOptionLabel(t)},sH=function(e,t){return e.getOptionValue(t)};function lH(e,t,n){return"function"===typeof e.isOptionDisabled&&e.isOptionDisabled(t,n)}function uH(e,t,n){if(n.indexOf(t)>-1)return!0;if("function"===typeof e.isOptionSelected)return e.isOptionSelected(t,n);var r=sH(e,t);return n.some((function(t){return sH(e,t)===r}))}function fH(e,t,n){return!e.filterOption||e.filterOption(t,n)}var dH=function(e){var t=e.hideSelectedOptions,n=e.isMulti;return void 0===t?n:t},hH=1,pH=function(e){mA(n,e);var t=MA(n);function n(e){var r;return pA(this,n),(r=t.call(this,e)).state={ariaSelection:null,focusedOption:null,focusedValue:null,inputIsHidden:!1,isFocused:!1,selectValue:[],clearFocusValueOnUpdate:!1,prevWasFocused:!1,inputIsHiddenAfterUpdate:void 0,prevProps:void 0},r.blockOptionHover=!1,r.isComposing=!1,r.commonProps=void 0,r.initialTouchX=0,r.initialTouchY=0,r.instancePrefix="",r.openAfterFocus=!1,r.scrollToFocusedOptionOnUpdate=!1,r.userIsDragging=void 0,r.controlRef=null,r.getControlRef=function(e){r.controlRef=e},r.focusedOptionRef=null,r.getFocusedOptionRef=function(e){r.focusedOptionRef=e},r.menuListRef=null,r.getMenuListRef=function(e){r.menuListRef=e},r.inputRef=null,r.getInputRef=function(e){r.inputRef=e},r.focus=r.focusInput,r.blur=r.blurInput,r.onChange=function(e,t){var n=r.props,o=n.onChange,i=n.name;t.name=i,r.ariaOnChange(e,t),o(e,t)},r.setValue=function(e,t,n){var o=r.props,i=o.closeMenuOnSelect,a=o.isMulti,c=o.inputValue;r.onInputChange("",{action:"set-value",prevInputValue:c}),i&&(r.setState({inputIsHiddenAfterUpdate:!a}),r.onMenuClose()),r.setState({clearFocusValueOnUpdate:!0}),r.onChange(e,{action:t,option:n})},r.selectOption=function(e){var t=r.props,n=t.blurInputOnSelect,o=t.isMulti,i=t.name,a=r.state.selectValue,c=o&&r.isOptionSelected(e,a),s=r.isOptionDisabled(e,a);if(c){var l=r.getOptionValue(e);r.setValue(a.filter((function(e){return r.getOptionValue(e)!==l})),"deselect-option",e)}else{if(s)return void r.ariaOnChange(e,{action:"select-option",option:e,name:i});o?r.setValue([].concat(xL(a),[e]),"select-option",e):r.setValue(e,"select-option")}n&&r.blurInput()},r.removeValue=function(e){var t=r.props.isMulti,n=r.state.selectValue,o=r.getOptionValue(e),i=n.filter((function(e){return r.getOptionValue(e)!==o})),a=FA(t,i,i[0]||null);r.onChange(a,{action:"remove-value",removedValue:e}),r.focusInput()},r.clearValue=function(){var e=r.state.selectValue;r.onChange(FA(r.props.isMulti,[],null),{action:"clear",removedValues:e})},r.popValue=function(){var e=r.props.isMulti,t=r.state.selectValue,n=t[t.length-1],o=t.slice(0,t.length-1),i=FA(e,o,o[0]||null);r.onChange(i,{action:"pop-value",removedValue:n})},r.getValue=function(){return r.state.selectValue},r.cx=function(){for(var e=arguments.length,t=new Array(e),n=0;n5||i>5}},r.onTouchEnd=function(e){r.userIsDragging||(r.controlRef&&!r.controlRef.contains(e.target)&&r.menuListRef&&!r.menuListRef.contains(e.target)&&r.blurInput(),r.initialTouchX=0,r.initialTouchY=0)},r.onControlTouchEnd=function(e){r.userIsDragging||r.onControlMouseDown(e)},r.onClearIndicatorTouchEnd=function(e){r.userIsDragging||r.onClearIndicatorMouseDown(e)},r.onDropdownIndicatorTouchEnd=function(e){r.userIsDragging||r.onDropdownIndicatorMouseDown(e)},r.handleInputChange=function(e){var t=r.props.inputValue,n=e.currentTarget.value;r.setState({inputIsHiddenAfterUpdate:!1}),r.onInputChange(n,{action:"input-change",prevInputValue:t}),r.props.menuIsOpen||r.onMenuOpen()},r.onInputFocus=function(e){r.props.onFocus&&r.props.onFocus(e),r.setState({inputIsHiddenAfterUpdate:!1,isFocused:!0}),(r.openAfterFocus||r.props.openMenuOnFocus)&&r.openMenu("first"),r.openAfterFocus=!1},r.onInputBlur=function(e){var t=r.props.inputValue;r.menuListRef&&r.menuListRef.contains(document.activeElement)?r.inputRef.focus():(r.props.onBlur&&r.props.onBlur(e),r.onInputChange("",{action:"input-blur",prevInputValue:t}),r.onMenuClose(),r.setState({focusedValue:null,isFocused:!1}))},r.onOptionHover=function(e){r.blockOptionHover||r.state.focusedOption===e||r.setState({focusedOption:e})},r.shouldHideSelectedOptions=function(){return dH(r.props)},r.onKeyDown=function(e){var t=r.props,n=t.isMulti,o=t.backspaceRemovesValue,i=t.escapeClearsValue,a=t.inputValue,c=t.isClearable,s=t.isDisabled,l=t.menuIsOpen,u=t.onKeyDown,f=t.tabSelectsValue,d=t.openMenuOnFocus,h=r.state,p=h.focusedOption,z=h.focusedValue,v=h.selectValue;if(!s&&("function"!==typeof u||(u(e),!e.defaultPrevented))){switch(r.blockOptionHover=!0,e.key){case"ArrowLeft":if(!n||a)return;r.focusValue("previous");break;case"ArrowRight":if(!n||a)return;r.focusValue("next");break;case"Delete":case"Backspace":if(a)return;if(z)r.removeValue(z);else{if(!o)return;n?r.popValue():c&&r.clearValue()}break;case"Tab":if(r.isComposing)return;if(e.shiftKey||!l||!f||!p||d&&r.isOptionSelected(p,v))return;r.selectOption(p);break;case"Enter":if(229===e.keyCode)break;if(l){if(!p)return;if(r.isComposing)return;r.selectOption(p);break}return;case"Escape":l?(r.setState({inputIsHiddenAfterUpdate:!1}),r.onInputChange("",{action:"menu-close",prevInputValue:a}),r.onMenuClose()):c&&i&&r.clearValue();break;case" ":if(a)return;if(!l){r.openMenu("first");break}if(!p)return;r.selectOption(p);break;case"ArrowUp":l?r.focusOption("up"):r.openMenu("last");break;case"ArrowDown":l?r.focusOption("down"):r.openMenu("first");break;case"PageUp":if(!l)return;r.focusOption("pageup");break;case"PageDown":if(!l)return;r.focusOption("pagedown");break;case"Home":if(!l)return;r.focusOption("first");break;case"End":if(!l)return;r.focusOption("last");break;default:return}e.preventDefault()}},r.instancePrefix="react-select-"+(r.props.instanceId||++hH),r.state.selectValue=OA(e.value),r}return vA(n,[{key:"componentDidMount",value:function(){this.startListeningComposition(),this.startListeningToTouch(),this.props.closeMenuOnScroll&&document&&document.addEventListener&&document.addEventListener("scroll",this.onScroll,!0),this.props.autoFocus&&this.focusInput()}},{key:"componentDidUpdate",value:function(e){var t=this.props,n=t.isDisabled,r=t.menuIsOpen,o=this.state.isFocused;(o&&!n&&e.isDisabled||o&&r&&!e.menuIsOpen)&&this.focusInput(),o&&n&&!e.isDisabled&&this.setState({isFocused:!1},this.onMenuClose),this.menuListRef&&this.focusedOptionRef&&this.scrollToFocusedOptionOnUpdate&&(!function(e,t){var n=e.getBoundingClientRect(),r=t.getBoundingClientRect(),o=t.offsetHeight/3;r.bottom+o>n.bottom?LA(e,Math.min(t.offsetTop+t.clientHeight-e.offsetHeight+o,e.scrollHeight)):r.top-o-1&&(a=c)}this.scrollToFocusedOptionOnUpdate=!(o&&this.menuListRef),this.setState({inputIsHiddenAfterUpdate:!1,focusedValue:null,focusedOption:i[a]},(function(){return t.onMenuOpen()}))}},{key:"focusValue",value:function(e){var t=this.state,n=t.selectValue,r=t.focusedValue;if(this.props.isMulti){this.setState({focusedOption:null});var o=n.indexOf(r);r||(o=-1);var i=n.length-1,a=-1;if(n.length){switch(e){case"previous":a=0===o?0:-1===o?i:o-1;break;case"next":o>-1&&o0&&void 0!==arguments[0]?arguments[0]:"first",t=this.props.pageSize,n=this.state.focusedOption,r=this.getFocusableOptions();if(r.length){var o=0,i=r.indexOf(n);n||(i=-1),"up"===e?o=i>0?i-1:r.length-1:"down"===e?o=(i+1)%r.length:"pageup"===e?(o=i-t)<0&&(o=0):"pagedown"===e?(o=i+t)>r.length-1&&(o=r.length-1):"last"===e&&(o=r.length-1),this.scrollToFocusedOptionOnUpdate=!0,this.setState({focusedOption:r[o],focusedValue:null})}}},{key:"getTheme",value:function(){return this.props.theme?"function"===typeof this.props.theme?this.props.theme(tH):kA(kA({},tH),this.props.theme):tH}},{key:"getCommonProps",value:function(){var e=this.clearValue,t=this.cx,n=this.getStyles,r=this.getValue,o=this.selectOption,i=this.setValue,a=this.props,c=a.isMulti,s=a.isRtl,l=a.options;return{clearValue:e,cx:t,getStyles:n,getValue:r,hasValue:this.hasValue(),isMulti:c,isRtl:s,options:l,selectOption:o,selectProps:a,setValue:i,theme:this.getTheme()}}},{key:"hasValue",value:function(){return this.state.selectValue.length>0}},{key:"hasOptions",value:function(){return!!this.getFocusableOptions().length}},{key:"isClearable",value:function(){var e=this.props,t=e.isClearable,n=e.isMulti;return void 0===t?n:t}},{key:"isOptionDisabled",value:function(e,t){return lH(this.props,e,t)}},{key:"isOptionSelected",value:function(e,t){return uH(this.props,e,t)}},{key:"filterOption",value:function(e,t){return fH(this.props,e,t)}},{key:"formatOptionLabel",value:function(e,t){if("function"===typeof this.props.formatOptionLabel){var n=this.props.inputValue,r=this.state.selectValue;return this.props.formatOptionLabel(e,{context:t,inputValue:n,selectValue:r})}return this.getOptionLabel(e)}},{key:"formatGroupLabel",value:function(e){return this.props.formatGroupLabel(e)}},{key:"startListeningComposition",value:function(){document&&document.addEventListener&&(document.addEventListener("compositionstart",this.onCompositionStart,!1),document.addEventListener("compositionend",this.onCompositionEnd,!1))}},{key:"stopListeningComposition",value:function(){document&&document.removeEventListener&&(document.removeEventListener("compositionstart",this.onCompositionStart),document.removeEventListener("compositionend",this.onCompositionEnd))}},{key:"startListeningToTouch",value:function(){document&&document.addEventListener&&(document.addEventListener("touchstart",this.onTouchStart,!1),document.addEventListener("touchmove",this.onTouchMove,!1),document.addEventListener("touchend",this.onTouchEnd,!1))}},{key:"stopListeningToTouch",value:function(){document&&document.removeEventListener&&(document.removeEventListener("touchstart",this.onTouchStart),document.removeEventListener("touchmove",this.onTouchMove),document.removeEventListener("touchend",this.onTouchEnd))}},{key:"renderInput",value:function(){var e=this.props,t=e.isDisabled,n=e.isSearchable,r=e.inputId,o=e.inputValue,i=e.tabIndex,c=e.form,s=e.menuIsOpen,l=this.getComponents().Input,u=this.state,f=u.inputIsHidden,d=u.ariaSelection,h=this.commonProps,p=r||this.getElementId("input"),z=kA(kA(kA({"aria-autocomplete":"list","aria-expanded":s,"aria-haspopup":!0,"aria-errormessage":this.props["aria-errormessage"],"aria-invalid":this.props["aria-invalid"],"aria-label":this.props["aria-label"],"aria-labelledby":this.props["aria-labelledby"],role:"combobox"},s&&{"aria-controls":this.getElementId("listbox"),"aria-owns":this.getElementId("listbox")}),!n&&{"aria-readonly":!0}),this.hasValue()?"initial-input-focus"===(null===d||void 0===d?void 0:d.action)&&{"aria-describedby":this.getElementId("live-region")}:{"aria-describedby":this.getElementId("placeholder")});return n?a.createElement(l,_E({},h,{autoCapitalize:"none",autoComplete:"off",autoCorrect:"off",id:p,innerRef:this.getInputRef,isDisabled:t,isHidden:f,onBlur:this.onInputBlur,onChange:this.handleInputChange,onFocus:this.onInputFocus,spellCheck:"false",tabIndex:i,form:c,type:"text",value:o},z)):a.createElement(RL,_E({id:p,innerRef:this.getInputRef,onBlur:this.onInputBlur,onChange:_A,onFocus:this.onInputFocus,disabled:t,tabIndex:i,inputMode:"none",form:c,value:""},z))}},{key:"renderPlaceholderOrValue",value:function(){var e=this,t=this.getComponents(),n=t.MultiValue,r=t.MultiValueContainer,o=t.MultiValueLabel,i=t.MultiValueRemove,c=t.SingleValue,s=t.Placeholder,l=this.commonProps,u=this.props,f=u.controlShouldRenderValue,d=u.isDisabled,h=u.isMulti,p=u.inputValue,z=u.placeholder,v=this.state,g=v.selectValue,m=v.focusedValue,y=v.isFocused;if(!this.hasValue()||!f)return p?null:a.createElement(s,_E({},l,{key:"placeholder",isDisabled:d,isFocused:y,innerProps:{id:this.getElementId("placeholder")}}),z);if(h)return g.map((function(t,c){var s=t===m,u="".concat(e.getOptionLabel(t),"-").concat(e.getOptionValue(t));return a.createElement(n,_E({},l,{components:{Container:r,Label:o,Remove:i},isFocused:s,isDisabled:d,key:u,index:c,removeProps:{onClick:function(){return e.removeValue(t)},onTouchEnd:function(){return e.removeValue(t)},onMouseDown:function(e){e.preventDefault()}},data:t}),e.formatOptionLabel(t,"value"))}));if(p)return null;var b=g[0];return(a.createElement(c,_E({},l,{data:b,isDisabled:d}),this.formatOptionLabel(b,"value")))}},{key:"renderClearIndicator",value:function(){var e=this.getComponents().ClearIndicator,t=this.commonProps,n=this.props,r=n.isDisabled,o=n.isLoading,i=this.state.isFocused;if(!this.isClearable()||!e||r||!this.hasValue()||o)return null;var c={onMouseDown:this.onClearIndicatorMouseDown,onTouchEnd:this.onClearIndicatorTouchEnd,"aria-hidden":"true"};return(a.createElement(e,_E({},t,{innerProps:c,isFocused:i})))}},{key:"renderLoadingIndicator",value:function(){var e=this.getComponents().LoadingIndicator,t=this.commonProps,n=this.props,r=n.isDisabled,o=n.isLoading,i=this.state.isFocused;if(!e||!o)return null;return a.createElement(e,_E({},t,{innerProps:{"aria-hidden":"true"},isDisabled:r,isFocused:i}))}},{key:"renderIndicatorSeparator",value:function(){var e=this.getComponents(),t=e.DropdownIndicator,n=e.IndicatorSeparator;if(!t||!n)return null;var r=this.commonProps,o=this.props.isDisabled,i=this.state.isFocused;return a.createElement(n,_E({},r,{isDisabled:o,isFocused:i}))}},{key:"renderDropdownIndicator",value:function(){var e=this.getComponents().DropdownIndicator;if(!e)return null;var t=this.commonProps,n=this.props.isDisabled,r=this.state.isFocused,o={onMouseDown:this.onDropdownIndicatorMouseDown,onTouchEnd:this.onDropdownIndicatorTouchEnd,"aria-hidden":"true"};return a.createElement(e,_E({},t,{innerProps:o,isDisabled:n,isFocused:r}))}},{key:"renderMenu",value:function(){var e=this,t=this.getComponents(),n=t.Group,r=t.GroupHeading,o=t.Menu,i=t.MenuList,c=t.MenuPortal,s=t.LoadingMessage,l=t.NoOptionsMessage,u=t.Option,f=this.commonProps,d=this.state.focusedOption,h=this.props,p=h.captureMenuScroll,z=h.inputValue,v=h.isLoading,g=h.loadingMessage,m=h.minMenuHeight,y=h.maxMenuHeight,b=h.menuIsOpen,w=h.menuPlacement,k=h.menuPosition,x=h.menuPortalTarget,j=h.menuShouldBlockScroll,M=h.menuShouldScrollIntoView,C=h.noOptionsMessage,_=h.onMenuScrollToTop,q=h.onMenuScrollToBottom;if(!b)return null;var S,O=function(t,n){var r=t.type,o=t.data,i=t.isDisabled,c=t.isSelected,s=t.label,l=t.value,h=d===o,p=i?void 0:function(){return e.onOptionHover(o)},z=i?void 0:function(){return e.selectOption(o)},v="".concat(e.getElementId("option"),"-").concat(n),g={id:v,onClick:z,onMouseMove:p,onMouseOver:p,tabIndex:-1};return a.createElement(u,_E({},f,{innerProps:g,data:o,isDisabled:i,isSelected:c,key:v,label:s,type:r,value:l,isFocused:h,innerRef:h?e.getFocusedOptionRef:void 0}),e.formatOptionLabel(t.data,"menu"))};if(this.hasOptions())S=this.getCategorizedOptions().map((function(t){if("group"===t.type){var o=t.data,i=t.options,c=t.index,s="".concat(e.getElementId("group"),"-").concat(c),l="".concat(s,"-heading");return a.createElement(n,_E({},f,{key:s,data:o,options:i,Heading:r,headingProps:{id:l,data:t.data},label:e.formatGroupLabel(t.data)}),t.options.map((function(e){return O(e,"".concat(c,"-").concat(e.index))})))}if("option"===t.type)return O(t,"".concat(t.index))}));else if(v){var E=g({inputValue:z});if(null===E)return null;S=a.createElement(s,f,E)}else{var T=C({inputValue:z});if(null===T)return null;S=a.createElement(l,f,T)}var A={minMenuHeight:m,maxMenuHeight:y,menuPlacement:w,menuPosition:k,menuShouldScrollIntoView:M},L=a.createElement(YA,_E({},f,A),(function(t){var n=t.ref,r=t.placerProps,c=r.placement,s=r.maxHeight;return(a.createElement(o,_E({},f,A,{innerRef:n,innerProps:{onMouseDown:e.onMenuMouseDown,onMouseMove:e.onMenuMouseMove,id:e.getElementId("listbox")},isLoading:v,placement:c}),a.createElement(QL,{captureEnabled:p,onTopArrive:_,onBottomArrive:q,lockEnabled:j},(function(t){return a.createElement(i,_E({},f,{innerRef:function(n){e.getMenuListRef(n),t(n)},isLoading:v,maxHeight:s,focusedOption:d}),S)}))))}));return x||"fixed"===k?a.createElement(c,_E({},f,{appendTo:x,controlElement:this.controlRef,menuPlacement:w,menuPosition:k}),L):L}},{key:"renderFormField",value:function(){var e=this,t=this.props,n=t.delimiter,r=t.isDisabled,o=t.isMulti,i=t.name,c=this.state.selectValue;if(i&&!r){if(o){if(n){var s=c.map((function(t){return e.getOptionValue(t)})).join(n);return(a.createElement("input",{name:i,type:"hidden",value:s}))}var l=c.length>0?c.map((function(t,n){return a.createElement("input",{key:"i-".concat(n),name:i,type:"hidden",value:e.getOptionValue(t)})})):a.createElement("input",{name:i,type:"hidden"});return(a.createElement("div",null,l))}var u=c[0]?this.getOptionValue(c[0]):"";return(a.createElement("input",{name:i,type:"hidden",value:u}))}}},{key:"renderLiveRegion",value:function(){var e=this.commonProps,t=this.state,n=t.ariaSelection,r=t.focusedOption,o=t.focusedValue,i=t.isFocused,c=t.selectValue,s=this.getFocusableOptions();return a.createElement(_L,_E({},e,{id:this.getElementId("live-region"),ariaSelection:n,focusedOption:r,focusedValue:o,isFocused:i,selectValue:c,focusableOptions:s}))}},{key:"render",value:function(){var e=this.getComponents(),t=e.Control,n=e.IndicatorsContainer,r=e.SelectContainer,o=e.ValueContainer,i=this.props,c=i.className,s=i.id,l=i.isDisabled,u=i.menuIsOpen,f=this.state.isFocused,d=this.commonProps=this.getCommonProps();return a.createElement(r,_E({},d,{className:c,innerProps:{id:s,onKeyDown:this.onKeyDown},isDisabled:l,isFocused:f}),this.renderLiveRegion(),a.createElement(t,_E({},d,{innerRef:this.getControlRef,innerProps:{onMouseDown:this.onControlMouseDown,onTouchEnd:this.onControlTouchEnd},isDisabled:l,isFocused:f,menuIsOpen:u}),a.createElement(o,_E({},d,{isDisabled:l}),this.renderPlaceholderOrValue(),this.renderInput()),a.createElement(n,_E({},d,{isDisabled:l}),this.renderClearIndicator(),this.renderLoadingIndicator(),this.renderIndicatorSeparator(),this.renderDropdownIndicator())),this.renderMenu(),this.renderFormField())}}],[{key:"getDerivedStateFromProps",value:function(e,t){var n=t.prevProps,r=t.clearFocusValueOnUpdate,o=t.inputIsHiddenAfterUpdate,i=t.ariaSelection,a=t.isFocused,c=t.prevWasFocused,s=e.options,l=e.value,u=e.menuIsOpen,f=e.inputValue,d=e.isMulti,h=OA(l),p={};if(n&&(l!==n.value||s!==n.options||u!==n.menuIsOpen||f!==n.inputValue)){var z=u?function(e,t){return iH(oH(e,t))}(e,h):[],v=r?function(e,t){var n=e.focusedValue,r=e.selectValue.indexOf(n);if(r>-1){if(t.indexOf(n)>-1)return n;if(r-1?n:t[0]}(t,z),focusedValue:v,clearFocusValueOnUpdate:!1}}var g=null!=o&&e!==n?{inputIsHidden:o,inputIsHiddenAfterUpdate:void 0}:{},m=i,y=a&&c;return a&&!y&&(m={value:FA(d,h,h[0]||null),options:h,action:"initial-input-focus"},y=!c),"initial-input-focus"===(null===i||void 0===i?void 0:i.action)&&(m=null),kA(kA(kA({},p),g),{},{prevProps:e,ariaSelection:m,prevWasFocused:y})}}]),n}(a.Component);pH.defaultProps=nH;n(420),n(424),n(426),n(430),n(431),n(432);var zH,vH=Object(a.forwardRef)((function(e,t){var n=function(e){var t=e.defaultInputValue,n=void 0===t?"":t,r=e.defaultMenuIsOpen,o=void 0!==r&&r,i=e.defaultValue,c=void 0===i?null:i,s=e.inputValue,l=e.menuIsOpen,u=e.onChange,f=e.onInputChange,d=e.onMenuClose,h=e.onMenuOpen,p=e.value,z=lA(e,kL),v=dA(Object(a.useState)(void 0!==s?s:n),2),g=v[0],m=v[1],y=dA(Object(a.useState)(void 0!==l?l:o),2),b=y[0],w=y[1],k=dA(Object(a.useState)(void 0!==p?p:c),2),x=k[0],j=k[1],M=Object(a.useCallback)((function(e,t){"function"===typeof u&&u(e,t),j(e)}),[u]),C=Object(a.useCallback)((function(e,t){var n;"function"===typeof f&&(n=f(e,t)),m(void 0!==n?n:e)}),[f]),_=Object(a.useCallback)((function(){"function"===typeof h&&h(),w(!0)}),[h]),q=Object(a.useCallback)((function(){"function"===typeof d&&d(),w(!1)}),[d]),S=void 0!==s?s:g,O=void 0!==l?l:b,E=void 0!==p?p:x;return kA(kA({},z),{},{inputValue:S,menuIsOpen:O,onChange:M,onInputChange:C,onMenuClose:q,onMenuOpen:_,value:E})}(e);return(a.createElement(pH,_E({ref:t},n)))})),gH=(a.Component,vH),mH=function(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e},yH=function(){return(yH=Object.assign||function(e){for(var t,n=1,r=arguments.length;nt},eq:function(e,t){return e===t},lt:function(e,t){return e1?t-1:0),r=1;r0?" Args: "+n.join(", "):""))}var M=function(){function e(e){this.groupSizes=new Uint32Array(512),this.length=512,this.tag=e}var t=e.prototype;return t.indexOfGroup=function(e){for(var t=0,n=0;n=this.groupSizes.length){for(var n=this.groupSizes,r=n.length,o=r;e>=o;)(o<<=1)<0&&j(16,""+e);this.groupSizes=new Uint32Array(o),this.groupSizes.set(n),this.length=o;for(var i=r;i=this.length||0===this.groupSizes[e])return t;for(var n=this.groupSizes[e],r=this.indexOfGroup(e),o=r+n,i=r;i=q&&(q=t+1),C.set(e,t),_.set(t,e)},T="style["+w+'][data-styled-version="5.3.5"]',A=new RegExp("^"+w+'\\.g(\\d+)\\[id="([\\w\\d-]+)"\\].*?"([^"]*)'),L=function(e,t,n){for(var r,o=n.split(","),i=0,a=o.length;i=0;n--){var r=t[n];if(r&&1===r.nodeType&&r.hasAttribute(w))return r}}(n),i=void 0!==o?o.nextSibling:null;r.setAttribute(w,"active"),r.setAttribute("data-styled-version","5.3.5");var a=D();return a&&r.setAttribute("nonce",a),n.insertBefore(r,i),r},V=function(){function e(e){var t=this.element=P(e);t.appendChild(document.createTextNode("")),this.sheet=function(e){if(e.sheet)return e.sheet;for(var t=document.styleSheets,n=0,r=t.length;n=0){var n=document.createTextNode(t),r=this.nodes[e];return this.element.insertBefore(n,r||null),this.length++,!0}return!1},t.deleteRule=function(e){this.element.removeChild(this.nodes[e]),this.length--},t.getRule=function(e){return e0&&(l+=e+",")})),r+=""+c+s+'{content:"'+l+'"}/*!sc*/\n'}}}return r}(this)},e}(),U=/(a)(d)/gi,W=function(e){return String.fromCharCode(e+(e>25?39:97))};function G(e){var t,n="";for(t=Math.abs(e);t>52;t=t/52|0)n=W(t%52)+n;return(W(t%52)+n).replace(U,"$1-$2")}var Y=function(e,t){for(var n=t.length;n;)e=33*e^t.charCodeAt(--n);return e},$=function(e){return Y(5381,e)};function Z(e){for(var t=0;t>>0);if(!t.hasNameForId(r,a)){var c=n(i,"."+a,void 0,r);t.insertRules(r,a,c)}o.push(a),this.staticRulesId=a}else{for(var s=this.rules.length,l=Y(this.baseHash,n.hash),u="",f=0;f>>0);if(!t.hasNameForId(r,z)){var v=n(u,"."+z,void 0,r);t.insertRules(r,z,v)}o.push(z)}}return o.join(" ")},e}(),Q=/^\s*\/\/.*$/gm,J=[":","[",".","#"];function ee(e){var t,n,r,o,i=void 0===e?g:e,a=i.options,c=void 0===a?g:a,l=i.plugins,u=void 0===l?v:l,f=new s.a(c),d=[],h=function(e){function t(t){if(t)try{e(t+"}")}catch(e){}}return function(n,r,o,i,a,c,s,l,u,f){switch(n){case 1:if(0===u&&64===r.charCodeAt(0))return e(r+";"),"";break;case 2:if(0===l)return r+"/*|*/";break;case 3:switch(l){case 102:case 112:return e(o[0]+r),"";default:return r+(0===f?"/*|*/":"")}case-2:r.split("/*|*/}").forEach(t)}}}((function(e){d.push(e)})),p=function(e,r,i){return 0===r&&-1!==J.indexOf(i[n.length])||i.match(o)?e:"."+t};function z(e,i,a,c){void 0===c&&(c="&");var s=e.replace(Q,""),l=i&&a?a+" "+i+" { "+s+" }":s;return t=c,n=i,r=new RegExp("\\"+n+"\\b","g"),o=new RegExp("(\\"+n+"\\b){2,}"),f(a||!i?"":i,l)}return f.use([].concat(u,[function(e,t,o){2===e&&o.length&&o[0].lastIndexOf(n)>0&&(o[0]=o[0].replace(r,p))},h,function(e){if(-2===e){var t=d;return d=[],t}}])),z.hash=u.length?u.reduce((function(e,t){return t.name||j(15),Y(e,t.name)}),5381).toString():"",z}var te=i.a.createContext(),ne=(te.Consumer,i.a.createContext()),re=(ne.Consumer,new B),oe=ee();function ie(){return Object(o.useContext)(te)||re}function ae(){return Object(o.useContext)(ne)||oe}function ce(e){var t=Object(o.useState)(e.stylisPlugins),n=t[0],r=t[1],a=ie(),s=Object(o.useMemo)((function(){var t=a;return e.sheet?t=e.sheet:e.target&&(t=t.reconstructWithOptions({target:e.target},!1)),e.disableCSSOMInjection&&(t=t.reconstructWithOptions({useCSSOMInjection:!1})),t}),[e.disableCSSOMInjection,e.sheet,e.target]),l=Object(o.useMemo)((function(){return ee({options:{prefix:!e.disableVendorPrefixes},plugins:n})}),[e.disableVendorPrefixes,n]);return Object(o.useEffect)((function(){c()(n,e.stylisPlugins)||r(e.stylisPlugins)}),[e.stylisPlugins]),i.a.createElement(te.Provider,{value:s},i.a.createElement(ne.Provider,{value:l},e.children))}var se=function(){function e(e,t){var n=this;this.inject=function(e,t){void 0===t&&(t=oe);var r=n.name+t.hash;e.hasNameForId(n.id,r)||e.insertRules(n.id,r,t(n.rules,r,"@keyframes"))},this.toString=function(){return j(12,String(n.name))},this.name=e,this.id="sc-keyframes-"+e,this.rules=t}return e.prototype.getName=function(e){return void 0===e&&(e=oe),this.name+e.hash},e}(),le=/([A-Z])/,ue=/([A-Z])/g,fe=/^ms-/,de=function(e){return"-"+e.toLowerCase()};function he(e){return le.test(e)?e.replace(ue,de).replace(fe,"-ms-"):e}var pe=function(e){return null==e||!1===e||""===e};function ze(e,t,n,r){if(Array.isArray(e)){for(var o,i=[],a=0,c=e.length;a1?t-1:0),r=1;r?@[\\\]^`{|}~-]+/g,be=/(^-|-$)/g;function we(e){return e.replace(ye,"-").replace(be,"")}var ke=function(e){return G($(e)>>>0)};function xe(e){return"string"==typeof e&&!0}var je=function(e){return"function"==typeof e||"object"==typeof e&&null!==e&&!Array.isArray(e)},Me=function(e){return"__proto__"!==e&&"constructor"!==e&&"prototype"!==e};function Ce(e,t,n){var r=e[n];je(t)&&je(r)?_e(r,t):e[n]=t}function _e(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r=0||(o[n]=e[n]);return o}(t,["componentId"]),i=r&&r+"-"+(xe(e)?e:we(y(e)));return Ee(e,h({},o,{attrs:k,componentId:i}),n)},Object.defineProperty(j,"defaultProps",{get:function(){return this._foldedDefaultProps},set:function(t){this._foldedDefaultProps=r?_e({},e.defaultProps,t):t}}),j.toString=function(){return"."+j.styledComponentId},a&&d()(j,e,{attrs:!0,componentStyle:!0,displayName:!0,foldedComponentIds:!0,shouldForwardProp:!0,styledComponentId:!0,target:!0,withComponent:!0}),j}var Te=function(e){return function e(t,n,o){if(void 0===o&&(o=g),!Object(r.isValidElementType)(n))return j(1,String(n));var i=function(){return t(n,o,ge.apply(void 0,arguments))};return i.withConfig=function(r){return e(t,n,h({},o,{},r))},i.attrs=function(r){return e(t,n,h({},o,{attrs:Array.prototype.concat(o.attrs,r).filter(Boolean)}))},i}(Ee,e)};["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","big","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","keygen","label","legend","li","link","main","map","mark","marquee","menu","menuitem","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rp","rt","ruby","s","samp","script","section","select","small","source","span","strong","style","sub","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","title","tr","track","u","ul","var","video","wbr","circle","clipPath","defs","ellipse","foreignObject","g","image","line","linearGradient","marker","mask","path","pattern","polygon","polyline","radialGradient","rect","stop","svg","text","textPath","tspan"].forEach((function(e){Te[e]=Te(e)}));!function(){function e(e,t){this.rules=e,this.componentId=t,this.isStatic=Z(e),B.registerId(this.componentId+1)}var t=e.prototype;t.createStyles=function(e,t,n,r){var o=r(ze(this.rules,t,n,r).join(""),""),i=this.componentId+e;n.insertRules(i,i,o)},t.removeStyles=function(e,t){t.clearRules(this.componentId+e)},t.renderStyles=function(e,t,n,r){e>2&&B.registerId(this.componentId+e),this.removeStyles(e,n),this.createStyles(e,t,n,r)}}();function Ae(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r"+t+""},this.getStyleTags=function(){return e.sealed?j(2):e._emitSheetCSS()},this.getStyleElement=function(){var t;if(e.sealed)return j(2);var n=((t={})[w]="",t["data-styled-version"]="5.3.5",t.dangerouslySetInnerHTML={__html:e.instance.toString()},t),r=D();return r&&(n.nonce=r),[i.a.createElement("style",h({},n,{key:"sc-0-0"}))]},this.seal=function(){e.sealed=!0},this.instance=new B({isServer:!0}),this.sealed=!1}var t=e.prototype;t.collectStyles=function(e){return this.sealed?j(2):i.a.createElement(ce,{sheet:this.instance},e)},t.interleaveWithNodeStream=function(e){return j(3)}}();t.d=Te}).call(this,n(93))},function(e,t,n){"use strict";var r=n(162);var o=n(163);function i(e,t){return Object(r.a)(e)||function(e,t){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e)){var n=[],r=!0,o=!1,i=void 0;try{for(var a,c=e[Symbol.iterator]();!(r=(a=c.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(s){o=!0,i=s}finally{try{r||null==c.return||c.return()}finally{if(o)throw i}}return n}}(e,t)||Object(o.a)()}n.d(t,"a",(function(){return i}))},function(e,t,n){"use strict";function r(e,t){if(t.length1?"s":"")+" required, but only "+t.length+" present")}n.d(t,"a",(function(){return r}))},function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var r=n(14);function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0&&e.splice(n,1)}function p(e){var t=!1;return function(){t||(t=!0,e())}}var z=function(e){throw e},v=function(e){return{value:e,done:!0}};function g(e,t,n){void 0===t&&(t=z),void 0===n&&(n="iterator");var r={meta:{name:n},next:e,throw:t,return:v,isSagaIterator:!0};return"undefined"!==typeof Symbol&&(r[Symbol.iterator]=function(){return r}),r}function m(e,t){var n=t.sagaStack;console.error(e),console.error(n)}var y=function(e){return new Error("\n redux-saga: Error checking hooks detected an inconsistent state. This is likely a bug\n in redux-saga code and not yours. Thanks for reporting this in the project's github repo.\n Error: "+e+"\n")},b=function(e){return Array.apply(null,new Array(e))},w=function(e){return function(t){return e(Object.defineProperty(t,r.f,{value:!0}))}},k=function(e){return e===r.k},x=function(e){return e===r.j},j=function(e){return k(e)||x(e)};function M(e,t){var n=Object.keys(e),r=n.length;var o,a=0,c=Object(i.a)(e)?b(r):{},l={};return n.forEach((function(e){var n=function(n,i){o||(i||j(n)?(t.cancel(),t(n,i)):(c[e]=n,++a===r&&(o=!0,t(c))))};n.cancel=s,l[e]=n})),t.cancel=function(){o||(o=!0,n.forEach((function(e){return l[e].cancel()})))},l}function C(e){return{name:e.name||"anonymous",location:_(e)}}function _(e){return e[r.g]}var q="Channel's Buffer overflow!",S=1,O=3,E=4,T={isEmpty:c,put:s,take:s};function A(e,t){void 0===e&&(e=10);var n=new Array(e),r=0,o=0,i=0,a=function(t){n[o]=t,o=(o+1)%e,r++},c=function(){if(0!=r){var t=n[i];return n[i]=null,r--,i=(i+1)%e,t}},s=function(){for(var e=[];r;)e.push(c());return e};return{isEmpty:function(){return 0==r},put:function(c){var l;if(r1?t-1:0),r=1;r1?t-1:0),r=1;r1?t-1:0),r=1;r1?t-1:0),r=1;r2?n-2:0),i=2;i2?n-2:0),i=2;i1?t-1:0),r=1;r1&&void 0!==arguments[1]?arguments[1]:r,n=null,i=null;return function(){return o(t,n,arguments)||(i=e.apply(null,arguments)),n=arguments,i}}))},,function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var r=n(31),o=n(38);function i(e){return function t(n,i){switch(arguments.length){case 0:return t;case 1:return Object(o.a)(n)?t:Object(r.a)((function(t){return e(n,t)}));default:return Object(o.a)(n)&&Object(o.a)(i)?t:Object(o.a)(n)?Object(r.a)((function(t){return e(t,i)})):Object(o.a)(i)?Object(r.a)((function(t){return e(n,t)})):e(n,i)}}}},function(e,t,n){"use strict";function r(e,t){if(t.length1?"s":"")+" required, but only "+t.length+" present")}n.d(t,"a",(function(){return r}))},function(e,t,n){e.exports=n(341)},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"createAction",{enumerable:!0,get:function(){return o.default}}),Object.defineProperty(t,"createReducer",{enumerable:!0,get:function(){return i.default}}),Object.defineProperty(t,"assignAll",{enumerable:!0,get:function(){return a.default}}),Object.defineProperty(t,"bindAll",{enumerable:!0,get:function(){return c.default}}),Object.defineProperty(t,"batch",{enumerable:!0,get:function(){return s.default}}),Object.defineProperty(t,"disbatch",{enumerable:!0,get:function(){return l.default}}),Object.defineProperty(t,"loggers",{enumerable:!0,get:function(){return u.default}}),Object.defineProperty(t,"asError",{enumerable:!0,get:function(){return f.default}}),t.types=void 0;var r=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){var r=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(e,n):{};r.get||r.set?Object.defineProperty(t,n,r):t[n]=e[n]}return t.default=e,t}(n(230)),o=d(n(231)),i=d(n(333)),a=d(n(334)),c=d(n(335)),s=d(n(151)),l=d(n(336)),u=d(n(337)),f=d(n(339));function d(e){return e&&e.__esModule?e:{default:e}}var h=r;t.types=h},function(e,t,n){"use strict";n.d(t,"a",(function(){return s})),n.d(t,"b",(function(){return h})),n.d(t,"c",(function(){return g})),n.d(t,"d",(function(){return a})),n.d(t,"e",(function(){return f})),n.d(t,"f",(function(){return v})),n.d(t,"g",(function(){return i})),n.d(t,"h",(function(){return l})),n.d(t,"i",(function(){return d})),n.d(t,"j",(function(){return u})),n.d(t,"k",(function(){return c})),n.d(t,"l",(function(){return p})),n.d(t,"m",(function(){return z})),n.d(t,"n",(function(){return o}));var r=n(33),o=function(e){return null===e||void 0===e},i=function(e){return null!==e&&void 0!==e},a=function(e){return"function"===typeof e},c=function(e){return"string"===typeof e},s=Array.isArray,l=function(e){return e&&!s(e)&&"object"===typeof e},u=function(e){return e&&a(e.then)},f=function(e){return e&&a(e.next)&&a(e.throw)},d=function e(t){return t&&(c(t)||z(t)||a(t)||s(t)&&t.every(e))},h=function(e){return e&&a(e.take)&&a(e.close)},p=function(e){return a(e)&&e.hasOwnProperty("toString")},z=function(e){return Boolean(e)&&"function"===typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype},v=function(e){return h(e)&&e[r.e]},g=function(e){return e&&e[r.c]}},function(e,t,n){"use strict";n.d(t,"a",(function(){return o}));var r=n(20);function o(e){Object(r.a)(1,arguments);var t=Object.prototype.toString.call(e);return e instanceof Date||"object"===typeof e&&"[object Date]"===t?new Date(e.getTime()):"number"===typeof e||"[object Number]"===t?new Date(e):("string"!==typeof e&&"[object String]"!==t||"undefined"===typeof console||(console.warn("Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://git.io/fjule"),console.warn((new Error).stack)),new Date(NaN))}},,function(e,t,n){"use strict";function r(e){if(null===e||!0===e||!1===e)return NaN;var t=Number(e);return isNaN(t)?t:t<0?Math.ceil(t):Math.floor(t)}n.d(t,"a",(function(){return r}))},function(e,t,n){"use strict";var r=n(0),o=n.n(r),i=n(13),a=n.n(i),c=o.a.createContext(null);var s=function(e){e()},l=function(){return s},u=null,f={notify:function(){}};var d=function(){function e(e,t){this.store=e,this.parentSub=t,this.unsubscribe=null,this.listeners=f,this.handleChangeWrapper=this.handleChangeWrapper.bind(this)}var t=e.prototype;return t.addNestedSub=function(e){return this.trySubscribe(),this.listeners.subscribe(e)},t.notifyNestedSubs=function(){this.listeners.notify()},t.handleChangeWrapper=function(){this.onStateChange&&this.onStateChange()},t.isSubscribed=function(){return Boolean(this.unsubscribe)},t.trySubscribe=function(){this.unsubscribe||(this.unsubscribe=this.parentSub?this.parentSub.addNestedSub(this.handleChangeWrapper):this.store.subscribe(this.handleChangeWrapper),this.listeners=function(){var e=l(),t=[],n=[];return{clear:function(){n=u,t=u},notify:function(){var r=t=n;e((function(){for(var e=0;e. You may also pass a {context : MyContext} option to connect");var L=T;return function(t){var n=t.displayName||t.name||"Component",i=a(n),c=Object(z.a)({},A,{getDisplayName:a,methodName:l,renderCountProp:f,shouldHandleStateChanges:p,storeKey:y,displayName:i,wrappedComponentName:n,WrappedComponent:t}),s=A.pure;var u=s?r.useMemo:function(e){return e()};function h(n){var a=Object(r.useMemo)((function(){var e=n.forwardedRef,t=Object(v.a)(n,["forwardedRef"]);return[n.context,e,t]}),[n]),s=a[0],l=a[1],f=a[2],h=Object(r.useMemo)((function(){return s&&s.Consumer&&Object(w.isContextConsumer)(o.a.createElement(s.Consumer,null))?s:L}),[s,L]),g=Object(r.useContext)(h),m=Boolean(n.store)&&Boolean(n.store.getState)&&Boolean(n.store.dispatch),y=Boolean(g)&&Boolean(g.store);b()(m||y,'Could not find "store" in the context of "'+i+'". Either wrap the root component in a , or pass a custom React context provider to and the corresponding React context consumer to '+i+" in connect options.");var _=m?n.store:g.store,q=Object(r.useMemo)((function(){return function(t){return e(t.dispatch,c)}(_)}),[_]),S=Object(r.useMemo)((function(){if(!p)return j;var e=new d(_,m?null:g.subscription),t=e.notifyNestedSubs.bind(e);return[e,t]}),[_,m,g]),O=S[0],E=S[1],T=Object(r.useMemo)((function(){return m?g:Object(z.a)({},g,{subscription:O})}),[m,g,O]),A=Object(r.useReducer)(M,x,C),H=A[0][0],D=A[1];if(H&&H.error)throw H.error;var P=Object(r.useRef)(),V=Object(r.useRef)(f),R=Object(r.useRef)(),I=Object(r.useRef)(!1),N=u((function(){return R.current&&f===V.current?R.current:q(_.getState(),f)}),[_,H,f]);k((function(){V.current=f,P.current=N,I.current=!1,R.current&&(R.current=null,E())})),k((function(){if(p){var e=!1,t=null,n=function(){if(!e){var n,r,o=_.getState();try{n=q(o,V.current)}catch(i){r=i,t=i}r||(t=null),n===P.current?I.current||E():(P.current=n,R.current=n,I.current=!0,D({type:"STORE_UPDATED",payload:{error:r}}))}};O.onStateChange=n,O.trySubscribe(),n();return function(){if(e=!0,O.tryUnsubscribe(),O.onStateChange=null,t)throw t}}}),[_,O,q]);var F=Object(r.useMemo)((function(){return o.a.createElement(t,Object(z.a)({},N,{ref:l}))}),[l,t,N]);return Object(r.useMemo)((function(){return p?o.a.createElement(h.Provider,{value:T},F):F}),[h,F,T])}var g=s?o.a.memo(h):h;if(g.WrappedComponent=t,g.displayName=i,O){var _=o.a.forwardRef((function(e,t){return o.a.createElement(g,Object(z.a)({},e,{forwardedRef:t}))}));return _.displayName=i,_.WrappedComponent=t,m()(_,t)}return m()(g,t)}}var q=Object.prototype.hasOwnProperty;function S(e,t){return e===t?0!==e||0!==t||1/e===1/t:e!==e&&t!==t}function O(e,t){if(S(e,t))return!0;if("object"!==typeof e||null===e||"object"!==typeof t||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(var o=0;o=0;r--){var o=t[r](e);if(o)return o}return function(t,r){throw new Error("Invalid value of type "+typeof e+" for "+n+" argument when connecting component "+r.wrappedComponentName+".")}}function B(e,t){return e===t}!function(e){var t=void 0===e?{}:e,n=t.connectHOC,r=void 0===n?_:n,o=t.mapStateToPropsFactories,i=void 0===o?D:o,a=t.mapDispatchToPropsFactories,c=void 0===a?H:a,s=t.mergePropsFactories,l=void 0===s?V:s,u=t.selectorFactory,f=void 0===u?N:u}();function U(){var e=Object(r.useContext)(c);return b()(e,"could not find react-redux context value; please ensure the component is wrapped in a "),e}function W(e){void 0===e&&(e=c);var t=e===c?U:function(){return Object(r.useContext)(e)};return function(){return t().store}}var G=W();function Y(e){void 0===e&&(e=c);var t=e===c?G:W(e);return function(){return t().dispatch}}var $=Y(),Z=function(e,t){return e===t};function X(e){void 0===e&&(e=c);var t=e===c?U:function(){return Object(r.useContext)(e)};return function(e,n){void 0===n&&(n=Z),b()(e,"You must pass a selector to useSelectors");var o=t();return function(e,t,n,o){var i,a=Object(r.useReducer)((function(e){return e+1}),0)[1],c=Object(r.useMemo)((function(){return new d(n,o)}),[n,o]),s=Object(r.useRef)(),l=Object(r.useRef)(),u=Object(r.useRef)();try{i=e!==l.current||s.current?e(n.getState()):u.current}catch(h){var f="An error occurred while selecting the store state: "+h.message+".";throw s.current&&(f+="\nThe error may be correlated with this previous error:\n"+s.current.stack+"\n\nOriginal stack trace:"),new Error(f)}return k((function(){l.current=e,u.current=i,s.current=void 0})),k((function(){function e(){try{var e=l.current(n.getState());if(t(e,u.current))return;u.current=e}catch(h){s.current=h}a({})}return c.onStateChange=e,c.trySubscribe(),e(),function(){return c.tryUnsubscribe()}}),[n,c]),i}(e,n,o.store,o.subscription)}}var K,Q=X(),J=n(30);n.d(t,"a",(function(){return p})),n.d(t,"d",(function(){return $})),n.d(t,"b",(function(){return Y})),n.d(t,"e",(function(){return Q})),n.d(t,"c",(function(){return X})),n.d(t,"f",(function(){return G})),K=J.unstable_batchedUpdates,s=K},,function(e,t,n){"use strict";function r(){return(r=Object.assign||function(e){for(var t=1;t=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}}}},function(e,t,n){"use strict";n.d(t,"a",(function(){return o})),n.d(t,"b",(function(){return i})),n.d(t,"c",(function(){return a})),n.d(t,"d",(function(){return c})),n.d(t,"e",(function(){return s})),n.d(t,"f",(function(){return l})),n.d(t,"g",(function(){return p})),n.d(t,"h",(function(){return u})),n.d(t,"i",(function(){return f})),n.d(t,"j",(function(){return d})),n.d(t,"k",(function(){return h}));var r=function(e){return"@@redux-saga/"+e},o=r("CANCEL_PROMISE"),i=r("CHANNEL_END"),a=r("IO"),c=r("MATCH"),s=r("MULTICAST"),l=r("SAGA_ACTION"),u=r("SELF_CANCELLATION"),f=r("TASK"),d=r("TASK_CANCEL"),h=r("TERMINATE"),p=r("LOCATION")},function(e,t,n){var r;!function(){"use strict";var n={}.hasOwnProperty;function o(){for(var e=[],t=0;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}n.d(t,"a",(function(){return r}))},function(e,t,n){"use strict";function r(e){return null!=e&&"object"===typeof e&&!0===e["@@functional/placeholder"]}n.d(t,"a",(function(){return r}))},,function(e,t,n){"use strict";n.d(t,"c",(function(){return i})),n.d(t,"e",(function(){return a})),n.d(t,"d",(function(){return c})),n.d(t,"b",(function(){return r})),n.d(t,"a",(function(){return o}));var r,o,i={ANCHOR:"mdc-menu-surface--anchor",ANIMATING_CLOSED:"mdc-menu-surface--animating-closed",ANIMATING_OPEN:"mdc-menu-surface--animating-open",FIXED:"mdc-menu-surface--fixed",OPEN:"mdc-menu-surface--open",ROOT:"mdc-menu-surface"},a={CLOSED_EVENT:"MDCMenuSurface:closed",OPENED_EVENT:"MDCMenuSurface:opened",FOCUSABLE_ELEMENTS:["button:not(:disabled)",'[href]:not([aria-disabled="true"])',"input:not(:disabled)","select:not(:disabled)","textarea:not(:disabled)",'[tabindex]:not([tabindex="-1"]):not([aria-disabled="true"])'].join(", ")},c={TRANSITION_OPEN_DURATION:120,TRANSITION_CLOSE_DURATION:75,MARGIN_TO_EDGE:32,ANCHOR_TO_MENU_SURFACE_WIDTH_RATIO:.67};!function(e){e[e.BOTTOM=1]="BOTTOM",e[e.CENTER=2]="CENTER",e[e.RIGHT=4]="RIGHT",e[e.FLIP_RTL=8]="FLIP_RTL"}(r||(r={})),function(e){e[e.TOP_LEFT=0]="TOP_LEFT",e[e.TOP_RIGHT=4]="TOP_RIGHT",e[e.BOTTOM_LEFT=1]="BOTTOM_LEFT",e[e.BOTTOM_RIGHT=5]="BOTTOM_RIGHT",e[e.TOP_START=8]="TOP_START",e[e.TOP_END=12]="TOP_END",e[e.BOTTOM_START=9]="BOTTOM_START",e[e.BOTTOM_END=13]="BOTTOM_END"}(o||(o={}))},,,function(e,t,n){"use strict";var r=n(53);var o=n(106),i=n(134);var a=n(78),c=n(77);function s(e){return e?1===e.length?e[0]:function(t){return e.reduce((function(e,t){return t(e)}),t)}:c.a}var l=n(61);n.d(t,"a",(function(){return u}));var u=function(){function e(e){this._isScalar=!1,e&&(this._subscribe=e)}return e.prototype.lift=function(t){var n=new e;return n.source=this,n.operator=t,n},e.prototype.subscribe=function(e,t,n){var a=this.operator,c=function(e,t,n){if(e){if(e instanceof r.a)return e;if(e[o.a])return e[o.a]()}return e||t||n?new r.a(e,t,n):new r.a(i.a)}(e,t,n);if(a?c.add(a.call(c,this.source)):c.add(this.source||l.a.useDeprecatedSynchronousErrorHandling&&!c.syncErrorThrowable?this._subscribe(c):this._trySubscribe(c)),l.a.useDeprecatedSynchronousErrorHandling&&c.syncErrorThrowable&&(c.syncErrorThrowable=!1,c.syncErrorThrown))throw c.syncErrorValue;return c},e.prototype._trySubscribe=function(e){try{return this._subscribe(e)}catch(t){l.a.useDeprecatedSynchronousErrorHandling&&(e.syncErrorThrown=!0,e.syncErrorValue=t),!function(e){for(;e;){var t=e,n=t.closed,o=t.destination,i=t.isStopped;if(n||i)return!1;e=o&&o instanceof r.a?o:null}return!0}(e)?console.warn(t):e.error(t)}},e.prototype.forEach=function(e,t){var n=this;return new(t=f(t))((function(t,r){var o;o=n.subscribe((function(t){try{e(t)}catch(n){r(n),o&&o.unsubscribe()}}),r,t)}))},e.prototype._subscribe=function(e){var t=this.source;return t&&t.subscribe(e)},e.prototype[a.a]=function(){return this},e.prototype.pipe=function(){for(var e=[],t=0;t=0||(o[n]=e[n]);return o}n.d(t,"a",(function(){return r}))},function(e,t,n){"use strict";n.d(t,"a",(function(){return v})),n.d(t,"b",(function(){return f})),n.d(t,"c",(function(){return l})),n.d(t,"d",(function(){return z})),n.d(t,"e",(function(){return c}));var r=n(220),o=function(){return Math.random().toString(36).substring(7).split("").join(".")},i={INIT:"@@redux/INIT"+o(),REPLACE:"@@redux/REPLACE"+o(),PROBE_UNKNOWN_ACTION:function(){return"@@redux/PROBE_UNKNOWN_ACTION"+o()}};function a(e){if("object"!==typeof e||null===e)return!1;for(var t=e;null!==Object.getPrototypeOf(t);)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t}function c(e,t,n){var o;if("function"===typeof t&&"function"===typeof n||"function"===typeof n&&"function"===typeof arguments[3])throw new Error("It looks like you are passing several store enhancers to createStore(). This is not supported. Instead, compose them together to a single function.");if("function"===typeof t&&"undefined"===typeof n&&(n=t,t=void 0),"undefined"!==typeof n){if("function"!==typeof n)throw new Error("Expected the enhancer to be a function.");return n(c)(e,t)}if("function"!==typeof e)throw new Error("Expected the reducer to be a function.");var s=e,l=t,u=[],f=u,d=!1;function h(){f===u&&(f=u.slice())}function p(){if(d)throw new Error("You may not call store.getState() while the reducer is executing. The reducer has already received the state as an argument. Pass it down from the top reducer instead of reading it from the store.");return l}function z(e){if("function"!==typeof e)throw new Error("Expected the listener to be a function.");if(d)throw new Error("You may not call store.subscribe() while the reducer is executing. If you would like to be notified after the store has been updated, subscribe from a component and invoke store.getState() in the callback to access the latest state. See https://redux.js.org/api-reference/store#subscribe(listener) for more details.");var t=!0;return h(),f.push(e),function(){if(t){if(d)throw new Error("You may not unsubscribe from a store listener while the reducer is executing. See https://redux.js.org/api-reference/store#subscribe(listener) for more details.");t=!1,h();var n=f.indexOf(e);f.splice(n,1)}}}function v(e){if(!a(e))throw new Error("Actions must be plain objects. Use custom middleware for async actions.");if("undefined"===typeof e.type)throw new Error('Actions may not have an undefined "type" property. Have you misspelled a constant?');if(d)throw new Error("Reducers may not dispatch actions.");try{d=!0,l=s(l,e)}finally{d=!1}for(var t=u=f,n=0;n0;)a[i=r[o]]||(t[i]=e[i],a[i]=!0);e=Object.getPrototypeOf(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},kindOf:a,kindOfTest:c,endsWith:function(e,t,n){e=String(e),(void 0===n||n>e.length)&&(n=e.length),n-=t.length;var r=e.indexOf(t,n);return-1!==r&&r===n},toArray:function(e){if(!e)return null;var t=e.length;if(l(t))return null;for(var n=new Array(t);t-- >0;)n[t]=e[t];return n},isTypedArray:w,isFileList:v}},,,function(e,t,n){"use strict";n.d(t,"a",(function(){return u}));var r=n(32),o=n(107),i=n(134),a=n(54),c=n(106),s=n(61),l=n(90),u=function(e){function t(n,r,o){var a=e.call(this)||this;switch(a.syncErrorValue=null,a.syncErrorThrown=!1,a.syncErrorThrowable=!1,a.isStopped=!1,arguments.length){case 0:a.destination=i.a;break;case 1:if(!n){a.destination=i.a;break}if("object"===typeof n){n instanceof t?(a.syncErrorThrowable=n.syncErrorThrowable,a.destination=n,n.add(a)):(a.syncErrorThrowable=!0,a.destination=new f(a,n));break}default:a.syncErrorThrowable=!0,a.destination=new f(a,n,r,o)}return a}return r.b(t,e),t.prototype[c.a]=function(){return this},t.create=function(e,n,r){var o=new t(e,n,r);return o.syncErrorThrowable=!1,o},t.prototype.next=function(e){this.isStopped||this._next(e)},t.prototype.error=function(e){this.isStopped||(this.isStopped=!0,this._error(e))},t.prototype.complete=function(){this.isStopped||(this.isStopped=!0,this._complete())},t.prototype.unsubscribe=function(){this.closed||(this.isStopped=!0,e.prototype.unsubscribe.call(this))},t.prototype._next=function(e){this.destination.next(e)},t.prototype._error=function(e){this.destination.error(e),this.unsubscribe()},t.prototype._complete=function(){this.destination.complete(),this.unsubscribe()},t.prototype._unsubscribeAndRecycle=function(){var e=this._parentOrParents;return this._parentOrParents=null,this.unsubscribe(),this.closed=!1,this.isStopped=!1,this._parentOrParents=e,this},t}(a.a),f=function(e){function t(t,n,r,a){var c,s=e.call(this)||this;s._parentSubscriber=t;var l=s;return Object(o.a)(n)?c=n:n&&(c=n.next,r=n.error,a=n.complete,n!==i.a&&(l=Object.create(n),Object(o.a)(l.unsubscribe)&&s.add(l.unsubscribe.bind(l)),l.unsubscribe=s.unsubscribe.bind(s))),s._context=l,s._next=c,s._error=r,s._complete=a,s}return r.b(t,e),t.prototype.next=function(e){if(!this.isStopped&&this._next){var t=this._parentSubscriber;s.a.useDeprecatedSynchronousErrorHandling&&t.syncErrorThrowable?this.__tryOrSetError(t,this._next,e)&&this.unsubscribe():this.__tryOrUnsub(this._next,e)}},t.prototype.error=function(e){if(!this.isStopped){var t=this._parentSubscriber,n=s.a.useDeprecatedSynchronousErrorHandling;if(this._error)n&&t.syncErrorThrowable?(this.__tryOrSetError(t,this._error,e),this.unsubscribe()):(this.__tryOrUnsub(this._error,e),this.unsubscribe());else if(t.syncErrorThrowable)n?(t.syncErrorValue=e,t.syncErrorThrown=!0):Object(l.a)(e),this.unsubscribe();else{if(this.unsubscribe(),n)throw e;Object(l.a)(e)}}},t.prototype.complete=function(){var e=this;if(!this.isStopped){var t=this._parentSubscriber;if(this._complete){var n=function(){return e._complete.call(e._context)};s.a.useDeprecatedSynchronousErrorHandling&&t.syncErrorThrowable?(this.__tryOrSetError(t,n),this.unsubscribe()):(this.__tryOrUnsub(n),this.unsubscribe())}else this.unsubscribe()}},t.prototype.__tryOrUnsub=function(e,t){try{e.call(this._context,t)}catch(n){if(this.unsubscribe(),s.a.useDeprecatedSynchronousErrorHandling)throw n;Object(l.a)(n)}},t.prototype.__tryOrSetError=function(e,t,n){if(!s.a.useDeprecatedSynchronousErrorHandling)throw new Error("bad call");try{t.call(this._context,n)}catch(r){return s.a.useDeprecatedSynchronousErrorHandling?(e.syncErrorValue=r,e.syncErrorThrown=!0,!0):(Object(l.a)(r),!0)}return!1},t.prototype._unsubscribe=function(){var e=this._parentSubscriber;this._context=null,this._parentSubscriber=null,e.unsubscribe()},t}(u)},function(e,t,n){"use strict";var r=function(){return Array.isArray||function(e){return e&&"number"===typeof e.length}}(),o=n(168),i=n(107),a=function(){function e(e){return Error.call(this),this.message=e?e.length+" errors occurred during unsubscription:\n"+e.map((function(e,t){return t+1+") "+e.toString()})).join("\n "):"",this.name="UnsubscriptionError",this.errors=e,this}return e.prototype=Object.create(Error.prototype),e}();n.d(t,"a",(function(){return c}));var c=function(){function e(e){this.closed=!1,this._parentOrParents=null,this._subscriptions=null,e&&(this._unsubscribe=e)}var t;return e.prototype.unsubscribe=function(){var t;if(!this.closed){var n=this._parentOrParents,c=this._unsubscribe,l=this._subscriptions;if(this.closed=!0,this._parentOrParents=null,this._subscriptions=null,n instanceof e)n.remove(this);else if(null!==n)for(var u=0;u=0;)t=c[n],Object(o.a)(t,e)&&!l(r,t)&&(r[r.length]=t),n-=1;return r})):Object(r.a)((function(e){return Object(e)!==e?[]:Object.keys(e)}));t.a=u},function(e,t,n){"use strict";var r=Object.getOwnPropertySymbols,o=Object.prototype.hasOwnProperty,i=Object.prototype.propertyIsEnumerable;function a(e){if(null===e||void 0===e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(o){return!1}}()?Object.assign:function(e,t){for(var n,c,s=a(e),l=1;l8.64*1e15?NaN:function(e){var t=a(e);if(isNaN(t)||l(t,-0))return 0;if(isFinite(t))return t;var n=Math.floor(Math.abs(t));return t<0&&(n=-n),l(n,-0)?0:n}(e):NaN}function s(e){if(null==e)throw new TypeError("undefined/null cannot be converted to object");return Object(e)}function l(e,t){return Object.is?Object.is(e,t):e===t?0!==e||1/e===1/t:e!==e&&t!==t}function u(e){return new Array(e)}function f(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function d(e){return null===e?"Null":"undefined"===typeof e?"Undefined":"function"===typeof e||"object"===typeof e?"Object":"number"===typeof e?"Number":"boolean"===typeof e?"Boolean":"string"===typeof e?"String":"symbol"===typeof e?"Symbol":"bigint"===typeof e?"BigInt":void 0}n.r(t);var h=864e5;function p(e,t){return e-Math.floor(e/t)*t}function z(e){return Math.floor(e/h)}function v(e){return p(z(e)+4,7)}function g(e){return Date.UTC(e,0)/h}function m(e){return Date.UTC(e,0)}function y(e){return new Date(e).getUTCFullYear()}function b(e){return e%4!==0?365:e%100!==0?366:e%400!==0?365:366}function w(e){return z(e)-g(y(e))}function k(e){return 365===b(y(e))?0:1}function x(e){var t=w(e),n=k(e);if(t>=0&&t<31)return 0;if(t<59+n)return 1;if(t<90+n)return 2;if(t<120+n)return 3;if(t<151+n)return 4;if(t<181+n)return 5;if(t<212+n)return 6;if(t<243+n)return 7;if(t<273+n)return 8;if(t<304+n)return 9;if(t<334+n)return 10;if(t<365+n)return 11;throw new Error("Invalid time")}function j(e){var t=w(e),n=x(e),r=k(e);if(0===n)return t+1;if(1===n)return t-30;if(2===n)return t-58-r;if(3===n)return t-89-r;if(4===n)return t-119-r;if(5===n)return t-150-r;if(6===n)return t-180-r;if(7===n)return t-211-r;if(8===n)return t-242-r;if(9===n)return t-272-r;if(10===n)return t-303-r;if(11===n)return t-333-r;throw new Error("Invalid time")}var M=24,C=60,_=60,q=1e3,S=q*_,O=S*C;function E(e){return p(Math.floor(e/O),M)}function T(e){return p(Math.floor(e/S),C)}function A(e){return p(Math.floor(e/q),_)}function L(e,t,n){if("function"!==typeof e)return!1;if(null===n||void 0===n?void 0:n.boundTargetFunction)return t instanceof(null===n||void 0===n?void 0:n.boundTargetFunction);if("object"!==typeof t)return!1;var r=e.prototype;if("object"!==typeof r)throw new TypeError("OrdinaryHasInstance called on an object with an invalid prototype property.");return Object.prototype.isPrototypeOf.call(r,t)}function H(e){return p(e,q)}function D(e){return"undefined"===typeof e?Object.create(null):s(e)}function P(e,t,n,r){if(void 0!==e){if(e=Number(e),isNaN(e)||en)throw new RangeError(e+" is outside of range ["+t+", "+n+"]");return Math.floor(e)}return r}function V(e,t,n,r,o){return P(e[t],n,r,o)}function R(e,t,n,r,o){if("object"!==typeof e)throw new TypeError("Options must be an object");var a=e[t];if(void 0!==a){if("boolean"!==n&&"string"!==n)throw new TypeError("invalid type");if("boolean"===n&&(a=Boolean(a)),"string"===n&&(a=i(a)),void 0!==r&&!r.filter((function(e){return e==a})).length)throw new RangeError(a+" is not within "+r.join(", "));return a}return o}function I(e){if("undefined"===typeof e)return Object.create(null);if("object"===typeof e)return e;throw new TypeError("Options must be an object")}var N=["angle-degree","area-acre","area-hectare","concentr-percent","digital-bit","digital-byte","digital-gigabit","digital-gigabyte","digital-kilobit","digital-kilobyte","digital-megabit","digital-megabyte","digital-petabyte","digital-terabit","digital-terabyte","duration-day","duration-hour","duration-millisecond","duration-minute","duration-month","duration-second","duration-week","duration-year","length-centimeter","length-foot","length-inch","length-kilometer","length-meter","length-mile-scandinavian","length-mile","length-millimeter","length-yard","mass-gram","mass-kilogram","mass-ounce","mass-pound","mass-stone","temperature-celsius","temperature-fahrenheit","volume-fluid-ounce","volume-gallon","volume-liter","volume-milliliter"];function F(e){return e.slice(e.indexOf("-")+1)}var B=N.map(F);function U(e){return B.indexOf(e)>-1}function W(e,t){var n=t.tzData,r=t.uppercaseLinks,o=e.toUpperCase(),i=new Set,a=new Set;return Object.keys(n).map((function(e){return e.toUpperCase()})).forEach((function(e){return i.add(e)})),Object.keys(r).forEach((function(e){a.add(e.toUpperCase()),i.add(r[e].toUpperCase())})),i.has(o)||a.has(o)}var G=/[^A-Z]/;function Y(e){return 3===(e=e.replace(/([a-z])/g,(function(e,t){return t.toUpperCase()}))).length&&!G.test(e)}function $(e){if(U(e=e.replace(/([A-Z])/g,(function(e,t){return t.toLowerCase()}))))return!0;var t=e.split("-per-");if(2!==t.length)return!1;var n=t[0],r=t[1];return!(!U(n)||!U(r))}function Z(e){return Math.floor(Math.log(e)*Math.LOG10E)}function X(e,t){if("function"===typeof e.repeat)return e.repeat(t);for(var n=new Array(t),r=0;rh[h.length-1])return h[h.length-1].length-1;var p=h.indexOf(d);if(-1===p)return 0;var z=h[p];return"0"===u[z].other?0:z.length-u[z].other.match(/0+/)[0].length}}function ie(e,t,n){var r,o,i,a,c=n;if(0===e)r=X("0",c),o=0,i=0;else{var s=e.toString(),l=s.indexOf("e"),u=s.split("e"),f=u[0],d=u[1],h=f.replace(".","");if(l>=0&&h.length<=c)o=+d,r=h+X("0",c-h.length),i=e;else{var p=(o=Z(e))-c+1,z=Math.round(g(e,p));g(z,c-1)>=10&&(o+=1,z=Math.floor(z/10)),r=z.toString(),i=g(z,c-1-o)}}if(o>=c-1?(r+=X("0",o-c+1),a=o+1):o>=0?(r=r.slice(0,o+1)+"."+r.slice(o+1),a=o+1):(r="0."+X("0",-o-1)+r,a=1),r.indexOf(".")>=0&&n>t){for(var v=n-t;v>0&&"0"===r[r.length-1];)r=r.slice(0,-1),v--;"."===r[r.length-1]&&(r=r.slice(0,-1))}return{formattedString:r,roundedNumber:i,integerDigitsCount:a};function g(e,t){return t<0?e*Math.pow(10,-t):e/Math.pow(10,t)}}function ae(e,t,n){var r,o,i=n,a=Math.round(e*Math.pow(10,i)),c=a/Math.pow(10,i);if(a<1e21)r=a.toString();else{var s=(r=a.toString()).split("e"),l=s[0],u=s[1];r=l.replace(".",""),r+=X("0",Math.max(+u-r.length+1,0))}if(0!==i){var f=r.length;if(f<=i)r=X("0",i+1-f)+r,f=i+1;var d=r.slice(0,f-i),h=r.slice(f-i);r=d+"."+h,o=d.length}else o=r.length;for(var p=n-t;p>0&&"0"===r[r.length-1];)r=r.slice(0,-1),p--;return"."===r[r.length-1]&&(r=r.slice(0,-1)),{formattedString:r,roundedNumber:c,integerDigitsCount:o}}function ce(e,t){var n,r=t<0||l(t,-0);switch(r&&(t=-t),e.roundingType){case"significantDigits":n=ie(t,e.minimumSignificantDigits,e.maximumSignificantDigits);break;case"fractionDigits":n=ae(t,e.minimumFractionDigits,e.maximumFractionDigits);break;default:(n=ie(t,1,2)).integerDigitsCount>1&&(n=ae(t,0,0))}t=n.roundedNumber;var o=n.formattedString,i=n.integerDigitsCount,a=e.minimumIntegerDigits;i\^`\|~\xA2-\xA6\xA8\xA9\xAC\xAE-\xB1\xB4\xB8\xD7\xF7\u02C2-\u02C5\u02D2-\u02DF\u02E5-\u02EB\u02ED\u02EF-\u02FF\u0375\u0384\u0385\u03F6\u0482\u058D-\u058F\u0606-\u0608\u060B\u060E\u060F\u06DE\u06E9\u06FD\u06FE\u07F6\u07FE\u07FF\u09F2\u09F3\u09FA\u09FB\u0AF1\u0B70\u0BF3-\u0BFA\u0C7F\u0D4F\u0D79\u0E3F\u0F01-\u0F03\u0F13\u0F15-\u0F17\u0F1A-\u0F1F\u0F34\u0F36\u0F38\u0FBE-\u0FC5\u0FC7-\u0FCC\u0FCE\u0FCF\u0FD5-\u0FD8\u109E\u109F\u1390-\u1399\u166D\u17DB\u1940\u19DE-\u19FF\u1B61-\u1B6A\u1B74-\u1B7C\u1FBD\u1FBF-\u1FC1\u1FCD-\u1FCF\u1FDD-\u1FDF\u1FED-\u1FEF\u1FFD\u1FFE\u2044\u2052\u207A-\u207C\u208A-\u208C\u20A0-\u20BF\u2100\u2101\u2103-\u2106\u2108\u2109\u2114\u2116-\u2118\u211E-\u2123\u2125\u2127\u2129\u212E\u213A\u213B\u2140-\u2144\u214A-\u214D\u214F\u218A\u218B\u2190-\u2307\u230C-\u2328\u232B-\u2426\u2440-\u244A\u249C-\u24E9\u2500-\u2767\u2794-\u27C4\u27C7-\u27E5\u27F0-\u2982\u2999-\u29D7\u29DC-\u29FB\u29FE-\u2B73\u2B76-\u2B95\u2B97-\u2BFF\u2CE5-\u2CEA\u2E50\u2E51\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3004\u3012\u3013\u3020\u3036\u3037\u303E\u303F\u309B\u309C\u3190\u3191\u3196-\u319F\u31C0-\u31E3\u3200-\u321E\u322A-\u3247\u3250\u3260-\u327F\u328A-\u32B0\u32C0-\u33FF\u4DC0-\u4DFF\uA490-\uA4C6\uA700-\uA716\uA720\uA721\uA789\uA78A\uA828-\uA82B\uA836-\uA839\uAA77-\uAA79\uAB5B\uAB6A\uAB6B\uFB29\uFBB2-\uFBC1\uFDFC\uFDFD\uFE62\uFE64-\uFE66\uFE69\uFF04\uFF0B\uFF1C-\uFF1E\uFF3E\uFF40\uFF5C\uFF5E\uFFE0-\uFFE6\uFFE8-\uFFEE\uFFFC\uFFFD]|\uD800[\uDD37-\uDD3F\uDD79-\uDD89\uDD8C-\uDD8E\uDD90-\uDD9C\uDDA0\uDDD0-\uDDFC]|\uD802[\uDC77\uDC78\uDEC8]|\uD805\uDF3F|\uD807[\uDFD5-\uDFF1]|\uD81A[\uDF3C-\uDF3F\uDF45]|\uD82F\uDC9C|\uD834[\uDC00-\uDCF5\uDD00-\uDD26\uDD29-\uDD64\uDD6A-\uDD6C\uDD83\uDD84\uDD8C-\uDDA9\uDDAE-\uDDE8\uDE00-\uDE41\uDE45\uDF00-\uDF56]|\uD835[\uDEC1\uDEDB\uDEFB\uDF15\uDF35\uDF4F\uDF6F\uDF89\uDFA9\uDFC3]|\uD836[\uDC00-\uDDFF\uDE37-\uDE3A\uDE6D-\uDE74\uDE76-\uDE83\uDE85\uDE86]|\uD838[\uDD4F\uDEFF]|\uD83B[\uDCAC\uDCB0\uDD2E\uDEF0\uDEF1]|\uD83C[\uDC00-\uDC2B\uDC30-\uDC93\uDCA0-\uDCAE\uDCB1-\uDCBF\uDCC1-\uDCCF\uDCD1-\uDCF5\uDD0D-\uDDAD\uDDE6-\uDE02\uDE10-\uDE3B\uDE40-\uDE48\uDE50\uDE51\uDE60-\uDE65\uDF00-\uDFFF]|\uD83D[\uDC00-\uDED7\uDEE0-\uDEEC\uDEF0-\uDEFC\uDF00-\uDF73\uDF80-\uDFD8\uDFE0-\uDFEB]|\uD83E[\uDC00-\uDC0B\uDC10-\uDC47\uDC50-\uDC59\uDC60-\uDC87\uDC90-\uDCAD\uDCB0\uDCB1\uDD00-\uDD78\uDD7A-\uDDCB\uDDCD-\uDE53\uDE60-\uDE6D\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6\uDF00-\uDF92\uDF94-\uDFCA]/,de=new RegExp("^"+fe.source),he=new RegExp(fe.source+"$"),pe=/[#0](?:[\.,][#0]+)*/g;function ze(e,t,n,r){var o,i,a=e.sign,c=e.exponent,s=e.magnitude,l=r.notation,u=r.style,f=r.numberingSystem,d=t.numbers.nu[0],h=null;if("compact"===l&&s&&(h=function(e,t,n,r,o,i,a){var c,s,l=e.roundedNumber,u=e.sign,f=e.magnitude,d=String(Math.pow(10,f)),h=n.numbers.nu[0];if("currency"===r&&"name"!==i){var p=(v=n.numbers.currency)[a]||v[h],z=null===(c=p.short)||void 0===c?void 0:c[d];if(!z)return null;s=me(t,l,z)}else{var v,g=((v=n.numbers.decimal)[a]||v[h])[o][d];if(!g)return null;s=me(t,l,g)}if("0"===s)return null;return s=ge(s,u).replace(/([^\s;\-\+\d\xa4]+)/g,"{c:$1}").replace(/0+/,"0")}(e,n,t,u,r.compactDisplay,r.currencyDisplay,f)),"currency"===u&&"name"!==r.currencyDisplay){var p=t.currencies[r.currency];if(p)switch(r.currencyDisplay){case"code":o=r.currency;break;case"symbol":o=p.symbol;break;default:o=p.narrow}else o=r.currency}if(h)i=h;else if("decimal"===u||"unit"===u||"currency"===u&&"name"===r.currencyDisplay)i=ge((t.numbers.decimal[f]||t.numbers.decimal[d]).standard,a);else if("currency"===u){i=ge((v=t.numbers.currency[f]||t.numbers.currency[d])[r.currencySign],a)}else{i=ge(t.numbers.percent[f]||t.numbers.percent[d],a)}var z=pe.exec(i)[0];if(i=i.replace(pe,"{0}").replace(/'(.)'/g,"$1"),"currency"===u&&"name"!==r.currencyDisplay){var v,g=(v=t.numbers.currency[f]||t.numbers.currency[d]).currencySpacing.afterInsertBetween;g&&!he.test(o)&&(i=i.replace("\xa4{0}","\xa4"+g+"{0}"));var m=v.currencySpacing.beforeInsertBetween;m&&!de.test(o)&&(i=i.replace("{0}\xa4","{0}"+m+"\xa4"))}for(var y=i.split(/({c:[^}]+}|\{0\}|[\xa4%\-\+])/g),b=[],w=t.numbers.symbols[f]||t.numbers.symbols[d],k=0,x=y;k0?(f=s.slice(0,h),d=s.slice(h+1)):f=s,i&&("compact"!==n||l>=1e4)){var p=e.group,z=[],v=a.split(".")[0].split(","),g=3,m=3;v.length>1&&(g=v[v.length-1].length),v.length>2&&(m=v[v.length-2].length);var y=f.length-g;if(y>0){for(z.push(f.slice(y,y+g)),y-=m;y>0;y-=m)z.push(f.slice(y,y+m));z.push(f.slice(0,y+m))}else z.push(f);for(;z.length>0;){var b=z.pop();c.push({type:"integer",value:b}),z.length>0&&c.push({type:"group",value:p})}}else c.push({type:"integer",value:f});if(void 0!==d&&c.push({type:"decimal",value:e.decimal},{type:"fraction",value:d}),("scientific"===n||"engineering"===n)&&isFinite(l)){c.push({type:"exponentSeparator",value:e.exponential}),r<0&&(c.push({type:"exponentMinusSign",value:e.minusSign}),r=-r);var w=ae(r,0,0);c.push({type:"exponentInteger",value:w.formattedString})}return c}function ge(e,t){e.indexOf(";")<0&&(e=e+";-"+e);var n=e.split(";"),r=n[0],o=n[1];switch(t){case 0:return r;case-1:return o;default:return o.indexOf("-")>=0?o.replace(/-/g,"+"):"+"+r}}function me(e,t,n){return n[e.select(t)]||n.other}function ye(e,t,n){var r,o,i,a=n.getInternalSlots,c=a(e),s=c.pl,u=c.dataLocaleData,f=c.numberingSystem,d=u.numbers.symbols[f]||u.numbers.symbols[u.numbers.nu[0]],h=0,p=0;if(isNaN(t))o=d.nan;else if(isFinite(t)){"percent"===c.style&&(t*=100),p=(r=se(e,t,{getInternalSlots:a}))[0],h=r[1];var z=ce(c,t=p<0?t*Math.pow(10,-p):t/Math.pow(10,p));o=z.formattedString,t=z.roundedNumber}else o=d.infinity;switch(c.signDisplay){case"never":i=0;break;case"auto":i=l(t,0)||t>0||isNaN(t)?0:-1;break;case"always":i=l(t,0)||t>0||isNaN(t)?1:-1;break;default:i=0===t||isNaN(t)?0:t>0?1:-1}return ze({roundedNumber:t,formattedString:o,exponent:p,magnitude:h,sign:i},c.dataLocaleData,s,c)}function be(e,t,n){for(var r=ye(e,t,n),o=u(0),i=0,a=r;i-1;)re((r=e.indexOf("}",n))>n,"Invalid pattern "+e),n>o&&t.push({type:"literal",value:e.substring(o,n)}),t.push({type:e.substring(n+1,r),value:void 0}),o=r+1,n=e.indexOf("{",o);return ou)return-1;null!==s&&void 0!==s||(s=0);var f,d=function(e){return e>=0&&ea){if(s>0&&d(f=h-1)&&c[f]a)return h;e=a,t=c,n=s,r=h+1,o=u,i=!0,d=h=p=f=void 0}}},t.dateParser=function(e){var t,n;if((-1==e.search("-")||-1!=e.search("T")||-1!=e.search("Z"))&&(n=z(e))&&!isNaN(n))return n;if(-1!=e.search("-")){for(t=e.replace("-","/","g");-1!=t.search("-");)t=t.replace("-","/");n=z(t)}else 8==e.length?(t=e.substr(0,4)+"/"+e.substr(4,2)+"/"+e.substr(6,2),n=z(t)):n=z(e);n&&!isNaN(n)||console.error("Couldn't parse "+e+" as a date");return n},t.dateStrToMillis=z,t.update=function(e,t){if("undefined"!=typeof t&&null!==t)for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e},t.updateDeep=function e(t,n){function r(e){return"object"===typeof Node?e instanceof Node:"object"===typeof e&&"number"===typeof e.nodeType&&"string"===typeof e.nodeName}if("undefined"!=typeof n&&null!==n)for(var o in n)n.hasOwnProperty(o)&&(null===n[o]?t[o]=null:v(n[o])?t[o]=n[o].slice():r(n[o])?t[o]=n[o]:"object"==typeof n[o]?("object"==typeof t[o]&&null!==t[o]||(t[o]={}),e(t[o],n[o])):t[o]=n[o]);return t},t.isArrayLike=v,t.isDateLike=function(e){if("object"!=typeof e||null===e||"function"!=typeof e.getTime)return!1;return!0},t.clone=function e(t){for(var n=[],r=0;r=t||m.call(window,(function(){var t=(new Date).getTime()-a;o=i;var l=(i=Math.floor(t/n))-o;i+l>c||i>=c?(e(c),r()):(0!==l&&e(i),s())}))}()},t.isPixelChangingOptionList=function(e,t){var n={};if(e)for(var r=1;r=r.Granularity.DECADAL)return""+i;if(t>=r.Granularity.MONTHLY)return q[a]+" "+i;if(0===3600*s+60*h+p+.001*z||t>=r.Granularity.DAILY)return l(c)+" "+q[a];if(tr.Granularity.MINUTELY?d(s,h,p,0):d(s,h,p,z)},t.dateValueFormatter=function(e,t){return h(e,t("labelsUTC"))};var r=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(209));t.LOG_SCALE=10;var o=Math.log(10);t.LN_TEN=o;var i=function(e){return Math.log(e)/o};t.log10=i;t.logRangeFraction=function(e,t,n){var r=i(e),o=r+n*(i(t)-r);return Math.pow(10,o)};t.DOTTED_LINE=[2,2];t.DASHED_LINE=[7,3];t.DOT_DASH_LINE=[7,2,2,2];t.HORIZONTAL=1;t.VERTICAL=2;t.getContext=function(e){return e.getContext("2d")};function a(e){return!e.pageX||e.pageX<0?0:e.pageX}function c(e){return!e.pageY||e.pageY<0?0:e.pageY}function s(e,t){var n=Math.min(Math.max(1,t||2),21);return Math.abs(e)<.001&&0!==e?e.toExponential(n-1):e.toPrecision(n)}function l(e){return e<10?"0"+e:""+e}t.addEvent=function(e,t,n){e.addEventListener(t,n,!1)};var u={getFullYear:function(e){return e.getFullYear()},getMonth:function(e){return e.getMonth()},getDate:function(e){return e.getDate()},getHours:function(e){return e.getHours()},getMinutes:function(e){return e.getMinutes()},getSeconds:function(e){return e.getSeconds()},getMilliseconds:function(e){return e.getMilliseconds()},getDay:function(e){return e.getDay()},makeDate:function(e,t,n,r,o,i,a){return new Date(e,t,n,r,o,i,a)}};t.DateAccessorsLocal=u;var f={getFullYear:function(e){return e.getUTCFullYear()},getMonth:function(e){return e.getUTCMonth()},getDate:function(e){return e.getUTCDate()},getHours:function(e){return e.getUTCHours()},getMinutes:function(e){return e.getUTCMinutes()},getSeconds:function(e){return e.getUTCSeconds()},getMilliseconds:function(e){return e.getUTCMilliseconds()},getDay:function(e){return e.getUTCDay()},makeDate:function(e,t,n,r,o,i,a){return new Date(Date.UTC(e,t,n,r,o,i,a))}};function d(e,t,n,r){var o=l(e)+":"+l(t);if(n&&(o+=":"+l(n),r)){var i=""+r;o+="."+("000"+i).substring(i.length)}return o}function h(e,t){var n=t?f:u,r=new Date(e),o=n.getFullYear(r),i=n.getMonth(r),a=n.getDate(r),c=n.getHours(r),s=n.getMinutes(r),h=n.getSeconds(r),p=n.getMilliseconds(r),z=""+o+"/"+l(i+1)+"/"+l(a);return 3600*c+60*s+h+.001*p&&(z+=" "+d(c,s,h,p)),z}function p(e,t){var n=Math.pow(10,t);return Math.round(e*n)/n}function z(e){return new Date(e).getTime()}function v(e){var t=typeof e;return("object"==t||"function"==t&&"function"==typeof e.item)&&null!==e&&"number"==typeof e.length&&3!==e.nodeType}function g(e,t,n,r){t=t||0,n=n||e.length,this.hasNext=!0,this.peek=null,this.start_=t,this.array_=e,this.predicate_=r,this.end_=Math.min(e.length,t+n),this.nextIdx_=t-1,this.next()}t.DateAccessorsUTC=f,g.prototype.next=function(){if(!this.hasNext)return null;for(var e=this.peek,t=this.nextIdx_+1,n=!1;t=Math.pow(10,i)||Math.abs(e)=0;z--,h/=l)if(d>=h){r=p(e/h,o)+u[z];break}if(c){var v=String(e.toExponential()).split("e-");2===v.length&&v[1]>=3&&v[1]<=24&&(r=v[1]%3>0?p(v[0]/w(10,v[1]%3),o):Number(v[0]).toFixed(2),r+=f[Math.floor(v[1]/3)-1])}}return r}var q=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]},function(e,t,n){"use strict";t.a=Array.isArray||function(e){return null!=e&&e.length>=0&&"[object Array]"===Object.prototype.toString.call(e)}},function(e,t,n){"use strict";function r(e){return"[object String]"===Object.prototype.toString.call(e)}n.d(t,"a",(function(){return r}))},function(e,t,n){"use strict";n.d(t,"a",(function(){return a}));var r=n(26),o=n(24),i=n(20);function a(e,t){Object(i.a)(1,arguments);var n=t||{},a=n.locale,c=a&&a.options&&a.options.weekStartsOn,s=null==c?0:Object(r.a)(c),l=null==n.weekStartsOn?s:Object(r.a)(n.weekStartsOn);if(!(l>=0&&l<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var u=Object(o.a)(e),f=u.getUTCDay(),d=(f=0&&l<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var u=Object(o.default)(e),f=u.getUTCDay(),d=(f0&&t.forEach((function(e){i.remove(e)})),i.appendTo(n.scrollbarXRail,e)),e.contains(n.scrollbarYRail)||((t=i.queryChildren(e,".ps-scrollbar-y-rail")).length>0&&t.forEach((function(e){i.remove(e)})),i.appendTo(n.scrollbarYRail,e)),!n.settings.suppressScrollX&&n.containerWidth+n.settings.scrollXMarginOffset=n.railXWidth-n.scrollbarXWidth&&(n.scrollbarXLeft=n.railXWidth-n.scrollbarXWidth),n.scrollbarYTop>=n.railYHeight-n.scrollbarYHeight&&(n.scrollbarYTop=n.railYHeight-n.scrollbarYHeight),function(e,t){var n={width:t.railXWidth};t.isRtl?n.left=t.negativeScrollAdjustment+e.scrollLeft+t.containerWidth-t.contentWidth:n.left=e.scrollLeft,t.isScrollbarXUsingBottom?n.bottom=t.scrollbarXBottom-e.scrollTop:n.top=t.scrollbarXTop+e.scrollTop,i.css(t.scrollbarXRail,n);var r={top:e.scrollTop,height:t.railYHeight};t.isScrollbarYUsingRight?t.isRtl?r.right=t.contentWidth-(t.negativeScrollAdjustment+e.scrollLeft)-t.scrollbarYRight-t.scrollbarYOuterWidth:r.right=t.scrollbarYRight-e.scrollLeft:t.isRtl?r.left=t.negativeScrollAdjustment+e.scrollLeft+2*t.containerWidth-t.contentWidth-t.scrollbarYLeft-t.scrollbarYOuterWidth:r.left=t.scrollbarYLeft+e.scrollLeft,i.css(t.scrollbarYRail,r),i.css(t.scrollbarX,{left:t.scrollbarXLeft,width:t.scrollbarXWidth-t.railBorderXWidth}),i.css(t.scrollbarY,{top:t.scrollbarYTop,height:t.scrollbarYHeight-t.railBorderYWidth})}(e,n),n.scrollbarXActive?o.add(e,"ps-active-x"):(o.remove(e,"ps-active-x"),n.scrollbarXWidth=0,n.scrollbarXLeft=0,c(e,"left",0)),n.scrollbarYActive?o.add(e,"ps-active-y"):(o.remove(e,"ps-active-y"),n.scrollbarYHeight=0,n.scrollbarYTop=0,c(e,"top",0))}},function(e,t,n){"use strict";e.exports=function(e,t,n,r,o,i,a,c){if(!e){var s;if(void 0===t)s=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var l=[n,r,o,i,a,c],u=0;(s=new Error(t.replace(/%s/g,(function(){return l[u++]})))).name="Invariant Violation"}throw s.framesToPop=1,s}}},function(e,t,n){"use strict";function r(e){setTimeout((function(){throw e}),0)}n.d(t,"a",(function(){return r}))},,,function(e,t){var n,r,o=e.exports={};function i(){throw new Error("setTimeout has not been defined")}function a(){throw new Error("clearTimeout has not been defined")}function c(e){if(n===setTimeout)return setTimeout(e,0);if((n===i||!n)&&setTimeout)return n=setTimeout,setTimeout(e,0);try{return n(e,0)}catch(t){try{return n.call(null,e,0)}catch(t){return n.call(this,e,0)}}}!function(){try{n="function"===typeof setTimeout?setTimeout:i}catch(e){n=i}try{r="function"===typeof clearTimeout?clearTimeout:a}catch(e){r=a}}();var s,l=[],u=!1,f=-1;function d(){u&&s&&(u=!1,s.length?l=s.concat(l):f=-1,l.length&&h())}function h(){if(!u){var e=c(d);u=!0;for(var t=l.length;t;){for(s=l,l=[];++f1)for(var n=1;n=c.contentHeight-c.containerHeight&&((n=c.contentHeight-c.containerHeight)-e.scrollTop<=1?n=e.scrollTop:e.scrollTop=n,e.dispatchEvent(a("ps-y-reach-end"))),"left"===t&&n>=c.contentWidth-c.containerWidth&&((n=c.contentWidth-c.containerWidth)-e.scrollLeft<=1?n=e.scrollLeft:e.scrollLeft=n,e.dispatchEvent(a("ps-x-reach-end"))),r||(r=e.scrollTop),o||(o=e.scrollLeft),"top"===t&&nr&&e.dispatchEvent(a("ps-scroll-down")),"left"===t&&no&&e.dispatchEvent(a("ps-scroll-right")),"top"===t&&(e.scrollTop=r=n,e.dispatchEvent(a("ps-scroll-y"))),"left"===t&&(e.scrollLeft=o=n,e.dispatchEvent(a("ps-scroll-x")))}},function(e,t,n){"use strict";function r(){return"function"===typeof Symbol&&Symbol.iterator?Symbol.iterator:"@@iterator"}n.d(t,"a",(function(){return o}));var o=r()},function(e,t,n){"use strict";n.d(t,"a",(function(){return o}));var r=n(32),o=function(e){function t(t,n,r){var o=e.call(this)||this;return o.parent=t,o.outerValue=n,o.outerIndex=r,o.index=0,o}return r.b(t,e),t.prototype._next=function(e){this.parent.notifyNext(this.outerValue,e,this.outerIndex,this.index++,this)},t.prototype._error=function(e){this.parent.notifyError(e,this),this.unsubscribe()},t.prototype._complete=function(){this.parent.notifyComplete(this),this.unsubscribe()},t}(n(53).a)},function(e,t,n){"use strict";n.d(t,"a",(function(){return r}));var r=function(){function e(e){void 0===e&&(e={}),this.adapter_=e}return Object.defineProperty(e,"cssClasses",{get:function(){return{}},enumerable:!0,configurable:!0}),Object.defineProperty(e,"strings",{get:function(){return{}},enumerable:!0,configurable:!0}),Object.defineProperty(e,"numbers",{get:function(){return{}},enumerable:!0,configurable:!0}),Object.defineProperty(e,"defaultAdapter",{get:function(){return{}},enumerable:!0,configurable:!0}),e.prototype.init=function(){},e.prototype.destroy=function(){},e}()},function(e,t,n){"use strict";var r=n(31),o=n(70),i=n(71),a=Object(r.a)((function(e){return!!Object(o.a)(e)||!!e&&("object"===typeof e&&(!Object(i.a)(e)&&(1===e.nodeType?!!e.length:0===e.length||e.length>0&&(e.hasOwnProperty(0)&&e.hasOwnProperty(e.length-1)))))})),c=function(){function e(e){this.f=e}return e.prototype["@@transducer/init"]=function(){throw new Error("init not implemented on XWrap")},e.prototype["@@transducer/result"]=function(e){return e},e.prototype["@@transducer/step"]=function(e,t){return this.f(e,t)},e}();var s=n(68),l=n(19),u=Object(l.a)((function(e,t){return Object(s.a)(e.length,(function(){return e.apply(t,arguments)}))}));function f(e,t,n){for(var r=n.next();!r.done;){if((t=e["@@transducer/step"](t,r.value))&&t["@@transducer/reduced"]){t=t["@@transducer/value"];break}r=n.next()}return e["@@transducer/result"](t)}function d(e,t,n,r){return e["@@transducer/result"](n[r](u(e["@@transducer/step"],e),t))}n.d(t,"a",(function(){return p}));var h="undefined"!==typeof Symbol?Symbol.iterator:"@@iterator";function p(e,t,n){if("function"===typeof e&&(e=function(e){return new c(e)}(e)),a(n))return function(e,t,n){for(var r=0,o=n.length;r>>0;for(t=0;t0)for(n=0;n=0?n?"+":"":"-")+Math.pow(10,Math.max(0,o)).toString().substr(1)+r}r.suppressDeprecationWarnings=!1,r.deprecationHandler=null,j=Object.keys?Object.keys:function(e){var t,n=[];for(t in e)a(e,t)&&n.push(t);return n};var E=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,T=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,A={},L={};function H(e,t,n,r){var o=r;"string"===typeof r&&(o=function(){return this[r]()}),e&&(L[e]=o),t&&(L[t[0]]=function(){return O(o.apply(this,arguments),t[1],t[2])}),n&&(L[n]=function(){return this.localeData().ordinal(o.apply(this,arguments),e)})}function D(e,t){return e.isValid()?(t=P(t,e.localeData()),A[t]=A[t]||function(e){var t,n,r,o=e.match(E);for(t=0,n=o.length;t=0&&T.test(e);)e=e.replace(T,r),T.lastIndex=0,n-=1;return e}var V={};function R(e,t){var n=e.toLowerCase();V[n]=V[n+"s"]=V[t]=e}function I(e){return"string"===typeof e?V[e]||V[e.toLowerCase()]:void 0}function N(e){var t,n,r={};for(n in e)a(e,n)&&(t=I(n))&&(r[t]=e[n]);return r}var F={};function B(e,t){F[e]=t}function U(e){return e%4===0&&e%100!==0||e%400===0}function W(e){return e<0?Math.ceil(e)||0:Math.floor(e)}function G(e){var t=+e,n=0;return 0!==t&&isFinite(t)&&(n=W(t)),n}function Y(e,t){return function(n){return null!=n?(Z(this,e,n),r.updateOffset(this,t),this):$(this,e)}}function $(e,t){return e.isValid()?e._d["get"+(e._isUTC?"UTC":"")+t]():NaN}function Z(e,t,n){e.isValid()&&!isNaN(n)&&("FullYear"===t&&U(e.year())&&1===e.month()&&29===e.date()?(n=G(n),e._d["set"+(e._isUTC?"UTC":"")+t](n,e.month(),Oe(n,e.month()))):e._d["set"+(e._isUTC?"UTC":"")+t](n))}var X,K=/\d/,Q=/\d\d/,J=/\d{3}/,ee=/\d{4}/,te=/[+-]?\d{6}/,ne=/\d\d?/,re=/\d\d\d\d?/,oe=/\d\d\d\d\d\d?/,ie=/\d{1,3}/,ae=/\d{1,4}/,ce=/[+-]?\d{1,6}/,se=/\d+/,le=/[+-]?\d+/,ue=/Z|[+-]\d\d:?\d\d/gi,fe=/Z|[+-]\d\d(?::?\d\d)?/gi,de=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i;function he(e,t,n){X[e]=_(t)?t:function(e,r){return e&&n?n:t}}function pe(e,t){return a(X,e)?X[e](t._strict,t._locale):new RegExp(ze(e.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,(function(e,t,n,r,o){return t||n||r||o}))))}function ze(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}X={};var ve={};function ge(e,t){var n,r=t;for("string"===typeof e&&(e=[e]),l(t)&&(r=function(e,n){n[t]=G(e)}),n=0;n68?1900:2e3)};var Ne=Y("FullYear",!0);function Fe(e,t,n,r,o,i,a){var c;return e<100&&e>=0?(c=new Date(e+400,t,n,r,o,i,a),isFinite(c.getFullYear())&&c.setFullYear(e)):c=new Date(e,t,n,r,o,i,a),c}function Be(e){var t,n;return e<100&&e>=0?((n=Array.prototype.slice.call(arguments))[0]=e+400,t=new Date(Date.UTC.apply(null,n)),isFinite(t.getUTCFullYear())&&t.setUTCFullYear(e)):t=new Date(Date.UTC.apply(null,arguments)),t}function Ue(e,t,n){var r=7+t-n;return-(7+Be(e,0,r).getUTCDay()-t)%7+r-1}function We(e,t,n,r,o){var i,a,c=1+7*(t-1)+(7+n-r)%7+Ue(e,r,o);return c<=0?a=Ie(i=e-1)+c:c>Ie(e)?(i=e+1,a=c-Ie(e)):(i=e,a=c),{year:i,dayOfYear:a}}function Ge(e,t,n){var r,o,i=Ue(e.year(),t,n),a=Math.floor((e.dayOfYear()-i-1)/7)+1;return a<1?r=a+Ye(o=e.year()-1,t,n):a>Ye(e.year(),t,n)?(r=a-Ye(e.year(),t,n),o=e.year()+1):(o=e.year(),r=a),{week:r,year:o}}function Ye(e,t,n){var r=Ue(e,t,n),o=Ue(e+1,t,n);return(Ie(e)-r+o)/7}function $e(e,t){return e.slice(t,7).concat(e.slice(0,t))}H("w",["ww",2],"wo","week"),H("W",["WW",2],"Wo","isoWeek"),R("week","w"),R("isoWeek","W"),B("week",5),B("isoWeek",5),he("w",ne),he("ww",ne,Q),he("W",ne),he("WW",ne,Q),me(["w","ww","W","WW"],(function(e,t,n,r){t[r.substr(0,1)]=G(e)})),H("d",0,"do","day"),H("dd",0,0,(function(e){return this.localeData().weekdaysMin(this,e)})),H("ddd",0,0,(function(e){return this.localeData().weekdaysShort(this,e)})),H("dddd",0,0,(function(e){return this.localeData().weekdays(this,e)})),H("e",0,0,"weekday"),H("E",0,0,"isoWeekday"),R("day","d"),R("weekday","e"),R("isoWeekday","E"),B("day",11),B("weekday",11),B("isoWeekday",11),he("d",ne),he("e",ne),he("E",ne),he("dd",(function(e,t){return t.weekdaysMinRegex(e)})),he("ddd",(function(e,t){return t.weekdaysShortRegex(e)})),he("dddd",(function(e,t){return t.weekdaysRegex(e)})),me(["dd","ddd","dddd"],(function(e,t,n,r){var o=n._locale.weekdaysParse(e,r,n._strict);null!=o?t.d=o:p(n).invalidWeekday=e})),me(["d","e","E"],(function(e,t,n,r){t[r]=G(e)}));var Ze="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Xe="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Ke="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),Qe=de,Je=de,et=de;function tt(e,t,n){var r,o,i,a=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],r=0;r<7;++r)i=h([2e3,1]).day(r),this._minWeekdaysParse[r]=this.weekdaysMin(i,"").toLocaleLowerCase(),this._shortWeekdaysParse[r]=this.weekdaysShort(i,"").toLocaleLowerCase(),this._weekdaysParse[r]=this.weekdays(i,"").toLocaleLowerCase();return n?"dddd"===t?-1!==(o=be.call(this._weekdaysParse,a))?o:null:"ddd"===t?-1!==(o=be.call(this._shortWeekdaysParse,a))?o:null:-1!==(o=be.call(this._minWeekdaysParse,a))?o:null:"dddd"===t?-1!==(o=be.call(this._weekdaysParse,a))?o:-1!==(o=be.call(this._shortWeekdaysParse,a))?o:-1!==(o=be.call(this._minWeekdaysParse,a))?o:null:"ddd"===t?-1!==(o=be.call(this._shortWeekdaysParse,a))?o:-1!==(o=be.call(this._weekdaysParse,a))?o:-1!==(o=be.call(this._minWeekdaysParse,a))?o:null:-1!==(o=be.call(this._minWeekdaysParse,a))?o:-1!==(o=be.call(this._weekdaysParse,a))?o:-1!==(o=be.call(this._shortWeekdaysParse,a))?o:null}function nt(){function e(e,t){return t.length-e.length}var t,n,r,o,i,a=[],c=[],s=[],l=[];for(t=0;t<7;t++)n=h([2e3,1]).day(t),r=ze(this.weekdaysMin(n,"")),o=ze(this.weekdaysShort(n,"")),i=ze(this.weekdays(n,"")),a.push(r),c.push(o),s.push(i),l.push(r),l.push(o),l.push(i);a.sort(e),c.sort(e),s.sort(e),l.sort(e),this._weekdaysRegex=new RegExp("^("+l.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+s.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+c.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+a.join("|")+")","i")}function rt(){return this.hours()%12||12}function ot(e,t){H(e,0,0,(function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)}))}function it(e,t){return t._meridiemParse}H("H",["HH",2],0,"hour"),H("h",["hh",2],0,rt),H("k",["kk",2],0,(function(){return this.hours()||24})),H("hmm",0,0,(function(){return""+rt.apply(this)+O(this.minutes(),2)})),H("hmmss",0,0,(function(){return""+rt.apply(this)+O(this.minutes(),2)+O(this.seconds(),2)})),H("Hmm",0,0,(function(){return""+this.hours()+O(this.minutes(),2)})),H("Hmmss",0,0,(function(){return""+this.hours()+O(this.minutes(),2)+O(this.seconds(),2)})),ot("a",!0),ot("A",!1),R("hour","h"),B("hour",13),he("a",it),he("A",it),he("H",ne),he("h",ne),he("k",ne),he("HH",ne,Q),he("hh",ne,Q),he("kk",ne,Q),he("hmm",re),he("hmmss",oe),he("Hmm",re),he("Hmmss",oe),ge(["H","HH"],je),ge(["k","kk"],(function(e,t,n){var r=G(e);t[je]=24===r?0:r})),ge(["a","A"],(function(e,t,n){n._isPm=n._locale.isPM(e),n._meridiem=e})),ge(["h","hh"],(function(e,t,n){t[je]=G(e),p(n).bigHour=!0})),ge("hmm",(function(e,t,n){var r=e.length-2;t[je]=G(e.substr(0,r)),t[Me]=G(e.substr(r)),p(n).bigHour=!0})),ge("hmmss",(function(e,t,n){var r=e.length-4,o=e.length-2;t[je]=G(e.substr(0,r)),t[Me]=G(e.substr(r,2)),t[Ce]=G(e.substr(o)),p(n).bigHour=!0})),ge("Hmm",(function(e,t,n){var r=e.length-2;t[je]=G(e.substr(0,r)),t[Me]=G(e.substr(r))})),ge("Hmmss",(function(e,t,n){var r=e.length-4,o=e.length-2;t[je]=G(e.substr(0,r)),t[Me]=G(e.substr(r,2)),t[Ce]=G(e.substr(o))}));var at,ct=Y("Hours",!0),st={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:Ee,monthsShort:Te,week:{dow:0,doy:6},weekdays:Ze,weekdaysMin:Ke,weekdaysShort:Xe,meridiemParse:/[ap]\.?m?\.?/i},lt={},ut={};function ft(e,t){var n,r=Math.min(e.length,t.length);for(n=0;n0;){if(r=ht(o.slice(0,t).join("-")))return r;if(n&&n.length>=t&&ft(o,n)>=t-1)break;t--}i++}return at}(e)}function gt(e){var t,n=e._a;return n&&-2===p(e).overflow&&(t=n[ke]<0||n[ke]>11?ke:n[xe]<1||n[xe]>Oe(n[we],n[ke])?xe:n[je]<0||n[je]>24||24===n[je]&&(0!==n[Me]||0!==n[Ce]||0!==n[_e])?je:n[Me]<0||n[Me]>59?Me:n[Ce]<0||n[Ce]>59?Ce:n[_e]<0||n[_e]>999?_e:-1,p(e)._overflowDayOfYear&&(txe)&&(t=xe),p(e)._overflowWeeks&&-1===t&&(t=qe),p(e)._overflowWeekday&&-1===t&&(t=Se),p(e).overflow=t),e}var mt=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,yt=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,bt=/Z|[+-]\d\d(?::?\d\d)?/,wt=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/],["YYYYMM",/\d{6}/,!1],["YYYY",/\d{4}/,!1]],kt=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],xt=/^\/?Date\((-?\d+)/i,jt=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,Mt={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function Ct(e){var t,n,r,o,i,a,c=e._i,s=mt.exec(c)||yt.exec(c);if(s){for(p(e).iso=!0,t=0,n=wt.length;t7)&&(s=!0)):(i=e._locale._week.dow,a=e._locale._week.doy,l=Ge(Lt(),i,a),n=St(t.gg,e._a[we],l.year),r=St(t.w,l.week),null!=t.d?((o=t.d)<0||o>6)&&(s=!0):null!=t.e?(o=t.e+i,(t.e<0||t.e>6)&&(s=!0)):o=i),r<1||r>Ye(n,i,a)?p(e)._overflowWeeks=!0:null!=s?p(e)._overflowWeekday=!0:(c=We(n,r,o,i,a),e._a[we]=c.year,e._dayOfYear=c.dayOfYear)}(e),null!=e._dayOfYear&&(a=St(e._a[we],o[we]),(e._dayOfYear>Ie(a)||0===e._dayOfYear)&&(p(e)._overflowDayOfYear=!0),n=Be(a,0,e._dayOfYear),e._a[ke]=n.getUTCMonth(),e._a[xe]=n.getUTCDate()),t=0;t<3&&null==e._a[t];++t)e._a[t]=c[t]=o[t];for(;t<7;t++)e._a[t]=c[t]=null==e._a[t]?2===t?1:0:e._a[t];24===e._a[je]&&0===e._a[Me]&&0===e._a[Ce]&&0===e._a[_e]&&(e._nextDay=!0,e._a[je]=0),e._d=(e._useUTC?Be:Fe).apply(null,c),i=e._useUTC?e._d.getUTCDay():e._d.getDay(),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[je]=24),e._w&&"undefined"!==typeof e._w.d&&e._w.d!==i&&(p(e).weekdayMismatch=!0)}}function Et(e){if(e._f!==r.ISO_8601)if(e._f!==r.RFC_2822){e._a=[],p(e).empty=!0;var t,n,o,i,a,c,s=""+e._i,l=s.length,u=0;for(o=P(e._f,e._locale).match(E)||[],t=0;t0&&p(e).unusedInput.push(a),s=s.slice(s.indexOf(n)+n.length),u+=n.length),L[i]?(n?p(e).empty=!1:p(e).unusedTokens.push(i),ye(i,n,e)):e._strict&&!n&&p(e).unusedTokens.push(i);p(e).charsLeftOver=l-u,s.length>0&&p(e).unusedInput.push(s),e._a[je]<=12&&!0===p(e).bigHour&&e._a[je]>0&&(p(e).bigHour=void 0),p(e).parsedDateParts=e._a.slice(0),p(e).meridiem=e._meridiem,e._a[je]=function(e,t,n){var r;return null==n?t:null!=e.meridiemHour?e.meridiemHour(t,n):null!=e.isPM?((r=e.isPM(n))&&t<12&&(t+=12),r||12!==t||(t=0),t):t}(e._locale,e._a[je],e._meridiem),null!==(c=p(e).era)&&(e._a[we]=e._locale.erasConvertYear(c,e._a[we])),Ot(e),gt(e)}else qt(e);else Ct(e)}function Tt(e){var t=e._i,n=e._f;return e._locale=e._locale||vt(e._l),null===t||void 0===n&&""===t?v({nullInput:!0}):("string"===typeof t&&(e._i=t=e._locale.preparse(t)),w(t)?new b(gt(t)):(u(t)?e._d=t:o(n)?function(e){var t,n,r,o,i,a,c=!1;if(0===e._f.length)return p(e).invalidFormat=!0,void(e._d=new Date(NaN));for(o=0;othis?this:e:v()}));function Pt(e,t){var n,r;if(1===t.length&&o(t[0])&&(t=t[0]),!t.length)return Lt();for(n=t[0],r=1;r=0?new Date(e+400,t,n)-dn:new Date(e,t,n).valueOf()}function zn(e,t,n){return e<100&&e>=0?Date.UTC(e+400,t,n)-dn:Date.UTC(e,t,n)}function vn(e,t){return t.erasAbbrRegex(e)}function gn(){var e,t,n=[],r=[],o=[],i=[],a=this.eras();for(e=0,t=a.length;e(i=Ye(e,r,o))&&(t=i),bn.call(this,e,t,n,r,o))}function bn(e,t,n,r,o){var i=We(e,t,n,r,o),a=Be(i.year,0,i.dayOfYear);return this.year(a.getUTCFullYear()),this.month(a.getUTCMonth()),this.date(a.getUTCDate()),this}H("N",0,0,"eraAbbr"),H("NN",0,0,"eraAbbr"),H("NNN",0,0,"eraAbbr"),H("NNNN",0,0,"eraName"),H("NNNNN",0,0,"eraNarrow"),H("y",["y",1],"yo","eraYear"),H("y",["yy",2],0,"eraYear"),H("y",["yyy",3],0,"eraYear"),H("y",["yyyy",4],0,"eraYear"),he("N",vn),he("NN",vn),he("NNN",vn),he("NNNN",(function(e,t){return t.erasNameRegex(e)})),he("NNNNN",(function(e,t){return t.erasNarrowRegex(e)})),ge(["N","NN","NNN","NNNN","NNNNN"],(function(e,t,n,r){var o=n._locale.erasParse(e,r,n._strict);o?p(n).era=o:p(n).invalidEra=e})),he("y",se),he("yy",se),he("yyy",se),he("yyyy",se),he("yo",(function(e,t){return t._eraYearOrdinalRegex||se})),ge(["y","yy","yyy","yyyy"],we),ge(["yo"],(function(e,t,n,r){var o;n._locale._eraYearOrdinalRegex&&(o=e.match(n._locale._eraYearOrdinalRegex)),n._locale.eraYearOrdinalParse?t[we]=n._locale.eraYearOrdinalParse(e,o):t[we]=parseInt(e,10)})),H(0,["gg",2],0,(function(){return this.weekYear()%100})),H(0,["GG",2],0,(function(){return this.isoWeekYear()%100})),mn("gggg","weekYear"),mn("ggggg","weekYear"),mn("GGGG","isoWeekYear"),mn("GGGGG","isoWeekYear"),R("weekYear","gg"),R("isoWeekYear","GG"),B("weekYear",1),B("isoWeekYear",1),he("G",le),he("g",le),he("GG",ne,Q),he("gg",ne,Q),he("GGGG",ae,ee),he("gggg",ae,ee),he("GGGGG",ce,te),he("ggggg",ce,te),me(["gggg","ggggg","GGGG","GGGGG"],(function(e,t,n,r){t[r.substr(0,2)]=G(e)})),me(["gg","GG"],(function(e,t,n,o){t[o]=r.parseTwoDigitYear(e)})),H("Q",0,"Qo","quarter"),R("quarter","Q"),B("quarter",7),he("Q",K),ge("Q",(function(e,t){t[ke]=3*(G(e)-1)})),H("D",["DD",2],"Do","date"),R("date","D"),B("date",9),he("D",ne),he("DD",ne,Q),he("Do",(function(e,t){return e?t._dayOfMonthOrdinalParse||t._ordinalParse:t._dayOfMonthOrdinalParseLenient})),ge(["D","DD"],xe),ge("Do",(function(e,t){t[xe]=G(e.match(ne)[0])}));var wn=Y("Date",!0);H("DDD",["DDDD",3],"DDDo","dayOfYear"),R("dayOfYear","DDD"),B("dayOfYear",4),he("DDD",ie),he("DDDD",J),ge(["DDD","DDDD"],(function(e,t,n){n._dayOfYear=G(e)})),H("m",["mm",2],0,"minute"),R("minute","m"),B("minute",14),he("m",ne),he("mm",ne,Q),ge(["m","mm"],Me);var kn=Y("Minutes",!1);H("s",["ss",2],0,"second"),R("second","s"),B("second",15),he("s",ne),he("ss",ne,Q),ge(["s","ss"],Ce);var xn,jn,Mn=Y("Seconds",!1);for(H("S",0,0,(function(){return~~(this.millisecond()/100)})),H(0,["SS",2],0,(function(){return~~(this.millisecond()/10)})),H(0,["SSS",3],0,"millisecond"),H(0,["SSSS",4],0,(function(){return 10*this.millisecond()})),H(0,["SSSSS",5],0,(function(){return 100*this.millisecond()})),H(0,["SSSSSS",6],0,(function(){return 1e3*this.millisecond()})),H(0,["SSSSSSS",7],0,(function(){return 1e4*this.millisecond()})),H(0,["SSSSSSSS",8],0,(function(){return 1e5*this.millisecond()})),H(0,["SSSSSSSSS",9],0,(function(){return 1e6*this.millisecond()})),R("millisecond","ms"),B("millisecond",16),he("S",ie,K),he("SS",ie,Q),he("SSS",ie,J),xn="SSSS";xn.length<=9;xn+="S")he(xn,se);function Cn(e,t){t[_e]=G(1e3*("0."+e))}for(xn="S";xn.length<=9;xn+="S")ge(xn,Cn);jn=Y("Milliseconds",!1),H("z",0,0,"zoneAbbr"),H("zz",0,0,"zoneName");var _n=b.prototype;function qn(e){return e}_n.add=tn,_n.calendar=function(e,t){var n;1===arguments.length&&(arguments[0]?w(n=arguments[0])||u(n)||rn(n)||l(n)||function(e){var t=o(e),n=!1;return t&&(n=0===e.filter((function(t){return!l(t)&&rn(e)})).length),t&&n}(n)||function(e){var t,n,r=i(e)&&!c(e),o=!1,s=["years","year","y","months","month","M","days","day","d","dates","date","D","hours","hour","h","minutes","minute","m","seconds","second","s","milliseconds","millisecond","ms"];for(t=0;tn.valueOf():n.valueOf()9999?D(n,t?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):_(Date.prototype.toISOString)?t?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",D(n,"Z")):D(n,t?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")},_n.inspect=function(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var e,t,n,r="moment",o="";return this.isLocal()||(r=0===this.utcOffset()?"moment.utc":"moment.parseZone",o="Z"),e="["+r+'("]',t=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",n=o+'[")]',this.format(e+t+"-MM-DD[T]HH:mm:ss.SSS"+n)},"undefined"!==typeof Symbol&&null!=Symbol.for&&(_n[Symbol.for("nodejs.util.inspect.custom")]=function(){return"Moment<"+this.format()+">"}),_n.toJSON=function(){return this.isValid()?this.toISOString():null},_n.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},_n.unix=function(){return Math.floor(this.valueOf()/1e3)},_n.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},_n.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},_n.eraName=function(){var e,t,n,r=this.localeData().eras();for(e=0,t=r.length;ethis.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},_n.isLocal=function(){return!!this.isValid()&&!this._isUTC},_n.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},_n.isUtc=Yt,_n.isUTC=Yt,_n.zoneAbbr=function(){return this._isUTC?"UTC":""},_n.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},_n.dates=x("dates accessor is deprecated. Use date instead.",wn),_n.months=x("months accessor is deprecated. Use month instead",Ve),_n.years=x("years accessor is deprecated. Use year instead",Ne),_n.zone=x("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",(function(e,t){return null!=e?("string"!==typeof e&&(e=-e),this.utcOffset(e,t),this):-this.utcOffset()})),_n.isDSTShifted=x("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",(function(){if(!s(this._isDSTShifted))return this._isDSTShifted;var e,t={};return y(t,this),(t=Tt(t))._a?(e=t._isUTC?h(t._a):Lt(t._a),this._isDSTShifted=this.isValid()&&function(e,t,n){var r,o=Math.min(e.length,t.length),i=Math.abs(e.length-t.length),a=0;for(r=0;r0):this._isDSTShifted=!1,this._isDSTShifted}));var Sn=S.prototype;function On(e,t,n,r){var o=vt(),i=h().set(r,t);return o[n](i,e)}function En(e,t,n){if(l(e)&&(t=e,e=void 0),e=e||"",null!=t)return On(e,t,n,"month");var r,o=[];for(r=0;r<12;r++)o[r]=On(e,r,n,"month");return o}function Tn(e,t,n,r){"boolean"===typeof e?(l(t)&&(n=t,t=void 0),t=t||""):(n=t=e,e=!1,l(t)&&(n=t,t=void 0),t=t||"");var o,i=vt(),a=e?i._week.dow:0,c=[];if(null!=n)return On(t,(n+a)%7,r,"day");for(o=0;o<7;o++)c[o]=On(t,(o+a)%7,r,"day");return c}Sn.calendar=function(e,t,n){var r=this._calendar[e]||this._calendar.sameElse;return _(r)?r.call(t,n):r},Sn.longDateFormat=function(e){var t=this._longDateFormat[e],n=this._longDateFormat[e.toUpperCase()];return t||!n?t:(this._longDateFormat[e]=n.match(E).map((function(e){return"MMMM"===e||"MM"===e||"DD"===e||"dddd"===e?e.slice(1):e})).join(""),this._longDateFormat[e])},Sn.invalidDate=function(){return this._invalidDate},Sn.ordinal=function(e){return this._ordinal.replace("%d",e)},Sn.preparse=qn,Sn.postformat=qn,Sn.relativeTime=function(e,t,n,r){var o=this._relativeTime[n];return _(o)?o(e,t,n,r):o.replace(/%d/i,e)},Sn.pastFuture=function(e,t){var n=this._relativeTime[e>0?"future":"past"];return _(n)?n(t):n.replace(/%s/i,t)},Sn.set=function(e){var t,n;for(n in e)a(e,n)&&(_(t=e[n])?this[n]=t:this["_"+n]=t);this._config=e,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},Sn.eras=function(e,t){var n,o,i,a=this._eras||vt("en")._eras;for(n=0,o=a.length;n=0)return s[r]},Sn.erasConvertYear=function(e,t){var n=e.since<=e.until?1:-1;return void 0===t?r(e.since).year():r(e.since).year()+(t-e.offset)*n},Sn.erasAbbrRegex=function(e){return a(this,"_erasAbbrRegex")||gn.call(this),e?this._erasAbbrRegex:this._erasRegex},Sn.erasNameRegex=function(e){return a(this,"_erasNameRegex")||gn.call(this),e?this._erasNameRegex:this._erasRegex},Sn.erasNarrowRegex=function(e){return a(this,"_erasNarrowRegex")||gn.call(this),e?this._erasNarrowRegex:this._erasRegex},Sn.months=function(e,t){return e?o(this._months)?this._months[e.month()]:this._months[(this._months.isFormat||Ae).test(t)?"format":"standalone"][e.month()]:o(this._months)?this._months:this._months.standalone},Sn.monthsShort=function(e,t){return e?o(this._monthsShort)?this._monthsShort[e.month()]:this._monthsShort[Ae.test(t)?"format":"standalone"][e.month()]:o(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},Sn.monthsParse=function(e,t,n){var r,o,i;if(this._monthsParseExact)return De.call(this,e,t,n);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),r=0;r<12;r++){if(o=h([2e3,r]),n&&!this._longMonthsParse[r]&&(this._longMonthsParse[r]=new RegExp("^"+this.months(o,"").replace(".","")+"$","i"),this._shortMonthsParse[r]=new RegExp("^"+this.monthsShort(o,"").replace(".","")+"$","i")),n||this._monthsParse[r]||(i="^"+this.months(o,"")+"|^"+this.monthsShort(o,""),this._monthsParse[r]=new RegExp(i.replace(".",""),"i")),n&&"MMMM"===t&&this._longMonthsParse[r].test(e))return r;if(n&&"MMM"===t&&this._shortMonthsParse[r].test(e))return r;if(!n&&this._monthsParse[r].test(e))return r}},Sn.monthsRegex=function(e){return this._monthsParseExact?(a(this,"_monthsRegex")||Re.call(this),e?this._monthsStrictRegex:this._monthsRegex):(a(this,"_monthsRegex")||(this._monthsRegex=He),this._monthsStrictRegex&&e?this._monthsStrictRegex:this._monthsRegex)},Sn.monthsShortRegex=function(e){return this._monthsParseExact?(a(this,"_monthsRegex")||Re.call(this),e?this._monthsShortStrictRegex:this._monthsShortRegex):(a(this,"_monthsShortRegex")||(this._monthsShortRegex=Le),this._monthsShortStrictRegex&&e?this._monthsShortStrictRegex:this._monthsShortRegex)},Sn.week=function(e){return Ge(e,this._week.dow,this._week.doy).week},Sn.firstDayOfYear=function(){return this._week.doy},Sn.firstDayOfWeek=function(){return this._week.dow},Sn.weekdays=function(e,t){var n=o(this._weekdays)?this._weekdays:this._weekdays[e&&!0!==e&&this._weekdays.isFormat.test(t)?"format":"standalone"];return!0===e?$e(n,this._week.dow):e?n[e.day()]:n},Sn.weekdaysMin=function(e){return!0===e?$e(this._weekdaysMin,this._week.dow):e?this._weekdaysMin[e.day()]:this._weekdaysMin},Sn.weekdaysShort=function(e){return!0===e?$e(this._weekdaysShort,this._week.dow):e?this._weekdaysShort[e.day()]:this._weekdaysShort},Sn.weekdaysParse=function(e,t,n){var r,o,i;if(this._weekdaysParseExact)return tt.call(this,e,t,n);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),r=0;r<7;r++){if(o=h([2e3,1]).day(r),n&&!this._fullWeekdaysParse[r]&&(this._fullWeekdaysParse[r]=new RegExp("^"+this.weekdays(o,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[r]=new RegExp("^"+this.weekdaysShort(o,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[r]=new RegExp("^"+this.weekdaysMin(o,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[r]||(i="^"+this.weekdays(o,"")+"|^"+this.weekdaysShort(o,"")+"|^"+this.weekdaysMin(o,""),this._weekdaysParse[r]=new RegExp(i.replace(".",""),"i")),n&&"dddd"===t&&this._fullWeekdaysParse[r].test(e))return r;if(n&&"ddd"===t&&this._shortWeekdaysParse[r].test(e))return r;if(n&&"dd"===t&&this._minWeekdaysParse[r].test(e))return r;if(!n&&this._weekdaysParse[r].test(e))return r}},Sn.weekdaysRegex=function(e){return this._weekdaysParseExact?(a(this,"_weekdaysRegex")||nt.call(this),e?this._weekdaysStrictRegex:this._weekdaysRegex):(a(this,"_weekdaysRegex")||(this._weekdaysRegex=Qe),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)},Sn.weekdaysShortRegex=function(e){return this._weekdaysParseExact?(a(this,"_weekdaysRegex")||nt.call(this),e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(a(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=Je),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},Sn.weekdaysMinRegex=function(e){return this._weekdaysParseExact?(a(this,"_weekdaysRegex")||nt.call(this),e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(a(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=et),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},Sn.isPM=function(e){return"p"===(e+"").toLowerCase().charAt(0)},Sn.meridiem=function(e,t,n){return e>11?n?"pm":"PM":n?"am":"AM"},pt("en",{eras:[{since:"0001-01-01",until:1/0,offset:1,name:"Anno Domini",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"Before Christ",narrow:"BC",abbr:"BC"}],dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10;return e+(1===G(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")}}),r.lang=x("moment.lang is deprecated. Use moment.locale instead.",pt),r.langData=x("moment.langData is deprecated. Use moment.localeData instead.",vt);var An=Math.abs;function Ln(e,t,n,r){var o=Xt(t,n);return e._milliseconds+=r*o._milliseconds,e._days+=r*o._days,e._months+=r*o._months,e._bubble()}function Hn(e){return e<0?Math.floor(e):Math.ceil(e)}function Dn(e){return 4800*e/146097}function Pn(e){return 146097*e/4800}function Vn(e){return function(){return this.as(e)}}var Rn=Vn("ms"),In=Vn("s"),Nn=Vn("m"),Fn=Vn("h"),Bn=Vn("d"),Un=Vn("w"),Wn=Vn("M"),Gn=Vn("Q"),Yn=Vn("y");function $n(e){return function(){return this.isValid()?this._data[e]:NaN}}var Zn=$n("milliseconds"),Xn=$n("seconds"),Kn=$n("minutes"),Qn=$n("hours"),Jn=$n("days"),er=$n("months"),tr=$n("years"),nr=Math.round,rr={ss:44,s:45,m:45,h:22,d:26,w:null,M:11};function or(e,t,n,r,o){return o.relativeTime(t||1,!!n,e,r)}var ir=Math.abs;function ar(e){return(e>0)-(e<0)||+e}function cr(){if(!this.isValid())return this.localeData().invalidDate();var e,t,n,r,o,i,a,c,s=ir(this._milliseconds)/1e3,l=ir(this._days),u=ir(this._months),f=this.asSeconds();return f?(e=W(s/60),t=W(e/60),s%=60,e%=60,n=W(u/12),u%=12,r=s?s.toFixed(3).replace(/\.?0+$/,""):"",o=f<0?"-":"",i=ar(this._months)!==ar(f)?"-":"",a=ar(this._days)!==ar(f)?"-":"",c=ar(this._milliseconds)!==ar(f)?"-":"",o+"P"+(n?i+n+"Y":"")+(u?i+u+"M":"")+(l?a+l+"D":"")+(t||e||s?"T":"")+(t?c+t+"H":"")+(e?c+e+"M":"")+(s?c+r+"S":"")):"P0D"}var sr=Rt.prototype;return sr.isValid=function(){return this._isValid},sr.abs=function(){var e=this._data;return this._milliseconds=An(this._milliseconds),this._days=An(this._days),this._months=An(this._months),e.milliseconds=An(e.milliseconds),e.seconds=An(e.seconds),e.minutes=An(e.minutes),e.hours=An(e.hours),e.months=An(e.months),e.years=An(e.years),this},sr.add=function(e,t){return Ln(this,e,t,1)},sr.subtract=function(e,t){return Ln(this,e,t,-1)},sr.as=function(e){if(!this.isValid())return NaN;var t,n,r=this._milliseconds;if("month"===(e=I(e))||"quarter"===e||"year"===e)switch(t=this._days+r/864e5,n=this._months+Dn(t),e){case"month":return n;case"quarter":return n/3;case"year":return n/12}else switch(t=this._days+Math.round(Pn(this._months)),e){case"week":return t/7+r/6048e5;case"day":return t+r/864e5;case"hour":return 24*t+r/36e5;case"minute":return 1440*t+r/6e4;case"second":return 86400*t+r/1e3;case"millisecond":return Math.floor(864e5*t)+r;default:throw new Error("Unknown unit "+e)}},sr.asMilliseconds=Rn,sr.asSeconds=In,sr.asMinutes=Nn,sr.asHours=Fn,sr.asDays=Bn,sr.asWeeks=Un,sr.asMonths=Wn,sr.asQuarters=Gn,sr.asYears=Yn,sr.valueOf=function(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*G(this._months/12):NaN},sr._bubble=function(){var e,t,n,r,o,i=this._milliseconds,a=this._days,c=this._months,s=this._data;return i>=0&&a>=0&&c>=0||i<=0&&a<=0&&c<=0||(i+=864e5*Hn(Pn(c)+a),a=0,c=0),s.milliseconds=i%1e3,e=W(i/1e3),s.seconds=e%60,t=W(e/60),s.minutes=t%60,n=W(t/60),s.hours=n%24,a+=W(n/24),o=W(Dn(a)),c+=o,a-=Hn(Pn(o)),r=W(c/12),c%=12,s.days=a,s.months=c,s.years=r,this},sr.clone=function(){return Xt(this)},sr.get=function(e){return e=I(e),this.isValid()?this[e+"s"]():NaN},sr.milliseconds=Zn,sr.seconds=Xn,sr.minutes=Kn,sr.hours=Qn,sr.days=Jn,sr.weeks=function(){return W(this.days()/7)},sr.months=er,sr.years=tr,sr.humanize=function(e,t){if(!this.isValid())return this.localeData().invalidDate();var n,r,o=!1,i=rr;return"object"===typeof e&&(t=e,e=!1),"boolean"===typeof e&&(o=e),"object"===typeof t&&(i=Object.assign({},rr,t),null!=t.s&&null==t.ss&&(i.ss=t.s-1)),n=this.localeData(),r=function(e,t,n,r){var o=Xt(e).abs(),i=nr(o.as("s")),a=nr(o.as("m")),c=nr(o.as("h")),s=nr(o.as("d")),l=nr(o.as("M")),u=nr(o.as("w")),f=nr(o.as("y")),d=i<=n.ss&&["s",i]||i0,d[4]=r,or.apply(null,d)}(this,!o,i,n),o&&(r=n.pastFuture(+this,r)),n.postformat(r)},sr.toISOString=cr,sr.toString=cr,sr.toJSON=cr,sr.locale=an,sr.localeData=sn,sr.toIsoString=x("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",cr),sr.lang=cn,H("X",0,0,"unix"),H("x",0,0,"valueOf"),he("x",le),he("X",/[+-]?\d+(\.\d{1,3})?/),ge("X",(function(e,t,n){n._d=new Date(1e3*parseFloat(e))})),ge("x",(function(e,t,n){n._d=new Date(G(e))})),r.version="2.29.1",t=Lt,r.fn=_n,r.min=function(){return Pt("isBefore",[].slice.call(arguments,0))},r.max=function(){return Pt("isAfter",[].slice.call(arguments,0))},r.now=function(){return Date.now?Date.now():+new Date},r.utc=h,r.unix=function(e){return Lt(1e3*e)},r.months=function(e,t){return En(e,t,"months")},r.isDate=u,r.locale=pt,r.invalid=v,r.duration=Xt,r.isMoment=w,r.weekdays=function(e,t,n){return Tn(e,t,n,"weekdays")},r.parseZone=function(){return Lt.apply(null,arguments).parseZone()},r.localeData=vt,r.isDuration=It,r.monthsShort=function(e,t){return En(e,t,"monthsShort")},r.weekdaysMin=function(e,t,n){return Tn(e,t,n,"weekdaysMin")},r.defineLocale=zt,r.updateLocale=function(e,t){if(null!=t){var n,r,o=st;null!=lt[e]&&null!=lt[e].parentLocale?lt[e].set(q(lt[e]._config,t)):(null!=(r=ht(e))&&(o=r._config),t=q(o,t),null==r&&(t.abbr=e),(n=new S(t)).parentLocale=lt[e],lt[e]=n),pt(e)}else null!=lt[e]&&(null!=lt[e].parentLocale?(lt[e]=lt[e].parentLocale,e===pt()&&pt(e)):null!=lt[e]&&delete lt[e]);return lt[e]},r.locales=function(){return j(lt)},r.weekdaysShort=function(e,t,n){return Tn(e,t,n,"weekdaysShort")},r.normalizeUnits=I,r.relativeTimeRounding=function(e){return void 0===e?nr:"function"===typeof e&&(nr=e,!0)},r.relativeTimeThreshold=function(e,t){return void 0!==rr[e]&&(void 0===t?rr[e]:(rr[e]=t,"s"===e&&(rr.ss=t-1),!0))},r.calendarFormat=function(e,t){var n=e.diff(t,"days",!0);return n<-6?"sameElse":n<-1?"lastWeek":n<0?"lastDay":n<1?"sameDay":n<2?"nextDay":n<7?"nextWeek":"sameElse"},r.prototype=_n,r.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},r}()}).call(this,n(491)(e))},,function(e,t,n){"use strict";var r={};r.e=function(e,t){var n=document.createElement(e);return n.className=t,n},r.appendTo=function(e,t){return t.appendChild(e),e},r.css=function(e,t,n){return"object"===typeof t?function(e,t){for(var n in t){var r=t[n];"number"===typeof r&&(r=r.toString()+"px"),e.style[n]=r}return e}(e,t):"undefined"===typeof n?function(e,t){return window.getComputedStyle(e)[t]}(e,t):function(e,t,n){return"number"===typeof n&&(n=n.toString()+"px"),e.style[t]=n,e}(e,t,n)},r.matches=function(e,t){return"undefined"!==typeof e.matches?e.matches(t):"undefined"!==typeof e.matchesSelector?e.matchesSelector(t):"undefined"!==typeof e.webkitMatchesSelector?e.webkitMatchesSelector(t):"undefined"!==typeof e.mozMatchesSelector?e.mozMatchesSelector(t):"undefined"!==typeof e.msMatchesSelector?e.msMatchesSelector(t):void 0},r.remove=function(e){"undefined"!==typeof e.remove?e.remove():e.parentNode&&e.parentNode.removeChild(e)},r.queryChildren=function(e,t){return Array.prototype.filter.call(e.childNodes,(function(e){return r.matches(e,t)}))},e.exports=r},function(e,t,n){"use strict";e.exports=n(331)},function(e,t,n){"use strict";function r(e){return"[object Object]"===Object.prototype.toString.call(e)}n.d(t,"a",(function(){return r}))},function(e,t,n){"use strict";n.d(t,"a",(function(){return r}));var r=function(){return"function"===typeof Symbol?Symbol("rxSubscriber"):"@@rxSubscriber_"+Math.random()}()},function(e,t,n){"use strict";function r(e){return"function"===typeof e}n.d(t,"a",(function(){return r}))},function(e,t,n){"use strict";function r(e){var t=new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()));return t.setUTCFullYear(e.getFullYear()),e.getTime()-t.getTime()}n.d(t,"a",(function(){return r}))},function(e,t,n){"use strict";n.r(t),n.d(t,"default",(function(){return i}));var r=n(10),o=n(6);function i(e){Object(o.a)(1,arguments);var t=Object(r.default)(e);return t.setHours(0,0,0,0),t}},,function(e,t,n){"use strict";n.d(t,"createTable",(function(){return s})),n.d(t,"useTableInstance",(function(){return l}));var r=n(0),o=n(140);n.o(o,"getCoreRowModel")&&n.d(t,"getCoreRowModel",(function(){return o.getCoreRowModel})),n.o(o,"getFilteredRowModel")&&n.d(t,"getFilteredRowModel",(function(){return o.getFilteredRowModel})),n.o(o,"getPaginationRowModel")&&n.d(t,"getPaginationRowModel",(function(){return o.getPaginationRowModel})),n.o(o,"getSortedRowModel")&&n.d(t,"getSortedRowModel",(function(){return o.getSortedRowModel}));var i=function(){return(i=Object.assign||function(e){for(var t,n=1,r=arguments.length;n=0;c--)(o=e[c])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a}function s(e,t){return function(n,r){t(n,r,e)}}function l(e,t){if("object"===typeof Reflect&&"function"===typeof Reflect.metadata)return Reflect.metadata(e,t)}function u(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{s(r.next(e))}catch(t){i(t)}}function c(e){try{s(r.throw(e))}catch(t){i(t)}}function s(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}s((r=r.apply(e,t||[])).next())}))}function f(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:c(0),throw:c(1),return:c(2)},"function"===typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function c(i){return function(c){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function z(e,t){var n="function"===typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,o,i=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=i.next()).done;)a.push(r.value)}catch(c){o={error:c}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return a}function v(){for(var e=[],t=0;t1||c(e,t)}))})}function c(e,t){try{(n=o[e](t)).value instanceof y?Promise.resolve(n.value.v).then(s,l):u(i[0][2],n)}catch(r){u(i[0][3],r)}var n}function s(e){c("next",e)}function l(e){c("throw",e)}function u(e,t){e(t),i.shift(),i.length&&c(i[0][0],i[0][1])}}function w(e){var t,n;return t={},r("next"),r("throw",(function(e){throw e})),r("return"),t[Symbol.iterator]=function(){return this},t;function r(r,o){t[r]=e[r]?function(t){return(n=!n)?{value:y(e[r](t)),done:"return"===r}:o?o(t):t}:o}}function k(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t,n=e[Symbol.asyncIterator];return n?n.call(e):(e=p(e),t={},r("next"),r("throw"),r("return"),t[Symbol.asyncIterator]=function(){return this},t);function r(n){t[n]=e[n]&&function(t){return new Promise((function(r,o){(function(e,t,n,r){Promise.resolve(r).then((function(t){e({value:t,done:n})}),t)})(r,o,(t=e[n](t)).done,t.value)}))}}}function x(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e}var j=Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t};function M(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&d(t,e,n);return j(t,e),t}function C(e){return e&&e.__esModule?e:{default:e}}function _(e,t,n,r){if("a"===n&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"===typeof t?e!==t||!r:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?r:"a"===n?r.call(e):r?r.value:t.get(e)}function q(e,t,n,r,o){if("m"===r)throw new TypeError("Private method is not writable");if("a"===r&&!o)throw new TypeError("Private accessor was defined without a setter");if("function"===typeof t?e!==t||!o:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===r?o.call(e,n):o?o.value=n:t.set(e,n),n}},,function(e,t,n){"use strict";var r=n(67),o=n(98),i=Object(r.a)(o.a);t.a=i},function(e,t,n){"use strict";var r=n(164),o=n(67),i=Object(o.a)(Object(r.a)("slice",(function(e,t,n){return Array.prototype.slice.call(n,e,t)})));t.a=i},function(e,t,n){e.exports=n(342)},function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var r=n(43),o=n(54);function i(e,t){return new r.a((function(n){var r=new o.a,i=0;return r.add(t.schedule((function(){i!==e.length?(n.next(e[i++]),n.closed||r.add(this.schedule())):n.complete()}))),r}))}},function(e,t,n){"use strict";n.d(t,"a",(function(){return a}));var r=n(96),o=n(191),i=n(43);function a(e,t,n,a,c){if(void 0===c&&(c=new r.a(e,n,a)),!c.closed)return t instanceof i.a?t.subscribe(c):Object(o.a)(t)(c)}},function(e,t,n){"use strict";n.d(t,"a",(function(){return o}));var r=n(32),o=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r.b(t,e),t.prototype.notifyNext=function(e,t,n,r,o){this.destination.next(t)},t.prototype.notifyError=function(e,t){this.destination.error(e)},t.prototype.notifyComplete=function(e){this.destination.complete()},t}(n(53).a)},function(e,t,n){var r,o;window,e.exports=(r=n(0),o=n(30),function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=9)}([function(e,t,n){(function(e,r){var o;(function(){var i="Expected a function",a="__lodash_placeholder__",c=[["ary",128],["bind",1],["bindKey",2],["curry",8],["curryRight",16],["flip",512],["partial",32],["partialRight",64],["rearg",256]],s="[object Arguments]",l="[object Array]",u="[object Boolean]",f="[object Date]",d="[object Error]",h="[object Function]",p="[object GeneratorFunction]",z="[object Map]",v="[object Number]",g="[object Object]",m="[object RegExp]",y="[object Set]",b="[object String]",w="[object Symbol]",k="[object WeakMap]",x="[object ArrayBuffer]",j="[object DataView]",M="[object Float32Array]",C="[object Float64Array]",_="[object Int8Array]",q="[object Int16Array]",S="[object Int32Array]",O="[object Uint8Array]",E="[object Uint16Array]",T="[object Uint32Array]",A=/\b__p \+= '';/g,L=/\b(__p \+=) '' \+/g,H=/(__e\(.*?\)|\b__t\)) \+\n'';/g,D=/&(?:amp|lt|gt|quot|#39);/g,P=/[&<>"']/g,V=RegExp(D.source),R=RegExp(P.source),I=/<%-([\s\S]+?)%>/g,N=/<%([\s\S]+?)%>/g,F=/<%=([\s\S]+?)%>/g,B=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,U=/^\w*$/,W=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,G=/[\\^$.*+?()[\]{}|]/g,Y=RegExp(G.source),$=/^\s+|\s+$/g,Z=/^\s+/,X=/\s+$/,K=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,Q=/\{\n\/\* \[wrapped with (.+)\] \*/,J=/,? & /,ee=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,te=/\\(\\)?/g,ne=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,re=/\w*$/,oe=/^[-+]0x[0-9a-f]+$/i,ie=/^0b[01]+$/i,ae=/^\[object .+?Constructor\]$/,ce=/^0o[0-7]+$/i,se=/^(?:0|[1-9]\d*)$/,le=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,ue=/($^)/,fe=/['\n\r\u2028\u2029\\]/g,de="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",he="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",pe="["+he+"]",ze="["+de+"]",ve="\\d+",ge="[a-z\\xdf-\\xf6\\xf8-\\xff]",me="[^\\ud800-\\udfff"+he+ve+"\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde]",ye="\\ud83c[\\udffb-\\udfff]",be="[^\\ud800-\\udfff]",we="(?:\\ud83c[\\udde6-\\uddff]){2}",ke="[\\ud800-\\udbff][\\udc00-\\udfff]",xe="[A-Z\\xc0-\\xd6\\xd8-\\xde]",je="(?:"+ge+"|"+me+")",Me="(?:"+xe+"|"+me+")",Ce="(?:"+ze+"|"+ye+")?",_e="[\\ufe0e\\ufe0f]?"+Ce+"(?:\\u200d(?:"+[be,we,ke].join("|")+")[\\ufe0e\\ufe0f]?"+Ce+")*",qe="(?:"+["[\\u2700-\\u27bf]",we,ke].join("|")+")"+_e,Se="(?:"+[be+ze+"?",ze,we,ke,"[\\ud800-\\udfff]"].join("|")+")",Oe=RegExp("['\u2019]","g"),Ee=RegExp(ze,"g"),Te=RegExp(ye+"(?="+ye+")|"+Se+_e,"g"),Ae=RegExp([xe+"?"+ge+"+(?:['\u2019](?:d|ll|m|re|s|t|ve))?(?="+[pe,xe,"$"].join("|")+")",Me+"+(?:['\u2019](?:D|LL|M|RE|S|T|VE))?(?="+[pe,xe+je,"$"].join("|")+")",xe+"?"+je+"+(?:['\u2019](?:d|ll|m|re|s|t|ve))?",xe+"+(?:['\u2019](?:D|LL|M|RE|S|T|VE))?","\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",ve,qe].join("|"),"g"),Le=RegExp("[\\u200d\\ud800-\\udfff"+de+"\\ufe0e\\ufe0f]"),He=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,De=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],Pe=-1,Ve={};Ve[M]=Ve[C]=Ve[_]=Ve[q]=Ve[S]=Ve[O]=Ve["[object Uint8ClampedArray]"]=Ve[E]=Ve[T]=!0,Ve[s]=Ve[l]=Ve[x]=Ve[u]=Ve[j]=Ve[f]=Ve[d]=Ve[h]=Ve[z]=Ve[v]=Ve[g]=Ve[m]=Ve[y]=Ve[b]=Ve[k]=!1;var Re={};Re[s]=Re[l]=Re[x]=Re[j]=Re[u]=Re[f]=Re[M]=Re[C]=Re[_]=Re[q]=Re[S]=Re[z]=Re[v]=Re[g]=Re[m]=Re[y]=Re[b]=Re[w]=Re[O]=Re["[object Uint8ClampedArray]"]=Re[E]=Re[T]=!0,Re[d]=Re[h]=Re[k]=!1;var Ie={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Ne=parseFloat,Fe=parseInt,Be="object"==typeof e&&e&&e.Object===Object&&e,Ue="object"==typeof self&&self&&self.Object===Object&&self,We=Be||Ue||Function("return this")(),Ge=t&&!t.nodeType&&t,Ye=Ge&&"object"==typeof r&&r&&!r.nodeType&&r,$e=Ye&&Ye.exports===Ge,Ze=$e&&Be.process,Xe=function(){try{return Ye&&Ye.require&&Ye.require("util").types||Ze&&Ze.binding&&Ze.binding("util")}catch(e){}}(),Ke=Xe&&Xe.isArrayBuffer,Qe=Xe&&Xe.isDate,Je=Xe&&Xe.isMap,et=Xe&&Xe.isRegExp,tt=Xe&&Xe.isSet,nt=Xe&&Xe.isTypedArray;function rt(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}function ot(e,t,n,r){for(var o=-1,i=null==e?0:e.length;++o-1}function ut(e,t,n){for(var r=-1,o=null==e?0:e.length;++r-1;);return n}function Tt(e,t){for(var n=e.length;n--&&yt(t,e[n],0)>-1;);return n}function At(e,t){for(var n=e.length,r=0;n--;)e[n]===t&&++r;return r}var Lt=jt({"\xc0":"A","\xc1":"A","\xc2":"A","\xc3":"A","\xc4":"A","\xc5":"A","\xe0":"a","\xe1":"a","\xe2":"a","\xe3":"a","\xe4":"a","\xe5":"a","\xc7":"C","\xe7":"c","\xd0":"D","\xf0":"d","\xc8":"E","\xc9":"E","\xca":"E","\xcb":"E","\xe8":"e","\xe9":"e","\xea":"e","\xeb":"e","\xcc":"I","\xcd":"I","\xce":"I","\xcf":"I","\xec":"i","\xed":"i","\xee":"i","\xef":"i","\xd1":"N","\xf1":"n","\xd2":"O","\xd3":"O","\xd4":"O","\xd5":"O","\xd6":"O","\xd8":"O","\xf2":"o","\xf3":"o","\xf4":"o","\xf5":"o","\xf6":"o","\xf8":"o","\xd9":"U","\xda":"U","\xdb":"U","\xdc":"U","\xf9":"u","\xfa":"u","\xfb":"u","\xfc":"u","\xdd":"Y","\xfd":"y","\xff":"y","\xc6":"Ae","\xe6":"ae","\xde":"Th","\xfe":"th","\xdf":"ss","\u0100":"A","\u0102":"A","\u0104":"A","\u0101":"a","\u0103":"a","\u0105":"a","\u0106":"C","\u0108":"C","\u010a":"C","\u010c":"C","\u0107":"c","\u0109":"c","\u010b":"c","\u010d":"c","\u010e":"D","\u0110":"D","\u010f":"d","\u0111":"d","\u0112":"E","\u0114":"E","\u0116":"E","\u0118":"E","\u011a":"E","\u0113":"e","\u0115":"e","\u0117":"e","\u0119":"e","\u011b":"e","\u011c":"G","\u011e":"G","\u0120":"G","\u0122":"G","\u011d":"g","\u011f":"g","\u0121":"g","\u0123":"g","\u0124":"H","\u0126":"H","\u0125":"h","\u0127":"h","\u0128":"I","\u012a":"I","\u012c":"I","\u012e":"I","\u0130":"I","\u0129":"i","\u012b":"i","\u012d":"i","\u012f":"i","\u0131":"i","\u0134":"J","\u0135":"j","\u0136":"K","\u0137":"k","\u0138":"k","\u0139":"L","\u013b":"L","\u013d":"L","\u013f":"L","\u0141":"L","\u013a":"l","\u013c":"l","\u013e":"l","\u0140":"l","\u0142":"l","\u0143":"N","\u0145":"N","\u0147":"N","\u014a":"N","\u0144":"n","\u0146":"n","\u0148":"n","\u014b":"n","\u014c":"O","\u014e":"O","\u0150":"O","\u014d":"o","\u014f":"o","\u0151":"o","\u0154":"R","\u0156":"R","\u0158":"R","\u0155":"r","\u0157":"r","\u0159":"r","\u015a":"S","\u015c":"S","\u015e":"S","\u0160":"S","\u015b":"s","\u015d":"s","\u015f":"s","\u0161":"s","\u0162":"T","\u0164":"T","\u0166":"T","\u0163":"t","\u0165":"t","\u0167":"t","\u0168":"U","\u016a":"U","\u016c":"U","\u016e":"U","\u0170":"U","\u0172":"U","\u0169":"u","\u016b":"u","\u016d":"u","\u016f":"u","\u0171":"u","\u0173":"u","\u0174":"W","\u0175":"w","\u0176":"Y","\u0177":"y","\u0178":"Y","\u0179":"Z","\u017b":"Z","\u017d":"Z","\u017a":"z","\u017c":"z","\u017e":"z","\u0132":"IJ","\u0133":"ij","\u0152":"Oe","\u0153":"oe","\u0149":"'n","\u017f":"s"}),Ht=jt({"&":"&","<":"<",">":">",'"':""","'":"'"});function Dt(e){return"\\"+Ie[e]}function Pt(e){return Le.test(e)}function Vt(e){var t=-1,n=Array(e.size);return e.forEach((function(e,r){n[++t]=[r,e]})),n}function Rt(e,t){return function(n){return e(t(n))}}function It(e,t){for(var n=-1,r=e.length,o=0,i=[];++n",""":'"',"'":"'"}),Wt=function e(t){var n,r=(t=null==t?We:Wt.defaults(We.Object(),t,Wt.pick(We,De))).Array,o=t.Date,de=t.Error,he=t.Function,pe=t.Math,ze=t.Object,ve=t.RegExp,ge=t.String,me=t.TypeError,ye=r.prototype,be=he.prototype,we=ze.prototype,ke=t["__core-js_shared__"],xe=be.toString,je=we.hasOwnProperty,Me=0,Ce=(n=/[^.]+$/.exec(ke&&ke.keys&&ke.keys.IE_PROTO||""))?"Symbol(src)_1."+n:"",_e=we.toString,qe=xe.call(ze),Se=We._,Te=ve("^"+xe.call(je).replace(G,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),Le=$e?t.Buffer:void 0,Ie=t.Symbol,Be=t.Uint8Array,Ue=Le?Le.allocUnsafe:void 0,Ge=Rt(ze.getPrototypeOf,ze),Ye=ze.create,Ze=we.propertyIsEnumerable,Xe=ye.splice,vt=Ie?Ie.isConcatSpreadable:void 0,jt=Ie?Ie.iterator:void 0,Gt=Ie?Ie.toStringTag:void 0,Yt=function(){try{var e=Qo(ze,"defineProperty");return e({},"",{}),e}catch(e){}}(),$t=t.clearTimeout!==We.clearTimeout&&t.clearTimeout,Zt=o&&o.now!==We.Date.now&&o.now,Xt=t.setTimeout!==We.setTimeout&&t.setTimeout,Kt=pe.ceil,Qt=pe.floor,Jt=ze.getOwnPropertySymbols,en=Le?Le.isBuffer:void 0,tn=t.isFinite,nn=ye.join,rn=Rt(ze.keys,ze),on=pe.max,an=pe.min,cn=o.now,sn=t.parseInt,ln=pe.random,un=ye.reverse,fn=Qo(t,"DataView"),dn=Qo(t,"Map"),hn=Qo(t,"Promise"),pn=Qo(t,"Set"),zn=Qo(t,"WeakMap"),vn=Qo(ze,"create"),gn=zn&&new zn,mn={},yn=Mi(fn),bn=Mi(dn),wn=Mi(hn),kn=Mi(pn),xn=Mi(zn),jn=Ie?Ie.prototype:void 0,Mn=jn?jn.valueOf:void 0,Cn=jn?jn.toString:void 0;function _n(e){if(Fa(e)&&!Ea(e)&&!(e instanceof En)){if(e instanceof On)return e;if(je.call(e,"__wrapped__"))return Ci(e)}return new On(e)}var qn=function(){function e(){}return function(t){if(!Na(t))return{};if(Ye)return Ye(t);e.prototype=t;var n=new e;return e.prototype=void 0,n}}();function Sn(){}function On(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=void 0}function En(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=4294967295,this.__views__=[]}function Tn(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t=t?e:t)),e}function Zn(e,t,n,r,o,i){var a,c=1&t,l=2&t,d=4&t;if(n&&(a=o?n(e,r,o,i):n(e)),void 0!==a)return a;if(!Na(e))return e;var k=Ea(e);if(k){if(a=function(e){var t=e.length,n=new e.constructor(t);return t&&"string"==typeof e[0]&&je.call(e,"index")&&(n.index=e.index,n.input=e.input),n}(e),!c)return vo(e,a)}else{var A=ti(e),L=A==h||A==p;if(Ha(e))return lo(e,c);if(A==g||A==s||L&&!o){if(a=l||L?{}:ri(e),!c)return l?function(e,t){return go(e,ei(e),t)}(e,function(e,t){return e&&go(t,yc(t),e)}(a,e)):function(e,t){return go(e,Jo(e),t)}(e,Wn(a,e))}else{if(!Re[A])return o?e:{};a=function(e,t,n){var r,o=e.constructor;switch(t){case x:return uo(e);case u:case f:return new o(+e);case j:return function(e,t){var n=t?uo(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.byteLength)}(e,n);case M:case C:case _:case q:case S:case O:case"[object Uint8ClampedArray]":case E:case T:return fo(e,n);case z:return new o;case v:case b:return new o(e);case m:return function(e){var t=new e.constructor(e.source,re.exec(e));return t.lastIndex=e.lastIndex,t}(e);case y:return new o;case w:return r=e,Mn?ze(Mn.call(r)):{}}}(e,A,c)}}i||(i=new Dn);var H=i.get(e);if(H)return H;i.set(e,a),Ya(e)?e.forEach((function(r){a.add(Zn(r,t,n,r,e,i))})):Ba(e)&&e.forEach((function(r,o){a.set(o,Zn(r,t,n,o,e,i))}));var D=k?void 0:(d?l?Wo:Uo:l?yc:mc)(e);return it(D||e,(function(r,o){D&&(r=e[o=r]),Fn(a,o,Zn(r,t,n,o,e,i))})),a}function Xn(e,t,n){var r=n.length;if(null==e)return!r;for(e=ze(e);r--;){var o=n[r],i=t[o],a=e[o];if(void 0===a&&!(o in e)||!i(a))return!1}return!0}function Kn(e,t,n){if("function"!=typeof e)throw new me(i);return mi((function(){e.apply(void 0,n)}),t)}function Qn(e,t,n,r){var o=-1,i=lt,a=!0,c=e.length,s=[],l=t.length;if(!c)return s;n&&(t=ft(t,qt(n))),r?(i=ut,a=!1):t.length>=200&&(i=Ot,a=!1,t=new Hn(t));e:for(;++o-1},An.prototype.set=function(e,t){var n=this.__data__,r=Bn(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this},Ln.prototype.clear=function(){this.size=0,this.__data__={hash:new Tn,map:new(dn||An),string:new Tn}},Ln.prototype.delete=function(e){var t=Xo(this,e).delete(e);return this.size-=t?1:0,t},Ln.prototype.get=function(e){return Xo(this,e).get(e)},Ln.prototype.has=function(e){return Xo(this,e).has(e)},Ln.prototype.set=function(e,t){var n=Xo(this,e),r=n.size;return n.set(e,t),this.size+=n.size==r?0:1,this},Hn.prototype.add=Hn.prototype.push=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this},Hn.prototype.has=function(e){return this.__data__.has(e)},Dn.prototype.clear=function(){this.__data__=new An,this.size=0},Dn.prototype.delete=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n},Dn.prototype.get=function(e){return this.__data__.get(e)},Dn.prototype.has=function(e){return this.__data__.has(e)},Dn.prototype.set=function(e,t){var n=this.__data__;if(n instanceof An){var r=n.__data__;if(!dn||r.length<199)return r.push([e,t]),this.size=++n.size,this;n=this.__data__=new Ln(r)}return n.set(e,t),this.size=n.size,this};var Jn=bo(cr),er=bo(sr,!0);function tr(e,t){var n=!0;return Jn(e,(function(e,r,o){return n=!!t(e,r,o)})),n}function nr(e,t,n){for(var r=-1,o=e.length;++r0&&n(c)?t>1?or(c,t-1,n,r,o):dt(o,c):r||(o[o.length]=c)}return o}var ir=wo(),ar=wo(!0);function cr(e,t){return e&&ir(e,t,mc)}function sr(e,t){return e&&ar(e,t,mc)}function lr(e,t){return st(t,(function(t){return Va(e[t])}))}function ur(e,t){for(var n=0,r=(t=io(t,e)).length;null!=e&&nt}function pr(e,t){return null!=e&&je.call(e,t)}function zr(e,t){return null!=e&&t in ze(e)}function vr(e,t,n){for(var o=n?ut:lt,i=e[0].length,a=e.length,c=a,s=r(a),l=1/0,u=[];c--;){var f=e[c];c&&t&&(f=ft(f,qt(t))),l=an(f.length,l),s[c]=!n&&(t||i>=120&&f.length>=120)?new Hn(c&&f):void 0}f=e[0];var d=-1,h=s[0];e:for(;++d=c?s:s*("desc"==n[r]?-1:1)}return e.index-t.index}(e,t,n)}))}function Er(e,t,n){for(var r=-1,o=t.length,i={};++r-1;)c!==e&&Xe.call(c,s,1),Xe.call(e,s,1);return e}function Ar(e,t){for(var n=e?t.length:0,r=n-1;n--;){var o=t[n];if(n==r||o!==i){var i=o;ii(o)?Xe.call(e,o,1):Kr(e,o)}}return e}function Lr(e,t){return e+Qt(ln()*(t-e+1))}function Hr(e,t){var n="";if(!e||t<1||t>9007199254740991)return n;do{t%2&&(n+=e),(t=Qt(t/2))&&(e+=e)}while(t);return n}function Dr(e,t){return yi(hi(e,t,Uc),e+"")}function Pr(e){return Vn(_c(e))}function Vr(e,t){var n=_c(e);return ki(n,$n(t,0,n.length))}function Rr(e,t,n,r){if(!Na(e))return e;for(var o=-1,i=(t=io(t,e)).length,a=i-1,c=e;null!=c&&++oi?0:i+t),(n=n>i?i:n)<0&&(n+=i),i=t>n?0:n-t>>>0,t>>>=0;for(var a=r(i);++o>>1,a=e[i];null!==a&&!Za(a)&&(n?a<=t:a=200){var l=t?null:Do(e);if(l)return Nt(l);a=!1,o=Ot,s=new Hn}else s=t?[]:c;e:for(;++r=r?e:Br(e,t,n)}var so=$t||function(e){return We.clearTimeout(e)};function lo(e,t){if(t)return e.slice();var n=e.length,r=Ue?Ue(n):new e.constructor(n);return e.copy(r),r}function uo(e){var t=new e.constructor(e.byteLength);return new Be(t).set(new Be(e)),t}function fo(e,t){var n=t?uo(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}function ho(e,t){if(e!==t){var n=void 0!==e,r=null===e,o=e==e,i=Za(e),a=void 0!==t,c=null===t,s=t==t,l=Za(t);if(!c&&!l&&!i&&e>t||i&&a&&s&&!c&&!l||r&&a&&s||!n&&s||!o)return 1;if(!r&&!i&&!l&&e1?n[o-1]:void 0,a=o>2?n[2]:void 0;for(i=e.length>3&&"function"==typeof i?(o--,i):void 0,a&&ai(n[0],n[1],a)&&(i=o<3?void 0:i,o=1),t=ze(t);++r-1?o[i?t[a]:a]:void 0}}function Co(e){return Bo((function(t){var n=t.length,r=n,o=On.prototype.thru;for(e&&t.reverse();r--;){var a=t[r];if("function"!=typeof a)throw new me(i);if(o&&!c&&"wrapper"==Yo(a))var c=new On([],!0)}for(r=c?r:n;++r1&&y.reverse(),f&&lc))return!1;var l=i.get(e),u=i.get(t);if(l&&u)return l==t&&u==e;var f=-1,d=!0,h=2&n?new Hn:void 0;for(i.set(e,t),i.set(t,e);++f-1&&e%1==0&&e1?"& ":"")+t[r],t=t.join(n>2?", ":" "),e.replace(K,"{\n/* [wrapped with "+t+"] */\n")}(r,function(e,t){return it(c,(function(n){var r="_."+n[0];t&n[1]&&!lt(e,r)&&e.push(r)})),e.sort()}(function(e){var t=e.match(Q);return t?t[1].split(J):[]}(r),n)))}function wi(e){var t=0,n=0;return function(){var r=cn(),o=16-(r-n);if(n=r,o>0){if(++t>=800)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}function ki(e,t){var n=-1,r=e.length,o=r-1;for(t=void 0===t?r:t;++n1?e[t-1]:void 0;return n="function"==typeof n?(e.pop(),n):void 0,Gi(e,n)}));function Ji(e){var t=_n(e);return t.__chain__=!0,t}function ea(e,t){return t(e)}var ta=Bo((function(e){var t=e.length,n=t?e[0]:0,r=this.__wrapped__,o=function(t){return Yn(t,e)};return!(t>1||this.__actions__.length)&&r instanceof En&&ii(n)?((r=r.slice(n,+n+(t?1:0))).__actions__.push({func:ea,args:[o],thisArg:void 0}),new On(r,this.__chain__).thru((function(e){return t&&!e.length&&e.push(void 0),e}))):this.thru(o)})),na=mo((function(e,t,n){je.call(e,n)?++e[n]:Gn(e,n,1)})),ra=Mo(Oi),oa=Mo(Ei);function ia(e,t){return(Ea(e)?it:Jn)(e,Zo(t,3))}function aa(e,t){return(Ea(e)?at:er)(e,Zo(t,3))}var ca=mo((function(e,t,n){je.call(e,n)?e[n].push(t):Gn(e,n,[t])})),sa=Dr((function(e,t,n){var o=-1,i="function"==typeof t,a=Aa(e)?r(e.length):[];return Jn(e,(function(e){a[++o]=i?rt(t,e,n):gr(e,t,n)})),a})),la=mo((function(e,t,n){Gn(e,n,t)}));function ua(e,t){return(Ea(e)?ft:Mr)(e,Zo(t,3))}var fa=mo((function(e,t,n){e[n?0:1].push(t)}),(function(){return[[],[]]})),da=Dr((function(e,t){if(null==e)return[];var n=t.length;return n>1&&ai(e,t[0],t[1])?t=[]:n>2&&ai(t[0],t[1],t[2])&&(t=[t[0]]),Or(e,or(t,1),[])})),ha=Zt||function(){return We.Date.now()};function pa(e,t,n){return t=n?void 0:t,Vo(e,128,void 0,void 0,void 0,void 0,t=e&&null==t?e.length:t)}function za(e,t){var n;if("function"!=typeof t)throw new me(i);return e=tc(e),function(){return--e>0&&(n=t.apply(this,arguments)),e<=1&&(t=void 0),n}}var va=Dr((function(e,t,n){var r=1;if(n.length){var o=It(n,$o(va));r|=32}return Vo(e,r,t,n,o)})),ga=Dr((function(e,t,n){var r=3;if(n.length){var o=It(n,$o(ga));r|=32}return Vo(t,r,e,n,o)}));function ma(e,t,n){var r,o,a,c,s,l,u=0,f=!1,d=!1,h=!0;if("function"!=typeof e)throw new me(i);function p(t){var n=r,i=o;return r=o=void 0,u=t,c=e.apply(i,n)}function z(e){var n=e-l;return void 0===l||n>=t||n<0||d&&e-u>=a}function v(){var e=ha();if(z(e))return g(e);s=mi(v,function(e){var n=t-(e-l);return d?an(n,a-(e-u)):n}(e))}function g(e){return s=void 0,h&&r?p(e):(r=o=void 0,c)}function m(){var e=ha(),n=z(e);if(r=arguments,o=this,l=e,n){if(void 0===s)return function(e){return u=e,s=mi(v,t),f?p(e):c}(l);if(d)return so(s),s=mi(v,t),p(l)}return void 0===s&&(s=mi(v,t)),c}return t=rc(t)||0,Na(n)&&(f=!!n.leading,a=(d="maxWait"in n)?on(rc(n.maxWait)||0,t):a,h="trailing"in n?!!n.trailing:h),m.cancel=function(){void 0!==s&&so(s),u=0,r=l=o=s=void 0},m.flush=function(){return void 0===s?c:g(ha())},m}var ya=Dr((function(e,t){return Kn(e,1,t)})),ba=Dr((function(e,t,n){return Kn(e,rc(t)||0,n)}));function wa(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new me(i);var n=function n(){var r=arguments,o=t?t.apply(this,r):r[0],i=n.cache;if(i.has(o))return i.get(o);var a=e.apply(this,r);return n.cache=i.set(o,a)||i,a};return n.cache=new(wa.Cache||Ln),n}function ka(e){if("function"!=typeof e)throw new me(i);return function(){var t=arguments;switch(t.length){case 0:return!e.call(this);case 1:return!e.call(this,t[0]);case 2:return!e.call(this,t[0],t[1]);case 3:return!e.call(this,t[0],t[1],t[2])}return!e.apply(this,t)}}wa.Cache=Ln;var xa=ao((function(e,t){var n=(t=1==t.length&&Ea(t[0])?ft(t[0],qt(Zo())):ft(or(t,1),qt(Zo()))).length;return Dr((function(r){for(var o=-1,i=an(r.length,n);++o=t})),Oa=mr(function(){return arguments}())?mr:function(e){return Fa(e)&&je.call(e,"callee")&&!Ze.call(e,"callee")},Ea=r.isArray,Ta=Ke?qt(Ke):function(e){return Fa(e)&&dr(e)==x};function Aa(e){return null!=e&&Ia(e.length)&&!Va(e)}function La(e){return Fa(e)&&Aa(e)}var Ha=en||rs,Da=Qe?qt(Qe):function(e){return Fa(e)&&dr(e)==f};function Pa(e){if(!Fa(e))return!1;var t=dr(e);return t==d||"[object DOMException]"==t||"string"==typeof e.message&&"string"==typeof e.name&&!Wa(e)}function Va(e){if(!Na(e))return!1;var t=dr(e);return t==h||t==p||"[object AsyncFunction]"==t||"[object Proxy]"==t}function Ra(e){return"number"==typeof e&&e==tc(e)}function Ia(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}function Na(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}function Fa(e){return null!=e&&"object"==typeof e}var Ba=Je?qt(Je):function(e){return Fa(e)&&ti(e)==z};function Ua(e){return"number"==typeof e||Fa(e)&&dr(e)==v}function Wa(e){if(!Fa(e)||dr(e)!=g)return!1;var t=Ge(e);if(null===t)return!0;var n=je.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&xe.call(n)==qe}var Ga=et?qt(et):function(e){return Fa(e)&&dr(e)==m},Ya=tt?qt(tt):function(e){return Fa(e)&&ti(e)==y};function $a(e){return"string"==typeof e||!Ea(e)&&Fa(e)&&dr(e)==b}function Za(e){return"symbol"==typeof e||Fa(e)&&dr(e)==w}var Xa=nt?qt(nt):function(e){return Fa(e)&&Ia(e.length)&&!!Ve[dr(e)]},Ka=Ao(jr),Qa=Ao((function(e,t){return e<=t}));function Ja(e){if(!e)return[];if(Aa(e))return $a(e)?Bt(e):vo(e);if(jt&&e[jt])return function(e){for(var t,n=[];!(t=e.next()).done;)n.push(t.value);return n}(e[jt]());var t=ti(e);return(t==z?Vt:t==y?Nt:_c)(e)}function ec(e){return e?(e=rc(e))===1/0||e===-1/0?17976931348623157e292*(e<0?-1:1):e==e?e:0:0===e?e:0}function tc(e){var t=ec(e),n=t%1;return t==t?n?t-n:t:0}function nc(e){return e?$n(tc(e),0,4294967295):0}function rc(e){if("number"==typeof e)return e;if(Za(e))return NaN;if(Na(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=Na(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace($,"");var n=ie.test(e);return n||ce.test(e)?Fe(e.slice(2),n?2:8):oe.test(e)?NaN:+e}function oc(e){return go(e,yc(e))}function ic(e){return null==e?"":Zr(e)}var ac=yo((function(e,t){if(ui(t)||Aa(t))go(t,mc(t),e);else for(var n in t)je.call(t,n)&&Fn(e,n,t[n])})),cc=yo((function(e,t){go(t,yc(t),e)})),sc=yo((function(e,t,n,r){go(t,yc(t),e,r)})),lc=yo((function(e,t,n,r){go(t,mc(t),e,r)})),uc=Bo(Yn),fc=Dr((function(e,t){e=ze(e);var n=-1,r=t.length,o=r>2?t[2]:void 0;for(o&&ai(t[0],t[1],o)&&(r=1);++n1),t})),go(e,Wo(e),n),r&&(n=Zn(n,7,No));for(var o=t.length;o--;)Kr(n,t[o]);return n})),xc=Bo((function(e,t){return null==e?{}:function(e,t){return Er(e,t,(function(t,n){return pc(e,n)}))}(e,t)}));function jc(e,t){if(null==e)return{};var n=ft(Wo(e),(function(e){return[e]}));return t=Zo(t),Er(e,n,(function(e,n){return t(e,n[0])}))}var Mc=Po(mc),Cc=Po(yc);function _c(e){return null==e?[]:St(e,mc(e))}var qc=xo((function(e,t,n){return t=t.toLowerCase(),e+(n?Sc(t):t)}));function Sc(e){return Pc(ic(e).toLowerCase())}function Oc(e){return(e=ic(e))&&e.replace(le,Lt).replace(Ee,"")}var Ec=xo((function(e,t,n){return e+(n?"-":"")+t.toLowerCase()})),Tc=xo((function(e,t,n){return e+(n?" ":"")+t.toLowerCase()})),Ac=ko("toLowerCase"),Lc=xo((function(e,t,n){return e+(n?"_":"")+t.toLowerCase()})),Hc=xo((function(e,t,n){return e+(n?" ":"")+Pc(t)})),Dc=xo((function(e,t,n){return e+(n?" ":"")+t.toUpperCase()})),Pc=ko("toUpperCase");function Vc(e,t,n){return e=ic(e),void 0===(t=n?void 0:t)?function(e){return He.test(e)}(e)?function(e){return e.match(Ae)||[]}(e):function(e){return e.match(ee)||[]}(e):e.match(t)||[]}var Rc=Dr((function(e,t){try{return rt(e,void 0,t)}catch(e){return Pa(e)?e:new de(e)}})),Ic=Bo((function(e,t){return it(t,(function(t){t=ji(t),Gn(e,t,va(e[t],e))})),e}));function Nc(e){return function(){return e}}var Fc=Co(),Bc=Co(!0);function Uc(e){return e}function Wc(e){return kr("function"==typeof e?e:Zn(e,1))}var Gc=Dr((function(e,t){return function(n){return gr(n,e,t)}})),Yc=Dr((function(e,t){return function(n){return gr(e,n,t)}}));function $c(e,t,n){var r=mc(t),o=lr(t,r);null!=n||Na(t)&&(o.length||!r.length)||(n=t,t=e,e=this,o=lr(t,mc(t)));var i=!(Na(n)&&"chain"in n&&!n.chain),a=Va(e);return it(o,(function(n){var r=t[n];e[n]=r,a&&(e.prototype[n]=function(){var t=this.__chain__;if(i||t){var n=e(this.__wrapped__),o=n.__actions__=vo(this.__actions__);return o.push({func:r,args:arguments,thisArg:e}),n.__chain__=t,n}return r.apply(e,dt([this.value()],arguments))})})),e}function Zc(){}var Xc=Oo(ft),Kc=Oo(ct),Qc=Oo(zt);function Jc(e){return ci(e)?xt(ji(e)):function(e){return function(t){return ur(t,e)}}(e)}var es=To(),ts=To(!0);function ns(){return[]}function rs(){return!1}var os,is=So((function(e,t){return e+t}),0),as=Ho("ceil"),cs=So((function(e,t){return e/t}),1),ss=Ho("floor"),ls=So((function(e,t){return e*t}),1),us=Ho("round"),fs=So((function(e,t){return e-t}),0);return _n.after=function(e,t){if("function"!=typeof t)throw new me(i);return e=tc(e),function(){if(--e<1)return t.apply(this,arguments)}},_n.ary=pa,_n.assign=ac,_n.assignIn=cc,_n.assignInWith=sc,_n.assignWith=lc,_n.at=uc,_n.before=za,_n.bind=va,_n.bindAll=Ic,_n.bindKey=ga,_n.castArray=function(){if(!arguments.length)return[];var e=arguments[0];return Ea(e)?e:[e]},_n.chain=Ji,_n.chunk=function(e,t,n){t=(n?ai(e,t,n):void 0===t)?1:on(tc(t),0);var o=null==e?0:e.length;if(!o||t<1)return[];for(var i=0,a=0,c=r(Kt(o/t));io?0:o+n),(r=void 0===r||r>o?o:tc(r))<0&&(r+=o),r=n>r?0:nc(r);n>>0)?(e=ic(e))&&("string"==typeof t||null!=t&&!Ga(t))&&!(t=Zr(t))&&Pt(e)?co(Bt(e),0,n):e.split(t,n):[]},_n.spread=function(e,t){if("function"!=typeof e)throw new me(i);return t=null==t?0:on(tc(t),0),Dr((function(n){var r=n[t],o=co(n,0,t);return r&&dt(o,r),rt(e,this,o)}))},_n.tail=function(e){var t=null==e?0:e.length;return t?Br(e,1,t):[]},_n.take=function(e,t,n){return e&&e.length?Br(e,0,(t=n||void 0===t?1:tc(t))<0?0:t):[]},_n.takeRight=function(e,t,n){var r=null==e?0:e.length;return r?Br(e,(t=r-(t=n||void 0===t?1:tc(t)))<0?0:t,r):[]},_n.takeRightWhile=function(e,t){return e&&e.length?Jr(e,Zo(t,3),!1,!0):[]},_n.takeWhile=function(e,t){return e&&e.length?Jr(e,Zo(t,3)):[]},_n.tap=function(e,t){return t(e),e},_n.throttle=function(e,t,n){var r=!0,o=!0;if("function"!=typeof e)throw new me(i);return Na(n)&&(r="leading"in n?!!n.leading:r,o="trailing"in n?!!n.trailing:o),ma(e,t,{leading:r,maxWait:t,trailing:o})},_n.thru=ea,_n.toArray=Ja,_n.toPairs=Mc,_n.toPairsIn=Cc,_n.toPath=function(e){return Ea(e)?ft(e,ji):Za(e)?[e]:vo(xi(ic(e)))},_n.toPlainObject=oc,_n.transform=function(e,t,n){var r=Ea(e),o=r||Ha(e)||Xa(e);if(t=Zo(t,4),null==n){var i=e&&e.constructor;n=o?r?new i:[]:Na(e)&&Va(i)?qn(Ge(e)):{}}return(o?it:cr)(e,(function(e,r,o){return t(n,e,r,o)})),n},_n.unary=function(e){return pa(e,1)},_n.union=Fi,_n.unionBy=Bi,_n.unionWith=Ui,_n.uniq=function(e){return e&&e.length?Xr(e):[]},_n.uniqBy=function(e,t){return e&&e.length?Xr(e,Zo(t,2)):[]},_n.uniqWith=function(e,t){return t="function"==typeof t?t:void 0,e&&e.length?Xr(e,void 0,t):[]},_n.unset=function(e,t){return null==e||Kr(e,t)},_n.unzip=Wi,_n.unzipWith=Gi,_n.update=function(e,t,n){return null==e?e:Qr(e,t,oo(n))},_n.updateWith=function(e,t,n,r){return r="function"==typeof r?r:void 0,null==e?e:Qr(e,t,oo(n),r)},_n.values=_c,_n.valuesIn=function(e){return null==e?[]:St(e,yc(e))},_n.without=Yi,_n.words=Vc,_n.wrap=function(e,t){return ja(oo(t),e)},_n.xor=$i,_n.xorBy=Zi,_n.xorWith=Xi,_n.zip=Ki,_n.zipObject=function(e,t){return no(e||[],t||[],Fn)},_n.zipObjectDeep=function(e,t){return no(e||[],t||[],Rr)},_n.zipWith=Qi,_n.entries=Mc,_n.entriesIn=Cc,_n.extend=cc,_n.extendWith=sc,$c(_n,_n),_n.add=is,_n.attempt=Rc,_n.camelCase=qc,_n.capitalize=Sc,_n.ceil=as,_n.clamp=function(e,t,n){return void 0===n&&(n=t,t=void 0),void 0!==n&&(n=(n=rc(n))==n?n:0),void 0!==t&&(t=(t=rc(t))==t?t:0),$n(rc(e),t,n)},_n.clone=function(e){return Zn(e,4)},_n.cloneDeep=function(e){return Zn(e,5)},_n.cloneDeepWith=function(e,t){return Zn(e,5,t="function"==typeof t?t:void 0)},_n.cloneWith=function(e,t){return Zn(e,4,t="function"==typeof t?t:void 0)},_n.conformsTo=function(e,t){return null==t||Xn(e,t,mc(t))},_n.deburr=Oc,_n.defaultTo=function(e,t){return null==e||e!=e?t:e},_n.divide=cs,_n.endsWith=function(e,t,n){e=ic(e),t=Zr(t);var r=e.length,o=n=void 0===n?r:$n(tc(n),0,r);return(n-=t.length)>=0&&e.slice(n,o)==t},_n.eq=_a,_n.escape=function(e){return(e=ic(e))&&R.test(e)?e.replace(P,Ht):e},_n.escapeRegExp=function(e){return(e=ic(e))&&Y.test(e)?e.replace(G,"\\$&"):e},_n.every=function(e,t,n){var r=Ea(e)?ct:tr;return n&&ai(e,t,n)&&(t=void 0),r(e,Zo(t,3))},_n.find=ra,_n.findIndex=Oi,_n.findKey=function(e,t){return gt(e,Zo(t,3),cr)},_n.findLast=oa,_n.findLastIndex=Ei,_n.findLastKey=function(e,t){return gt(e,Zo(t,3),sr)},_n.floor=ss,_n.forEach=ia,_n.forEachRight=aa,_n.forIn=function(e,t){return null==e?e:ir(e,Zo(t,3),yc)},_n.forInRight=function(e,t){return null==e?e:ar(e,Zo(t,3),yc)},_n.forOwn=function(e,t){return e&&cr(e,Zo(t,3))},_n.forOwnRight=function(e,t){return e&&sr(e,Zo(t,3))},_n.get=hc,_n.gt=qa,_n.gte=Sa,_n.has=function(e,t){return null!=e&&ni(e,t,pr)},_n.hasIn=pc,_n.head=Ai,_n.identity=Uc,_n.includes=function(e,t,n,r){e=Aa(e)?e:_c(e),n=n&&!r?tc(n):0;var o=e.length;return n<0&&(n=on(o+n,0)),$a(e)?n<=o&&e.indexOf(t,n)>-1:!!o&&yt(e,t,n)>-1},_n.indexOf=function(e,t,n){var r=null==e?0:e.length;if(!r)return-1;var o=null==n?0:tc(n);return o<0&&(o=on(r+o,0)),yt(e,t,o)},_n.inRange=function(e,t,n){return t=ec(t),void 0===n?(n=t,t=0):n=ec(n),function(e,t,n){return e>=an(t,n)&&e=-9007199254740991&&e<=9007199254740991},_n.isSet=Ya,_n.isString=$a,_n.isSymbol=Za,_n.isTypedArray=Xa,_n.isUndefined=function(e){return void 0===e},_n.isWeakMap=function(e){return Fa(e)&&ti(e)==k},_n.isWeakSet=function(e){return Fa(e)&&"[object WeakSet]"==dr(e)},_n.join=function(e,t){return null==e?"":nn.call(e,t)},_n.kebabCase=Ec,_n.last=Pi,_n.lastIndexOf=function(e,t,n){var r=null==e?0:e.length;if(!r)return-1;var o=r;return void 0!==n&&(o=(o=tc(n))<0?on(r+o,0):an(o,r-1)),t==t?function(e,t,n){for(var r=n+1;r--;)if(e[r]===t)return r;return r}(e,t,o):mt(e,wt,o,!0)},_n.lowerCase=Tc,_n.lowerFirst=Ac,_n.lt=Ka,_n.lte=Qa,_n.max=function(e){return e&&e.length?nr(e,Uc,hr):void 0},_n.maxBy=function(e,t){return e&&e.length?nr(e,Zo(t,2),hr):void 0},_n.mean=function(e){return kt(e,Uc)},_n.meanBy=function(e,t){return kt(e,Zo(t,2))},_n.min=function(e){return e&&e.length?nr(e,Uc,jr):void 0},_n.minBy=function(e,t){return e&&e.length?nr(e,Zo(t,2),jr):void 0},_n.stubArray=ns,_n.stubFalse=rs,_n.stubObject=function(){return{}},_n.stubString=function(){return""},_n.stubTrue=function(){return!0},_n.multiply=ls,_n.nth=function(e,t){return e&&e.length?Sr(e,tc(t)):void 0},_n.noConflict=function(){return We._===this&&(We._=Se),this},_n.noop=Zc,_n.now=ha,_n.pad=function(e,t,n){e=ic(e);var r=(t=tc(t))?Ft(e):0;if(!t||r>=t)return e;var o=(t-r)/2;return Eo(Qt(o),n)+e+Eo(Kt(o),n)},_n.padEnd=function(e,t,n){e=ic(e);var r=(t=tc(t))?Ft(e):0;return t&&rt){var r=e;e=t,t=r}if(n||e%1||t%1){var o=ln();return an(e+o*(t-e+Ne("1e-"+((o+"").length-1))),t)}return Lr(e,t)},_n.reduce=function(e,t,n){var r=Ea(e)?ht:Mt,o=arguments.length<3;return r(e,Zo(t,4),n,o,Jn)},_n.reduceRight=function(e,t,n){var r=Ea(e)?pt:Mt,o=arguments.length<3;return r(e,Zo(t,4),n,o,er)},_n.repeat=function(e,t,n){return t=(n?ai(e,t,n):void 0===t)?1:tc(t),Hr(ic(e),t)},_n.replace=function(){var e=arguments,t=ic(e[0]);return e.length<3?t:t.replace(e[1],e[2])},_n.result=function(e,t,n){var r=-1,o=(t=io(t,e)).length;for(o||(o=1,e=void 0);++r9007199254740991)return[];var n=4294967295,r=an(e,4294967295);e-=4294967295;for(var o=_t(r,t=Zo(t));++n=i)return e;var c=n-Ft(r);if(c<1)return r;var s=a?co(a,0,c).join(""):e.slice(0,c);if(void 0===o)return s+r;if(a&&(c+=s.length-c),Ga(o)){if(e.slice(c).search(o)){var l,u=s;for(o.global||(o=ve(o.source,ic(re.exec(o))+"g")),o.lastIndex=0;l=o.exec(u);)var f=l.index;s=s.slice(0,void 0===f?c:f)}}else if(e.indexOf(Zr(o),c)!=c){var d=s.lastIndexOf(o);d>-1&&(s=s.slice(0,d))}return s+r},_n.unescape=function(e){return(e=ic(e))&&V.test(e)?e.replace(D,Ut):e},_n.uniqueId=function(e){var t=++Me;return ic(e)+t},_n.upperCase=Dc,_n.upperFirst=Pc,_n.each=ia,_n.eachRight=aa,_n.first=Ai,$c(_n,(os={},cr(_n,(function(e,t){je.call(_n.prototype,t)||(os[t]=e)})),os),{chain:!1}),_n.VERSION="4.17.20",it(["bind","bindKey","curry","curryRight","partial","partialRight"],(function(e){_n[e].placeholder=_n})),it(["drop","take"],(function(e,t){En.prototype[e]=function(n){n=void 0===n?1:on(tc(n),0);var r=this.__filtered__&&!t?new En(this):this.clone();return r.__filtered__?r.__takeCount__=an(n,r.__takeCount__):r.__views__.push({size:an(n,4294967295),type:e+(r.__dir__<0?"Right":"")}),r},En.prototype[e+"Right"]=function(t){return this.reverse()[e](t).reverse()}})),it(["filter","map","takeWhile"],(function(e,t){var n=t+1,r=1==n||3==n;En.prototype[e]=function(e){var t=this.clone();return t.__iteratees__.push({iteratee:Zo(e,3),type:n}),t.__filtered__=t.__filtered__||r,t}})),it(["head","last"],(function(e,t){var n="take"+(t?"Right":"");En.prototype[e]=function(){return this[n](1).value()[0]}})),it(["initial","tail"],(function(e,t){var n="drop"+(t?"":"Right");En.prototype[e]=function(){return this.__filtered__?new En(this):this[n](1)}})),En.prototype.compact=function(){return this.filter(Uc)},En.prototype.find=function(e){return this.filter(e).head()},En.prototype.findLast=function(e){return this.reverse().find(e)},En.prototype.invokeMap=Dr((function(e,t){return"function"==typeof e?new En(this):this.map((function(n){return gr(n,e,t)}))})),En.prototype.reject=function(e){return this.filter(ka(Zo(e)))},En.prototype.slice=function(e,t){e=tc(e);var n=this;return n.__filtered__&&(e>0||t<0)?new En(n):(e<0?n=n.takeRight(-e):e&&(n=n.drop(e)),void 0!==t&&(n=(t=tc(t))<0?n.dropRight(-t):n.take(t-e)),n)},En.prototype.takeRightWhile=function(e){return this.reverse().takeWhile(e).reverse()},En.prototype.toArray=function(){return this.take(4294967295)},cr(En.prototype,(function(e,t){var n=/^(?:filter|find|map|reject)|While$/.test(t),r=/^(?:head|last)$/.test(t),o=_n[r?"take"+("last"==t?"Right":""):t],i=r||/^find/.test(t);o&&(_n.prototype[t]=function(){var t=this.__wrapped__,a=r?[1]:arguments,c=t instanceof En,s=a[0],l=c||Ea(t),u=function(e){var t=o.apply(_n,dt([e],a));return r&&f?t[0]:t};l&&n&&"function"==typeof s&&1!=s.length&&(c=l=!1);var f=this.__chain__,d=!!this.__actions__.length,h=i&&!f,p=c&&!d;if(!i&&l){t=p?t:new En(this);var z=e.apply(t,a);return z.__actions__.push({func:ea,args:[u],thisArg:void 0}),new On(z,f)}return h&&p?e.apply(this,a):(z=this.thru(u),h?r?z.value()[0]:z.value():z)})})),it(["pop","push","shift","sort","splice","unshift"],(function(e){var t=ye[e],n=/^(?:push|sort|unshift)$/.test(e)?"tap":"thru",r=/^(?:pop|shift)$/.test(e);_n.prototype[e]=function(){var e=arguments;if(r&&!this.__chain__){var o=this.value();return t.apply(Ea(o)?o:[],e)}return this[n]((function(n){return t.apply(Ea(n)?n:[],e)}))}})),cr(En.prototype,(function(e,t){var n=_n[t];if(n){var r=n.name+"";je.call(mn,r)||(mn[r]=[]),mn[r].push({name:t,func:n})}})),mn[_o(void 0,2).name]=[{name:"wrapper",func:void 0}],En.prototype.clone=function(){var e=new En(this.__wrapped__);return e.__actions__=vo(this.__actions__),e.__dir__=this.__dir__,e.__filtered__=this.__filtered__,e.__iteratees__=vo(this.__iteratees__),e.__takeCount__=this.__takeCount__,e.__views__=vo(this.__views__),e},En.prototype.reverse=function(){if(this.__filtered__){var e=new En(this);e.__dir__=-1,e.__filtered__=!0}else(e=this.clone()).__dir__*=-1;return e},En.prototype.value=function(){var e=this.__wrapped__.value(),t=this.__dir__,n=Ea(e),r=t<0,o=n?e.length:0,i=function(e,t,n){for(var r=-1,o=n.length;++r=this.__values__.length;return{done:e,value:e?void 0:this.__values__[this.__index__++]}},_n.prototype.plant=function(e){for(var t,n=this;n instanceof Sn;){var r=Ci(n);r.__index__=0,r.__values__=void 0,t?o.__wrapped__=r:t=r;var o=r;n=n.__wrapped__}return o.__wrapped__=e,t},_n.prototype.reverse=function(){var e=this.__wrapped__;if(e instanceof En){var t=e;return this.__actions__.length&&(t=new En(this)),(t=t.reverse()).__actions__.push({func:ea,args:[Ni],thisArg:void 0}),new On(t,this.__chain__)}return this.thru(Ni)},_n.prototype.toJSON=_n.prototype.valueOf=_n.prototype.value=function(){return eo(this.__wrapped__,this.__actions__)},_n.prototype.first=_n.prototype.head,jt&&(_n.prototype[jt]=function(){return this}),_n}();We._=Wt,void 0===(o=function(){return Wt}.call(t,n,t,r))||(r.exports=o)}).call(this)}).call(this,n(7),n(21)(e))},function(e,t){e.exports=r},function(e,t,n){e.exports=function(){"use strict";var e=navigator.userAgent,t=navigator.platform,n=/gecko\/\d/i.test(e),r=/MSIE \d/.test(e),o=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(e),i=/Edge\/(\d+)/.exec(e),a=r||o||i,c=a&&(r?document.documentMode||6:+(i||o)[1]),s=!i&&/WebKit\//.test(e),l=s&&/Qt\/\d+\.\d+/.test(e),u=!i&&/Chrome\//.test(e),f=/Opera\//.test(e),d=/Apple Computer/.test(navigator.vendor),h=/Mac OS X 1\d\D([8-9]|\d\d)\D/.test(e),p=/PhantomJS/.test(e),z=!i&&/AppleWebKit/.test(e)&&/Mobile\/\w+/.test(e),v=/Android/.test(e),g=z||v||/webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(e),m=z||/Mac/.test(t),y=/\bCrOS\b/.test(e),b=/win/i.test(t),w=f&&e.match(/Version\/(\d*\.\d*)/);w&&(w=Number(w[1])),w&&w>=15&&(f=!1,s=!0);var k=m&&(l||f&&(null==w||w<12.11)),x=n||a&&c>=9;function j(e){return new RegExp("(^|\\s)"+e+"(?:$|\\s)\\s*")}var M,C=function(e,t){var n=e.className,r=j(t).exec(n);if(r){var o=n.slice(r.index+r[0].length);e.className=n.slice(0,r.index)+(o?r[1]+o:"")}};function _(e){for(var t=e.childNodes.length;t>0;--t)e.removeChild(e.firstChild);return e}function q(e,t){return _(e).appendChild(t)}function S(e,t,n,r){var o=document.createElement(e);if(n&&(o.className=n),r&&(o.style.cssText=r),"string"==typeof t)o.appendChild(document.createTextNode(t));else if(t)for(var i=0;i=t)return a+(t-i);a+=c-i,a+=n-a%n,i=c+1}}z?H=function(e){e.selectionStart=0,e.selectionEnd=e.value.length}:a&&(H=function(e){try{e.select()}catch(e){}});var R=function(){this.id=null,this.f=null,this.time=0,this.handler=D(this.onTimeout,this)};function I(e,t){for(var n=0;n=t)return r+Math.min(a,t-o);if(o+=i-r,r=i+1,(o+=n-o%n)>=t)return r}}var G=[""];function Y(e){for(;G.length<=e;)G.push($(G)+" ");return G[e]}function $(e){return e[e.length-1]}function Z(e,t){for(var n=[],r=0;r"\x80"&&(e.toUpperCase()!=e.toLowerCase()||Q.test(e))}function ee(e,t){return t?!!(t.source.indexOf("\\w")>-1&&J(e))||t.test(e):J(e)}function te(e){for(var t in e)if(e.hasOwnProperty(t)&&e[t])return!1;return!0}var ne=/[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/;function re(e){return e.charCodeAt(0)>=768&&ne.test(e)}function oe(e,t,n){for(;(n<0?t>0:tn?-1:1;;){if(t==n)return t;var o=(t+n)/2,i=r<0?Math.ceil(o):Math.floor(o);if(i==t)return e(i)?t:n;e(i)?n=i:t=i+r}}var ae=null;function ce(e,t,n){var r;ae=null;for(var o=0;ot)return o;i.to==t&&(i.from!=i.to&&"before"==n?r=o:ae=o),i.from==t&&(i.from!=i.to&&"before"!=n?r=o:ae=o)}return null!=r?r:ae}var se=function(){var e=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/,t=/[stwN]/,n=/[LRr]/,r=/[Lb1n]/,o=/[1n]/;function i(e,t,n){this.level=e,this.from=t,this.to=n}return function(a,c){var s="ltr"==c?"L":"R";if(0==a.length||"ltr"==c&&!e.test(a))return!1;for(var l,u=a.length,f=[],d=0;d-1&&(r[t]=o.slice(0,i).concat(o.slice(i+1)))}}}function pe(e,t){var n=de(e,t);if(n.length)for(var r=Array.prototype.slice.call(arguments,2),o=0;o0}function me(e){e.prototype.on=function(e,t){fe(this,e,t)},e.prototype.off=function(e,t){he(this,e,t)}}function ye(e){e.preventDefault?e.preventDefault():e.returnValue=!1}function be(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0}function we(e){return null!=e.defaultPrevented?e.defaultPrevented:0==e.returnValue}function ke(e){ye(e),be(e)}function xe(e){return e.target||e.srcElement}function je(e){var t=e.which;return null==t&&(1&e.button?t=1:2&e.button?t=3:4&e.button&&(t=2)),m&&e.ctrlKey&&1==t&&(t=3),t}var Me,Ce,_e=function(){if(a&&c<9)return!1;var e=S("div");return"draggable"in e||"dragDrop"in e}();function qe(e){if(null==Me){var t=S("span","\u200b");q(e,S("span",[t,document.createTextNode("x")])),0!=e.firstChild.offsetHeight&&(Me=t.offsetWidth<=1&&t.offsetHeight>2&&!(a&&c<8))}var n=Me?S("span","\u200b"):S("span","\xa0",null,"display: inline-block; width: 1px; margin-right: -1px");return n.setAttribute("cm-text",""),n}function Se(e){if(null!=Ce)return Ce;var t=q(e,document.createTextNode("A\u062eA")),n=M(t,0,1).getBoundingClientRect(),r=M(t,1,2).getBoundingClientRect();return _(e),!(!n||n.left==n.right)&&(Ce=r.right-n.right<3)}var Oe,Ee=3!="\n\nb".split(/\n/).length?function(e){for(var t=0,n=[],r=e.length;t<=r;){var o=e.indexOf("\n",t);-1==o&&(o=e.length);var i=e.slice(t,"\r"==e.charAt(o-1)?o-1:o),a=i.indexOf("\r");-1!=a?(n.push(i.slice(0,a)),t+=a+1):(n.push(i),t=o+1)}return n}:function(e){return e.split(/\r\n?|\n/)},Te=window.getSelection?function(e){try{return e.selectionStart!=e.selectionEnd}catch(e){return!1}}:function(e){var t;try{t=e.ownerDocument.selection.createRange()}catch(e){}return!(!t||t.parentElement()!=e)&&0!=t.compareEndPoints("StartToEnd",t)},Ae="oncopy"in(Oe=S("div"))||(Oe.setAttribute("oncopy","return;"),"function"==typeof Oe.oncopy),Le=null,He={},De={};function Pe(e,t){arguments.length>2&&(t.dependencies=Array.prototype.slice.call(arguments,2)),He[e]=t}function Ve(e){if("string"==typeof e&&De.hasOwnProperty(e))e=De[e];else if(e&&"string"==typeof e.name&&De.hasOwnProperty(e.name)){var t=De[e.name];"string"==typeof t&&(t={name:t}),(e=K(t,e)).name=t.name}else{if("string"==typeof e&&/^[\w\-]+\/[\w\-]+\+xml$/.test(e))return Ve("application/xml");if("string"==typeof e&&/^[\w\-]+\/[\w\-]+\+json$/.test(e))return Ve("application/json")}return"string"==typeof e?{name:e}:e||{name:"null"}}function Re(e,t){t=Ve(t);var n=He[t.name];if(!n)return Re(e,"text/plain");var r=n(e,t);if(Ie.hasOwnProperty(t.name)){var o=Ie[t.name];for(var i in o)o.hasOwnProperty(i)&&(r.hasOwnProperty(i)&&(r["_"+i]=r[i]),r[i]=o[i])}if(r.name=t.name,t.helperType&&(r.helperType=t.helperType),t.modeProps)for(var a in t.modeProps)r[a]=t.modeProps[a];return r}var Ie={};function Ne(e,t){P(t,Ie.hasOwnProperty(e)?Ie[e]:Ie[e]={})}function Fe(e,t){if(!0===t)return t;if(e.copyState)return e.copyState(t);var n={};for(var r in t){var o=t[r];o instanceof Array&&(o=o.concat([])),n[r]=o}return n}function Be(e,t){for(var n;e.innerMode&&(n=e.innerMode(t))&&n.mode!=e;)t=n.state,e=n.mode;return n||{mode:e,state:t}}function Ue(e,t,n){return!e.startState||e.startState(t,n)}var We=function(e,t,n){this.pos=this.start=0,this.string=e,this.tabSize=t||8,this.lastColumnPos=this.lastColumnValue=0,this.lineStart=0,this.lineOracle=n};function Ge(e,t){if((t-=e.first)<0||t>=e.size)throw new Error("There is no line "+(t+e.first)+" in the document.");for(var n=e;!n.lines;)for(var r=0;;++r){var o=n.children[r],i=o.chunkSize();if(t=e.first&&tn?et(n,Ge(e,n).text.length):function(e,t){var n=e.ch;return null==n||n>t?et(e.line,t):n<0?et(e.line,0):e}(t,Ge(e,t.line).text.length)}function st(e,t){for(var n=[],r=0;r=this.string.length},We.prototype.sol=function(){return this.pos==this.lineStart},We.prototype.peek=function(){return this.string.charAt(this.pos)||void 0},We.prototype.next=function(){if(this.post},We.prototype.eatSpace=function(){for(var e=this.pos;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>e},We.prototype.skipToEnd=function(){this.pos=this.string.length},We.prototype.skipTo=function(e){var t=this.string.indexOf(e,this.pos);if(t>-1)return this.pos=t,!0},We.prototype.backUp=function(e){this.pos-=e},We.prototype.column=function(){return this.lastColumnPos0?null:(r&&!1!==t&&(this.pos+=r[0].length),r)}var o=function(e){return n?e.toLowerCase():e};if(o(this.string.substr(this.pos,e.length))==o(e))return!1!==t&&(this.pos+=e.length),!0},We.prototype.current=function(){return this.string.slice(this.start,this.pos)},We.prototype.hideFirstChars=function(e,t){this.lineStart+=e;try{return t()}finally{this.lineStart-=e}},We.prototype.lookAhead=function(e){var t=this.lineOracle;return t&&t.lookAhead(e)},We.prototype.baseToken=function(){var e=this.lineOracle;return e&&e.baseToken(this.pos)};var lt=function(e,t){this.state=e,this.lookAhead=t},ut=function(e,t,n,r){this.state=t,this.doc=e,this.line=n,this.maxLookAhead=r||0,this.baseTokens=null,this.baseTokenPos=1};function ft(e,t,n,r){var o=[e.state.modeGen],i={};bt(e,t.text,e.doc.mode,n,(function(e,t){return o.push(e,t)}),i,r);for(var a=n.state,c=function(r){n.baseTokens=o;var c=e.state.overlays[r],s=1,l=0;n.state=!0,bt(e,t.text,c.mode,n,(function(e,t){for(var n=s;le&&o.splice(s,1,e,o[s+1],r),s+=2,l=Math.min(e,r)}if(t)if(c.opaque)o.splice(n,s-n,e,"overlay "+t),s=n+2;else for(;ne.options.maxHighlightLength&&Fe(e.doc.mode,r.state),i=ft(e,t,r);o&&(r.state=o),t.stateAfter=r.save(!o),t.styles=i.styles,i.classes?t.styleClasses=i.classes:t.styleClasses&&(t.styleClasses=null),n===e.doc.highlightFrontier&&(e.doc.modeFrontier=Math.max(e.doc.modeFrontier,++e.doc.highlightFrontier))}return t.styles}function ht(e,t,n){var r=e.doc,o=e.display;if(!r.mode.startState)return new ut(r,!0,t);var i=function(e,t,n){for(var r,o,i=e.doc,a=n?-1:t-(e.doc.mode.innerMode?1e3:100),c=t;c>a;--c){if(c<=i.first)return i.first;var s=Ge(i,c-1),l=s.stateAfter;if(l&&(!n||c+(l instanceof lt?l.lookAhead:0)<=i.modeFrontier))return c;var u=V(s.text,null,e.options.tabSize);(null==o||r>u)&&(o=c-1,r=u)}return o}(e,t,n),a=i>r.first&&Ge(r,i-1).stateAfter,c=a?ut.fromSaved(r,a,i):new ut(r,Ue(r.mode),i);return r.iter(i,t,(function(n){pt(e,n.text,c);var r=c.line;n.stateAfter=r==t-1||r%5==0||r>=o.viewFrom&&rt.start)return i}throw new Error("Mode "+e.name+" failed to advance stream.")}ut.prototype.lookAhead=function(e){var t=this.doc.getLine(this.line+e);return null!=t&&e>this.maxLookAhead&&(this.maxLookAhead=e),t},ut.prototype.baseToken=function(e){if(!this.baseTokens)return null;for(;this.baseTokens[this.baseTokenPos]<=e;)this.baseTokenPos+=2;var t=this.baseTokens[this.baseTokenPos+1];return{type:t&&t.replace(/( |^)overlay .*/,""),size:this.baseTokens[this.baseTokenPos]-e}},ut.prototype.nextLine=function(){this.line++,this.maxLookAhead>0&&this.maxLookAhead--},ut.fromSaved=function(e,t,n){return t instanceof lt?new ut(e,Fe(e.mode,t.state),n,t.lookAhead):new ut(e,Fe(e.mode,t),n)},ut.prototype.save=function(e){var t=!1!==e?Fe(this.doc.mode,this.state):this.state;return this.maxLookAhead>0?new lt(t,this.maxLookAhead):t};var gt=function(e,t,n){this.start=e.start,this.end=e.pos,this.string=e.current(),this.type=t||null,this.state=n};function mt(e,t,n,r){var o,i,a=e.doc,c=a.mode,s=Ge(a,(t=ct(a,t)).line),l=ht(e,t.line,n),u=new We(s.text,e.options.tabSize,l);for(r&&(i=[]);(r||u.pose.options.maxHighlightLength?(c=!1,a&&pt(e,t,r,f.pos),f.pos=t.length,s=null):s=yt(vt(n,f,r.state,d),i),d){var h=d[0].name;h&&(s="m-"+(s?h+" "+s:h))}if(!c||u!=s){for(;l=t:i.to>t);(r||(r=[])).push(new xt(a,i.from,c?null:i.to))}}return r}(n,o,a),s=function(e,t,n){var r;if(e)for(var o=0;o=t:i.to>t)||i.from==t&&"bookmark"==a.type&&(!n||i.marker.insertLeft)){var c=null==i.from||(a.inclusiveLeft?i.from<=t:i.from0&&c)for(var y=0;yt)&&(!n||Tt(n,i.marker)<0)&&(n=i.marker)}return n}function Pt(e,t,n,r,o){var i=Ge(e,t),a=kt&&i.markedSpans;if(a)for(var c=0;c=0&&f<=0||u<=0&&f>=0)&&(u<=0&&(s.marker.inclusiveRight&&o.inclusiveLeft?tt(l.to,n)>=0:tt(l.to,n)>0)||u>=0&&(s.marker.inclusiveRight&&o.inclusiveLeft?tt(l.from,r)<=0:tt(l.from,r)<0)))return!0}}}function Vt(e){for(var t;t=Lt(e);)e=t.find(-1,!0).line;return e}function Rt(e,t){var n=Ge(e,t),r=Vt(n);return n==r?t:Xe(r)}function It(e,t){if(t>e.lastLine())return t;var n,r=Ge(e,t);if(!Nt(e,r))return t;for(;n=Ht(r);)r=n.find(1,!0).line;return Xe(r)+1}function Nt(e,t){var n=kt&&t.markedSpans;if(n)for(var r=void 0,o=0;ot.maxLineLength&&(t.maxLineLength=n,t.maxLine=e)}))}var Gt=function(e,t,n){this.text=e,St(this,t),this.height=n?n(this):1};function Yt(e){e.parent=null,qt(e)}Gt.prototype.lineNo=function(){return Xe(this)},me(Gt);var $t={},Zt={};function Xt(e,t){if(!e||/^\s*$/.test(e))return null;var n=t.addModeClass?Zt:$t;return n[e]||(n[e]=e.replace(/\S+/g,"cm-$&"))}function Kt(e,t){var n=O("span",null,null,s?"padding-right: .1px":null),r={pre:O("pre",[n],"CodeMirror-line"),content:n,col:0,pos:0,cm:e,trailingSpace:!1,splitSpaces:e.getOption("lineWrapping")};t.measure={};for(var o=0;o<=(t.rest?t.rest.length:0);o++){var i=o?t.rest[o-1]:t.line,a=void 0;r.pos=0,r.addToken=Jt,Se(e.display.measure)&&(a=le(i,e.doc.direction))&&(r.addToken=en(r.addToken,a)),r.map=[],nn(i,r,dt(e,i,t!=e.display.externalMeasured&&Xe(i))),i.styleClasses&&(i.styleClasses.bgClass&&(r.bgClass=L(i.styleClasses.bgClass,r.bgClass||"")),i.styleClasses.textClass&&(r.textClass=L(i.styleClasses.textClass,r.textClass||""))),0==r.map.length&&r.map.push(0,0,r.content.appendChild(qe(e.display.measure))),0==o?(t.measure.map=r.map,t.measure.cache={}):((t.measure.maps||(t.measure.maps=[])).push(r.map),(t.measure.caches||(t.measure.caches=[])).push({}))}if(s){var c=r.content.lastChild;(/\bcm-tab\b/.test(c.className)||c.querySelector&&c.querySelector(".cm-tab"))&&(r.content.className="cm-tab-wrap-hack")}return pe(e,"renderLine",e,t.line,r.pre),r.pre.className&&(r.textClass=L(r.pre.className,r.textClass||"")),r}function Qt(e){var t=S("span","\u2022","cm-invalidchar");return t.title="\\u"+e.charCodeAt(0).toString(16),t.setAttribute("aria-label",t.title),t}function Jt(e,t,n,r,o,i,s){if(t){var l,u=e.splitSpaces?function(e,t){if(e.length>1&&!/ /.test(e))return e;for(var n=t,r="",o=0;ol&&f.from<=l);d++);if(f.to>=u)return e(n,r,o,i,a,c,s);e(n,r.slice(0,f.to-l),o,i,null,c,s),i=null,r=r.slice(f.to-l),l=f.to}}}function tn(e,t,n,r){var o=!r&&n.widgetNode;o&&e.map.push(e.pos,e.pos+t,o),!r&&e.cm.display.input.needsContentAttribute&&(o||(o=e.content.appendChild(document.createElement("span"))),o.setAttribute("cm-marker",n.id)),o&&(e.cm.display.input.setUneditable(o),e.content.appendChild(o)),e.pos+=t,e.trailingSpace=!1}function nn(e,t,n){var r=e.markedSpans,o=e.text,i=0;if(r)for(var a,c,s,l,u,f,d,h=o.length,p=0,z=1,v="",g=0;;){if(g==p){s=l=u=c="",d=null,f=null,g=1/0;for(var m=[],y=void 0,b=0;bp||k.collapsed&&w.to==p&&w.from==p)){if(null!=w.to&&w.to!=p&&g>w.to&&(g=w.to,l=""),k.className&&(s+=" "+k.className),k.css&&(c=(c?c+";":"")+k.css),k.startStyle&&w.from==p&&(u+=" "+k.startStyle),k.endStyle&&w.to==g&&(y||(y=[])).push(k.endStyle,w.to),k.title&&((d||(d={})).title=k.title),k.attributes)for(var x in k.attributes)(d||(d={}))[x]=k.attributes[x];k.collapsed&&(!f||Tt(f.marker,k)<0)&&(f=w)}else w.from>p&&g>w.from&&(g=w.from)}if(y)for(var j=0;j=h)break;for(var C=Math.min(h,g);;){if(v){var _=p+v.length;if(!f){var q=_>C?v.slice(0,C-p):v;t.addToken(t,q,a?a+s:s,u,p+q.length==g?l:"",c,d)}if(_>=C){v=v.slice(C-p),p=C;break}p=_,u=""}v=o.slice(i,i=n[z++]),a=Xt(n[z++],t.cm.options)}}else for(var S=1;Sn)return{map:e.measure.maps[o],cache:e.measure.caches[o],before:!0}}function On(e,t,n,r){return An(e,Tn(e,t),n,r)}function En(e,t){if(t>=e.display.viewFrom&&t=n.lineN&&t2&&i.push((s.bottom+l.top)/2-n.top)}}i.push(n.bottom-n.top)}}(e,t.view,t.rect),t.hasHeights=!0),(i=function(e,t,n,r){var o,i=Dn(t.map,n,r),s=i.node,l=i.start,u=i.end,f=i.collapse;if(3==s.nodeType){for(var d=0;d<4;d++){for(;l&&re(t.line.text.charAt(i.coverStart+l));)--l;for(;i.coverStart+u1}(e))return t;var n=screen.logicalXDPI/screen.deviceXDPI,r=screen.logicalYDPI/screen.deviceYDPI;return{left:t.left*n,right:t.right*n,top:t.top*r,bottom:t.bottom*r}}(e.display.measure,o))}else{var h;l>0&&(f=r="right"),o=e.options.lineWrapping&&(h=s.getClientRects()).length>1?h["right"==r?h.length-1:0]:s.getBoundingClientRect()}if(a&&c<9&&!l&&(!o||!o.left&&!o.right)){var p=s.parentNode.getClientRects()[0];o=p?{left:p.left,right:p.left+or(e.display),top:p.top,bottom:p.bottom}:Hn}for(var z=o.top-t.rect.top,v=o.bottom-t.rect.top,g=(z+v)/2,m=t.view.measure.heights,y=0;yt)&&(o=(i=s-c)-1,t>=s&&(a="right")),null!=o){if(r=e[l+2],c==s&&n==(r.insertLeft?"left":"right")&&(a=n),"left"==n&&0==o)for(;l&&e[l-2]==e[l-3]&&e[l-1].insertLeft;)r=e[2+(l-=3)],a="left";if("right"==n&&o==s-c)for(;l=0&&(n=e[o]).left==n.right;o--);return n}function Vn(e){if(e.measure&&(e.measure.cache={},e.measure.heights=null,e.rest))for(var t=0;t=r.text.length?(s=r.text.length,l="before"):s<=0&&(s=0,l="after"),!c)return a("before"==l?s-1:s,"before"==l);function u(e,t,n){return a(n?e-1:e,1==c[t].level!=n)}var f=ce(c,s,l),d=ae,h=u(s,f,"before"==l);return null!=d&&(h.other=u(s,d,"before"!=l)),h}function $n(e,t){var n=0;t=ct(e.doc,t),e.options.lineWrapping||(n=or(e.display)*t.ch);var r=Ge(e.doc,t.line),o=Bt(r)+xn(e.display);return{left:n,right:n,top:o,bottom:o+r.height}}function Zn(e,t,n,r,o){var i=et(e,t,n);return i.xRel=o,r&&(i.outside=r),i}function Xn(e,t,n){var r=e.doc;if((n+=e.display.viewOffset)<0)return Zn(r.first,0,null,-1,-1);var o=Ke(r,n),i=r.first+r.size-1;if(o>i)return Zn(r.first+r.size-1,Ge(r,i).text.length,null,1,1);t<0&&(t=0);for(var a=Ge(r,o);;){var c=er(e,a,o,t,n),s=Dt(a,c.ch+(c.xRel>0||c.outside>0?1:0));if(!s)return c;var l=s.find(1);if(l.line==o)return l;a=Ge(r,o=l.line)}}function Kn(e,t,n,r){r-=Bn(t);var o=t.text.length,i=ie((function(t){return An(e,n,t-1).bottom<=r}),o,0);return{begin:i,end:o=ie((function(t){return An(e,n,t).top>r}),i,o)}}function Qn(e,t,n,r){return n||(n=Tn(e,t)),Kn(e,t,n,Un(e,t,An(e,n,r),"line").top)}function Jn(e,t,n,r){return!(e.bottom<=n)&&(e.top>n||(r?e.left:e.right)>t)}function er(e,t,n,r,o){o-=Bt(t);var i=Tn(e,t),a=Bn(t),c=0,s=t.text.length,l=!0,u=le(t,e.doc.direction);if(u){var f=(e.options.lineWrapping?nr:tr)(e,t,n,i,u,r,o);c=(l=1!=f.level)?f.from:f.to-1,s=l?f.to:f.from-1}var d,h,p=null,z=null,v=ie((function(t){var n=An(e,i,t);return n.top+=a,n.bottom+=a,!!Jn(n,r,o,!1)&&(n.top<=o&&n.left<=r&&(p=t,z=n),!0)}),c,s),g=!1;if(z){var m=r-z.left=b.bottom?1:0}return Zn(n,v=oe(t.text,v,1),h,g,r-d)}function tr(e,t,n,r,o,i,a){var c=ie((function(c){var s=o[c],l=1!=s.level;return Jn(Yn(e,et(n,l?s.to:s.from,l?"before":"after"),"line",t,r),i,a,!0)}),0,o.length-1),s=o[c];if(c>0){var l=1!=s.level,u=Yn(e,et(n,l?s.from:s.to,l?"after":"before"),"line",t,r);Jn(u,i,a,!0)&&u.top>a&&(s=o[c-1])}return s}function nr(e,t,n,r,o,i,a){var c=Kn(e,t,r,a),s=c.begin,l=c.end;/\s/.test(t.text.charAt(l-1))&&l--;for(var u=null,f=null,d=0;d=l||h.to<=s)){var p=An(e,r,1!=h.level?Math.min(l,h.to)-1:Math.max(s,h.from)).right,z=pz)&&(u=h,f=z)}}return u||(u=o[o.length-1]),u.froml&&(u={from:u.from,to:l,level:u.level}),u}function rr(e){if(null!=e.cachedTextHeight)return e.cachedTextHeight;if(null==Ln){Ln=S("pre",null,"CodeMirror-line-like");for(var t=0;t<49;++t)Ln.appendChild(document.createTextNode("x")),Ln.appendChild(S("br"));Ln.appendChild(document.createTextNode("x"))}q(e.measure,Ln);var n=Ln.offsetHeight/50;return n>3&&(e.cachedTextHeight=n),_(e.measure),n||1}function or(e){if(null!=e.cachedCharWidth)return e.cachedCharWidth;var t=S("span","xxxxxxxxxx"),n=S("pre",[t],"CodeMirror-line-like");q(e.measure,n);var r=t.getBoundingClientRect(),o=(r.right-r.left)/10;return o>2&&(e.cachedCharWidth=o),o||10}function ir(e){for(var t=e.display,n={},r={},o=t.gutters.clientLeft,i=t.gutters.firstChild,a=0;i;i=i.nextSibling,++a){var c=e.display.gutterSpecs[a].className;n[c]=i.offsetLeft+i.clientLeft+o,r[c]=i.clientWidth}return{fixedPos:ar(t),gutterTotalWidth:t.gutters.offsetWidth,gutterLeft:n,gutterWidth:r,wrapperWidth:t.wrapper.clientWidth}}function ar(e){return e.scroller.getBoundingClientRect().left-e.sizer.getBoundingClientRect().left}function cr(e){var t=rr(e.display),n=e.options.lineWrapping,r=n&&Math.max(5,e.display.scroller.clientWidth/or(e.display)-3);return function(o){if(Nt(e.doc,o))return 0;var i=0;if(o.widgets)for(var a=0;a0&&(s=Ge(e.doc,l.line).text).length==l.ch){var u=V(s,s.length,e.options.tabSize)-s.length;l=et(l.line,Math.max(0,Math.round((i-Mn(e.display).left)/or(e.display))-u))}return l}function ur(e,t){if(t>=e.display.viewTo)return null;if((t-=e.display.viewFrom)<0)return null;for(var n=e.display.view,r=0;rt)&&(o.updateLineNumbers=t),e.curOp.viewChanged=!0,t>=o.viewTo)kt&&Rt(e.doc,t)o.viewFrom?hr(e):(o.viewFrom+=r,o.viewTo+=r);else if(t<=o.viewFrom&&n>=o.viewTo)hr(e);else if(t<=o.viewFrom){var i=pr(e,n,n+r,1);i?(o.view=o.view.slice(i.index),o.viewFrom=i.lineN,o.viewTo+=r):hr(e)}else if(n>=o.viewTo){var a=pr(e,t,t,-1);a?(o.view=o.view.slice(0,a.index),o.viewTo=a.lineN):hr(e)}else{var c=pr(e,t,t,-1),s=pr(e,n,n+r,1);c&&s?(o.view=o.view.slice(0,c.index).concat(on(e,c.lineN,s.lineN)).concat(o.view.slice(s.index)),o.viewTo+=r):hr(e)}var l=o.externalMeasured;l&&(n=o.lineN&&t=r.viewTo)){var i=r.view[ur(e,t)];if(null!=i.node){var a=i.changes||(i.changes=[]);-1==I(a,n)&&a.push(n)}}}function hr(e){e.display.viewFrom=e.display.viewTo=e.doc.first,e.display.view=[],e.display.viewOffset=0}function pr(e,t,n,r){var o,i=ur(e,t),a=e.display.view;if(!kt||n==e.doc.first+e.doc.size)return{index:i,lineN:n};for(var c=e.display.viewFrom,s=0;s0){if(i==a.length-1)return null;o=c+a[i].size-t,i++}else o=c-t;t+=o,n+=o}for(;Rt(e.doc,n)!=n;){if(i==(r<0?0:a.length-1))return null;n+=r*a[i-(r<0?1:0)].size,i+=r}return{index:i,lineN:n}}function zr(e){for(var t=e.display.view,n=0,r=0;r=e.display.viewTo||c.to().linet||t==n&&a.to==t)&&(r(Math.max(a.from,t),Math.min(a.to,n),1==a.level?"rtl":"ltr",i),o=!0)}o||r(t,n,"ltr")}(z,n||0,null==r?d:r,(function(e,t,o,f){var v="ltr"==o,g=h(e,v?"left":"right"),m=h(t-1,v?"right":"left"),y=null==n&&0==e,b=null==r&&t==d,w=0==f,k=!z||f==z.length-1;if(m.top-g.top<=3){var x=(l?b:y)&&k,j=(l?y:b)&&w?c:(v?g:m).left,M=x?s:(v?m:g).right;u(j,g.top,M-j,g.bottom)}else{var C,_,q,S;v?(C=l&&y&&w?c:g.left,_=l?s:p(e,o,"before"),q=l?c:p(t,o,"after"),S=l&&b&&k?s:m.right):(C=l?p(e,o,"before"):c,_=!l&&y&&w?s:g.right,q=!l&&b&&k?c:m.left,S=l?p(t,o,"after"):s),u(C,g.top,_-C,g.bottom),g.bottom0?t.blinker=setInterval((function(){return t.cursorDiv.style.visibility=(n=!n)?"":"hidden"}),e.options.cursorBlinkRate):e.options.cursorBlinkRate<0&&(t.cursorDiv.style.visibility="hidden")}}function kr(e){e.state.focused||(e.display.input.focus(),jr(e))}function xr(e){e.state.delayingBlurEvent=!0,setTimeout((function(){e.state.delayingBlurEvent&&(e.state.delayingBlurEvent=!1,Mr(e))}),100)}function jr(e,t){e.state.delayingBlurEvent&&(e.state.delayingBlurEvent=!1),"nocursor"!=e.options.readOnly&&(e.state.focused||(pe(e,"focus",e,t),e.state.focused=!0,A(e.display.wrapper,"CodeMirror-focused"),e.curOp||e.display.selForContextMenu==e.doc.sel||(e.display.input.reset(),s&&setTimeout((function(){return e.display.input.reset(!0)}),20)),e.display.input.receivedFocus()),wr(e))}function Mr(e,t){e.state.delayingBlurEvent||(e.state.focused&&(pe(e,"blur",e,t),e.state.focused=!1,C(e.display.wrapper,"CodeMirror-focused")),clearInterval(e.display.blinker),setTimeout((function(){e.state.focused||(e.display.shift=!1)}),150))}function Cr(e){for(var t=e.display,n=t.lineDiv.offsetTop,r=0;r.005||d<-.005)&&(Ze(o.line,s),_r(o.line),o.rest))for(var h=0;he.display.sizerWidth){var p=Math.ceil(l/or(e.display));p>e.display.maxLineLength&&(e.display.maxLineLength=p,e.display.maxLine=o.line,e.display.maxLineChanged=!0)}}}}function _r(e){if(e.widgets)for(var t=0;t=a&&(i=Ke(t,Bt(Ge(t,s))-e.wrapper.clientHeight),a=s)}return{from:i,to:Math.max(a,i+1)}}function Sr(e,t){var n=e.display,r=rr(e.display);t.top<0&&(t.top=0);var o=e.curOp&&null!=e.curOp.scrollTop?e.curOp.scrollTop:n.scroller.scrollTop,i=qn(e),a={};t.bottom-t.top>i&&(t.bottom=t.top+i);var c=e.doc.height+jn(n),s=t.topc-r;if(t.topo+i){var u=Math.min(t.top,(l?c:t.bottom)-i);u!=o&&(a.scrollTop=u)}var f=e.curOp&&null!=e.curOp.scrollLeft?e.curOp.scrollLeft:n.scroller.scrollLeft,d=_n(e)-(e.options.fixedGutter?n.gutters.offsetWidth:0),h=t.right-t.left>d;return h&&(t.right=t.left+d),t.left<10?a.scrollLeft=0:t.leftd+f-3&&(a.scrollLeft=t.right+(h?0:10)-d),a}function Or(e,t){null!=t&&(Ar(e),e.curOp.scrollTop=(null==e.curOp.scrollTop?e.doc.scrollTop:e.curOp.scrollTop)+t)}function Er(e){Ar(e);var t=e.getCursor();e.curOp.scrollToPos={from:t,to:t,margin:e.options.cursorScrollMargin}}function Tr(e,t,n){null==t&&null==n||Ar(e),null!=t&&(e.curOp.scrollLeft=t),null!=n&&(e.curOp.scrollTop=n)}function Ar(e){var t=e.curOp.scrollToPos;t&&(e.curOp.scrollToPos=null,Lr(e,$n(e,t.from),$n(e,t.to),t.margin))}function Lr(e,t,n,r){var o=Sr(e,{left:Math.min(t.left,n.left),top:Math.min(t.top,n.top)-r,right:Math.max(t.right,n.right),bottom:Math.max(t.bottom,n.bottom)+r});Tr(e,o.scrollLeft,o.scrollTop)}function Hr(e,t){Math.abs(e.doc.scrollTop-t)<2||(n||so(e,{top:t}),Dr(e,t,!0),n&&so(e),ro(e,100))}function Dr(e,t,n){t=Math.max(0,Math.min(e.display.scroller.scrollHeight-e.display.scroller.clientHeight,t)),(e.display.scroller.scrollTop!=t||n)&&(e.doc.scrollTop=t,e.display.scrollbars.setScrollTop(t),e.display.scroller.scrollTop!=t&&(e.display.scroller.scrollTop=t))}function Pr(e,t,n,r){t=Math.max(0,Math.min(t,e.display.scroller.scrollWidth-e.display.scroller.clientWidth)),(n?t==e.doc.scrollLeft:Math.abs(e.doc.scrollLeft-t)<2)&&!r||(e.doc.scrollLeft=t,fo(e),e.display.scroller.scrollLeft!=t&&(e.display.scroller.scrollLeft=t),e.display.scrollbars.setScrollLeft(t))}function Vr(e){var t=e.display,n=t.gutters.offsetWidth,r=Math.round(e.doc.height+jn(e.display));return{clientHeight:t.scroller.clientHeight,viewHeight:t.wrapper.clientHeight,scrollWidth:t.scroller.scrollWidth,clientWidth:t.scroller.clientWidth,viewWidth:t.wrapper.clientWidth,barLeft:e.options.fixedGutter?n:0,docHeight:r,scrollHeight:r+Cn(e)+t.barHeight,nativeBarWidth:t.nativeBarWidth,gutterWidth:n}}var Rr=function(e,t,n){this.cm=n;var r=this.vert=S("div",[S("div",null,null,"min-width: 1px")],"CodeMirror-vscrollbar"),o=this.horiz=S("div",[S("div",null,null,"height: 100%; min-height: 1px")],"CodeMirror-hscrollbar");r.tabIndex=o.tabIndex=-1,e(r),e(o),fe(r,"scroll",(function(){r.clientHeight&&t(r.scrollTop,"vertical")})),fe(o,"scroll",(function(){o.clientWidth&&t(o.scrollLeft,"horizontal")})),this.checkedZeroWidth=!1,a&&c<8&&(this.horiz.style.minHeight=this.vert.style.minWidth="18px")};Rr.prototype.update=function(e){var t=e.scrollWidth>e.clientWidth+1,n=e.scrollHeight>e.clientHeight+1,r=e.nativeBarWidth;if(n){this.vert.style.display="block",this.vert.style.bottom=t?r+"px":"0";var o=e.viewHeight-(t?r:0);this.vert.firstChild.style.height=Math.max(0,e.scrollHeight-e.clientHeight+o)+"px"}else this.vert.style.display="",this.vert.firstChild.style.height="0";if(t){this.horiz.style.display="block",this.horiz.style.right=n?r+"px":"0",this.horiz.style.left=e.barLeft+"px";var i=e.viewWidth-e.barLeft-(n?r:0);this.horiz.firstChild.style.width=Math.max(0,e.scrollWidth-e.clientWidth+i)+"px"}else this.horiz.style.display="",this.horiz.firstChild.style.width="0";return!this.checkedZeroWidth&&e.clientHeight>0&&(0==r&&this.zeroWidthHack(),this.checkedZeroWidth=!0),{right:n?r:0,bottom:t?r:0}},Rr.prototype.setScrollLeft=function(e){this.horiz.scrollLeft!=e&&(this.horiz.scrollLeft=e),this.disableHoriz&&this.enableZeroWidthBar(this.horiz,this.disableHoriz,"horiz")},Rr.prototype.setScrollTop=function(e){this.vert.scrollTop!=e&&(this.vert.scrollTop=e),this.disableVert&&this.enableZeroWidthBar(this.vert,this.disableVert,"vert")},Rr.prototype.zeroWidthHack=function(){var e=m&&!h?"12px":"18px";this.horiz.style.height=this.vert.style.width=e,this.horiz.style.pointerEvents=this.vert.style.pointerEvents="none",this.disableHoriz=new R,this.disableVert=new R},Rr.prototype.enableZeroWidthBar=function(e,t,n){e.style.pointerEvents="auto",t.set(1e3,(function r(){var o=e.getBoundingClientRect();("vert"==n?document.elementFromPoint(o.right-1,(o.top+o.bottom)/2):document.elementFromPoint((o.right+o.left)/2,o.bottom-1))!=e?e.style.pointerEvents="none":t.set(1e3,r)}))},Rr.prototype.clear=function(){var e=this.horiz.parentNode;e.removeChild(this.horiz),e.removeChild(this.vert)};var Ir=function(){};function Nr(e,t){t||(t=Vr(e));var n=e.display.barWidth,r=e.display.barHeight;Fr(e,t);for(var o=0;o<4&&n!=e.display.barWidth||r!=e.display.barHeight;o++)n!=e.display.barWidth&&e.options.lineWrapping&&Cr(e),Fr(e,Vr(e)),n=e.display.barWidth,r=e.display.barHeight}function Fr(e,t){var n=e.display,r=n.scrollbars.update(t);n.sizer.style.paddingRight=(n.barWidth=r.right)+"px",n.sizer.style.paddingBottom=(n.barHeight=r.bottom)+"px",n.heightForcer.style.borderBottom=r.bottom+"px solid transparent",r.right&&r.bottom?(n.scrollbarFiller.style.display="block",n.scrollbarFiller.style.height=r.bottom+"px",n.scrollbarFiller.style.width=r.right+"px"):n.scrollbarFiller.style.display="",r.bottom&&e.options.coverGutterNextToScrollbar&&e.options.fixedGutter?(n.gutterFiller.style.display="block",n.gutterFiller.style.height=r.bottom+"px",n.gutterFiller.style.width=t.gutterWidth+"px"):n.gutterFiller.style.display=""}Ir.prototype.update=function(){return{bottom:0,right:0}},Ir.prototype.setScrollLeft=function(){},Ir.prototype.setScrollTop=function(){},Ir.prototype.clear=function(){};var Br={native:Rr,null:Ir};function Ur(e){e.display.scrollbars&&(e.display.scrollbars.clear(),e.display.scrollbars.addClass&&C(e.display.wrapper,e.display.scrollbars.addClass)),e.display.scrollbars=new Br[e.options.scrollbarStyle]((function(t){e.display.wrapper.insertBefore(t,e.display.scrollbarFiller),fe(t,"mousedown",(function(){e.state.focused&&setTimeout((function(){return e.display.input.focus()}),0)})),t.setAttribute("cm-not-content","true")}),(function(t,n){"horizontal"==n?Pr(e,t):Hr(e,t)}),e),e.display.scrollbars.addClass&&A(e.display.wrapper,e.display.scrollbars.addClass)}var Wr=0;function Gr(e){var t;e.curOp={cm:e,viewChanged:!1,startHeight:e.doc.height,forceUpdate:!1,updateInput:0,typing:!1,changeObjs:null,cursorActivityHandlers:null,cursorActivityCalled:0,selectionChanged:!1,updateMaxLine:!1,scrollLeft:null,scrollTop:null,scrollToPos:null,focus:!1,id:++Wr},t=e.curOp,an?an.ops.push(t):t.ownsGroup=an={ops:[t],delayedCallbacks:[]}}function Yr(e){var t=e.curOp;t&&function(e,t){var n=e.ownsGroup;if(n)try{!function(e){var t=e.delayedCallbacks,n=0;do{for(;n=n.viewTo)||n.maxLineChanged&&t.options.lineWrapping,e.update=e.mustUpdate&&new io(t,e.mustUpdate&&{top:e.scrollTop,ensure:e.scrollToPos},e.forceUpdate)}function Zr(e){e.updatedDisplay=e.mustUpdate&&ao(e.cm,e.update)}function Xr(e){var t=e.cm,n=t.display;e.updatedDisplay&&Cr(t),e.barMeasure=Vr(t),n.maxLineChanged&&!t.options.lineWrapping&&(e.adjustWidthTo=On(t,n.maxLine,n.maxLine.text.length).left+3,t.display.sizerWidth=e.adjustWidthTo,e.barMeasure.scrollWidth=Math.max(n.scroller.clientWidth,n.sizer.offsetLeft+e.adjustWidthTo+Cn(t)+t.display.barWidth),e.maxScrollLeft=Math.max(0,n.sizer.offsetLeft+e.adjustWidthTo-_n(t))),(e.updatedDisplay||e.selectionChanged)&&(e.preparedSelection=n.input.prepareSelection())}function Kr(e){var t=e.cm;null!=e.adjustWidthTo&&(t.display.sizer.style.minWidth=e.adjustWidthTo+"px",e.maxScrollLeft(window.innerHeight||document.documentElement.clientHeight)&&(o=!1),null!=o&&!p){var i=S("div","\u200b",null,"position: absolute;\n top: "+(t.top-n.viewOffset-xn(e.display))+"px;\n height: "+(t.bottom-t.top+Cn(e)+n.barHeight)+"px;\n left: "+t.left+"px; width: "+Math.max(2,t.right-t.left)+"px;");e.display.lineSpace.appendChild(i),i.scrollIntoView(o),e.display.lineSpace.removeChild(i)}}}(t,function(e,t,n,r){var o;null==r&&(r=0),e.options.lineWrapping||t!=n||(n="before"==(t=t.ch?et(t.line,"before"==t.sticky?t.ch-1:t.ch,"after"):t).sticky?et(t.line,t.ch+1,"before"):t);for(var i=0;i<5;i++){var a=!1,c=Yn(e,t),s=n&&n!=t?Yn(e,n):c,l=Sr(e,o={left:Math.min(c.left,s.left),top:Math.min(c.top,s.top)-r,right:Math.max(c.left,s.left),bottom:Math.max(c.bottom,s.bottom)+r}),u=e.doc.scrollTop,f=e.doc.scrollLeft;if(null!=l.scrollTop&&(Hr(e,l.scrollTop),Math.abs(e.doc.scrollTop-u)>1&&(a=!0)),null!=l.scrollLeft&&(Pr(e,l.scrollLeft),Math.abs(e.doc.scrollLeft-f)>1&&(a=!0)),!a)break}return o}(t,ct(r,e.scrollToPos.from),ct(r,e.scrollToPos.to),e.scrollToPos.margin));var o=e.maybeHiddenMarkers,i=e.maybeUnhiddenMarkers;if(o)for(var a=0;a=e.display.viewTo)){var n=+new Date+e.options.workTime,r=ht(e,t.highlightFrontier),o=[];t.iter(r.line,Math.min(t.first+t.size,e.display.viewTo+500),(function(i){if(r.line>=e.display.viewFrom){var a=i.styles,c=i.text.length>e.options.maxHighlightLength?Fe(t.mode,r.state):null,s=ft(e,i,r,!0);c&&(r.state=c),i.styles=s.styles;var l=i.styleClasses,u=s.classes;u?i.styleClasses=u:l&&(i.styleClasses=null);for(var f=!a||a.length!=i.styles.length||l!=u&&(!l||!u||l.bgClass!=u.bgClass||l.textClass!=u.textClass),d=0;!f&&dn)return ro(e,e.options.workDelay),!0})),t.highlightFrontier=r.line,t.modeFrontier=Math.max(t.modeFrontier,r.line),o.length&&Jr(e,(function(){for(var t=0;t=n.viewFrom&&t.visible.to<=n.viewTo&&(null==n.updateLineNumbers||n.updateLineNumbers>=n.viewTo)&&n.renderedView==n.view&&0==zr(e))return!1;ho(e)&&(hr(e),t.dims=ir(e));var o=r.first+r.size,i=Math.max(t.visible.from-e.options.viewportMargin,r.first),a=Math.min(o,t.visible.to+e.options.viewportMargin);n.viewFroma&&n.viewTo-a<20&&(a=Math.min(o,n.viewTo)),kt&&(i=Rt(e.doc,i),a=It(e.doc,a));var c=i!=n.viewFrom||a!=n.viewTo||n.lastWrapHeight!=t.wrapperHeight||n.lastWrapWidth!=t.wrapperWidth;!function(e,t,n){var r=e.display;0==r.view.length||t>=r.viewTo||n<=r.viewFrom?(r.view=on(e,t,n),r.viewFrom=t):(r.viewFrom>t?r.view=on(e,t,r.viewFrom).concat(r.view):r.viewFromn&&(r.view=r.view.slice(0,ur(e,n)))),r.viewTo=n}(e,i,a),n.viewOffset=Bt(Ge(e.doc,n.viewFrom)),e.display.mover.style.top=n.viewOffset+"px";var l=zr(e);if(!c&&0==l&&!t.force&&n.renderedView==n.view&&(null==n.updateLineNumbers||n.updateLineNumbers>=n.viewTo))return!1;var u=function(e){if(e.hasFocus())return null;var t=T();if(!t||!E(e.display.lineDiv,t))return null;var n={activeElt:t};if(window.getSelection){var r=window.getSelection();r.anchorNode&&r.extend&&E(e.display.lineDiv,r.anchorNode)&&(n.anchorNode=r.anchorNode,n.anchorOffset=r.anchorOffset,n.focusNode=r.focusNode,n.focusOffset=r.focusOffset)}return n}(e);return l>4&&(n.lineDiv.style.display="none"),function(e,t,n){var r=e.display,o=e.options.lineNumbers,i=r.lineDiv,a=i.firstChild;function c(t){var n=t.nextSibling;return s&&m&&e.display.currentWheelTarget==t?t.style.display="none":t.parentNode.removeChild(t),n}for(var l=r.view,u=r.viewFrom,f=0;f-1&&(h=!1),un(e,d,u,n)),h&&(_(d.lineNumber),d.lineNumber.appendChild(document.createTextNode(Je(e.options,u)))),a=d.node.nextSibling}else{var p=gn(e,d,u,n);i.insertBefore(p,a)}u+=d.size}for(;a;)a=c(a)}(e,n.updateLineNumbers,t.dims),l>4&&(n.lineDiv.style.display=""),n.renderedView=n.view,function(e){if(e&&e.activeElt&&e.activeElt!=T()&&(e.activeElt.focus(),!/^(INPUT|TEXTAREA)$/.test(e.activeElt.nodeName)&&e.anchorNode&&E(document.body,e.anchorNode)&&E(document.body,e.focusNode))){var t=window.getSelection(),n=document.createRange();n.setEnd(e.anchorNode,e.anchorOffset),n.collapse(!1),t.removeAllRanges(),t.addRange(n),t.extend(e.focusNode,e.focusOffset)}}(u),_(n.cursorDiv),_(n.selectionDiv),n.gutters.style.height=n.sizer.style.minHeight=0,c&&(n.lastWrapHeight=t.wrapperHeight,n.lastWrapWidth=t.wrapperWidth,ro(e,400)),n.updateLineNumbers=null,!0}function co(e,t){for(var n=t.viewport,r=!0;;r=!1){if(r&&e.options.lineWrapping&&t.oldDisplayWidth!=_n(e))r&&(t.visible=qr(e.display,e.doc,n));else if(n&&null!=n.top&&(n={top:Math.min(e.doc.height+jn(e.display)-qn(e),n.top)}),t.visible=qr(e.display,e.doc,n),t.visible.from>=e.display.viewFrom&&t.visible.to<=e.display.viewTo)break;if(!ao(e,t))break;Cr(e);var o=Vr(e);vr(e),Nr(e,o),uo(e,o),t.force=!1}t.signal(e,"update",e),e.display.viewFrom==e.display.reportedViewFrom&&e.display.viewTo==e.display.reportedViewTo||(t.signal(e,"viewportChange",e,e.display.viewFrom,e.display.viewTo),e.display.reportedViewFrom=e.display.viewFrom,e.display.reportedViewTo=e.display.viewTo)}function so(e,t){var n=new io(e,t);if(ao(e,n)){Cr(e),co(e,n);var r=Vr(e);vr(e),Nr(e,r),uo(e,r),n.finish()}}function lo(e){var t=e.gutters.offsetWidth;e.sizer.style.marginLeft=t+"px"}function uo(e,t){e.display.sizer.style.minHeight=t.docHeight+"px",e.display.heightForcer.style.top=t.docHeight+"px",e.display.gutters.style.height=t.docHeight+e.display.barHeight+Cn(e)+"px"}function fo(e){var t=e.display,n=t.view;if(t.alignWidgets||t.gutters.firstChild&&e.options.fixedGutter){for(var r=ar(t)-t.scroller.scrollLeft+e.doc.scrollLeft,o=t.gutters.offsetWidth,i=r+"px",a=0;ac.clientWidth,u=c.scrollHeight>c.clientHeight;if(o&&l||i&&u){if(i&&m&&s)e:for(var d=t.target,h=a.view;d!=c;d=d.parentNode)for(var p=0;p=0&&tt(e,r.to())<=0)return n}return-1};var jo=function(e,t){this.anchor=e,this.head=t};function Mo(e,t,n){var r=e&&e.options.selectionsMayTouch,o=t[n];t.sort((function(e,t){return tt(e.from(),t.from())})),n=I(t,o);for(var i=1;i0:s>=0){var l=it(c.from(),a.from()),u=ot(c.to(),a.to()),f=c.empty()?a.from()==a.head:c.from()==c.head;i<=n&&--n,t.splice(--i,2,new jo(f?u:l,f?l:u))}}return new xo(t,n)}function Co(e,t){return new xo([new jo(e,t||e)],0)}function _o(e){return e.text?et(e.from.line+e.text.length-1,$(e.text).length+(1==e.text.length?e.from.ch:0)):e.to}function qo(e,t){if(tt(e,t.from)<0)return e;if(tt(e,t.to)<=0)return _o(t);var n=e.line+t.text.length-(t.to.line-t.from.line)-1,r=e.ch;return e.line==t.to.line&&(r+=_o(t).ch-t.to.ch),et(n,r)}function So(e,t){for(var n=[],r=0;r1&&e.remove(c.line+1,p-1),e.insert(c.line+1,g)}sn(e,"change",e,t)}function Ho(e,t,n){!function e(r,o,i){if(r.linked)for(var a=0;ac-(e.cm?e.cm.options.historyEventDelay:500)||"*"==t.origin.charAt(0)))&&(i=function(e,t){return t?(Io(e.done),$(e.done)):e.done.length&&!$(e.done).ranges?$(e.done):e.done.length>1&&!e.done[e.done.length-2].ranges?(e.done.pop(),$(e.done)):void 0}(o,o.lastOp==r)))a=$(i.changes),0==tt(t.from,t.to)&&0==tt(t.from,a.to)?a.to=_o(t):i.changes.push(Ro(e,t));else{var s=$(o.done);for(s&&s.ranges||Fo(e.sel,o.done),i={changes:[Ro(e,t)],generation:o.generation},o.done.push(i);o.done.length>o.undoDepth;)o.done.shift(),o.done[0].ranges||o.done.shift()}o.done.push(n),o.generation=++o.maxGeneration,o.lastModTime=o.lastSelTime=c,o.lastOp=o.lastSelOp=r,o.lastOrigin=o.lastSelOrigin=t.origin,a||pe(e,"historyAdded")}function Fo(e,t){var n=$(t);n&&n.ranges&&n.equals(e)||t.push(e)}function Bo(e,t,n,r){var o=t["spans_"+e.id],i=0;e.iter(Math.max(e.first,n),Math.min(e.first+e.size,r),(function(n){n.markedSpans&&((o||(o=t["spans_"+e.id]={}))[i]=n.markedSpans),++i}))}function Uo(e){if(!e)return null;for(var t,n=0;n-1&&($(c)[f]=l[f],delete l[f])}}}return r}function Yo(e,t,n,r){if(r){var o=e.anchor;if(n){var i=tt(t,o)<0;i!=tt(n,o)<0?(o=t,t=n):i!=tt(t,n)<0&&(t=n)}return new jo(o,t)}return new jo(n||t,t)}function $o(e,t,n,r,o){null==o&&(o=e.cm&&(e.cm.display.shift||e.extend)),Jo(e,new xo([Yo(e.sel.primary(),t,n,o)],0),r)}function Zo(e,t,n){for(var r=[],o=e.cm&&(e.cm.display.shift||e.extend),i=0;i=t.ch:c.to>t.ch))){if(o&&(pe(s,"beforeCursorEnter"),s.explicitlyCleared)){if(i.markedSpans){--a;continue}break}if(!s.atomic)continue;if(n){var f=s.find(r<0?1:-1),d=void 0;if((r<0?u:l)&&(f=ai(e,f,-r,f&&f.line==t.line?i:null)),f&&f.line==t.line&&(d=tt(f,n))&&(r<0?d<0:d>0))return oi(e,f,t,r,o)}var h=s.find(r<0?-1:1);return(r<0?l:u)&&(h=ai(e,h,r,h.line==t.line?i:null)),h?oi(e,h,t,r,o):null}}return t}function ii(e,t,n,r,o){var i=r||1;return oi(e,t,n,i,o)||!o&&oi(e,t,n,i,!0)||oi(e,t,n,-i,o)||!o&&oi(e,t,n,-i,!0)||(e.cantEdit=!0,et(e.first,0))}function ai(e,t,n,r){return n<0&&0==t.ch?t.line>e.first?ct(e,et(t.line-1)):null:n>0&&t.ch==(r||Ge(e,t.line)).text.length?t.line0)){var u=[s,1],f=tt(l.from,c.from),d=tt(l.to,c.to);(f<0||!a.inclusiveLeft&&!f)&&u.push({from:l.from,to:c.from}),(d>0||!a.inclusiveRight&&!d)&&u.push({from:c.to,to:l.to}),o.splice.apply(o,u),s+=u.length-3}}return o}(e,t.from,t.to);if(r)for(var o=r.length-1;o>=0;--o)ui(e,{from:r[o].from,to:r[o].to,text:o?[""]:t.text,origin:t.origin});else ui(e,t)}}function ui(e,t){if(1!=t.text.length||""!=t.text[0]||0!=tt(t.from,t.to)){var n=So(e,t);No(e,t,n,e.cm?e.cm.curOp.id:NaN),hi(e,t,n,Ct(e,t));var r=[];Ho(e,(function(e,n){n||-1!=I(r,e.history)||(gi(e.history,t),r.push(e.history)),hi(e,t,null,Ct(e,t))}))}}function fi(e,t,n){var r=e.cm&&e.cm.state.suppressEdits;if(!r||n){for(var o,i=e.history,a=e.sel,c="undo"==t?i.done:i.undone,s="undo"==t?i.undone:i.done,l=0;l=0;--h){var p=d(h);if(p)return p.v}}}}function di(e,t){if(0!=t&&(e.first+=t,e.sel=new xo(Z(e.sel.ranges,(function(e){return new jo(et(e.anchor.line+t,e.anchor.ch),et(e.head.line+t,e.head.ch))})),e.sel.primIndex),e.cm)){fr(e.cm,e.first,e.first-t,t);for(var n=e.cm.display,r=n.viewFrom;re.lastLine())){if(t.from.linei&&(t={from:t.from,to:et(i,Ge(e,i).text.length),text:[t.text[0]],origin:t.origin}),t.removed=Ye(e,t.from,t.to),n||(n=So(e,t)),e.cm?function(e,t,n){var r=e.doc,o=e.display,i=t.from,a=t.to,c=!1,s=i.line;e.options.lineWrapping||(s=Xe(Vt(Ge(r,i.line))),r.iter(s,a.line+1,(function(e){if(e==o.maxLine)return c=!0,!0}))),r.sel.contains(t.from,t.to)>-1&&ve(e),Lo(r,t,n,cr(e)),e.options.lineWrapping||(r.iter(s,i.line+t.text.length,(function(e){var t=Ut(e);t>o.maxLineLength&&(o.maxLine=e,o.maxLineLength=t,o.maxLineChanged=!0,c=!1)})),c&&(e.curOp.updateMaxLine=!0)),function(e,t){if(e.modeFrontier=Math.min(e.modeFrontier,t),!(e.highlightFrontiern;r--){var o=Ge(e,r).stateAfter;if(o&&(!(o instanceof lt)||r+o.lookAhead1||!(this.children[0]instanceof yi))){var c=[];this.collapse(c),this.children=[new yi(c)],this.children[0].parent=this}},collapse:function(e){for(var t=0;t50){for(var a=o.lines.length%25+25,c=a;c10);e.parent.maybeSpill()}},iterN:function(e,t,n){for(var r=0;r0||0==a&&!1!==i.clearWhenEmpty)return i;if(i.replacedWith&&(i.collapsed=!0,i.widgetNode=O("span",[i.replacedWith],"CodeMirror-widget"),r.handleMouseEvents||i.widgetNode.setAttribute("cm-ignore-events","true"),r.insertLeft&&(i.widgetNode.insertLeft=!0)),i.collapsed){if(Pt(e,t.line,t,n,i)||t.line!=n.line&&Pt(e,n.line,t,n,i))throw new Error("Inserting collapsed marker partially overlapping an existing one");kt=!0}i.addToHistory&&No(e,{from:t,to:n,origin:"markText"},e.sel,NaN);var c,s=t.line,l=e.cm;if(e.iter(s,n.line+1,(function(e){l&&i.collapsed&&!l.options.lineWrapping&&Vt(e)==l.display.maxLine&&(c=!0),i.collapsed&&s!=t.line&&Ze(e,0),function(e,t){e.markedSpans=e.markedSpans?e.markedSpans.concat([t]):[t],t.marker.attachLine(e)}(e,new xt(i,s==t.line?t.ch:null,s==n.line?n.ch:null)),++s})),i.collapsed&&e.iter(t.line,n.line+1,(function(t){Nt(e,t)&&Ze(t,0)})),i.clearOnEnter&&fe(i,"beforeCursorEnter",(function(){return i.clear()})),i.readOnly&&(wt=!0,(e.history.done.length||e.history.undone.length)&&e.clearHistory()),i.collapsed&&(i.id=++xi,i.atomic=!0),l){if(c&&(l.curOp.updateMaxLine=!0),i.collapsed)fr(l,t.line,n.line+1);else if(i.className||i.startStyle||i.endStyle||i.css||i.attributes||i.title)for(var u=t.line;u<=n.line;u++)dr(l,u,"text");i.atomic&&ni(l.doc),sn(l,"markerAdded",l,i)}return i}ji.prototype.clear=function(){if(!this.explicitlyCleared){var e=this.doc.cm,t=e&&!e.curOp;if(t&&Gr(e),ge(this,"clear")){var n=this.find();n&&sn(this,"clear",n.from,n.to)}for(var r=null,o=null,i=0;ie.display.maxLineLength&&(e.display.maxLine=l,e.display.maxLineLength=u,e.display.maxLineChanged=!0)}null!=r&&e&&this.collapsed&&fr(e,r,o+1),this.lines.length=0,this.explicitlyCleared=!0,this.atomic&&this.doc.cantEdit&&(this.doc.cantEdit=!1,e&&ni(e.doc)),e&&sn(e,"markerCleared",e,this,r,o),t&&Yr(e),this.parent&&this.parent.clear()}},ji.prototype.find=function(e,t){var n,r;null==e&&"bookmark"==this.type&&(e=1);for(var o=0;o=0;s--)li(this,r[s]);c?Qo(this,c):this.cm&&Er(this.cm)})),undo:no((function(){fi(this,"undo")})),redo:no((function(){fi(this,"redo")})),undoSelection:no((function(){fi(this,"undo",!0)})),redoSelection:no((function(){fi(this,"redo",!0)})),setExtending:function(e){this.extend=e},getExtending:function(){return this.extend},historySize:function(){for(var e=this.history,t=0,n=0,r=0;r=e.ch)&&t.push(o.marker.parent||o.marker)}return t},findMarks:function(e,t,n){e=ct(this,e),t=ct(this,t);var r=[],o=e.line;return this.iter(e.line,t.line+1,(function(i){var a=i.markedSpans;if(a)for(var c=0;c=s.to||null==s.from&&o!=e.line||null!=s.from&&o==t.line&&s.from>=t.ch||n&&!n(s.marker)||r.push(s.marker.parent||s.marker)}++o})),r},getAllMarks:function(){var e=[];return this.iter((function(t){var n=t.markedSpans;if(n)for(var r=0;re)return t=e,!0;e-=i,++n})),ct(this,et(n,t))},indexFromPos:function(e){var t=(e=ct(this,e)).ch;if(e.linet&&(t=e.from),null!=e.to&&e.to-1)return t.state.draggingText(e),void setTimeout((function(){return t.display.input.focus()}),20);try{var f=e.dataTransfer.getData("Text");if(f){var d;if(t.state.draggingText&&!t.state.draggingText.copy&&(d=t.listSelections()),ei(t.doc,Co(n,n)),d)for(var h=0;h=0;t--)pi(e.doc,"",r[t].from,r[t].to,"+delete");Er(e)}))}function Xi(e,t,n){var r=oe(e.text,t+n,n);return r<0||r>e.text.length?null:r}function Ki(e,t,n){var r=Xi(e,t.ch,n);return null==r?null:new et(t.line,r,n<0?"after":"before")}function Qi(e,t,n,r,o){if(e){"rtl"==t.doc.direction&&(o=-o);var i=le(n,t.doc.direction);if(i){var a,c=o<0?$(i):i[0],s=o<0==(1==c.level)?"after":"before";if(c.level>0||"rtl"==t.doc.direction){var l=Tn(t,n);a=o<0?n.text.length-1:0;var u=An(t,l,a).top;a=ie((function(e){return An(t,l,e).top==u}),o<0==(1==c.level)?c.from:c.to-1,a),"before"==s&&(a=Xi(n,a,1))}else a=o<0?c.to:c.from;return new et(r,a,s)}}return new et(r,o<0?n.text.length:0,o<0?"before":"after")}Ni.basic={Left:"goCharLeft",Right:"goCharRight",Up:"goLineUp",Down:"goLineDown",End:"goLineEnd",Home:"goLineStartSmart",PageUp:"goPageUp",PageDown:"goPageDown",Delete:"delCharAfter",Backspace:"delCharBefore","Shift-Backspace":"delCharBefore",Tab:"defaultTab","Shift-Tab":"indentAuto",Enter:"newlineAndIndent",Insert:"toggleOverwrite",Esc:"singleSelection"},Ni.pcDefault={"Ctrl-A":"selectAll","Ctrl-D":"deleteLine","Ctrl-Z":"undo","Shift-Ctrl-Z":"redo","Ctrl-Y":"redo","Ctrl-Home":"goDocStart","Ctrl-End":"goDocEnd","Ctrl-Up":"goLineUp","Ctrl-Down":"goLineDown","Ctrl-Left":"goGroupLeft","Ctrl-Right":"goGroupRight","Alt-Left":"goLineStart","Alt-Right":"goLineEnd","Ctrl-Backspace":"delGroupBefore","Ctrl-Delete":"delGroupAfter","Ctrl-S":"save","Ctrl-F":"find","Ctrl-G":"findNext","Shift-Ctrl-G":"findPrev","Shift-Ctrl-F":"replace","Shift-Ctrl-R":"replaceAll","Ctrl-[":"indentLess","Ctrl-]":"indentMore","Ctrl-U":"undoSelection","Shift-Ctrl-U":"redoSelection","Alt-U":"redoSelection",fallthrough:"basic"},Ni.emacsy={"Ctrl-F":"goCharRight","Ctrl-B":"goCharLeft","Ctrl-P":"goLineUp","Ctrl-N":"goLineDown","Alt-F":"goWordRight","Alt-B":"goWordLeft","Ctrl-A":"goLineStart","Ctrl-E":"goLineEnd","Ctrl-V":"goPageDown","Shift-Ctrl-V":"goPageUp","Ctrl-D":"delCharAfter","Ctrl-H":"delCharBefore","Alt-D":"delWordAfter","Alt-Backspace":"delWordBefore","Ctrl-K":"killLine","Ctrl-T":"transposeChars","Ctrl-O":"openLine"},Ni.macDefault={"Cmd-A":"selectAll","Cmd-D":"deleteLine","Cmd-Z":"undo","Shift-Cmd-Z":"redo","Cmd-Y":"redo","Cmd-Home":"goDocStart","Cmd-Up":"goDocStart","Cmd-End":"goDocEnd","Cmd-Down":"goDocEnd","Alt-Left":"goGroupLeft","Alt-Right":"goGroupRight","Cmd-Left":"goLineLeft","Cmd-Right":"goLineRight","Alt-Backspace":"delGroupBefore","Ctrl-Alt-Backspace":"delGroupAfter","Alt-Delete":"delGroupAfter","Cmd-S":"save","Cmd-F":"find","Cmd-G":"findNext","Shift-Cmd-G":"findPrev","Cmd-Alt-F":"replace","Shift-Cmd-Alt-F":"replaceAll","Cmd-[":"indentLess","Cmd-]":"indentMore","Cmd-Backspace":"delWrappedLineLeft","Cmd-Delete":"delWrappedLineRight","Cmd-U":"undoSelection","Shift-Cmd-U":"redoSelection","Ctrl-Up":"goDocStart","Ctrl-Down":"goDocEnd",fallthrough:["basic","emacsy"]},Ni.default=m?Ni.macDefault:Ni.pcDefault;var Ji={selectAll:ci,singleSelection:function(e){return e.setSelection(e.getCursor("anchor"),e.getCursor("head"),F)},killLine:function(e){return Zi(e,(function(t){if(t.empty()){var n=Ge(e.doc,t.head.line).text.length;return t.head.ch==n&&t.head.line0)o=new et(o.line,o.ch+1),e.replaceRange(i.charAt(o.ch-1)+i.charAt(o.ch-2),et(o.line,o.ch-2),o,"+transpose");else if(o.line>e.doc.first){var a=Ge(e.doc,o.line-1).text;a&&(o=new et(o.line,1),e.replaceRange(i.charAt(0)+e.doc.lineSeparator()+a.charAt(a.length-1),et(o.line-1,a.length-1),o,"+transpose"))}n.push(new jo(o,o))}e.setSelections(n)}))},newlineAndIndent:function(e){return Jr(e,(function(){for(var t=e.listSelections(),n=t.length-1;n>=0;n--)e.replaceRange(e.doc.lineSeparator(),t[n].anchor,t[n].head,"+input");t=e.listSelections();for(var r=0;r-1&&(tt((o=l.ranges[o]).from(),t)<0||t.xRel>0)&&(tt(o.to(),t)>0||t.xRel<0)?function(e,t,n,r){var o=e.display,i=!1,l=eo(e,(function(t){s&&(o.scroller.draggable=!1),e.state.draggingText=!1,he(o.wrapper.ownerDocument,"mouseup",l),he(o.wrapper.ownerDocument,"mousemove",u),he(o.scroller,"dragstart",f),he(o.scroller,"drop",l),i||(ye(t),r.addNew||$o(e.doc,n,null,null,r.extend),s&&!d||a&&9==c?setTimeout((function(){o.wrapper.ownerDocument.body.focus({preventScroll:!0}),o.input.focus()}),20):o.input.focus())})),u=function(e){i=i||Math.abs(t.clientX-e.clientX)+Math.abs(t.clientY-e.clientY)>=10},f=function(){return i=!0};s&&(o.scroller.draggable=!0),e.state.draggingText=l,l.copy=!r.moveOnDrag,o.scroller.dragDrop&&o.scroller.dragDrop(),fe(o.wrapper.ownerDocument,"mouseup",l),fe(o.wrapper.ownerDocument,"mousemove",u),fe(o.scroller,"dragstart",f),fe(o.scroller,"drop",l),xr(e),setTimeout((function(){return o.input.focus()}),20)}(e,r,t,i):function(e,t,n,r){var o=e.display,i=e.doc;ye(t);var a,c,s=i.sel,l=s.ranges;if(r.addNew&&!r.extend?(c=i.sel.contains(n),a=c>-1?l[c]:new jo(n,n)):(a=i.sel.primary(),c=i.sel.primIndex),"rectangle"==r.unit)r.addNew||(a=new jo(n,n)),n=lr(e,t,!0,!0),c=-1;else{var u=za(e,n,r.unit);a=r.extend?Yo(a,u.anchor,u.head,r.extend):u}r.addNew?-1==c?(c=l.length,Jo(i,Mo(e,l.concat([a]),c),{scroll:!1,origin:"*mouse"})):l.length>1&&l[c].empty()&&"char"==r.unit&&!r.extend?(Jo(i,Mo(e,l.slice(0,c).concat(l.slice(c+1)),0),{scroll:!1,origin:"*mouse"}),s=i.sel):Xo(i,c,a,B):(c=0,Jo(i,new xo([a],0),B),s=i.sel);var f=n;function d(t){if(0!=tt(f,t))if(f=t,"rectangle"==r.unit){for(var o=[],l=e.options.tabSize,u=V(Ge(i,n.line).text,n.ch,l),d=V(Ge(i,t.line).text,t.ch,l),h=Math.min(u,d),p=Math.max(u,d),z=Math.min(n.line,t.line),v=Math.min(e.lastLine(),Math.max(n.line,t.line));z<=v;z++){var g=Ge(i,z).text,m=W(g,h,l);h==p?o.push(new jo(et(z,m),et(z,m))):g.length>m&&o.push(new jo(et(z,m),et(z,W(g,p,l))))}o.length||o.push(new jo(n,n)),Jo(i,Mo(e,s.ranges.slice(0,c).concat(o),c),{origin:"*mouse",scroll:!1}),e.scrollIntoView(t)}else{var y,b=a,w=za(e,t,r.unit),k=b.anchor;tt(w.anchor,k)>0?(y=w.head,k=it(b.from(),w.anchor)):(y=w.anchor,k=ot(b.to(),w.head));var x=s.ranges.slice(0);x[c]=function(e,t){var n=t.anchor,r=t.head,o=Ge(e.doc,n.line);if(0==tt(n,r)&&n.sticky==r.sticky)return t;var i=le(o);if(!i)return t;var a=ce(i,n.ch,n.sticky),c=i[a];if(c.from!=n.ch&&c.to!=n.ch)return t;var s,l=a+(c.from==n.ch==(1!=c.level)?0:1);if(0==l||l==i.length)return t;if(r.line!=n.line)s=(r.line-n.line)*("ltr"==e.doc.direction?1:-1)>0;else{var u=ce(i,r.ch,r.sticky),f=u-a||(r.ch-n.ch)*(1==c.level?-1:1);s=u==l-1||u==l?f<0:f>0}var d=i[l+(s?-1:0)],h=s==(1==d.level),p=h?d.from:d.to,z=h?"after":"before";return n.ch==p&&n.sticky==z?t:new jo(new et(n.line,p,z),r)}(e,new jo(ct(i,k),y)),Jo(i,Mo(e,x,c),B)}}var h=o.wrapper.getBoundingClientRect(),p=0;function z(t){e.state.selectingText=!1,p=1/0,t&&(ye(t),o.input.focus()),he(o.wrapper.ownerDocument,"mousemove",v),he(o.wrapper.ownerDocument,"mouseup",g),i.history.lastSelOrigin=null}var v=eo(e,(function(t){0!==t.buttons&&je(t)?function t(n){var a=++p,c=lr(e,n,!0,"rectangle"==r.unit);if(c)if(0!=tt(c,f)){e.curOp.focus=T(),d(c);var s=qr(o,i);(c.line>=s.to||c.lineh.bottom?20:0;l&&setTimeout(eo(e,(function(){p==a&&(o.scroller.scrollTop+=l,t(n))})),50)}}(t):z(t)})),g=eo(e,z);e.state.selectingText=g,fe(o.wrapper.ownerDocument,"mousemove",v),fe(o.wrapper.ownerDocument,"mouseup",g)}(e,r,t,i)}(t,r,i,e):xe(e)==n.scroller&&ye(e):2==o?(r&&$o(t.doc,r),setTimeout((function(){return n.input.focus()}),20)):3==o&&(x?t.display.input.onContextMenu(e):xr(t)))}}function za(e,t,n){if("char"==n)return new jo(t,t);if("word"==n)return e.findWordAt(t);if("line"==n)return new jo(et(t.line,0),ct(e.doc,et(t.line+1,0)));var r=n(e,t);return new jo(r.from,r.to)}function va(e,t,n,r){var o,i;if(t.touches)o=t.touches[0].clientX,i=t.touches[0].clientY;else try{o=t.clientX,i=t.clientY}catch(e){return!1}if(o>=Math.floor(e.display.gutters.getBoundingClientRect().right))return!1;r&&ye(t);var a=e.display,c=a.lineDiv.getBoundingClientRect();if(i>c.bottom||!ge(e,n))return we(t);i-=c.top-a.viewOffset;for(var s=0;s=o)return pe(e,n,e,Ke(e.doc,i),e.display.gutterSpecs[s].className,t),we(t)}}function ga(e,t){return va(e,t,"gutterClick",!0)}function ma(e,t){kn(e.display,t)||function(e,t){return!!ge(e,"gutterContextMenu")&&va(e,t,"gutterContextMenu",!1)}(e,t)||ze(e,t,"contextmenu")||x||e.display.input.onContextMenu(t)}function ya(e){e.display.wrapper.className=e.display.wrapper.className.replace(/\s*cm-s-\S+/g,"")+e.options.theme.replace(/(^|\s)\s*/g," cm-s-"),In(e)}ha.prototype.compare=function(e,t,n){return this.time+400>e&&0==tt(t,this.pos)&&n==this.button};var ba={toString:function(){return"CodeMirror.Init"}},wa={},ka={};function xa(e,t,n){if(!t!=!(n&&n!=ba)){var r=e.display.dragFunctions,o=t?fe:he;o(e.display.scroller,"dragstart",r.start),o(e.display.scroller,"dragenter",r.enter),o(e.display.scroller,"dragover",r.over),o(e.display.scroller,"dragleave",r.leave),o(e.display.scroller,"drop",r.drop)}}function ja(e){e.options.lineWrapping?(A(e.display.wrapper,"CodeMirror-wrap"),e.display.sizer.style.minWidth="",e.display.sizerWidth=null):(C(e.display.wrapper,"CodeMirror-wrap"),Wt(e)),sr(e),fr(e),In(e),setTimeout((function(){return Nr(e)}),100)}function Ma(e,t){var n=this;if(!(this instanceof Ma))return new Ma(e,t);this.options=t=t?P(t):{},P(wa,t,!1);var r=t.value;"string"==typeof r?r=new Oi(r,t.mode,null,t.lineSeparator,t.direction):t.mode&&(r.modeOption=t.mode),this.doc=r;var o=new Ma.inputStyles[t.inputStyle](this),i=this.display=new go(e,r,o,t);for(var l in i.wrapper.CodeMirror=this,ya(this),t.lineWrapping&&(this.display.wrapper.className+=" CodeMirror-wrap"),Ur(this),this.state={keyMaps:[],overlays:[],modeGen:0,overwrite:!1,delayingBlurEvent:!1,focused:!1,suppressEdits:!1,pasteIncoming:-1,cutIncoming:-1,selectingText:!1,draggingText:!1,highlight:new R,keySeq:null,specialChars:null},t.autofocus&&!g&&i.input.focus(),a&&c<11&&setTimeout((function(){return n.display.input.reset(!0)}),20),function(e){var t=e.display;fe(t.scroller,"mousedown",eo(e,pa)),fe(t.scroller,"dblclick",a&&c<11?eo(e,(function(t){if(!ze(e,t)){var n=lr(e,t);if(n&&!ga(e,t)&&!kn(e.display,t)){ye(t);var r=e.findWordAt(n);$o(e.doc,r.anchor,r.head)}}})):function(t){return ze(e,t)||ye(t)}),fe(t.scroller,"contextmenu",(function(t){return ma(e,t)})),fe(t.input.getField(),"contextmenu",(function(n){t.scroller.contains(n.target)||ma(e,n)}));var n,r={end:0};function o(){t.activeTouch&&(n=setTimeout((function(){return t.activeTouch=null}),1e3),(r=t.activeTouch).end=+new Date)}function i(e,t){if(null==t.left)return!0;var n=t.left-e.left,r=t.top-e.top;return n*n+r*r>400}fe(t.scroller,"touchstart",(function(o){if(!ze(e,o)&&!function(e){if(1!=e.touches.length)return!1;var t=e.touches[0];return t.radiusX<=1&&t.radiusY<=1}(o)&&!ga(e,o)){t.input.ensurePolled(),clearTimeout(n);var i=+new Date;t.activeTouch={start:i,moved:!1,prev:i-r.end<=300?r:null},1==o.touches.length&&(t.activeTouch.left=o.touches[0].pageX,t.activeTouch.top=o.touches[0].pageY)}})),fe(t.scroller,"touchmove",(function(){t.activeTouch&&(t.activeTouch.moved=!0)})),fe(t.scroller,"touchend",(function(n){var r=t.activeTouch;if(r&&!kn(t,n)&&null!=r.left&&!r.moved&&new Date-r.start<300){var a,c=e.coordsChar(t.activeTouch,"page");a=!r.prev||i(r,r.prev)?new jo(c,c):!r.prev.prev||i(r,r.prev.prev)?e.findWordAt(c):new jo(et(c.line,0),ct(e.doc,et(c.line+1,0))),e.setSelection(a.anchor,a.head),e.focus(),ye(n)}o()})),fe(t.scroller,"touchcancel",o),fe(t.scroller,"scroll",(function(){t.scroller.clientHeight&&(Hr(e,t.scroller.scrollTop),Pr(e,t.scroller.scrollLeft,!0),pe(e,"scroll",e))})),fe(t.scroller,"mousewheel",(function(t){return ko(e,t)})),fe(t.scroller,"DOMMouseScroll",(function(t){return ko(e,t)})),fe(t.wrapper,"scroll",(function(){return t.wrapper.scrollTop=t.wrapper.scrollLeft=0})),t.dragFunctions={enter:function(t){ze(e,t)||ke(t)},over:function(t){ze(e,t)||(function(e,t){var n=lr(e,t);if(n){var r=document.createDocumentFragment();mr(e,n,r),e.display.dragCursor||(e.display.dragCursor=S("div",null,"CodeMirror-cursors CodeMirror-dragcursors"),e.display.lineSpace.insertBefore(e.display.dragCursor,e.display.cursorDiv)),q(e.display.dragCursor,r)}}(e,t),ke(t))},start:function(t){return function(e,t){if(a&&(!e.state.draggingText||+new Date-Ei<100))ke(t);else if(!ze(e,t)&&!kn(e.display,t)&&(t.dataTransfer.setData("Text",e.getSelection()),t.dataTransfer.effectAllowed="copyMove",t.dataTransfer.setDragImage&&!d)){var n=S("img",null,null,"position: fixed; left: 0; top: 0;");n.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",f&&(n.width=n.height=1,e.display.wrapper.appendChild(n),n._top=n.offsetTop),t.dataTransfer.setDragImage(n,0,0),f&&n.parentNode.removeChild(n)}}(e,t)},drop:eo(e,Ti),leave:function(t){ze(e,t)||Ai(e)}};var s=t.input.getField();fe(s,"keyup",(function(t){return la.call(e,t)})),fe(s,"keydown",eo(e,sa)),fe(s,"keypress",eo(e,ua)),fe(s,"focus",(function(t){return jr(e,t)})),fe(s,"blur",(function(t){return Mr(e,t)}))}(this),function(){var e;Hi||(fe(window,"resize",(function(){null==e&&(e=setTimeout((function(){e=null,Li(Di)}),100))})),fe(window,"blur",(function(){return Li(Mr)})),Hi=!0)}(),Gr(this),this.curOp.forceUpdate=!0,Do(this,r),t.autofocus&&!g||this.hasFocus()?setTimeout(D(jr,this),20):Mr(this),ka)ka.hasOwnProperty(l)&&ka[l](this,t[l],ba);ho(this),t.finishInit&&t.finishInit(this);for(var u=0;u150)){if(!r)return;n="prev"}}else l=0,n="not";"prev"==n?l=t>i.first?V(Ge(i,t-1).text,null,a):0:"add"==n?l=s+e.options.indentUnit:"subtract"==n?l=s-e.options.indentUnit:"number"==typeof n&&(l=s+n),l=Math.max(0,l);var f="",d=0;if(e.options.indentWithTabs)for(var h=Math.floor(l/a);h;--h)d+=a,f+="\t";if(da,s=Ee(t),l=null;if(c&&r.ranges.length>1)if(qa&&qa.text.join("\n")==t){if(r.ranges.length%qa.text.length==0){l=[];for(var u=0;u=0;d--){var h=r.ranges[d],p=h.from(),z=h.to();h.empty()&&(n&&n>0?p=et(p.line,p.ch-n):e.state.overwrite&&!c?z=et(z.line,Math.min(Ge(i,z.line).text.length,z.ch+$(s).length)):c&&qa&&qa.lineWise&&qa.text.join("\n")==s.join("\n")&&(p=z=et(p.line,0)));var v={from:p,to:z,text:l?l[d%l.length]:s,origin:o||(c?"paste":e.state.cutIncoming>a?"cut":"+input")};li(e.doc,v),sn(e,"inputRead",e,v)}t&&!c&&Ta(e,t),Er(e),e.curOp.updateInput<2&&(e.curOp.updateInput=f),e.curOp.typing=!0,e.state.pasteIncoming=e.state.cutIncoming=-1}function Ea(e,t){var n=e.clipboardData&&e.clipboardData.getData("Text");if(n)return e.preventDefault(),t.isReadOnly()||t.options.disableInput||Jr(t,(function(){return Oa(t,n,0,null,"paste")})),!0}function Ta(e,t){if(e.options.electricChars&&e.options.smartIndent)for(var n=e.doc.sel,r=n.ranges.length-1;r>=0;r--){var o=n.ranges[r];if(!(o.head.ch>100||r&&n.ranges[r-1].head.line==o.head.line)){var i=e.getModeAt(o.head),a=!1;if(i.electricChars){for(var c=0;c-1){a=_a(e,o.head.line,"smart");break}}else i.electricInput&&i.electricInput.test(Ge(e.doc,o.head.line).text.slice(0,o.head.ch))&&(a=_a(e,o.head.line,"smart"));a&&sn(e,"electricInput",e,o.head.line)}}}function Aa(e){for(var t=[],n=[],r=0;r=t.text.length?(n.ch=t.text.length,n.sticky="before"):n.ch<=0&&(n.ch=0,n.sticky="after");var i=ce(o,n.ch,n.sticky),a=o[i];if("ltr"==e.doc.direction&&a.level%2==0&&(r>0?a.to>n.ch:a.from=a.from&&d>=u.begin)){var h=f?"before":"after";return new et(n.line,d,h)}}var p=function(e,t,r){for(var i=function(e,t){return t?new et(n.line,s(e,1),"before"):new et(n.line,e,"after")};e>=0&&e0==(1!=a.level),l=c?r.begin:s(r.end,-1);if(a.from<=l&&l0?u.end:s(u.begin,-1);return null==v||r>0&&v==t.text.length||!(z=p(r>0?0:o.length-1,r,l(v)))?null:z}(e.cm,c,t,n):Ki(c,t,n))){if(r||(a=t.line+s)=e.first+e.size||(t=new et(a,t.ch,t.sticky),!(c=Ge(e,a))))return!1;t=Qi(o,e.cm,c,t.line,s)}else t=i;return!0}if("char"==r)l();else if("column"==r)l(!0);else if("word"==r||"group"==r)for(var u=null,f="group"==r,d=e.cm&&e.cm.getHelper(t,"wordChars"),h=!0;!(n<0)||l(!h);h=!1){var p=c.text.charAt(t.ch)||"\n",z=ee(p,d)?"w":f&&"\n"==p?"n":!f||/\s/.test(p)?null:"p";if(!f||h||z||(z="s"),u&&u!=z){n<0&&(n=1,l(),t.sticky="after");break}if(z&&(u=z),n>0&&!l(!h))break}var v=ii(e,t,i,a,!0);return nt(i,v)&&(v.hitSide=!0),v}function Pa(e,t,n,r){var o,i,a=e.doc,c=t.left;if("page"==r){var s=Math.min(e.display.wrapper.clientHeight,window.innerHeight||document.documentElement.clientHeight),l=Math.max(s-.5*rr(e.display),3);o=(n>0?t.bottom:t.top)+n*l}else"line"==r&&(o=n>0?t.bottom+3:t.top-3);for(;(i=Xn(e,c,o)).outside;){if(n<0?o<=0:o>=a.height){i.hitSide=!0;break}o+=5*n}return i}var Va=function(e){this.cm=e,this.lastAnchorNode=this.lastAnchorOffset=this.lastFocusNode=this.lastFocusOffset=null,this.polling=new R,this.composing=null,this.gracePeriod=!1,this.readDOMTimeout=null};function Ra(e,t){var n=En(e,t.line);if(!n||n.hidden)return null;var r=Ge(e.doc,t.line),o=Sn(n,r,t.line),i=le(r,e.doc.direction),a="left";i&&(a=ce(i,t.ch)%2?"right":"left");var c=Dn(o.map,t.ch,a);return c.offset="right"==c.collapse?c.end:c.start,c}function Ia(e,t){return t&&(e.bad=!0),e}function Na(e,t,n){var r;if(t==e.display.lineDiv){if(!(r=e.display.lineDiv.childNodes[n]))return Ia(e.clipPos(et(e.display.viewTo-1)),!0);t=null,n=0}else for(r=t;;r=r.parentNode){if(!r||r==e.display.lineDiv)return null;if(r.parentNode&&r.parentNode==e.display.lineDiv)break}for(var o=0;o=t.display.viewTo||i.line=t.display.viewFrom&&Ra(t,o)||{node:s[0].measure.map[2],offset:0},u=i.liner.firstLine()&&(a=et(a.line-1,Ge(r.doc,a.line-1).length)),c.ch==Ge(r.doc,c.line).text.length&&c.lineo.viewTo-1)return!1;a.line==o.viewFrom||0==(e=ur(r,a.line))?(t=Xe(o.view[0].line),n=o.view[0].node):(t=Xe(o.view[e].line),n=o.view[e-1].node.nextSibling);var s,l,u=ur(r,c.line);if(u==o.view.length-1?(s=o.viewTo-1,l=o.lineDiv.lastChild):(s=Xe(o.view[u+1].line)-1,l=o.view[u+1].node.previousSibling),!n)return!1;for(var f=r.doc.splitLines(function(e,t,n,r,o){var i="",a=!1,c=e.doc.lineSeparator(),s=!1;function l(){a&&(i+=c,s&&(i+=c),a=s=!1)}function u(e){e&&(l(),i+=e)}function f(t){if(1==t.nodeType){var n=t.getAttribute("cm-text");if(n)return void u(n);var i,d=t.getAttribute("cm-marker");if(d){var h=e.findMarks(et(r,0),et(o+1,0),(v=+d,function(e){return e.id==v}));return void(h.length&&(i=h[0].find(0))&&u(Ye(e.doc,i.from,i.to).join(c)))}if("false"==t.getAttribute("contenteditable"))return;var p=/^(pre|div|p|li|table|br)$/i.test(t.nodeName);if(!/^br$/i.test(t.nodeName)&&0==t.textContent.length)return;p&&l();for(var z=0;z1&&d.length>1;)if($(f)==$(d))f.pop(),d.pop(),s--;else{if(f[0]!=d[0])break;f.shift(),d.shift(),t++}for(var h=0,p=0,z=f[0],v=d[0],g=Math.min(z.length,v.length);ha.ch&&m.charCodeAt(m.length-p-1)==y.charCodeAt(y.length-p-1);)h--,p++;f[f.length-1]=m.slice(0,m.length-p).replace(/^\u200b+/,""),f[0]=f[0].slice(h).replace(/\u200b+$/,"");var w=et(t,h),k=et(s,d.length?$(d).length-p:0);return f.length>1||f[0]||tt(w,k)?(pi(r.doc,f,w,k,"+input"),!0):void 0},Va.prototype.ensurePolled=function(){this.forceCompositionEnd()},Va.prototype.reset=function(){this.forceCompositionEnd()},Va.prototype.forceCompositionEnd=function(){this.composing&&(clearTimeout(this.readDOMTimeout),this.composing=null,this.updateFromDOM(),this.div.blur(),this.div.focus())},Va.prototype.readFromDOMSoon=function(){var e=this;null==this.readDOMTimeout&&(this.readDOMTimeout=setTimeout((function(){if(e.readDOMTimeout=null,e.composing){if(!e.composing.done)return;e.composing=null}e.updateFromDOM()}),80))},Va.prototype.updateFromDOM=function(){var e=this;!this.cm.isReadOnly()&&this.pollContent()||Jr(this.cm,(function(){return fr(e.cm)}))},Va.prototype.setUneditable=function(e){e.contentEditable="false"},Va.prototype.onKeyPress=function(e){0==e.charCode||this.composing||(e.preventDefault(),this.cm.isReadOnly()||eo(this.cm,Oa)(this.cm,String.fromCharCode(null==e.charCode?e.keyCode:e.charCode),0))},Va.prototype.readOnlyChanged=function(e){this.div.contentEditable=String("nocursor"!=e)},Va.prototype.onContextMenu=function(){},Va.prototype.resetPosition=function(){},Va.prototype.needsContentAttribute=!0;var Ba=function(e){this.cm=e,this.prevInput="",this.pollingFast=!1,this.polling=new R,this.hasSelection=!1,this.composing=null};Ba.prototype.init=function(e){var t=this,n=this,r=this.cm;this.createField(e);var o=this.textarea;function i(e){if(!ze(r,e)){if(r.somethingSelected())Sa({lineWise:!1,text:r.getSelections()});else{if(!r.options.lineWiseCopyCut)return;var t=Aa(r);Sa({lineWise:!0,text:t.text}),"cut"==e.type?r.setSelections(t.ranges,null,F):(n.prevInput="",o.value=t.text.join("\n"),H(o))}"cut"==e.type&&(r.state.cutIncoming=+new Date)}}e.wrapper.insertBefore(this.wrapper,e.wrapper.firstChild),z&&(o.style.width="0px"),fe(o,"input",(function(){a&&c>=9&&t.hasSelection&&(t.hasSelection=null),n.poll()})),fe(o,"paste",(function(e){ze(r,e)||Ea(e,r)||(r.state.pasteIncoming=+new Date,n.fastPoll())})),fe(o,"cut",i),fe(o,"copy",i),fe(e.scroller,"paste",(function(t){if(!kn(e,t)&&!ze(r,t)){if(!o.dispatchEvent)return r.state.pasteIncoming=+new Date,void n.focus();var i=new Event("paste");i.clipboardData=t.clipboardData,o.dispatchEvent(i)}})),fe(e.lineSpace,"selectstart",(function(t){kn(e,t)||ye(t)})),fe(o,"compositionstart",(function(){var e=r.getCursor("from");n.composing&&n.composing.range.clear(),n.composing={start:e,range:r.markText(e,r.getCursor("to"),{className:"CodeMirror-composing"})}})),fe(o,"compositionend",(function(){n.composing&&(n.poll(),n.composing.range.clear(),n.composing=null)}))},Ba.prototype.createField=function(e){this.wrapper=Ha(),this.textarea=this.wrapper.firstChild},Ba.prototype.screenReaderLabelChanged=function(e){e?this.textarea.setAttribute("aria-label",e):this.textarea.removeAttribute("aria-label")},Ba.prototype.prepareSelection=function(){var e=this.cm,t=e.display,n=e.doc,r=gr(e);if(e.options.moveInputWithCursor){var o=Yn(e,n.sel.primary().head,"div"),i=t.wrapper.getBoundingClientRect(),a=t.lineDiv.getBoundingClientRect();r.teTop=Math.max(0,Math.min(t.wrapper.clientHeight-10,o.top+a.top-i.top)),r.teLeft=Math.max(0,Math.min(t.wrapper.clientWidth-10,o.left+a.left-i.left))}return r},Ba.prototype.showSelection=function(e){var t=this.cm.display;q(t.cursorDiv,e.cursors),q(t.selectionDiv,e.selection),null!=e.teTop&&(this.wrapper.style.top=e.teTop+"px",this.wrapper.style.left=e.teLeft+"px")},Ba.prototype.reset=function(e){if(!this.contextMenuPending&&!this.composing){var t=this.cm;if(t.somethingSelected()){this.prevInput="";var n=t.getSelection();this.textarea.value=n,t.state.focused&&H(this.textarea),a&&c>=9&&(this.hasSelection=n)}else e||(this.prevInput=this.textarea.value="",a&&c>=9&&(this.hasSelection=null))}},Ba.prototype.getField=function(){return this.textarea},Ba.prototype.supportsTouch=function(){return!1},Ba.prototype.focus=function(){if("nocursor"!=this.cm.options.readOnly&&(!g||T()!=this.textarea))try{this.textarea.focus()}catch(e){}},Ba.prototype.blur=function(){this.textarea.blur()},Ba.prototype.resetPosition=function(){this.wrapper.style.top=this.wrapper.style.left=0},Ba.prototype.receivedFocus=function(){this.slowPoll()},Ba.prototype.slowPoll=function(){var e=this;this.pollingFast||this.polling.set(this.cm.options.pollInterval,(function(){e.poll(),e.cm.state.focused&&e.slowPoll()}))},Ba.prototype.fastPoll=function(){var e=!1,t=this;t.pollingFast=!0,t.polling.set(20,(function n(){t.poll()||e?(t.pollingFast=!1,t.slowPoll()):(e=!0,t.polling.set(60,n))}))},Ba.prototype.poll=function(){var e=this,t=this.cm,n=this.textarea,r=this.prevInput;if(this.contextMenuPending||!t.state.focused||Te(n)&&!r&&!this.composing||t.isReadOnly()||t.options.disableInput||t.state.keySeq)return!1;var o=n.value;if(o==r&&!t.somethingSelected())return!1;if(a&&c>=9&&this.hasSelection===o||m&&/[\uf700-\uf7ff]/.test(o))return t.display.input.reset(),!1;if(t.doc.sel==t.display.selForContextMenu){var i=o.charCodeAt(0);if(8203!=i||r||(r="\u200b"),8666==i)return this.reset(),this.cm.execCommand("undo")}for(var s=0,l=Math.min(r.length,o.length);s1e3||o.indexOf("\n")>-1?n.value=e.prevInput="":e.prevInput=o,e.composing&&(e.composing.range.clear(),e.composing.range=t.markText(e.composing.start,t.getCursor("to"),{className:"CodeMirror-composing"}))})),!0},Ba.prototype.ensurePolled=function(){this.pollingFast&&this.poll()&&(this.pollingFast=!1)},Ba.prototype.onKeyPress=function(){a&&c>=9&&(this.hasSelection=null),this.fastPoll()},Ba.prototype.onContextMenu=function(e){var t=this,n=t.cm,r=n.display,o=t.textarea;t.contextMenuPending&&t.contextMenuPending();var i=lr(n,e),l=r.scroller.scrollTop;if(i&&!f){n.options.resetSelectionOnContextMenu&&-1==n.doc.sel.contains(i)&&eo(n,Jo)(n.doc,Co(i),F);var u,d=o.style.cssText,h=t.wrapper.style.cssText,p=t.wrapper.offsetParent.getBoundingClientRect();t.wrapper.style.cssText="position: static",o.style.cssText="position: absolute; width: 30px; height: 30px;\n top: "+(e.clientY-p.top-5)+"px; left: "+(e.clientX-p.left-5)+"px;\n z-index: 1000; background: "+(a?"rgba(255, 255, 255, .05)":"transparent")+";\n outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);",s&&(u=window.scrollY),r.input.focus(),s&&window.scrollTo(null,u),r.input.reset(),n.somethingSelected()||(o.value=t.prevInput=" "),t.contextMenuPending=v,r.selForContextMenu=n.doc.sel,clearTimeout(r.detectingSelectAll),a&&c>=9&&z(),x?(ke(e),fe(window,"mouseup",(function e(){he(window,"mouseup",e),setTimeout(v,20)}))):setTimeout(v,50)}function z(){if(null!=o.selectionStart){var e=n.somethingSelected(),i="\u200b"+(e?o.value:"");o.value="\u21da",o.value=i,t.prevInput=e?"":"\u200b",o.selectionStart=1,o.selectionEnd=i.length,r.selForContextMenu=n.doc.sel}}function v(){if(t.contextMenuPending==v&&(t.contextMenuPending=!1,t.wrapper.style.cssText=h,o.style.cssText=d,a&&c<9&&r.scrollbars.setScrollTop(r.scroller.scrollTop=l),null!=o.selectionStart)){(!a||a&&c<9)&&z();var e=0;r.detectingSelectAll=setTimeout((function i(){r.selForContextMenu==n.doc.sel&&0==o.selectionStart&&o.selectionEnd>0&&"\u200b"==t.prevInput?eo(n,ci)(n):e++<10?r.detectingSelectAll=setTimeout(i,500):(r.selForContextMenu=null,r.input.reset())}),200)}}},Ba.prototype.readOnlyChanged=function(e){e||this.reset(),this.textarea.disabled="nocursor"==e},Ba.prototype.setUneditable=function(){},Ba.prototype.needsContentAttribute=!1,function(e){var t=e.optionHandlers;function n(n,r,o,i){e.defaults[n]=r,o&&(t[n]=i?function(e,t,n){n!=ba&&o(e,t,n)}:o)}e.defineOption=n,e.Init=ba,n("value","",(function(e,t){return e.setValue(t)}),!0),n("mode",null,(function(e,t){e.doc.modeOption=t,Eo(e)}),!0),n("indentUnit",2,Eo,!0),n("indentWithTabs",!1),n("smartIndent",!0),n("tabSize",4,(function(e){To(e),In(e),fr(e)}),!0),n("lineSeparator",null,(function(e,t){if(e.doc.lineSep=t,t){var n=[],r=e.doc.first;e.doc.iter((function(e){for(var o=0;;){var i=e.text.indexOf(t,o);if(-1==i)break;o=i+t.length,n.push(et(r,i))}r++}));for(var o=n.length-1;o>=0;o--)pi(e.doc,t,n[o],et(n[o].line,n[o].ch+t.length))}})),n("specialChars",/[\u0000-\u001f\u007f-\u009f\u00ad\u061c\u200b-\u200c\u200e\u200f\u2028\u2029\ufeff\ufff9-\ufffc]/g,(function(e,t,n){e.state.specialChars=new RegExp(t.source+(t.test("\t")?"":"|\t"),"g"),n!=ba&&e.refresh()})),n("specialCharPlaceholder",Qt,(function(e){return e.refresh()}),!0),n("electricChars",!0),n("inputStyle",g?"contenteditable":"textarea",(function(){throw new Error("inputStyle can not (yet) be changed in a running editor")}),!0),n("spellcheck",!1,(function(e,t){return e.getInputField().spellcheck=t}),!0),n("autocorrect",!1,(function(e,t){return e.getInputField().autocorrect=t}),!0),n("autocapitalize",!1,(function(e,t){return e.getInputField().autocapitalize=t}),!0),n("rtlMoveVisually",!b),n("wholeLineUpdateBefore",!0),n("theme","default",(function(e){ya(e),vo(e)}),!0),n("keyMap","default",(function(e,t,n){var r=$i(t),o=n!=ba&&$i(n);o&&o.detach&&o.detach(e,r),r.attach&&r.attach(e,o||null)})),n("extraKeys",null),n("configureMouse",null),n("lineWrapping",!1,ja,!0),n("gutters",[],(function(e,t){e.display.gutterSpecs=po(t,e.options.lineNumbers),vo(e)}),!0),n("fixedGutter",!0,(function(e,t){e.display.gutters.style.left=t?ar(e.display)+"px":"0",e.refresh()}),!0),n("coverGutterNextToScrollbar",!1,(function(e){return Nr(e)}),!0),n("scrollbarStyle","native",(function(e){Ur(e),Nr(e),e.display.scrollbars.setScrollTop(e.doc.scrollTop),e.display.scrollbars.setScrollLeft(e.doc.scrollLeft)}),!0),n("lineNumbers",!1,(function(e,t){e.display.gutterSpecs=po(e.options.gutters,t),vo(e)}),!0),n("firstLineNumber",1,vo,!0),n("lineNumberFormatter",(function(e){return e}),vo,!0),n("showCursorWhenSelecting",!1,vr,!0),n("resetSelectionOnContextMenu",!0),n("lineWiseCopyCut",!0),n("pasteLinesPerSelection",!0),n("selectionsMayTouch",!1),n("readOnly",!1,(function(e,t){"nocursor"==t&&(Mr(e),e.display.input.blur()),e.display.input.readOnlyChanged(t)})),n("screenReaderLabel",null,(function(e,t){t=""===t?null:t,e.display.input.screenReaderLabelChanged(t)})),n("disableInput",!1,(function(e,t){t||e.display.input.reset()}),!0),n("dragDrop",!0,xa),n("allowDropFileTypes",null),n("cursorBlinkRate",530),n("cursorScrollMargin",0),n("cursorHeight",1,vr,!0),n("singleCursorHeightPerLine",!0,vr,!0),n("workTime",100),n("workDelay",100),n("flattenSpans",!0,To,!0),n("addModeClass",!1,To,!0),n("pollInterval",100),n("undoDepth",200,(function(e,t){return e.doc.history.undoDepth=t})),n("historyEventDelay",1250),n("viewportMargin",10,(function(e){return e.refresh()}),!0),n("maxHighlightLength",1e4,To,!0),n("moveInputWithCursor",!0,(function(e,t){t||e.display.input.resetPosition()})),n("tabindex",null,(function(e,t){return e.display.input.getField().tabIndex=t||""})),n("autofocus",null),n("direction","ltr",(function(e,t){return e.doc.setDirection(t)}),!0),n("phrases",null)}(Ma),function(e){var t=e.optionHandlers,n=e.helpers={};e.prototype={constructor:e,focus:function(){window.focus(),this.display.input.focus()},setOption:function(e,n){var r=this.options,o=r[e];r[e]==n&&"mode"!=e||(r[e]=n,t.hasOwnProperty(e)&&eo(this,t[e])(this,n,o),pe(this,"optionChange",this,e))},getOption:function(e){return this.options[e]},getDoc:function(){return this.doc},addKeyMap:function(e,t){this.state.keyMaps[t?"push":"unshift"]($i(e))},removeKeyMap:function(e){for(var t=this.state.keyMaps,n=0;nn&&(_a(this,o.head.line,e,!0),n=o.head.line,r==this.doc.sel.primIndex&&Er(this));else{var i=o.from(),a=o.to(),c=Math.max(n,i.line);n=Math.min(this.lastLine(),a.line-(a.ch?0:1))+1;for(var s=c;s0&&Xo(this.doc,r,new jo(i,l[r].to()),F)}}})),getTokenAt:function(e,t){return mt(this,e,t)},getLineTokens:function(e,t){return mt(this,et(e),t,!0)},getTokenTypeAt:function(e){e=ct(this.doc,e);var t,n=dt(this,Ge(this.doc,e.line)),r=0,o=(n.length-1)/2,i=e.ch;if(0==i)t=n[2];else for(;;){var a=r+o>>1;if((a?n[2*a-1]:0)>=i)o=a;else{if(!(n[2*a+1]i&&(e=i,o=!0),r=Ge(this.doc,e)}else r=e;return Un(this,r,{top:0,left:0},t||"page",n||o).top+(o?this.doc.height-Bt(r):0)},defaultTextHeight:function(){return rr(this.display)},defaultCharWidth:function(){return or(this.display)},getViewport:function(){return{from:this.display.viewFrom,to:this.display.viewTo}},addWidget:function(e,t,n,r,o){var i,a,c=this.display,s=(e=Yn(this,ct(this.doc,e))).bottom,l=e.left;if(t.style.position="absolute",t.setAttribute("cm-ignore-events","true"),this.display.input.setUneditable(t),c.sizer.appendChild(t),"over"==r)s=e.top;else if("above"==r||"near"==r){var u=Math.max(c.wrapper.clientHeight,this.doc.height),f=Math.max(c.sizer.clientWidth,c.lineSpace.clientWidth);("above"==r||e.bottom+t.offsetHeight>u)&&e.top>t.offsetHeight?s=e.top-t.offsetHeight:e.bottom+t.offsetHeight<=u&&(s=e.bottom),l+t.offsetWidth>f&&(l=f-t.offsetWidth)}t.style.top=s+"px",t.style.left=t.style.right="","right"==o?(l=c.sizer.clientWidth-t.offsetWidth,t.style.right="0px"):("left"==o?l=0:"middle"==o&&(l=(c.sizer.clientWidth-t.offsetWidth)/2),t.style.left=l+"px"),n&&(null!=(a=Sr(i=this,{left:l,top:s,right:l+t.offsetWidth,bottom:s+t.offsetHeight})).scrollTop&&Hr(i,a.scrollTop),null!=a.scrollLeft&&Pr(i,a.scrollLeft))},triggerOnKeyDown:to(sa),triggerOnKeyPress:to(ua),triggerOnKeyUp:la,triggerOnMouseDown:to(pa),execCommand:function(e){if(Ji.hasOwnProperty(e))return Ji[e].call(null,this)},triggerElectric:to((function(e){Ta(this,e)})),findPosH:function(e,t,n,r){var o=1;t<0&&(o=-1,t=-t);for(var i=ct(this.doc,e),a=0;a0&&a(t.charAt(n-1));)--n;for(;r.5||this.options.lineWrapping)&&sr(this),pe(this,"refresh",this)})),swapDoc:to((function(e){var t=this.doc;return t.cm=null,this.state.selectingText&&this.state.selectingText(),Do(this,e),In(this),this.display.input.reset(),Tr(this,e.scrollLeft,e.scrollTop),this.curOp.forceScroll=!0,sn(this,"swapDoc",this,t),t})),phrase:function(e){var t=this.options.phrases;return t&&Object.prototype.hasOwnProperty.call(t,e)?t[e]:e},getInputField:function(){return this.display.input.getField()},getWrapperElement:function(){return this.display.wrapper},getScrollerElement:function(){return this.display.scroller},getGutterElement:function(){return this.display.gutters}},me(e),e.registerHelper=function(t,r,o){n.hasOwnProperty(t)||(n[t]=e[t]={_global:[]}),n[t][r]=o},e.registerGlobalHelper=function(t,r,o,i){e.registerHelper(t,r,i),n[t]._global.push({pred:o,val:i})}}(Ma);var Ua="iter insert remove copy getEditor constructor".split(" ");for(var Wa in Oi.prototype)Oi.prototype.hasOwnProperty(Wa)&&I(Ua,Wa)<0&&(Ma.prototype[Wa]=function(e){return function(){return e.apply(this.doc,arguments)}}(Oi.prototype[Wa]));return me(Oi),Ma.inputStyles={textarea:Ba,contenteditable:Va},Ma.defineMode=function(e){Ma.defaults.mode||"null"==e||(Ma.defaults.mode=e),Pe.apply(this,arguments)},Ma.defineMIME=function(e,t){De[e]=t},Ma.defineMode("null",(function(){return{token:function(e){return e.skipToEnd()}}})),Ma.defineMIME("text/plain","null"),Ma.defineExtension=function(e,t){Ma.prototype[e]=t},Ma.defineDocExtension=function(e,t){Oi.prototype[e]=t},Ma.fromTextArea=function(e,t){if((t=t?P(t):{}).value=e.value,!t.tabindex&&e.tabIndex&&(t.tabindex=e.tabIndex),!t.placeholder&&e.placeholder&&(t.placeholder=e.placeholder),null==t.autofocus){var n=T();t.autofocus=n==e||null!=e.getAttribute("autofocus")&&n==document.body}function r(){e.value=c.getValue()}var o;if(e.form&&(fe(e.form,"submit",r),!t.leaveSubmitMethodAlone)){var i=e.form;o=i.submit;try{var a=i.submit=function(){r(),i.submit=o,i.submit(),i.submit=a}}catch(e){}}t.finishInit=function(n){n.save=r,n.getTextArea=function(){return e},n.toTextArea=function(){n.toTextArea=isNaN,r(),e.parentNode.removeChild(n.getWrapperElement()),e.style.display="",e.form&&(he(e.form,"submit",r),t.leaveSubmitMethodAlone||"function"!=typeof e.form.submit||(e.form.submit=o))}},e.style.display="none";var c=Ma((function(t){return e.parentNode.insertBefore(t,e.nextSibling)}),t);return c},function(e){e.off=he,e.on=fe,e.wheelEventPixels=wo,e.Doc=Oi,e.splitLines=Ee,e.countColumn=V,e.findColumn=W,e.isWordChar=J,e.Pass=N,e.signal=pe,e.Line=Gt,e.changeEnd=_o,e.scrollbarModel=Br,e.Pos=et,e.cmpPos=tt,e.modes=He,e.mimeModes=De,e.resolveMode=Ve,e.getMode=Re,e.modeExtensions=Ie,e.extendMode=Ne,e.copyState=Fe,e.startState=Ue,e.innerMode=Be,e.commands=Ji,e.keyMap=Ni,e.keyName=Yi,e.isModifierKey=Wi,e.lookupKey=Ui,e.normalizeKeyMap=Bi,e.StringStream=We,e.SharedTextMarker=Ci,e.TextMarker=ji,e.LineWidget=wi,e.e_preventDefault=ye,e.e_stopPropagation=be,e.e_stop=ke,e.addClass=A,e.contains=E,e.rmClass=C,e.keyNames=Pi}(Ma),Ma.version="5.57.0",Ma}()},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(0),o=function(){function e(){}return e.prototype.isSeparator=function(e){return" "==e||"\r"==e||"\n"==e||"\t"==e||"("==e||")"==e},e.prototype.isWhiteSpace=function(e){return" "==e||"\r"==e||"\n"==e||"\t"==e},e.prototype.findLastSeparatorIndex=function(e){var t=this;return r.findLastIndex(e,(function(e){return t.isSeparator(e)}))},e.prototype.needSpaceAfter=function(e){return!("("==e)},e.prototype.isLastCharacterWhiteSpace=function(e){return!!e&&this.isWhiteSpace(e[e.length-1])},e.prototype.stripEndWithNonSeparatorCharacters=function(e){if(!e)return e;if(this.isSeparator(e[e.length-1]))return e;var t=this.findLastSeparatorIndex(e);return t<0?"":e.substr(0,t+1)},e.prototype.getEndNotSeparatorCharacers=function(e){if(!e)return e;if(this.isSeparator(e[e.length-1]))return"";var t=this.findLastSeparatorIndex(e);return t<0?e:e.substr(t+1)},e}();t.default=new o},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(0),o=function(){function e(){}return e.prototype.quote=function(e){return/\s/g.test(e)?'"'+e+'"':e},e.prototype.buildDefaultObjOrGetOriginal=function(e,t){return r.isString(e)?{value:this.quote(e),type:t}:{value:e,type:t}},e.prototype.handleParseError=function(e,t,n){var o=this,i=t;return r.flatMap(n.expected,(function(e){var t=[];if("literal"==e.type&&(t=r.map([e.text||e.value],(function(e){return{value:e,type:"literal"}}))),"other"==e.type){var n=i.getLastTokenType()||"value";"value"==n&&(t=r.map(o.needCategories(),(function(e){return o.buildDefaultObjOrGetOriginal(e,"category")}))),"category"==n&&(t=r.map(o.needOperators(i.getLastCategory()),(function(e){return o.buildDefaultObjOrGetOriginal(e,"operator")}))),"operator"==n&&(t=r.map(o.needValues(i.getLastCategory(),i.getLastOperator()),(function(e){return o.buildDefaultObjOrGetOriginal(e,"value")})))}return t}))},e.prototype.hasCategory=function(e){return!1},e.prototype.hasOperator=function(e,t){return!1},e.prototype.needCategories=function(){return[]},e.prototype.needOperators=function(e){return[]},e.prototype.needValues=function(e,t){return[]},e}();t.default=o},function(e,t){e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var n=function(e,t){var n,r=e[1]||"",o=e[3];if(!o)return r;if(t&&"function"==typeof btoa){var i=(n=o,"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(n))))+" */"),a=o.sources.map((function(e){return"/*# sourceURL="+o.sourceRoot+e+" */"}));return[r].concat(a).concat([i]).join("\n")}return[r].join("\n")}(t,e);return t[2]?"@media "+t[2]+"{"+n+"}":n})).join("")},t.i=function(e,n){"string"==typeof e&&(e=[[null,e,""]]);for(var r={},o=0;o=0&&f.splice(t,1)}function g(e){var t=document.createElement("style");if(void 0===e.attrs.type&&(e.attrs.type="text/css"),void 0===e.attrs.nonce){var r=n.nc;r&&(e.attrs.nonce=r)}return m(t,e.attrs),z(e,t),t}function m(e,t){Object.keys(t).forEach((function(n){e.setAttribute(n,t[n])}))}function y(e,t){var n,r,o,i;if(t.transform&&e.css){if(!(i="function"==typeof t.transform?t.transform(e.css):t.transform.default(e.css)))return function(){};e.css=i}if(t.singleton){var a=u++;n=l||(l=g(t)),r=k.bind(null,n,a,!1),o=k.bind(null,n,a,!0)}else e.sourceMap&&"function"==typeof URL&&"function"==typeof URL.createObjectURL&&"function"==typeof URL.revokeObjectURL&&"function"==typeof Blob&&"function"==typeof btoa?(n=function(e){var t=document.createElement("link");return void 0===e.attrs.type&&(e.attrs.type="text/css"),e.attrs.rel="stylesheet",m(t,e.attrs),z(e,t),t}(t),r=j.bind(null,n,t),o=function(){v(n),n.href&&URL.revokeObjectURL(n.href)}):(n=g(t),r=x.bind(null,n),o=function(){v(n)});return r(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap)return;r(e=t)}else o()}}e.exports=function(e,t){if("undefined"!=typeof DEBUG&&DEBUG&&"object"!=typeof document)throw new Error("The style-loader cannot be used in a non-browser environment");(t=t||{}).attrs="object"==typeof t.attrs?t.attrs:{},t.singleton||"boolean"==typeof t.singleton||(t.singleton=a()),t.insertInto||(t.insertInto="head"),t.insertAt||(t.insertAt="bottom");var n=p(e,t);return h(n,t),function(e){for(var r=[],o=0;o1)){if(this.somethingSelected()){if(!n.hint.supportsSelection)return;for(var o=0;ol.clientHeight+1,E=a.getScrollInfo();if(S>0){var T=q.bottom-q.top;if(g.top-(g.bottom-q.top)-T>0)l.style.top=(y=g.top-T-k)+"px",b=!1;else if(T>_){l.style.height=_-5+"px",l.style.top=(y=g.bottom-q.top-k)+"px";var A=a.getCursor();n.from.ch!=A.ch&&(g=a.cursorCoords(A),l.style.left=(m=g.left-w)+"px",q=l.getBoundingClientRect())}}var L,H=q.right-C;if(H>0&&(q.right-q.left>C&&(l.style.width=C-5+"px",H-=q.right-q.left-C),l.style.left=(m=g.left-H-w)+"px"),O)for(var D=l.firstChild;D;D=D.nextSibling)D.style.paddingRight=a.display.nativeBarWidth+"px";return a.addKeyMap(this.keyMap=function(e,t){var n={Up:function(){t.moveFocus(-1)},Down:function(){t.moveFocus(1)},PageUp:function(){t.moveFocus(1-t.menuSize(),!0)},PageDown:function(){t.moveFocus(t.menuSize()-1,!0)},Home:function(){t.setFocus(0)},End:function(){t.setFocus(t.length-1)},Enter:t.pick,Tab:t.pick,Esc:t.close};/Mac/.test(navigator.platform)&&(n["Ctrl-P"]=function(){t.moveFocus(-1)},n["Ctrl-N"]=function(){t.moveFocus(1)});var r=e.options.customKeys,o=r?{}:n;function i(e,r){var i;i="string"!=typeof r?function(e){return r(e,t)}:n.hasOwnProperty(r)?n[r]:r,o[e]=i}if(r)for(var a in r)r.hasOwnProperty(a)&&i(a,r[a]);var c=e.options.extraKeys;if(c)for(var a in c)c.hasOwnProperty(a)&&i(a,c[a]);return o}(t,{moveFocus:function(e,t){r.changeActive(r.selectedHint+e,t)},setFocus:function(e){r.changeActive(e)},menuSize:function(){return r.screenAmount()},length:f.length,close:function(){t.close()},pick:function(){r.pick()},data:n})),t.options.closeOnUnfocus&&(a.on("blur",this.onBlur=function(){L=setTimeout((function(){t.close()}),100)}),a.on("focus",this.onFocus=function(){clearTimeout(L)})),a.on("scroll",this.onScroll=function(){var e=a.getScrollInfo(),n=a.getWrapperElement().getBoundingClientRect(),r=y+E.top-e.top,o=r-(s.pageYOffset||(c.documentElement||c.body).scrollTop);if(b||(o+=l.offsetHeight),o<=n.top||o>=n.bottom)return t.close();l.style.top=r+"px",l.style.left=m+E.left-e.left+"px"}),e.on(l,"dblclick",(function(e){var t=i(l,e.target||e.srcElement);t&&null!=t.hintId&&(r.changeActive(t.hintId),r.pick())})),e.on(l,"click",(function(e){var n=i(l,e.target||e.srcElement);n&&null!=n.hintId&&(r.changeActive(n.hintId),t.options.completeOnSingleClick&&r.pick())})),e.on(l,"mousedown",(function(){setTimeout((function(){a.focus()}),20)})),this.scrollToActive(),e.signal(n,"select",f[this.selectedHint],l.childNodes[this.selectedHint]),!0}function c(e,t,n,r){if(e.async)e(t,r,n);else{var o=e(t,n);o&&o.then?o.then(r):r(o)}}t.prototype={close:function(){this.active()&&(this.cm.state.completionActive=null,this.tick=null,this.cm.off("cursorActivity",this.activityFunc),this.widget&&this.data&&e.signal(this.data,"close"),this.widget&&this.widget.close(),e.signal(this.cm,"endCompletion",this.cm))},active:function(){return this.cm.state.completionActive==this},pick:function(t,n){var r=t.list[n],i=this;this.cm.operation((function(){r.hint?r.hint(i.cm,t,r):i.cm.replaceRange(o(r),r.from||t.from,r.to||t.to,"complete"),e.signal(t,"pick",r),i.cm.scrollIntoView()})),this.close()},cursorActivity:function(){this.debounce&&(r(this.debounce),this.debounce=0);var e=this.startPos;this.data&&(e=this.data.from);var t=this.cm.getCursor(),o=this.cm.getLine(t.line);if(t.line!=this.startPos.line||o.length-t.ch!=this.startLen-this.startPos.ch||t.ch=this.data.list.length?t=n?this.data.list.length-1:0:t<0&&(t=n?0:this.data.list.length-1),this.selectedHint!=t){var r=this.hints.childNodes[this.selectedHint];r&&(r.className=r.className.replace(" CodeMirror-hint-active","")),(r=this.hints.childNodes[this.selectedHint=t]).className+=" CodeMirror-hint-active",this.scrollToActive(),e.signal(this.data,"select",this.data.list[this.selectedHint],r)}},scrollToActive:function(){var e=this.completion.options.scrollMargin||0,t=this.hints.childNodes[Math.max(0,this.selectedHint-e)],n=this.hints.childNodes[Math.min(this.data.list.length-1,this.selectedHint+e)],r=this.hints.firstChild;t.offsetTopthis.hints.scrollTop+this.hints.clientHeight&&(this.hints.scrollTop=n.offsetTop+n.offsetHeight-this.hints.clientHeight+r.offsetTop)},screenAmount:function(){return Math.floor(this.hints.clientHeight/this.hints.firstChild.offsetHeight)||1}},e.registerHelper("hint","auto",{resolve:function(t,n){var r,o=t.getHelpers(n,"hint");if(o.length){var i=function(e,t,n){var r=function(e,t){if(!e.somethingSelected())return t;for(var n=[],r=0;r0?t(e):o(i+1)}))}(0)};return i.async=!0,i.supportsSelection=!0,i}return(r=t.getHelper(t.getCursor(),"hintWords"))?function(t){return e.hint.fromList(t,{words:r})}:e.hint.anyword?function(t,n){return e.hint.anyword(t,n)}:function(){}}}),e.registerHelper("hint","fromList",(function(t,n){var r,o=t.getCursor(),i=t.getTokenAt(o),a=e.Pos(o.line,i.start),c=o;i.start,]/,closeOnUnfocus:!0,completeOnSingleClick:!0,container:null,customKeys:null,extraKeys:null};e.defineOption("hintOptions",null)}(n(2))},function(e,t,n){!function(e){function t(e){e.state.placeholder&&(e.state.placeholder.parentNode.removeChild(e.state.placeholder),e.state.placeholder=null)}function n(e){t(e);var n=e.state.placeholder=document.createElement("pre");n.style.cssText="height: 0; overflow: visible",n.style.direction=e.getOption("direction"),n.className="CodeMirror-placeholder CodeMirror-line-like";var r=e.getOption("placeholder");"string"==typeof r&&(r=document.createTextNode(r)),n.appendChild(r),e.display.lineSpace.insertBefore(n,e.display.lineSpace.firstChild)}function r(e){i(e)&&n(e)}function o(e){var r=e.getWrapperElement(),o=i(e);r.className=r.className.replace(" CodeMirror-empty","")+(o?" CodeMirror-empty":""),o?n(e):t(e)}function i(e){return 1===e.lineCount()&&""===e.getLine(0)}e.defineOption("placeholder","",(function(n,i,a){var c=a&&a!=e.Init;if(i&&!c)n.on("blur",r),n.on("change",o),n.on("swapDoc",o),o(n);else if(!i&&c){n.off("blur",r),n.off("change",o),n.off("swapDoc",o),t(n);var s=n.getWrapperElement();s.className=s.className.replace(" CodeMirror-empty","")}i&&!n.hasFocus()&&r(n)}))}(n(2))},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),n(2).defineMode("filter-mode",(function(e,t){function n(e){var t,n=(t=e.fieldState)==r.category?r.operator:t==r.operator?r.value:t==r.value?r.category:void 0,o=e.fieldState;return e.fieldState=n,o.toString()}return{startState:function(){return{inString:!1,fieldState:r.category}},token:function(e,t){return" "==(r=e.peek())||"\r"==r||"\n"==r||"\t"==r?(e.eatSpace(),null):"("==e.peek()||")"==e.peek()?(e.next(),"bracket"):e.match("AND",!0,!0)||e.match("OR",!0,!0)?"condition":(t.inString||'"'!=e.peek()||(e.next(),t.inString=!0),t.inString?(e.skipTo('"')?(e.next(),t.inString=!1):e.skipToEnd(),n(t)):(e.eatWhile(/[^\r\n\t\s\(\)]+/),n(t)));var r}}}));var r=function(){function e(){}return e.none="none",e.category="category",e.operator="operator",e.value="value",e}()},function(e,t,n){var r=n(16);"string"==typeof r&&(r=[[e.i,r,""]]),n(6)(r,{hmr:!0,transform:void 0,insertInto:void 0}),r.locals&&(e.exports=r.locals)},function(e,t,n){(e.exports=n(5)(!1)).push([e.i,".CodeMirror{font-family:monospace;height:300px;color:black;direction:ltr}.CodeMirror-lines{padding:4px 0}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{padding:0 4px}.CodeMirror-scrollbar-filler,.CodeMirror-gutter-filler{background-color:white}.CodeMirror-gutters{border-right:1px solid #ddd;background-color:#f7f7f7;white-space:nowrap}.CodeMirror-linenumber{padding:0 3px 0 5px;min-width:20px;text-align:right;color:#999;white-space:nowrap}.CodeMirror-guttermarker{color:black}.CodeMirror-guttermarker-subtle{color:#999}.CodeMirror-cursor{border-left:1px solid black;border-right:none;width:0}.CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}.cm-fat-cursor .CodeMirror-cursor{width:auto;border:0 !important;background:#7e7}.cm-fat-cursor div.CodeMirror-cursors{z-index:1}.cm-fat-cursor-mark{background-color:rgba(20,255,20,0.5);-webkit-animation:blink 1.06s steps(1) infinite;-moz-animation:blink 1.06s steps(1) infinite;animation:blink 1.06s steps(1) infinite}.cm-animate-fat-cursor{width:auto;border:0;-webkit-animation:blink 1.06s steps(1) infinite;-moz-animation:blink 1.06s steps(1) infinite;animation:blink 1.06s steps(1) infinite;background-color:#7e7}@-moz-keyframes blink{50%{background-color:transparent}}@-webkit-keyframes blink{50%{background-color:transparent}}@keyframes blink{50%{background-color:transparent}}.cm-tab{display:inline-block;text-decoration:inherit}.CodeMirror-rulers{position:absolute;left:0;right:0;top:-50px;bottom:0;overflow:hidden}.CodeMirror-ruler{border-left:1px solid #ccc;top:0;bottom:0;position:absolute}.cm-s-default .cm-header{color:blue}.cm-s-default .cm-quote{color:#090}.cm-negative{color:#d44}.cm-positive{color:#292}.cm-header,.cm-strong{font-weight:bold}.cm-em{font-style:italic}.cm-link{text-decoration:underline}.cm-strikethrough{text-decoration:line-through}.cm-s-default .cm-keyword{color:#708}.cm-s-default .cm-atom{color:#219}.cm-s-default .cm-number{color:#164}.cm-s-default .cm-def{color:#00f}.cm-s-default .cm-variable-2{color:#05a}.cm-s-default .cm-variable-3,.cm-s-default .cm-type{color:#085}.cm-s-default .cm-comment{color:#a50}.cm-s-default .cm-string{color:#a11}.cm-s-default .cm-string-2{color:#f50}.cm-s-default .cm-meta{color:#555}.cm-s-default .cm-qualifier{color:#555}.cm-s-default .cm-builtin{color:#30a}.cm-s-default .cm-bracket{color:#997}.cm-s-default .cm-tag{color:#170}.cm-s-default .cm-attribute{color:#00c}.cm-s-default .cm-hr{color:#999}.cm-s-default .cm-link{color:#00c}.cm-s-default .cm-error{color:#f00}.cm-invalidchar{color:#f00}.CodeMirror-composing{border-bottom:2px solid}div.CodeMirror span.CodeMirror-matchingbracket{color:#0b0}div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#a22}.CodeMirror-matchingtag{background:rgba(255,150,0,0.3)}.CodeMirror-activeline-background{background:#e8f2ff}.CodeMirror{position:relative;overflow:hidden;background:white}.CodeMirror-scroll{overflow:scroll !important;margin-bottom:-50px;margin-right:-50px;padding-bottom:50px;height:100%;outline:none;position:relative}.CodeMirror-sizer{position:relative;border-right:50px solid transparent}.CodeMirror-vscrollbar,.CodeMirror-hscrollbar,.CodeMirror-scrollbar-filler,.CodeMirror-gutter-filler{position:absolute;z-index:6;display:none}.CodeMirror-vscrollbar{right:0;top:0;overflow-x:hidden;overflow-y:scroll}.CodeMirror-hscrollbar{bottom:0;left:0;overflow-y:hidden;overflow-x:scroll}.CodeMirror-scrollbar-filler{right:0;bottom:0}.CodeMirror-gutter-filler{left:0;bottom:0}.CodeMirror-gutters{position:absolute;left:0;top:0;min-height:100%;z-index:3}.CodeMirror-gutter{white-space:normal;height:100%;display:inline-block;vertical-align:top;margin-bottom:-50px}.CodeMirror-gutter-wrapper{position:absolute;z-index:4;background:none !important;border:none !important}.CodeMirror-gutter-background{position:absolute;top:0;bottom:0;z-index:4}.CodeMirror-gutter-elt{position:absolute;cursor:default;z-index:4}.CodeMirror-gutter-wrapper ::selection{background-color:transparent}.CodeMirror-gutter-wrapper ::-moz-selection{background-color:transparent}.CodeMirror-lines{cursor:text;min-height:1px}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;border-width:0;background:transparent;font-family:inherit;font-size:inherit;margin:0;white-space:pre;word-wrap:normal;line-height:inherit;color:inherit;z-index:2;position:relative;overflow:visible;-webkit-tap-highlight-color:transparent;-webkit-font-variant-ligatures:contextual;font-variant-ligatures:contextual}.CodeMirror-wrap pre.CodeMirror-line,.CodeMirror-wrap pre.CodeMirror-line-like{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.CodeMirror-linebackground{position:absolute;left:0;right:0;top:0;bottom:0;z-index:0}.CodeMirror-linewidget{position:relative;z-index:2;padding:.1px}.CodeMirror-rtl pre{direction:rtl}.CodeMirror-code{outline:none}.CodeMirror-scroll,.CodeMirror-sizer,.CodeMirror-gutter,.CodeMirror-gutters,.CodeMirror-linenumber{-moz-box-sizing:content-box;box-sizing:content-box}.CodeMirror-measure{position:absolute;width:100%;height:0;overflow:hidden;visibility:hidden}.CodeMirror-cursor{position:absolute;pointer-events:none}.CodeMirror-measure pre{position:static}div.CodeMirror-cursors{visibility:hidden;position:relative;z-index:3}div.CodeMirror-dragcursors{visibility:visible}.CodeMirror-focused div.CodeMirror-cursors{visibility:visible}.CodeMirror-selected{background:#d9d9d9}.CodeMirror-focused .CodeMirror-selected{background:#d7d4f0}.CodeMirror-crosshair{cursor:crosshair}.CodeMirror-line::selection,.CodeMirror-line>span::selection,.CodeMirror-line>span>span::selection{background:#d7d4f0}.CodeMirror-line::-moz-selection,.CodeMirror-line>span::-moz-selection,.CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}.cm-searching{background-color:#ffa;background-color:rgba(255,255,0,0.4)}.cm-force-border{padding-right:.1px}@media print{.CodeMirror div.CodeMirror-cursors{visibility:hidden}}.cm-tab-wrap-hack:after{content:''}span.CodeMirror-selectedtext{background:none}",""])},function(e,t){e.exports=function(e){var t="undefined"!=typeof window&&window.location;if(!t)throw new Error("fixUrls requires window.location");if(!e||"string"!=typeof e)return e;var n=t.protocol+"//"+t.host,r=n+t.pathname.replace(/\/[^\/]*$/,"/");return e.replace(/url\s*\(((?:[^)(]|\((?:[^)(]+|\([^)(]*\))*\))*)\)/gi,(function(e,t){var o,i=t.trim().replace(/^"(.*)"$/,(function(e,t){return t})).replace(/^'(.*)'$/,(function(e,t){return t}));return/^(#|data:|http:\/\/|https:\/\/|file:\/\/\/|\s*$)/i.test(i)?e:(o=0===i.indexOf("//")?i:0===i.indexOf("/")?n+i:r+i.replace(/^\.\//,""),"url("+JSON.stringify(o)+")")}))}},function(e,t,n){var r=n(19);"string"==typeof r&&(r=[[e.i,r,""]]),n(6)(r,{hmr:!0,transform:void 0,insertInto:void 0}),r.locals&&(e.exports=r.locals)},function(e,t,n){(e.exports=n(5)(!1)).push([e.i,".CodeMirror-hints{position:absolute;z-index:10;overflow:hidden;list-style:none;margin:0;padding:2px;-webkit-box-shadow:2px 3px 5px rgba(0,0,0,0.2);-moz-box-shadow:2px 3px 5px rgba(0,0,0,0.2);box-shadow:2px 3px 5px rgba(0,0,0,0.2);border-radius:3px;border:1px solid silver;background:white;font-size:90%;font-family:monospace;max-height:20em;overflow-y:auto}.CodeMirror-hint{margin:0;padding:0 4px;border-radius:2px;white-space:pre;color:black;cursor:pointer}li.CodeMirror-hint-active{background:#08f;color:white}",""])},function(e,t,n){"use strict";(function(e){var r,o=Object.assign||function(e){for(var t=1;t=0;case"!contains":return e[o].toLowerCase().indexOf(r.toLowerCase())<0}return!1},t}(n(8).default);t.default=a},function(e,t,n){"use strict";var r,o=this&&this.__extends||(r=function(e,t){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)},function(e,t){function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)});Object.defineProperty(t,"__esModule",{value:!0});var i=n(4),a=n(0),c=function(e){function t(t,n){var r=e.call(this)||this;return r.data=t,r.options=n,r.cache={},r.parseResult=null,r.categories=a.map(r.options,(function(e){return e.columnText?e.columnText:e.columnField})),r}return o(t,e),t.prototype.hasCategory=function(e){return void 0!==a.find(this.options,(function(t){return e===t.columnField||e===t.columnText}))},t.prototype.hasOperator=function(e,t){return this.needOperators(e).indexOf(t)>=0},t.prototype.needCategories=function(){return this.categories},t.prototype.needOperators=function(e){var t=a.find(this.options,(function(t){return null!=t.customOperatorFunc&&(t.columnText==e||t.columnField==e)}));return t?t.customOperatorFunc(e):["==","!=","contains","!contains"]},t.prototype.needValues=function(e,t){var n=a.find(this.options,(function(t){return t.columnField==e||t.columnText==e}));return null!=n&&"selection"==n.type&&null!=this.data?(this.cache[e]||(this.cache[e]=a.chain(this.data).map((function(t){return t[e]})).uniq().value()),this.cache[e]):null!=n&&n.customValuesFunc?n.customValuesFunc(e,t):[]},t}(i.default);t.default=c},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(28),o=n(0),i=n(4),a=n(29),c=n(3),s=function(){function e(){this.autoCompleteHandler=new i.default,this.lastError=null,this.parseTrace=new a.default}return e.prototype.parse=function(e){if(e=o.trim(e),o.isEmpty(e))return[];try{return this.parseQuery(e)}catch(e){return e.isError=!0,e}},e.prototype.parseQuery=function(e){return this.parseTrace.clear(),r.parse(e,{parseTrace:this.parseTrace})},e.prototype.getSuggestions=function(e){e=c.default.stripEndWithNonSeparatorCharacters(e);try{return this.parseQuery(e),!e||c.default.isLastCharacterWhiteSpace(e)?o.map(["AND","OR"],(function(e){return{value:e,type:"literal"}})):[]}catch(e){return this.autoCompleteHandler.handleParseError(r,this.parseTrace,e)}},e.prototype.setAutoCompleteHandler=function(e){this.autoCompleteHandler=e},e}();t.default=s},function(e,t,n){"use strict";function r(e,t,n,o){this.message=e,this.expected=t,this.found=n,this.location=o,this.name="SyntaxError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,r)}!function(e,t){function n(){this.constructor=e}n.prototype=t.prototype,e.prototype=new n}(r,Error),r.buildMessage=function(e,t){var n={literal:function(e){return'"'+o(e.text)+'"'},class:function(e){var t,n="";for(t=0;t0){for(t=1,r=1;tM&&(M=k,C=[]),C.push(e))}function H(){var t,n,r,i,a,l,u,f;if(t=k,R()!==o)if((n=D())!==o){for(r=[],i=k,(a=V())!==o?("and"===e.substr(k,3).toLowerCase()?(l=e.substr(k,3),k+=3):(l=o,0===_&&L(c)),l===o&&("or"===e.substr(k,2).toLowerCase()?(l=e.substr(k,2),k+=2):(l=o,0===_&&L(s))),l!==o&&(u=V())!==o&&(f=D())!==o?i=a=[a,l,u,f]:(k=i,i=o)):(k=i,i=o);i!==o;)r.push(i),i=k,(a=V())!==o?("and"===e.substr(k,3).toLowerCase()?(l=e.substr(k,3),k+=3):(l=o,0===_&&L(c)),l===o&&("or"===e.substr(k,2).toLowerCase()?(l=e.substr(k,2),k+=2):(l=o,0===_&&L(s))),l!==o&&(u=V())!==o&&(f=D())!==o?i=a=[a,l,u,f]:(k=i,i=o)):(k=i,i=o);r!==o&&(i=R())!==o?(x=t,t=function(e,t){for(var n=[e],r=0;r=1&&d<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var h=new Date(0);h.setUTCFullYear(c+1,0,d),h.setUTCHours(0,0,0,0);var p=Object(i.a)(h,t),z=new Date(0);z.setUTCFullYear(c,0,d),z.setUTCHours(0,0,0,0);var v=Object(i.a)(z,t);return n.getTime()>=p.getTime()?c+1:n.getTime()>=v.getTime()?c:c-1}},function(e,t,n){"use strict";n.d(t,"a",(function(){return a}));var r=n(15),o=n(10),i=n(6);function a(e,t){Object(i.a)(2,arguments);var n=Object(o.default)(e).getTime(),a=Object(r.a)(t);return new Date(n+a)}},function(e,t,n){"use strict";n.d(t,"a",(function(){return c}));var r=n(15),o=n(10),i=n(73),a=n(6);function c(e,t){Object(a.a)(1,arguments);var n=Object(o.default)(e,t),c=n.getUTCFullYear(),s=t||{},l=s.locale,u=l&&l.options&&l.options.firstWeekContainsDate,f=null==u?1:Object(r.a)(u),d=null==s.firstWeekContainsDate?f:Object(r.a)(s.firstWeekContainsDate);if(!(d>=1&&d<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var h=new Date(0);h.setUTCFullYear(c+1,0,d),h.setUTCHours(0,0,0,0);var p=Object(i.a)(h,t),z=new Date(0);z.setUTCFullYear(c,0,d),z.setUTCHours(0,0,0,0);var v=Object(i.a)(z,t);return n.getTime()>=p.getTime()?c+1:n.getTime()>=v.getTime()?c:c-1}},function(e,t,n){"use strict";n.r(t),n.d(t,"default",(function(){return a}));var r=n(10),o=n(15),i=n(6);function a(e,t){Object(i.a)(1,arguments);var n=t||{},a=n.locale,c=a&&a.options&&a.options.weekStartsOn,s=null==c?0:Object(o.a)(c),l=null==n.weekStartsOn?s:Object(o.a)(n.weekStartsOn);if(!(l>=0&&l<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var u=Object(r.default)(e),f=u.getDay(),d=(f0&&void 0!==arguments[0]?arguments[0]:{},n=t.width?String(t.width):e.defaultWidth,r=e.formats[n]||e.formats[e.defaultWidth];return r}}var i={date:o({formats:{full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},defaultWidth:"full"}),time:o({formats:{full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},defaultWidth:"full"}),dateTime:o({formats:{full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},defaultWidth:"full"})},a={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"};function c(e){return function(t,n){var r,o=n||{};if("formatting"===(o.context?String(o.context):"standalone")&&e.formattingValues){var i=e.defaultFormattingWidth||e.defaultWidth,a=o.width?String(o.width):i;r=e.formattingValues[a]||e.formattingValues[i]}else{var c=e.defaultWidth,s=o.width?String(o.width):e.defaultWidth;r=e.values[s]||e.values[c]}return r[e.argumentCallback?e.argumentCallback(t):t]}}function s(e){return function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=n.width,o=r&&e.matchPatterns[r]||e.matchPatterns[e.defaultMatchWidth],i=t.match(o);if(!i)return null;var a,c=i[0],s=r&&e.parsePatterns[r]||e.parsePatterns[e.defaultParseWidth],f=Array.isArray(s)?u(s,(function(e){return e.test(c)})):l(s,(function(e){return e.test(c)}));a=e.valueCallback?e.valueCallback(f):f,a=n.valueCallback?n.valueCallback(a):a;var d=t.slice(c.length);return{value:a,rest:d}}}function l(e,t){for(var n in e)if(e.hasOwnProperty(n)&&t(e[n]))return n}function u(e,t){for(var n=0;n0?"in "+o:o+" ago":o},formatLong:i,formatRelative:function(e,t,n,r){return a[e]},localize:{ordinalNumber:function(e,t){var n=Number(e),r=n%100;if(r>20||r<10)switch(r%10){case 1:return n+"st";case 2:return n+"nd";case 3:return n+"rd"}return n+"th"},era:c({values:{narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},defaultWidth:"wide"}),quarter:c({values:{narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},defaultWidth:"wide",argumentCallback:function(e){return Number(e)-1}}),month:c({values:{narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},defaultWidth:"wide"}),day:c({values:{narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},defaultWidth:"wide"}),dayPeriod:c({values:{narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},defaultWidth:"wide",formattingValues:{narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},defaultFormattingWidth:"wide"})},match:{ordinalNumber:(f={matchPattern:/^(\d+)(th|st|nd|rd)?/i,parsePattern:/\d+/i,valueCallback:function(e){return parseInt(e,10)}},function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.match(f.matchPattern);if(!n)return null;var r=n[0],o=e.match(f.parsePattern);if(!o)return null;var i=f.valueCallback?f.valueCallback(o[0]):o[0];i=t.valueCallback?t.valueCallback(i):i;var a=e.slice(r.length);return{value:i,rest:a}}),era:s({matchPatterns:{narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^b/i,/^(a|c)/i]},defaultParseWidth:"any"}),quarter:s({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:s({matchPatterns:{narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},defaultParseWidth:"any"}),day:s({matchPatterns:{narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},defaultParseWidth:"any"}),dayPeriod:s({matchPatterns:{narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},defaultMatchWidth:"any",parsePatterns:{any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},defaultParseWidth:"any"})},options:{weekStartsOn:0,firstWeekContainsDate:1}};t.a=d},function(e,t,n){"use strict";var r=n(33),o=n(29),i=n(47),a=n(23),c=n(11),s=n(48);function l(){var e={};return e.promise=new Promise((function(t,n){e.resolve=t,e.reject=n})),e}var u=l,f=(n(155),[]),d=0;function h(e){try{v(),e()}finally{g()}}function p(e){f.push(e),d||(v(),m())}function z(e){try{return v(),e()}finally{m()}}function v(){d++}function g(){d--}function m(){var e;for(g();!d&&void 0!==(e=f.shift());)h(e)}var y=function(e){return function(t){return e.some((function(e){return j(e)(t)}))}},b=function(e){return function(t){return e(t)}},w=function(e){return function(t){return t.type===String(e)}},k=function(e){return function(t){return t.type===e}},x=function(){return c.H};function j(e){var t="*"===e?x:Object(a.k)(e)?w:Object(a.a)(e)?y:Object(a.l)(e)?w:Object(a.d)(e)?b:Object(a.m)(e)?k:null;if(null===t)throw new Error("invalid pattern: "+e);return t(e)}var M={type:r.b},C=function(e){return e&&e.type===r.b};function _(e){void 0===e&&(e=Object(c.B)());var t=!1,n=[];return{take:function(r){t&&e.isEmpty()?r(M):e.isEmpty()?(n.push(r),r.cancel=function(){Object(c.O)(n,r)}):r(e.take())},put:function(r){if(!t){if(0===n.length)return e.put(r);n.shift()(r)}},flush:function(n){t&&e.isEmpty()?n(M):n(e.flush())},close:function(){if(!t){t=!0;var e=n;n=[];for(var r=0,o=e.length;r2?p-2:0),g=2;g=arguments.length)?u=n[l]:(u=arguments[c],c+=1),i[l]=u,Object(a.a)(u)||(s-=1),l+=1}return s<=0?o.apply(this,i):Object(r.a)(s,e(t,i,o))}}(e,[],t))}));t.a=c},function(e,t,n){"use strict";var r=n(104),o={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},i={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},a={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},c={};function s(e){return r.isMemo(e)?a:c[e.$$typeof]||o}c[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0};var l=Object.defineProperty,u=Object.getOwnPropertyNames,f=Object.getOwnPropertySymbols,d=Object.getOwnPropertyDescriptor,h=Object.getPrototypeOf,p=Object.prototype;e.exports=function e(t,n,r){if("string"!==typeof n){if(p){var o=h(n);o&&o!==p&&e(t,o,r)}var a=u(n);f&&(a=a.concat(f(n)));for(var c=s(t),z=s(n),v=0;v=0;){if(n[i]===e)return r[i]===t;i-=1}switch(o){case"Map":return e.size===t.size&&f(e.entries(),t.entries(),n.concat([e]),r.concat([t]));case"Set":return e.size===t.size&&f(e.values(),t.values(),n.concat([e]),r.concat([t]));case"Arguments":case"Array":case"Object":case"Boolean":case"Number":case"String":case"Date":case"Error":case"RegExp":case"Int8Array":case"Uint8Array":case"Uint8ClampedArray":case"Int16Array":case"Uint16Array":case"Int32Array":case"Uint32Array":case"Float32Array":case"Float64Array":case"ArrayBuffer":break;default:return!1}var l=Object(s.a)(e);if(l.length!==Object(s.a)(t).length)return!1;var h=n.concat([e]),p=r.concat([t]);for(i=l.length-1;i>=0;){var z=l[i];if(!Object(a.a)(z,t)||!d(t[z],e[z],h,p))return!1;i-=1}return!0}var h=Object(r.a)((function(e,t){return d(e,t,[],[])}));t.a=h},function(e,t,n){"use strict";var r=n(31),o=n(148),i=n(133);function a(e){return'"'+e.replace(/\\/g,"\\\\").replace(/[\b]/g,"\\b").replace(/\f/g,"\\f").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\t/g,"\\t").replace(/\v/g,"\\v").replace(/\0/g,"\\0").replace(/"/g,'\\"')+'"'}var c=function(e){return(e<10?"0":"")+e},s="function"===typeof Date.prototype.toISOString?function(e){return e.toISOString()}:function(e){return e.getUTCFullYear()+"-"+c(e.getUTCMonth()+1)+"-"+c(e.getUTCDate())+"T"+c(e.getUTCHours())+":"+c(e.getUTCMinutes())+":"+c(e.getUTCSeconds())+"."+(e.getUTCMilliseconds()/1e3).toFixed(3).slice(2,5)+"Z"},l=n(59);var u=n(19),f=n(308),d=Object(u.a)((function(e,t){return Object(f.a)((n=e,function(){return!n.apply(this,arguments)}),t);var n}));var h=Object(r.a)((function(e){return function e(t,n){var r=function(r){var i=n.concat([t]);return Object(o.a)(r,i)?"":e(r,i)},c=function(e,t){return Object(i.a)((function(t){return a(t)+": "+r(e[t])}),t.slice().sort())};switch(Object.prototype.toString.call(t)){case"[object Arguments]":return"(function() { return arguments; }("+Object(i.a)(r,t).join(", ")+"))";case"[object Array]":return"["+Object(i.a)(r,t).concat(c(t,d((function(e){return/^\d+$/.test(e)}),Object(l.a)(t)))).join(", ")+"]";case"[object Boolean]":return"object"===typeof t?"new Boolean("+r(t.valueOf())+")":t.toString();case"[object Date]":return"new Date("+(isNaN(t.valueOf())?r(NaN):a(s(t)))+")";case"[object Null]":return"null";case"[object Number]":return"object"===typeof t?"new Number("+r(t.valueOf())+")":1/t===-1/0?"-0":t.toString(10);case"[object String]":return"object"===typeof t?"new String("+r(t.valueOf())+")":a(t);case"[object Undefined]":return"undefined";default:if("function"===typeof t.toString){var u=t.toString();if("[object Object]"!==u)return u}return"{"+c(t,Object(l.a)(t)).join(", ")+"}"}}(e,[])}));t.a=h},function(e,t,n){"use strict";var r=n(29),o=n(47),i=n(79),a=n(0),c=n.n(a),s=n(13),l=n.n(s),u=n(34),f=n.n(u),d=n(30),h=n.n(d),p=!1,z=c.a.createContext(null),v="unmounted",g="exited",m="entering",y="entered",b=function(e){function t(t,n){var r;r=e.call(this,t,n)||this;var o,i=n&&!n.isMounting?t.enter:t.appear;return r.appearStatus=null,t.in?i?(o=g,r.appearStatus=m):o=y:o=t.unmountOnExit||t.mountOnEnter?v:g,r.state={status:o},r.nextCallback=null,r}Object(i.a)(t,e),t.getDerivedStateFromProps=function(e,t){return e.in&&t.status===v?{status:g}:null};var n=t.prototype;return n.componentDidMount=function(){this.updateStatus(!0,this.appearStatus)},n.componentDidUpdate=function(e){var t=null;if(e!==this.props){var n=this.state.status;this.props.in?n!==m&&n!==y&&(t=m):n!==m&&n!==y||(t="exiting")}this.updateStatus(!1,t)},n.componentWillUnmount=function(){this.cancelNextCallback()},n.getTimeouts=function(){var e,t,n,r=this.props.timeout;return e=t=n=r,null!=r&&"number"!==typeof r&&(e=r.exit,t=r.enter,n=void 0!==r.appear?r.appear:t),{exit:e,enter:t,appear:n}},n.updateStatus=function(e,t){if(void 0===e&&(e=!1),null!==t){this.cancelNextCallback();var n=h.a.findDOMNode(this);t===m?this.performEnter(n,e):this.performExit(n)}else this.props.unmountOnExit&&this.state.status===g&&this.setState({status:v})},n.performEnter=function(e,t){var n=this,r=this.props.enter,o=this.context?this.context.isMounting:t,i=this.getTimeouts(),a=o?i.appear:i.enter;!t&&!r||p?this.safeSetState({status:y},(function(){n.props.onEntered(e)})):(this.props.onEnter(e,o),this.safeSetState({status:m},(function(){n.props.onEntering(e,o),n.onTransitionEnd(e,a,(function(){n.safeSetState({status:y},(function(){n.props.onEntered(e,o)}))}))})))},n.performExit=function(e){var t=this,n=this.props.exit,r=this.getTimeouts();n&&!p?(this.props.onExit(e),this.safeSetState({status:"exiting"},(function(){t.props.onExiting(e),t.onTransitionEnd(e,r.exit,(function(){t.safeSetState({status:g},(function(){t.props.onExited(e)}))}))}))):this.safeSetState({status:g},(function(){t.props.onExited(e)}))},n.cancelNextCallback=function(){null!==this.nextCallback&&(this.nextCallback.cancel(),this.nextCallback=null)},n.safeSetState=function(e,t){t=this.setNextCallback(t),this.setState(e,t)},n.setNextCallback=function(e){var t=this,n=!0;return this.nextCallback=function(r){n&&(n=!1,t.nextCallback=null,e(r))},this.nextCallback.cancel=function(){n=!1},this.nextCallback},n.onTransitionEnd=function(e,t,n){this.setNextCallback(n);var r=null==t&&!this.props.addEndListener;e&&!r?(this.props.addEndListener&&this.props.addEndListener(e,this.nextCallback),null!=t&&setTimeout(this.nextCallback,t)):setTimeout(this.nextCallback,0)},n.render=function(){var e=this.state.status;if(e===v)return null;var t=this.props,n=t.children,r=Object(o.a)(t,["children"]);if(delete r.in,delete r.mountOnEnter,delete r.unmountOnExit,delete r.appear,delete r.enter,delete r.exit,delete r.timeout,delete r.addEndListener,delete r.onEnter,delete r.onEntering,delete r.onEntered,delete r.onExit,delete r.onExiting,delete r.onExited,"function"===typeof n)return c.a.createElement(z.Provider,{value:null},n(e,r));var i=c.a.Children.only(n);return(c.a.createElement(z.Provider,{value:null},c.a.cloneElement(i,r)))},t}(c.a.Component);function w(){}b.contextType=z,b.propTypes={},b.defaultProps={in:!1,mountOnEnter:!1,unmountOnExit:!1,appear:!1,enter:!0,exit:!0,onEnter:w,onEntering:w,onEntered:w,onExit:w,onExiting:w,onExited:w},b.UNMOUNTED=0,b.EXITED=1,b.ENTERING=2,b.ENTERED=3,b.EXITING=4;var k=b,x=n(100);function j(e,t){var n=Object.create(null);return e&&a.Children.map(e,(function(e){return e})).forEach((function(e){n[e.key]=function(e){return t&&Object(a.isValidElement)(e)?t(e):e}(e)})),n}function M(e,t,n){return null!=n[t]?n[t]:e.props[t]}function C(e,t,n){var r=j(e.children),o=function(e,t){function n(n){return n in t?t[n]:e[n]}e=e||{},t=t||{};var r,o=Object.create(null),i=[];for(var a in e)a in t?i.length&&(o[a]=i,i=[]):i.push(a);var c={};for(var s in t){if(o[s])for(r=0;r0}function D(e){return Object.keys(e).map((function(t){return e[t]}))}var P=!("undefined"===typeof window||!window.document||!window.document.createElement);var V,R=((V=function(e,t,n){var r=e[t];return!1===r||H(r)?null:new Error(n+" expect "+t+" \n to be a valid Number > 0 or equal to false. "+r+" given.")}).isRequired=function(e,t,n){if("undefined"===typeof e[t])return new Error("The prop "+t+" is marked as required in \n "+n+", but its value is undefined.");V(e,t,n)},V),I={list:new Map,emitQueue:new Map,on:function(e,t){return this.list.has(e)||this.list.set(e,[]),this.list.get(e).push(t),this},off:function(e){return this.list.delete(e),this},cancelEmit:function(e){var t=this.emitQueue.get(e);return t&&(t.forEach((function(e){return clearTimeout(e)})),this.emitQueue.delete(e)),this},emit:function(e){for(var t=this,n=arguments.length,r=new Array(n>1?n-1:0),o=1;o=1?"onTransitionEnd":"onAnimationEnd"]=h&&p<1?null:a,n);return c.a.createElement("div",Object(r.a)({className:g,style:v},m))}function B(e){return e.targetTouches&&e.targetTouches.length>=1?e.targetTouches[0].clientX:e.clientX}F.propTypes={delay:R.isRequired,isRunning:l.a.bool.isRequired,closeToast:l.a.func.isRequired,rtl:l.a.bool.isRequired,type:l.a.string,hide:l.a.bool,className:l.a.oneOfType([l.a.string,l.a.object]),progress:l.a.number,controlledProgress:l.a.bool},F.defaultProps={type:E.DEFAULT,hide:!1};var U=P&&/(msie|trident)/i.test(navigator.userAgent),W=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),o=0;o=1?e.targetTouches[0].clientY:e.clientY}(e),t.drag.start!==t.drag.x&&(t.flag.canCloseOnClick=!1),t.ref.style.transform="translateX("+t.drag.deltaX+"px)",t.ref.style.opacity=1-Math.abs(t.drag.deltaX/t.drag.removalDistance))},t.onDragEnd=function(e){if(t.flag.canDrag){if(t.flag.canDrag=!1,Math.abs(t.drag.deltaX)>t.drag.removalDistance)return void t.setState({preventExitTransition:!0},t.props.closeToast);t.ref.style.transition="transform 0.2s, opacity 0.2s",t.ref.style.transform="translateX(0)",t.ref.style.opacity=1}},t.onDragTransitionEnd=function(){if(t.boundingRect){var e=t.boundingRect,n=e.top,r=e.bottom,o=e.left,i=e.right;t.props.pauseOnHover&&t.drag.x>=o&&t.drag.x<=i&&t.drag.y>=n&&t.drag.y<=r?t.pauseToast():t.playToast()}},t.onExitTransitionEnd=function(){if(U)t.props.onExited();else{var e=t.ref.scrollHeight,n=t.ref.style;requestAnimationFrame((function(){n.minHeight="initial",n.height=e+"px",n.transition="all 0.4s ",requestAnimationFrame((function(){n.height=0,n.padding=0,n.margin=0})),setTimeout((function(){return t.props.onExited()}),400)}))}},t}Object(i.a)(t,e);var n=t.prototype;return n.componentDidMount=function(){this.props.onOpen(this.props.children.props),this.props.draggable&&this.bindDragEvents(),this.props.pauseOnFocusLoss&&this.bindFocusEvents()},n.componentDidUpdate=function(e){e.draggable!==this.props.draggable&&(this.props.draggable?this.bindDragEvents():this.unbindDragEvents()),e.pauseOnFocusLoss!==this.props.pauseOnFocusLoss&&(this.props.pauseOnFocusLoss?this.bindFocusEvents():this.unbindFocusEvents())},n.componentWillUnmount=function(){this.props.onClose(this.props.children.props),this.props.draggable&&this.unbindDragEvents(),this.props.pauseOnFocusLoss&&this.unbindFocusEvents()},n.bindFocusEvents=function(){window.addEventListener("focus",this.playToast),window.addEventListener("blur",this.pauseToast)},n.unbindFocusEvents=function(){window.removeEventListener("focus",this.playToast),window.removeEventListener("blur",this.pauseToast)},n.bindDragEvents=function(){document.addEventListener("mousemove",this.onDragMove),document.addEventListener("mouseup",this.onDragEnd),document.addEventListener("touchmove",this.onDragMove),document.addEventListener("touchend",this.onDragEnd)},n.unbindDragEvents=function(){document.removeEventListener("mousemove",this.onDragMove),document.removeEventListener("mouseup",this.onDragEnd),document.removeEventListener("touchmove",this.onDragMove),document.removeEventListener("touchend",this.onDragEnd)},n.render=function(){var e,t=this,n=this.props,o=n.closeButton,i=n.children,a=n.autoClose,s=n.pauseOnHover,l=n.onClick,u=n.closeOnClick,d=n.type,h=n.hideProgressBar,p=n.closeToast,z=n.transition,v=n.position,g=n.className,m=n.bodyClassName,y=n.progressClassName,b=n.progressStyle,w=n.updateId,k=n.role,x=n.progress,j=n.rtl,M={className:f()(L+"__toast",L+"__toast--"+d,(e={},e[L+"__toast--rtl"]=j,e),g)};a&&s&&(M.onMouseEnter=this.pauseToast,M.onMouseLeave=this.playToast),u&&(M.onClick=function(e){l&&l(e),t.flag.canCloseOnClick&&p()});var C=parseFloat(x)===x;return c.a.createElement(z,{in:this.props.in,appear:!0,onExited:this.onExitTransitionEnd,position:v,preventExitTransition:this.state.preventExitTransition},c.a.createElement("div",Object(r.a)({onClick:l},M,{ref:function(e){return t.ref=e},onMouseDown:this.onDragStart,onTouchStart:this.onDragStart,onMouseUp:this.onDragTransitionEnd,onTouchEnd:this.onDragTransitionEnd}),c.a.createElement("div",Object(r.a)({},this.props.in&&{role:k},{className:f()(L+"__toast-body",m)}),i),o&&o,(a||C)&&c.a.createElement(F,Object(r.a)({},w&&!C?{key:"pb-"+w}:{},{rtl:j,delay:a,isRunning:this.state.isRunning,closeToast:p,hide:h,type:d,style:b,className:y,controlledProgress:C,progress:x}))))},t}(a.Component);function G(e){var t=e.closeToast,n=e.type,r=e.ariaLabel;return c.a.createElement("button",{className:L+"__close-button "+L+"__close-button--"+n,type:"button",onClick:function(e){e.stopPropagation(),t(e)},"aria-label":r},"\u2716\ufe0e")}W.propTypes={closeButton:l.a.oneOfType([l.a.node,l.a.bool]).isRequired,autoClose:R.isRequired,children:l.a.node.isRequired,closeToast:l.a.func.isRequired,position:l.a.oneOf(D(O)).isRequired,pauseOnHover:l.a.bool.isRequired,pauseOnFocusLoss:l.a.bool.isRequired,closeOnClick:l.a.bool.isRequired,transition:l.a.func.isRequired,rtl:l.a.bool.isRequired,hideProgressBar:l.a.bool.isRequired,draggable:l.a.bool.isRequired,draggablePercent:l.a.number.isRequired,in:l.a.bool,onExited:l.a.func,onOpen:l.a.func,onClose:l.a.func,type:l.a.oneOf(D(E)),className:l.a.oneOfType([l.a.string,l.a.object]),bodyClassName:l.a.oneOfType([l.a.string,l.a.object]),progressClassName:l.a.oneOfType([l.a.string,l.a.object]),progressStyle:l.a.object,progress:l.a.number,updateId:l.a.oneOfType([l.a.string,l.a.number]),ariaLabel:l.a.string,containerId:l.a.oneOfType([l.a.string,l.a.number]),role:l.a.string},W.defaultProps={type:E.DEFAULT,in:!0,onOpen:A,onClose:A,className:null,bodyClassName:null,progressClassName:null,updateId:null},G.propTypes={closeToast:l.a.func,arialLabel:l.a.string},G.defaultProps={ariaLabel:"close"};var Y=N({enter:L+"__bounce-enter",exit:L+"__bounce-exit",appendPosition:!0}),$=(N({enter:L+"__slide-enter",exit:L+"__slide-exit",duration:[450,750],appendPosition:!0}),N({enter:L+"__zoom-enter",exit:L+"__zoom-exit"}),N({enter:L+"__flip-enter",exit:L+"__flip-exit"}),function(e){function t(){for(var t,n=arguments.length,r=new Array(n),o=0;o0}function ne(e,t){var n=function(e){return te()?e?Z.get(e):Z.get(X):null}(t.containerId);if(!n)return null;var r=n.collection[e];return"undefined"===typeof r?null:r}function re(e,t){return Object(r.a)({},e,{type:t,toastId:ie(e)})}function oe(){return(Math.random().toString(36)+Date.now().toString(36)).substr(2,10)}function ie(e){return e&&("string"===typeof e.toastId||"number"===typeof e.toastId&&!isNaN(e.toastId))?e.toastId:oe()}function ae(e,t){return te()?I.emit(T.SHOW,e,t):(J.push({action:T.SHOW,content:e,options:t}),ee&&P&&(ee=!1,K=document.createElement("div"),document.body.appendChild(K),Object(d.render)(c.a.createElement($,Q),K))),t.toastId}var ce=function(e,t){return ae(e,re(t,t&&t.type||E.DEFAULT))},se=function(e){E[e]!==E.DEFAULT&&(ce[E[e].toLowerCase()]=function(t,n){return ae(t,re(n,n&&n.type||E[e]))})};for(var le in E)se(le);ce.warn=ce.warning,ce.dismiss=function(e){return void 0===e&&(e=null),te()&&I.emit(T.CLEAR,e)},ce.isActive=function(e){var t=!1;return Z.size>0&&Z.forEach((function(n){n.isToastActive(e)&&(t=!0)})),t},ce.update=function(e,t){void 0===t&&(t={}),setTimeout((function(){var n=ne(e,t);if(n){var o=n.options,i=n.content,a=Object(r.a)({},o,{},t,{toastId:t.toastId||e});t.toastId&&t.toastId!==e?a.staleToastId=e:a.updateId=oe();var c="undefined"!==typeof a.render?a.render:i;delete a.render,ae(c,a)}}),0)},ce.done=function(e){ce.update(e,{progress:1})},ce.onChange=function(e){"function"===typeof e&&I.on(T.ON_CHANGE,e)},ce.configure=function(e){ee=!0,Q=e},ce.POSITION=O,ce.TYPE=E,I.on(T.DID_MOUNT,(function(e){X=e.props.containerId||e,Z.set(X,e),J.forEach((function(e){I.emit(e.action,e.content,e.options)})),J=[]})).on(T.WILL_UNMOUNT,(function(e){e?Z.delete(e.props.containerId||e):Z.clear(),0===Z.size&&I.off(T.SHOW).off(T.CLEAR),P&&K&&document.body.removeChild(K)}))},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.invariant=t.UNICODE_EXTENSION_SEQUENCE_REGEX=void 0,t.UNICODE_EXTENSION_SEQUENCE_REGEX=/-u(?:-[0-9a-z]{2,8})+/gi,t.invariant=function(e,t,n){if(void 0===n&&(n=Error),!e)throw new n(t)}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.shortMorePenalty=t.shortLessPenalty=t.longMorePenalty=t.longLessPenalty=t.differentNumericTypePenalty=t.additionPenalty=t.removalPenalty=t.DATE_TIME_PROPS=void 0,t.DATE_TIME_PROPS=["weekday","era","year","month","day","hour","minute","second","timeZoneName"],t.removalPenalty=120,t.additionPenalty=20,t.differentNumericTypePenalty=15,t.longLessPenalty=8,t.longMorePenalty=6,t.shortLessPenalty=6,t.shortMorePenalty=3},function(e,t,n){var r=n(409),o=n(413),i=n(415),a=n(419);function c(e){var t=function(e,t){if("object"!==typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t||"default");if("object"!==typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===typeof t?t:String(t)}function s(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1;t0&&e(a,o-1)}(t.map((function(e,t){return h(n,e,{depth:c,index:t})})),c-1),s.reverse(),function e(t){return t.filter((function(e){return e.column.getIsVisible()})).map((function(t){var n=0,r=0,o=[0];return t.subHeaders&&t.subHeaders.length?(o=[],e(t.subHeaders).forEach((function(e){var t=e.colSpan,r=e.rowSpan;n+=t,o.push(r)}))):n=1,r+=Math.min.apply(Math,i(o)),t.colSpan=n,t.rowSpan=r,{colSpan:n,rowSpan:r}}))}(null!=(o=null==(a=s[0])?void 0:a.headers)?o:[]),s}var v={size:150,minSize:20,maxSize:Number.MAX_SAFE_INTEGER},g={getDefaultColumnDef:function(){return v},getInitialState:function(e){return l({columnSizing:{},columnSizingInfo:{startOffset:null,startSize:null,deltaOffset:null,deltaPercentage:null,isResizingColumn:!1,columnSizingStart:[]}},e)},getDefaultOptions:function(e){return{columnResizeMode:"onEnd",onColumnSizingChange:n("columnSizing",e),onColumnSizingInfoChange:n("columnSizingInfo",e)}},createColumn:function(e,t){return{getSize:function(){var n,r,o,i=t.getState().columnSizing[e.id];return Math.min(Math.max(null!=(n=e.columnDef.minSize)?n:v.minSize,null!=(r=null!=i?i:e.columnDef.size)?r:v.size),null!=(o=e.columnDef.maxSize)?o:v.maxSize)},getStart:function(n){var r=n?"left"===n?t.getLeftVisibleLeafColumns():t.getRightVisibleLeafColumns():t.getVisibleLeafColumns(),o=r.findIndex((function(t){return t.id===e.id}));if(o>0){var i=r[o-1];return i.getStart(n)+i.getSize()}return 0},resetSize:function(){t.setColumnSizing((function(t){var n=e.id;return t[n],o(t,[n].map(c))}))},getCanResize:function(){var n,r;return(null==(n=e.columnDef.enableResizing)||n)&&(null==(r=t.options.enableColumnResizing)||r)},getIsResizing:function(){return t.getState().columnSizingInfo.isResizingColumn===e.id}}},createHeader:function(e,t){return{getSize:function(){var t=0;return function e(n){var r;n.subHeaders.length?n.subHeaders.forEach(e):t+=null!=(r=n.column.getSize())?r:0}(e),t},getStart:function(){if(e.index>0){var t=e.headerGroup.headers[e.index-1];return t.getStart()+t.getSize()}return 0},getResizeHandler:function(){var n=t.getColumn(e.column.id),o=n.getCanResize();return function(i){if(o&&(null==i.persist||i.persist(),!(b(i)&&i.touches&&i.touches.length>1))){var a=e.getSize(),c=e?e.getLeafHeaders().map((function(e){return[e.column.id,e.column.getSize()]})):[[n.id,n.getSize()]],s=b(i)?Math.round(i.touches[0].clientX):i.clientX,u=function(e,n){if("number"==typeof n){var o={};t.setColumnSizingInfo((function(e){var t,i,a=n-(null!=(t=null==e?void 0:e.startOffset)?t:0),c=Math.max(a/(null!=(i=null==e?void 0:e.startSize)?i:0),-.999999);return e.columnSizingStart.forEach((function(e){var t=r(e,2),n=t[0],i=t[1];o[n]=Math.round(100*Math.max(i+i*c,0))/100})),l({},e,{deltaOffset:a,deltaPercentage:c})})),"onChange"!==t.options.columnResizeMode&&"end"!==e||t.setColumnSizing((function(e){return l({},e,{},o)}))}},f={moveHandler:function(e){return t=e.clientX,u("move",t);var t},upHandler:function(e){var n;document.removeEventListener("mousemove",f.moveHandler),document.removeEventListener("mouseup",f.upHandler),n=e.clientX,u("end",n),t.setColumnSizingInfo((function(e){return l({},e,{isResizingColumn:!1,startOffset:null,startSize:null,deltaOffset:null,deltaPercentage:null,columnSizingStart:[]})}))}},d=!!y()&&{passive:!1};b(i)||(document.addEventListener("mousemove",f.moveHandler,d),document.addEventListener("mouseup",f.upHandler,d)),t.setColumnSizingInfo((function(e){return l({},e,{startOffset:s,startSize:a,deltaOffset:0,deltaPercentage:0,columnSizingStart:c,isResizingColumn:n.id})}))}}}}},createInstance:function(e){return{setColumnSizing:function(t){return null==e.options.onColumnSizingChange?void 0:e.options.onColumnSizingChange(t)},setColumnSizingInfo:function(t){return null==e.options.onColumnSizingInfoChange?void 0:e.options.onColumnSizingInfoChange(t)},resetColumnSizing:function(t){var n;e.setColumnSizing(t?{}:null!=(n=e.initialState.columnSizing)?n:{})},resetHeaderSizeInfo:function(t){var n;e.setColumnSizingInfo(t?{startOffset:null,startSize:null,deltaOffset:null,deltaPercentage:null,isResizingColumn:!1,columnSizingStart:[]}:null!=(n=e.initialState.columnSizingInfo)?n:{startOffset:null,startSize:null,deltaOffset:null,deltaPercentage:null,isResizingColumn:!1,columnSizingStart:[]})},getTotalSize:function(){var t,n;return null!=(t=null==(n=e.getHeaderGroups()[0])?void 0:n.headers.reduce((function(e,t){return e+t.getSize()}),0))?t:0},getLeftTotalSize:function(){var t,n;return null!=(t=null==(n=e.getLeftHeaderGroups()[0])?void 0:n.headers.reduce((function(e,t){return e+t.getSize()}),0))?t:0},getCenterTotalSize:function(){var t,n;return null!=(t=null==(n=e.getCenterHeaderGroups()[0])?void 0:n.headers.reduce((function(e,t){return e+t.getSize()}),0))?t:0},getRightTotalSize:function(){var t,n;return null!=(t=null==(n=e.getRightHeaderGroups()[0])?void 0:n.headers.reduce((function(e,t){return e+t.getSize()}),0))?t:0}}}},m=null;function y(){if("boolean"==typeof m)return m;var e=!1;try{var n={get passive(){return e=!0,!1}},r=function(){};window.addEventListener("test",r,n),window.removeEventListener("test",r)}catch(t){e=!1}return m=e}function b(e){return"touchstart"===e.type}var w={getInitialState:function(e){return l({expanded:{}},e)},getDefaultOptions:function(e){return{onExpandedChange:n("expanded",e),paginateExpandedRows:!0}},createInstance:function(e){var t=!1,n=!1;return{_autoResetExpanded:function(){var r,o;if(t){if(null!=(r=null!=(o=e.options.autoResetAll)?o:e.options.autoResetExpanded)?r:!e.options.manualExpanding){if(n)return;n=!0,e._queue((function(){e.resetExpanded(),n=!1}))}}else e._queue((function(){t=!0}))},setExpanded:function(t){return null==e.options.onExpandedChange?void 0:e.options.onExpandedChange(t)},toggleAllRowsExpanded:function(t){(null!=t?t:!e.getIsAllRowsExpanded())?e.setExpanded(!0):e.setExpanded({})},resetExpanded:function(t){var n,r;e.setExpanded(t?{}:null!=(n=null==(r=e.initialState)?void 0:r.expanded)?n:{})},getCanSomeRowsExpand:function(){return e.getRowModel().flatRows.some((function(e){return e.getCanExpand()}))},getToggleAllRowsExpandedHandler:function(){return function(t){null==t.persist||t.persist(),e.toggleAllRowsExpanded()}},getIsSomeRowsExpanded:function(){var t=e.getState().expanded;return!0===t||Object.values(t).some(Boolean)},getIsAllRowsExpanded:function(){var t=e.getState().expanded;return"boolean"==typeof t?!0===t:!!Object.keys(t).length&&!e.getRowModel().flatRows.some((function(e){return e.getIsExpanded()}))},getExpandedDepth:function(){var t=0;return(!0===e.getState().expanded?Object.keys(e.getRowModel().rowsById):Object.keys(e.getState().expanded)).forEach((function(e){var n=e.split(".");t=Math.max(t,n.length)})),t},getPreExpandedRowModel:function(){return e.getSortedRowModel()},getExpandedRowModel:function(){return!e._getExpandedRowModel&&e.options.getExpandedRowModel&&(e._getExpandedRowModel=e.options.getExpandedRowModel(e)),e.options.manualExpanding||!e._getExpandedRowModel?e.getPreExpandedRowModel():e._getExpandedRowModel()}}},createRow:function(e,t){return{toggleExpanded:function(n){t.setExpanded((function(r){var i,s=!0===r||!(null==r||!r[e.id]),u={};if(!0===r?Object.keys(t.getRowModel().rowsById).forEach((function(e){u[e]=!0})):u=r,n=null!=(i=n)?i:!s,!s&&n)return l({},u,a({},e.id,!0));if(s&&!n){var f=u,d=e.id;return f[d],o(f,[d].map(c))}return r}))},getIsExpanded:function(){var n,r=t.getState().expanded;return!!(null!=(n=null==t.options.getIsRowExpanded?void 0:t.options.getIsRowExpanded(e))?n:!0===r||(null==r?void 0:r[e.id]))},getCanExpand:function(){var n,r,o;return(null==(n=null==t.options.getRowCanExpand?void 0:t.options.getRowCanExpand(e))||n)&&(null==(r=t.options.enableExpanding)||r)&&!(null==(o=e.subRows)||!o.length)},getToggleExpandedHandler:function(){var t=e.getCanExpand();return function(){t&&e.toggleExpanded()}}}}},k=function(e,t,n){var r,o=n.toLowerCase();return null==(r=e.getValue(t))?void 0:r.toLowerCase().includes(o)};k.autoRemove=function(e){return T(e)};var x=function(e,t,n){var r;return null==(r=e.getValue(t))?void 0:r.includes(n)};x.autoRemove=function(e){return T(e)};var j=function(e,t,n){var r;return(null==(r=e.getValue(t))?void 0:r.toLowerCase())===n.toLowerCase()};j.autoRemove=function(e){return T(e)};var M=function(e,t,n){var r;return null==(r=e.getValue(t))?void 0:r.includes(n)};M.autoRemove=function(e){return T(e)||!(null!=e&&e.length)};var C=function(e,t,n){return!n.some((function(n){var r;return!(null!=(r=e.getValue(t))&&r.includes(n))}))};C.autoRemove=function(e){return T(e)||!(null!=e&&e.length)};var _=function(e,t,n){return n.some((function(n){var r;return null==(r=e.getValue(t))?void 0:r.includes(n)}))};_.autoRemove=function(e){return T(e)||!(null!=e&&e.length)};var q=function(e,t,n){return e.getValue(t)===n};q.autoRemove=function(e){return T(e)};var S=function(e,t,n){return e.getValue(t)==n};S.autoRemove=function(e){return T(e)};var O=function(e,t,n){var o=r(n,2),i=o[0],a=o[1],c=e.getValue(t);return c>=i&&c<=a};O.resolveFilterValue=function(e){var t=r(e,2),n=t[0],o=t[1],i="number"!=typeof n?parseFloat(n):n,a="number"!=typeof o?parseFloat(o):o,c=null===n||Number.isNaN(i)?-1/0:i,s=null===o||Number.isNaN(a)?1/0:a;if(c>s){var l=c;c=s,s=l}return[c,s]},O.autoRemove=function(e){return T(e)||T(e[0])&&T(e[1])};var E={includesString:k,includesStringSensitive:x,equalsString:j,arrIncludes:M,arrIncludesAll:C,arrIncludesSome:_,equals:q,weakEquals:S,inNumberRange:O};function T(e){return null==e||""===e}var A={getDefaultColumnDef:function(){return{filterFn:"auto"}},getInitialState:function(e){return l({columnFilters:[],globalFilter:void 0},e)},getDefaultOptions:function(e){return{onColumnFiltersChange:n("columnFilters",e),onGlobalFilterChange:n("globalFilter",e),filterFromLeafRows:!1,globalFilterFn:"auto",getColumnCanGlobalFilter:function(t){var n,r;return"string"==typeof(null==(n=e.getCoreRowModel().flatRows[0])||null==(r=n._getAllCellsByColumnId()[t.id])?void 0:r.getValue())}}},createColumn:function(e,n){return{getAutoFilterFn:function(){var t=n.getCoreRowModel().flatRows[0],r=null==t?void 0:t.getValue(e.id);return"string"==typeof r?E.includesString:"number"==typeof r?E.inNumberRange:"boolean"==typeof r||null!==r&&"object"==typeof r?E.equals:Array.isArray(r)?E.arrIncludes:E.weakEquals},getFilterFn:function(){var t,r=n.options.filterFns;return s(e.columnDef.filterFn)?e.columnDef.filterFn:"auto"===e.columnDef.filterFn?e.getAutoFilterFn():null!=(t=null==r?void 0:r[e.columnDef.filterFn])?t:E[e.columnDef.filterFn]},getCanFilter:function(){var t,r,o;return(null==(t=e.columnDef.enableColumnFilter)||t)&&(null==(r=n.options.enableColumnFilters)||r)&&(null==(o=n.options.enableFilters)||o)&&!!e.accessorFn},getCanGlobalFilter:function(){var t,r,o,i;return(null==(t=e.columnDef.enableGlobalFilter)||t)&&(null==(r=n.options.enableGlobalFilter)||r)&&(null==(o=n.options.enableFilters)||o)&&(null==(i=null==n.options.getColumnCanGlobalFilter?void 0:n.options.getColumnCanGlobalFilter(e))||i)&&!!e.accessorFn},getIsFiltered:function(){return e.getFilterIndex()>-1},getFilterValue:function(){var t,r;return null==(t=n.getState().columnFilters)||null==(r=t.find((function(t){return t.id===e.id})))?void 0:r.value},getFilterIndex:function(){var t,r;return null!=(t=null==(r=n.getState().columnFilters)?void 0:r.findIndex((function(t){return t.id===e.id})))?t:-1},setFilterValue:function(r){n.setColumnFilters((function(n){var o,a=e.getFilterFn(),c=null==n?void 0:n.find((function(t){return t.id===e.id})),s=t(r,c?c.value:void 0);if(L(a,s,e))return null!=(o=null==n?void 0:n.filter((function(t){return t.id!==e.id})))?o:[];var l,u={id:e.id,value:s};return c?null!=(l=null==n?void 0:n.map((function(t){return t.id===e.id?u:t})))?l:[]:null!=n&&n.length?[].concat(i(n),[u]):[u]}))},_getFacetedRowModel:n.options.getFacetedRowModel&&n.options.getFacetedRowModel(n,e.id),getFacetedRowModel:function(){return e._getFacetedRowModel?e._getFacetedRowModel():n.getPreFilteredRowModel()},_getFacetedUniqueValues:n.options.getFacetedUniqueValues&&n.options.getFacetedUniqueValues(n,e.id),getFacetedUniqueValues:function(){return e._getFacetedUniqueValues?e._getFacetedUniqueValues():new Map},_getFacetedMinMaxValues:n.options.getFacetedMinMaxValues&&n.options.getFacetedMinMaxValues(n,e.id),getFacetedMinMaxValues:function(){if(e._getFacetedMinMaxValues)return e._getFacetedMinMaxValues()}}},createRow:function(e,t){return{columnFilters:{},columnFiltersMeta:{}}},createInstance:function(e){return{getGlobalAutoFilterFn:function(){return E.includesString},getGlobalFilterFn:function(){var t,n=e.options,r=n.filterFns,o=n.globalFilterFn;return s(o)?o:"auto"===o?e.getGlobalAutoFilterFn():null!=(t=null==r?void 0:r[o])?t:E[o]},setColumnFilters:function(n){var r=e.getAllLeafColumns();null==e.options.onColumnFiltersChange||e.options.onColumnFiltersChange((function(e){var o;return null==(o=t(n,e))?void 0:o.filter((function(e){var t=r.find((function(t){return t.id===e.id}));return!t||!L(t.getFilterFn(),e.value,t)}))}))},setGlobalFilter:function(t){null==e.options.onGlobalFilterChange||e.options.onGlobalFilterChange(t)},resetGlobalFilter:function(t){e.setGlobalFilter(t?void 0:e.initialState.globalFilter)},resetColumnFilters:function(t){var n,r;e.setColumnFilters(t?[]:null!=(n=null==(r=e.initialState)?void 0:r.columnFilters)?n:[])},getPreFilteredRowModel:function(){return e.getCoreRowModel()},_getFilteredRowModel:e.options.getFilteredRowModel&&e.options.getFilteredRowModel(e),getFilteredRowModel:function(){return e.options.manualFiltering||!e._getFilteredRowModel?e.getPreFilteredRowModel():e._getFilteredRowModel()},_getGlobalFacetedRowModel:e.options.getFacetedRowModel&&e.options.getFacetedRowModel(e,"__global__"),getGlobalFacetedRowModel:function(){return e.options.manualFiltering||!e._getGlobalFacetedRowModel?e.getPreFilteredRowModel():e._getGlobalFacetedRowModel()},_getGlobalFacetedUniqueValues:e.options.getFacetedUniqueValues&&e.options.getFacetedUniqueValues(e,"__global__"),getGlobalFacetedUniqueValues:function(){return e._getGlobalFacetedUniqueValues?e._getGlobalFacetedUniqueValues():new Map},_getGlobalFacetedMinMaxValues:e.options.getFacetedMinMaxValues&&e.options.getFacetedMinMaxValues(e,"__global__"),getGlobalFacetedMinMaxValues:function(){if(e._getGlobalFacetedMinMaxValues)return e._getGlobalFacetedMinMaxValues()}}}};function L(e,t,n){return!(!e||!e.autoRemove)&&e.autoRemove(t,n)||void 0===t||"string"==typeof t&&!t}var H={sum:function(e,t,n){return n.reduce((function(e,t){return e+("number"==typeof t?t:0)}),0)},min:function(e,t,n){var r;return n.forEach((function(t){var n=t.getValue(e);null!=n&&(r>n||void 0===r&&n>=n)&&(r=n)})),r},max:function(e,t,n){var r;return n.forEach((function(t){var n=t.getValue(e);null!=n&&(r=n)&&(r=n)})),r},extent:function(e,t,n){var r,o;return n.forEach((function(t){var n=t.getValue(e);null!=n&&(void 0===r?n>=n&&(r=o=n):(r>n&&(r=n),o=o&&(++n,r+=o)})),n)return r/n},median:function(e,t){if(t.length){var n=0,r=0;return t.forEach((function(t){var o=t.getValue(e);"number"==typeof o&&(n=Math.min(n,o),r=Math.max(r,o))})),(n+r)/2}},unique:function(e,t){return Array.from(new Set(t.map((function(t){return t.getValue(e)}))).values())},uniqueCount:function(e,t){return new Set(t.map((function(t){return t.getValue(e)}))).size},count:function(e,t){return t.length}},D={getDefaultColumnDef:function(){return{aggregatedCell:function(e){var t,n;return null!=(t=null==(n=e.getValue())||null==n.toString?void 0:n.toString())?t:null},aggregationFn:"auto"}},getInitialState:function(e){return l({grouping:[]},e)},getDefaultOptions:function(e){return{onGroupingChange:n("grouping",e),groupedColumnMode:"reorder"}},createColumn:function(e,t){return{toggleGrouping:function(){t.setGrouping((function(t){return null!=t&&t.includes(e.id)?t.filter((function(t){return t!==e.id})):[].concat(i(null!=t?t:[]),[e.id])}))},getCanGroup:function(){var n,r,o,i;return null!=(n=null==(r=null!=(o=null==(i=e.columnDef.enableGrouping)||i)?o:t.options.enableGrouping)||r)?n:!!e.accessorFn},getIsGrouped:function(){var n;return null==(n=t.getState().grouping)?void 0:n.includes(e.id)},getGroupedIndex:function(){var n;return null==(n=t.getState().grouping)?void 0:n.indexOf(e.id)},getToggleGroupingHandler:function(){var t=e.getCanGroup();return function(){t&&e.toggleGrouping()}},getAutoAggregationFn:function(){var n=t.getCoreRowModel().flatRows[0],r=null==n?void 0:n.getValue(e.id);return"number"==typeof r?H.sum:"[object Date]"===Object.prototype.toString.call(r)?H.extent:void 0},getAggregationFn:function(){var n,r=t.options.aggregationFns;if(!e)throw new Error;return s(e.columnDef.aggregationFn)?e.columnDef.aggregationFn:"auto"===e.columnDef.aggregationFn?e.getAutoAggregationFn():null!=(n=null==r?void 0:r[e.columnDef.aggregationFn])?n:H[e.columnDef.aggregationFn]}}},createInstance:function(e){return{setGrouping:function(t){return null==e.options.onGroupingChange?void 0:e.options.onGroupingChange(t)},resetGrouping:function(t){var n,r;e.setGrouping(t?[]:null!=(n=null==(r=e.initialState)?void 0:r.grouping)?n:[])},getPreGroupedRowModel:function(){return e.getFilteredRowModel()},getGroupedRowModel:function(){return!e._getGroupedRowModel&&e.options.getGroupedRowModel&&(e._getGroupedRowModel=e.options.getGroupedRowModel(e)),e.options.manualGrouping||!e._getGroupedRowModel?e.getPreGroupedRowModel():e._getGroupedRowModel()}}},createRow:function(e){return{getIsGrouped:function(){return!!e.groupingColumnId},_groupingValuesCache:{}}},createCell:function(e,t,n,r){var o=function(){var t;return null!=(t=e.getValue())?t:r.options.renderFallbackValue};return{getIsGrouped:function(){return t.getIsGrouped()&&t.id===n.groupingColumnId},getIsPlaceholder:function(){return!e.getIsGrouped()&&t.getIsGrouped()},getIsAggregated:function(){var t;return!e.getIsGrouped()&&!e.getIsPlaceholder()&&!(null==(t=n.subRows)||!t.length)},renderAggregatedCell:function(){var i=t.columnDef.aggregatedCell||t.columnDef.cell;return i?r._render(i,{instance:r,column:t,row:n,cell:e,getValue:o}):null}}}};function P(e,t,n){if(null==t||!t.length||!n)return e;var r=e.filter((function(e){return!t.includes(e.id)}));return"remove"===n?r:[].concat(i(t.map((function(t){return e.find((function(e){return e.id===t}))})).filter(Boolean)),i(r))}var V={getInitialState:function(e){return l({columnOrder:[]},e)},getDefaultOptions:function(e){return{onColumnOrderChange:n("columnOrder",e)}},createInstance:function(e){return{setColumnOrder:function(t){return null==e.options.onColumnOrderChange?void 0:e.options.onColumnOrderChange(t)},resetColumnOrder:function(t){var n;e.setColumnOrder(t?[]:null!=(n=e.initialState.columnOrder)?n:[])},_getOrderColumnsFn:f((function(){return[e.getState().columnOrder,e.getState().grouping,e.options.groupedColumnMode]}),(function(e,t,n){return function(r){var o=[];if(null!=e&&e.length){for(var a=i(e),c=i(r),s=function(){var e=a.shift(),t=c.findIndex((function(t){return t.id===e}));t>-1&&o.push(c.splice(t,1)[0])};c.length&&a.length;)s();o=[].concat(i(o),i(c))}else o=r;return P(o,t,n)}}),{key:!1})}}},R={getInitialState:function(e){return l({},e,{pagination:l({pageIndex:0,pageSize:10},null==e?void 0:e.pagination)})},getDefaultOptions:function(e){return{onPaginationChange:n("pagination",e)}},createInstance:function(e){var n=!1,r=!1;return{_autoResetPageIndex:function(){var t,o;if(n){if(null!=(t=null!=(o=e.options.autoResetAll)?o:e.options.autoResetPageIndex)?t:!e.options.manualPagination){if(r)return;r=!0,e._queue((function(){e.resetPageIndex(),r=!1}))}}else e._queue((function(){n=!0}))},setPagination:function(n){return null==e.options.onPaginationChange?void 0:e.options.onPaginationChange((function(e){return t(n,e)}))},resetPagination:function(t){var n;e.setPagination(t?{pageIndex:0,pageSize:10}:null!=(n=e.initialState.pagination)?n:{pageIndex:0,pageSize:10})},setPageIndex:function(n){e.setPagination((function(r){var o=t(n,r.pageIndex),i=void 0===e.options.pageCount||-1===e.options.pageCount?Number.MAX_SAFE_INTEGER:e.options.pageCount-1;return l({},r,{pageIndex:o=Math.min(Math.max(0,o),i)})}))},resetPageIndex:function(t){var n,r,o;e.setPageIndex(t?0:null!=(n=null==(r=e.initialState)||null==(o=r.pagination)?void 0:o.pageIndex)?n:0)},resetPageSize:function(t){var n,r,o;e.setPageSize(t?10:null!=(n=null==(r=e.initialState)||null==(o=r.pagination)?void 0:o.pageSize)?n:10)},setPageSize:function(n){e.setPagination((function(e){var r=Math.max(1,t(n,e.pageSize)),o=e.pageSize*e.pageIndex;return l({},e,{pageIndex:Math.floor(o/r),pageSize:r})}))},setPageCount:function(n){return e.setPagination((function(r){var o,i=t(n,null!=(o=e.options.pageCount)?o:-1);return"number"==typeof i&&(i=Math.max(-1,i)),l({},r,{pageCount:i})}))},getPageOptions:f((function(){return[e.getPageCount()]}),(function(e){var t=[];return e&&e>0&&(t=i(new Array(e)).fill(null).map((function(e,t){return t}))),t}),{key:!1,debug:function(){var t;return null!=(t=e.options.debugAll)?t:e.options.debugTable}}),getCanPreviousPage:function(){return e.getState().pagination.pageIndex>0},getCanNextPage:function(){var t=e.getState().pagination.pageIndex,n=e.getPageCount();return-1===n||0!==n&&tt?1:-1}function Y(e){return"number"==typeof e?isNaN(e)||e===1/0||e===-1/0?"":String(e):"string"==typeof e?e:""}function $(e,t){for(var n=e.split(W).filter(Boolean),r=t.split(W).filter(Boolean);n.length&&r.length;){var o=n.shift(),i=r.shift(),a=parseInt(o,10),c=parseInt(i,10),s=[a,c].sort();if(isNaN(s[0])){if(o>i)return 1;if(i>o)return-1}else{if(isNaN(s[1]))return isNaN(a)?-1:1;if(a>c)return 1;if(c>a)return-1}}return n.length-r.length}var Z={alphanumeric:function(e,t,n){return $(Y(e.getValue(n)).toLowerCase(),Y(t.getValue(n)).toLowerCase())},alphanumericCaseSensitive:function(e,t,n){return $(Y(e.getValue(n)),Y(t.getValue(n)))},text:function(e,t,n){return G(Y(e.getValue(n)).toLowerCase(),Y(t.getValue(n)).toLowerCase())},textCaseSensitive:function(e,t,n){return G(Y(e.getValue(n)),Y(t.getValue(n)))},datetime:function(e,t,n){return G(e.getValue(n).getTime(),t.getValue(n).getTime())},basic:function(e,t,n){return G(e.getValue(n),t.getValue(n))}},X={getInitialState:function(e){return l({sorting:[]},e)},getDefaultColumnDef:function(){return{sortingFn:"auto"}},getDefaultOptions:function(e){return{onSortingChange:n("sorting",e),isMultiSortEvent:function(e){return e.shiftKey}}},createColumn:function(e,t){return{getAutoSortingFn:function(){var n=t.getFilteredRowModel().flatRows.slice(10),r=!1,o=!0,i=!1,a=void 0;try{for(var c,s=n[Symbol.iterator]();!(o=(c=s.next()).done);o=!0){var l=c.value,u=null==l?void 0:l.getValue(e.id);if("[object Date]"===Object.prototype.toString.call(u))return Z.datetime;if("string"==typeof u&&(r=!0,u.split(W).length>1))return Z.alphanumeric}}catch(f){i=!0,a=f}finally{try{o||null==s.return||s.return()}finally{if(i)throw a}}return r?Z.text:Z.basic},getAutoSortDir:function(){var n=t.getFilteredRowModel().flatRows[0];return"string"==typeof(null==n?void 0:n.getValue(e.id))?"asc":"desc"},getSortingFn:function(){var n,r=t.options.sortingFns;if(!e)throw new Error;return s(e.columnDef.sortingFn)?e.columnDef.sortingFn:"auto"===e.columnDef.sortingFn?e.getAutoSortingFn():null!=(n=null==r?void 0:r[e.columnDef.sortingFn])?n:Z[e.columnDef.sortingFn]},toggleSorting:function(n,r){var o=e.getNextSortingOrder();t.setSorting((function(a){var c,s,u,f=null==a?void 0:a.find((function(t){return t.id===e.id})),d=null==a?void 0:a.findIndex((function(t){return t.id===e.id})),h=null!=n,p=[];if("toggle"!==(u=e.getCanMultiSort()&&r?f?"toggle":"add":null!=a&&a.length&&d!==a.length-1?"replace":f?"toggle":"replace")||null!=(c=t.options.enableSortingRemoval)&&!c||h||r&&null!=(s=t.options.enableMultiRemove)&&!s||o||(u="remove"),"replace"===u)p=[{id:e.id,desc:h?n:"desc"===o}];else if("add"===u&&null!=a&&a.length){var z;(p=[].concat(i(a),[{id:e.id,desc:h?n:"desc"===o}])).splice(0,p.length-(null!=(z=t.options.maxMultiSortColCount)?z:Number.MAX_SAFE_INTEGER))}else"toggle"===u&&null!=a&&a.length?p=a.map((function(t){return t.id===e.id?l({},t,{desc:h?n:"desc"===o}):t})):"remove"===u&&null!=a&&a.length&&(p=a.filter((function(t){return t.id!==e.id})));return p}))},getNextSortingOrder:function(){var n,r,o=(null!=(n=null!=(r=e.columnDef.sortDescFirst)?r:t.options.sortDescFirst)?n:"desc"===e.getAutoSortDir())?"desc":"asc",i=e.getIsSorted();return i?i===o&&("desc"===i?"asc":"desc"):o},getCanSort:function(){var n,r;return(null==(n=e.columnDef.enableSorting)||n)&&(null==(r=t.options.enableSorting)||r)&&!!e.accessorFn},getCanMultiSort:function(){var n,r;return null!=(n=null!=(r=e.columnDef.enableMultiSort)?r:t.options.enableMultiSort)?n:!!e.accessorFn},getIsSorted:function(){var n,r=null==(n=t.getState().sorting)?void 0:n.find((function(t){return t.id===e.id}));return!!r&&(r.desc?"desc":"asc")},getSortIndex:function(){var n,r;return null!=(n=null==(r=t.getState().sorting)?void 0:r.findIndex((function(t){return t.id===e.id})))?n:-1},clearSorting:function(){t.setSorting((function(t){return null!=t&&t.length?t.filter((function(t){return t.id!==e.id})):[]}))},getToggleSortingHandler:function(){var n=e.getCanSort();return function(r){n&&(null==r.persist||r.persist(),null==e.toggleSorting||e.toggleSorting(void 0,!!e.getCanMultiSort()&&(null==t.options.isMultiSortEvent?void 0:t.options.isMultiSortEvent(r))))}}}},createInstance:function(e){return{setSorting:function(t){return null==e.options.onSortingChange?void 0:e.options.onSortingChange(t)},resetSorting:function(t){var n,r;e.setSorting(t?[]:null!=(n=null==(r=e.initialState)?void 0:r.sorting)?n:[])},getPreSortedRowModel:function(){return e.getGroupedRowModel()},getSortedRowModel:function(){return!e._getSortedRowModel&&e.options.getSortedRowModel&&(e._getSortedRowModel=e.options.getSortedRowModel(e)),e.options.manualSorting||!e._getSortedRowModel?e.getPreSortedRowModel():e._getSortedRowModel()}}}},K={getInitialState:function(e){return l({columnVisibility:{}},e)},getDefaultOptions:function(e){return{onColumnVisibilityChange:n("columnVisibility",e)}},createColumn:function(e,t){return{toggleVisibility:function(n){e.getCanHide()&&t.setColumnVisibility((function(t){return l({},t,a({},e.id,null!=n?n:!e.getIsVisible()))}))},getIsVisible:function(){var n,r;return null==(n=null==(r=t.getState().columnVisibility)?void 0:r[e.id])||n},getCanHide:function(){var n,r;return(null==(n=e.columnDef.enableHiding)||n)&&(null==(r=t.options.enableHiding)||r)},getToggleVisibilityHandler:function(){return function(t){null==e.toggleVisibility||e.toggleVisibility(t.target.checked)}}}},createRow:function(e,t){return{_getAllVisibleCells:f((function(){return[e.getAllCells(),t.getState().columnVisibility]}),(function(e){return e.filter((function(e){return e.column.getIsVisible()}))}),{key:"row._getAllVisibleCells",debug:function(){var e;return null!=(e=t.options.debugAll)?e:t.options.debugRows}}),getVisibleCells:f((function(){return[e.getLeftVisibleCells(),e.getCenterVisibleCells(),e.getRightVisibleCells()]}),(function(e,t,n){return[].concat(i(e),i(t),i(n))}),{key:!1,debug:function(){var e;return null!=(e=t.options.debugAll)?e:t.options.debugRows}})}},createInstance:function(e){var t=function(t,n){return f((function(){return[n(),n().filter((function(e){return e.getIsVisible()})).map((function(e){return e.id})).join("_")]}),(function(e){return e.filter((function(e){return null==e.getIsVisible?void 0:e.getIsVisible()}))}),{key:t,debug:function(){var t;return null!=(t=e.options.debugAll)?t:e.options.debugColumns}})};return{getVisibleFlatColumns:t("getVisibleFlatColumns",(function(){return e.getAllFlatColumns()})),getVisibleLeafColumns:t("getVisibleLeafColumns",(function(){return e.getAllLeafColumns()})),getLeftVisibleLeafColumns:t("getLeftVisibleLeafColumns",(function(){return e.getLeftLeafColumns()})),getRightVisibleLeafColumns:t("getRightVisibleLeafColumns",(function(){return e.getRightLeafColumns()})),getCenterVisibleLeafColumns:t("getCenterVisibleLeafColumns",(function(){return e.getCenterLeafColumns()})),setColumnVisibility:function(t){return null==e.options.onColumnVisibilityChange?void 0:e.options.onColumnVisibilityChange(t)},resetColumnVisibility:function(t){var n;e.setColumnVisibility(t?{}:null!=(n=e.initialState.columnVisibility)?n:{})},toggleAllColumnsVisible:function(t){var n;t=null!=(n=t)?n:!e.getIsAllColumnsVisible(),e.setColumnVisibility(e.getAllLeafColumns().reduce((function(e,n){return l({},e,a({},n.id,t||!(null!=n.getCanHide&&n.getCanHide())))}),{}))},getIsAllColumnsVisible:function(){return!e.getAllLeafColumns().some((function(e){return!(null!=e.getIsVisible&&e.getIsVisible())}))},getIsSomeColumnsVisible:function(){return e.getAllLeafColumns().some((function(e){return null==e.getIsVisible?void 0:e.getIsVisible()}))},getToggleAllColumnsVisibilityHandler:function(){return function(t){var n;e.toggleAllColumnsVisible(null==(n=t.target)?void 0:n.checked)}}}}},Q=[p,K,V,I,A,X,D,w,R,N,g],J=function(e,t,n,r,o,i){for(var a={id:t,index:r,original:n,depth:o,_valuesCache:{},getValue:function(t){if(a._valuesCache.hasOwnProperty(t))return a._valuesCache[t];var n=e.getColumn(t);return n.accessorFn?(a._valuesCache[t]=n.accessorFn(a.original,r),a._valuesCache[t]):void 0},subRows:null!=i?i:[],getLeafRows:function(){return u(a.subRows,(function(e){return e.subRows}))},getAllCells:f((function(){return[e.getAllLeafColumns()]}),(function(t){return t.map((function(t){return function(e,t,n,r){var o=function(){var t;return null!=(t=i.getValue())?t:e.options.renderFallbackValue},i={id:t.id+"_"+n.id,row:t,column:n,getValue:function(){return t.getValue(r)},renderCell:function(){return n.columnDef.cell?e._render(n.columnDef.cell,{instance:e,column:n,row:t,cell:i,getValue:o}):null}};return e._features.forEach((function(r){Object.assign(i,null==r.createCell?void 0:r.createCell(i,n,t,e))}),{}),i}(e,a,t,t.id)}))}),{key:!1,debug:function(){var t;return null!=(t=e.options.debugAll)?t:e.options.debugRows}}),_getAllCellsByColumnId:f((function(){return[a.getAllCells()]}),(function(e){return e.reduce((function(e,t){return e[t.column.id]=t,e}),{})}),{key:"row.getAllCellsByColumnId",debug:function(){var t;return null!=(t=e.options.debugAll)?t:e.options.debugRows}})},c=0;co[1]&&(o[1]=c)}return o}}),{key:!1,debug:function(){var t;return null!=(t=e.options.debugAll)?t:e.options.debugTable},onChange:function(){}})}},e.getFacetedRowModel=function(){return function(e,t){return f((function(){return[e.getPreFilteredRowModel(),e.getState().columnFilters,e.getState().globalFilter,e.getFilteredRowModel()]}),(function(n,r,o){if(!n.rows.length||(null==r||!r.length)&&!o)return n;var a=[].concat(i(r.map((function(e){return e.id})).filter((function(e){return e!==t}))),[o?"__global__":void 0]).filter(Boolean);return ee(n.rows,(function(e){for(var t=0;t"+z:z),g=s?u(p,(function(e){return e.subRows})):p,m=J(e,z,void 0,i,s);return Object.assign(m,{groupingColumnId:f,groupingValue:h,subRows:v,leafRows:g,getValue:function(t){var n;if(o.includes(t))return m._valuesCache.hasOwnProperty(t)?m._valuesCache[t]:(p[0]&&(m._valuesCache[t]=null!=(n=p[0].getValue(t))?n:void 0),m._valuesCache[t]);if(m._groupingValuesCache.hasOwnProperty(t))return m._groupingValuesCache[t];var r=e.getColumn(t).getAggregationFn();return r?(m._groupingValuesCache[t]=r(t,g,p),m._groupingValuesCache[t]):void 0}}),v.forEach((function(e){a.push(e),c[e.id]=e})),m}))}(n.rows,0,"");return s.forEach((function(e){a.push(e),c[e.id]=e})),{rows:s,flatRows:a,rowsById:c}}),{key:!1,debug:function(){var t;return null!=(t=e.options.debugAll)?t:e.options.debugTable},onChange:function(){e._queue((function(){e._autoResetExpanded(),e._autoResetPageIndex()}))}})}},e.getPaginationRowModel=function(e){return function(e){return f((function(){return[e.getState().pagination,e.getPrePaginationRowModel()]}),(function(t,n){if(!n.rows.length)return n;var r,o=t.pageSize,i=t.pageIndex,a=n.rows,c=n.flatRows,s=n.rowsById,l=o*i,u=l+o;return a=a.slice(l,u),(r=e.options.paginateExpandedRows?{rows:a,flatRows:c,rowsById:s}:te({rows:a,flatRows:c,rowsById:s})).flatRows=[],r.rows.forEach((function e(t){r.flatRows.push(t),t.subRows.length&&t.subRows.forEach(e)})),r}),{key:!1,debug:function(){var t;return null!=(t=e.options.debugAll)?t:e.options.debugTable}})}},e.getSortedRowModel=function(){return function(e){return f((function(){return[e.getState().sorting,e.getPreSortedRowModel()]}),(function(t,n){if(!n.rows.length||null==t||!t.length)return n;var r=e.getState().sorting,o=[],i=r.filter((function(t){return e.getColumn(t.id).getCanSort()})),a={};return i.forEach((function(t){var n=e.getColumn(t.id);a[t.id]={sortUndefined:n.columnDef.sortUndefined,invertSorting:n.columnDef.invertSorting,sortingFn:n.getSortingFn()}})),{rows:function e(t){var n=t.slice();return n.sort((function(e,t){for(var n=0;n=s.getDate()?s:(n.setFullYear(s.getFullYear(),s.getMonth(),c),n)}},,function(e,t,n){"use strict";function r(e){return"[object Function]"===Object.prototype.toString.call(e)}n.d(t,"a",(function(){return r}))},,function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return o})),n.d(t,"b",(function(){return i}));var r=function(){return(r=Object.assign||function(e){for(var t,n=1,r=arguments.length;nt?1:e>=t?0:NaN},o=function(e){var t;return 1===e.length&&(t=e,e=function(e,n){return r(t(e),n)}),{left:function(t,n,r,o){for(null==r&&(r=0),null==o&&(o=t.length);r>>1;e(t[i],n)<0?r=i+1:o=i}return r},right:function(t,n,r,o){for(null==r&&(r=0),null==o&&(o=t.length);r>>1;e(t[i],n)>0?o=i:r=i+1}return r}}};var i=o(r),a=i.right,c=i.left,s=a,l=function(e,t){null==t&&(t=u);for(var n=0,r=e.length-1,o=e[0],i=new Array(r<0?0:r);ne?1:t>=e?0:NaN},h=function(e){return null===e?NaN:+e},p=function(e,t){var n,r,o=e.length,i=0,a=-1,c=0,s=0;if(null==t)for(;++a1)return s/(i-1)},z=function(e,t){var n=p(e,t);return n?Math.sqrt(n):n},v=function(e,t){var n,r,o,i=e.length,a=-1;if(null==t){for(;++a=n)for(r=o=n;++an&&(r=n),o=n)for(r=o=n;++an&&(r=n),o0)return[e];if((r=t0)for(e=Math.ceil(e/a),t=Math.floor(t/a),i=new Array(o=Math.ceil(t-e+1));++c=0?(i>=x?10:i>=j?5:i>=M?2:1)*Math.pow(10,o):-Math.pow(10,-o)/(i>=x?10:i>=j?5:i>=M?2:1)}function q(e,t,n){var r=Math.abs(t-e)/Math.max(0,n),o=Math.pow(10,Math.floor(Math.log(r)/Math.LN10)),i=r/o;return i>=x?o*=10:i>=j?o*=5:i>=M&&(o*=2),tf;)d.pop(),--h;var p,z=new Array(h+1);for(o=0;o<=h;++o)(p=z[o]=[]).x0=o>0?d[o-1]:u,p.x1=o=1)return+n(e[r-1],r-1,e);var r,o=(r-1)*t,i=Math.floor(o),a=+n(e[i],i,e);return a+(+n(e[i+1],i+1,e)-a)*(o-i)}},T=function(e,t,n){return e=y.call(e,h).sort(r),Math.ceil((n-t)/(2*(E(e,.75)-E(e,.25))*Math.pow(e.length,-1/3)))},A=function(e,t,n){return Math.ceil((n-t)/(3.5*z(e)*Math.pow(e.length,-1/3)))},L=function(e,t){var n,r,o=e.length,i=-1;if(null==t){for(;++i=n)for(r=n;++ir&&(r=n)}else for(;++i=n)for(r=n;++ir&&(r=n);return r},H=function(e,t){var n,r=e.length,o=r,i=-1,a=0;if(null==t)for(;++i=0;)for(t=(r=e[o]).length;--t>=0;)n[--a]=r[t];return n},V=function(e,t){var n,r,o=e.length,i=-1;if(null==t){for(;++i=n)for(r=n;++in&&(r=n)}else for(;++i=n)for(r=n;++in&&(r=n);return r},R=function(e,t){for(var n=t.length,r=new Array(n);n--;)r[n]=e[t[n]];return r},I=function(e,t){if(n=e.length){var n,o,i=0,a=0,c=e[a];for(null==t&&(t=r);++i=0&&(n=e.slice(r+1),e=e.slice(0,r)),e&&!t.hasOwnProperty(e))throw new Error("unknown type: "+e);return{type:e,name:n}}))}function he(e,t){for(var n,r=0,o=e.length;r0)for(var n,r,o=new Array(n),i=0;i=0&&"xmlns"!==(t=e.slice(0,n))&&(e=e.slice(n+1)),ge.hasOwnProperty(t)?{space:ge[t],local:e}:e};function ye(e){return function(){var t=this.ownerDocument,n=this.namespaceURI;return n===ve&&t.documentElement.namespaceURI===ve?t.createElement(e):t.createElementNS(n,e)}}function be(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}var we=function(e){var t=me(e);return(t.local?be:ye)(t)},ke=0;function xe(){return new je}function je(){this._="@"+(++ke).toString(36)}je.prototype=xe.prototype={constructor:je,get:function(e){for(var t=this._;!(t in e);)if(!(e=e.parentNode))return;return e[t]},set:function(e,t){return e[this._]=t},remove:function(e){return this._ in e&&delete e[this._]},toString:function(){return this._}};var Me=function(e){return function(){return this.matches(e)}};if("undefined"!==typeof document){var Ce=document.documentElement;if(!Ce.matches){var _e=Ce.webkitMatchesSelector||Ce.msMatchesSelector||Ce.mozMatchesSelector||Ce.oMatchesSelector;Me=function(e){return function(){return _e.call(this,e)}}}}var qe=Me,Se={},Oe=null;"undefined"!==typeof document&&("onmouseenter"in document.documentElement||(Se={mouseenter:"mouseover",mouseleave:"mouseout"}));function Ee(e,t,n){return e=Te(e,t,n),function(t){var n=t.relatedTarget;n&&(n===this||8&n.compareDocumentPosition(this))||e.call(this,t)}}function Te(e,t,n){return function(r){var o=Oe;Oe=r;try{e.call(this,this.__data__,t,n)}finally{Oe=o}}}function Ae(e){return e.trim().split(/^|\s+/).map((function(e){var t="",n=e.indexOf(".");return n>=0&&(t=e.slice(n+1),e=e.slice(0,n)),{type:e,name:t}}))}function Le(e){return function(){var t=this.__on;if(t){for(var n,r=0,o=-1,i=t.length;rt?1:e>=t?0:NaN}function Xe(e){return function(){this.removeAttribute(e)}}function Ke(e){return function(){this.removeAttributeNS(e.space,e.local)}}function Qe(e,t){return function(){this.setAttribute(e,t)}}function Je(e,t){return function(){this.setAttributeNS(e.space,e.local,t)}}function et(e,t){return function(){var n=t.apply(this,arguments);null==n?this.removeAttribute(e):this.setAttribute(e,n)}}function tt(e,t){return function(){var n=t.apply(this,arguments);null==n?this.removeAttributeNS(e.space,e.local):this.setAttributeNS(e.space,e.local,n)}}var nt=function(e){return e.ownerDocument&&e.ownerDocument.defaultView||e.document&&e||e.defaultView};function rt(e){return function(){this.style.removeProperty(e)}}function ot(e,t,n){return function(){this.style.setProperty(e,t,n)}}function it(e,t,n){return function(){var r=t.apply(this,arguments);null==r?this.style.removeProperty(e):this.style.setProperty(e,r,n)}}function at(e,t){return e.style.getPropertyValue(t)||nt(e).getComputedStyle(e,null).getPropertyValue(t)}function ct(e){return function(){delete this[e]}}function st(e,t){return function(){this[e]=t}}function lt(e,t){return function(){var n=t.apply(this,arguments);null==n?delete this[e]:this[e]=n}}function ut(e){return e.trim().split(/^|\s+/)}function ft(e){return e.classList||new dt(e)}function dt(e){this._node=e,this._names=ut(e.getAttribute("class")||"")}function ht(e,t){for(var n=ft(e),r=-1,o=t.length;++r=0&&(this._names.splice(t,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(e){return this._names.indexOf(e)>=0}};function mt(){this.textContent=""}function yt(e){return function(){this.textContent=e}}function bt(e){return function(){var t=e.apply(this,arguments);this.textContent=null==t?"":t}}function wt(){this.innerHTML=""}function kt(e){return function(){this.innerHTML=e}}function xt(e){return function(){var t=e.apply(this,arguments);this.innerHTML=null==t?"":t}}function jt(){this.nextSibling&&this.parentNode.appendChild(this)}function Mt(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function Ct(){return null}function _t(){var e=this.parentNode;e&&e.removeChild(this)}function qt(e,t,n){var r=nt(e),o=r.CustomEvent;"function"===typeof o?o=new o(t,n):(o=r.document.createEvent("Event"),n?(o.initEvent(t,n.bubbles,n.cancelable),o.detail=n.detail):o.initEvent(t,!1,!1)),e.dispatchEvent(o)}function St(e,t){return function(){return qt(this,e,t)}}function Ot(e,t){return function(){return qt(this,e,t.apply(this,arguments))}}var Et=[null];function Tt(e,t){this._groups=e,this._parents=t}function At(){return new Tt([[document.documentElement]],Et)}Tt.prototype=At.prototype={constructor:Tt,select:function(e){"function"!==typeof e&&(e=Ne(e));for(var t=this._groups,n=t.length,r=new Array(n),o=0;o=w&&(w=b+1);!(y=g[w])&&++w=0;)(r=o[i])&&(a&&a!==r.nextSibling&&a.parentNode.insertBefore(r,a),a=r);return this},sort:function(e){function t(t,n){return t&&n?e(t.__data__,n.__data__):!t-!n}e||(e=Ze);for(var n=this._groups,r=n.length,o=new Array(r),i=0;i1?this.each((null==t?rt:"function"===typeof t?it:ot)(e,t,null==n?"":n)):at(this.node(),e)},property:function(e,t){return arguments.length>1?this.each((null==t?ct:"function"===typeof t?lt:st)(e,t)):this.node()[e]},classed:function(e,t){var n=ut(e+"");if(arguments.length<2){for(var r=ft(this.node()),o=-1,i=n.length;++of}s.mouse("drag")}function z(){Ht(Oe.view).on("mousemove.drag mouseup.drag",null),Ft(Oe.view,n),It(),s.mouse("end")}function v(){if(o.apply(this,arguments)){var e,t,n=Oe.changedTouches,r=i.apply(this,arguments),a=n.length;for(e=0;e>8&15|t>>4&240,t>>4&15|240&t,(15&t)<<4|15&t,1):(t=rn.exec(e))?hn(parseInt(t[1],16)):(t=on.exec(e))?new gn(t[1],t[2],t[3],1):(t=an.exec(e))?new gn(255*t[1]/100,255*t[2]/100,255*t[3]/100,1):(t=cn.exec(e))?pn(t[1],t[2],t[3],t[4]):(t=sn.exec(e))?pn(255*t[1]/100,255*t[2]/100,255*t[3]/100,t[4]):(t=ln.exec(e))?mn(t[1],t[2]/100,t[3]/100,1):(t=un.exec(e))?mn(t[1],t[2]/100,t[3]/100,t[4]):fn.hasOwnProperty(e)?hn(fn[e]):"transparent"===e?new gn(NaN,NaN,NaN,0):null}function hn(e){return new gn(e>>16&255,e>>8&255,255&e,1)}function pn(e,t,n,r){return r<=0&&(e=t=n=NaN),new gn(e,t,n,r)}function zn(e){return e instanceof Qt||(e=dn(e)),e?new gn((e=e.rgb()).r,e.g,e.b,e.opacity):new gn}function vn(e,t,n,r){return 1===arguments.length?zn(e):new gn(e,t,n,null==r?1:r)}function gn(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r}function mn(e,t,n,r){return r<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new bn(e,t,n,r)}function yn(e,t,n,r){return 1===arguments.length?function(e){if(e instanceof bn)return new bn(e.h,e.s,e.l,e.opacity);if(e instanceof Qt||(e=dn(e)),!e)return new bn;if(e instanceof bn)return e;var t=(e=e.rgb()).r/255,n=e.g/255,r=e.b/255,o=Math.min(t,n,r),i=Math.max(t,n,r),a=NaN,c=i-o,s=(i+o)/2;return c?(a=t===i?(n-r)/c+6*(n0&&s<1?0:a,new bn(a,c,s,e.opacity)}(e):new bn(e,t,n,null==r?1:r)}function bn(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}function wn(e,t,n){return 255*(e<60?t+(n-t)*e/60:e<180?n:e<240?t+(n-t)*(240-e)/60:t)}Xt(Qt,dn,{displayable:function(){return this.rgb().displayable()},toString:function(){return this.rgb()+""}}),Xt(gn,vn,Kt(Qt,{brighter:function(e){return e=null==e?1/.7:Math.pow(1/.7,e),new gn(this.r*e,this.g*e,this.b*e,this.opacity)},darker:function(e){return e=null==e?.7:Math.pow(.7,e),new gn(this.r*e,this.g*e,this.b*e,this.opacity)},rgb:function(){return this},displayable:function(){return 0<=this.r&&this.r<=255&&0<=this.g&&this.g<=255&&0<=this.b&&this.b<=255&&0<=this.opacity&&this.opacity<=1},toString:function(){var e=this.opacity;return(1===(e=isNaN(e)?1:Math.max(0,Math.min(1,e)))?"rgb(":"rgba(")+Math.max(0,Math.min(255,Math.round(this.r)||0))+", "+Math.max(0,Math.min(255,Math.round(this.g)||0))+", "+Math.max(0,Math.min(255,Math.round(this.b)||0))+(1===e?")":", "+e+")")}})),Xt(bn,yn,Kt(Qt,{brighter:function(e){return e=null==e?1/.7:Math.pow(1/.7,e),new bn(this.h,this.s,this.l*e,this.opacity)},darker:function(e){return e=null==e?.7:Math.pow(.7,e),new bn(this.h,this.s,this.l*e,this.opacity)},rgb:function(){var e=this.h%360+360*(this.h<0),t=isNaN(e)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*t,o=2*n-r;return new gn(wn(e>=240?e-240:e+120,o,r),wn(e,o,r),wn(e<120?e+240:e-120,o,r),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1}}));var kn=Math.PI/180,xn=180/Math.PI,jn=.95047,Mn=1,Cn=1.08883,_n=4/29,qn=6/29,Sn=3*qn*qn,On=qn*qn*qn;function En(e){if(e instanceof An)return new An(e.l,e.a,e.b,e.opacity);if(e instanceof Rn){var t=e.h*kn;return new An(e.l,Math.cos(t)*e.c,Math.sin(t)*e.c,e.opacity)}e instanceof gn||(e=zn(e));var n=Pn(e.r),r=Pn(e.g),o=Pn(e.b),i=Ln((.4124564*n+.3575761*r+.1804375*o)/jn),a=Ln((.2126729*n+.7151522*r+.072175*o)/Mn);return new An(116*a-16,500*(i-a),200*(a-Ln((.0193339*n+.119192*r+.9503041*o)/Cn)),e.opacity)}function Tn(e,t,n,r){return 1===arguments.length?En(e):new An(e,t,n,null==r?1:r)}function An(e,t,n,r){this.l=+e,this.a=+t,this.b=+n,this.opacity=+r}function Ln(e){return e>On?Math.pow(e,1/3):e/Sn+_n}function Hn(e){return e>qn?e*e*e:Sn*(e-_n)}function Dn(e){return 255*(e<=.0031308?12.92*e:1.055*Math.pow(e,1/2.4)-.055)}function Pn(e){return(e/=255)<=.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)}function Vn(e,t,n,r){return 1===arguments.length?function(e){if(e instanceof Rn)return new Rn(e.h,e.c,e.l,e.opacity);e instanceof An||(e=En(e));var t=Math.atan2(e.b,e.a)*xn;return new Rn(t<0?t+360:t,Math.sqrt(e.a*e.a+e.b*e.b),e.l,e.opacity)}(e):new Rn(e,t,n,null==r?1:r)}function Rn(e,t,n,r){this.h=+e,this.c=+t,this.l=+n,this.opacity=+r}Xt(An,Tn,Kt(Qt,{brighter:function(e){return new An(this.l+18*(null==e?1:e),this.a,this.b,this.opacity)},darker:function(e){return new An(this.l-18*(null==e?1:e),this.a,this.b,this.opacity)},rgb:function(){var e=(this.l+16)/116,t=isNaN(this.a)?e:e+this.a/500,n=isNaN(this.b)?e:e-this.b/200;return e=Mn*Hn(e),new gn(Dn(3.2404542*(t=jn*Hn(t))-1.5371385*e-.4985314*(n=Cn*Hn(n))),Dn(-.969266*t+1.8760108*e+.041556*n),Dn(.0556434*t-.2040259*e+1.0572252*n),this.opacity)}})),Xt(Rn,Vn,Kt(Qt,{brighter:function(e){return new Rn(this.h,this.c,this.l+18*(null==e?1:e),this.opacity)},darker:function(e){return new Rn(this.h,this.c,this.l-18*(null==e?1:e),this.opacity)},rgb:function(){return En(this).rgb()}}));var In=-.29227,Nn=-.90649,Fn=1.97294,Bn=Fn*Nn,Un=1.78277*Fn,Wn=1.78277*In- -.14861*Nn;function Gn(e,t,n,r){return 1===arguments.length?function(e){if(e instanceof Yn)return new Yn(e.h,e.s,e.l,e.opacity);e instanceof gn||(e=zn(e));var t=e.r/255,n=e.g/255,r=e.b/255,o=(Wn*r+Bn*t-Un*n)/(Wn+Bn-Un),i=r-o,a=(Fn*(n-o)-In*i)/Nn,c=Math.sqrt(a*a+i*i)/(Fn*o*(1-o)),s=c?Math.atan2(a,i)*xn-120:NaN;return new Yn(s<0?s+360:s,c,o,e.opacity)}(e):new Yn(e,t,n,null==r?1:r)}function Yn(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}function $n(e,t,n,r,o){var i=e*e,a=i*e;return((1-3*e+3*i-a)*t+(4-6*i+3*a)*n+(1+3*e+3*i-3*a)*r+a*o)/6}Xt(Yn,Gn,Kt(Qt,{brighter:function(e){return e=null==e?1/.7:Math.pow(1/.7,e),new Yn(this.h,this.s,this.l*e,this.opacity)},darker:function(e){return e=null==e?.7:Math.pow(.7,e),new Yn(this.h,this.s,this.l*e,this.opacity)},rgb:function(){var e=isNaN(this.h)?0:(this.h+120)*kn,t=+this.l,n=isNaN(this.s)?0:this.s*t*(1-t),r=Math.cos(e),o=Math.sin(e);return new gn(255*(t+n*(-.14861*r+1.78277*o)),255*(t+n*(In*r+Nn*o)),255*(t+n*(Fn*r)),this.opacity)}}));var Zn=function(e){var t=e.length-1;return function(n){var r=n<=0?n=0:n>=1?(n=1,t-1):Math.floor(n*t),o=e[r],i=e[r+1],a=r>0?e[r-1]:2*o-i,c=r180||n<-180?n-360*Math.round(n/360):n):Kn(isNaN(e)?t:e)}function er(e){return 1===(e=+e)?tr:function(t,n){return n-t?function(e,t,n){return e=Math.pow(e,n),t=Math.pow(t,n)-e,n=1/n,function(r){return Math.pow(e+r*t,n)}}(t,n,e):Kn(isNaN(t)?n:t)}}function tr(e,t){var n=t-e;return n?Qn(e,n):Kn(isNaN(e)?t:e)}var nr=function e(t){var n=er(t);function r(e,t){var r=n((e=vn(e)).r,(t=vn(t)).r),o=n(e.g,t.g),i=n(e.b,t.b),a=tr(e.opacity,t.opacity);return function(t){return e.r=r(t),e.g=o(t),e.b=i(t),e.opacity=a(t),e+""}}return r.gamma=e,r}(1);function rr(e){return function(t){var n,r,o=t.length,i=new Array(o),a=new Array(o),c=new Array(o);for(n=0;ni&&(o=t.slice(i,o),c[a]?c[a]+=o:c[++a]=o),(n=n[0])===(r=r[0])?c[a]?c[a]+=r:c[++a]=r:(c[++a]=null,s.push({i:a,x:sr(n,r)})),i=fr.lastIndex;return i180?t+=360:t-e>180&&(e+=360),i.push({i:n.push(o(n)+"rotate(",null,r)-2,x:sr(e,t)})):t&&n.push(o(n)+"rotate("+t+r)}(i.rotate,a.rotate,c,s),function(e,t,n,i){e!==t?i.push({i:n.push(o(n)+"skewX(",null,r)-2,x:sr(e,t)}):t&&n.push(o(n)+"skewX("+t+r)}(i.skewX,a.skewX,c,s),function(e,t,n,r,i,a){if(e!==n||t!==r){var c=i.push(o(i)+"scale(",null,",",null,")");a.push({i:c-4,x:sr(e,n)},{i:c-2,x:sr(t,r)})}else 1===n&&1===r||i.push(o(i)+"scale("+n+","+r+")")}(i.scaleX,i.scaleY,a.scaleX,a.scaleY,c,s),i=a=null,function(e){for(var t,n=-1,r=s.length;++n=0&&t._call.call(null,e),t=t._next;--Nr}function to(){Gr=(Wr=$r.now())+Yr,Nr=Fr=0;try{eo()}finally{Nr=0,function(){var e,t,n=Dr,r=1/0;for(;n;)n._call?(r>n._time&&(r=n._time),e=n,n=n._next):(t=n._next,n._next=null,n=e?e._next=t:Dr=t);Pr=e,ro(r)}(),Gr=0}}function no(){var e=$r.now(),t=e-Wr;t>Ur&&(Yr-=t,Wr=e)}function ro(e){Nr||(Fr&&(Fr=clearTimeout(Fr)),e-Gr>24?(e<1/0&&(Fr=setTimeout(to,e-$r.now()-Yr)),Br&&(Br=clearInterval(Br))):(Br||(Wr=$r.now(),Br=setInterval(no,Ur)),Nr=1,Zr(to)))}Qr.prototype=Jr.prototype={constructor:Qr,restart:function(e,t,n){if("function"!==typeof e)throw new TypeError("callback is not a function");n=(null==n?Xr():+n)+(null==t?0:+t),this._next||Pr===this||(Pr?Pr._next=this:Dr=this,Pr=this),this._call=e,this._time=n,ro()},stop:function(){this._call&&(this._call=null,this._time=1/0,ro())}};var oo=function(e,t,n){var r=new Qr;return t=null==t?0:+t,r.restart((function(n){r.stop(),e(n+t)}),t,n),r},io=function(e,t,n){var r=new Qr,o=t;return null==t?(r.restart(e,t,n),r):(t=+t,n=null==n?Xr():+n,r.restart((function i(a){a+=o,r.restart(i,o+=t,n),e(a)}),t,n),r)},ao=ze("start","end","interrupt"),co=[],so=0,lo=1,uo=2,fo=3,ho=4,po=5,zo=6,vo=function(e,t,n,r,o,i){var a=e.__transition;if(a){if(n in a)return}else e.__transition={};!function(e,t,n){var r,o=e.__transition;function i(s){var l,u,f,d;if(n.state!==lo)return c();for(l in o)if((d=o[l]).name===n.name){if(d.state===fo)return oo(i);d.state===ho?(d.state=zo,d.timer.stop(),d.on.call("interrupt",e,e.__data__,d.index,d.group),delete o[l]):+lso)throw new Error("too late; already scheduled");return n}function mo(e,t){var n=yo(e,t);if(n.state>uo)throw new Error("too late; already started");return n}function yo(e,t){var n=e.__transition;if(!n||!(n=n[t]))throw new Error("transition not found");return n}var bo=function(e,t){var n,r,o,i=e.__transition,a=!0;if(i){for(o in t=null==t?null:t+"",i)(n=i[o]).name===t?(r=n.state>uo&&n.state=0&&(e=e.slice(0,t)),!e||"start"===e}))}(t)?go:mo;return function(){var a=i(this,e),c=a.on;c!==r&&(o=(r=c).copy()).on(t,n),a.on=o}}var Ro=Lt.prototype.constructor;function Io(e,t,n){function r(){var r=this,o=t.apply(r,arguments);return o&&function(t){r.style.setProperty(e,o(t),n)}}return r._value=t,r}var No=0;function Fo(e,t,n,r){this._groups=e,this._parents=t,this._name=n,this._id=r}function Bo(e){return Lt().transition(e)}function Uo(){return++No}var Wo=Lt.prototype;function Go(e){return+e}function Yo(e){return e*e}function $o(e){return e*(2-e)}function Zo(e){return((e*=2)<=1?e*e:--e*(2-e)+1)/2}function Xo(e){return e*e*e}function Ko(e){return--e*e*e+1}function Qo(e){return((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2}Fo.prototype=Bo.prototype={constructor:Fo,select:function(e){var t=this._name,n=this._id;"function"!==typeof e&&(e=Ne(e));for(var r=this._groups,o=r.length,i=new Array(o),a=0;alo&&n.name===t)return new Fo([[e]],Hi,t,+r);return null},Pi=function(e){return function(){return e}},Vi=function(e,t,n){this.target=e,this.type=t,this.selection=n};function Ri(){Oe.stopImmediatePropagation()}var Ii=function(){Oe.preventDefault(),Oe.stopImmediatePropagation()},Ni={name:"drag"},Fi={name:"space"},Bi={name:"handle"},Ui={name:"center"},Wi={name:"x",handles:["e","w"].map(Ji),input:function(e,t){return e&&[[e[0],t[0][1]],[e[1],t[1][1]]]},output:function(e){return e&&[e[0][0],e[1][0]]}},Gi={name:"y",handles:["n","s"].map(Ji),input:function(e,t){return e&&[[t[0][0],e[0]],[t[1][0],e[1]]]},output:function(e){return e&&[e[0][1],e[1][1]]}},Yi={name:"xy",handles:["n","e","s","w","nw","ne","se","sw"].map(Ji),input:function(e){return e},output:function(e){return e}},$i={overlay:"crosshair",selection:"move",n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},Zi={e:"w",w:"e",nw:"ne",ne:"nw",se:"sw",sw:"se"},Xi={n:"s",s:"n",nw:"sw",ne:"se",se:"ne",sw:"nw"},Ki={overlay:1,selection:1,n:null,e:1,s:null,w:-1,nw:-1,ne:1,se:1,sw:-1},Qi={overlay:1,selection:1,n:-1,e:null,s:1,w:null,nw:-1,ne:-1,se:1,sw:1};function Ji(e){return{type:e}}function ea(){return!Oe.button}function ta(){var e=this.ownerSVGElement||this;return[[0,0],[e.width.baseVal.value,e.height.baseVal.value]]}function na(e){for(;!e.__brush;)if(!(e=e.parentNode))return;return e.__brush}function ra(e){return e[0][0]===e[1][0]||e[0][1]===e[1][1]}function oa(e){var t=e.__brush;return t?t.dim.output(t.selection):null}function ia(){return sa(Wi)}function aa(){return sa(Gi)}var ca=function(){return sa(Yi)};function sa(e){var t,n=ta,r=ea,o=ze(a,"start","brush","end"),i=6;function a(t){var n=t.property("__brush",f).selectAll(".overlay").data([Ji("overlay")]);n.enter().append("rect").attr("class","overlay").attr("pointer-events","all").attr("cursor",$i.overlay).merge(n).each((function(){var e=na(this).extent;Ht(this).attr("x",e[0][0]).attr("y",e[0][1]).attr("width",e[1][0]-e[0][0]).attr("height",e[1][1]-e[0][1])})),t.selectAll(".selection").data([Ji("selection")]).enter().append("rect").attr("class","selection").attr("cursor",$i.selection).attr("fill","#777").attr("fill-opacity",.3).attr("stroke","#fff").attr("shape-rendering","crispEdges");var r=t.selectAll(".handle").data(e.handles,(function(e){return e.type}));r.exit().remove(),r.enter().append("rect").attr("class",(function(e){return"handle handle--"+e.type})).attr("cursor",(function(e){return $i[e.type]})),t.each(c).attr("fill","none").attr("pointer-events","all").style("-webkit-tap-highlight-color","rgba(0,0,0,0)").on("mousedown.brush touchstart.brush",u)}function c(){var e=Ht(this),t=na(this).selection;t?(e.selectAll(".selection").style("display",null).attr("x",t[0][0]).attr("y",t[0][1]).attr("width",t[1][0]-t[0][0]).attr("height",t[1][1]-t[0][1]),e.selectAll(".handle").style("display",null).attr("x",(function(e){return"e"===e.type[e.type.length-1]?t[1][0]-i/2:t[0][0]-i/2})).attr("y",(function(e){return"s"===e.type[0]?t[1][1]-i/2:t[0][1]-i/2})).attr("width",(function(e){return"n"===e.type||"s"===e.type?t[1][0]-t[0][0]+i:i})).attr("height",(function(e){return"e"===e.type||"w"===e.type?t[1][1]-t[0][1]+i:i}))):e.selectAll(".selection,.handle").style("display","none").attr("x",null).attr("y",null).attr("width",null).attr("height",null)}function s(e,t){return e.__brush.emitter||new l(e,t)}function l(e,t){this.that=e,this.args=t,this.state=e.__brush,this.active=0}function u(){if(Oe.touches){if(Oe.changedTouches.length0&&(n=o-h),k<0?f=d-p:k>0&&(i=a-p),b=Fi,H.attr("cursor",$i.selection),V());break;default:return}Ii()}),!0).on("keyup.brush",(function(){switch(Oe.keyCode){case 16:O&&(v=g=O=!1,V());break;case 18:b===Ui&&(w<0?l=u:w>0&&(n=o),k<0?f=d:k>0&&(i=a),b=Bi,V());break;case 32:b===Fi&&(Oe.altKey?(w&&(l=u-h*w,n=o+h*w),k&&(f=d-p*k,i=a+p*k),b=Ui):(w<0?l=u:w>0&&(n=o),k<0?f=d:k>0&&(i=a),b=Bi),H.attr("cursor",$i[y]),V());break;default:return}Ii()}),!0).on("mousemove.brush",P,!0).on("mouseup.brush",R,!0);Nt(Oe.view)}Ri(),bo(m),c.call(m),A.start()}function P(){var e=Re(m);!O||v||g||(Math.abs(e[0]-T[0])>Math.abs(e[1]-T[1])?g=!0:v=!0),T=e,z=!0,Ii(),V()}function V(){var e;switch(h=T[0]-E[0],p=T[1]-E[1],b){case Fi:case Ni:w&&(h=Math.max(C-n,Math.min(q-l,h)),o=n+h,u=l+h),k&&(p=Math.max(_-i,Math.min(S-f,p)),a=i+p,d=f+p);break;case Bi:w<0?(h=Math.max(C-n,Math.min(q-n,h)),o=n+h,u=l):w>0&&(h=Math.max(C-l,Math.min(q-l,h)),o=n,u=l+h),k<0?(p=Math.max(_-i,Math.min(S-i,p)),a=i+p,d=f):k>0&&(p=Math.max(_-f,Math.min(S-f,p)),a=i,d=f+p);break;case Ui:w&&(o=Math.max(C,Math.min(q,n-h*w)),u=Math.max(C,Math.min(q,l+h*w))),k&&(a=Math.max(_,Math.min(S,i-p*k)),d=Math.max(_,Math.min(S,f+p*k)))}u1e-6)if(Math.abs(u*c-s*l)>1e-6&&o){var d=n-i,h=r-a,p=c*c+s*s,z=d*d+h*h,v=Math.sqrt(p),g=Math.sqrt(f),m=o*Math.tan((ya-Math.acos((p+f-z)/(2*v*g)))/2),y=m/g,b=m/v;Math.abs(y-1)>1e-6&&(this._+="L"+(e+y*l)+","+(t+y*u)),this._+="A"+o+","+o+",0,0,"+ +(u*d>l*h)+","+(this._x1=e+b*c)+","+(this._y1=t+b*s)}else this._+="L"+(this._x1=e)+","+(this._y1=t);else;},arc:function(e,t,n,r,o,i){e=+e,t=+t;var a=(n=+n)*Math.cos(r),c=n*Math.sin(r),s=e+a,l=t+c,u=1^i,f=i?r-o:o-r;if(n<0)throw new Error("negative radius: "+n);null===this._x1?this._+="M"+s+","+l:(Math.abs(this._x1-s)>1e-6||Math.abs(this._y1-l)>1e-6)&&(this._+="L"+s+","+l),n&&(f<0&&(f=f%ba+ba),f>wa?this._+="A"+n+","+n+",0,1,"+u+","+(e-a)+","+(t-c)+"A"+n+","+n+",0,1,"+u+","+(this._x1=s)+","+(this._y1=l):f>1e-6&&(this._+="A"+n+","+n+",0,"+ +(f>=ya)+","+u+","+(this._x1=e+n*Math.cos(o))+","+(this._y1=t+n*Math.sin(o))))},rect:function(e,t,n,r){this._+="M"+(this._x0=this._x1=+e)+","+(this._y0=this._y1=+t)+"h"+ +n+"v"+ +r+"h"+-n+"Z"},toString:function(){return this._}};var ja=xa;function Ma(e){return e.source}function Ca(e){return e.target}function _a(e){return e.radius}function qa(e){return e.startAngle}function Sa(e){return e.endAngle}var Oa=function(){var e=Ma,t=Ca,n=_a,r=qa,o=Sa,i=null;function a(){var a,c=ga.call(arguments),s=e.apply(this,c),l=t.apply(this,c),u=+n.apply(this,(c[0]=s,c)),f=r.apply(this,c)-da,d=o.apply(this,c)-da,h=u*la(f),p=u*ua(f),z=+n.apply(this,(c[0]=l,c)),v=r.apply(this,c)-da,g=o.apply(this,c)-da;if(i||(i=a=ja()),i.moveTo(h,p),i.arc(0,0,u,f,d),f===v&&d===g||(i.quadraticCurveTo(0,0,z*la(v),z*ua(v)),i.arc(0,0,z,v,g)),i.quadraticCurveTo(0,0,h,p),i.closePath(),a)return i=null,a+""||null}return a.radius=function(e){return arguments.length?(n="function"===typeof e?e:ma(+e),a):n},a.startAngle=function(e){return arguments.length?(r="function"===typeof e?e:ma(+e),a):r},a.endAngle=function(e){return arguments.length?(o="function"===typeof e?e:ma(+e),a):o},a.source=function(t){return arguments.length?(e=t,a):e},a.target=function(e){return arguments.length?(t=e,a):t},a.context=function(e){return arguments.length?(i=null==e?null:e,a):i},a};function Ea(){}function Ta(e,t){var n=new Ea;if(e instanceof Ea)e.each((function(e,t){n.set(t,e)}));else if(Array.isArray(e)){var r,o=-1,i=e.length;if(null==t)for(;++o=r.length)return null!=e&&n.sort(e),null!=t?t(n):n;for(var s,l,u,f=-1,d=n.length,h=r[o++],p=Aa(),z=a();++fr.length)return n;var a,c=o[i-1];return null!=t&&i>=r.length?a=n.entries():(a=[],n.each((function(t,n){a.push({key:n,values:e(t,i)})}))),null!=c?a.sort((function(e,t){return c(e.key,t.key)})):a}(i(e,0,Pa,Va),0)},key:function(e){return r.push(e),n},sortKeys:function(e){return o[r.length-1]=e,n},sortValues:function(t){return e=t,n},rollup:function(e){return t=e,n}}};function Ha(){return{}}function Da(e,t,n){e[t]=n}function Pa(){return Aa()}function Va(e,t,n){e.set(t,n)}function Ra(){}var Ia=Aa.prototype;function Na(e,t){var n=new Ra;if(e instanceof Ra)e.each((function(e){n.add(e)}));else if(e){var r=-1,o=e.length;if(null==t)for(;++r=i?s=!0:(r=e.charCodeAt(a++))===Za?l=!0:r===Xa&&(l=!0,e.charCodeAt(a)===Za&&++a),e.slice(o+1,t-1).replace(/""/g,'"')}for(;a=(i=(z+g)/2))?z=i:g=i,(u=n>=(a=(v+m)/2))?v=a:m=a,o=h,!(h=h[f=u<<1|l]))return o[f]=p,e;if(c=+e._x.call(null,h.data),s=+e._y.call(null,h.data),t===c&&n===s)return p.next=h,o?o[f]=p:e._root=p,e;do{o=o?o[f]=new Array(4):e._root=new Array(4),(l=t>=(i=(z+g)/2))?z=i:g=i,(u=n>=(a=(v+m)/2))?v=a:m=a}while((f=u<<1|l)===(d=(s>=a)<<1|c>=i));return o[d]=h,o[f]=p,e}var hc=function(e,t,n,r,o){this.node=e,this.x0=t,this.y0=n,this.x1=r,this.y1=o};function pc(e){return e[0]}function zc(e){return e[1]}function vc(e,t,n){var r=new gc(null==t?pc:t,null==n?zc:n,NaN,NaN,NaN,NaN);return null==e?r:r.addAll(e)}function gc(e,t,n,r,o,i){this._x=e,this._y=t,this._x0=n,this._y0=r,this._x1=o,this._y1=i,this._root=void 0}function mc(e){for(var t={data:e.data},n=t;e=e.next;)n=n.next={data:e.data};return t}var yc=vc.prototype=gc.prototype;function bc(e){return e.x+e.vx}function wc(e){return e.y+e.vy}yc.copy=function(){var e,t,n=new gc(this._x,this._y,this._x0,this._y0,this._x1,this._y1),r=this._root;if(!r)return n;if(!r.length)return n._root=mc(r),n;for(e=[{source:r,target:n._root=new Array(4)}];r=e.pop();)for(var o=0;o<4;++o)(t=r.source[o])&&(t.length?e.push({source:t,target:r.target[o]=new Array(4)}):r.target[o]=mc(t));return n},yc.add=function(e){var t=+this._x.call(null,e),n=+this._y.call(null,e);return dc(this.cover(t,n),t,n,e)},yc.addAll=function(e){var t,n,r,o,i=e.length,a=new Array(i),c=new Array(i),s=1/0,l=1/0,u=-1/0,f=-1/0;for(n=0;nu&&(u=r),of&&(f=o));for(ue||e>o||r>t||t>i))return this;var a,c,s=o-n,l=this._root;switch(c=(t<(r+i)/2)<<1|e<(n+o)/2){case 0:do{(a=new Array(4))[c]=l,l=a}while(i=r+(s*=2),e>(o=n+s)||t>i);break;case 1:do{(a=new Array(4))[c]=l,l=a}while(i=r+(s*=2),(n=o-s)>e||t>i);break;case 2:do{(a=new Array(4))[c]=l,l=a}while(r=i-(s*=2),e>(o=n+s)||r>t);break;case 3:do{(a=new Array(4))[c]=l,l=a}while(r=i-(s*=2),(n=o-s)>e||r>t)}this._root&&this._root.length&&(this._root=l)}return this._x0=n,this._y0=r,this._x1=o,this._y1=i,this},yc.data=function(){var e=[];return this.visit((function(t){if(!t.length)do{e.push(t.data)}while(t=t.next)})),e},yc.extent=function(e){return arguments.length?this.cover(+e[0][0],+e[0][1]).cover(+e[1][0],+e[1][1]):isNaN(this._x0)?void 0:[[this._x0,this._y0],[this._x1,this._y1]]},yc.find=function(e,t,n){var r,o,i,a,c,s,l,u=this._x0,f=this._y0,d=this._x1,h=this._y1,p=[],z=this._root;for(z&&p.push(new hc(z,u,f,d,h)),null==n?n=1/0:(u=e-n,f=t-n,d=e+n,h=t+n,n*=n);s=p.pop();)if(!(!(z=s.node)||(o=s.x0)>d||(i=s.y0)>h||(a=s.x1)=g)<<1|e>=v)&&(s=p[p.length-1],p[p.length-1]=p[p.length-1-l],p[p.length-1-l]=s)}else{var m=e-+this._x.call(null,z.data),y=t-+this._y.call(null,z.data),b=m*m+y*y;if(b=(c=(p+v)/2))?p=c:v=c,(u=a>=(s=(z+g)/2))?z=s:g=s,t=h,!(h=h[f=u<<1|l]))return this;if(!h.length)break;(t[f+1&3]||t[f+2&3]||t[f+3&3])&&(n=t,d=f)}for(;h.data!==e;)if(r=h,!(h=h.next))return this;return(o=h.next)&&delete h.next,r?(o?r.next=o:delete r.next,this):t?(o?t[f]=o:delete t[f],(h=t[0]||t[1]||t[2]||t[3])&&h===(t[3]||t[2]||t[1]||t[0])&&!h.length&&(n?n[d]=h:this._root=h),this):(this._root=o,this)},yc.removeAll=function(e){for(var t=0,n=e.length;ts+h||ol+h||ic.index){var p=s-a.x-a.vx,z=l-a.y-a.vy,v=p*p+z*z;ve.r&&(e.r=e[t].r)}function c(){if(t){var r,o,i=t.length;for(n=new Array(i),r=0;r1?(null==n?c.remove(e):c.set(e,h(n)),t):c.get(e)},find:function(t,n,r){var o,i,a,c,s,l=0,u=e.length;for(null==r?r=1/0:r*=r,l=0;l1?(l.on(e,n),t):l.on(e)}}},Tc=function(){var e,t,n,r,o=uc(-30),i=1,a=1/0,c=.81;function s(r){var o,i=e.length,a=vc(e,Cc,_c).visitAfter(u);for(n=r,o=0;o=a)){(e.data!==t||e.next)&&(0===u&&(h+=(u=fc())*u),0===f&&(h+=(f=fc())*f),h1?r[0]+r.slice(2):r,+e.slice(n+1)]},Pc=function(e){return(e=Dc(Math.abs(e)))?e[1]:NaN},Vc=function(e,t){var n=Dc(e,t);if(!n)return e+"";var r=n[0],o=n[1];return o<0?"0."+new Array(-o).join("0")+r:r.length>o+1?r.slice(0,o+1)+"."+r.slice(o+1):r+new Array(o-r.length+2).join("0")},Rc={"":function(e,t){e:for(var n,r=(e=e.toPrecision(t)).length,o=1,i=-1;o0&&(i=0)}return i>0?e.slice(0,i)+e.slice(n+1):e},"%":function(e,t){return(100*e).toFixed(t)},b:function(e){return Math.round(e).toString(2)},c:function(e){return e+""},d:function(e){return Math.round(e).toString(10)},e:function(e,t){return e.toExponential(t)},f:function(e,t){return e.toFixed(t)},g:function(e,t){return e.toPrecision(t)},o:function(e){return Math.round(e).toString(8)},p:function(e,t){return Vc(100*e,t)},r:Vc,s:function(e,t){var n=Dc(e,t);if(!n)return e+"";var r=n[0],o=n[1],i=o-(qc=3*Math.max(-8,Math.min(8,Math.floor(o/3))))+1,a=r.length;return i===a?r:i>a?r+new Array(i-a+1).join("0"):i>0?r.slice(0,i)+"."+r.slice(i):"0."+new Array(1-i).join("0")+Dc(e,Math.max(0,t+i-1))[0]},X:function(e){return Math.round(e).toString(16).toUpperCase()},x:function(e){return Math.round(e).toString(16)}},Ic=/^(?:(.)?([<>=^]))?([+\-\( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?([a-z%])?$/i;function Nc(e){return new Fc(e)}function Fc(e){if(!(t=Ic.exec(e)))throw new Error("invalid format: "+e);var t,n=t[1]||" ",r=t[2]||">",o=t[3]||"-",i=t[4]||"",a=!!t[5],c=t[6]&&+t[6],s=!!t[7],l=t[8]&&+t[8].slice(1),u=t[9]||"";"n"===u?(s=!0,u="g"):Rc[u]||(u=""),(a||"0"===n&&"="===r)&&(a=!0,n="0",r="="),this.fill=n,this.align=r,this.sign=o,this.symbol=i,this.zero=a,this.width=c,this.comma=s,this.precision=l,this.type=u}Nc.prototype=Fc.prototype,Fc.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(null==this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(null==this.precision?"":"."+Math.max(0,0|this.precision))+this.type};var Bc,Uc,Wc,Gc=function(e){return e},Yc=["y","z","a","f","p","n","\xb5","m","","k","M","G","T","P","E","Z","Y"],$c=function(e){var t,n,r=e.grouping&&e.thousands?(t=e.grouping,n=e.thousands,function(e,r){for(var o=e.length,i=[],a=0,c=t[0],s=0;o>0&&c>0&&(s+c+1>r&&(c=Math.max(1,r-s)),i.push(e.substring(o-=c,o+c)),!((s+=c+1)>r));)c=t[a=(a+1)%t.length];return i.reverse().join(n)}):Gc,o=e.currency,i=e.decimal,a=e.numerals?function(e){return function(t){return t.replace(/[0-9]/g,(function(t){return e[+t]}))}}(e.numerals):Gc,c=e.percent||"%";function s(e){var t=(e=Nc(e)).fill,n=e.align,s=e.sign,l=e.symbol,u=e.zero,f=e.width,d=e.comma,h=e.precision,p=e.type,z="$"===l?o[0]:"#"===l&&/[boxX]/.test(p)?"0"+p.toLowerCase():"",v="$"===l?o[1]:/[%p]/.test(p)?c:"",g=Rc[p],m=!p||/[defgprs%]/.test(p);function y(e){var o,c,l,y=z,b=v;if("c"===p)b=g(e)+b,e="";else{var w=(e=+e)<0;if(e=g(Math.abs(e),h),w&&0===+e&&(w=!1),y=(w?"("===s?s:"-":"-"===s||"("===s?"":s)+y,b=b+("s"===p?Yc[8+qc/3]:"")+(w&&"("===s?")":""),m)for(o=-1,c=e.length;++o(l=e.charCodeAt(o))||l>57){b=(46===l?i+e.slice(o+1):e.slice(o))+b,e=e.slice(0,o);break}}d&&!u&&(e=r(e,1/0));var k=y.length+e.length+b.length,x=k>1)+y+e+b+x.slice(k);break;default:e=x+y+e+b}return a(e)}return h=null==h?p?6:12:/[gprs]/.test(p)?Math.max(1,Math.min(21,h)):Math.max(0,Math.min(20,h)),y.toString=function(){return e+""},y}return{format:s,formatPrefix:function(e,t){var n=s(((e=Nc(e)).type="f",e)),r=3*Math.max(-8,Math.min(8,Math.floor(Pc(t)/3))),o=Math.pow(10,-r),i=Yc[8+r/3];return function(e){return n(o*e)+i}}}};function Zc(e){return Bc=$c(e),Uc=Bc.format,Wc=Bc.formatPrefix,Bc}Zc({decimal:".",thousands:",",grouping:[3],currency:["$",""]});var Xc=function(e){return Math.max(0,-Pc(Math.abs(e)))},Kc=function(e,t){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(Pc(t)/3)))-Pc(Math.abs(e)))},Qc=function(e,t){return e=Math.abs(e),t=Math.abs(t)-e,Math.max(0,Pc(t)-Pc(e))+1},Jc=function(){return new es};function es(){this.reset()}es.prototype={constructor:es,reset:function(){this.s=this.t=0},add:function(e){ns(ts,e,this.t),ns(this,ts.s,this.s),this.s?this.t+=ts.t:this.s=ts.t},valueOf:function(){return this.s}};var ts=new es;function ns(e,t,n){var r=e.s=t+n,o=r-t,i=r-o;e.t=t-i+(n-o)}var rs=1e-6,os=Math.PI,is=os/2,as=os/4,cs=2*os,ss=180/os,ls=os/180,us=Math.abs,fs=Math.atan,ds=Math.atan2,hs=Math.cos,ps=Math.ceil,zs=Math.exp,vs=(Math.floor,Math.log),gs=Math.pow,ms=Math.sin,ys=Math.sign||function(e){return e>0?1:e<0?-1:0},bs=Math.sqrt,ws=Math.tan;function ks(e){return e>1?0:e<-1?os:Math.acos(e)}function xs(e){return e>1?is:e<-1?-is:Math.asin(e)}function js(e){return(e=ms(e/2))*e}function Ms(){}function Cs(e,t){e&&qs.hasOwnProperty(e.type)&&qs[e.type](e,t)}var _s={Feature:function(e,t){Cs(e.geometry,t)},FeatureCollection:function(e,t){for(var n=e.features,r=-1,o=n.length;++r=0?1:-1,o=r*n,i=hs(t=(t*=ls)/2+as),a=ms(t),c=Hs*a,s=Ls*i+c*hs(o),l=c*r*ms(o);Ps.add(ds(l,s)),As=e,Ls=i,Hs=a}var Us=function(e){return Vs.reset(),Ds(e,Rs),2*Vs};function Ws(e){return[ds(e[1],e[0]),xs(e[2])]}function Gs(e){var t=e[0],n=e[1],r=hs(n);return[r*hs(t),r*ms(t),ms(n)]}function Ys(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function $s(e,t){return[e[1]*t[2]-e[2]*t[1],e[2]*t[0]-e[0]*t[2],e[0]*t[1]-e[1]*t[0]]}function Zs(e,t){e[0]+=t[0],e[1]+=t[1],e[2]+=t[2]}function Xs(e,t){return[e[0]*t,e[1]*t,e[2]*t]}function Ks(e){var t=bs(e[0]*e[0]+e[1]*e[1]+e[2]*e[2]);e[0]/=t,e[1]/=t,e[2]/=t}var Qs,Js,el,tl,nl,rl,ol,il,al,cl,sl=Jc(),ll={point:ul,lineStart:dl,lineEnd:hl,polygonStart:function(){ll.point=pl,ll.lineStart=zl,ll.lineEnd=vl,sl.reset(),Rs.polygonStart()},polygonEnd:function(){Rs.polygonEnd(),ll.point=ul,ll.lineStart=dl,ll.lineEnd=hl,Ps<0?(Qs=-(el=180),Js=-(tl=90)):sl>rs?tl=90:sl<-rs&&(Js=-90),cl[0]=Qs,cl[1]=el}};function ul(e,t){al.push(cl=[Qs=e,el=e]),ttl&&(tl=t)}function fl(e,t){var n=Gs([e*ls,t*ls]);if(il){var r=$s(il,n),o=$s([r[1],-r[0],0],r);Ks(o),o=Ws(o);var i,a=e-nl,c=a>0?1:-1,s=o[0]*ss*c,l=us(a)>180;l^(c*nltl&&(tl=i):l^(c*nl<(s=(s+360)%360-180)&&stl&&(tl=t)),l?egl(Qs,el)&&(el=e):gl(e,el)>gl(Qs,el)&&(Qs=e):el>=Qs?(eel&&(el=e)):e>nl?gl(Qs,e)>gl(Qs,el)&&(el=e):gl(e,el)>gl(Qs,el)&&(Qs=e)}else al.push(cl=[Qs=e,el=e]);ttl&&(tl=t),il=n,nl=e}function dl(){ll.point=fl}function hl(){cl[0]=Qs,cl[1]=el,ll.point=ul,il=null}function pl(e,t){if(il){var n=e-nl;sl.add(us(n)>180?n+(n>0?360:-360):n)}else rl=e,ol=t;Rs.point(e,t),fl(e,t)}function zl(){Rs.lineStart()}function vl(){pl(rl,ol),Rs.lineEnd(),us(sl)>rs&&(Qs=-(el=180)),cl[0]=Qs,cl[1]=el,il=null}function gl(e,t){return(t-=e)<0?t+360:t}function ml(e,t){return e[0]-t[0]}function yl(e,t){return e[0]<=e[1]?e[0]<=t&&t<=e[1]:tgl(r[0],r[1])&&(r[1]=o[1]),gl(o[0],r[1])>gl(r[0],r[1])&&(r[0]=o[0])):i.push(r=o);for(a=-1/0,t=0,r=i[n=i.length-1];t<=n;r=o,++t)o=i[t],(c=gl(r[1],o[0]))>a&&(a=c,Qs=o[0],el=r[1])}return al=cl=null,Qs===1/0||Js===1/0?[[NaN,NaN],[NaN,NaN]]:[[Qs,Js],[el,tl]]},Pl={sphere:Ms,point:Vl,lineStart:Il,lineEnd:Bl,polygonStart:function(){Pl.lineStart=Ul,Pl.lineEnd=Wl},polygonEnd:function(){Pl.lineStart=Il,Pl.lineEnd=Bl}};function Vl(e,t){e*=ls;var n=hs(t*=ls);Rl(n*hs(e),n*ms(e),ms(t))}function Rl(e,t,n){++bl,kl+=(e-kl)/bl,xl+=(t-xl)/bl,jl+=(n-jl)/bl}function Il(){Pl.point=Nl}function Nl(e,t){e*=ls;var n=hs(t*=ls);Al=n*hs(e),Ll=n*ms(e),Hl=ms(t),Pl.point=Fl,Rl(Al,Ll,Hl)}function Fl(e,t){e*=ls;var n=hs(t*=ls),r=n*hs(e),o=n*ms(e),i=ms(t),a=ds(bs((a=Ll*i-Hl*o)*a+(a=Hl*r-Al*i)*a+(a=Al*o-Ll*r)*a),Al*r+Ll*o+Hl*i);wl+=a,Ml+=a*(Al+(Al=r)),Cl+=a*(Ll+(Ll=o)),_l+=a*(Hl+(Hl=i)),Rl(Al,Ll,Hl)}function Bl(){Pl.point=Vl}function Ul(){Pl.point=Gl}function Wl(){Yl(El,Tl),Pl.point=Vl}function Gl(e,t){El=e,Tl=t,e*=ls,t*=ls,Pl.point=Yl;var n=hs(t);Al=n*hs(e),Ll=n*ms(e),Hl=ms(t),Rl(Al,Ll,Hl)}function Yl(e,t){e*=ls;var n=hs(t*=ls),r=n*hs(e),o=n*ms(e),i=ms(t),a=Ll*i-Hl*o,c=Hl*r-Al*i,s=Al*o-Ll*r,l=bs(a*a+c*c+s*s),u=xs(l),f=l&&-u/l;ql+=f*a,Sl+=f*c,Ol+=f*s,wl+=u,Ml+=u*(Al+(Al=r)),Cl+=u*(Ll+(Ll=o)),_l+=u*(Hl+(Hl=i)),Rl(Al,Ll,Hl)}var $l=function(e){bl=wl=kl=xl=jl=Ml=Cl=_l=ql=Sl=Ol=0,Ds(e,Pl);var t=ql,n=Sl,r=Ol,o=t*t+n*n+r*r;return o<1e-12&&(t=Ml,n=Cl,r=_l,wlos?e-cs:e<-os?e+cs:e,t]}function Ql(e,t,n){return(e%=cs)?t||n?Xl(eu(e),tu(t,n)):eu(e):t||n?tu(t,n):Kl}function Jl(e){return function(t,n){return[(t+=e)>os?t-cs:t<-os?t+cs:t,n]}}function eu(e){var t=Jl(e);return t.invert=Jl(-e),t}function tu(e,t){var n=hs(e),r=ms(e),o=hs(t),i=ms(t);function a(e,t){var a=hs(t),c=hs(e)*a,s=ms(e)*a,l=ms(t),u=l*n+c*r;return[ds(s*o-u*i,c*n-l*r),xs(u*o+s*i)]}return a.invert=function(e,t){var a=hs(t),c=hs(e)*a,s=ms(e)*a,l=ms(t),u=l*o-s*i;return[ds(s*o+l*i,c*n+u*r),xs(u*n-c*r)]},a}Kl.invert=Kl;var nu=function(e){function t(t){return(t=e(t[0]*ls,t[1]*ls))[0]*=ss,t[1]*=ss,t}return e=Ql(e[0]*ls,e[1]*ls,e.length>2?e[2]*ls:0),t.invert=function(t){return(t=e.invert(t[0]*ls,t[1]*ls))[0]*=ss,t[1]*=ss,t},t};function ru(e,t,n,r,o,i){if(n){var a=hs(t),c=ms(t),s=r*n;null==o?(o=t+r*cs,i=t-s/2):(o=ou(a,o),i=ou(a,i),(r>0?oi)&&(o+=r*cs));for(var l,u=o;r>0?u>i:u1&&t.push(t.pop().concat(t.shift()))},result:function(){var n=t;return t=[],e=null,n}}},cu=function(e,t){return us(e[0]-t[0])=0;--i)o.point((u=l[i])[0],u[1]);else r(d.x,d.p.x,-1,o);d=d.p}l=(d=d.o).z,h=!h}while(!d.v);o.lineEnd()}}};function uu(e){if(t=e.length){for(var t,n,r=0,o=e[0];++r=0?1:-1,j=x*k,M=j>os,C=p*b;if(fu.add(ds(C*x*ms(j),z*w+C*hs(j))),i+=M?k+x*cs:k,M^d>=n^m>=n){var _=$s(Gs(f),Gs(g));Ks(_);var q=$s(o,_);Ks(q);var S=(M^k>=0?-1:1)*xs(q[2]);(r>S||r===S&&(_[0]||_[1]))&&(a+=M^k>=0?1:-1)}}return(i<-rs||i0){for(f||(o.polygonStart(),f=!0),o.lineStart(),e=0;e1&&2&s&&d.push(d.pop().concat(d.shift())),a.push(d.filter(pu))}return d}};function pu(e){return e.length>1}function zu(e,t){return((e=e.x)[0]<0?e[1]-is-rs:is-e[1])-((t=t.x)[0]<0?t[1]-is-rs:is-t[1])}var vu=hu((function(){return!0}),(function(e){var t,n=NaN,r=NaN,o=NaN;return{lineStart:function(){e.lineStart(),t=1},point:function(i,a){var c=i>0?os:-os,s=us(i-n);us(s-os)0?is:-is),e.point(o,r),e.lineEnd(),e.lineStart(),e.point(c,r),e.point(i,r),t=0):o!==c&&s>=os&&(us(n-o)rs?fs((ms(t)*(i=hs(r))*ms(n)-ms(r)*(o=hs(t))*ms(e))/(o*i*a)):(t+r)/2}(n,r,i,a),e.point(o,r),e.lineEnd(),e.lineStart(),e.point(c,r),t=0),e.point(n=i,r=a),o=c},lineEnd:function(){e.lineEnd(),n=r=NaN},clean:function(){return 2-t}}}),(function(e,t,n,r){var o;if(null==e)o=n*is,r.point(-os,o),r.point(0,o),r.point(os,o),r.point(os,0),r.point(os,-o),r.point(0,-o),r.point(-os,-o),r.point(-os,0),r.point(-os,o);else if(us(e[0]-t[0])>rs){var i=e[0]0,o=us(t)>rs;function i(e,n){return hs(e)*hs(n)>t}function a(e,n,r){var o=[1,0,0],i=$s(Gs(e),Gs(n)),a=Ys(i,i),c=i[0],s=a-c*c;if(!s)return!r&&e;var l=t*a/s,u=-t*c/s,f=$s(o,i),d=Xs(o,l);Zs(d,Xs(i,u));var h=f,p=Ys(d,h),z=Ys(h,h),v=p*p-z*(Ys(d,d)-1);if(!(v<0)){var g=bs(v),m=Xs(h,(-p-g)/z);if(Zs(m,d),m=Ws(m),!r)return m;var y,b=e[0],w=n[0],k=e[1],x=n[1];w0^m[1]<(us(m[0]-b)os^(b<=m[0]&&m[0]<=w)){var C=Xs(h,(-p+g)/z);return Zs(C,d),[m,Ws(C)]}}}function c(t,n){var o=r?e:os-e,i=0;return t<-o?i|=1:t>o&&(i|=2),n<-o?i|=4:n>o&&(i|=8),i}return hu(i,(function(e){var t,n,s,l,u;return{lineStart:function(){l=s=!1,u=1},point:function(f,d){var h,p=[f,d],z=i(f,d),v=r?z?0:c(f,d):z?c(f+(f<0?os:-os),d):0;if(!t&&(l=s=z)&&e.lineStart(),z!==s&&(!(h=a(t,p))||cu(t,h)||cu(p,h))&&(p[0]+=rs,p[1]+=rs,z=i(p[0],p[1])),z!==s)u=0,z?(e.lineStart(),h=a(p,t),e.point(h[0],h[1])):(h=a(t,p),e.point(h[0],h[1]),e.lineEnd()),t=h;else if(o&&t&&r^z){var g;v&n||!(g=a(p,t,!0))||(u=0,r?(e.lineStart(),e.point(g[0][0],g[0][1]),e.point(g[1][0],g[1][1]),e.lineEnd()):(e.point(g[1][0],g[1][1]),e.lineEnd(),e.lineStart(),e.point(g[0][0],g[0][1])))}!z||t&&cu(t,p)||e.point(p[0],p[1]),t=p,s=z,n=v},lineEnd:function(){s&&e.lineEnd(),t=null},clean:function(){return u|(l&&s)<<1}}}),(function(t,r,o,i){ru(i,e,n,o,t,r)}),r?[0,-e]:[-os,e-os])},mu=function(e,t,n,r,o,i){var a,c=e[0],s=e[1],l=0,u=1,f=t[0]-c,d=t[1]-s;if(a=n-c,f||!(a>0)){if(a/=f,f<0){if(a0){if(a>u)return;a>l&&(l=a)}if(a=o-c,f||!(a<0)){if(a/=f,f<0){if(a>u)return;a>l&&(l=a)}else if(f>0){if(a0)){if(a/=d,d<0){if(a0){if(a>u)return;a>l&&(l=a)}if(a=i-s,d||!(a<0)){if(a/=d,d<0){if(a>u)return;a>l&&(l=a)}else if(d>0){if(a0&&(e[0]=c+l*f,e[1]=s+l*d),u<1&&(t[0]=c+u*f,t[1]=s+u*d),!0}}}}},yu=1e9,bu=-yu;function wu(e,t,n,r){function o(o,i){return e<=o&&o<=n&&t<=i&&i<=r}function i(o,i,c,l){var u=0,f=0;if(null==o||(u=a(o,c))!==(f=a(i,c))||s(o,i)<0^c>0)do{l.point(0===u||3===u?e:n,u>1?r:t)}while((u=(u+c+4)%4)!==f);else l.point(i[0],i[1])}function a(r,o){return us(r[0]-e)0?0:3:us(r[0]-n)0?2:1:us(r[1]-t)0?1:0:o>0?3:2}function c(e,t){return s(e.x,t.x)}function s(e,t){var n=a(e,1),r=a(t,1);return n!==r?n-r:0===n?t[1]-e[1]:1===n?e[0]-t[0]:2===n?e[1]-t[1]:t[0]-e[0]}return function(a){var s,l,u,f,d,h,p,z,v,g,m,y=a,b=au(),w={point:k,lineStart:function(){w.point=x,l&&l.push(u=[]);g=!0,v=!1,p=z=NaN},lineEnd:function(){s&&(x(f,d),h&&v&&b.rejoin(),s.push(b.result()));w.point=k,v&&y.lineEnd()},polygonStart:function(){y=b,s=[],l=[],m=!0},polygonEnd:function(){var t=function(){for(var t=0,n=0,o=l.length;nr&&(d-i)*(r-a)>(h-a)*(e-i)&&++t:h<=r&&(d-i)*(r-a)<(h-a)*(e-i)&&--t;return t}(),n=m&&t,o=(s=P(s)).length;(n||o)&&(a.polygonStart(),n&&(a.lineStart(),i(null,null,1,a),a.lineEnd()),o&&lu(s,c,t,i,a),a.polygonEnd());y=a,s=l=u=null}};function k(e,t){o(e,t)&&y.point(e,t)}function x(i,a){var c=o(i,a);if(l&&u.push([i,a]),g)f=i,d=a,h=c,g=!1,c&&(y.lineStart(),y.point(i,a));else if(c&&v)y.point(i,a);else{var s=[p=Math.max(bu,Math.min(yu,p)),z=Math.max(bu,Math.min(yu,z))],b=[i=Math.max(bu,Math.min(yu,i)),a=Math.max(bu,Math.min(yu,a))];mu(s,b,e,t,n,r)?(v||(y.lineStart(),y.point(s[0],s[1])),y.point(b[0],b[1]),c||y.lineEnd(),m=!1):c&&(y.lineStart(),y.point(i,a),m=!1)}p=i,z=a,v=c}return w}}var ku,xu,ju,Mu=function(){var e,t,n,r=0,o=0,i=960,a=500;return n={stream:function(n){return e&&t===n?e:e=wu(r,o,i,a)(t=n)},extent:function(c){return arguments.length?(r=+c[0][0],o=+c[0][1],i=+c[1][0],a=+c[1][1],e=t=null,n):[[r,o],[i,a]]}}},Cu=Jc(),_u={sphere:Ms,point:Ms,lineStart:function(){_u.point=Su,_u.lineEnd=qu},lineEnd:Ms,polygonStart:Ms,polygonEnd:Ms};function qu(){_u.point=_u.lineEnd=Ms}function Su(e,t){ku=e*=ls,xu=ms(t*=ls),ju=hs(t),_u.point=Ou}function Ou(e,t){e*=ls;var n=ms(t*=ls),r=hs(t),o=us(e-ku),i=hs(o),a=r*ms(o),c=ju*n-xu*r*i,s=xu*n+ju*r*i;Cu.add(ds(bs(a*a+c*c),s)),ku=e,xu=n,ju=r}var Eu=function(e){return Cu.reset(),Ds(e,_u),+Cu},Tu=[null,null],Au={type:"LineString",coordinates:Tu},Lu=function(e,t){return Tu[0]=e,Tu[1]=t,Eu(Au)},Hu={Feature:function(e,t){return Pu(e.geometry,t)},FeatureCollection:function(e,t){for(var n=e.features,r=-1,o=n.length;++rrs})).map(s)).concat(k(ps(i/h)*h,o,h).filter((function(e){return us(e%z)>rs})).map(l))}return g.lines=function(){return m().map((function(e){return{type:"LineString",coordinates:e}}))},g.outline=function(){return{type:"Polygon",coordinates:[u(r).concat(f(a).slice(1),u(n).reverse().slice(1),f(c).reverse().slice(1))]}},g.extent=function(e){return arguments.length?g.extentMajor(e).extentMinor(e):g.extentMinor()},g.extentMajor=function(e){return arguments.length?(r=+e[0][0],n=+e[1][0],c=+e[0][1],a=+e[1][1],r>n&&(e=r,r=n,n=e),c>a&&(e=c,c=a,a=e),g.precision(v)):[[r,c],[n,a]]},g.extentMinor=function(n){return arguments.length?(t=+n[0][0],e=+n[1][0],i=+n[0][1],o=+n[1][1],t>e&&(n=t,t=e,e=n),i>o&&(n=i,i=o,o=n),g.precision(v)):[[t,i],[e,o]]},g.step=function(e){return arguments.length?g.stepMajor(e).stepMinor(e):g.stepMinor()},g.stepMajor=function(e){return arguments.length?(p=+e[0],z=+e[1],g):[p,z]},g.stepMinor=function(e){return arguments.length?(d=+e[0],h=+e[1],g):[d,h]},g.precision=function(d){return arguments.length?(v=+d,s=Uu(i,o,90),l=Wu(t,e,v),u=Uu(c,a,90),f=Wu(r,n,v),g):v},g.extentMajor([[-180,-90+rs],[180,90-rs]]).extentMinor([[-180,-80-rs],[180,80+rs]])}function Yu(){return Gu()()}var $u,Zu,Xu,Ku,Qu=function(e,t){var n=e[0]*ls,r=e[1]*ls,o=t[0]*ls,i=t[1]*ls,a=hs(r),c=ms(r),s=hs(i),l=ms(i),u=a*hs(n),f=a*ms(n),d=s*hs(o),h=s*ms(o),p=2*xs(bs(js(i-r)+a*s*js(o-n))),z=ms(p),v=p?function(e){var t=ms(e*=p)/z,n=ms(p-e)/z,r=n*u+t*d,o=n*f+t*h,i=n*c+t*l;return[ds(o,r)*ss,ds(i,bs(r*r+o*o))*ss]}:function(){return[n*ss,r*ss]};return v.distance=p,v},Ju=function(e){return e},ef=Jc(),tf=Jc(),nf={point:Ms,lineStart:Ms,lineEnd:Ms,polygonStart:function(){nf.lineStart=rf,nf.lineEnd=cf},polygonEnd:function(){nf.lineStart=nf.lineEnd=nf.point=Ms,ef.add(us(tf)),tf.reset()},result:function(){var e=ef/2;return ef.reset(),e}};function rf(){nf.point=of}function of(e,t){nf.point=af,$u=Xu=e,Zu=Ku=t}function af(e,t){tf.add(Ku*e-Xu*t),Xu=e,Ku=t}function cf(){af($u,Zu)}var sf=nf,lf=1/0,uf=lf,ff=-lf,df=ff;var hf,pf,zf,vf,gf={point:function(e,t){eff&&(ff=e);tdf&&(df=t)},lineStart:Ms,lineEnd:Ms,polygonStart:Ms,polygonEnd:Ms,result:function(){var e=[[lf,uf],[ff,df]];return ff=df=-(uf=lf=1/0),e}},mf=0,yf=0,bf=0,wf=0,kf=0,xf=0,jf=0,Mf=0,Cf=0,_f={point:qf,lineStart:Sf,lineEnd:Tf,polygonStart:function(){_f.lineStart=Af,_f.lineEnd=Lf},polygonEnd:function(){_f.point=qf,_f.lineStart=Sf,_f.lineEnd=Tf},result:function(){var e=Cf?[jf/Cf,Mf/Cf]:xf?[wf/xf,kf/xf]:bf?[mf/bf,yf/bf]:[NaN,NaN];return mf=yf=bf=wf=kf=xf=jf=Mf=Cf=0,e}};function qf(e,t){mf+=e,yf+=t,++bf}function Sf(){_f.point=Of}function Of(e,t){_f.point=Ef,qf(zf=e,vf=t)}function Ef(e,t){var n=e-zf,r=t-vf,o=bs(n*n+r*r);wf+=o*(zf+e)/2,kf+=o*(vf+t)/2,xf+=o,qf(zf=e,vf=t)}function Tf(){_f.point=qf}function Af(){_f.point=Hf}function Lf(){Df(hf,pf)}function Hf(e,t){_f.point=Df,qf(hf=zf=e,pf=vf=t)}function Df(e,t){var n=e-zf,r=t-vf,o=bs(n*n+r*r);wf+=o*(zf+e)/2,kf+=o*(vf+t)/2,xf+=o,jf+=(o=vf*e-zf*t)*(zf+e),Mf+=o*(vf+t),Cf+=3*o,qf(zf=e,vf=t)}var Pf=_f;function Vf(e){this._context=e}Vf.prototype={_radius:4.5,pointRadius:function(e){return this._radius=e,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._context.closePath(),this._point=NaN},point:function(e,t){switch(this._point){case 0:this._context.moveTo(e,t),this._point=1;break;case 1:this._context.lineTo(e,t);break;default:this._context.moveTo(e+this._radius,t),this._context.arc(e,t,this._radius,0,cs)}},result:Ms};var Rf,If,Nf,Ff,Bf,Uf=Jc(),Wf={point:Ms,lineStart:function(){Wf.point=Gf},lineEnd:function(){Rf&&Yf(If,Nf),Wf.point=Ms},polygonStart:function(){Rf=!0},polygonEnd:function(){Rf=null},result:function(){var e=+Uf;return Uf.reset(),e}};function Gf(e,t){Wf.point=Yf,If=Ff=e,Nf=Bf=t}function Yf(e,t){Ff-=e,Bf-=t,Uf.add(bs(Ff*Ff+Bf*Bf)),Ff=e,Bf=t}var $f=Wf;function Zf(){this._string=[]}function Xf(e){return"m0,"+e+"a"+e+","+e+" 0 1,1 0,"+-2*e+"a"+e+","+e+" 0 1,1 0,"+2*e+"z"}Zf.prototype={_radius:4.5,_circle:Xf(4.5),pointRadius:function(e){return(e=+e)!==this._radius&&(this._radius=e,this._circle=null),this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._string.push("Z"),this._point=NaN},point:function(e,t){switch(this._point){case 0:this._string.push("M",e,",",t),this._point=1;break;case 1:this._string.push("L",e,",",t);break;default:null==this._circle&&(this._circle=Xf(this._radius)),this._string.push("M",e,",",t,this._circle)}},result:function(){if(this._string.length){var e=this._string.join("");return this._string=[],e}return null}};var Kf=function(e,t){var n,r,o=4.5;function i(e){return e&&("function"===typeof o&&r.pointRadius(+o.apply(this,arguments)),Ds(e,n(r))),r.result()}return i.area=function(e){return Ds(e,n(sf)),sf.result()},i.measure=function(e){return Ds(e,n($f)),$f.result()},i.bounds=function(e){return Ds(e,n(gf)),gf.result()},i.centroid=function(e){return Ds(e,n(Pf)),Pf.result()},i.projection=function(t){return arguments.length?(n=null==t?(e=null,Ju):(e=t).stream,i):e},i.context=function(e){return arguments.length?(r=null==e?(t=null,new Zf):new Vf(t=e),"function"!==typeof o&&r.pointRadius(o),i):t},i.pointRadius=function(e){return arguments.length?(o="function"===typeof e?e:(r.pointRadius(+e),+e),i):o},i.projection(e).context(t)},Qf=function(e){return{stream:Jf(e)}};function Jf(e){return function(t){var n=new ed;for(var r in e)n[r]=e[r];return n.stream=t,n}}function ed(){}function td(e,t,n){var r=e.clipExtent&&e.clipExtent();return e.scale(150).translate([0,0]),null!=r&&e.clipExtent(null),Ds(n,e.stream(gf)),t(gf.result()),null!=r&&e.clipExtent(r),e}function nd(e,t,n){return td(e,(function(n){var r=t[1][0]-t[0][0],o=t[1][1]-t[0][1],i=Math.min(r/(n[1][0]-n[0][0]),o/(n[1][1]-n[0][1])),a=+t[0][0]+(r-i*(n[1][0]+n[0][0]))/2,c=+t[0][1]+(o-i*(n[1][1]+n[0][1]))/2;e.scale(150*i).translate([a,c])}),n)}function rd(e,t,n){return nd(e,[[0,0],t],n)}function od(e,t,n){return td(e,(function(n){var r=+t,o=r/(n[1][0]-n[0][0]),i=(r-o*(n[1][0]+n[0][0]))/2,a=-o*n[0][1];e.scale(150*o).translate([i,a])}),n)}function id(e,t,n){return td(e,(function(n){var r=+t,o=r/(n[1][1]-n[0][1]),i=-o*n[0][0],a=(r-o*(n[1][1]+n[0][1]))/2;e.scale(150*o).translate([i,a])}),n)}ed.prototype={constructor:ed,point:function(e,t){this.stream.point(e,t)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}};var ad=16,cd=hs(30*ls),sd=function(e,t){return+t?function(e,t){function n(r,o,i,a,c,s,l,u,f,d,h,p,z,v){var g=l-r,m=u-o,y=g*g+m*m;if(y>4*t&&z--){var b=a+d,w=c+h,k=s+p,x=bs(b*b+w*w+k*k),j=xs(k/=x),M=us(us(k)-1)t||us((g*S+m*O)/y-.5)>.3||a*d+c*h+s*p2?e[2]%360*ls:0,q()):[v*ss,g*ss,m*ss]},M.precision=function(e){return arguments.length?(j=sd(_,x=e*e),S()):bs(x)},M.fitExtent=function(e,t){return nd(M,e,t)},M.fitSize=function(e,t){return rd(M,e,t)},M.fitWidth=function(e,t){return od(M,e,t)},M.fitHeight=function(e,t){return id(M,e,t)},function(){return t=e.apply(this,arguments),M.invert=t.invert&&C,q()}}function dd(e){var t=0,n=os/3,r=fd(e),o=r(t,n);return o.parallels=function(e){return arguments.length?r(t=e[0]*ls,n=e[1]*ls):[t*ss,n*ss]},o}function hd(e,t){var n=ms(e),r=(n+ms(t))/2;if(us(r)=.12&&o<.234&&r>=-.425&&r<-.214?c:o>=.166&&o<.234&&r>=-.214&&r<-.115?s:a).invert(e)},u.stream=function(n){return e&&t===n?e:e=function(e){var t=e.length;return{point:function(n,r){for(var o=-1;++o0?t<-is+rs&&(t=-is+rs):t>is-rs&&(t=is-rs);var n=o/gs(Cd(t),r);return[n*ms(r*e),o-n*hs(r*e)]}return i.invert=function(e,t){var n=o-t,i=ys(r)*bs(e*e+n*n);return[ds(e,us(n))/r*ys(n),2*fs(gs(o/i,1/r))-is]},i}var qd=function(){return dd(_d).scale(109.5).parallels([30,30])};function Sd(e,t){return[e,t]}Sd.invert=Sd;var Od=function(){return ud(Sd).scale(152.63)};function Ed(e,t){var n=hs(e),r=e===t?ms(e):(n-hs(t))/(t-e),o=n/r+e;if(us(r)rs&&--o>0);return[e/(.8707+(i=r*r)*(i*(i*i*i*(.003971-.001529*i)-.013791)-.131979)),r]};var Vd=function(){return ud(Pd).scale(175.295)};function Rd(e,t){return[hs(t)*ms(e),ms(t)]}Rd.invert=md(xs);var Id=function(){return ud(Rd).scale(249.5).clipAngle(90+rs)};function Nd(e,t){var n=hs(t),r=1+hs(e)*n;return[n*ms(e)/r,ms(t)/r]}Nd.invert=md((function(e){return 2*fs(e)}));var Fd=function(){return ud(Nd).scale(250).clipAngle(142)};function Bd(e,t){return[vs(ws((is+t)/2)),-e]}Bd.invert=function(e,t){return[-t,2*fs(zs(e))-is]};var Ud=function(){var e=Md(Bd),t=e.center,n=e.rotate;return e.center=function(e){return arguments.length?t([-e[1],e[0]]):[(e=t())[1],-e[0]]},e.rotate=function(e){return arguments.length?n([e[0],e[1],e.length>2?e[2]+90:90]):[(e=n())[0],e[1],e[2]-90]},n([0,0,90]).scale(159.155)};function Wd(e,t){return e.parent===t.parent?1:2}function Gd(e,t){return e+t.x}function Yd(e,t){return Math.max(e,t.y)}var $d=function(){var e=Wd,t=1,n=1,r=!1;function o(o){var i,a=0;o.eachAfter((function(t){var n=t.children;n?(t.x=function(e){return e.reduce(Gd,0)/e.length}(n),t.y=function(e){return 1+e.reduce(Yd,0)}(n)):(t.x=i?a+=e(t,i):0,t.y=0,i=t)}));var c=function(e){for(var t;t=e.children;)e=t[0];return e}(o),s=function(e){for(var t;t=e.children;)e=t[t.length-1];return e}(o),l=c.x-e(c,s)/2,u=s.x+e(s,c)/2;return o.eachAfter(r?function(e){e.x=(e.x-o.x)*t,e.y=(o.y-e.y)*n}:function(e){e.x=(e.x-l)/(u-l)*t,e.y=(1-(o.y?e.y/o.y:1))*n})}return o.separation=function(t){return arguments.length?(e=t,o):e},o.size=function(e){return arguments.length?(r=!1,t=+e[0],n=+e[1],o):r?null:[t,n]},o.nodeSize=function(e){return arguments.length?(r=!0,t=+e[0],n=+e[1],o):r?[t,n]:null},o};function Zd(e){var t=0,n=e.children,r=n&&n.length;if(r)for(;--r>=0;)t+=n[r].value;else t=1;e.value=t}function Xd(e,t){var n,r,o,i,a,c=new eh(e),s=+e.value&&(c.value=e.value),l=[c];for(null==t&&(t=Kd);n=l.pop();)if(s&&(n.value=+n.data.value),(o=t(n.data))&&(a=o.length))for(n.children=new Array(a),i=a-1;i>=0;--i)l.push(r=n.children[i]=new eh(o[i])),r.parent=n,r.depth=n.depth+1;return c.eachBefore(Jd)}function Kd(e){return e.children}function Qd(e){e.data=e.data.data}function Jd(e){var t=0;do{e.height=t}while((e=e.parent)&&e.height<++t)}function eh(e){this.data=e,this.depth=this.height=0,this.parent=null}eh.prototype=Xd.prototype={constructor:eh,count:function(){return this.eachAfter(Zd)},each:function(e){var t,n,r,o,i=this,a=[i];do{for(t=a.reverse(),a=[];i=t.pop();)if(e(i),n=i.children)for(r=0,o=n.length;r=0;--n)o.push(t[n]);return this},sum:function(e){return this.eachAfter((function(t){for(var n=+e(t.data)||0,r=t.children,o=r&&r.length;--o>=0;)n+=r[o].value;t.value=n}))},sort:function(e){return this.eachBefore((function(t){t.children&&t.children.sort(e)}))},path:function(e){for(var t=this,n=function(e,t){if(e===t)return e;var n=e.ancestors(),r=t.ancestors(),o=null;e=n.pop(),t=r.pop();for(;e===t;)o=e,e=n.pop(),t=r.pop();return o}(t,e),r=[t];t!==n;)t=t.parent,r.push(t);for(var o=r.length;e!==n;)r.splice(o,0,e),e=e.parent;return r},ancestors:function(){for(var e=this,t=[e];e=e.parent;)t.push(e);return t},descendants:function(){var e=[];return this.each((function(t){e.push(t)})),e},leaves:function(){var e=[];return this.eachBefore((function(t){t.children||e.push(t)})),e},links:function(){var e=this,t=[];return e.each((function(n){n!==e&&t.push({source:n.parent,target:n})})),t},copy:function(){return Xd(this).eachBefore(Qd)}};var th=Array.prototype.slice;var nh=function(e){for(var t,n,r=0,o=(e=function(e){for(var t,n,r=e.length;r;)n=Math.random()*r--|0,t=e[r],e[r]=e[n],e[n]=t;return e}(th.call(e))).length,i=[];r0&&n*n>r*r+o*o}function ah(e,t){for(var n=0;nn*n+r*r}function dh(e){var t=e._,n=e.next._,r=t.r+n.r,o=(t.x*n.r+n.x*t.r)/r,i=(t.y*n.r+n.y*t.r)/r;return o*o+i*i}function hh(e){this._=e,this.next=null,this.previous=null}function ph(e){if(!(o=e.length))return 0;var t,n,r,o,i,a,c,s,l,u,f;if((t=e[0]).x=0,t.y=0,!(o>1))return t.r;if(n=e[1],t.x=-n.r,n.x=t.r,n.y=0,!(o>2))return t.r+n.r;uh(n,t,r=e[2]),t=new hh(t),n=new hh(n),r=new hh(r),t.next=r.previous=n,n.next=t.previous=r,r.next=n.previous=t;e:for(c=3;c0)throw new Error("cycle");return i}return n.id=function(t){return arguments.length?(e=gh(t),n):e},n.parentId=function(e){return arguments.length?(t=gh(e),n):t},n};function Lh(e,t){return e.parent===t.parent?1:2}function Hh(e){var t=e.children;return t?t[0]:e.t}function Dh(e){var t=e.children;return t?t[t.length-1]:e.t}function Ph(e,t,n){var r=n/(t.i-e.i);t.c-=r,t.s+=n,e.c+=r,t.z+=n,t.m+=n}function Vh(e,t,n){return e.a.parent===t.parent?e.a:n}function Rh(e,t){this._=e,this.parent=null,this.children=null,this.A=null,this.a=this,this.z=0,this.m=0,this.c=0,this.s=0,this.t=null,this.i=t}Rh.prototype=Object.create(eh.prototype);var Ih=function(){var e=Lh,t=1,n=1,r=null;function o(o){var s=function(e){for(var t,n,r,o,i,a=new Rh(e,0),c=[a];t=c.pop();)if(r=t._.children)for(t.children=new Array(i=r.length),o=i-1;o>=0;--o)c.push(n=t.children[o]=new Rh(r[o],o)),n.parent=t;return(a.parent=new Rh(null,0)).children=[a],a}(o);if(s.eachAfter(i),s.parent.m=-s.z,s.eachBefore(a),r)o.eachBefore(c);else{var l=o,u=o,f=o;o.eachBefore((function(e){e.xu.x&&(u=e),e.depth>f.depth&&(f=e)}));var d=l===u?1:e(l,u)/2,h=d-l.x,p=t/(u.x+d+h),z=n/(f.depth||1);o.eachBefore((function(e){e.x=(e.x+h)*p,e.y=e.depth*z}))}return o}function i(t){var n=t.children,r=t.parent.children,o=t.i?r[t.i-1]:null;if(n){!function(e){for(var t,n=0,r=0,o=e.children,i=o.length;--i>=0;)(t=o[i]).z+=n,t.m+=n,n+=t.s+(r+=t.c)}(t);var i=(n[0].z+n[n.length-1].z)/2;o?(t.z=o.z+e(t._,o._),t.m=t.z-i):t.z=i}else o&&(t.z=o.z+e(t._,o._));t.parent.A=function(t,n,r){if(n){for(var o,i=t,a=t,c=n,s=i.parent.children[0],l=i.m,u=a.m,f=c.m,d=s.m;c=Dh(c),i=Hh(i),c&&i;)s=Hh(s),(a=Dh(a)).a=t,(o=c.z+f-i.z-l+e(c._,i._))>0&&(Ph(Vh(c,t,r),t,o),l+=o,u+=o),f+=c.m,l+=i.m,d+=s.m,u+=a.m;c&&!Dh(a)&&(a.t=c,a.m+=f-u),i&&!Hh(s)&&(s.t=i,s.m+=l-d,r=t)}return r}(t,o,t.parent.A||r[0])}function a(e){e._.x=e.z+e.parent.m,e.m+=e.parent.m}function c(e){e.x*=t,e.y=e.depth*n}return o.separation=function(t){return arguments.length?(e=t,o):e},o.size=function(e){return arguments.length?(r=!1,t=+e[0],n=+e[1],o):r?null:[t,n]},o.nodeSize=function(e){return arguments.length?(r=!0,t=+e[0],n=+e[1],o):r?[t,n]:null},o},Nh=function(e,t,n,r,o){for(var i,a=e.children,c=-1,s=a.length,l=e.value&&(o-n)/e.value;++cd&&(d=c),v=u*u*z,(h=Math.max(d/v,v/f))>p){u-=c;break}p=h}g.push(a={value:u,dice:s1?t:1)},n}(Fh),Wh=function(){var e=Uh,t=!1,n=1,r=1,o=[0],i=mh,a=mh,c=mh,s=mh,l=mh;function u(e){return e.x0=e.y0=0,e.x1=n,e.y1=r,e.eachBefore(f),o=[0],t&&e.eachBefore(Mh),e}function f(t){var n=o[t.depth],r=t.x0+n,u=t.y0+n,f=t.x1-n,d=t.y1-n;f=n-1){var u=c[t];return u.x0=o,u.y0=i,u.x1=a,void(u.y1=s)}var f=l[t],d=r/2+f,h=t+1,p=n-1;for(;h>>1;l[z]s-i){var m=(o*g+a*v)/r;e(t,h,v,o,i,m,s),e(h,n,g,m,i,a,s)}else{var y=(i*g+s*v)/r;e(t,h,v,o,i,a,y),e(h,n,g,o,y,a,s)}}(0,s,e.value,t,n,r,o)},Yh=function(e,t,n,r,o){(1&e.depth?Nh:Ch)(e,t,n,r,o)},$h=function e(t){function n(e,n,r,o,i){if((a=e._squarify)&&a.ratio===t)for(var a,c,s,l,u,f=-1,d=a.length,h=e.value;++f1?t:1)},n}(Fh),Zh=function(e){for(var t,n=-1,r=e.length,o=e[r-1],i=0;++n1&&Kh(e[n[r-2]],e[n[r-1]],e[o])<=0;)--r;n[r++]=o}return n.slice(0,r)}var ep=function(e){if((n=e.length)<3)return null;var t,n,r=new Array(n),o=new Array(n);for(t=0;t=0;--t)l.push(e[r[i[t]][2]]);for(t=+c;tc!==l>c&&a<(s-n)*(c-r)/(l-r)+n&&(u=!u),s=n,l=r;return u},np=function(e){for(var t,n,r=-1,o=e.length,i=e[o-1],a=i[0],c=i[1],s=0;++r=0;)if((n=e._tasks[r])&&(e._tasks[r]=null,n.abort))try{n.abort()}catch(t){}e._active=NaN,lp(e)}function lp(e){if(!e._active&&e._call){var t=e._data;e._data=void 0,e._call(e._error,t)}}function up(e){if(null==e)e=1/0;else if(!((e=+e)>=1))throw new Error("invalid concurrency");return new ip(e)}ip.prototype=up.prototype={constructor:ip,defer:function(e){if("function"!==typeof e)throw new Error("invalid callback");if(this._call)throw new Error("defer after await");if(null!=this._error)return this;var t=rp.call(arguments,1);return t.push(e),++this._waiting,this._tasks.push(t),ap(this),this},abort:function(){return null==this._error&&sp(this,new Error("abort")),this},await:function(e){if("function"!==typeof e)throw new Error("invalid callback");if(this._call)throw new Error("multiple await");return this._call=function(t,n){e.apply(null,[t].concat(n))},lp(this),this},awaitAll:function(e){if("function"!==typeof e)throw new Error("invalid callback");if(this._call)throw new Error("multiple await");return this._call=e,lp(this),this}};var fp=function(){return Math.random()},dp=function e(t){function n(e,n){return e=null==e?0:+e,n=null==n?1:+n,1===arguments.length?(n=e,e=0):n-=e,function(){return t()*n+e}}return n.source=e,n}(fp),hp=function e(t){function n(e,n){var r,o;return e=null==e?0:+e,n=null==n?1:+n,function(){var i;if(null!=r)i=r,r=null;else do{r=2*t()-1,i=2*t()-1,o=r*r+i*i}while(!o||o>1);return e+n*i*Math.sqrt(-2*Math.log(o)/o)}}return n.source=e,n}(fp),pp=function e(t){function n(){var e=hp.source(t).apply(this,arguments);return function(){return Math.exp(e())}}return n.source=e,n}(fp),zp=function e(t){function n(e){return function(){for(var n=0,r=0;r=200&&r<300||304===r){if(o)try{t=o.call(n,s)}catch(i){return void a.call("error",n,i)}else t=s;a.call("load",n,t)}else a.call("error",n,e)}if("undefined"===typeof XDomainRequest||"withCredentials"in s||!/^(http(s)?:)?\/\//.test(e)||(s=new XDomainRequest),"onload"in s?s.onload=s.onerror=s.ontimeout=d:s.onreadystatechange=function(e){s.readyState>3&&d(e)},s.onprogress=function(e){a.call("progress",n,e)},n={header:function(e,t){return e=(e+"").toLowerCase(),arguments.length<2?c.get(e):(null==t?c.remove(e):c.set(e,t+""),n)},mimeType:function(e){return arguments.length?(r=null==e?null:e+"",n):r},responseType:function(e){return arguments.length?(i=e,n):i},timeout:function(e){return arguments.length?(f=+e,n):f},user:function(e){return arguments.length<1?l:(l=null==e?null:e+"",n)},password:function(e){return arguments.length<1?u:(u=null==e?null:e+"",n)},response:function(e){return o=e,n},get:function(e,t){return n.send("GET",e,t)},post:function(e,t){return n.send("POST",e,t)},send:function(t,o,d){return s.open(t,e,!0,l,u),null==r||c.has("accept")||c.set("accept",r+",*/*"),s.setRequestHeader&&c.each((function(e,t){s.setRequestHeader(t,e)})),null!=r&&s.overrideMimeType&&s.overrideMimeType(r),null!=i&&(s.responseType=i),f>0&&(s.timeout=f),null==d&&"function"===typeof o&&(d=o,o=null),null!=d&&1===d.length&&(d=function(e){return function(t,n){e(null==t?n:null)}}(d)),null!=d&&n.on("error",d).on("load",(function(e){d(null,e)})),a.call("beforesend",n,s),s.send(null==o?null:o),n},abort:function(){return s.abort(),n},on:function(){var e=a.on.apply(a,arguments);return e===a?n:e}},null!=t){if("function"!==typeof t)throw new Error("invalid callback: "+t);return n.get(t)}return n};var yp=function(e,t){return function(n,r){var o=mp(n).mimeType(e).response(t);if(null!=r){if("function"!==typeof r)throw new Error("invalid callback: "+r);return o.get(r)}return o}},bp=yp("text/html",(function(e){return document.createRange().createContextualFragment(e.responseText)})),wp=yp("application/json",(function(e){return JSON.parse(e.responseText)})),kp=yp("text/plain",(function(e){return e.responseText})),xp=yp("application/xml",(function(e){var t=e.responseXML;if(!t)throw new Error("parse error");return t})),jp=function(e,t){return function(n,r,o){arguments.length<3&&(o=r,r=null);var i=mp(n).mimeType(e);return i.row=function(e){return arguments.length?i.response(Mp(t,r=e)):r},i.row(r),o?i.get(o):i}};function Mp(e,t){return function(n){return e(n.responseText,t)}}var Cp=jp("text/csv",ec),_p=jp("text/tab-separated-values",ic),qp=Array.prototype,Sp=qp.map,Op=qp.slice,Ep={name:"implicit"};function Tp(e){var t=Aa(),n=[],r=Ep;function o(o){var i=o+"",a=t.get(i);if(!a){if(r!==Ep)return r;t.set(i,a=n.push(o))}return e[(a-1)%e.length]}return e=null==e?[]:Op.call(e),o.domain=function(e){if(!arguments.length)return n.slice();n=[],t=Aa();for(var r,i,a=-1,c=e.length;++a2?Ip:Rp,r=o=null,u}function u(t){return(r||(r=n(i,a,s?function(e){return function(t,n){var r=e(t=+t,n=+n);return function(e){return e<=t?0:e>=n?1:r(e)}}}(e):e,c)))(+t)}return u.invert=function(e){return(o||(o=n(a,i,Vp,s?function(e){return function(t,n){var r=e(t=+t,n=+n);return function(e){return e<=0?t:e>=1?n:r(e)}}}(t):t)))(+e)},u.domain=function(e){return arguments.length?(i=Sp.call(e,Dp),l()):i.slice()},u.range=function(e){return arguments.length?(a=Op.call(e),l()):a.slice()},u.rangeRound=function(e){return a=Op.call(e),c=mr,l()},u.clamp=function(e){return arguments.length?(s=!!e,l()):s},u.interpolate=function(e){return arguments.length?(c=e,l()):c},l()}var Bp=function(e,t,n){var r,o=e[0],i=e[e.length-1],a=q(o,i,null==t?10:t);switch((n=Nc(null==n?",f":n)).type){case"s":var c=Math.max(Math.abs(o),Math.abs(i));return null!=n.precision||isNaN(r=Kc(a,c))||(n.precision=r),Wc(n,c);case"":case"e":case"g":case"p":case"r":null!=n.precision||isNaN(r=Qc(a,Math.max(Math.abs(o),Math.abs(i))))||(n.precision=r-("e"===n.type));break;case"f":case"%":null!=n.precision||isNaN(r=Xc(a))||(n.precision=r-2*("%"===n.type))}return Uc(n)};function Up(e){var t=e.domain;return e.ticks=function(e){var n=t();return C(n[0],n[n.length-1],null==e?10:e)},e.tickFormat=function(e,n){return Bp(t(),e,n)},e.nice=function(n){null==n&&(n=10);var r,o=t(),i=0,a=o.length-1,c=o[i],s=o[a];return s0?r=_(c=Math.floor(c/r)*r,s=Math.ceil(s/r)*r,n):r<0&&(r=_(c=Math.ceil(c*r)/r,s=Math.floor(s*r)/r,n)),r>0?(o[i]=Math.floor(c/r)*r,o[a]=Math.ceil(s/r)*r,t(o)):r<0&&(o[i]=Math.ceil(c*r)/r,o[a]=Math.floor(s*r)/r,t(o)),e},e}function Wp(){var e=Fp(Vp,sr);return e.copy=function(){return Np(e,Wp())},Up(e)}function Gp(){var e=[0,1];function t(e){return+e}return t.invert=t,t.domain=t.range=function(n){return arguments.length?(e=Sp.call(n,Dp),t):e.slice()},t.copy=function(){return Gp().domain(e)},Up(t)}var Yp=function(e,t){var n,r=0,o=(e=e.slice()).length-1,i=e[r],a=e[o];return a0){for(;ds)break;z.push(f)}}else for(;d=1;--u)if(!((f=l*u)s)break;z.push(f)}}else z=C(d,h,Math.min(h-d,p)).map(o);return i?z.reverse():z},e.tickFormat=function(t,i){if(null==i&&(i=10===n?".0e":","),"function"!==typeof i&&(i=Uc(i)),t===1/0)return i;null==t&&(t=10);var a=Math.max(1,n*t/e.ticks().length);return function(e){var t=e/o(Math.round(r(e)));return t*n0?n[o-1]:e[0],o=n?[r[n-1],t]:[r[a-1],r[a]]},i.copy=function(){return iz().domain([e,t]).range(o)},Up(i)}function az(){var e=[.5],t=[0,1],n=1;function r(r){if(r<=r)return t[s(e,r,0,n)]}return r.domain=function(o){return arguments.length?(e=Op.call(o),n=Math.min(e.length,t.length-1),r):e.slice()},r.range=function(o){return arguments.length?(t=Op.call(o),n=Math.min(e.length,t.length-1),r):t.slice()},r.invertExtent=function(n){var r=t.indexOf(n);return[e[r-1],e[r]]},r.copy=function(){return az().domain(e).range(t)},r}var cz=new Date,sz=new Date;function lz(e,t,n,r){function o(t){return e(t=new Date(+t)),t}return o.floor=o,o.ceil=function(n){return e(n=new Date(n-1)),t(n,1),e(n),n},o.round=function(e){var t=o(e),n=o.ceil(e);return e-t0))return c;do{c.push(a=new Date(+n)),t(n,i),e(n)}while(a=t)for(;e(t),!n(t);)t.setTime(t-1)}),(function(e,r){if(e>=e)if(r<0)for(;++r<=0;)for(;t(e,-1),!n(e););else for(;--r>=0;)for(;t(e,1),!n(e););}))},n&&(o.count=function(t,r){return cz.setTime(+t),sz.setTime(+r),e(cz),e(sz),Math.floor(n(cz,sz))},o.every=function(e){return e=Math.floor(e),isFinite(e)&&e>0?e>1?o.filter(r?function(t){return r(t)%e===0}:function(t){return o.count(0,t)%e===0}):o:null}),o}var uz=lz((function(){}),(function(e,t){e.setTime(+e+t)}),(function(e,t){return t-e}));uz.every=function(e){return e=Math.floor(e),isFinite(e)&&e>0?e>1?lz((function(t){t.setTime(Math.floor(t/e)*e)}),(function(t,n){t.setTime(+t+n*e)}),(function(t,n){return(n-t)/e})):uz:null};var fz=uz,dz=uz.range,hz=6e4,pz=6048e5,zz=lz((function(e){e.setTime(1e3*Math.floor(e/1e3))}),(function(e,t){e.setTime(+e+1e3*t)}),(function(e,t){return(t-e)/1e3}),(function(e){return e.getUTCSeconds()})),vz=zz,gz=zz.range,mz=lz((function(e){e.setTime(Math.floor(e/hz)*hz)}),(function(e,t){e.setTime(+e+t*hz)}),(function(e,t){return(t-e)/hz}),(function(e){return e.getMinutes()})),yz=mz,bz=mz.range,wz=lz((function(e){var t=e.getTimezoneOffset()*hz%36e5;t<0&&(t+=36e5),e.setTime(36e5*Math.floor((+e-t)/36e5)+t)}),(function(e,t){e.setTime(+e+36e5*t)}),(function(e,t){return(t-e)/36e5}),(function(e){return e.getHours()})),kz=wz,xz=wz.range,jz=lz((function(e){e.setHours(0,0,0,0)}),(function(e,t){e.setDate(e.getDate()+t)}),(function(e,t){return(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*hz)/864e5}),(function(e){return e.getDate()-1})),Mz=jz,Cz=jz.range;function _z(e){return lz((function(t){t.setDate(t.getDate()-(t.getDay()+7-e)%7),t.setHours(0,0,0,0)}),(function(e,t){e.setDate(e.getDate()+7*t)}),(function(e,t){return(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*hz)/pz}))}var qz=_z(0),Sz=_z(1),Oz=_z(2),Ez=_z(3),Tz=_z(4),Az=_z(5),Lz=_z(6),Hz=qz.range,Dz=Sz.range,Pz=Oz.range,Vz=Ez.range,Rz=Tz.range,Iz=Az.range,Nz=Lz.range,Fz=lz((function(e){e.setDate(1),e.setHours(0,0,0,0)}),(function(e,t){e.setMonth(e.getMonth()+t)}),(function(e,t){return t.getMonth()-e.getMonth()+12*(t.getFullYear()-e.getFullYear())}),(function(e){return e.getMonth()})),Bz=Fz,Uz=Fz.range,Wz=lz((function(e){e.setMonth(0,1),e.setHours(0,0,0,0)}),(function(e,t){e.setFullYear(e.getFullYear()+t)}),(function(e,t){return t.getFullYear()-e.getFullYear()}),(function(e){return e.getFullYear()}));Wz.every=function(e){return isFinite(e=Math.floor(e))&&e>0?lz((function(t){t.setFullYear(Math.floor(t.getFullYear()/e)*e),t.setMonth(0,1),t.setHours(0,0,0,0)}),(function(t,n){t.setFullYear(t.getFullYear()+n*e)})):null};var Gz=Wz,Yz=Wz.range,$z=lz((function(e){e.setUTCSeconds(0,0)}),(function(e,t){e.setTime(+e+t*hz)}),(function(e,t){return(t-e)/hz}),(function(e){return e.getUTCMinutes()})),Zz=$z,Xz=$z.range,Kz=lz((function(e){e.setUTCMinutes(0,0,0)}),(function(e,t){e.setTime(+e+36e5*t)}),(function(e,t){return(t-e)/36e5}),(function(e){return e.getUTCHours()})),Qz=Kz,Jz=Kz.range,ev=lz((function(e){e.setUTCHours(0,0,0,0)}),(function(e,t){e.setUTCDate(e.getUTCDate()+t)}),(function(e,t){return(t-e)/864e5}),(function(e){return e.getUTCDate()-1})),tv=ev,nv=ev.range;function rv(e){return lz((function(t){t.setUTCDate(t.getUTCDate()-(t.getUTCDay()+7-e)%7),t.setUTCHours(0,0,0,0)}),(function(e,t){e.setUTCDate(e.getUTCDate()+7*t)}),(function(e,t){return(t-e)/pz}))}var ov=rv(0),iv=rv(1),av=rv(2),cv=rv(3),sv=rv(4),lv=rv(5),uv=rv(6),fv=ov.range,dv=iv.range,hv=av.range,pv=cv.range,zv=sv.range,vv=lv.range,gv=uv.range,mv=lz((function(e){e.setUTCDate(1),e.setUTCHours(0,0,0,0)}),(function(e,t){e.setUTCMonth(e.getUTCMonth()+t)}),(function(e,t){return t.getUTCMonth()-e.getUTCMonth()+12*(t.getUTCFullYear()-e.getUTCFullYear())}),(function(e){return e.getUTCMonth()})),yv=mv,bv=mv.range,wv=lz((function(e){e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)}),(function(e,t){e.setUTCFullYear(e.getUTCFullYear()+t)}),(function(e,t){return t.getUTCFullYear()-e.getUTCFullYear()}),(function(e){return e.getUTCFullYear()}));wv.every=function(e){return isFinite(e=Math.floor(e))&&e>0?lz((function(t){t.setUTCFullYear(Math.floor(t.getUTCFullYear()/e)*e),t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)}),(function(t,n){t.setUTCFullYear(t.getUTCFullYear()+n*e)})):null};var kv=wv,xv=wv.range;function jv(e){if(0<=e.y&&e.y<100){var t=new Date(-1,e.m,e.d,e.H,e.M,e.S,e.L);return t.setFullYear(e.y),t}return new Date(e.y,e.m,e.d,e.H,e.M,e.S,e.L)}function Mv(e){if(0<=e.y&&e.y<100){var t=new Date(Date.UTC(-1,e.m,e.d,e.H,e.M,e.S,e.L));return t.setUTCFullYear(e.y),t}return new Date(Date.UTC(e.y,e.m,e.d,e.H,e.M,e.S,e.L))}function Cv(e){return{y:e,m:0,d:1,H:0,M:0,S:0,L:0}}function _v(e){var t=e.dateTime,n=e.date,r=e.time,o=e.periods,i=e.days,a=e.shortDays,c=e.months,s=e.shortMonths,l=Rv(o),u=Iv(o),f=Rv(i),d=Iv(i),h=Rv(a),p=Iv(a),z=Rv(c),v=Iv(c),g=Rv(s),m=Iv(s),y={a:function(e){return a[e.getDay()]},A:function(e){return i[e.getDay()]},b:function(e){return s[e.getMonth()]},B:function(e){return c[e.getMonth()]},c:null,d:ag,e:ag,f:fg,H:cg,I:sg,j:lg,L:ug,m:dg,M:hg,p:function(e){return o[+(e.getHours()>=12)]},Q:Ng,s:Fg,S:pg,u:zg,U:vg,V:gg,w:mg,W:yg,x:null,X:null,y:bg,Y:wg,Z:kg,"%":Ig},b={a:function(e){return a[e.getUTCDay()]},A:function(e){return i[e.getUTCDay()]},b:function(e){return s[e.getUTCMonth()]},B:function(e){return c[e.getUTCMonth()]},c:null,d:xg,e:xg,f:qg,H:jg,I:Mg,j:Cg,L:_g,m:Sg,M:Og,p:function(e){return o[+(e.getUTCHours()>=12)]},Q:Ng,s:Fg,S:Eg,u:Tg,U:Ag,V:Lg,w:Hg,W:Dg,x:null,X:null,y:Pg,Y:Vg,Z:Rg,"%":Ig},w={a:function(e,t,n){var r=h.exec(t.slice(n));return r?(e.w=p[r[0].toLowerCase()],n+r[0].length):-1},A:function(e,t,n){var r=f.exec(t.slice(n));return r?(e.w=d[r[0].toLowerCase()],n+r[0].length):-1},b:function(e,t,n){var r=g.exec(t.slice(n));return r?(e.m=m[r[0].toLowerCase()],n+r[0].length):-1},B:function(e,t,n){var r=z.exec(t.slice(n));return r?(e.m=v[r[0].toLowerCase()],n+r[0].length):-1},c:function(e,n,r){return j(e,t,n,r)},d:Xv,e:Xv,f:ng,H:Qv,I:Qv,j:Kv,L:tg,m:Zv,M:Jv,p:function(e,t,n){var r=l.exec(t.slice(n));return r?(e.p=u[r[0].toLowerCase()],n+r[0].length):-1},Q:og,s:ig,S:eg,u:Fv,U:Bv,V:Uv,w:Nv,W:Wv,x:function(e,t,r){return j(e,n,t,r)},X:function(e,t,n){return j(e,r,t,n)},y:Yv,Y:Gv,Z:$v,"%":rg};function k(e,t){return function(n){var r,o,i,a=[],c=-1,s=0,l=e.length;for(n instanceof Date||(n=new Date(+n));++c53)return null;"w"in i||(i.w=1),"Z"in i?(o=(r=Mv(Cv(i.y))).getUTCDay(),r=o>4||0===o?iv.ceil(r):iv(r),r=tv.offset(r,7*(i.V-1)),i.y=r.getUTCFullYear(),i.m=r.getUTCMonth(),i.d=r.getUTCDate()+(i.w+6)%7):(o=(r=t(Cv(i.y))).getDay(),r=o>4||0===o?Sz.ceil(r):Sz(r),r=Mz.offset(r,7*(i.V-1)),i.y=r.getFullYear(),i.m=r.getMonth(),i.d=r.getDate()+(i.w+6)%7)}else("W"in i||"U"in i)&&("w"in i||(i.w="u"in i?i.u%7:"W"in i?1:0),o="Z"in i?Mv(Cv(i.y)).getUTCDay():t(Cv(i.y)).getDay(),i.m=0,i.d="W"in i?(i.w+6)%7+7*i.W-(o+5)%7:i.w+7*i.U-(o+6)%7);return"Z"in i?(i.H+=i.Z/100|0,i.M+=i.Z%100,Mv(i)):t(i)}}function j(e,t,n,r){for(var o,i,a=0,c=t.length,s=n.length;a=s)return-1;if(37===(o=t.charCodeAt(a++))){if(o=t.charAt(a++),!(i=w[o in Av?t.charAt(a++):o])||(r=i(e,n,r))<0)return-1}else if(o!=n.charCodeAt(r++))return-1}return r}return(y.x=k(n,y),y.X=k(r,y),y.c=k(t,y),b.x=k(n,b),b.X=k(r,b),b.c=k(t,b),{format:function(e){var t=k(e+="",y);return t.toString=function(){return e},t},parse:function(e){var t=x(e+="",jv);return t.toString=function(){return e},t},utcFormat:function(e){var t=k(e+="",b);return t.toString=function(){return e},t},utcParse:function(e){var t=x(e,Mv);return t.toString=function(){return e},t}})}var qv,Sv,Ov,Ev,Tv,Av={"-":"",_:" ",0:"0"},Lv=/^\s*\d+/,Hv=/^%/,Dv=/[\\^$*+?|[\]().{}]/g;function Pv(e,t,n){var r=e<0?"-":"",o=(r?-e:e)+"",i=o.length;return r+(i68?1900:2e3),n+r[0].length):-1}function $v(e,t,n){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(t.slice(n,n+6));return r?(e.Z=r[1]?0:-(r[2]+(r[3]||"00")),n+r[0].length):-1}function Zv(e,t,n){var r=Lv.exec(t.slice(n,n+2));return r?(e.m=r[0]-1,n+r[0].length):-1}function Xv(e,t,n){var r=Lv.exec(t.slice(n,n+2));return r?(e.d=+r[0],n+r[0].length):-1}function Kv(e,t,n){var r=Lv.exec(t.slice(n,n+3));return r?(e.m=0,e.d=+r[0],n+r[0].length):-1}function Qv(e,t,n){var r=Lv.exec(t.slice(n,n+2));return r?(e.H=+r[0],n+r[0].length):-1}function Jv(e,t,n){var r=Lv.exec(t.slice(n,n+2));return r?(e.M=+r[0],n+r[0].length):-1}function eg(e,t,n){var r=Lv.exec(t.slice(n,n+2));return r?(e.S=+r[0],n+r[0].length):-1}function tg(e,t,n){var r=Lv.exec(t.slice(n,n+3));return r?(e.L=+r[0],n+r[0].length):-1}function ng(e,t,n){var r=Lv.exec(t.slice(n,n+6));return r?(e.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function rg(e,t,n){var r=Hv.exec(t.slice(n,n+1));return r?n+r[0].length:-1}function og(e,t,n){var r=Lv.exec(t.slice(n));return r?(e.Q=+r[0],n+r[0].length):-1}function ig(e,t,n){var r=Lv.exec(t.slice(n));return r?(e.Q=1e3*+r[0],n+r[0].length):-1}function ag(e,t){return Pv(e.getDate(),t,2)}function cg(e,t){return Pv(e.getHours(),t,2)}function sg(e,t){return Pv(e.getHours()%12||12,t,2)}function lg(e,t){return Pv(1+Mz.count(Gz(e),e),t,3)}function ug(e,t){return Pv(e.getMilliseconds(),t,3)}function fg(e,t){return ug(e,t)+"000"}function dg(e,t){return Pv(e.getMonth()+1,t,2)}function hg(e,t){return Pv(e.getMinutes(),t,2)}function pg(e,t){return Pv(e.getSeconds(),t,2)}function zg(e){var t=e.getDay();return 0===t?7:t}function vg(e,t){return Pv(qz.count(Gz(e),e),t,2)}function gg(e,t){var n=e.getDay();return e=n>=4||0===n?Tz(e):Tz.ceil(e),Pv(Tz.count(Gz(e),e)+(4===Gz(e).getDay()),t,2)}function mg(e){return e.getDay()}function yg(e,t){return Pv(Sz.count(Gz(e),e),t,2)}function bg(e,t){return Pv(e.getFullYear()%100,t,2)}function wg(e,t){return Pv(e.getFullYear()%1e4,t,4)}function kg(e){var t=e.getTimezoneOffset();return(t>0?"-":(t*=-1,"+"))+Pv(t/60|0,"0",2)+Pv(t%60,"0",2)}function xg(e,t){return Pv(e.getUTCDate(),t,2)}function jg(e,t){return Pv(e.getUTCHours(),t,2)}function Mg(e,t){return Pv(e.getUTCHours()%12||12,t,2)}function Cg(e,t){return Pv(1+tv.count(kv(e),e),t,3)}function _g(e,t){return Pv(e.getUTCMilliseconds(),t,3)}function qg(e,t){return _g(e,t)+"000"}function Sg(e,t){return Pv(e.getUTCMonth()+1,t,2)}function Og(e,t){return Pv(e.getUTCMinutes(),t,2)}function Eg(e,t){return Pv(e.getUTCSeconds(),t,2)}function Tg(e){var t=e.getUTCDay();return 0===t?7:t}function Ag(e,t){return Pv(ov.count(kv(e),e),t,2)}function Lg(e,t){var n=e.getUTCDay();return e=n>=4||0===n?sv(e):sv.ceil(e),Pv(sv.count(kv(e),e)+(4===kv(e).getUTCDay()),t,2)}function Hg(e){return e.getUTCDay()}function Dg(e,t){return Pv(iv.count(kv(e),e),t,2)}function Pg(e,t){return Pv(e.getUTCFullYear()%100,t,2)}function Vg(e,t){return Pv(e.getUTCFullYear()%1e4,t,4)}function Rg(){return"+0000"}function Ig(){return"%"}function Ng(e){return+e}function Fg(e){return Math.floor(+e/1e3)}function Bg(e){return qv=_v(e),Sv=qv.format,Ov=qv.parse,Ev=qv.utcFormat,Tv=qv.utcParse,qv}Bg({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});var Ug=Date.prototype.toISOString?function(e){return e.toISOString()}:Ev("%Y-%m-%dT%H:%M:%S.%LZ");var Wg=+new Date("2000-01-01T00:00:00.000Z")?function(e){var t=new Date(e);return isNaN(t)?null:t}:Tv("%Y-%m-%dT%H:%M:%S.%LZ"),Gg=1e3,Yg=60*Gg,$g=60*Yg,Zg=24*$g,Xg=7*Zg,Kg=30*Zg,Qg=365*Zg;function Jg(e){return new Date(e)}function em(e){return e instanceof Date?+e:+new Date(+e)}function tm(e,t,n,r,i,a,c,s,l){var u=Fp(Vp,sr),f=u.invert,d=u.domain,h=l(".%L"),p=l(":%S"),z=l("%I:%M"),v=l("%I %p"),g=l("%a %d"),m=l("%b %d"),y=l("%B"),b=l("%Y"),w=[[c,1,Gg],[c,5,5*Gg],[c,15,15*Gg],[c,30,30*Gg],[a,1,Yg],[a,5,5*Yg],[a,15,15*Yg],[a,30,30*Yg],[i,1,$g],[i,3,3*$g],[i,6,6*$g],[i,12,12*$g],[r,1,Zg],[r,2,2*Zg],[n,1,Xg],[t,1,Kg],[t,3,3*Kg],[e,1,Qg]];function k(o){return(c(o)1)&&(e-=Math.floor(e));var t=Math.abs(e-.5);return dm.h=360*e-100,dm.s=1.5-1.5*t,dm.l=.8-.9*t,dm+""};function pm(e){var t=e.length;return function(n){return e[Math.max(0,Math.min(t-1,Math.floor(n*t)))]}}var zm=pm(om("44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725")),vm=pm(om("00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf")),gm=pm(om("00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4")),mm=pm(om("0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921"));function ym(e){var t=0,n=1,r=!1;function o(o){var i=(o-t)/(n-t);return e(r?Math.max(0,Math.min(1,i)):i)}return o.domain=function(e){return arguments.length?(t=+e[0],n=+e[1],o):[t,n]},o.clamp=function(e){return arguments.length?(r=!!e,o):r},o.interpolator=function(t){return arguments.length?(e=t,o):e},o.copy=function(){return ym(e).domain([t,n]).clamp(r)},Up(o)}var bm=function(e){return function(){return e}},wm=Math.abs,km=Math.atan2,xm=Math.cos,jm=Math.max,Mm=Math.min,Cm=Math.sin,_m=Math.sqrt,qm=1e-12,Sm=Math.PI,Om=Sm/2,Em=2*Sm;function Tm(e){return e>=1?Om:e<=-1?-Om:Math.asin(e)}function Am(e){return e.innerRadius}function Lm(e){return e.outerRadius}function Hm(e){return e.startAngle}function Dm(e){return e.endAngle}function Pm(e){return e&&e.padAngle}function Vm(e,t,n,r,o,i,a){var c=e-n,s=t-r,l=(a?i:-i)/_m(c*c+s*s),u=l*s,f=-l*c,d=e+u,h=t+f,p=n+u,z=r+f,v=(d+p)/2,g=(h+z)/2,m=p-d,y=z-h,b=m*m+y*y,w=o-i,k=d*z-p*h,x=(y<0?-1:1)*_m(jm(0,w*w*b-k*k)),j=(k*y-m*x)/b,M=(-k*m-y*x)/b,C=(k*y+m*x)/b,_=(-k*m+y*x)/b,q=j-v,S=M-g,O=C-v,E=_-g;return q*q+S*S>O*O+E*E&&(j=C,M=_),{cx:j,cy:M,x01:-u,y01:-f,x11:j*(o/w-1),y11:M*(o/w-1)}}var Rm=function(){var e=Am,t=Lm,n=bm(0),r=null,o=Hm,i=Dm,a=Pm,c=null;function s(){var s,l,u,f=+e.apply(this,arguments),d=+t.apply(this,arguments),h=o.apply(this,arguments)-Om,p=i.apply(this,arguments)-Om,z=wm(p-h),v=p>h;if(c||(c=s=ja()),dqm)if(z>Em-qm)c.moveTo(d*xm(h),d*Cm(h)),c.arc(0,0,d,h,p,!v),f>qm&&(c.moveTo(f*xm(p),f*Cm(p)),c.arc(0,0,f,p,h,v));else{var g,m,y=h,b=p,w=h,k=p,x=z,j=z,M=a.apply(this,arguments)/2,C=M>qm&&(r?+r.apply(this,arguments):_m(f*f+d*d)),_=Mm(wm(d-f)/2,+n.apply(this,arguments)),q=_,S=_;if(C>qm){var O=Tm(C/f*Cm(M)),E=Tm(C/d*Cm(M));(x-=2*O)>qm?(w+=O*=v?1:-1,k-=O):(x=0,w=k=(h+p)/2),(j-=2*E)>qm?(y+=E*=v?1:-1,b-=E):(j=0,y=b=(h+p)/2)}var T=d*xm(y),A=d*Cm(y),L=f*xm(k),H=f*Cm(k);if(_>qm){var D=d*xm(b),P=d*Cm(b),V=f*xm(w),R=f*Cm(w);if(zqm?function(e,t,n,r,o,i,a,c){var s=n-e,l=r-t,u=a-o,f=c-i,d=(u*(t-i)-f*(e-o))/(f*s-u*l);return[e+d*s,t+d*l]}(T,A,V,R,D,P,L,H):[L,H],N=T-I[0],F=A-I[1],B=D-I[0],U=P-I[1],W=1/Cm(((u=(N*B+F*U)/(_m(N*N+F*F)*_m(B*B+U*U)))>1?0:u<-1?Sm:Math.acos(u))/2),G=_m(I[0]*I[0]+I[1]*I[1]);q=Mm(_,(f-G)/(W-1)),S=Mm(_,(d-G)/(W+1))}}j>qm?S>qm?(g=Vm(V,R,T,A,d,S,v),m=Vm(D,P,L,H,d,S,v),c.moveTo(g.cx+g.x01,g.cy+g.y01),S<_?c.arc(g.cx,g.cy,S,km(g.y01,g.x01),km(m.y01,m.x01),!v):(c.arc(g.cx,g.cy,S,km(g.y01,g.x01),km(g.y11,g.x11),!v),c.arc(0,0,d,km(g.cy+g.y11,g.cx+g.x11),km(m.cy+m.y11,m.cx+m.x11),!v),c.arc(m.cx,m.cy,S,km(m.y11,m.x11),km(m.y01,m.x01),!v))):(c.moveTo(T,A),c.arc(0,0,d,y,b,!v)):c.moveTo(T,A),f>qm&&x>qm?q>qm?(g=Vm(L,H,D,P,f,-q,v),m=Vm(T,A,V,R,f,-q,v),c.lineTo(g.cx+g.x01,g.cy+g.y01),q<_?c.arc(g.cx,g.cy,q,km(g.y01,g.x01),km(m.y01,m.x01),!v):(c.arc(g.cx,g.cy,q,km(g.y01,g.x01),km(g.y11,g.x11),!v),c.arc(0,0,f,km(g.cy+g.y11,g.cx+g.x11),km(m.cy+m.y11,m.cx+m.x11),v),c.arc(m.cx,m.cy,q,km(m.y11,m.x11),km(m.y01,m.x01),!v))):c.arc(0,0,f,k,w,v):c.lineTo(L,H)}else c.moveTo(0,0);if(c.closePath(),s)return c=null,s+""||null}return s.centroid=function(){var n=(+e.apply(this,arguments)+ +t.apply(this,arguments))/2,r=(+o.apply(this,arguments)+ +i.apply(this,arguments))/2-Sm/2;return[xm(r)*n,Cm(r)*n]},s.innerRadius=function(t){return arguments.length?(e="function"===typeof t?t:bm(+t),s):e},s.outerRadius=function(e){return arguments.length?(t="function"===typeof e?e:bm(+e),s):t},s.cornerRadius=function(e){return arguments.length?(n="function"===typeof e?e:bm(+e),s):n},s.padRadius=function(e){return arguments.length?(r=null==e?null:"function"===typeof e?e:bm(+e),s):r},s.startAngle=function(e){return arguments.length?(o="function"===typeof e?e:bm(+e),s):o},s.endAngle=function(e){return arguments.length?(i="function"===typeof e?e:bm(+e),s):i},s.padAngle=function(e){return arguments.length?(a="function"===typeof e?e:bm(+e),s):a},s.context=function(e){return arguments.length?(c=null==e?null:e,s):c},s};function Im(e){this._context=e}Im.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:this._context.lineTo(e,t)}}};var Nm=function(e){return new Im(e)};function Fm(e){return e[0]}function Bm(e){return e[1]}var Um=function(){var e=Fm,t=Bm,n=bm(!0),r=null,o=Nm,i=null;function a(a){var c,s,l,u=a.length,f=!1;for(null==r&&(i=o(l=ja())),c=0;c<=u;++c)!(c=u;--f)c.point(v[f],g[f]);c.lineEnd(),c.areaEnd()}z&&(v[l]=+e(d,l,s),g[l]=+n(d,l,s),c.point(t?+t(d,l,s):v[l],r?+r(d,l,s):g[l]))}if(h)return c=null,h+""||null}function l(){return Um().defined(o).curve(a).context(i)}return s.x=function(n){return arguments.length?(e="function"===typeof n?n:bm(+n),t=null,s):e},s.x0=function(t){return arguments.length?(e="function"===typeof t?t:bm(+t),s):e},s.x1=function(e){return arguments.length?(t=null==e?null:"function"===typeof e?e:bm(+e),s):t},s.y=function(e){return arguments.length?(n="function"===typeof e?e:bm(+e),r=null,s):n},s.y0=function(e){return arguments.length?(n="function"===typeof e?e:bm(+e),s):n},s.y1=function(e){return arguments.length?(r=null==e?null:"function"===typeof e?e:bm(+e),s):r},s.lineX0=s.lineY0=function(){return l().x(e).y(n)},s.lineY1=function(){return l().x(e).y(r)},s.lineX1=function(){return l().x(t).y(n)},s.defined=function(e){return arguments.length?(o="function"===typeof e?e:bm(!!e),s):o},s.curve=function(e){return arguments.length?(a=e,null!=i&&(c=a(i)),s):a},s.context=function(e){return arguments.length?(null==e?i=c=null:c=a(i=e),s):i},s},Gm=function(e,t){return te?1:t>=e?0:NaN},Ym=function(e){return e},$m=function(){var e=Ym,t=Gm,n=null,r=bm(0),o=bm(Em),i=bm(0);function a(a){var c,s,l,u,f,d=a.length,h=0,p=new Array(d),z=new Array(d),v=+r.apply(this,arguments),g=Math.min(Em,Math.max(-Em,o.apply(this,arguments)-v)),m=Math.min(Math.abs(g)/d,i.apply(this,arguments)),y=m*(g<0?-1:1);for(c=0;c0&&(h+=f);for(null!=t?p.sort((function(e,n){return t(z[e],z[n])})):null!=n&&p.sort((function(e,t){return n(a[e],a[t])})),c=0,l=h?(g-d*y)/h:0;c0?f*l:0)+y,z[s]={data:a[s],index:c,value:f,startAngle:v,endAngle:u,padAngle:m};return z}return a.value=function(t){return arguments.length?(e="function"===typeof t?t:bm(+t),a):e},a.sortValues=function(e){return arguments.length?(t=e,n=null,a):t},a.sort=function(e){return arguments.length?(n=e,t=null,a):n},a.startAngle=function(e){return arguments.length?(r="function"===typeof e?e:bm(+e),a):r},a.endAngle=function(e){return arguments.length?(o="function"===typeof e?e:bm(+e),a):o},a.padAngle=function(e){return arguments.length?(i="function"===typeof e?e:bm(+e),a):i},a},Zm=Km(Nm);function Xm(e){this._curve=e}function Km(e){function t(t){return new Xm(e(t))}return t._curve=e,t}function Qm(e){var t=e.curve;return e.angle=e.x,delete e.x,e.radius=e.y,delete e.y,e.curve=function(e){return arguments.length?t(Km(e)):t()._curve},e}Xm.prototype={areaStart:function(){this._curve.areaStart()},areaEnd:function(){this._curve.areaEnd()},lineStart:function(){this._curve.lineStart()},lineEnd:function(){this._curve.lineEnd()},point:function(e,t){this._curve.point(t*Math.sin(e),t*-Math.cos(e))}};var Jm=function(){return Qm(Um().curve(Zm))},ey=function(){var e=Wm().curve(Zm),t=e.curve,n=e.lineX0,r=e.lineX1,o=e.lineY0,i=e.lineY1;return e.angle=e.x,delete e.x,e.startAngle=e.x0,delete e.x0,e.endAngle=e.x1,delete e.x1,e.radius=e.y,delete e.y,e.innerRadius=e.y0,delete e.y0,e.outerRadius=e.y1,delete e.y1,e.lineStartAngle=function(){return Qm(n())},delete e.lineX0,e.lineEndAngle=function(){return Qm(r())},delete e.lineX1,e.lineInnerRadius=function(){return Qm(o())},delete e.lineY0,e.lineOuterRadius=function(){return Qm(i())},delete e.lineY1,e.curve=function(e){return arguments.length?t(Km(e)):t()._curve},e},ty=function(e,t){return[(t=+t)*Math.cos(e-=Math.PI/2),t*Math.sin(e)]},ny=Array.prototype.slice;function ry(e){return e.source}function oy(e){return e.target}function iy(e){var t=ry,n=oy,r=Fm,o=Bm,i=null;function a(){var a,c=ny.call(arguments),s=t.apply(this,c),l=n.apply(this,c);if(i||(i=a=ja()),e(i,+r.apply(this,(c[0]=s,c)),+o.apply(this,c),+r.apply(this,(c[0]=l,c)),+o.apply(this,c)),a)return i=null,a+""||null}return a.source=function(e){return arguments.length?(t=e,a):t},a.target=function(e){return arguments.length?(n=e,a):n},a.x=function(e){return arguments.length?(r="function"===typeof e?e:bm(+e),a):r},a.y=function(e){return arguments.length?(o="function"===typeof e?e:bm(+e),a):o},a.context=function(e){return arguments.length?(i=null==e?null:e,a):i},a}function ay(e,t,n,r,o){e.moveTo(t,n),e.bezierCurveTo(t=(t+r)/2,n,t,o,r,o)}function cy(e,t,n,r,o){e.moveTo(t,n),e.bezierCurveTo(t,n=(n+o)/2,r,n,r,o)}function sy(e,t,n,r,o){var i=ty(t,n),a=ty(t,n=(n+o)/2),c=ty(r,n),s=ty(r,o);e.moveTo(i[0],i[1]),e.bezierCurveTo(a[0],a[1],c[0],c[1],s[0],s[1])}function ly(){return iy(ay)}function uy(){return iy(cy)}function fy(){var e=iy(sy);return e.angle=e.x,delete e.x,e.radius=e.y,delete e.y,e}var dy={draw:function(e,t){var n=Math.sqrt(t/Sm);e.moveTo(n,0),e.arc(0,0,n,0,Em)}},hy={draw:function(e,t){var n=Math.sqrt(t/5)/2;e.moveTo(-3*n,-n),e.lineTo(-n,-n),e.lineTo(-n,-3*n),e.lineTo(n,-3*n),e.lineTo(n,-n),e.lineTo(3*n,-n),e.lineTo(3*n,n),e.lineTo(n,n),e.lineTo(n,3*n),e.lineTo(-n,3*n),e.lineTo(-n,n),e.lineTo(-3*n,n),e.closePath()}},py=Math.sqrt(1/3),zy=2*py,vy={draw:function(e,t){var n=Math.sqrt(t/zy),r=n*py;e.moveTo(0,-n),e.lineTo(r,0),e.lineTo(0,n),e.lineTo(-r,0),e.closePath()}},gy=Math.sin(Sm/10)/Math.sin(7*Sm/10),my=Math.sin(Em/10)*gy,yy=-Math.cos(Em/10)*gy,by={draw:function(e,t){var n=Math.sqrt(.8908130915292852*t),r=my*n,o=yy*n;e.moveTo(0,-n),e.lineTo(r,o);for(var i=1;i<5;++i){var a=Em*i/5,c=Math.cos(a),s=Math.sin(a);e.lineTo(s*n,-c*n),e.lineTo(c*r-s*o,s*r+c*o)}e.closePath()}},wy={draw:function(e,t){var n=Math.sqrt(t),r=-n/2;e.rect(r,r,n,n)}},ky=Math.sqrt(3),xy={draw:function(e,t){var n=-Math.sqrt(t/(3*ky));e.moveTo(0,2*n),e.lineTo(-ky*n,-n),e.lineTo(ky*n,-n),e.closePath()}},jy=Math.sqrt(3)/2,My=1/Math.sqrt(12),Cy=3*(My/2+1),_y={draw:function(e,t){var n=Math.sqrt(t/Cy),r=n/2,o=n*My,i=r,a=n*My+n,c=-i,s=a;e.moveTo(r,o),e.lineTo(i,a),e.lineTo(c,s),e.lineTo(-.5*r-jy*o,jy*r+-.5*o),e.lineTo(-.5*i-jy*a,jy*i+-.5*a),e.lineTo(-.5*c-jy*s,jy*c+-.5*s),e.lineTo(-.5*r+jy*o,-.5*o-jy*r),e.lineTo(-.5*i+jy*a,-.5*a-jy*i),e.lineTo(-.5*c+jy*s,-.5*s-jy*c),e.closePath()}},qy=[dy,hy,vy,wy,by,xy,_y],Sy=function(){var e=bm(dy),t=bm(64),n=null;function r(){var r;if(n||(n=r=ja()),e.apply(this,arguments).draw(n,+t.apply(this,arguments)),r)return n=null,r+""||null}return r.type=function(t){return arguments.length?(e="function"===typeof t?t:bm(t),r):e},r.size=function(e){return arguments.length?(t="function"===typeof e?e:bm(+e),r):t},r.context=function(e){return arguments.length?(n=null==e?null:e,r):n},r},Oy=function(){};function Ey(e,t,n){e._context.bezierCurveTo((2*e._x0+e._x1)/3,(2*e._y0+e._y1)/3,(e._x0+2*e._x1)/3,(e._y0+2*e._y1)/3,(e._x0+4*e._x1+t)/6,(e._y0+4*e._y1+n)/6)}function Ty(e){this._context=e}Ty.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:Ey(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:Ey(this,e,t)}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};var Ay=function(e){return new Ty(e)};function Ly(e){this._context=e}Ly.prototype={areaStart:Oy,areaEnd:Oy,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4)}},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._x2=e,this._y2=t;break;case 1:this._point=2,this._x3=e,this._y3=t;break;case 2:this._point=3,this._x4=e,this._y4=t,this._context.moveTo((this._x0+4*this._x1+e)/6,(this._y0+4*this._y1+t)/6);break;default:Ey(this,e,t)}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};var Hy=function(e){return new Ly(e)};function Dy(e){this._context=e}Dy.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var n=(this._x0+4*this._x1+e)/6,r=(this._y0+4*this._y1+t)/6;this._line?this._context.lineTo(n,r):this._context.moveTo(n,r);break;case 3:this._point=4;default:Ey(this,e,t)}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};var Py=function(e){return new Dy(e)};function Vy(e,t){this._basis=new Ty(e),this._beta=t}Vy.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var e=this._x,t=this._y,n=e.length-1;if(n>0)for(var r,o=e[0],i=t[0],a=e[n]-o,c=t[n]-i,s=-1;++s<=n;)r=s/n,this._basis.point(this._beta*e[s]+(1-this._beta)*(o+r*a),this._beta*t[s]+(1-this._beta)*(i+r*c));this._x=this._y=null,this._basis.lineEnd()},point:function(e,t){this._x.push(+e),this._y.push(+t)}};var Ry=function e(t){function n(e){return 1===t?new Ty(e):new Vy(e,t)}return n.beta=function(t){return e(+t)},n}(.85);function Iy(e,t,n){e._context.bezierCurveTo(e._x1+e._k*(e._x2-e._x0),e._y1+e._k*(e._y2-e._y0),e._x2+e._k*(e._x1-t),e._y2+e._k*(e._y1-n),e._x2,e._y2)}function Ny(e,t){this._context=e,this._k=(1-t)/6}Ny.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:Iy(this,this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2,this._x1=e,this._y1=t;break;case 2:this._point=3;default:Iy(this,e,t)}this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};var Fy=function e(t){function n(e){return new Ny(e,t)}return n.tension=function(t){return e(+t)},n}(0);function By(e,t){this._context=e,this._k=(1-t)/6}By.prototype={areaStart:Oy,areaEnd:Oy,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._x3=e,this._y3=t;break;case 1:this._point=2,this._context.moveTo(this._x4=e,this._y4=t);break;case 2:this._point=3,this._x5=e,this._y5=t;break;default:Iy(this,e,t)}this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};var Uy=function e(t){function n(e){return new By(e,t)}return n.tension=function(t){return e(+t)},n}(0);function Wy(e,t){this._context=e,this._k=(1-t)/6}Wy.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Iy(this,e,t)}this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};var Gy=function e(t){function n(e){return new Wy(e,t)}return n.tension=function(t){return e(+t)},n}(0);function Yy(e,t,n){var r=e._x1,o=e._y1,i=e._x2,a=e._y2;if(e._l01_a>qm){var c=2*e._l01_2a+3*e._l01_a*e._l12_a+e._l12_2a,s=3*e._l01_a*(e._l01_a+e._l12_a);r=(r*c-e._x0*e._l12_2a+e._x2*e._l01_2a)/s,o=(o*c-e._y0*e._l12_2a+e._y2*e._l01_2a)/s}if(e._l23_a>qm){var l=2*e._l23_2a+3*e._l23_a*e._l12_a+e._l12_2a,u=3*e._l23_a*(e._l23_a+e._l12_a);i=(i*l+e._x1*e._l23_2a-t*e._l12_2a)/u,a=(a*l+e._y1*e._l23_2a-n*e._l12_2a)/u}e._context.bezierCurveTo(r,o,i,a,e._x2,e._y2)}function $y(e,t){this._context=e,this._alpha=t}$y.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){if(e=+e,t=+t,this._point){var n=this._x2-e,r=this._y2-t;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3;default:Yy(this,e,t)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};var Zy=function e(t){function n(e){return t?new $y(e,t):new Ny(e,0)}return n.alpha=function(t){return e(+t)},n}(.5);function Xy(e,t){this._context=e,this._alpha=t}Xy.prototype={areaStart:Oy,areaEnd:Oy,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(e,t){if(e=+e,t=+t,this._point){var n=this._x2-e,r=this._y2-t;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=e,this._y3=t;break;case 1:this._point=2,this._context.moveTo(this._x4=e,this._y4=t);break;case 2:this._point=3,this._x5=e,this._y5=t;break;default:Yy(this,e,t)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};var Ky=function e(t){function n(e){return t?new Xy(e,t):new By(e,0)}return n.alpha=function(t){return e(+t)},n}(.5);function Qy(e,t){this._context=e,this._alpha=t}Qy.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){if(e=+e,t=+t,this._point){var n=this._x2-e,r=this._y2-t;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+r*r,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Yy(this,e,t)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};var Jy=function e(t){function n(e){return t?new Qy(e,t):new Wy(e,0)}return n.alpha=function(t){return e(+t)},n}(.5);function eb(e){this._context=e}eb.prototype={areaStart:Oy,areaEnd:Oy,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(e,t){e=+e,t=+t,this._point?this._context.lineTo(e,t):(this._point=1,this._context.moveTo(e,t))}};var tb=function(e){return new eb(e)};function nb(e){return e<0?-1:1}function rb(e,t,n){var r=e._x1-e._x0,o=t-e._x1,i=(e._y1-e._y0)/(r||o<0&&-0),a=(n-e._y1)/(o||r<0&&-0),c=(i*o+a*r)/(r+o);return(nb(i)+nb(a))*Math.min(Math.abs(i),Math.abs(a),.5*Math.abs(c))||0}function ob(e,t){var n=e._x1-e._x0;return n?(3*(e._y1-e._y0)/n-t)/2:t}function ib(e,t,n){var r=e._x0,o=e._y0,i=e._x1,a=e._y1,c=(i-r)/3;e._context.bezierCurveTo(r+c,o+c*t,i-c,a-c*n,i,a)}function ab(e){this._context=e}function cb(e){this._context=new sb(e)}function sb(e){this._context=e}function lb(e){return new ab(e)}function ub(e){return new cb(e)}function fb(e){this._context=e}function db(e){var t,n,r=e.length-1,o=new Array(r),i=new Array(r),a=new Array(r);for(o[0]=0,i[0]=2,a[0]=e[0]+2*e[1],t=1;t=0;--t)o[t]=(a[t]-o[t+1])/i[t];for(i[r-1]=(e[r]+o[r-1])/2,t=0;t=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,t),this._context.lineTo(e,t);else{var n=this._x*(1-this._t)+e*this._t;this._context.lineTo(n,this._y),this._context.lineTo(n,t)}}this._x=e,this._y=t}};var zb=function(e){return new pb(e,.5)};function vb(e){return new pb(e,0)}function gb(e){return new pb(e,1)}var mb=function(e,t){if((o=e.length)>1)for(var n,r,o,i=1,a=e[t[0]],c=a.length;i=0;)n[t]=t;return n};function bb(e,t){return e[t]}var wb=function(){var e=bm([]),t=yb,n=mb,r=bb;function o(o){var i,a,c=e.apply(this,arguments),s=o.length,l=c.length,u=new Array(l);for(i=0;i0){for(var n,r,o,i=0,a=e[0].length;i1)for(var n,r,o,i,a,c,s=0,l=e[t[0]].length;s=0?(r[0]=i,r[1]=i+=o):o<0?(r[1]=a,r[0]=a+=o):r[0]=i},jb=function(e,t){if((n=e.length)>0){for(var n,r=0,o=e[t[0]],i=o.length;r0&&(r=(n=e[t[0]]).length)>0){for(var n,r,o,i=0,a=1;a0)){if(i/=d,d<0){if(i0){if(i>f)return;i>u&&(u=i)}if(i=r-s,d||!(i<0)){if(i/=d,d<0){if(i>f)return;i>u&&(u=i)}else if(d>0){if(i0)){if(i/=h,h<0){if(i0){if(i>f)return;i>u&&(u=i)}if(i=o-l,h||!(i<0)){if(i/=h,h<0){if(i>f)return;i>u&&(u=i)}else if(h>0){if(i0||f<1)||(u>0&&(e[0]=[s+u*d,l+u*h]),f<1&&(e[1]=[s+f*d,l+f*h]),!0)}}}}}function Ub(e,t,n,r,o){var i=e[1];if(i)return!0;var a,c,s=e[0],l=e.left,u=e.right,f=l[0],d=l[1],h=u[0],p=u[1],z=(f+h)/2,v=(d+p)/2;if(p===d){if(z=r)return;if(f>h){if(s){if(s[1]>=o)return}else s=[z,n];i=[z,o]}else{if(s){if(s[1]1)if(f>h){if(s){if(s[1]>=o)return}else s=[(n-c)/a,n];i=[(o-c)/a,o]}else{if(s){if(s[1]=r)return}else s=[t,a*t+c];i=[r,a*r+c]}else{if(s){if(s[0]=-dw)){var h=s*s+l*l,p=u*u+f*f,z=(f*h-l*p)/d,v=(s*p-u*h)/d,g=Zb.pop()||new Xb;g.arc=e,g.site=o,g.x=z+a,g.y=(g.cy=v+c)+Math.sqrt(z*z+v*v),e.circle=g;for(var m=null,y=lw._;y;)if(g.yfw)c=c.L;else{if(!((o=i-aw(c,a))>fw)){r>-fw?(t=c.P,n=c):o>-fw?(t=c,n=c.N):t=n=c;break}if(!c.R){t=c;break}c=c.R}!function(e){sw[e.index]={site:e,halfedges:[]}}(e);var s=tw(e);if(cw.insert(t,s),t||n){if(t===n)return Qb(t),n=tw(t.site),cw.insert(s,n),s.edge=n.edge=Ib(t.site,s.site),Kb(t),void Kb(n);if(n){Qb(t),Qb(n);var l=t.site,u=l[0],f=l[1],d=e[0]-u,h=e[1]-f,p=n.site,z=p[0]-u,v=p[1]-f,g=2*(d*v-h*z),m=d*d+h*h,y=z*z+v*v,b=[(v*m-h*y)/g+u,(d*y-z*m)/g+f];Fb(n.edge,l,p,b),s.edge=Ib(l,e,null,b),n.edge=Ib(e,p,null,b),Kb(t),Kb(n)}else s.edge=Ib(t.site,s.site)}}function iw(e,t){var n=e.site,r=n[0],o=n[1],i=o-t;if(!i)return r;var a=e.P;if(!a)return-1/0;var c=(n=a.site)[0],s=n[1],l=s-t;if(!l)return c;var u=c-r,f=1/i-1/l,d=u/l;return f?(-d+Math.sqrt(d*d-2*f*(u*u/(-2*l)-s+l/2+o-i/2)))/f+r:(r+c)/2}function aw(e,t){var n=e.N;if(n)return iw(n,t);var r=e.site;return r[1]===t?r[0]:1/0}var cw,sw,lw,uw,fw=1e-6,dw=1e-12;function hw(e,t){return t[1]-e[1]||t[0]-e[0]}function pw(e,t){var n,r,o,i=e.sort(hw).pop();for(uw=[],sw=new Array(e.length),cw=new Rb,lw=new Rb;;)if(o=$b,i&&(!o||i[1]fw||Math.abs(o[0][1]-o[1][1])>fw)||delete uw[i]}(a,c,s,l),function(e,t,n,r){var o,i,a,c,s,l,u,f,d,h,p,z,v=sw.length,g=!0;for(o=0;ofw||Math.abs(z-d)>fw)&&(s.splice(c,0,uw.push(Nb(a,h,Math.abs(p-e)fw?[e,Math.abs(f-e)fw?[Math.abs(d-r)fw?[n,Math.abs(f-n)fw?[Math.abs(d-t)=c)return null;var s=e-o.site[0],l=t-o.site[1],u=s*s+l*l;do{o=i.cells[r=a],a=null,o.halfedges.forEach((function(n){var r=i.edges[n],c=r.left;if(c!==o.site&&c||(c=r.right)){var s=e-c[0],l=t-c[1],f=s*s+l*l;fr?(r+o)/2:Math.min(0,r)||Math.max(0,o),a>i?(i+a)/2:Math.min(0,i)||Math.max(0,a))}var Sw=function(){var e,t,n=xw,r=jw,o=qw,i=Cw,a=_w,c=[0,1/0],s=[[-1/0,-1/0],[1/0,1/0]],l=250,u=_r,f=[],d=ze("start","zoom","end"),h=500,p=150,z=0;function v(e){e.property("__zoom",Mw).on("wheel.zoom",x).on("mousedown.zoom",j).on("dblclick.zoom",M).filter(a).on("touchstart.zoom",C).on("touchmove.zoom",_).on("touchend.zoom touchcancel.zoom",q).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function g(e,t){return(t=Math.max(c[0],Math.min(c[1],t)))===e.k?e:new mw(t,e.x,e.y)}function m(e,t,n){var r=t[0]-n[0]*e.k,o=t[1]-n[1]*e.k;return r===e.x&&o===e.y?e:new mw(e.k,r,o)}function y(e){return[(+e[0][0]+ +e[1][0])/2,(+e[0][1]+ +e[1][1])/2]}function b(e,t,n){e.on("start.zoom",(function(){w(this,arguments).start()})).on("interrupt.zoom end.zoom",(function(){w(this,arguments).end()})).tween("zoom",(function(){var e=this,o=arguments,i=w(e,o),a=r.apply(e,o),c=n||y(a),s=Math.max(a[1][0]-a[0][0],a[1][1]-a[0][1]),l=e.__zoom,f="function"===typeof t?t.apply(e,o):t,d=u(l.invert(c).concat(s/l.k),f.invert(c).concat(s/f.k));return function(e){if(1===e)e=f;else{var t=d(e),n=s/t[2];e=new mw(n,c[0]-t[0]*n,c[1]-t[1]*n)}i.zoom(null,e)}}))}function w(e,t){for(var n,r=0,o=f.length;rz}e.zoom("mouse",o(m(e.that.__zoom,e.mouse[0]=Re(e.that),e.mouse[1]),e.extent,s))}),!0).on("mouseup.zoom",(function(){r.on("mousemove.zoom mouseup.zoom",null),Ft(Oe.view,e.moved),kw(),e.end()}),!0),i=Re(this),a=Oe.clientX,c=Oe.clientY;Nt(Oe.view),ww(),e.mouse=[i,this.__zoom.invert(i)],bo(this),e.start()}}function M(){if(n.apply(this,arguments)){var e=this.__zoom,t=Re(this),i=e.invert(t),a=e.k*(Oe.shiftKey?.5:2),c=o(m(g(e,a),t,i),r.apply(this,arguments),s);kw(),l>0?Ht(this).transition().duration(l).call(b,c,t):Ht(this).call(v.transform,c)}}function C(){if(n.apply(this,arguments)){var t,r,o,i,a=w(this,arguments),c=Oe.changedTouches,s=c.length;for(ww(),r=0;r=0}n.d(t,"a",(function(){return o}))},function(e,t,n){"use strict";var r=n(31);function o(e){return e}var i=Object(r.a)(o);t.a=i},,function(e,t,n){"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=(0,((r=n(231))&&r.__esModule?r:{default:r}).default)("Batch",(function(){for(var e=arguments.length,t=new Array(e),n=0;n=0&&n.splice(r,1),e.className=n.join(" ")}(e,t)},t.list=function(e){return e.classList?Array.prototype.slice.apply(e.classList):e.className.split(" ")}},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=r(n(211)),i=r(n(267)),a=function(){o.default.call(this)};(a.prototype=new o.default).extractSeries=function(e,t,n){},a.prototype.rollingAverage=function(e,t,n){},a.prototype.onPointsCreated_=function(e,t){for(var n=0;nr&&(s=r),li)&&(i=l),(null===o||s0&&t-1 in e)}x.fn=x.prototype={jquery:"3.6.0",constructor:x,length:0,toArray:function(){return c.call(this)},get:function(e){return null==e?c.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=x.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return x.each(this,e)},map:function(e){return this.pushStack(x.map(this,(function(t,n){return e.call(t,n,t)})))},slice:function(){return this.pushStack(c.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(x.grep(this,(function(e,t){return(t+1)%2})))},odd:function(){return this.pushStack(x.grep(this,(function(e,t){return t%2})))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n+~]|"+P+")"+P+"*"),W=new RegExp(P+"|>"),G=new RegExp(I),Y=new RegExp("^"+V+"$"),$={ID:new RegExp("^#("+V+")"),CLASS:new RegExp("^\\.("+V+")"),TAG:new RegExp("^("+V+"|[*])"),ATTR:new RegExp("^"+R),PSEUDO:new RegExp("^"+I),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+P+"*(even|odd|(([+-]|)(\\d*)n|)"+P+"*(?:([+-]|)"+P+"*(\\d+)|))"+P+"*\\)|)","i"),bool:new RegExp("^(?:"+D+")$","i"),needsContext:new RegExp("^"+P+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+P+"*((?:-\\d)?\\d*)"+P+"*\\)|)(?=[^-]|$)","i")},Z=/HTML$/i,X=/^(?:input|select|textarea|button)$/i,K=/^h\d$/i,Q=/^[^{]+\{\s*\[native \w/,J=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+P+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,oe=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},ie=function(){d()},ae=be((function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()}),{dir:"parentNode",next:"legend"});try{A.apply(O=L.call(w.childNodes),w.childNodes),O[w.childNodes.length].nodeType}catch(Me){A={apply:O.length?function(e,t){T.apply(e,L.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}function ce(e,t,r,o){var i,c,l,u,f,p,g,m=t&&t.ownerDocument,w=t?t.nodeType:9;if(r=r||[],"string"!==typeof e||!e||1!==w&&9!==w&&11!==w)return r;if(!o&&(d(t),t=t||h,z)){if(11!==w&&(f=J.exec(e)))if(i=f[1]){if(9===w){if(!(l=t.getElementById(i)))return r;if(l.id===i)return r.push(l),r}else if(m&&(l=m.getElementById(i))&&y(t,l)&&l.id===i)return r.push(l),r}else{if(f[2])return A.apply(r,t.getElementsByTagName(e)),r;if((i=f[3])&&n.getElementsByClassName&&t.getElementsByClassName)return A.apply(r,t.getElementsByClassName(i)),r}if(n.qsa&&!_[e+" "]&&(!v||!v.test(e))&&(1!==w||"object"!==t.nodeName.toLowerCase())){if(g=e,m=t,1===w&&(W.test(e)||U.test(e))){for((m=ee.test(e)&&ge(t.parentNode)||t)===t&&n.scope||((u=t.getAttribute("id"))?u=u.replace(re,oe):t.setAttribute("id",u=b)),c=(p=a(e)).length;c--;)p[c]=(u?"#"+u:":scope")+" "+ye(p[c]);g=p.join(",")}try{return A.apply(r,m.querySelectorAll(g)),r}catch(k){_(e,!0)}finally{u===b&&t.removeAttribute("id")}}}return s(e.replace(F,"$1"),t,r,o)}function se(){var e=[];return function t(n,o){return e.push(n+" ")>r.cacheLength&&delete t[e.shift()],t[n+" "]=o}}function le(e){return e[b]=!0,e}function ue(e){var t=h.createElement("fieldset");try{return!!e(t)}catch(Me){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){for(var n=e.split("|"),o=n.length;o--;)r.attrHandle[n[o]]=t}function de(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function he(e){return function(t){return"input"===t.nodeName.toLowerCase()&&t.type===e}}function pe(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function ze(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ae(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function ve(e){return le((function(t){return t=+t,le((function(n,r){for(var o,i=e([],n.length,t),a=i.length;a--;)n[o=i[a]]&&(n[o]=!(r[o]=n[o]))}))}))}function ge(e){return e&&"undefined"!==typeof e.getElementsByTagName&&e}for(t in n=ce.support={},i=ce.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Z.test(t||n&&n.nodeName||"HTML")},d=ce.setDocument=function(e){var t,o,a=e?e.ownerDocument||e:w;return a!=h&&9===a.nodeType&&a.documentElement?(p=(h=a).documentElement,z=!i(h),w!=h&&(o=h.defaultView)&&o.top!==o&&(o.addEventListener?o.addEventListener("unload",ie,!1):o.attachEvent&&o.attachEvent("onunload",ie)),n.scope=ue((function(e){return p.appendChild(e).appendChild(h.createElement("div")),"undefined"!==typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length})),n.attributes=ue((function(e){return e.className="i",!e.getAttribute("className")})),n.getElementsByTagName=ue((function(e){return e.appendChild(h.createComment("")),!e.getElementsByTagName("*").length})),n.getElementsByClassName=Q.test(h.getElementsByClassName),n.getById=ue((function(e){return p.appendChild(e).id=b,!h.getElementsByName||!h.getElementsByName(b).length})),n.getById?(r.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},r.find.ID=function(e,t){if("undefined"!==typeof t.getElementById&&z){var n=t.getElementById(e);return n?[n]:[]}}):(r.filter.ID=function(e){var t=e.replace(te,ne);return function(e){var n="undefined"!==typeof e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},r.find.ID=function(e,t){if("undefined"!==typeof t.getElementById&&z){var n,r,o,i=t.getElementById(e);if(i){if((n=i.getAttributeNode("id"))&&n.value===e)return[i];for(o=t.getElementsByName(e),r=0;i=o[r++];)if((n=i.getAttributeNode("id"))&&n.value===e)return[i]}return[]}}),r.find.TAG=n.getElementsByTagName?function(e,t){return"undefined"!==typeof t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],o=0,i=t.getElementsByTagName(e);if("*"===e){for(;n=i[o++];)1===n.nodeType&&r.push(n);return r}return i},r.find.CLASS=n.getElementsByClassName&&function(e,t){if("undefined"!==typeof t.getElementsByClassName&&z)return t.getElementsByClassName(e)},g=[],v=[],(n.qsa=Q.test(h.querySelectorAll))&&(ue((function(e){var t;p.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+P+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+P+"*(?:value|"+D+")"),e.querySelectorAll("[id~="+b+"-]").length||v.push("~="),(t=h.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+P+"*name"+P+"*="+P+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+b+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")})),ue((function(e){e.innerHTML="";var t=h.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+P+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),p.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")}))),(n.matchesSelector=Q.test(m=p.matches||p.webkitMatchesSelector||p.mozMatchesSelector||p.oMatchesSelector||p.msMatchesSelector))&&ue((function(e){n.disconnectedMatch=m.call(e,"*"),m.call(e,"[s!='']:x"),g.push("!=",I)})),v=v.length&&new RegExp(v.join("|")),g=g.length&&new RegExp(g.join("|")),t=Q.test(p.compareDocumentPosition),y=t||Q.test(p.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)for(;t=t.parentNode;)if(t===e)return!0;return!1},q=t?function(e,t){if(e===t)return f=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r||(1&(r=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===r?e==h||e.ownerDocument==w&&y(w,e)?-1:t==h||t.ownerDocument==w&&y(w,t)?1:u?H(u,e)-H(u,t):0:4&r?-1:1)}:function(e,t){if(e===t)return f=!0,0;var n,r=0,o=e.parentNode,i=t.parentNode,a=[e],c=[t];if(!o||!i)return e==h?-1:t==h?1:o?-1:i?1:u?H(u,e)-H(u,t):0;if(o===i)return de(e,t);for(n=e;n=n.parentNode;)a.unshift(n);for(n=t;n=n.parentNode;)c.unshift(n);for(;a[r]===c[r];)r++;return r?de(a[r],c[r]):a[r]==w?-1:c[r]==w?1:0},h):h},ce.matches=function(e,t){return ce(e,null,null,t)},ce.matchesSelector=function(e,t){if(d(e),n.matchesSelector&&z&&!_[t+" "]&&(!g||!g.test(t))&&(!v||!v.test(t)))try{var r=m.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(Me){_(t,!0)}return ce(t,h,null,[e]).length>0},ce.contains=function(e,t){return(e.ownerDocument||e)!=h&&d(e),y(e,t)},ce.attr=function(e,t){(e.ownerDocument||e)!=h&&d(e);var o=r.attrHandle[t.toLowerCase()],i=o&&S.call(r.attrHandle,t.toLowerCase())?o(e,t,!z):void 0;return void 0!==i?i:n.attributes||!z?e.getAttribute(t):(i=e.getAttributeNode(t))&&i.specified?i.value:null},ce.escape=function(e){return(e+"").replace(re,oe)},ce.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},ce.uniqueSort=function(e){var t,r=[],o=0,i=0;if(f=!n.detectDuplicates,u=!n.sortStable&&e.slice(0),e.sort(q),f){for(;t=e[i++];)t===e[i]&&(o=r.push(i));for(;o--;)e.splice(r[o],1)}return u=null,e},o=ce.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"===typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r++];)n+=o(t);return n},(r=ce.selectors={cacheLength:50,createPseudo:le,match:$,attrHandle:{},find:{},relative:{">":{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]||ce.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]&&ce.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return $.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&G.test(n)&&(t=a(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=j[e+" "];return t||(t=new RegExp("(^|"+P+")"+e+"("+P+"|$)"))&&j(e,(function(e){return t.test("string"===typeof e.className&&e.className||"undefined"!==typeof e.getAttribute&&e.getAttribute("class")||"")}))},ATTR:function(e,t,n){return function(r){var o=ce.attr(r,e);return null==o?"!="===t:!t||(o+="","="===t?o===n:"!="===t?o!==n:"^="===t?n&&0===o.indexOf(n):"*="===t?n&&o.indexOf(n)>-1:"$="===t?n&&o.slice(-n.length)===n:"~="===t?(" "+o.replace(N," ")+" ").indexOf(n)>-1:"|="===t&&(o===n||o.slice(0,n.length+1)===n+"-"))}},CHILD:function(e,t,n,r,o){var i="nth"!==e.slice(0,3),a="last"!==e.slice(-4),c="of-type"===t;return 1===r&&0===o?function(e){return!!e.parentNode}:function(t,n,s){var l,u,f,d,h,p,z=i!==a?"nextSibling":"previousSibling",v=t.parentNode,g=c&&t.nodeName.toLowerCase(),m=!s&&!c,y=!1;if(v){if(i){for(;z;){for(d=t;d=d[z];)if(c?d.nodeName.toLowerCase()===g:1===d.nodeType)return!1;p=z="only"===e&&!p&&"nextSibling"}return!0}if(p=[a?v.firstChild:v.lastChild],a&&m){for(y=(h=(l=(u=(f=(d=v)[b]||(d[b]={}))[d.uniqueID]||(f[d.uniqueID]={}))[e]||[])[0]===k&&l[1])&&l[2],d=h&&v.childNodes[h];d=++h&&d&&d[z]||(y=h=0)||p.pop();)if(1===d.nodeType&&++y&&d===t){u[e]=[k,h,y];break}}else if(m&&(y=h=(l=(u=(f=(d=t)[b]||(d[b]={}))[d.uniqueID]||(f[d.uniqueID]={}))[e]||[])[0]===k&&l[1]),!1===y)for(;(d=++h&&d&&d[z]||(y=h=0)||p.pop())&&((c?d.nodeName.toLowerCase()!==g:1!==d.nodeType)||!++y||(m&&((u=(f=d[b]||(d[b]={}))[d.uniqueID]||(f[d.uniqueID]={}))[e]=[k,y]),d!==t)););return(y-=o)===r||y%r===0&&y/r>=0}}},PSEUDO:function(e,t){var n,o=r.pseudos[e]||r.setFilters[e.toLowerCase()]||ce.error("unsupported pseudo: "+e);return o[b]?o(t):o.length>1?(n=[e,e,"",t],r.setFilters.hasOwnProperty(e.toLowerCase())?le((function(e,n){for(var r,i=o(e,t),a=i.length;a--;)e[r=H(e,i[a])]=!(n[r]=i[a])})):function(e){return o(e,0,n)}):o}},pseudos:{not:le((function(e){var t=[],n=[],r=c(e.replace(F,"$1"));return r[b]?le((function(e,t,n,o){for(var i,a=r(e,null,o,[]),c=e.length;c--;)(i=a[c])&&(e[c]=!(t[c]=i))})):function(e,o,i){return t[0]=e,r(t,null,i,n),t[0]=null,!n.pop()}})),has:le((function(e){return function(t){return ce(e,t).length>0}})),contains:le((function(e){return e=e.replace(te,ne),function(t){return(t.textContent||o(t)).indexOf(e)>-1}})),lang:le((function(e){return Y.test(e||"")||ce.error("unsupported lang: "+e),e=e.replace(te,ne).toLowerCase(),function(t){var n;do{if(n=z?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return(n=n.toLowerCase())===e||0===n.indexOf(e+"-")}while((t=t.parentNode)&&1===t.nodeType);return!1}})),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===p},focus:function(e){return e===h.activeElement&&(!h.hasFocus||h.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ze(!1),disabled:ze(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!r.pseudos.empty(e)},header:function(e){return K.test(e.nodeName)},input:function(e){return X.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve((function(){return[0]})),last:ve((function(e,t){return[t-1]})),eq:ve((function(e,t,n){return[n<0?n+t:n]})),even:ve((function(e,t){for(var n=0;nt?t:n;--r>=0;)e.push(r);return e})),gt:ve((function(e,t,n){for(var r=n<0?n+t:n;++r1?function(t,n,r){for(var o=e.length;o--;)if(!e[o](t,n,r))return!1;return!0}:e[0]}function ke(e,t,n,r,o){for(var i,a=[],c=0,s=e.length,l=null!=t;c-1&&(i[l]=!(a[l]=f))}}else g=ke(g===a?g.splice(p,g.length):g),o?o(null,a,g,s):A.apply(a,g)}))}function je(e){for(var t,n,o,i=e.length,a=r.relative[e[0].type],c=a||r.relative[" "],s=a?1:0,u=be((function(e){return e===t}),c,!0),f=be((function(e){return H(t,e)>-1}),c,!0),d=[function(e,n,r){var o=!a&&(r||n!==l)||((t=n).nodeType?u(e,n,r):f(e,n,r));return t=null,o}];s1&&we(d),s>1&&ye(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(F,"$1"),n,s0,o=e.length>0,i=function(i,a,c,s,u){var f,p,v,g=0,m="0",y=i&&[],b=[],w=l,x=i||o&&r.find.TAG("*",u),j=k+=null==w?1:Math.random()||.1,M=x.length;for(u&&(l=a==h||a||u);m!==M&&null!=(f=x[m]);m++){if(o&&f){for(p=0,a||f.ownerDocument==h||(d(f),c=!z);v=e[p++];)if(v(f,a||h,c)){s.push(f);break}u&&(k=j)}n&&((f=!v&&f)&&g--,i&&y.push(f))}if(g+=m,n&&m!==g){for(p=0;v=t[p++];)v(y,b,a,c);if(i){if(g>0)for(;m--;)y[m]||b[m]||(b[m]=E.call(s));b=ke(b)}A.apply(s,b),u&&!i&&b.length>0&&g+t.length>1&&ce.uniqueSort(s)}return u&&(k=j,l=w),y};return n?le(i):i}(i,o))).selector=e}return c},s=ce.select=function(e,t,n,o){var i,s,l,u,f,d="function"===typeof e&&e,h=!o&&a(e=d.selector||e);if(n=n||[],1===h.length){if((s=h[0]=h[0].slice(0)).length>2&&"ID"===(l=s[0]).type&&9===t.nodeType&&z&&r.relative[s[1].type]){if(!(t=(r.find.ID(l.matches[0].replace(te,ne),t)||[])[0]))return n;d&&(t=t.parentNode),e=e.slice(s.shift().value.length)}for(i=$.needsContext.test(e)?0:s.length;i--&&(l=s[i],!r.relative[u=l.type]);)if((f=r.find[u])&&(o=f(l.matches[0].replace(te,ne),ee.test(s[0].type)&&ge(t.parentNode)||t))){if(s.splice(i,1),!(e=o.length&&ye(s)))return A.apply(n,o),n;break}}return(d||c(e,h))(o,t,!z,n,!t||ee.test(e)&&ge(t.parentNode)||t),n},n.sortStable=b.split("").sort(q).join("")===b,n.detectDuplicates=!!f,d(),n.sortDetached=ue((function(e){return 1&e.compareDocumentPosition(h.createElement("fieldset"))})),ue((function(e){return e.innerHTML="","#"===e.firstChild.getAttribute("href")}))||fe("type|href|height|width",(function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)})),n.attributes&&ue((function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")}))||fe("value",(function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue})),ue((function(e){return null==e.getAttribute("disabled")}))||fe(D,(function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null})),ce}(n);x.find=M,x.expr=M.selectors,x.expr[":"]=x.expr.pseudos,x.uniqueSort=x.unique=M.uniqueSort,x.text=M.getText,x.isXMLDoc=M.isXML,x.contains=M.contains,x.escapeSelector=M.escape;var C=function(e,t,n){for(var r=[],o=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(o&&x(e).is(n))break;r.push(e)}return r},_=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},q=x.expr.match.needsContext;function S(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var O=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function E(e,t,n){return g(t)?x.grep(e,(function(e,r){return!!t.call(e,r,e)!==n})):t.nodeType?x.grep(e,(function(e){return e===t!==n})):"string"!==typeof t?x.grep(e,(function(e){return u.call(t,e)>-1!==n})):x.filter(t,e,n)}x.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?x.find.matchesSelector(r,e)?[r]:[]:x.find.matches(e,x.grep(t,(function(e){return 1===e.nodeType})))},x.fn.extend({find:function(e){var t,n,r=this.length,o=this;if("string"!==typeof e)return this.pushStack(x(e).filter((function(){for(t=0;t1?x.uniqueSort(n):n},filter:function(e){return this.pushStack(E(this,e||[],!1))},not:function(e){return this.pushStack(E(this,e||[],!0))},is:function(e){return!!E(this,"string"===typeof e&&q.test(e)?x(e):e||[],!1).length}});var T,A=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(x.fn.init=function(e,t,n){var r,o;if(!e)return this;if(n=n||T,"string"===typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:A.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 x?t[0]:t,x.merge(this,x.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:y,!0)),O.test(r[1])&&x.isPlainObject(t))for(r in t)g(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(o=y.getElementById(r[2]))&&(this[0]=o,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):g(e)?void 0!==n.ready?n.ready(e):e(x):x.makeArray(e,this)}).prototype=x.fn,T=x(y);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function D(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}x.fn.extend({has:function(e){var t=x(e,this),n=t.length;return this.filter((function(){for(var e=0;e-1:1===n.nodeType&&x.find.matchesSelector(n,e))){i.push(n);break}return this.pushStack(i.length>1?x.uniqueSort(i):i)},index:function(e){return e?"string"===typeof e?u.call(x(e),this[0]):u.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(x.uniqueSort(x.merge(this.get(),x(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),x.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return C(e,"parentNode")},parentsUntil:function(e,t,n){return C(e,"parentNode",n)},next:function(e){return D(e,"nextSibling")},prev:function(e){return D(e,"previousSibling")},nextAll:function(e){return C(e,"nextSibling")},prevAll:function(e){return C(e,"previousSibling")},nextUntil:function(e,t,n){return C(e,"nextSibling",n)},prevUntil:function(e,t,n){return C(e,"previousSibling",n)},siblings:function(e){return _((e.parentNode||{}).firstChild,e)},children:function(e){return _(e.firstChild)},contents:function(e){return null!=e.contentDocument&&a(e.contentDocument)?e.contentDocument:(S(e,"template")&&(e=e.content||e),x.merge([],e.childNodes))}},(function(e,t){x.fn[e]=function(n,r){var o=x.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"===typeof r&&(o=x.filter(r,o)),this.length>1&&(H[e]||x.uniqueSort(o),L.test(e)&&o.reverse()),this.pushStack(o)}}));var P=/[^\x20\t\r\n\f]+/g;function V(e){return e}function R(e){throw e}function I(e,t,n,r){var o;try{e&&g(o=e.promise)?o.call(e).done(t).fail(n):e&&g(o=e.then)?o.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}x.Callbacks=function(e){e="string"===typeof e?function(e){var t={};return x.each(e.match(P)||[],(function(e,n){t[n]=!0})),t}(e):x.extend({},e);var t,n,r,o,i=[],a=[],c=-1,s=function(){for(o=o||e.once,r=t=!0;a.length;c=-1)for(n=a.shift();++c-1;)i.splice(n,1),n<=c&&c--})),this},has:function(e){return e?x.inArray(e,i)>-1:i.length>0},empty:function(){return i&&(i=[]),this},disable:function(){return o=a=[],i=n="",this},disabled:function(){return!i},lock:function(){return o=a=[],n||t||(i=n=""),this},locked:function(){return!!o},fireWith:function(e,n){return o||(n=[e,(n=n||[]).slice?n.slice():n],a.push(n),t||s()),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!r}};return l},x.extend({Deferred:function(e){var t=[["notify","progress",x.Callbacks("memory"),x.Callbacks("memory"),2],["resolve","done",x.Callbacks("once memory"),x.Callbacks("once memory"),0,"resolved"],["reject","fail",x.Callbacks("once memory"),x.Callbacks("once memory"),1,"rejected"]],r="pending",o={state:function(){return r},always:function(){return i.done(arguments).fail(arguments),this},catch:function(e){return o.then(null,e)},pipe:function(){var e=arguments;return x.Deferred((function(n){x.each(t,(function(t,r){var o=g(e[r[4]])&&e[r[4]];i[r[1]]((function(){var e=o&&o.apply(this,arguments);e&&g(e.promise)?e.promise().progress(n.notify).done(n.resolve).fail(n.reject):n[r[0]+"With"](this,o?[e]:arguments)}))})),e=null})).promise()},then:function(e,r,o){var i=0;function a(e,t,r,o){return function(){var c=this,s=arguments,l=function(){var n,l;if(!(e=i&&(r!==R&&(c=void 0,s=[n]),t.rejectWith(c,s))}};e?u():(x.Deferred.getStackHook&&(u.stackTrace=x.Deferred.getStackHook()),n.setTimeout(u))}}return x.Deferred((function(n){t[0][3].add(a(0,n,g(o)?o:V,n.notifyWith)),t[1][3].add(a(0,n,g(e)?e:V)),t[2][3].add(a(0,n,g(r)?r:R))})).promise()},promise:function(e){return null!=e?x.extend(e,o):o}},i={};return x.each(t,(function(e,n){var a=n[2],c=n[5];o[n[1]]=a.add,c&&a.add((function(){r=c}),t[3-e][2].disable,t[3-e][3].disable,t[0][2].lock,t[0][3].lock),a.add(n[3].fire),i[n[0]]=function(){return i[n[0]+"With"](this===i?void 0:this,arguments),this},i[n[0]+"With"]=a.fireWith})),o.promise(i),e&&e.call(i,i),i},when:function(e){var t=arguments.length,n=t,r=Array(n),o=c.call(arguments),i=x.Deferred(),a=function(e){return function(n){r[e]=this,o[e]=arguments.length>1?c.call(arguments):n,--t||i.resolveWith(r,o)}};if(t<=1&&(I(e,i.done(a(n)).resolve,i.reject,!t),"pending"===i.state()||g(o[n]&&o[n].then)))return i.then();for(;n--;)I(o[n],a(n),i.reject);return i.promise()}});var N=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;x.Deferred.exceptionHook=function(e,t){n.console&&n.console.warn&&e&&N.test(e.name)&&n.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},x.readyException=function(e){n.setTimeout((function(){throw e}))};var F=x.Deferred();function B(){y.removeEventListener("DOMContentLoaded",B),n.removeEventListener("load",B),x.ready()}x.fn.ready=function(e){return F.then(e).catch((function(e){x.readyException(e)})),this},x.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--x.readyWait:x.isReady)||(x.isReady=!0,!0!==e&&--x.readyWait>0||F.resolveWith(y,[x]))}}),x.ready.then=F.then,"complete"===y.readyState||"loading"!==y.readyState&&!y.documentElement.doScroll?n.setTimeout(x.ready):(y.addEventListener("DOMContentLoaded",B),n.addEventListener("load",B));var U=function e(t,n,r,o,i,a,c){var s=0,l=t.length,u=null==r;if("object"===k(r))for(s in i=!0,r)e(t,n,s,r[s],!0,a,c);else if(void 0!==o&&(i=!0,g(o)||(c=!0),u&&(c?(n.call(t,o),n=null):(u=n,n=function(e,t,n){return u.call(x(e),n)})),n))for(;s1,null,!0)},removeData:function(e){return this.each((function(){Q.remove(this,e)}))}}),x.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=K.get(e,t),n&&(!r||Array.isArray(n)?r=K.access(e,t,x.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=x.queue(e,t),r=n.length,o=n.shift(),i=x._queueHooks(e,t);"inprogress"===o&&(o=n.shift(),r--),o&&("fx"===t&&n.unshift("inprogress"),delete i.stop,o.call(e,(function(){x.dequeue(e,t)}),i)),!r&&i&&i.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return K.get(e,n)||K.access(e,n,{empty:x.Callbacks("once memory").add((function(){K.remove(e,[t+"queue",n])}))})}}),x.fn.extend({queue:function(e,t){var n=2;return"string"!==typeof e&&(t=e,e="fx",n--),arguments.length\x20\t\r\n\f]*)/i,ze=/^$|^module$|\/(?:java|ecma)script/i;!function(){var e=y.createDocumentFragment().appendChild(y.createElement("div")),t=y.createElement("input");t.setAttribute("type","radio"),t.setAttribute("checked","checked"),t.setAttribute("name","t"),e.appendChild(t),v.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,e.innerHTML="",v.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue,e.innerHTML="",v.option=!!e.lastChild}();var ve={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ge(e,t){var n;return n="undefined"!==typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!==typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&S(e,t)?x.merge([e],n):n}function me(e,t){for(var n=0,r=e.length;n",""]);var ye=/<|&#?\w+;/;function be(e,t,n,r,o){for(var i,a,c,s,l,u,f=t.createDocumentFragment(),d=[],h=0,p=e.length;h-1)o&&o.push(i);else if(l=ae(i),a=ge(f.appendChild(i),"script"),l&&me(a),n)for(u=0;i=a[u++];)ze.test(i.type||"")&&n.push(i);return f}var we=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function xe(){return!1}function je(e,t){return e===function(){try{return y.activeElement}catch(e){}}()===("focus"===t)}function Me(e,t,n,r,o,i){var a,c;if("object"===typeof t){for(c in"string"!==typeof n&&(r=r||n,n=void 0),t)Me(e,c,n,r,t[c],i);return e}if(null==r&&null==o?(o=n,r=n=void 0):null==o&&("string"===typeof n?(o=r,r=void 0):(o=r,r=n,n=void 0)),!1===o)o=xe;else if(!o)return e;return 1===i&&(a=o,(o=function(e){return x().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=x.guid++)),e.each((function(){x.event.add(this,t,o,r,n)}))}function Ce(e,t,n){n?(K.set(e,t,!1),x.event.add(e,t,{namespace:!1,handler:function(e){var r,o,i=K.get(this,t);if(1&e.isTrigger&&this[t]){if(i.length)(x.event.special[t]||{}).delegateType&&e.stopPropagation();else if(i=c.call(arguments),K.set(this,t,i),r=n(this,t),this[t](),i!==(o=K.get(this,t))||r?K.set(this,t,!1):o={},i!==o)return e.stopImmediatePropagation(),e.preventDefault(),o&&o.value}else i.length&&(K.set(this,t,{value:x.event.trigger(x.extend(i[0],x.Event.prototype),i.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===K.get(e,t)&&x.event.add(e,t,ke)}x.event={global:{},add:function(e,t,n,r,o){var i,a,c,s,l,u,f,d,h,p,z,v=K.get(e);if(Z(e))for(n.handler&&(n=(i=n).handler,o=i.selector),o&&x.find.matchesSelector(ie,o),n.guid||(n.guid=x.guid++),(s=v.events)||(s=v.events=Object.create(null)),(a=v.handle)||(a=v.handle=function(t){return"undefined"!==typeof x&&x.event.triggered!==t.type?x.event.dispatch.apply(e,arguments):void 0}),l=(t=(t||"").match(P)||[""]).length;l--;)h=z=(c=we.exec(t[l])||[])[1],p=(c[2]||"").split(".").sort(),h&&(f=x.event.special[h]||{},h=(o?f.delegateType:f.bindType)||h,f=x.event.special[h]||{},u=x.extend({type:h,origType:z,data:r,handler:n,guid:n.guid,selector:o,needsContext:o&&x.expr.match.needsContext.test(o),namespace:p.join(".")},i),(d=s[h])||((d=s[h]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(e,r,p,a)||e.addEventListener&&e.addEventListener(h,a)),f.add&&(f.add.call(e,u),u.handler.guid||(u.handler.guid=n.guid)),o?d.splice(d.delegateCount++,0,u):d.push(u),x.event.global[h]=!0)},remove:function(e,t,n,r,o){var i,a,c,s,l,u,f,d,h,p,z,v=K.hasData(e)&&K.get(e);if(v&&(s=v.events)){for(l=(t=(t||"").match(P)||[""]).length;l--;)if(h=z=(c=we.exec(t[l])||[])[1],p=(c[2]||"").split(".").sort(),h){for(f=x.event.special[h]||{},d=s[h=(r?f.delegateType:f.bindType)||h]||[],c=c[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=i=d.length;i--;)u=d[i],!o&&z!==u.origType||n&&n.guid!==u.guid||c&&!c.test(u.namespace)||r&&r!==u.selector&&("**"!==r||!u.selector)||(d.splice(i,1),u.selector&&d.delegateCount--,f.remove&&f.remove.call(e,u));a&&!d.length&&(f.teardown&&!1!==f.teardown.call(e,p,v.handle)||x.removeEvent(e,h,v.handle),delete s[h])}else for(h in s)x.event.remove(e,h+t[l],n,r,!0);x.isEmptyObject(s)&&K.remove(e,"handle events")}},dispatch:function(e){var t,n,r,o,i,a,c=new Array(arguments.length),s=x.event.fix(e),l=(K.get(this,"events")||Object.create(null))[s.type]||[],u=x.event.special[s.type]||{};for(c[0]=s,t=1;t=1))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(i=[],a={},n=0;n-1:x.find(o,this,null,[l]).length),a[o]&&i.push(r);i.length&&c.push({elem:l,handlers:i})}return l=this,s\s*$/g;function Oe(e,t){return S(e,"table")&&S(11!==t.nodeType?t:t.firstChild,"tr")&&x(e).children("tbody")[0]||e}function Ee(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Te(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Ae(e,t){var n,r,o,i,a,c;if(1===t.nodeType){if(K.hasData(e)&&(c=K.get(e).events))for(o in K.remove(t,"handle events"),c)for(n=0,r=c[o].length;n1&&"string"===typeof p&&!v.checkClone&&qe.test(p))return e.each((function(o){var i=e.eq(o);z&&(t[0]=p.call(this,o,i.html())),He(i,t,n,r)}));if(d&&(i=(o=be(t,e[0].ownerDocument,!1,e,r)).firstChild,1===o.childNodes.length&&(o=i),i||r)){for(c=(a=x.map(ge(o,"script"),Ee)).length;f0&&me(a,!s&&ge(e,"script")),c},cleanData:function(e){for(var t,n,r,o=x.event.special,i=0;void 0!==(n=e[i]);i++)if(Z(n)){if(t=n[K.expando]){if(t.events)for(r in t.events)o[r]?x.event.remove(n,r):x.removeEvent(n,r,t.handle);n[K.expando]=void 0}n[Q.expando]&&(n[Q.expando]=void 0)}}}),x.fn.extend({detach:function(e){return De(this,e,!0)},remove:function(e){return De(this,e)},text:function(e){return U(this,(function(e){return void 0===e?x.text(this):this.empty().each((function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)}))}),null,e,arguments.length)},append:function(){return He(this,arguments,(function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Oe(this,e).appendChild(e)}))},prepend:function(){return He(this,arguments,(function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Oe(this,e);t.insertBefore(e,t.firstChild)}}))},before:function(){return He(this,arguments,(function(e){this.parentNode&&this.parentNode.insertBefore(e,this)}))},after:function(){return He(this,arguments,(function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)}))},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(x.cleanData(ge(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map((function(){return x.clone(this,e,t)}))},html:function(e){return U(this,(function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"===typeof e&&!_e.test(e)&&!ve[(pe.exec(e)||["",""])[1].toLowerCase()]){e=x.htmlPrefilter(e);try{for(;n=0&&(s+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-i-s-c-.5))||0),s}function Je(e,t,n){var r=Ve(e),o=(!v.boxSizingReliable()||n)&&"border-box"===x.css(e,"boxSizing",!1,r),i=o,a=Ne(e,t,r),c="offset"+t[0].toUpperCase()+t.slice(1);if(Pe.test(a)){if(!n)return a;a="auto"}return(!v.boxSizingReliable()&&o||!v.reliableTrDimensions()&&S(e,"tr")||"auto"===a||!parseFloat(a)&&"inline"===x.css(e,"display",!1,r))&&e.getClientRects().length&&(o="border-box"===x.css(e,"boxSizing",!1,r),(i=c in e)&&(a=e[c])),(a=parseFloat(a)||0)+Qe(e,t,n||(o?"border":"content"),i,r,a)+"px"}function et(e,t,n,r,o){return new et.prototype.init(e,t,n,r,o)}x.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Ne(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,i,a,c=$(t),s=$e.test(t),l=e.style;if(s||(t=Ge(c)),a=x.cssHooks[t]||x.cssHooks[c],void 0===n)return a&&"get"in a&&void 0!==(o=a.get(e,!1,r))?o:l[t];"string"===(i=typeof n)&&(o=re.exec(n))&&o[1]&&(n=le(e,t,o),i="number"),null!=n&&n===n&&("number"!==i||s||(n+=o&&o[3]||(x.cssNumber[c]?"":"px")),v.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(s?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var o,i,a,c=$(t);return $e.test(t)||(t=Ge(c)),(a=x.cssHooks[t]||x.cssHooks[c])&&"get"in a&&(o=a.get(e,!0,n)),void 0===o&&(o=Ne(e,t,r)),"normal"===o&&t in Xe&&(o=Xe[t]),""===n||n?(i=parseFloat(o),!0===n||isFinite(i)?i||0:o):o}}),x.each(["height","width"],(function(e,t){x.cssHooks[t]={get:function(e,n,r){if(n)return!Ye.test(x.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?Je(e,t,r):Re(e,Ze,(function(){return Je(e,t,r)}))},set:function(e,n,r){var o,i=Ve(e),a=!v.scrollboxSize()&&"absolute"===i.position,c=(a||r)&&"border-box"===x.css(e,"boxSizing",!1,i),s=r?Qe(e,t,r,c,i):0;return c&&a&&(s-=Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-parseFloat(i[t])-Qe(e,t,"border",!1,i)-.5)),s&&(o=re.exec(n))&&"px"!==(o[3]||"px")&&(e.style[t]=n,n=x.css(e,t)),Ke(0,n,s)}}})),x.cssHooks.marginLeft=Fe(v.reliableMarginLeft,(function(e,t){if(t)return(parseFloat(Ne(e,"marginLeft"))||e.getBoundingClientRect().left-Re(e,{marginLeft:0},(function(){return e.getBoundingClientRect().left})))+"px"})),x.each({margin:"",padding:"",border:"Width"},(function(e,t){x.cssHooks[e+t]={expand:function(n){for(var r=0,o={},i="string"===typeof n?n.split(" "):[n];r<4;r++)o[e+oe[r]+t]=i[r]||i[r-2]||i[0];return o}},"margin"!==e&&(x.cssHooks[e+t].set=Ke)})),x.fn.extend({css:function(e,t){return U(this,(function(e,t,n){var r,o,i={},a=0;if(Array.isArray(t)){for(r=Ve(e),o=t.length;a1)}}),x.Tween=et,et.prototype={constructor:et,init:function(e,t,n,r,o,i){this.elem=e,this.prop=n,this.easing=o||x.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=i||(x.cssNumber[n]?"":"px")},cur:function(){var e=et.propHooks[this.prop];return e&&e.get?e.get(this):et.propHooks._default.get(this)},run:function(e){var t,n=et.propHooks[this.prop];return this.options.duration?this.pos=t=x.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):et.propHooks._default.set(this),this}},et.prototype.init.prototype=et.prototype,et.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=x.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){x.fx.step[e.prop]?x.fx.step[e.prop](e):1!==e.elem.nodeType||!x.cssHooks[e.prop]&&null==e.elem.style[Ge(e.prop)]?e.elem[e.prop]=e.now:x.style(e.elem,e.prop,e.now+e.unit)}}},et.propHooks.scrollTop=et.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},x.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},x.fx=et.prototype.init,x.fx.step={};var tt,nt,rt=/^(?:toggle|show|hide)$/,ot=/queueHooks$/;function it(){nt&&(!1===y.hidden&&n.requestAnimationFrame?n.requestAnimationFrame(it):n.setTimeout(it,x.fx.interval),x.fx.tick())}function at(){return n.setTimeout((function(){tt=void 0})),tt=Date.now()}function ct(e,t){var n,r=0,o={height:e};for(t=t?1:0;r<4;r+=2-t)o["margin"+(n=oe[r])]=o["padding"+n]=e;return t&&(o.opacity=o.width=e),o}function st(e,t,n){for(var r,o=(lt.tweeners[t]||[]).concat(lt.tweeners["*"]),i=0,a=o.length;i1)},removeAttr:function(e){return this.each((function(){x.removeAttr(this,e)}))}}),x.extend({attr:function(e,t,n){var r,o,i=e.nodeType;if(3!==i&&8!==i&&2!==i)return"undefined"===typeof e.getAttribute?x.prop(e,t,n):(1===i&&x.isXMLDoc(e)||(o=x.attrHooks[t.toLowerCase()]||(x.expr.match.bool.test(t)?ut:void 0)),void 0!==n?null===n?void x.removeAttr(e,t):o&&"set"in o&&void 0!==(r=o.set(e,n,t))?r:(e.setAttribute(t,n+""),n):o&&"get"in o&&null!==(r=o.get(e,t))?r:null==(r=x.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!v.radioValue&&"radio"===t&&S(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,o=t&&t.match(P);if(o&&1===e.nodeType)for(;n=o[r++];)e.removeAttribute(n)}}),ut={set:function(e,t,n){return!1===t?x.removeAttr(e,n):e.setAttribute(n,n),n}},x.each(x.expr.match.bool.source.match(/\w+/g),(function(e,t){var n=ft[t]||x.find.attr;ft[t]=function(e,t,r){var o,i,a=t.toLowerCase();return r||(i=ft[a],ft[a]=o,o=null!=n(e,t,r)?a:null,ft[a]=i),o}}));var dt=/^(?:input|select|textarea|button)$/i,ht=/^(?:a|area)$/i;function pt(e){return(e.match(P)||[]).join(" ")}function zt(e){return e.getAttribute&&e.getAttribute("class")||""}function vt(e){return Array.isArray(e)?e:"string"===typeof e&&e.match(P)||[]}x.fn.extend({prop:function(e,t){return U(this,x.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each((function(){delete this[x.propFix[e]||e]}))}}),x.extend({prop:function(e,t,n){var r,o,i=e.nodeType;if(3!==i&&8!==i&&2!==i)return 1===i&&x.isXMLDoc(e)||(t=x.propFix[t]||t,o=x.propHooks[t]),void 0!==n?o&&"set"in o&&void 0!==(r=o.set(e,n,t))?r:e[t]=n:o&&"get"in o&&null!==(r=o.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=x.find.attr(e,"tabindex");return t?parseInt(t,10):dt.test(e.nodeName)||ht.test(e.nodeName)&&e.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),v.optSelected||(x.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),x.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],(function(){x.propFix[this.toLowerCase()]=this})),x.fn.extend({addClass:function(e){var t,n,r,o,i,a,c,s=0;if(g(e))return this.each((function(t){x(this).addClass(e.call(this,t,zt(this)))}));if((t=vt(e)).length)for(;n=this[s++];)if(o=zt(n),r=1===n.nodeType&&" "+pt(o)+" "){for(a=0;i=t[a++];)r.indexOf(" "+i+" ")<0&&(r+=i+" ");o!==(c=pt(r))&&n.setAttribute("class",c)}return this},removeClass:function(e){var t,n,r,o,i,a,c,s=0;if(g(e))return this.each((function(t){x(this).removeClass(e.call(this,t,zt(this)))}));if(!arguments.length)return this.attr("class","");if((t=vt(e)).length)for(;n=this[s++];)if(o=zt(n),r=1===n.nodeType&&" "+pt(o)+" "){for(a=0;i=t[a++];)for(;r.indexOf(" "+i+" ")>-1;)r=r.replace(" "+i+" "," ");o!==(c=pt(r))&&n.setAttribute("class",c)}return this},toggleClass:function(e,t){var n=typeof e,r="string"===n||Array.isArray(e);return"boolean"===typeof t&&r?t?this.addClass(e):this.removeClass(e):g(e)?this.each((function(n){x(this).toggleClass(e.call(this,n,zt(this),t),t)})):this.each((function(){var t,o,i,a;if(r)for(o=0,i=x(this),a=vt(e);t=a[o++];)i.hasClass(t)?i.removeClass(t):i.addClass(t);else void 0!==e&&"boolean"!==n||((t=zt(this))&&K.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||!1===e?"":K.get(this,"__className__")||""))}))},hasClass:function(e){var t,n,r=0;for(t=" "+e+" ";n=this[r++];)if(1===n.nodeType&&(" "+pt(zt(n))+" ").indexOf(t)>-1)return!0;return!1}});var gt=/\r/g;x.fn.extend({val:function(e){var t,n,r,o=this[0];return arguments.length?(r=g(e),this.each((function(n){var o;1===this.nodeType&&(null==(o=r?e.call(this,n,x(this).val()):e)?o="":"number"===typeof o?o+="":Array.isArray(o)&&(o=x.map(o,(function(e){return null==e?"":e+""}))),(t=x.valHooks[this.type]||x.valHooks[this.nodeName.toLowerCase()])&&"set"in t&&void 0!==t.set(this,o,"value")||(this.value=o))}))):o?(t=x.valHooks[o.type]||x.valHooks[o.nodeName.toLowerCase()])&&"get"in t&&void 0!==(n=t.get(o,"value"))?n:"string"===typeof(n=o.value)?n.replace(gt,""):null==n?"":n:void 0}}),x.extend({valHooks:{option:{get:function(e){var t=x.find.attr(e,"value");return null!=t?t:pt(x.text(e))}},select:{get:function(e){var t,n,r,o=e.options,i=e.selectedIndex,a="select-one"===e.type,c=a?null:[],s=a?i+1:o.length;for(r=i<0?s:a?i:0;r-1)&&(n=!0);return n||(e.selectedIndex=-1),i}}}}),x.each(["radio","checkbox"],(function(){x.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=x.inArray(x(e).val(),t)>-1}},v.checkOn||(x.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})})),v.focusin="onfocusin"in n;var mt=/^(?:focusinfocus|focusoutblur)$/,yt=function(e){e.stopPropagation()};x.extend(x.event,{trigger:function(e,t,r,o){var i,a,c,s,l,u,f,d,p=[r||y],z=h.call(e,"type")?e.type:e,v=h.call(e,"namespace")?e.namespace.split("."):[];if(a=d=c=r=r||y,3!==r.nodeType&&8!==r.nodeType&&!mt.test(z+x.event.triggered)&&(z.indexOf(".")>-1&&(v=z.split("."),z=v.shift(),v.sort()),l=z.indexOf(":")<0&&"on"+z,(e=e[x.expando]?e:new x.Event(z,"object"===typeof e&&e)).isTrigger=o?2:3,e.namespace=v.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+v.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=r),t=null==t?[e]:x.makeArray(t,[e]),f=x.event.special[z]||{},o||!f.trigger||!1!==f.trigger.apply(r,t))){if(!o&&!f.noBubble&&!m(r)){for(s=f.delegateType||z,mt.test(s+z)||(a=a.parentNode);a;a=a.parentNode)p.push(a),c=a;c===(r.ownerDocument||y)&&p.push(c.defaultView||c.parentWindow||n)}for(i=0;(a=p[i++])&&!e.isPropagationStopped();)d=a,e.type=i>1?s:f.bindType||z,(u=(K.get(a,"events")||Object.create(null))[e.type]&&K.get(a,"handle"))&&u.apply(a,t),(u=l&&a[l])&&u.apply&&Z(a)&&(e.result=u.apply(a,t),!1===e.result&&e.preventDefault());return e.type=z,o||e.isDefaultPrevented()||f._default&&!1!==f._default.apply(p.pop(),t)||!Z(r)||l&&g(r[z])&&!m(r)&&((c=r[l])&&(r[l]=null),x.event.triggered=z,e.isPropagationStopped()&&d.addEventListener(z,yt),r[z](),e.isPropagationStopped()&&d.removeEventListener(z,yt),x.event.triggered=void 0,c&&(r[l]=c)),e.result}},simulate:function(e,t,n){var r=x.extend(new x.Event,n,{type:e,isSimulated:!0});x.event.trigger(r,null,t)}}),x.fn.extend({trigger:function(e,t){return this.each((function(){x.event.trigger(e,t,this)}))},triggerHandler:function(e,t){var n=this[0];if(n)return x.event.trigger(e,t,n,!0)}}),v.focusin||x.each({focus:"focusin",blur:"focusout"},(function(e,t){var n=function(e){x.event.simulate(t,e.target,x.event.fix(e))};x.event.special[t]={setup:function(){var r=this.ownerDocument||this.document||this,o=K.access(r,t);o||r.addEventListener(e,n,!0),K.access(r,t,(o||0)+1)},teardown:function(){var r=this.ownerDocument||this.document||this,o=K.access(r,t)-1;o?K.access(r,t,o):(r.removeEventListener(e,n,!0),K.remove(r,t))}}}));var bt=n.location,wt={guid:Date.now()},kt=/\?/;x.parseXML=function(e){var t,r;if(!e||"string"!==typeof e)return null;try{t=(new n.DOMParser).parseFromString(e,"text/xml")}catch(o){}return r=t&&t.getElementsByTagName("parsererror")[0],t&&!r||x.error("Invalid XML: "+(r?x.map(r.childNodes,(function(e){return e.textContent})).join("\n"):e)),t};var xt=/\[\]$/,jt=/\r?\n/g,Mt=/^(?:submit|button|image|reset|file)$/i,Ct=/^(?:input|select|textarea|keygen)/i;function _t(e,t,n,r){var o;if(Array.isArray(t))x.each(t,(function(t,o){n||xt.test(e)?r(e,o):_t(e+"["+("object"===typeof o&&null!=o?t:"")+"]",o,n,r)}));else if(n||"object"!==k(t))r(e,t);else for(o in t)_t(e+"["+o+"]",t[o],n,r)}x.param=function(e,t){var n,r=[],o=function(e,t){var n=g(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!x.isPlainObject(e))x.each(e,(function(){o(this.name,this.value)}));else for(n in e)_t(n,e[n],t,o);return r.join("&")},x.fn.extend({serialize:function(){return x.param(this.serializeArray())},serializeArray:function(){return this.map((function(){var e=x.prop(this,"elements");return e?x.makeArray(e):this})).filter((function(){var e=this.type;return this.name&&!x(this).is(":disabled")&&Ct.test(this.nodeName)&&!Mt.test(e)&&(this.checked||!he.test(e))})).map((function(e,t){var n=x(this).val();return null==n?null:Array.isArray(n)?x.map(n,(function(e){return{name:t.name,value:e.replace(jt,"\r\n")}})):{name:t.name,value:n.replace(jt,"\r\n")}})).get()}});var qt=/%20/g,St=/#.*$/,Ot=/([?&])_=[^&]*/,Et=/^(.*?):[ \t]*([^\r\n]*)$/gm,Tt=/^(?:GET|HEAD)$/,At=/^\/\//,Lt={},Ht={},Dt="*/".concat("*"),Pt=y.createElement("a");function Vt(e){return function(t,n){"string"!==typeof t&&(n=t,t="*");var r,o=0,i=t.toLowerCase().match(P)||[];if(g(n))for(;r=i[o++];)"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function Rt(e,t,n,r){var o={},i=e===Ht;function a(c){var s;return o[c]=!0,x.each(e[c]||[],(function(e,c){var l=c(t,n,r);return"string"!==typeof l||i||o[l]?i?!(s=l):void 0:(t.dataTypes.unshift(l),a(l),!1)})),s}return a(t.dataTypes[0])||!o["*"]&&a("*")}function It(e,t){var n,r,o=x.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((o[n]?e:r||(r={}))[n]=t[n]);return r&&x.extend(!0,e,r),e}Pt.href=bt.href,x.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:bt.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(bt.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Dt,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":x.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?It(It(e,x.ajaxSettings),t):It(x.ajaxSettings,e)},ajaxPrefilter:Vt(Lt),ajaxTransport:Vt(Ht),ajax:function(e,t){"object"===typeof e&&(t=e,e=void 0),t=t||{};var r,o,i,a,c,s,l,u,f,d,h=x.ajaxSetup({},t),p=h.context||h,z=h.context&&(p.nodeType||p.jquery)?x(p):x.event,v=x.Deferred(),g=x.Callbacks("once memory"),m=h.statusCode||{},b={},w={},k="canceled",j={readyState:0,getResponseHeader:function(e){var t;if(l){if(!a)for(a={};t=Et.exec(i);)a[t[1].toLowerCase()+" "]=(a[t[1].toLowerCase()+" "]||[]).concat(t[2]);t=a[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return l?i:null},setRequestHeader:function(e,t){return null==l&&(e=w[e.toLowerCase()]=w[e.toLowerCase()]||e,b[e]=t),this},overrideMimeType:function(e){return null==l&&(h.mimeType=e),this},statusCode:function(e){var t;if(e)if(l)j.always(e[j.status]);else for(t in e)m[t]=[m[t],e[t]];return this},abort:function(e){var t=e||k;return r&&r.abort(t),M(0,t),this}};if(v.promise(j),h.url=((e||h.url||bt.href)+"").replace(At,bt.protocol+"//"),h.type=t.method||t.type||h.method||h.type,h.dataTypes=(h.dataType||"*").toLowerCase().match(P)||[""],null==h.crossDomain){s=y.createElement("a");try{s.href=h.url,s.href=s.href,h.crossDomain=Pt.protocol+"//"+Pt.host!==s.protocol+"//"+s.host}catch(C){h.crossDomain=!0}}if(h.data&&h.processData&&"string"!==typeof h.data&&(h.data=x.param(h.data,h.traditional)),Rt(Lt,h,t,j),l)return j;for(f in(u=x.event&&h.global)&&0===x.active++&&x.event.trigger("ajaxStart"),h.type=h.type.toUpperCase(),h.hasContent=!Tt.test(h.type),o=h.url.replace(St,""),h.hasContent?h.data&&h.processData&&0===(h.contentType||"").indexOf("application/x-www-form-urlencoded")&&(h.data=h.data.replace(qt,"+")):(d=h.url.slice(o.length),h.data&&(h.processData||"string"===typeof h.data)&&(o+=(kt.test(o)?"&":"?")+h.data,delete h.data),!1===h.cache&&(o=o.replace(Ot,"$1"),d=(kt.test(o)?"&":"?")+"_="+wt.guid+++d),h.url=o+d),h.ifModified&&(x.lastModified[o]&&j.setRequestHeader("If-Modified-Since",x.lastModified[o]),x.etag[o]&&j.setRequestHeader("If-None-Match",x.etag[o])),(h.data&&h.hasContent&&!1!==h.contentType||t.contentType)&&j.setRequestHeader("Content-Type",h.contentType),j.setRequestHeader("Accept",h.dataTypes[0]&&h.accepts[h.dataTypes[0]]?h.accepts[h.dataTypes[0]]+("*"!==h.dataTypes[0]?", "+Dt+"; q=0.01":""):h.accepts["*"]),h.headers)j.setRequestHeader(f,h.headers[f]);if(h.beforeSend&&(!1===h.beforeSend.call(p,j,h)||l))return j.abort();if(k="abort",g.add(h.complete),j.done(h.success),j.fail(h.error),r=Rt(Ht,h,t,j)){if(j.readyState=1,u&&z.trigger("ajaxSend",[j,h]),l)return j;h.async&&h.timeout>0&&(c=n.setTimeout((function(){j.abort("timeout")}),h.timeout));try{l=!1,r.send(b,M)}catch(C){if(l)throw C;M(-1,C)}}else M(-1,"No Transport");function M(e,t,a,s){var f,d,y,b,w,k=t;l||(l=!0,c&&n.clearTimeout(c),r=void 0,i=s||"",j.readyState=e>0?4:0,f=e>=200&&e<300||304===e,a&&(b=function(e,t,n){for(var r,o,i,a,c=e.contents,s=e.dataTypes;"*"===s[0];)s.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(o in c)if(c[o]&&c[o].test(r)){s.unshift(o);break}if(s[0]in n)i=s[0];else{for(o in n){if(!s[0]||e.converters[o+" "+s[0]]){i=o;break}a||(a=o)}i=i||a}if(i)return i!==s[0]&&s.unshift(i),n[i]}(h,j,a)),!f&&x.inArray("script",h.dataTypes)>-1&&x.inArray("json",h.dataTypes)<0&&(h.converters["text script"]=function(){}),b=function(e,t,n,r){var o,i,a,c,s,l={},u=e.dataTypes.slice();if(u[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];for(i=u.shift();i;)if(e.responseFields[i]&&(n[e.responseFields[i]]=t),!s&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),s=i,i=u.shift())if("*"===i)i=s;else if("*"!==s&&s!==i){if(!(a=l[s+" "+i]||l["* "+i]))for(o in l)if((c=o.split(" "))[1]===i&&(a=l[s+" "+c[0]]||l["* "+c[0]])){!0===a?a=l[o]:!0!==l[o]&&(i=c[0],u.unshift(c[1]));break}if(!0!==a)if(a&&e.throws)t=a(t);else try{t=a(t)}catch(C){return{state:"parsererror",error:a?C:"No conversion from "+s+" to "+i}}}return{state:"success",data:t}}(h,b,j,f),f?(h.ifModified&&((w=j.getResponseHeader("Last-Modified"))&&(x.lastModified[o]=w),(w=j.getResponseHeader("etag"))&&(x.etag[o]=w)),204===e||"HEAD"===h.type?k="nocontent":304===e?k="notmodified":(k=b.state,d=b.data,f=!(y=b.error))):(y=k,!e&&k||(k="error",e<0&&(e=0))),j.status=e,j.statusText=(t||k)+"",f?v.resolveWith(p,[d,k,j]):v.rejectWith(p,[j,k,y]),j.statusCode(m),m=void 0,u&&z.trigger(f?"ajaxSuccess":"ajaxError",[j,h,f?d:y]),g.fireWith(p,[j,k]),u&&(z.trigger("ajaxComplete",[j,h]),--x.active||x.event.trigger("ajaxStop")))}return j},getJSON:function(e,t,n){return x.get(e,t,n,"json")},getScript:function(e,t){return x.get(e,void 0,t,"script")}}),x.each(["get","post"],(function(e,t){x[t]=function(e,n,r,o){return g(n)&&(o=o||r,r=n,n=void 0),x.ajax(x.extend({url:e,type:t,dataType:o,data:n,success:r},x.isPlainObject(e)&&e))}})),x.ajaxPrefilter((function(e){var t;for(t in e.headers)"content-type"===t.toLowerCase()&&(e.contentType=e.headers[t]||"")})),x._evalUrl=function(e,t,n){return x.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){x.globalEval(e,t,n)}})},x.fn.extend({wrapAll:function(e){var t;return this[0]&&(g(e)&&(e=e.call(this[0])),t=x(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map((function(){for(var e=this;e.firstElementChild;)e=e.firstElementChild;return e})).append(this)),this},wrapInner:function(e){return g(e)?this.each((function(t){x(this).wrapInner(e.call(this,t))})):this.each((function(){var t=x(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)}))},wrap:function(e){var t=g(e);return this.each((function(n){x(this).wrapAll(t?e.call(this,n):e)}))},unwrap:function(e){return this.parent(e).not("body").each((function(){x(this).replaceWith(this.childNodes)})),this}}),x.expr.pseudos.hidden=function(e){return!x.expr.pseudos.visible(e)},x.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},x.ajaxSettings.xhr=function(){try{return new n.XMLHttpRequest}catch(e){}};var Nt={0:200,1223:204},Ft=x.ajaxSettings.xhr();v.cors=!!Ft&&"withCredentials"in Ft,v.ajax=Ft=!!Ft,x.ajaxTransport((function(e){var t,r;if(v.cors||Ft&&!e.crossDomain)return{send:function(o,i){var a,c=e.xhr();if(c.open(e.type,e.url,e.async,e.username,e.password),e.xhrFields)for(a in e.xhrFields)c[a]=e.xhrFields[a];for(a in e.mimeType&&c.overrideMimeType&&c.overrideMimeType(e.mimeType),e.crossDomain||o["X-Requested-With"]||(o["X-Requested-With"]="XMLHttpRequest"),o)c.setRequestHeader(a,o[a]);t=function(e){return function(){t&&(t=r=c.onload=c.onerror=c.onabort=c.ontimeout=c.onreadystatechange=null,"abort"===e?c.abort():"error"===e?"number"!==typeof c.status?i(0,"error"):i(c.status,c.statusText):i(Nt[c.status]||c.status,c.statusText,"text"!==(c.responseType||"text")||"string"!==typeof c.responseText?{binary:c.response}:{text:c.responseText},c.getAllResponseHeaders()))}},c.onload=t(),r=c.onerror=c.ontimeout=t("error"),void 0!==c.onabort?c.onabort=r:c.onreadystatechange=function(){4===c.readyState&&n.setTimeout((function(){t&&r()}))},t=t("abort");try{c.send(e.hasContent&&e.data||null)}catch(s){if(t)throw s}},abort:function(){t&&t()}}})),x.ajaxPrefilter((function(e){e.crossDomain&&(e.contents.script=!1)})),x.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return x.globalEval(e),e}}}),x.ajaxPrefilter("script",(function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")})),x.ajaxTransport("script",(function(e){var t,n;if(e.crossDomain||e.scriptAttrs)return{send:function(r,o){t=x("\n\n The CSV file is of the form\n\n Date,SeriesA,SeriesB,SeriesC\n YYYYMMDD,A1,B1,C1\n YYYYMMDD,A2,B2,C2\n\n If the 'errorBars' option is set in the constructor, the input should be of\n the form\n Date,SeriesA,SeriesB,...\n YYYYMMDD,A1,sigmaA1,B1,sigmaB1,...\n YYYYMMDD,A2,sigmaA2,B2,sigmaB2,...\n\n If the 'fractions' option is set, the input should be of the form:\n\n Date,SeriesA,SeriesB,...\n YYYYMMDD,A1/B1,A2/B2,...\n YYYYMMDD,A1/B1,A2/B2,...\n\n And error bars will be calculated automatically using a binomial distribution.\n\n For further documentation and examples, see http://dygraphs.com/\n */\n\n'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nvar _slicedToArray = (function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i['return']) _i['return'](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError('Invalid attempt to destructure non-iterable instance'); } }; })();\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _dygraphLayout = require('./dygraph-layout');\n\nvar _dygraphLayout2 = _interopRequireDefault(_dygraphLayout);\n\nvar _dygraphCanvas = require('./dygraph-canvas');\n\nvar _dygraphCanvas2 = _interopRequireDefault(_dygraphCanvas);\n\nvar _dygraphOptions = require('./dygraph-options');\n\nvar _dygraphOptions2 = _interopRequireDefault(_dygraphOptions);\n\nvar _dygraphInteractionModel = require('./dygraph-interaction-model');\n\nvar _dygraphInteractionModel2 = _interopRequireDefault(_dygraphInteractionModel);\n\nvar _dygraphTickers = require('./dygraph-tickers');\n\nvar DygraphTickers = _interopRequireWildcard(_dygraphTickers);\n\nvar _dygraphUtils = require('./dygraph-utils');\n\nvar utils = _interopRequireWildcard(_dygraphUtils);\n\nvar _dygraphDefaultAttrs = require('./dygraph-default-attrs');\n\nvar _dygraphDefaultAttrs2 = _interopRequireDefault(_dygraphDefaultAttrs);\n\nvar _dygraphOptionsReference = require('./dygraph-options-reference');\n\nvar _dygraphOptionsReference2 = _interopRequireDefault(_dygraphOptionsReference);\n\nvar _iframeTarp = require('./iframe-tarp');\n\nvar _iframeTarp2 = _interopRequireDefault(_iframeTarp);\n\nvar _datahandlerDefault = require('./datahandler/default');\n\nvar _datahandlerDefault2 = _interopRequireDefault(_datahandlerDefault);\n\nvar _datahandlerBarsError = require('./datahandler/bars-error');\n\nvar _datahandlerBarsError2 = _interopRequireDefault(_datahandlerBarsError);\n\nvar _datahandlerBarsCustom = require('./datahandler/bars-custom');\n\nvar _datahandlerBarsCustom2 = _interopRequireDefault(_datahandlerBarsCustom);\n\nvar _datahandlerDefaultFractions = require('./datahandler/default-fractions');\n\nvar _datahandlerDefaultFractions2 = _interopRequireDefault(_datahandlerDefaultFractions);\n\nvar _datahandlerBarsFractions = require('./datahandler/bars-fractions');\n\nvar _datahandlerBarsFractions2 = _interopRequireDefault(_datahandlerBarsFractions);\n\nvar _datahandlerBars = require('./datahandler/bars');\n\nvar _datahandlerBars2 = _interopRequireDefault(_datahandlerBars);\n\nvar _pluginsAnnotations = require('./plugins/annotations');\n\nvar _pluginsAnnotations2 = _interopRequireDefault(_pluginsAnnotations);\n\nvar _pluginsAxes = require('./plugins/axes');\n\nvar _pluginsAxes2 = _interopRequireDefault(_pluginsAxes);\n\nvar _pluginsChartLabels = require('./plugins/chart-labels');\n\nvar _pluginsChartLabels2 = _interopRequireDefault(_pluginsChartLabels);\n\nvar _pluginsGrid = require('./plugins/grid');\n\nvar _pluginsGrid2 = _interopRequireDefault(_pluginsGrid);\n\nvar _pluginsLegend = require('./plugins/legend');\n\nvar _pluginsLegend2 = _interopRequireDefault(_pluginsLegend);\n\nvar _pluginsRangeSelector = require('./plugins/range-selector');\n\nvar _pluginsRangeSelector2 = _interopRequireDefault(_pluginsRangeSelector);\n\nvar _dygraphGviz = require('./dygraph-gviz');\n\nvar _dygraphGviz2 = _interopRequireDefault(_dygraphGviz);\n\n\"use strict\";\n\n/**\n * Creates an interactive, zoomable chart.\n *\n * @constructor\n * @param {div | String} div A div or the id of a div into which to construct\n * the chart.\n * @param {String | Function} file A file containing CSV data or a function\n * that returns this data. The most basic expected format for each line is\n * \"YYYY/MM/DD,val1,val2,...\". For more information, see\n * http://dygraphs.com/data.html.\n * @param {Object} attrs Various other attributes, e.g. errorBars determines\n * whether the input data contains error ranges. For a complete list of\n * options, see http://dygraphs.com/options.html.\n */\nvar Dygraph = function Dygraph(div, data, opts) {\n this.__init__(div, data, opts);\n};\n\nDygraph.NAME = \"Dygraph\";\nDygraph.VERSION = \"2.0.0\";\n\n// Various default values\nDygraph.DEFAULT_ROLL_PERIOD = 1;\nDygraph.DEFAULT_WIDTH = 480;\nDygraph.DEFAULT_HEIGHT = 320;\n\n// For max 60 Hz. animation:\nDygraph.ANIMATION_STEPS = 12;\nDygraph.ANIMATION_DURATION = 200;\n\n/**\n * Standard plotters. These may be used by clients.\n * Available plotters are:\n * - Dygraph.Plotters.linePlotter: draws central lines (most common)\n * - Dygraph.Plotters.errorPlotter: draws error bars\n * - Dygraph.Plotters.fillPlotter: draws fills under lines (used with fillGraph)\n *\n * By default, the plotter is [fillPlotter, errorPlotter, linePlotter].\n * This causes all the lines to be drawn over all the fills/error bars.\n */\nDygraph.Plotters = _dygraphCanvas2['default']._Plotters;\n\n// Used for initializing annotation CSS rules only once.\nDygraph.addedAnnotationCSS = false;\n\n/**\n * Initializes the Dygraph. This creates a new DIV and constructs the PlotKit\n * and context <canvas> inside of it. See the constructor for details.\n * on the parameters.\n * @param {Element} div the Element to render the graph into.\n * @param {string | Function} file Source data\n * @param {Object} attrs Miscellaneous other options\n * @private\n */\nDygraph.prototype.__init__ = function (div, file, attrs) {\n this.is_initial_draw_ = true;\n this.readyFns_ = [];\n\n // Support two-argument constructor\n if (attrs === null || attrs === undefined) {\n attrs = {};\n }\n\n attrs = Dygraph.copyUserAttrs_(attrs);\n\n if (typeof div == 'string') {\n div = document.getElementById(div);\n }\n\n if (!div) {\n throw new Error('Constructing dygraph with a non-existent div!');\n }\n\n // Copy the important bits into the object\n // TODO(danvk): most of these should just stay in the attrs_ dictionary.\n this.maindiv_ = div;\n this.file_ = file;\n this.rollPeriod_ = attrs.rollPeriod || Dygraph.DEFAULT_ROLL_PERIOD;\n this.previousVerticalX_ = -1;\n this.fractions_ = attrs.fractions || false;\n this.dateWindow_ = attrs.dateWindow || null;\n\n this.annotations_ = [];\n\n // Clear the div. This ensure that, if multiple dygraphs are passed the same\n // div, then only one will be drawn.\n div.innerHTML = \"\";\n\n // For historical reasons, the 'width' and 'height' options trump all CSS\n // rules _except_ for an explicit 'width' or 'height' on the div.\n // As an added convenience, if the div has zero height (like
does\n // without any styles), then we use a default height/width.\n if (div.style.width === '' && attrs.width) {\n div.style.width = attrs.width + \"px\";\n }\n if (div.style.height === '' && attrs.height) {\n div.style.height = attrs.height + \"px\";\n }\n if (div.style.height === '' && div.clientHeight === 0) {\n div.style.height = Dygraph.DEFAULT_HEIGHT + \"px\";\n if (div.style.width === '') {\n div.style.width = Dygraph.DEFAULT_WIDTH + \"px\";\n }\n }\n // These will be zero if the dygraph's div is hidden. In that case,\n // use the user-specified attributes if present. If not, use zero\n // and assume the user will call resize to fix things later.\n this.width_ = div.clientWidth || attrs.width || 0;\n this.height_ = div.clientHeight || attrs.height || 0;\n\n // TODO(danvk): set fillGraph to be part of attrs_ here, not user_attrs_.\n if (attrs.stackedGraph) {\n attrs.fillGraph = true;\n // TODO(nikhilk): Add any other stackedGraph checks here.\n }\n\n // DEPRECATION WARNING: All option processing should be moved from\n // attrs_ and user_attrs_ to options_, which holds all this information.\n //\n // Dygraphs has many options, some of which interact with one another.\n // To keep track of everything, we maintain two sets of options:\n //\n // this.user_attrs_ only options explicitly set by the user.\n // this.attrs_ defaults, options derived from user_attrs_, data.\n //\n // Options are then accessed this.attr_('attr'), which first looks at\n // user_attrs_ and then computed attrs_. This way Dygraphs can set intelligent\n // defaults without overriding behavior that the user specifically asks for.\n this.user_attrs_ = {};\n utils.update(this.user_attrs_, attrs);\n\n // This sequence ensures that Dygraph.DEFAULT_ATTRS is never modified.\n this.attrs_ = {};\n utils.updateDeep(this.attrs_, _dygraphDefaultAttrs2['default']);\n\n this.boundaryIds_ = [];\n this.setIndexByName_ = {};\n this.datasetIndex_ = [];\n\n this.registeredEvents_ = [];\n this.eventListeners_ = {};\n\n this.attributes_ = new _dygraphOptions2['default'](this);\n\n // Create the containing DIV and other interactive elements\n this.createInterface_();\n\n // Activate plugins.\n this.plugins_ = [];\n var plugins = Dygraph.PLUGINS.concat(this.getOption('plugins'));\n for (var i = 0; i < plugins.length; i++) {\n // the plugins option may contain either plugin classes or instances.\n // Plugin instances contain an activate method.\n var Plugin = plugins[i]; // either a constructor or an instance.\n var pluginInstance;\n if (typeof Plugin.activate !== 'undefined') {\n pluginInstance = Plugin;\n } else {\n pluginInstance = new Plugin();\n }\n\n var pluginDict = {\n plugin: pluginInstance,\n events: {},\n options: {},\n pluginOptions: {}\n };\n\n var handlers = pluginInstance.activate(this);\n for (var eventName in handlers) {\n if (!handlers.hasOwnProperty(eventName)) continue;\n // TODO(danvk): validate eventName.\n pluginDict.events[eventName] = handlers[eventName];\n }\n\n this.plugins_.push(pluginDict);\n }\n\n // At this point, plugins can no longer register event handlers.\n // Construct a map from event -> ordered list of [callback, plugin].\n for (var i = 0; i < this.plugins_.length; i++) {\n var plugin_dict = this.plugins_[i];\n for (var eventName in plugin_dict.events) {\n if (!plugin_dict.events.hasOwnProperty(eventName)) continue;\n var callback = plugin_dict.events[eventName];\n\n var pair = [plugin_dict.plugin, callback];\n if (!(eventName in this.eventListeners_)) {\n this.eventListeners_[eventName] = [pair];\n } else {\n this.eventListeners_[eventName].push(pair);\n }\n }\n }\n\n this.createDragInterface_();\n\n this.start_();\n};\n\n/**\n * Triggers a cascade of events to the various plugins which are interested in them.\n * Returns true if the \"default behavior\" should be prevented, i.e. if one\n * of the event listeners called event.preventDefault().\n * @private\n */\nDygraph.prototype.cascadeEvents_ = function (name, extra_props) {\n if (!(name in this.eventListeners_)) return false;\n\n // QUESTION: can we use objects & prototypes to speed this up?\n var e = {\n dygraph: this,\n cancelable: false,\n defaultPrevented: false,\n preventDefault: function preventDefault() {\n if (!e.cancelable) throw \"Cannot call preventDefault on non-cancelable event.\";\n e.defaultPrevented = true;\n },\n propagationStopped: false,\n stopPropagation: function stopPropagation() {\n e.propagationStopped = true;\n }\n };\n utils.update(e, extra_props);\n\n var callback_plugin_pairs = this.eventListeners_[name];\n if (callback_plugin_pairs) {\n for (var i = callback_plugin_pairs.length - 1; i >= 0; i--) {\n var plugin = callback_plugin_pairs[i][0];\n var callback = callback_plugin_pairs[i][1];\n callback.call(plugin, e);\n if (e.propagationStopped) break;\n }\n }\n return e.defaultPrevented;\n};\n\n/**\n * Fetch a plugin instance of a particular class. Only for testing.\n * @private\n * @param {!Class} type The type of the plugin.\n * @return {Object} Instance of the plugin, or null if there is none.\n */\nDygraph.prototype.getPluginInstance_ = function (type) {\n for (var i = 0; i < this.plugins_.length; i++) {\n var p = this.plugins_[i];\n if (p.plugin instanceof type) {\n return p.plugin;\n }\n }\n return null;\n};\n\n/**\n * Returns the zoomed status of the chart for one or both axes.\n *\n * Axis is an optional parameter. Can be set to 'x' or 'y'.\n *\n * The zoomed status for an axis is set whenever a user zooms using the mouse\n * or when the dateWindow or valueRange are updated. Double-clicking or calling\n * resetZoom() resets the zoom status for the chart.\n */\nDygraph.prototype.isZoomed = function (axis) {\n var isZoomedX = !!this.dateWindow_;\n if (axis === 'x') return isZoomedX;\n\n var isZoomedY = this.axes_.map(function (axis) {\n return !!axis.valueRange;\n }).indexOf(true) >= 0;\n if (axis === null || axis === undefined) {\n return isZoomedX || isZoomedY;\n }\n if (axis === 'y') return isZoomedY;\n\n throw new Error('axis parameter is [' + axis + '] must be null, \\'x\\' or \\'y\\'.');\n};\n\n/**\n * Returns information about the Dygraph object, including its containing ID.\n */\nDygraph.prototype.toString = function () {\n var maindiv = this.maindiv_;\n var id = maindiv && maindiv.id ? maindiv.id : maindiv;\n return \"[Dygraph \" + id + \"]\";\n};\n\n/**\n * @private\n * Returns the value of an option. This may be set by the user (either in the\n * constructor or by calling updateOptions) or by dygraphs, and may be set to a\n * per-series value.\n * @param {string} name The name of the option, e.g. 'rollPeriod'.\n * @param {string} [seriesName] The name of the series to which the option\n * will be applied. If no per-series value of this option is available, then\n * the global value is returned. This is optional.\n * @return { ... } The value of the option.\n */\nDygraph.prototype.attr_ = function (name, seriesName) {\n // For \"production\" code, this gets removed by uglifyjs.\n if (typeof process !== 'undefined') {\n if (process.env.NODE_ENV != 'production') {\n if (typeof _dygraphOptionsReference2['default'] === 'undefined') {\n console.error('Must include options reference JS for testing');\n } else if (!_dygraphOptionsReference2['default'].hasOwnProperty(name)) {\n console.error('Dygraphs is using property ' + name + ', which has no ' + 'entry in the Dygraphs.OPTIONS_REFERENCE listing.');\n // Only log this error once.\n _dygraphOptionsReference2['default'][name] = true;\n }\n }\n }\n return seriesName ? this.attributes_.getForSeries(name, seriesName) : this.attributes_.get(name);\n};\n\n/**\n * Returns the current value for an option, as set in the constructor or via\n * updateOptions. You may pass in an (optional) series name to get per-series\n * values for the option.\n *\n * All values returned by this method should be considered immutable. If you\n * modify them, there is no guarantee that the changes will be honored or that\n * dygraphs will remain in a consistent state. If you want to modify an option,\n * use updateOptions() instead.\n *\n * @param {string} name The name of the option (e.g. 'strokeWidth')\n * @param {string=} opt_seriesName Series name to get per-series values.\n * @return {*} The value of the option.\n */\nDygraph.prototype.getOption = function (name, opt_seriesName) {\n return this.attr_(name, opt_seriesName);\n};\n\n/**\n * Like getOption(), but specifically returns a number.\n * This is a convenience function for working with the Closure Compiler.\n * @param {string} name The name of the option (e.g. 'strokeWidth')\n * @param {string=} opt_seriesName Series name to get per-series values.\n * @return {number} The value of the option.\n * @private\n */\nDygraph.prototype.getNumericOption = function (name, opt_seriesName) {\n return (/** @type{number} */this.getOption(name, opt_seriesName)\n );\n};\n\n/**\n * Like getOption(), but specifically returns a string.\n * This is a convenience function for working with the Closure Compiler.\n * @param {string} name The name of the option (e.g. 'strokeWidth')\n * @param {string=} opt_seriesName Series name to get per-series values.\n * @return {string} The value of the option.\n * @private\n */\nDygraph.prototype.getStringOption = function (name, opt_seriesName) {\n return (/** @type{string} */this.getOption(name, opt_seriesName)\n );\n};\n\n/**\n * Like getOption(), but specifically returns a boolean.\n * This is a convenience function for working with the Closure Compiler.\n * @param {string} name The name of the option (e.g. 'strokeWidth')\n * @param {string=} opt_seriesName Series name to get per-series values.\n * @return {boolean} The value of the option.\n * @private\n */\nDygraph.prototype.getBooleanOption = function (name, opt_seriesName) {\n return (/** @type{boolean} */this.getOption(name, opt_seriesName)\n );\n};\n\n/**\n * Like getOption(), but specifically returns a function.\n * This is a convenience function for working with the Closure Compiler.\n * @param {string} name The name of the option (e.g. 'strokeWidth')\n * @param {string=} opt_seriesName Series name to get per-series values.\n * @return {function(...)} The value of the option.\n * @private\n */\nDygraph.prototype.getFunctionOption = function (name, opt_seriesName) {\n return (/** @type{function(...)} */this.getOption(name, opt_seriesName)\n );\n};\n\nDygraph.prototype.getOptionForAxis = function (name, axis) {\n return this.attributes_.getForAxis(name, axis);\n};\n\n/**\n * @private\n * @param {string} axis The name of the axis (i.e. 'x', 'y' or 'y2')\n * @return { ... } A function mapping string -> option value\n */\nDygraph.prototype.optionsViewForAxis_ = function (axis) {\n var self = this;\n return function (opt) {\n var axis_opts = self.user_attrs_.axes;\n if (axis_opts && axis_opts[axis] && axis_opts[axis].hasOwnProperty(opt)) {\n return axis_opts[axis][opt];\n }\n\n // I don't like that this is in a second spot.\n if (axis === 'x' && opt === 'logscale') {\n // return the default value.\n // TODO(konigsberg): pull the default from a global default.\n return false;\n }\n\n // user-specified attributes always trump defaults, even if they're less\n // specific.\n if (typeof self.user_attrs_[opt] != 'undefined') {\n return self.user_attrs_[opt];\n }\n\n axis_opts = self.attrs_.axes;\n if (axis_opts && axis_opts[axis] && axis_opts[axis].hasOwnProperty(opt)) {\n return axis_opts[axis][opt];\n }\n // check old-style axis options\n // TODO(danvk): add a deprecation warning if either of these match.\n if (axis == 'y' && self.axes_[0].hasOwnProperty(opt)) {\n return self.axes_[0][opt];\n } else if (axis == 'y2' && self.axes_[1].hasOwnProperty(opt)) {\n return self.axes_[1][opt];\n }\n return self.attr_(opt);\n };\n};\n\n/**\n * Returns the current rolling period, as set by the user or an option.\n * @return {number} The number of points in the rolling window\n */\nDygraph.prototype.rollPeriod = function () {\n return this.rollPeriod_;\n};\n\n/**\n * Returns the currently-visible x-range. This can be affected by zooming,\n * panning or a call to updateOptions.\n * Returns a two-element array: [left, right].\n * If the Dygraph has dates on the x-axis, these will be millis since epoch.\n */\nDygraph.prototype.xAxisRange = function () {\n return this.dateWindow_ ? this.dateWindow_ : this.xAxisExtremes();\n};\n\n/**\n * Returns the lower- and upper-bound x-axis values of the data set.\n */\nDygraph.prototype.xAxisExtremes = function () {\n var pad = this.getNumericOption('xRangePad') / this.plotter_.area.w;\n if (this.numRows() === 0) {\n return [0 - pad, 1 + pad];\n }\n var left = this.rawData_[0][0];\n var right = this.rawData_[this.rawData_.length - 1][0];\n if (pad) {\n // Must keep this in sync with dygraph-layout _evaluateLimits()\n var range = right - left;\n left -= range * pad;\n right += range * pad;\n }\n return [left, right];\n};\n\n/**\n * Returns the lower- and upper-bound y-axis values for each axis. These are\n * the ranges you'll get if you double-click to zoom out or call resetZoom().\n * The return value is an array of [low, high] tuples, one for each y-axis.\n */\nDygraph.prototype.yAxisExtremes = function () {\n // TODO(danvk): this is pretty inefficient\n var packed = this.gatherDatasets_(this.rolledSeries_, null);\n var extremes = packed.extremes;\n\n var saveAxes = this.axes_;\n this.computeYAxisRanges_(extremes);\n var newAxes = this.axes_;\n this.axes_ = saveAxes;\n return newAxes.map(function (axis) {\n return axis.extremeRange;\n });\n};\n\n/**\n * Returns the currently-visible y-range for an axis. This can be affected by\n * zooming, panning or a call to updateOptions. Axis indices are zero-based. If\n * called with no arguments, returns the range of the first axis.\n * Returns a two-element array: [bottom, top].\n */\nDygraph.prototype.yAxisRange = function (idx) {\n if (typeof idx == \"undefined\") idx = 0;\n if (idx < 0 || idx >= this.axes_.length) {\n return null;\n }\n var axis = this.axes_[idx];\n return [axis.computedValueRange[0], axis.computedValueRange[1]];\n};\n\n/**\n * Returns the currently-visible y-ranges for each axis. This can be affected by\n * zooming, panning, calls to updateOptions, etc.\n * Returns an array of [bottom, top] pairs, one for each y-axis.\n */\nDygraph.prototype.yAxisRanges = function () {\n var ret = [];\n for (var i = 0; i < this.axes_.length; i++) {\n ret.push(this.yAxisRange(i));\n }\n return ret;\n};\n\n// TODO(danvk): use these functions throughout dygraphs.\n/**\n * Convert from data coordinates to canvas/div X/Y coordinates.\n * If specified, do this conversion for the coordinate system of a particular\n * axis. Uses the first axis by default.\n * Returns a two-element array: [X, Y]\n *\n * Note: use toDomXCoord instead of toDomCoords(x, null) and use toDomYCoord\n * instead of toDomCoords(null, y, axis).\n */\nDygraph.prototype.toDomCoords = function (x, y, axis) {\n return [this.toDomXCoord(x), this.toDomYCoord(y, axis)];\n};\n\n/**\n * Convert from data x coordinates to canvas/div X coordinate.\n * If specified, do this conversion for the coordinate system of a particular\n * axis.\n * Returns a single value or null if x is null.\n */\nDygraph.prototype.toDomXCoord = function (x) {\n if (x === null) {\n return null;\n }\n\n var area = this.plotter_.area;\n var xRange = this.xAxisRange();\n return area.x + (x - xRange[0]) / (xRange[1] - xRange[0]) * area.w;\n};\n\n/**\n * Convert from data x coordinates to canvas/div Y coordinate and optional\n * axis. Uses the first axis by default.\n *\n * returns a single value or null if y is null.\n */\nDygraph.prototype.toDomYCoord = function (y, axis) {\n var pct = this.toPercentYCoord(y, axis);\n\n if (pct === null) {\n return null;\n }\n var area = this.plotter_.area;\n return area.y + pct * area.h;\n};\n\n/**\n * Convert from canvas/div coords to data coordinates.\n * If specified, do this conversion for the coordinate system of a particular\n * axis. Uses the first axis by default.\n * Returns a two-element array: [X, Y].\n *\n * Note: use toDataXCoord instead of toDataCoords(x, null) and use toDataYCoord\n * instead of toDataCoords(null, y, axis).\n */\nDygraph.prototype.toDataCoords = function (x, y, axis) {\n return [this.toDataXCoord(x), this.toDataYCoord(y, axis)];\n};\n\n/**\n * Convert from canvas/div x coordinate to data coordinate.\n *\n * If x is null, this returns null.\n */\nDygraph.prototype.toDataXCoord = function (x) {\n if (x === null) {\n return null;\n }\n\n var area = this.plotter_.area;\n var xRange = this.xAxisRange();\n\n if (!this.attributes_.getForAxis(\"logscale\", 'x')) {\n return xRange[0] + (x - area.x) / area.w * (xRange[1] - xRange[0]);\n } else {\n var pct = (x - area.x) / area.w;\n return utils.logRangeFraction(xRange[0], xRange[1], pct);\n }\n};\n\n/**\n * Convert from canvas/div y coord to value.\n *\n * If y is null, this returns null.\n * if axis is null, this uses the first axis.\n */\nDygraph.prototype.toDataYCoord = function (y, axis) {\n if (y === null) {\n return null;\n }\n\n var area = this.plotter_.area;\n var yRange = this.yAxisRange(axis);\n\n if (typeof axis == \"undefined\") axis = 0;\n if (!this.attributes_.getForAxis(\"logscale\", axis)) {\n return yRange[0] + (area.y + area.h - y) / area.h * (yRange[1] - yRange[0]);\n } else {\n // Computing the inverse of toDomCoord.\n var pct = (y - area.y) / area.h;\n // Note reversed yRange, y1 is on top with pct==0.\n return utils.logRangeFraction(yRange[1], yRange[0], pct);\n }\n};\n\n/**\n * Converts a y for an axis to a percentage from the top to the\n * bottom of the drawing area.\n *\n * If the coordinate represents a value visible on the canvas, then\n * the value will be between 0 and 1, where 0 is the top of the canvas.\n * However, this method will return values outside the range, as\n * values can fall outside the canvas.\n *\n * If y is null, this returns null.\n * if axis is null, this uses the first axis.\n *\n * @param {number} y The data y-coordinate.\n * @param {number} [axis] The axis number on which the data coordinate lives.\n * @return {number} A fraction in [0, 1] where 0 = the top edge.\n */\nDygraph.prototype.toPercentYCoord = function (y, axis) {\n if (y === null) {\n return null;\n }\n if (typeof axis == \"undefined\") axis = 0;\n\n var yRange = this.yAxisRange(axis);\n\n var pct;\n var logscale = this.attributes_.getForAxis(\"logscale\", axis);\n if (logscale) {\n var logr0 = utils.log10(yRange[0]);\n var logr1 = utils.log10(yRange[1]);\n pct = (logr1 - utils.log10(y)) / (logr1 - logr0);\n } else {\n // yRange[1] - y is unit distance from the bottom.\n // yRange[1] - yRange[0] is the scale of the range.\n // (yRange[1] - y) / (yRange[1] - yRange[0]) is the % from the bottom.\n pct = (yRange[1] - y) / (yRange[1] - yRange[0]);\n }\n return pct;\n};\n\n/**\n * Converts an x value to a percentage from the left to the right of\n * the drawing area.\n *\n * If the coordinate represents a value visible on the canvas, then\n * the value will be between 0 and 1, where 0 is the left of the canvas.\n * However, this method will return values outside the range, as\n * values can fall outside the canvas.\n *\n * If x is null, this returns null.\n * @param {number} x The data x-coordinate.\n * @return {number} A fraction in [0, 1] where 0 = the left edge.\n */\nDygraph.prototype.toPercentXCoord = function (x) {\n if (x === null) {\n return null;\n }\n\n var xRange = this.xAxisRange();\n var pct;\n var logscale = this.attributes_.getForAxis(\"logscale\", 'x');\n if (logscale === true) {\n // logscale can be null so we test for true explicitly.\n var logr0 = utils.log10(xRange[0]);\n var logr1 = utils.log10(xRange[1]);\n pct = (utils.log10(x) - logr0) / (logr1 - logr0);\n } else {\n // x - xRange[0] is unit distance from the left.\n // xRange[1] - xRange[0] is the scale of the range.\n // The full expression below is the % from the left.\n pct = (x - xRange[0]) / (xRange[1] - xRange[0]);\n }\n return pct;\n};\n\n/**\n * Returns the number of columns (including the independent variable).\n * @return {number} The number of columns.\n */\nDygraph.prototype.numColumns = function () {\n if (!this.rawData_) return 0;\n return this.rawData_[0] ? this.rawData_[0].length : this.attr_(\"labels\").length;\n};\n\n/**\n * Returns the number of rows (excluding any header/label row).\n * @return {number} The number of rows, less any header.\n */\nDygraph.prototype.numRows = function () {\n if (!this.rawData_) return 0;\n return this.rawData_.length;\n};\n\n/**\n * Returns the value in the given row and column. If the row and column exceed\n * the bounds on the data, returns null. Also returns null if the value is\n * missing.\n * @param {number} row The row number of the data (0-based). Row 0 is the\n * first row of data, not a header row.\n * @param {number} col The column number of the data (0-based)\n * @return {number} The value in the specified cell or null if the row/col\n * were out of range.\n */\nDygraph.prototype.getValue = function (row, col) {\n if (row < 0 || row > this.rawData_.length) return null;\n if (col < 0 || col > this.rawData_[row].length) return null;\n\n return this.rawData_[row][col];\n};\n\n/**\n * Generates interface elements for the Dygraph: a containing div, a div to\n * display the current point, and a textbox to adjust the rolling average\n * period. Also creates the Renderer/Layout elements.\n * @private\n */\nDygraph.prototype.createInterface_ = function () {\n // Create the all-enclosing graph div\n var enclosing = this.maindiv_;\n\n this.graphDiv = document.createElement(\"div\");\n\n // TODO(danvk): any other styles that are useful to set here?\n this.graphDiv.style.textAlign = 'left'; // This is a CSS \"reset\"\n this.graphDiv.style.position = 'relative';\n enclosing.appendChild(this.graphDiv);\n\n // Create the canvas for interactive parts of the chart.\n this.canvas_ = utils.createCanvas();\n this.canvas_.style.position = \"absolute\";\n\n // ... and for static parts of the chart.\n this.hidden_ = this.createPlotKitCanvas_(this.canvas_);\n\n this.canvas_ctx_ = utils.getContext(this.canvas_);\n this.hidden_ctx_ = utils.getContext(this.hidden_);\n\n this.resizeElements_();\n\n // The interactive parts of the graph are drawn on top of the chart.\n this.graphDiv.appendChild(this.hidden_);\n this.graphDiv.appendChild(this.canvas_);\n this.mouseEventElement_ = this.createMouseEventElement_();\n\n // Create the grapher\n this.layout_ = new _dygraphLayout2['default'](this);\n\n var dygraph = this;\n\n this.mouseMoveHandler_ = function (e) {\n dygraph.mouseMove_(e);\n };\n\n this.mouseOutHandler_ = function (e) {\n // The mouse has left the chart if:\n // 1. e.target is inside the chart\n // 2. e.relatedTarget is outside the chart\n var target = e.target || e.fromElement;\n var relatedTarget = e.relatedTarget || e.toElement;\n if (utils.isNodeContainedBy(target, dygraph.graphDiv) && !utils.isNodeContainedBy(relatedTarget, dygraph.graphDiv)) {\n dygraph.mouseOut_(e);\n }\n };\n\n this.addAndTrackEvent(window, 'mouseout', this.mouseOutHandler_);\n this.addAndTrackEvent(this.mouseEventElement_, 'mousemove', this.mouseMoveHandler_);\n\n // Don't recreate and register the resize handler on subsequent calls.\n // This happens when the graph is resized.\n if (!this.resizeHandler_) {\n this.resizeHandler_ = function (e) {\n dygraph.resize();\n };\n\n // Update when the window is resized.\n // TODO(danvk): drop frames depending on complexity of the chart.\n this.addAndTrackEvent(window, 'resize', this.resizeHandler_);\n }\n};\n\nDygraph.prototype.resizeElements_ = function () {\n this.graphDiv.style.width = this.width_ + \"px\";\n this.graphDiv.style.height = this.height_ + \"px\";\n\n var pixelRatioOption = this.getNumericOption('pixelRatio');\n\n var canvasScale = pixelRatioOption || utils.getContextPixelRatio(this.canvas_ctx_);\n this.canvas_.width = this.width_ * canvasScale;\n this.canvas_.height = this.height_ * canvasScale;\n this.canvas_.style.width = this.width_ + \"px\"; // for IE\n this.canvas_.style.height = this.height_ + \"px\"; // for IE\n if (canvasScale !== 1) {\n this.canvas_ctx_.scale(canvasScale, canvasScale);\n }\n\n var hiddenScale = pixelRatioOption || utils.getContextPixelRatio(this.hidden_ctx_);\n this.hidden_.width = this.width_ * hiddenScale;\n this.hidden_.height = this.height_ * hiddenScale;\n this.hidden_.style.width = this.width_ + \"px\"; // for IE\n this.hidden_.style.height = this.height_ + \"px\"; // for IE\n if (hiddenScale !== 1) {\n this.hidden_ctx_.scale(hiddenScale, hiddenScale);\n }\n};\n\n/**\n * Detach DOM elements in the dygraph and null out all data references.\n * Calling this when you're done with a dygraph can dramatically reduce memory\n * usage. See, e.g., the tests/perf.html example.\n */\nDygraph.prototype.destroy = function () {\n this.canvas_ctx_.restore();\n this.hidden_ctx_.restore();\n\n // Destroy any plugins, in the reverse order that they were registered.\n for (var i = this.plugins_.length - 1; i >= 0; i--) {\n var p = this.plugins_.pop();\n if (p.plugin.destroy) p.plugin.destroy();\n }\n\n var removeRecursive = function removeRecursive(node) {\n while (node.hasChildNodes()) {\n removeRecursive(node.firstChild);\n node.removeChild(node.firstChild);\n }\n };\n\n this.removeTrackedEvents_();\n\n // remove mouse event handlers (This may not be necessary anymore)\n utils.removeEvent(window, 'mouseout', this.mouseOutHandler_);\n utils.removeEvent(this.mouseEventElement_, 'mousemove', this.mouseMoveHandler_);\n\n // remove window handlers\n utils.removeEvent(window, 'resize', this.resizeHandler_);\n this.resizeHandler_ = null;\n\n removeRecursive(this.maindiv_);\n\n var nullOut = function nullOut(obj) {\n for (var n in obj) {\n if (typeof obj[n] === 'object') {\n obj[n] = null;\n }\n }\n };\n // These may not all be necessary, but it can't hurt...\n nullOut(this.layout_);\n nullOut(this.plotter_);\n nullOut(this);\n};\n\n/**\n * Creates the canvas on which the chart will be drawn. Only the Renderer ever\n * draws on this particular canvas. All Dygraph work (i.e. drawing hover dots\n * or the zoom rectangles) is done on this.canvas_.\n * @param {Object} canvas The Dygraph canvas over which to overlay the plot\n * @return {Object} The newly-created canvas\n * @private\n */\nDygraph.prototype.createPlotKitCanvas_ = function (canvas) {\n var h = utils.createCanvas();\n h.style.position = \"absolute\";\n // TODO(danvk): h should be offset from canvas. canvas needs to include\n // some extra area to make it easier to zoom in on the far left and far\n // right. h needs to be precisely the plot area, so that clipping occurs.\n h.style.top = canvas.style.top;\n h.style.left = canvas.style.left;\n h.width = this.width_;\n h.height = this.height_;\n h.style.width = this.width_ + \"px\"; // for IE\n h.style.height = this.height_ + \"px\"; // for IE\n return h;\n};\n\n/**\n * Creates an overlay element used to handle mouse events.\n * @return {Object} The mouse event element.\n * @private\n */\nDygraph.prototype.createMouseEventElement_ = function () {\n return this.canvas_;\n};\n\n/**\n * Generate a set of distinct colors for the data series. This is done with a\n * color wheel. Saturation/Value are customizable, and the hue is\n * equally-spaced around the color wheel. If a custom set of colors is\n * specified, that is used instead.\n * @private\n */\nDygraph.prototype.setColors_ = function () {\n var labels = this.getLabels();\n var num = labels.length - 1;\n this.colors_ = [];\n this.colorsMap_ = {};\n\n // These are used for when no custom colors are specified.\n var sat = this.getNumericOption('colorSaturation') || 1.0;\n var val = this.getNumericOption('colorValue') || 0.5;\n var half = Math.ceil(num / 2);\n\n var colors = this.getOption('colors');\n var visibility = this.visibility();\n for (var i = 0; i < num; i++) {\n if (!visibility[i]) {\n continue;\n }\n var label = labels[i + 1];\n var colorStr = this.attributes_.getForSeries('color', label);\n if (!colorStr) {\n if (colors) {\n colorStr = colors[i % colors.length];\n } else {\n // alternate colors for high contrast.\n var idx = i % 2 ? half + (i + 1) / 2 : Math.ceil((i + 1) / 2);\n var hue = 1.0 * idx / (1 + num);\n colorStr = utils.hsvToRGB(hue, sat, val);\n }\n }\n this.colors_.push(colorStr);\n this.colorsMap_[label] = colorStr;\n }\n};\n\n/**\n * Return the list of colors. This is either the list of colors passed in the\n * attributes or the autogenerated list of rgb(r,g,b) strings.\n * This does not return colors for invisible series.\n * @return {Array.} The list of colors.\n */\nDygraph.prototype.getColors = function () {\n return this.colors_;\n};\n\n/**\n * Returns a few attributes of a series, i.e. its color, its visibility, which\n * axis it's assigned to, and its column in the original data.\n * Returns null if the series does not exist.\n * Otherwise, returns an object with column, visibility, color and axis properties.\n * The \"axis\" property will be set to 1 for y1 and 2 for y2.\n * The \"column\" property can be fed back into getValue(row, column) to get\n * values for this series.\n */\nDygraph.prototype.getPropertiesForSeries = function (series_name) {\n var idx = -1;\n var labels = this.getLabels();\n for (var i = 1; i < labels.length; i++) {\n if (labels[i] == series_name) {\n idx = i;\n break;\n }\n }\n if (idx == -1) return null;\n\n return {\n name: series_name,\n column: idx,\n visible: this.visibility()[idx - 1],\n color: this.colorsMap_[series_name],\n axis: 1 + this.attributes_.axisForSeries(series_name)\n };\n};\n\n/**\n * Create the text box to adjust the averaging period\n * @private\n */\nDygraph.prototype.createRollInterface_ = function () {\n var _this = this;\n\n // Create a roller if one doesn't exist already.\n var roller = this.roller_;\n if (!roller) {\n this.roller_ = roller = document.createElement(\"input\");\n roller.type = \"text\";\n roller.style.display = \"none\";\n roller.className = 'dygraph-roller';\n this.graphDiv.appendChild(roller);\n }\n\n var display = this.getBooleanOption('showRoller') ? 'block' : 'none';\n\n var area = this.getArea();\n var textAttr = {\n \"top\": area.y + area.h - 25 + \"px\",\n \"left\": area.x + 1 + \"px\",\n \"display\": display\n };\n roller.size = \"2\";\n roller.value = this.rollPeriod_;\n utils.update(roller.style, textAttr);\n\n roller.onchange = function () {\n return _this.adjustRoll(roller.value);\n };\n};\n\n/**\n * Set up all the mouse handlers needed to capture dragging behavior for zoom\n * events.\n * @private\n */\nDygraph.prototype.createDragInterface_ = function () {\n var context = {\n // Tracks whether the mouse is down right now\n isZooming: false,\n isPanning: false, // is this drag part of a pan?\n is2DPan: false, // if so, is that pan 1- or 2-dimensional?\n dragStartX: null, // pixel coordinates\n dragStartY: null, // pixel coordinates\n dragEndX: null, // pixel coordinates\n dragEndY: null, // pixel coordinates\n dragDirection: null,\n prevEndX: null, // pixel coordinates\n prevEndY: null, // pixel coordinates\n prevDragDirection: null,\n cancelNextDblclick: false, // see comment in dygraph-interaction-model.js\n\n // The value on the left side of the graph when a pan operation starts.\n initialLeftmostDate: null,\n\n // The number of units each pixel spans. (This won't be valid for log\n // scales)\n xUnitsPerPixel: null,\n\n // TODO(danvk): update this comment\n // The range in second/value units that the viewport encompasses during a\n // panning operation.\n dateRange: null,\n\n // Top-left corner of the canvas, in DOM coords\n // TODO(konigsberg): Rename topLeftCanvasX, topLeftCanvasY.\n px: 0,\n py: 0,\n\n // Values for use with panEdgeFraction, which limit how far outside the\n // graph's data boundaries it can be panned.\n boundedDates: null, // [minDate, maxDate]\n boundedValues: null, // [[minValue, maxValue] ...]\n\n // We cover iframes during mouse interactions. See comments in\n // dygraph-utils.js for more info on why this is a good idea.\n tarp: new _iframeTarp2['default'](),\n\n // contextB is the same thing as this context object but renamed.\n initializeMouseDown: function initializeMouseDown(event, g, contextB) {\n // prevents mouse drags from selecting page text.\n if (event.preventDefault) {\n event.preventDefault(); // Firefox, Chrome, etc.\n } else {\n event.returnValue = false; // IE\n event.cancelBubble = true;\n }\n\n var canvasPos = utils.findPos(g.canvas_);\n contextB.px = canvasPos.x;\n contextB.py = canvasPos.y;\n contextB.dragStartX = utils.dragGetX_(event, contextB);\n contextB.dragStartY = utils.dragGetY_(event, contextB);\n contextB.cancelNextDblclick = false;\n contextB.tarp.cover();\n },\n destroy: function destroy() {\n var context = this;\n if (context.isZooming || context.isPanning) {\n context.isZooming = false;\n context.dragStartX = null;\n context.dragStartY = null;\n }\n\n if (context.isPanning) {\n context.isPanning = false;\n context.draggingDate = null;\n context.dateRange = null;\n for (var i = 0; i < self.axes_.length; i++) {\n delete self.axes_[i].draggingValue;\n delete self.axes_[i].dragValueRange;\n }\n }\n\n context.tarp.uncover();\n }\n };\n\n var interactionModel = this.getOption(\"interactionModel\");\n\n // Self is the graph.\n var self = this;\n\n // Function that binds the graph and context to the handler.\n var bindHandler = function bindHandler(handler) {\n return function (event) {\n handler(event, self, context);\n };\n };\n\n for (var eventName in interactionModel) {\n if (!interactionModel.hasOwnProperty(eventName)) continue;\n this.addAndTrackEvent(this.mouseEventElement_, eventName, bindHandler(interactionModel[eventName]));\n }\n\n // If the user releases the mouse button during a drag, but not over the\n // canvas, then it doesn't count as a zooming action.\n if (!interactionModel.willDestroyContextMyself) {\n var mouseUpHandler = function mouseUpHandler(event) {\n context.destroy();\n };\n\n this.addAndTrackEvent(document, 'mouseup', mouseUpHandler);\n }\n};\n\n/**\n * Draw a gray zoom rectangle over the desired area of the canvas. Also clears\n * up any previous zoom rectangles that were drawn. This could be optimized to\n * avoid extra redrawing, but it's tricky to avoid interactions with the status\n * dots.\n *\n * @param {number} direction the direction of the zoom rectangle. Acceptable\n * values are utils.HORIZONTAL and utils.VERTICAL.\n * @param {number} startX The X position where the drag started, in canvas\n * coordinates.\n * @param {number} endX The current X position of the drag, in canvas coords.\n * @param {number} startY The Y position where the drag started, in canvas\n * coordinates.\n * @param {number} endY The current Y position of the drag, in canvas coords.\n * @param {number} prevDirection the value of direction on the previous call to\n * this function. Used to avoid excess redrawing\n * @param {number} prevEndX The value of endX on the previous call to this\n * function. Used to avoid excess redrawing\n * @param {number} prevEndY The value of endY on the previous call to this\n * function. Used to avoid excess redrawing\n * @private\n */\nDygraph.prototype.drawZoomRect_ = function (direction, startX, endX, startY, endY, prevDirection, prevEndX, prevEndY) {\n var ctx = this.canvas_ctx_;\n\n // Clean up from the previous rect if necessary\n if (prevDirection == utils.HORIZONTAL) {\n ctx.clearRect(Math.min(startX, prevEndX), this.layout_.getPlotArea().y, Math.abs(startX - prevEndX), this.layout_.getPlotArea().h);\n } else if (prevDirection == utils.VERTICAL) {\n ctx.clearRect(this.layout_.getPlotArea().x, Math.min(startY, prevEndY), this.layout_.getPlotArea().w, Math.abs(startY - prevEndY));\n }\n\n // Draw a light-grey rectangle to show the new viewing area\n if (direction == utils.HORIZONTAL) {\n if (endX && startX) {\n ctx.fillStyle = \"rgba(128,128,128,0.33)\";\n ctx.fillRect(Math.min(startX, endX), this.layout_.getPlotArea().y, Math.abs(endX - startX), this.layout_.getPlotArea().h);\n }\n } else if (direction == utils.VERTICAL) {\n if (endY && startY) {\n ctx.fillStyle = \"rgba(128,128,128,0.33)\";\n ctx.fillRect(this.layout_.getPlotArea().x, Math.min(startY, endY), this.layout_.getPlotArea().w, Math.abs(endY - startY));\n }\n }\n};\n\n/**\n * Clear the zoom rectangle (and perform no zoom).\n * @private\n */\nDygraph.prototype.clearZoomRect_ = function () {\n this.currentZoomRectArgs_ = null;\n this.canvas_ctx_.clearRect(0, 0, this.width_, this.height_);\n};\n\n/**\n * Zoom to something containing [lowX, highX]. These are pixel coordinates in\n * the canvas. The exact zoom window may be slightly larger if there are no data\n * points near lowX or highX. Don't confuse this function with doZoomXDates,\n * which accepts dates that match the raw data. This function redraws the graph.\n *\n * @param {number} lowX The leftmost pixel value that should be visible.\n * @param {number} highX The rightmost pixel value that should be visible.\n * @private\n */\nDygraph.prototype.doZoomX_ = function (lowX, highX) {\n this.currentZoomRectArgs_ = null;\n // Find the earliest and latest dates contained in this canvasx range.\n // Convert the call to date ranges of the raw data.\n var minDate = this.toDataXCoord(lowX);\n var maxDate = this.toDataXCoord(highX);\n this.doZoomXDates_(minDate, maxDate);\n};\n\n/**\n * Zoom to something containing [minDate, maxDate] values. Don't confuse this\n * method with doZoomX which accepts pixel coordinates. This function redraws\n * the graph.\n *\n * @param {number} minDate The minimum date that should be visible.\n * @param {number} maxDate The maximum date that should be visible.\n * @private\n */\nDygraph.prototype.doZoomXDates_ = function (minDate, maxDate) {\n var _this2 = this;\n\n // TODO(danvk): when xAxisRange is null (i.e. \"fit to data\", the animation\n // can produce strange effects. Rather than the x-axis transitioning slowly\n // between values, it can jerk around.)\n var old_window = this.xAxisRange();\n var new_window = [minDate, maxDate];\n var zoomCallback = this.getFunctionOption('zoomCallback');\n this.doAnimatedZoom(old_window, new_window, null, null, function () {\n if (zoomCallback) {\n zoomCallback.call(_this2, minDate, maxDate, _this2.yAxisRanges());\n }\n });\n};\n\n/**\n * Zoom to something containing [lowY, highY]. These are pixel coordinates in\n * the canvas. This function redraws the graph.\n *\n * @param {number} lowY The topmost pixel value that should be visible.\n * @param {number} highY The lowest pixel value that should be visible.\n * @private\n */\nDygraph.prototype.doZoomY_ = function (lowY, highY) {\n var _this3 = this;\n\n this.currentZoomRectArgs_ = null;\n // Find the highest and lowest values in pixel range for each axis.\n // Note that lowY (in pixels) corresponds to the max Value (in data coords).\n // This is because pixels increase as you go down on the screen, whereas data\n // coordinates increase as you go up the screen.\n var oldValueRanges = this.yAxisRanges();\n var newValueRanges = [];\n for (var i = 0; i < this.axes_.length; i++) {\n var hi = this.toDataYCoord(lowY, i);\n var low = this.toDataYCoord(highY, i);\n newValueRanges.push([low, hi]);\n }\n\n var zoomCallback = this.getFunctionOption('zoomCallback');\n this.doAnimatedZoom(null, null, oldValueRanges, newValueRanges, function () {\n if (zoomCallback) {\n var _xAxisRange = _this3.xAxisRange();\n\n var _xAxisRange2 = _slicedToArray(_xAxisRange, 2);\n\n var minX = _xAxisRange2[0];\n var maxX = _xAxisRange2[1];\n\n zoomCallback.call(_this3, minX, maxX, _this3.yAxisRanges());\n }\n });\n};\n\n/**\n * Transition function to use in animations. Returns values between 0.0\n * (totally old values) and 1.0 (totally new values) for each frame.\n * @private\n */\nDygraph.zoomAnimationFunction = function (frame, numFrames) {\n var k = 1.5;\n return (1.0 - Math.pow(k, -frame)) / (1.0 - Math.pow(k, -numFrames));\n};\n\n/**\n * Reset the zoom to the original view coordinates. This is the same as\n * double-clicking on the graph.\n */\nDygraph.prototype.resetZoom = function () {\n var _this4 = this;\n\n var dirtyX = this.isZoomed('x');\n var dirtyY = this.isZoomed('y');\n var dirty = dirtyX || dirtyY;\n\n // Clear any selection, since it's likely to be drawn in the wrong place.\n this.clearSelection();\n\n if (!dirty) return;\n\n // Calculate extremes to avoid lack of padding on reset.\n\n var _xAxisExtremes = this.xAxisExtremes();\n\n var _xAxisExtremes2 = _slicedToArray(_xAxisExtremes, 2);\n\n var minDate = _xAxisExtremes2[0];\n var maxDate = _xAxisExtremes2[1];\n\n var animatedZooms = this.getBooleanOption('animatedZooms');\n var zoomCallback = this.getFunctionOption('zoomCallback');\n\n // TODO(danvk): merge this block w/ the code below.\n // TODO(danvk): factor out a generic, public zoomTo method.\n if (!animatedZooms) {\n this.dateWindow_ = null;\n this.axes_.forEach(function (axis) {\n if (axis.valueRange) delete axis.valueRange;\n });\n\n this.drawGraph_();\n if (zoomCallback) {\n zoomCallback.call(this, minDate, maxDate, this.yAxisRanges());\n }\n return;\n }\n\n var oldWindow = null,\n newWindow = null,\n oldValueRanges = null,\n newValueRanges = null;\n if (dirtyX) {\n oldWindow = this.xAxisRange();\n newWindow = [minDate, maxDate];\n }\n\n if (dirtyY) {\n oldValueRanges = this.yAxisRanges();\n newValueRanges = this.yAxisExtremes();\n }\n\n this.doAnimatedZoom(oldWindow, newWindow, oldValueRanges, newValueRanges, function () {\n _this4.dateWindow_ = null;\n _this4.axes_.forEach(function (axis) {\n if (axis.valueRange) delete axis.valueRange;\n });\n if (zoomCallback) {\n zoomCallback.call(_this4, minDate, maxDate, _this4.yAxisRanges());\n }\n });\n};\n\n/**\n * Combined animation logic for all zoom functions.\n * either the x parameters or y parameters may be null.\n * @private\n */\nDygraph.prototype.doAnimatedZoom = function (oldXRange, newXRange, oldYRanges, newYRanges, callback) {\n var _this5 = this;\n\n var steps = this.getBooleanOption(\"animatedZooms\") ? Dygraph.ANIMATION_STEPS : 1;\n\n var windows = [];\n var valueRanges = [];\n var step, frac;\n\n if (oldXRange !== null && newXRange !== null) {\n for (step = 1; step <= steps; step++) {\n frac = Dygraph.zoomAnimationFunction(step, steps);\n windows[step - 1] = [oldXRange[0] * (1 - frac) + frac * newXRange[0], oldXRange[1] * (1 - frac) + frac * newXRange[1]];\n }\n }\n\n if (oldYRanges !== null && newYRanges !== null) {\n for (step = 1; step <= steps; step++) {\n frac = Dygraph.zoomAnimationFunction(step, steps);\n var thisRange = [];\n for (var j = 0; j < this.axes_.length; j++) {\n thisRange.push([oldYRanges[j][0] * (1 - frac) + frac * newYRanges[j][0], oldYRanges[j][1] * (1 - frac) + frac * newYRanges[j][1]]);\n }\n valueRanges[step - 1] = thisRange;\n }\n }\n\n utils.repeatAndCleanup(function (step) {\n if (valueRanges.length) {\n for (var i = 0; i < _this5.axes_.length; i++) {\n var w = valueRanges[step][i];\n _this5.axes_[i].valueRange = [w[0], w[1]];\n }\n }\n if (windows.length) {\n _this5.dateWindow_ = windows[step];\n }\n _this5.drawGraph_();\n }, steps, Dygraph.ANIMATION_DURATION / steps, callback);\n};\n\n/**\n * Get the current graph's area object.\n *\n * Returns: {x, y, w, h}\n */\nDygraph.prototype.getArea = function () {\n return this.plotter_.area;\n};\n\n/**\n * Convert a mouse event to DOM coordinates relative to the graph origin.\n *\n * Returns a two-element array: [X, Y].\n */\nDygraph.prototype.eventToDomCoords = function (event) {\n if (event.offsetX && event.offsetY) {\n return [event.offsetX, event.offsetY];\n } else {\n var eventElementPos = utils.findPos(this.mouseEventElement_);\n var canvasx = utils.pageX(event) - eventElementPos.x;\n var canvasy = utils.pageY(event) - eventElementPos.y;\n return [canvasx, canvasy];\n }\n};\n\n/**\n * Given a canvas X coordinate, find the closest row.\n * @param {number} domX graph-relative DOM X coordinate\n * Returns {number} row number.\n * @private\n */\nDygraph.prototype.findClosestRow = function (domX) {\n var minDistX = Infinity;\n var closestRow = -1;\n var sets = this.layout_.points;\n for (var i = 0; i < sets.length; i++) {\n var points = sets[i];\n var len = points.length;\n for (var j = 0; j < len; j++) {\n var point = points[j];\n if (!utils.isValidPoint(point, true)) continue;\n var dist = Math.abs(point.canvasx - domX);\n if (dist < minDistX) {\n minDistX = dist;\n closestRow = point.idx;\n }\n }\n }\n\n return closestRow;\n};\n\n/**\n * Given canvas X,Y coordinates, find the closest point.\n *\n * This finds the individual data point across all visible series\n * that's closest to the supplied DOM coordinates using the standard\n * Euclidean X,Y distance.\n *\n * @param {number} domX graph-relative DOM X coordinate\n * @param {number} domY graph-relative DOM Y coordinate\n * Returns: {row, seriesName, point}\n * @private\n */\nDygraph.prototype.findClosestPoint = function (domX, domY) {\n var minDist = Infinity;\n var dist, dx, dy, point, closestPoint, closestSeries, closestRow;\n for (var setIdx = this.layout_.points.length - 1; setIdx >= 0; --setIdx) {\n var points = this.layout_.points[setIdx];\n for (var i = 0; i < points.length; ++i) {\n point = points[i];\n if (!utils.isValidPoint(point)) continue;\n dx = point.canvasx - domX;\n dy = point.canvasy - domY;\n dist = dx * dx + dy * dy;\n if (dist < minDist) {\n minDist = dist;\n closestPoint = point;\n closestSeries = setIdx;\n closestRow = point.idx;\n }\n }\n }\n var name = this.layout_.setNames[closestSeries];\n return {\n row: closestRow,\n seriesName: name,\n point: closestPoint\n };\n};\n\n/**\n * Given canvas X,Y coordinates, find the touched area in a stacked graph.\n *\n * This first finds the X data point closest to the supplied DOM X coordinate,\n * then finds the series which puts the Y coordinate on top of its filled area,\n * using linear interpolation between adjacent point pairs.\n *\n * @param {number} domX graph-relative DOM X coordinate\n * @param {number} domY graph-relative DOM Y coordinate\n * Returns: {row, seriesName, point}\n * @private\n */\nDygraph.prototype.findStackedPoint = function (domX, domY) {\n var row = this.findClosestRow(domX);\n var closestPoint, closestSeries;\n for (var setIdx = 0; setIdx < this.layout_.points.length; ++setIdx) {\n var boundary = this.getLeftBoundary_(setIdx);\n var rowIdx = row - boundary;\n var points = this.layout_.points[setIdx];\n if (rowIdx >= points.length) continue;\n var p1 = points[rowIdx];\n if (!utils.isValidPoint(p1)) continue;\n var py = p1.canvasy;\n if (domX > p1.canvasx && rowIdx + 1 < points.length) {\n // interpolate series Y value using next point\n var p2 = points[rowIdx + 1];\n if (utils.isValidPoint(p2)) {\n var dx = p2.canvasx - p1.canvasx;\n if (dx > 0) {\n var r = (domX - p1.canvasx) / dx;\n py += r * (p2.canvasy - p1.canvasy);\n }\n }\n } else if (domX < p1.canvasx && rowIdx > 0) {\n // interpolate series Y value using previous point\n var p0 = points[rowIdx - 1];\n if (utils.isValidPoint(p0)) {\n var dx = p1.canvasx - p0.canvasx;\n if (dx > 0) {\n var r = (p1.canvasx - domX) / dx;\n py += r * (p0.canvasy - p1.canvasy);\n }\n }\n }\n // Stop if the point (domX, py) is above this series' upper edge\n if (setIdx === 0 || py < domY) {\n closestPoint = p1;\n closestSeries = setIdx;\n }\n }\n var name = this.layout_.setNames[closestSeries];\n return {\n row: row,\n seriesName: name,\n point: closestPoint\n };\n};\n\n/**\n * When the mouse moves in the canvas, display information about a nearby data\n * point and draw dots over those points in the data series. This function\n * takes care of cleanup of previously-drawn dots.\n * @param {Object} event The mousemove event from the browser.\n * @private\n */\nDygraph.prototype.mouseMove_ = function (event) {\n // This prevents JS errors when mousing over the canvas before data loads.\n var points = this.layout_.points;\n if (points === undefined || points === null) return;\n\n var canvasCoords = this.eventToDomCoords(event);\n var canvasx = canvasCoords[0];\n var canvasy = canvasCoords[1];\n\n var highlightSeriesOpts = this.getOption(\"highlightSeriesOpts\");\n var selectionChanged = false;\n if (highlightSeriesOpts && !this.isSeriesLocked()) {\n var closest;\n if (this.getBooleanOption(\"stackedGraph\")) {\n closest = this.findStackedPoint(canvasx, canvasy);\n } else {\n closest = this.findClosestPoint(canvasx, canvasy);\n }\n selectionChanged = this.setSelection(closest.row, closest.seriesName);\n } else {\n var idx = this.findClosestRow(canvasx);\n selectionChanged = this.setSelection(idx);\n }\n\n var callback = this.getFunctionOption(\"highlightCallback\");\n if (callback && selectionChanged) {\n callback.call(this, event, this.lastx_, this.selPoints_, this.lastRow_, this.highlightSet_);\n }\n};\n\n/**\n * Fetch left offset from the specified set index or if not passed, the\n * first defined boundaryIds record (see bug #236).\n * @private\n */\nDygraph.prototype.getLeftBoundary_ = function (setIdx) {\n if (this.boundaryIds_[setIdx]) {\n return this.boundaryIds_[setIdx][0];\n } else {\n for (var i = 0; i < this.boundaryIds_.length; i++) {\n if (this.boundaryIds_[i] !== undefined) {\n return this.boundaryIds_[i][0];\n }\n }\n return 0;\n }\n};\n\nDygraph.prototype.animateSelection_ = function (direction) {\n var totalSteps = 10;\n var millis = 30;\n if (this.fadeLevel === undefined) this.fadeLevel = 0;\n if (this.animateId === undefined) this.animateId = 0;\n var start = this.fadeLevel;\n var steps = direction < 0 ? start : totalSteps - start;\n if (steps <= 0) {\n if (this.fadeLevel) {\n this.updateSelection_(1.0);\n }\n return;\n }\n\n var thisId = ++this.animateId;\n var that = this;\n var cleanupIfClearing = function cleanupIfClearing() {\n // if we haven't reached fadeLevel 0 in the max frame time,\n // ensure that the clear happens and just go to 0\n if (that.fadeLevel !== 0 && direction < 0) {\n that.fadeLevel = 0;\n that.clearSelection();\n }\n };\n utils.repeatAndCleanup(function (n) {\n // ignore simultaneous animations\n if (that.animateId != thisId) return;\n\n that.fadeLevel += direction;\n if (that.fadeLevel === 0) {\n that.clearSelection();\n } else {\n that.updateSelection_(that.fadeLevel / totalSteps);\n }\n }, steps, millis, cleanupIfClearing);\n};\n\n/**\n * Draw dots over the selectied points in the data series. This function\n * takes care of cleanup of previously-drawn dots.\n * @private\n */\nDygraph.prototype.updateSelection_ = function (opt_animFraction) {\n /*var defaultPrevented = */\n this.cascadeEvents_('select', {\n selectedRow: this.lastRow_ === -1 ? undefined : this.lastRow_,\n selectedX: this.lastx_ === -1 ? undefined : this.lastx_,\n selectedPoints: this.selPoints_\n });\n // TODO(danvk): use defaultPrevented here?\n\n // Clear the previously drawn vertical, if there is one\n var i;\n var ctx = this.canvas_ctx_;\n if (this.getOption('highlightSeriesOpts')) {\n ctx.clearRect(0, 0, this.width_, this.height_);\n var alpha = 1.0 - this.getNumericOption('highlightSeriesBackgroundAlpha');\n var backgroundColor = utils.toRGB_(this.getOption('highlightSeriesBackgroundColor'));\n\n if (alpha) {\n // Activating background fade includes an animation effect for a gradual\n // fade. TODO(klausw): make this independently configurable if it causes\n // issues? Use a shared preference to control animations?\n var animateBackgroundFade = true;\n if (animateBackgroundFade) {\n if (opt_animFraction === undefined) {\n // start a new animation\n this.animateSelection_(1);\n return;\n }\n alpha *= opt_animFraction;\n }\n ctx.fillStyle = 'rgba(' + backgroundColor.r + ',' + backgroundColor.g + ',' + backgroundColor.b + ',' + alpha + ')';\n ctx.fillRect(0, 0, this.width_, this.height_);\n }\n\n // Redraw only the highlighted series in the interactive canvas (not the\n // static plot canvas, which is where series are usually drawn).\n this.plotter_._renderLineChart(this.highlightSet_, ctx);\n } else if (this.previousVerticalX_ >= 0) {\n // Determine the maximum highlight circle size.\n var maxCircleSize = 0;\n var labels = this.attr_('labels');\n for (i = 1; i < labels.length; i++) {\n var r = this.getNumericOption('highlightCircleSize', labels[i]);\n if (r > maxCircleSize) maxCircleSize = r;\n }\n var px = this.previousVerticalX_;\n ctx.clearRect(px - maxCircleSize - 1, 0, 2 * maxCircleSize + 2, this.height_);\n }\n\n if (this.selPoints_.length > 0) {\n // Draw colored circles over the center of each selected point\n var canvasx = this.selPoints_[0].canvasx;\n ctx.save();\n for (i = 0; i < this.selPoints_.length; i++) {\n var pt = this.selPoints_[i];\n if (isNaN(pt.canvasy)) continue;\n\n var circleSize = this.getNumericOption('highlightCircleSize', pt.name);\n var callback = this.getFunctionOption(\"drawHighlightPointCallback\", pt.name);\n var color = this.plotter_.colors[pt.name];\n if (!callback) {\n callback = utils.Circles.DEFAULT;\n }\n ctx.lineWidth = this.getNumericOption('strokeWidth', pt.name);\n ctx.strokeStyle = color;\n ctx.fillStyle = color;\n callback.call(this, this, pt.name, ctx, canvasx, pt.canvasy, color, circleSize, pt.idx);\n }\n ctx.restore();\n\n this.previousVerticalX_ = canvasx;\n }\n};\n\n/**\n * Manually set the selected points and display information about them in the\n * legend. The selection can be cleared using clearSelection() and queried\n * using getSelection().\n *\n * To set a selected series but not a selected point, call setSelection with\n * row=false and the selected series name.\n *\n * @param {number} row Row number that should be highlighted (i.e. appear with\n * hover dots on the chart).\n * @param {seriesName} optional series name to highlight that series with the\n * the highlightSeriesOpts setting.\n * @param { locked } optional If true, keep seriesName selected when mousing\n * over the graph, disabling closest-series highlighting. Call clearSelection()\n * to unlock it.\n */\nDygraph.prototype.setSelection = function (row, opt_seriesName, opt_locked) {\n // Extract the points we've selected\n this.selPoints_ = [];\n\n var changed = false;\n if (row !== false && row >= 0) {\n if (row != this.lastRow_) changed = true;\n this.lastRow_ = row;\n for (var setIdx = 0; setIdx < this.layout_.points.length; ++setIdx) {\n var points = this.layout_.points[setIdx];\n // Check if the point at the appropriate index is the point we're looking\n // for. If it is, just use it, otherwise search the array for a point\n // in the proper place.\n var setRow = row - this.getLeftBoundary_(setIdx);\n if (setRow >= 0 && setRow < points.length && points[setRow].idx == row) {\n var point = points[setRow];\n if (point.yval !== null) this.selPoints_.push(point);\n } else {\n for (var pointIdx = 0; pointIdx < points.length; ++pointIdx) {\n var point = points[pointIdx];\n if (point.idx == row) {\n if (point.yval !== null) {\n this.selPoints_.push(point);\n }\n break;\n }\n }\n }\n }\n } else {\n if (this.lastRow_ >= 0) changed = true;\n this.lastRow_ = -1;\n }\n\n if (this.selPoints_.length) {\n this.lastx_ = this.selPoints_[0].xval;\n } else {\n this.lastx_ = -1;\n }\n\n if (opt_seriesName !== undefined) {\n if (this.highlightSet_ !== opt_seriesName) changed = true;\n this.highlightSet_ = opt_seriesName;\n }\n\n if (opt_locked !== undefined) {\n this.lockedSet_ = opt_locked;\n }\n\n if (changed) {\n this.updateSelection_(undefined);\n }\n return changed;\n};\n\n/**\n * The mouse has left the canvas. Clear out whatever artifacts remain\n * @param {Object} event the mouseout event from the browser.\n * @private\n */\nDygraph.prototype.mouseOut_ = function (event) {\n if (this.getFunctionOption(\"unhighlightCallback\")) {\n this.getFunctionOption(\"unhighlightCallback\").call(this, event);\n }\n\n if (this.getBooleanOption(\"hideOverlayOnMouseOut\") && !this.lockedSet_) {\n this.clearSelection();\n }\n};\n\n/**\n * Clears the current selection (i.e. points that were highlighted by moving\n * the mouse over the chart).\n */\nDygraph.prototype.clearSelection = function () {\n this.cascadeEvents_('deselect', {});\n\n this.lockedSet_ = false;\n // Get rid of the overlay data\n if (this.fadeLevel) {\n this.animateSelection_(-1);\n return;\n }\n this.canvas_ctx_.clearRect(0, 0, this.width_, this.height_);\n this.fadeLevel = 0;\n this.selPoints_ = [];\n this.lastx_ = -1;\n this.lastRow_ = -1;\n this.highlightSet_ = null;\n};\n\n/**\n * Returns the number of the currently selected row. To get data for this row,\n * you can use the getValue method.\n * @return {number} row number, or -1 if nothing is selected\n */\nDygraph.prototype.getSelection = function () {\n if (!this.selPoints_ || this.selPoints_.length < 1) {\n return -1;\n }\n\n for (var setIdx = 0; setIdx < this.layout_.points.length; setIdx++) {\n var points = this.layout_.points[setIdx];\n for (var row = 0; row < points.length; row++) {\n if (points[row].x == this.selPoints_[0].x) {\n return points[row].idx;\n }\n }\n }\n return -1;\n};\n\n/**\n * Returns the name of the currently-highlighted series.\n * Only available when the highlightSeriesOpts option is in use.\n */\nDygraph.prototype.getHighlightSeries = function () {\n return this.highlightSet_;\n};\n\n/**\n * Returns true if the currently-highlighted series was locked\n * via setSelection(..., seriesName, true).\n */\nDygraph.prototype.isSeriesLocked = function () {\n return this.lockedSet_;\n};\n\n/**\n * Fires when there's data available to be graphed.\n * @param {string} data Raw CSV data to be plotted\n * @private\n */\nDygraph.prototype.loadedEvent_ = function (data) {\n this.rawData_ = this.parseCSV_(data);\n this.cascadeDataDidUpdateEvent_();\n this.predraw_();\n};\n\n/**\n * Add ticks on the x-axis representing years, months, quarters, weeks, or days\n * @private\n */\nDygraph.prototype.addXTicks_ = function () {\n // Determine the correct ticks scale on the x-axis: quarterly, monthly, ...\n var range;\n if (this.dateWindow_) {\n range = [this.dateWindow_[0], this.dateWindow_[1]];\n } else {\n range = this.xAxisExtremes();\n }\n\n var xAxisOptionsView = this.optionsViewForAxis_('x');\n var xTicks = xAxisOptionsView('ticker')(range[0], range[1], this.plotter_.area.w, // TODO(danvk): should be area.width\n xAxisOptionsView, this);\n // var msg = 'ticker(' + range[0] + ', ' + range[1] + ', ' + this.width_ + ', ' + this.attr_('pixelsPerXLabel') + ') -> ' + JSON.stringify(xTicks);\n // console.log(msg);\n this.layout_.setXTicks(xTicks);\n};\n\n/**\n * Returns the correct handler class for the currently set options.\n * @private\n */\nDygraph.prototype.getHandlerClass_ = function () {\n var handlerClass;\n if (this.attr_('dataHandler')) {\n handlerClass = this.attr_('dataHandler');\n } else if (this.fractions_) {\n if (this.getBooleanOption('errorBars')) {\n handlerClass = _datahandlerBarsFractions2['default'];\n } else {\n handlerClass = _datahandlerDefaultFractions2['default'];\n }\n } else if (this.getBooleanOption('customBars')) {\n handlerClass = _datahandlerBarsCustom2['default'];\n } else if (this.getBooleanOption('errorBars')) {\n handlerClass = _datahandlerBarsError2['default'];\n } else {\n handlerClass = _datahandlerDefault2['default'];\n }\n return handlerClass;\n};\n\n/**\n * @private\n * This function is called once when the chart's data is changed or the options\n * dictionary is updated. It is _not_ called when the user pans or zooms. The\n * idea is that values derived from the chart's data can be computed here,\n * rather than every time the chart is drawn. This includes things like the\n * number of axes, rolling averages, etc.\n */\nDygraph.prototype.predraw_ = function () {\n var start = new Date();\n\n // Create the correct dataHandler\n this.dataHandler_ = new (this.getHandlerClass_())();\n\n this.layout_.computePlotArea();\n\n // TODO(danvk): move more computations out of drawGraph_ and into here.\n this.computeYAxes_();\n\n if (!this.is_initial_draw_) {\n this.canvas_ctx_.restore();\n this.hidden_ctx_.restore();\n }\n\n this.canvas_ctx_.save();\n this.hidden_ctx_.save();\n\n // Create a new plotter.\n this.plotter_ = new _dygraphCanvas2['default'](this, this.hidden_, this.hidden_ctx_, this.layout_);\n\n // The roller sits in the bottom left corner of the chart. We don't know where\n // this will be until the options are available, so it's positioned here.\n this.createRollInterface_();\n\n this.cascadeEvents_('predraw');\n\n // Convert the raw data (a 2D array) into the internal format and compute\n // rolling averages.\n this.rolledSeries_ = [null]; // x-axis is the first series and it's special\n for (var i = 1; i < this.numColumns(); i++) {\n // var logScale = this.attr_('logscale', i); // TODO(klausw): this looks wrong // konigsberg thinks so too.\n var series = this.dataHandler_.extractSeries(this.rawData_, i, this.attributes_);\n if (this.rollPeriod_ > 1) {\n series = this.dataHandler_.rollingAverage(series, this.rollPeriod_, this.attributes_);\n }\n\n this.rolledSeries_.push(series);\n }\n\n // If the data or options have changed, then we'd better redraw.\n this.drawGraph_();\n\n // This is used to determine whether to do various animations.\n var end = new Date();\n this.drawingTimeMs_ = end - start;\n};\n\n/**\n * Point structure.\n *\n * xval_* and yval_* are the original unscaled data values,\n * while x_* and y_* are scaled to the range (0.0-1.0) for plotting.\n * yval_stacked is the cumulative Y value used for stacking graphs,\n * and bottom/top/minus/plus are used for error bar graphs.\n *\n * @typedef {{\n * idx: number,\n * name: string,\n * x: ?number,\n * xval: ?number,\n * y_bottom: ?number,\n * y: ?number,\n * y_stacked: ?number,\n * y_top: ?number,\n * yval_minus: ?number,\n * yval: ?number,\n * yval_plus: ?number,\n * yval_stacked\n * }}\n */\nDygraph.PointType = undefined;\n\n/**\n * Calculates point stacking for stackedGraph=true.\n *\n * For stacking purposes, interpolate or extend neighboring data across\n * NaN values based on stackedGraphNaNFill settings. This is for display\n * only, the underlying data value as shown in the legend remains NaN.\n *\n * @param {Array.} points Point array for a single series.\n * Updates each Point's yval_stacked property.\n * @param {Array.} cumulativeYval Accumulated top-of-graph stacked Y\n * values for the series seen so far. Index is the row number. Updated\n * based on the current series's values.\n * @param {Array.} seriesExtremes Min and max values, updated\n * to reflect the stacked values.\n * @param {string} fillMethod Interpolation method, one of 'all', 'inside', or\n * 'none'.\n * @private\n */\nDygraph.stackPoints_ = function (points, cumulativeYval, seriesExtremes, fillMethod) {\n var lastXval = null;\n var prevPoint = null;\n var nextPoint = null;\n var nextPointIdx = -1;\n\n // Find the next stackable point starting from the given index.\n var updateNextPoint = function updateNextPoint(idx) {\n // If we've previously found a non-NaN point and haven't gone past it yet,\n // just use that.\n if (nextPointIdx >= idx) return;\n\n // We haven't found a non-NaN point yet or have moved past it,\n // look towards the right to find a non-NaN point.\n for (var j = idx; j < points.length; ++j) {\n // Clear out a previously-found point (if any) since it's no longer\n // valid, we shouldn't use it for interpolation anymore.\n nextPoint = null;\n if (!isNaN(points[j].yval) && points[j].yval !== null) {\n nextPointIdx = j;\n nextPoint = points[j];\n break;\n }\n }\n };\n\n for (var i = 0; i < points.length; ++i) {\n var point = points[i];\n var xval = point.xval;\n if (cumulativeYval[xval] === undefined) {\n cumulativeYval[xval] = 0;\n }\n\n var actualYval = point.yval;\n if (isNaN(actualYval) || actualYval === null) {\n if (fillMethod == 'none') {\n actualYval = 0;\n } else {\n // Interpolate/extend for stacking purposes if possible.\n updateNextPoint(i);\n if (prevPoint && nextPoint && fillMethod != 'none') {\n // Use linear interpolation between prevPoint and nextPoint.\n actualYval = prevPoint.yval + (nextPoint.yval - prevPoint.yval) * ((xval - prevPoint.xval) / (nextPoint.xval - prevPoint.xval));\n } else if (prevPoint && fillMethod == 'all') {\n actualYval = prevPoint.yval;\n } else if (nextPoint && fillMethod == 'all') {\n actualYval = nextPoint.yval;\n } else {\n actualYval = 0;\n }\n }\n } else {\n prevPoint = point;\n }\n\n var stackedYval = cumulativeYval[xval];\n if (lastXval != xval) {\n // If an x-value is repeated, we ignore the duplicates.\n stackedYval += actualYval;\n cumulativeYval[xval] = stackedYval;\n }\n lastXval = xval;\n\n point.yval_stacked = stackedYval;\n\n if (stackedYval > seriesExtremes[1]) {\n seriesExtremes[1] = stackedYval;\n }\n if (stackedYval < seriesExtremes[0]) {\n seriesExtremes[0] = stackedYval;\n }\n }\n};\n\n/**\n * Loop over all fields and create datasets, calculating extreme y-values for\n * each series and extreme x-indices as we go.\n *\n * dateWindow is passed in as an explicit parameter so that we can compute\n * extreme values \"speculatively\", i.e. without actually setting state on the\n * dygraph.\n *\n * @param {Array.)>>} rolledSeries, where\n * rolledSeries[seriesIndex][row] = raw point, where\n * seriesIndex is the column number starting with 1, and\n * rawPoint is [x,y] or [x, [y, err]] or [x, [y, yminus, yplus]].\n * @param {?Array.} dateWindow [xmin, xmax] pair, or null.\n * @return {{\n * points: Array.>,\n * seriesExtremes: Array.>,\n * boundaryIds: Array.}}\n * @private\n */\nDygraph.prototype.gatherDatasets_ = function (rolledSeries, dateWindow) {\n var boundaryIds = [];\n var points = [];\n var cumulativeYval = []; // For stacked series.\n var extremes = {}; // series name -> [low, high]\n var seriesIdx, sampleIdx;\n var firstIdx, lastIdx;\n var axisIdx;\n\n // Loop over the fields (series). Go from the last to the first,\n // because if they're stacked that's how we accumulate the values.\n var num_series = rolledSeries.length - 1;\n var series;\n for (seriesIdx = num_series; seriesIdx >= 1; seriesIdx--) {\n if (!this.visibility()[seriesIdx - 1]) continue;\n\n // Prune down to the desired range, if necessary (for zooming)\n // Because there can be lines going to points outside of the visible area,\n // we actually prune to visible points, plus one on either side.\n if (dateWindow) {\n series = rolledSeries[seriesIdx];\n var low = dateWindow[0];\n var high = dateWindow[1];\n\n // TODO(danvk): do binary search instead of linear search.\n // TODO(danvk): pass firstIdx and lastIdx directly to the renderer.\n firstIdx = null;\n lastIdx = null;\n for (sampleIdx = 0; sampleIdx < series.length; sampleIdx++) {\n if (series[sampleIdx][0] >= low && firstIdx === null) {\n firstIdx = sampleIdx;\n }\n if (series[sampleIdx][0] <= high) {\n lastIdx = sampleIdx;\n }\n }\n\n if (firstIdx === null) firstIdx = 0;\n var correctedFirstIdx = firstIdx;\n var isInvalidValue = true;\n while (isInvalidValue && correctedFirstIdx > 0) {\n correctedFirstIdx--;\n // check if the y value is null.\n isInvalidValue = series[correctedFirstIdx][1] === null;\n }\n\n if (lastIdx === null) lastIdx = series.length - 1;\n var correctedLastIdx = lastIdx;\n isInvalidValue = true;\n while (isInvalidValue && correctedLastIdx < series.length - 1) {\n correctedLastIdx++;\n isInvalidValue = series[correctedLastIdx][1] === null;\n }\n\n if (correctedFirstIdx !== firstIdx) {\n firstIdx = correctedFirstIdx;\n }\n if (correctedLastIdx !== lastIdx) {\n lastIdx = correctedLastIdx;\n }\n\n boundaryIds[seriesIdx - 1] = [firstIdx, lastIdx];\n\n // .slice's end is exclusive, we want to include lastIdx.\n series = series.slice(firstIdx, lastIdx + 1);\n } else {\n series = rolledSeries[seriesIdx];\n boundaryIds[seriesIdx - 1] = [0, series.length - 1];\n }\n\n var seriesName = this.attr_(\"labels\")[seriesIdx];\n var seriesExtremes = this.dataHandler_.getExtremeYValues(series, dateWindow, this.getBooleanOption(\"stepPlot\", seriesName));\n\n var seriesPoints = this.dataHandler_.seriesToPoints(series, seriesName, boundaryIds[seriesIdx - 1][0]);\n\n if (this.getBooleanOption(\"stackedGraph\")) {\n axisIdx = this.attributes_.axisForSeries(seriesName);\n if (cumulativeYval[axisIdx] === undefined) {\n cumulativeYval[axisIdx] = [];\n }\n Dygraph.stackPoints_(seriesPoints, cumulativeYval[axisIdx], seriesExtremes, this.getBooleanOption(\"stackedGraphNaNFill\"));\n }\n\n extremes[seriesName] = seriesExtremes;\n points[seriesIdx] = seriesPoints;\n }\n\n return { points: points, extremes: extremes, boundaryIds: boundaryIds };\n};\n\n/**\n * Update the graph with new data. This method is called when the viewing area\n * has changed. If the underlying data or options have changed, predraw_ will\n * be called before drawGraph_ is called.\n *\n * @private\n */\nDygraph.prototype.drawGraph_ = function () {\n var start = new Date();\n\n // This is used to set the second parameter to drawCallback, below.\n var is_initial_draw = this.is_initial_draw_;\n this.is_initial_draw_ = false;\n\n this.layout_.removeAllDatasets();\n this.setColors_();\n this.attrs_.pointSize = 0.5 * this.getNumericOption('highlightCircleSize');\n\n var packed = this.gatherDatasets_(this.rolledSeries_, this.dateWindow_);\n var points = packed.points;\n var extremes = packed.extremes;\n this.boundaryIds_ = packed.boundaryIds;\n\n this.setIndexByName_ = {};\n var labels = this.attr_(\"labels\");\n var dataIdx = 0;\n for (var i = 1; i < points.length; i++) {\n if (!this.visibility()[i - 1]) continue;\n this.layout_.addDataset(labels[i], points[i]);\n this.datasetIndex_[i] = dataIdx++;\n }\n for (var i = 0; i < labels.length; i++) {\n this.setIndexByName_[labels[i]] = i;\n }\n\n this.computeYAxisRanges_(extremes);\n this.layout_.setYAxes(this.axes_);\n\n this.addXTicks_();\n\n // Tell PlotKit to use this new data and render itself\n this.layout_.evaluate();\n this.renderGraph_(is_initial_draw);\n\n if (this.getStringOption(\"timingName\")) {\n var end = new Date();\n console.log(this.getStringOption(\"timingName\") + \" - drawGraph: \" + (end - start) + \"ms\");\n }\n};\n\n/**\n * This does the work of drawing the chart. It assumes that the layout and axis\n * scales have already been set (e.g. by predraw_).\n *\n * @private\n */\nDygraph.prototype.renderGraph_ = function (is_initial_draw) {\n this.cascadeEvents_('clearChart');\n this.plotter_.clear();\n\n var underlayCallback = this.getFunctionOption('underlayCallback');\n if (underlayCallback) {\n // NOTE: we pass the dygraph object to this callback twice to avoid breaking\n // users who expect a deprecated form of this callback.\n underlayCallback.call(this, this.hidden_ctx_, this.layout_.getPlotArea(), this, this);\n }\n\n var e = {\n canvas: this.hidden_,\n drawingContext: this.hidden_ctx_\n };\n this.cascadeEvents_('willDrawChart', e);\n this.plotter_.render();\n this.cascadeEvents_('didDrawChart', e);\n this.lastRow_ = -1; // because plugins/legend.js clears the legend\n\n // TODO(danvk): is this a performance bottleneck when panning?\n // The interaction canvas should already be empty in that situation.\n this.canvas_.getContext('2d').clearRect(0, 0, this.width_, this.height_);\n\n var drawCallback = this.getFunctionOption(\"drawCallback\");\n if (drawCallback !== null) {\n drawCallback.call(this, this, is_initial_draw);\n }\n if (is_initial_draw) {\n this.readyFired_ = true;\n while (this.readyFns_.length > 0) {\n var fn = this.readyFns_.pop();\n fn(this);\n }\n }\n};\n\n/**\n * @private\n * Determine properties of the y-axes which are independent of the data\n * currently being displayed. This includes things like the number of axes and\n * the style of the axes. It does not include the range of each axis and its\n * tick marks.\n * This fills in this.axes_.\n * axes_ = [ { options } ]\n * indices are into the axes_ array.\n */\nDygraph.prototype.computeYAxes_ = function () {\n var axis, index, opts, v;\n\n // this.axes_ doesn't match this.attributes_.axes_.options. It's used for\n // data computation as well as options storage.\n // Go through once and add all the axes.\n this.axes_ = [];\n\n for (axis = 0; axis < this.attributes_.numAxes(); axis++) {\n // Add a new axis, making a copy of its per-axis options.\n opts = { g: this };\n utils.update(opts, this.attributes_.axisOptions(axis));\n this.axes_[axis] = opts;\n }\n\n for (axis = 0; axis < this.axes_.length; axis++) {\n if (axis === 0) {\n opts = this.optionsViewForAxis_('y' + (axis ? '2' : ''));\n v = opts(\"valueRange\");\n if (v) this.axes_[axis].valueRange = v;\n } else {\n // To keep old behavior\n var axes = this.user_attrs_.axes;\n if (axes && axes.y2) {\n v = axes.y2.valueRange;\n if (v) this.axes_[axis].valueRange = v;\n }\n }\n }\n};\n\n/**\n * Returns the number of y-axes on the chart.\n * @return {number} the number of axes.\n */\nDygraph.prototype.numAxes = function () {\n return this.attributes_.numAxes();\n};\n\n/**\n * @private\n * Returns axis properties for the given series.\n * @param {string} setName The name of the series for which to get axis\n * properties, e.g. 'Y1'.\n * @return {Object} The axis properties.\n */\nDygraph.prototype.axisPropertiesForSeries = function (series) {\n // TODO(danvk): handle errors.\n return this.axes_[this.attributes_.axisForSeries(series)];\n};\n\n/**\n * @private\n * Determine the value range and tick marks for each axis.\n * @param {Object} extremes A mapping from seriesName -> [low, high]\n * This fills in the valueRange and ticks fields in each entry of this.axes_.\n */\nDygraph.prototype.computeYAxisRanges_ = function (extremes) {\n var isNullUndefinedOrNaN = function isNullUndefinedOrNaN(num) {\n return isNaN(parseFloat(num));\n };\n var numAxes = this.attributes_.numAxes();\n var ypadCompat, span, series, ypad;\n\n var p_axis;\n\n // Compute extreme values, a span and tick marks for each axis.\n for (var i = 0; i < numAxes; i++) {\n var axis = this.axes_[i];\n var logscale = this.attributes_.getForAxis(\"logscale\", i);\n var includeZero = this.attributes_.getForAxis(\"includeZero\", i);\n var independentTicks = this.attributes_.getForAxis(\"independentTicks\", i);\n series = this.attributes_.seriesForAxis(i);\n\n // Add some padding. This supports two Y padding operation modes:\n //\n // - backwards compatible (yRangePad not set):\n // 10% padding for automatic Y ranges, but not for user-supplied\n // ranges, and move a close-to-zero edge to zero, since drawing at the edge\n // results in invisible lines. Unfortunately lines drawn at the edge of a\n // user-supplied range will still be invisible. If logscale is\n // set, add a variable amount of padding at the top but\n // none at the bottom.\n //\n // - new-style (yRangePad set by the user):\n // always add the specified Y padding.\n //\n ypadCompat = true;\n ypad = 0.1; // add 10%\n var yRangePad = this.getNumericOption('yRangePad');\n if (yRangePad !== null) {\n ypadCompat = false;\n // Convert pixel padding to ratio\n ypad = yRangePad / this.plotter_.area.h;\n }\n\n if (series.length === 0) {\n // If no series are defined or visible then use a reasonable default\n axis.extremeRange = [0, 1];\n } else {\n // Calculate the extremes of extremes.\n var minY = Infinity; // extremes[series[0]][0];\n var maxY = -Infinity; // extremes[series[0]][1];\n var extremeMinY, extremeMaxY;\n\n for (var j = 0; j < series.length; j++) {\n // this skips invisible series\n if (!extremes.hasOwnProperty(series[j])) continue;\n\n // Only use valid extremes to stop null data series' from corrupting the scale.\n extremeMinY = extremes[series[j]][0];\n if (extremeMinY !== null) {\n minY = Math.min(extremeMinY, minY);\n }\n extremeMaxY = extremes[series[j]][1];\n if (extremeMaxY !== null) {\n maxY = Math.max(extremeMaxY, maxY);\n }\n }\n\n // Include zero if requested by the user.\n if (includeZero && !logscale) {\n if (minY > 0) minY = 0;\n if (maxY < 0) maxY = 0;\n }\n\n // Ensure we have a valid scale, otherwise default to [0, 1] for safety.\n if (minY == Infinity) minY = 0;\n if (maxY == -Infinity) maxY = 1;\n\n span = maxY - minY;\n // special case: if we have no sense of scale, center on the sole value.\n if (span === 0) {\n if (maxY !== 0) {\n span = Math.abs(maxY);\n } else {\n // ... and if the sole value is zero, use range 0-1.\n maxY = 1;\n span = 1;\n }\n }\n\n var maxAxisY = maxY,\n minAxisY = minY;\n if (ypadCompat) {\n if (logscale) {\n maxAxisY = maxY + ypad * span;\n minAxisY = minY;\n } else {\n maxAxisY = maxY + ypad * span;\n minAxisY = minY - ypad * span;\n\n // Backwards-compatible behavior: Move the span to start or end at zero if it's\n // close to zero.\n if (minAxisY < 0 && minY >= 0) minAxisY = 0;\n if (maxAxisY > 0 && maxY <= 0) maxAxisY = 0;\n }\n }\n axis.extremeRange = [minAxisY, maxAxisY];\n }\n if (axis.valueRange) {\n // This is a user-set value range for this axis.\n var y0 = isNullUndefinedOrNaN(axis.valueRange[0]) ? axis.extremeRange[0] : axis.valueRange[0];\n var y1 = isNullUndefinedOrNaN(axis.valueRange[1]) ? axis.extremeRange[1] : axis.valueRange[1];\n axis.computedValueRange = [y0, y1];\n } else {\n axis.computedValueRange = axis.extremeRange;\n }\n if (!ypadCompat) {\n // When using yRangePad, adjust the upper/lower bounds to add\n // padding unless the user has zoomed/panned the Y axis range.\n if (logscale) {\n y0 = axis.computedValueRange[0];\n y1 = axis.computedValueRange[1];\n var y0pct = ypad / (2 * ypad - 1);\n var y1pct = (ypad - 1) / (2 * ypad - 1);\n axis.computedValueRange[0] = utils.logRangeFraction(y0, y1, y0pct);\n axis.computedValueRange[1] = utils.logRangeFraction(y0, y1, y1pct);\n } else {\n y0 = axis.computedValueRange[0];\n y1 = axis.computedValueRange[1];\n span = y1 - y0;\n axis.computedValueRange[0] = y0 - span * ypad;\n axis.computedValueRange[1] = y1 + span * ypad;\n }\n }\n\n if (independentTicks) {\n axis.independentTicks = independentTicks;\n var opts = this.optionsViewForAxis_('y' + (i ? '2' : ''));\n var ticker = opts('ticker');\n axis.ticks = ticker(axis.computedValueRange[0], axis.computedValueRange[1], this.plotter_.area.h, opts, this);\n // Define the first independent axis as primary axis.\n if (!p_axis) p_axis = axis;\n }\n }\n if (p_axis === undefined) {\n throw \"Configuration Error: At least one axis has to have the \\\"independentTicks\\\" option activated.\";\n }\n // Add ticks. By default, all axes inherit the tick positions of the\n // primary axis. However, if an axis is specifically marked as having\n // independent ticks, then that is permissible as well.\n for (var i = 0; i < numAxes; i++) {\n var axis = this.axes_[i];\n\n if (!axis.independentTicks) {\n var opts = this.optionsViewForAxis_('y' + (i ? '2' : ''));\n var ticker = opts('ticker');\n var p_ticks = p_axis.ticks;\n var p_scale = p_axis.computedValueRange[1] - p_axis.computedValueRange[0];\n var scale = axis.computedValueRange[1] - axis.computedValueRange[0];\n var tick_values = [];\n for (var k = 0; k < p_ticks.length; k++) {\n var y_frac = (p_ticks[k].v - p_axis.computedValueRange[0]) / p_scale;\n var y_val = axis.computedValueRange[0] + y_frac * scale;\n tick_values.push(y_val);\n }\n\n axis.ticks = ticker(axis.computedValueRange[0], axis.computedValueRange[1], this.plotter_.area.h, opts, this, tick_values);\n }\n }\n};\n\n/**\n * Detects the type of the str (date or numeric) and sets the various\n * formatting attributes in this.attrs_ based on this type.\n * @param {string} str An x value.\n * @private\n */\nDygraph.prototype.detectTypeFromString_ = function (str) {\n var isDate = false;\n var dashPos = str.indexOf('-'); // could be 2006-01-01 _or_ 1.0e-2\n if (dashPos > 0 && str[dashPos - 1] != 'e' && str[dashPos - 1] != 'E' || str.indexOf('/') >= 0 || isNaN(parseFloat(str))) {\n isDate = true;\n } else if (str.length == 8 && str > '19700101' && str < '20371231') {\n // TODO(danvk): remove support for this format.\n isDate = true;\n }\n\n this.setXAxisOptions_(isDate);\n};\n\nDygraph.prototype.setXAxisOptions_ = function (isDate) {\n if (isDate) {\n this.attrs_.xValueParser = utils.dateParser;\n this.attrs_.axes.x.valueFormatter = utils.dateValueFormatter;\n this.attrs_.axes.x.ticker = DygraphTickers.dateTicker;\n this.attrs_.axes.x.axisLabelFormatter = utils.dateAxisLabelFormatter;\n } else {\n /** @private (shut up, jsdoc!) */\n this.attrs_.xValueParser = function (x) {\n return parseFloat(x);\n };\n // TODO(danvk): use Dygraph.numberValueFormatter here?\n /** @private (shut up, jsdoc!) */\n this.attrs_.axes.x.valueFormatter = function (x) {\n return x;\n };\n this.attrs_.axes.x.ticker = DygraphTickers.numericTicks;\n this.attrs_.axes.x.axisLabelFormatter = this.attrs_.axes.x.valueFormatter;\n }\n};\n\n/**\n * @private\n * Parses a string in a special csv format. We expect a csv file where each\n * line is a date point, and the first field in each line is the date string.\n * We also expect that all remaining fields represent series.\n * if the errorBars attribute is set, then interpret the fields as:\n * date, series1, stddev1, series2, stddev2, ...\n * @param {[Object]} data See above.\n *\n * @return [Object] An array with one entry for each row. These entries\n * are an array of cells in that row. The first entry is the parsed x-value for\n * the row. The second, third, etc. are the y-values. These can take on one of\n * three forms, depending on the CSV and constructor parameters:\n * 1. numeric value\n * 2. [ value, stddev ]\n * 3. [ low value, center value, high value ]\n */\nDygraph.prototype.parseCSV_ = function (data) {\n var ret = [];\n var line_delimiter = utils.detectLineDelimiter(data);\n var lines = data.split(line_delimiter || \"\\n\");\n var vals, j;\n\n // Use the default delimiter or fall back to a tab if that makes sense.\n var delim = this.getStringOption('delimiter');\n if (lines[0].indexOf(delim) == -1 && lines[0].indexOf('\\t') >= 0) {\n delim = '\\t';\n }\n\n var start = 0;\n if (!('labels' in this.user_attrs_)) {\n // User hasn't explicitly set labels, so they're (presumably) in the CSV.\n start = 1;\n this.attrs_.labels = lines[0].split(delim); // NOTE: _not_ user_attrs_.\n this.attributes_.reparseSeries();\n }\n var line_no = 0;\n\n var xParser;\n var defaultParserSet = false; // attempt to auto-detect x value type\n var expectedCols = this.attr_(\"labels\").length;\n var outOfOrder = false;\n for (var i = start; i < lines.length; i++) {\n var line = lines[i];\n line_no = i;\n if (line.length === 0) continue; // skip blank lines\n if (line[0] == '#') continue; // skip comment lines\n var inFields = line.split(delim);\n if (inFields.length < 2) continue;\n\n var fields = [];\n if (!defaultParserSet) {\n this.detectTypeFromString_(inFields[0]);\n xParser = this.getFunctionOption(\"xValueParser\");\n defaultParserSet = true;\n }\n fields[0] = xParser(inFields[0], this);\n\n // If fractions are expected, parse the numbers as \"A/B\"\n if (this.fractions_) {\n for (j = 1; j < inFields.length; j++) {\n // TODO(danvk): figure out an appropriate way to flag parse errors.\n vals = inFields[j].split(\"/\");\n if (vals.length != 2) {\n console.error('Expected fractional \"num/den\" values in CSV data ' + \"but found a value '\" + inFields[j] + \"' on line \" + (1 + i) + \" ('\" + line + \"') which is not of this form.\");\n fields[j] = [0, 0];\n } else {\n fields[j] = [utils.parseFloat_(vals[0], i, line), utils.parseFloat_(vals[1], i, line)];\n }\n }\n } else if (this.getBooleanOption(\"errorBars\")) {\n // If there are error bars, values are (value, stddev) pairs\n if (inFields.length % 2 != 1) {\n console.error('Expected alternating (value, stdev.) pairs in CSV data ' + 'but line ' + (1 + i) + ' has an odd number of values (' + (inFields.length - 1) + \"): '\" + line + \"'\");\n }\n for (j = 1; j < inFields.length; j += 2) {\n fields[(j + 1) / 2] = [utils.parseFloat_(inFields[j], i, line), utils.parseFloat_(inFields[j + 1], i, line)];\n }\n } else if (this.getBooleanOption(\"customBars\")) {\n // Bars are a low;center;high tuple\n for (j = 1; j < inFields.length; j++) {\n var val = inFields[j];\n if (/^ *$/.test(val)) {\n fields[j] = [null, null, null];\n } else {\n vals = val.split(\";\");\n if (vals.length == 3) {\n fields[j] = [utils.parseFloat_(vals[0], i, line), utils.parseFloat_(vals[1], i, line), utils.parseFloat_(vals[2], i, line)];\n } else {\n console.warn('When using customBars, values must be either blank ' + 'or \"low;center;high\" tuples (got \"' + val + '\" on line ' + (1 + i));\n }\n }\n }\n } else {\n // Values are just numbers\n for (j = 1; j < inFields.length; j++) {\n fields[j] = utils.parseFloat_(inFields[j], i, line);\n }\n }\n if (ret.length > 0 && fields[0] < ret[ret.length - 1][0]) {\n outOfOrder = true;\n }\n\n if (fields.length != expectedCols) {\n console.error(\"Number of columns in line \" + i + \" (\" + fields.length + \") does not agree with number of labels (\" + expectedCols + \") \" + line);\n }\n\n // If the user specified the 'labels' option and none of the cells of the\n // first row parsed correctly, then they probably double-specified the\n // labels. We go with the values set in the option, discard this row and\n // log a warning to the JS console.\n if (i === 0 && this.attr_('labels')) {\n var all_null = true;\n for (j = 0; all_null && j < fields.length; j++) {\n if (fields[j]) all_null = false;\n }\n if (all_null) {\n console.warn(\"The dygraphs 'labels' option is set, but the first row \" + \"of CSV data ('\" + line + \"') appears to also contain \" + \"labels. Will drop the CSV labels and use the option \" + \"labels.\");\n continue;\n }\n }\n ret.push(fields);\n }\n\n if (outOfOrder) {\n console.warn(\"CSV is out of order; order it correctly to speed loading.\");\n ret.sort(function (a, b) {\n return a[0] - b[0];\n });\n }\n\n return ret;\n};\n\n// In native format, all values must be dates or numbers.\n// This check isn't perfect but will catch most mistaken uses of strings.\nfunction validateNativeFormat(data) {\n var firstRow = data[0];\n var firstX = firstRow[0];\n if (typeof firstX !== 'number' && !utils.isDateLike(firstX)) {\n throw new Error('Expected number or date but got ' + typeof firstX + ': ' + firstX + '.');\n }\n for (var i = 1; i < firstRow.length; i++) {\n var val = firstRow[i];\n if (val === null || val === undefined) continue;\n if (typeof val === 'number') continue;\n if (utils.isArrayLike(val)) continue; // e.g. error bars or custom bars.\n throw new Error('Expected number or array but got ' + typeof val + ': ' + val + '.');\n }\n}\n\n/**\n * The user has provided their data as a pre-packaged JS array. If the x values\n * are numeric, this is the same as dygraphs' internal format. If the x values\n * are dates, we need to convert them from Date objects to ms since epoch.\n * @param {!Array} data\n * @return {Object} data with numeric x values.\n * @private\n */\nDygraph.prototype.parseArray_ = function (data) {\n // Peek at the first x value to see if it's numeric.\n if (data.length === 0) {\n console.error(\"Can't plot empty data set\");\n return null;\n }\n if (data[0].length === 0) {\n console.error(\"Data set cannot contain an empty row\");\n return null;\n }\n\n validateNativeFormat(data);\n\n var i;\n if (this.attr_(\"labels\") === null) {\n console.warn(\"Using default labels. Set labels explicitly via 'labels' \" + \"in the options parameter\");\n this.attrs_.labels = [\"X\"];\n for (i = 1; i < data[0].length; i++) {\n this.attrs_.labels.push(\"Y\" + i); // Not user_attrs_.\n }\n this.attributes_.reparseSeries();\n } else {\n var num_labels = this.attr_(\"labels\");\n if (num_labels.length != data[0].length) {\n console.error(\"Mismatch between number of labels (\" + num_labels + \")\" + \" and number of columns in array (\" + data[0].length + \")\");\n return null;\n }\n }\n\n if (utils.isDateLike(data[0][0])) {\n // Some intelligent defaults for a date x-axis.\n this.attrs_.axes.x.valueFormatter = utils.dateValueFormatter;\n this.attrs_.axes.x.ticker = DygraphTickers.dateTicker;\n this.attrs_.axes.x.axisLabelFormatter = utils.dateAxisLabelFormatter;\n\n // Assume they're all dates.\n var parsedData = utils.clone(data);\n for (i = 0; i < data.length; i++) {\n if (parsedData[i].length === 0) {\n console.error(\"Row \" + (1 + i) + \" of data is empty\");\n return null;\n }\n if (parsedData[i][0] === null || typeof parsedData[i][0].getTime != 'function' || isNaN(parsedData[i][0].getTime())) {\n console.error(\"x value in row \" + (1 + i) + \" is not a Date\");\n return null;\n }\n parsedData[i][0] = parsedData[i][0].getTime();\n }\n return parsedData;\n } else {\n // Some intelligent defaults for a numeric x-axis.\n /** @private (shut up, jsdoc!) */\n this.attrs_.axes.x.valueFormatter = function (x) {\n return x;\n };\n this.attrs_.axes.x.ticker = DygraphTickers.numericTicks;\n this.attrs_.axes.x.axisLabelFormatter = utils.numberAxisLabelFormatter;\n return data;\n }\n};\n\n/**\n * Parses a DataTable object from gviz.\n * The data is expected to have a first column that is either a date or a\n * number. All subsequent columns must be numbers. If there is a clear mismatch\n * between this.xValueParser_ and the type of the first column, it will be\n * fixed. Fills out rawData_.\n * @param {!google.visualization.DataTable} data See above.\n * @private\n */\nDygraph.prototype.parseDataTable_ = function (data) {\n var shortTextForAnnotationNum = function shortTextForAnnotationNum(num) {\n // converts [0-9]+ [A-Z][a-z]*\n // example: 0=A, 1=B, 25=Z, 26=Aa, 27=Ab\n // and continues like.. Ba Bb .. Za .. Zz..Aaa...Zzz Aaaa Zzzz\n var shortText = String.fromCharCode(65 /* A */ + num % 26);\n num = Math.floor(num / 26);\n while (num > 0) {\n shortText = String.fromCharCode(65 /* A */ + (num - 1) % 26) + shortText.toLowerCase();\n num = Math.floor((num - 1) / 26);\n }\n return shortText;\n };\n\n var cols = data.getNumberOfColumns();\n var rows = data.getNumberOfRows();\n\n var indepType = data.getColumnType(0);\n if (indepType == 'date' || indepType == 'datetime') {\n this.attrs_.xValueParser = utils.dateParser;\n this.attrs_.axes.x.valueFormatter = utils.dateValueFormatter;\n this.attrs_.axes.x.ticker = DygraphTickers.dateTicker;\n this.attrs_.axes.x.axisLabelFormatter = utils.dateAxisLabelFormatter;\n } else if (indepType == 'number') {\n this.attrs_.xValueParser = function (x) {\n return parseFloat(x);\n };\n this.attrs_.axes.x.valueFormatter = function (x) {\n return x;\n };\n this.attrs_.axes.x.ticker = DygraphTickers.numericTicks;\n this.attrs_.axes.x.axisLabelFormatter = this.attrs_.axes.x.valueFormatter;\n } else {\n throw new Error(\"only 'date', 'datetime' and 'number' types are supported \" + \"for column 1 of DataTable input (Got '\" + indepType + \"')\");\n }\n\n // Array of the column indices which contain data (and not annotations).\n var colIdx = [];\n var annotationCols = {}; // data index -> [annotation cols]\n var hasAnnotations = false;\n var i, j;\n for (i = 1; i < cols; i++) {\n var type = data.getColumnType(i);\n if (type == 'number') {\n colIdx.push(i);\n } else if (type == 'string' && this.getBooleanOption('displayAnnotations')) {\n // This is OK -- it's an annotation column.\n var dataIdx = colIdx[colIdx.length - 1];\n if (!annotationCols.hasOwnProperty(dataIdx)) {\n annotationCols[dataIdx] = [i];\n } else {\n annotationCols[dataIdx].push(i);\n }\n hasAnnotations = true;\n } else {\n throw new Error(\"Only 'number' is supported as a dependent type with Gviz.\" + \" 'string' is only supported if displayAnnotations is true\");\n }\n }\n\n // Read column labels\n // TODO(danvk): add support back for errorBars\n var labels = [data.getColumnLabel(0)];\n for (i = 0; i < colIdx.length; i++) {\n labels.push(data.getColumnLabel(colIdx[i]));\n if (this.getBooleanOption(\"errorBars\")) i += 1;\n }\n this.attrs_.labels = labels;\n cols = labels.length;\n\n var ret = [];\n var outOfOrder = false;\n var annotations = [];\n for (i = 0; i < rows; i++) {\n var row = [];\n if (typeof data.getValue(i, 0) === 'undefined' || data.getValue(i, 0) === null) {\n console.warn(\"Ignoring row \" + i + \" of DataTable because of undefined or null first column.\");\n continue;\n }\n\n if (indepType == 'date' || indepType == 'datetime') {\n row.push(data.getValue(i, 0).getTime());\n } else {\n row.push(data.getValue(i, 0));\n }\n if (!this.getBooleanOption(\"errorBars\")) {\n for (j = 0; j < colIdx.length; j++) {\n var col = colIdx[j];\n row.push(data.getValue(i, col));\n if (hasAnnotations && annotationCols.hasOwnProperty(col) && data.getValue(i, annotationCols[col][0]) !== null) {\n var ann = {};\n ann.series = data.getColumnLabel(col);\n ann.xval = row[0];\n ann.shortText = shortTextForAnnotationNum(annotations.length);\n ann.text = '';\n for (var k = 0; k < annotationCols[col].length; k++) {\n if (k) ann.text += \"\\n\";\n ann.text += data.getValue(i, annotationCols[col][k]);\n }\n annotations.push(ann);\n }\n }\n\n // Strip out infinities, which give dygraphs problems later on.\n for (j = 0; j < row.length; j++) {\n if (!isFinite(row[j])) row[j] = null;\n }\n } else {\n for (j = 0; j < cols - 1; j++) {\n row.push([data.getValue(i, 1 + 2 * j), data.getValue(i, 2 + 2 * j)]);\n }\n }\n if (ret.length > 0 && row[0] < ret[ret.length - 1][0]) {\n outOfOrder = true;\n }\n ret.push(row);\n }\n\n if (outOfOrder) {\n console.warn(\"DataTable is out of order; order it correctly to speed loading.\");\n ret.sort(function (a, b) {\n return a[0] - b[0];\n });\n }\n this.rawData_ = ret;\n\n if (annotations.length > 0) {\n this.setAnnotations(annotations, true);\n }\n this.attributes_.reparseSeries();\n};\n\n/**\n * Signals to plugins that the chart data has updated.\n * This happens after the data has updated but before the chart has redrawn.\n * @private\n */\nDygraph.prototype.cascadeDataDidUpdateEvent_ = function () {\n // TODO(danvk): there are some issues checking xAxisRange() and using\n // toDomCoords from handlers of this event. The visible range should be set\n // when the chart is drawn, not derived from the data.\n this.cascadeEvents_('dataDidUpdate', {});\n};\n\n/**\n * Get the CSV data. If it's in a function, call that function. If it's in a\n * file, do an XMLHttpRequest to get it.\n * @private\n */\nDygraph.prototype.start_ = function () {\n var data = this.file_;\n\n // Functions can return references of all other types.\n if (typeof data == 'function') {\n data = data();\n }\n\n if (utils.isArrayLike(data)) {\n this.rawData_ = this.parseArray_(data);\n this.cascadeDataDidUpdateEvent_();\n this.predraw_();\n } else if (typeof data == 'object' && typeof data.getColumnRange == 'function') {\n // must be a DataTable from gviz.\n this.parseDataTable_(data);\n this.cascadeDataDidUpdateEvent_();\n this.predraw_();\n } else if (typeof data == 'string') {\n // Heuristic: a newline means it's CSV data. Otherwise it's an URL.\n var line_delimiter = utils.detectLineDelimiter(data);\n if (line_delimiter) {\n this.loadedEvent_(data);\n } else {\n // REMOVE_FOR_IE\n var req;\n if (window.XMLHttpRequest) {\n // Firefox, Opera, IE7, and other browsers will use the native object\n req = new XMLHttpRequest();\n } else {\n // IE 5 and 6 will use the ActiveX control\n req = new ActiveXObject(\"Microsoft.XMLHTTP\");\n }\n\n var caller = this;\n req.onreadystatechange = function () {\n if (req.readyState == 4) {\n if (req.status === 200 || // Normal http\n req.status === 0) {\n // Chrome w/ --allow-file-access-from-files\n caller.loadedEvent_(req.responseText);\n }\n }\n };\n\n req.open(\"GET\", data, true);\n req.send(null);\n }\n } else {\n console.error(\"Unknown data format: \" + typeof data);\n }\n};\n\n/**\n * Changes various properties of the graph. These can include:\n *
    \n *
  • file: changes the source data for the graph
  • \n *
  • errorBars: changes whether the data contains stddev
  • \n *
\n *\n * There's a huge variety of options that can be passed to this method. For a\n * full list, see http://dygraphs.com/options.html.\n *\n * @param {Object} input_attrs The new properties and values\n * @param {boolean} block_redraw Usually the chart is redrawn after every\n * call to updateOptions(). If you know better, you can pass true to\n * explicitly block the redraw. This can be useful for chaining\n * updateOptions() calls, avoiding the occasional infinite loop and\n * preventing redraws when it's not necessary (e.g. when updating a\n * callback).\n */\nDygraph.prototype.updateOptions = function (input_attrs, block_redraw) {\n if (typeof block_redraw == 'undefined') block_redraw = false;\n\n // copyUserAttrs_ drops the \"file\" parameter as a convenience to us.\n var file = input_attrs.file;\n var attrs = Dygraph.copyUserAttrs_(input_attrs);\n\n // TODO(danvk): this is a mess. Move these options into attr_.\n if ('rollPeriod' in attrs) {\n this.rollPeriod_ = attrs.rollPeriod;\n }\n if ('dateWindow' in attrs) {\n this.dateWindow_ = attrs.dateWindow;\n }\n\n // TODO(danvk): validate per-series options.\n // Supported:\n // strokeWidth\n // pointSize\n // drawPoints\n // highlightCircleSize\n\n // Check if this set options will require new points.\n var requiresNewPoints = utils.isPixelChangingOptionList(this.attr_(\"labels\"), attrs);\n\n utils.updateDeep(this.user_attrs_, attrs);\n\n this.attributes_.reparseSeries();\n\n if (file) {\n // This event indicates that the data is about to change, but hasn't yet.\n // TODO(danvk): support cancellation of the update via this event.\n this.cascadeEvents_('dataWillUpdate', {});\n\n this.file_ = file;\n if (!block_redraw) this.start_();\n } else {\n if (!block_redraw) {\n if (requiresNewPoints) {\n this.predraw_();\n } else {\n this.renderGraph_(false);\n }\n }\n }\n};\n\n/**\n * Make a copy of input attributes, removing file as a convenience.\n * @private\n */\nDygraph.copyUserAttrs_ = function (attrs) {\n var my_attrs = {};\n for (var k in attrs) {\n if (!attrs.hasOwnProperty(k)) continue;\n if (k == 'file') continue;\n if (attrs.hasOwnProperty(k)) my_attrs[k] = attrs[k];\n }\n return my_attrs;\n};\n\n/**\n * Resizes the dygraph. If no parameters are specified, resizes to fill the\n * containing div (which has presumably changed size since the dygraph was\n * instantiated. If the width/height are specified, the div will be resized.\n *\n * This is far more efficient than destroying and re-instantiating a\n * Dygraph, since it doesn't have to reparse the underlying data.\n *\n * @param {number} width Width (in pixels)\n * @param {number} height Height (in pixels)\n */\nDygraph.prototype.resize = function (width, height) {\n if (this.resize_lock) {\n return;\n }\n this.resize_lock = true;\n\n if (width === null != (height === null)) {\n console.warn(\"Dygraph.resize() should be called with zero parameters or \" + \"two non-NULL parameters. Pretending it was zero.\");\n width = height = null;\n }\n\n var old_width = this.width_;\n var old_height = this.height_;\n\n if (width) {\n this.maindiv_.style.width = width + \"px\";\n this.maindiv_.style.height = height + \"px\";\n this.width_ = width;\n this.height_ = height;\n } else {\n this.width_ = this.maindiv_.clientWidth;\n this.height_ = this.maindiv_.clientHeight;\n }\n\n if (old_width != this.width_ || old_height != this.height_) {\n // Resizing a canvas erases it, even when the size doesn't change, so\n // any resize needs to be followed by a redraw.\n this.resizeElements_();\n this.predraw_();\n }\n\n this.resize_lock = false;\n};\n\n/**\n * Adjusts the number of points in the rolling average. Updates the graph to\n * reflect the new averaging period.\n * @param {number} length Number of points over which to average the data.\n */\nDygraph.prototype.adjustRoll = function (length) {\n this.rollPeriod_ = length;\n this.predraw_();\n};\n\n/**\n * Returns a boolean array of visibility statuses.\n */\nDygraph.prototype.visibility = function () {\n // Do lazy-initialization, so that this happens after we know the number of\n // data series.\n if (!this.getOption(\"visibility\")) {\n this.attrs_.visibility = [];\n }\n // TODO(danvk): it looks like this could go into an infinite loop w/ user_attrs.\n while (this.getOption(\"visibility\").length < this.numColumns() - 1) {\n this.attrs_.visibility.push(true);\n }\n return this.getOption(\"visibility\");\n};\n\n/**\n * Changes the visibility of one or more series.\n *\n * @param {number|number[]|object} num the series index or an array of series indices\n * or a boolean array of visibility states by index\n * or an object mapping series numbers, as keys, to\n * visibility state (boolean values)\n * @param {boolean} value the visibility state expressed as a boolean\n */\nDygraph.prototype.setVisibility = function (num, value) {\n var x = this.visibility();\n var numIsObject = false;\n\n if (!Array.isArray(num)) {\n if (num !== null && typeof num === 'object') {\n numIsObject = true;\n } else {\n num = [num];\n }\n }\n\n if (numIsObject) {\n for (var i in num) {\n if (num.hasOwnProperty(i)) {\n if (i < 0 || i >= x.length) {\n console.warn(\"Invalid series number in setVisibility: \" + i);\n } else {\n x[i] = num[i];\n }\n }\n }\n } else {\n for (var i = 0; i < num.length; i++) {\n if (typeof num[i] === 'boolean') {\n if (i >= x.length) {\n console.warn(\"Invalid series number in setVisibility: \" + i);\n } else {\n x[i] = num[i];\n }\n } else {\n if (num[i] < 0 || num[i] >= x.length) {\n console.warn(\"Invalid series number in setVisibility: \" + num[i]);\n } else {\n x[num[i]] = value;\n }\n }\n }\n }\n\n this.predraw_();\n};\n\n/**\n * How large of an area will the dygraph render itself in?\n * This is used for testing.\n * @return A {width: w, height: h} object.\n * @private\n */\nDygraph.prototype.size = function () {\n return { width: this.width_, height: this.height_ };\n};\n\n/**\n * Update the list of annotations and redraw the chart.\n * See dygraphs.com/annotations.html for more info on how to use annotations.\n * @param ann {Array} An array of annotation objects.\n * @param suppressDraw {Boolean} Set to \"true\" to block chart redraw (optional).\n */\nDygraph.prototype.setAnnotations = function (ann, suppressDraw) {\n // Only add the annotation CSS rule once we know it will be used.\n this.annotations_ = ann;\n if (!this.layout_) {\n console.warn(\"Tried to setAnnotations before dygraph was ready. \" + \"Try setting them in a ready() block. See \" + \"dygraphs.com/tests/annotation.html\");\n return;\n }\n\n this.layout_.setAnnotations(this.annotations_);\n if (!suppressDraw) {\n this.predraw_();\n }\n};\n\n/**\n * Return the list of annotations.\n */\nDygraph.prototype.annotations = function () {\n return this.annotations_;\n};\n\n/**\n * Get the list of label names for this graph. The first column is the\n * x-axis, so the data series names start at index 1.\n *\n * Returns null when labels have not yet been defined.\n */\nDygraph.prototype.getLabels = function () {\n var labels = this.attr_(\"labels\");\n return labels ? labels.slice() : null;\n};\n\n/**\n * Get the index of a series (column) given its name. The first column is the\n * x-axis, so the data series start with index 1.\n */\nDygraph.prototype.indexFromSetName = function (name) {\n return this.setIndexByName_[name];\n};\n\n/**\n * Find the row number corresponding to the given x-value.\n * Returns null if there is no such x-value in the data.\n * If there are multiple rows with the same x-value, this will return the\n * first one.\n * @param {number} xVal The x-value to look for (e.g. millis since epoch).\n * @return {?number} The row number, which you can pass to getValue(), or null.\n */\nDygraph.prototype.getRowForX = function (xVal) {\n var low = 0,\n high = this.numRows() - 1;\n\n while (low <= high) {\n var idx = high + low >> 1;\n var x = this.getValue(idx, 0);\n if (x < xVal) {\n low = idx + 1;\n } else if (x > xVal) {\n high = idx - 1;\n } else if (low != idx) {\n // equal, but there may be an earlier match.\n high = idx;\n } else {\n return idx;\n }\n }\n\n return null;\n};\n\n/**\n * Trigger a callback when the dygraph has drawn itself and is ready to be\n * manipulated. This is primarily useful when dygraphs has to do an XHR for the\n * data (i.e. a URL is passed as the data source) and the chart is drawn\n * asynchronously. If the chart has already drawn, the callback will fire\n * immediately.\n *\n * This is a good place to call setAnnotation().\n *\n * @param {function(!Dygraph)} callback The callback to trigger when the chart\n * is ready.\n */\nDygraph.prototype.ready = function (callback) {\n if (this.is_initial_draw_) {\n this.readyFns_.push(callback);\n } else {\n callback.call(this, this);\n }\n};\n\n/**\n * Add an event handler. This event handler is kept until the graph is\n * destroyed with a call to graph.destroy().\n *\n * @param {!Node} elem The element to add the event to.\n * @param {string} type The type of the event, e.g. 'click' or 'mousemove'.\n * @param {function(Event):(boolean|undefined)} fn The function to call\n * on the event. The function takes one parameter: the event object.\n * @private\n */\nDygraph.prototype.addAndTrackEvent = function (elem, type, fn) {\n utils.addEvent(elem, type, fn);\n this.registeredEvents_.push({ elem: elem, type: type, fn: fn });\n};\n\nDygraph.prototype.removeTrackedEvents_ = function () {\n if (this.registeredEvents_) {\n for (var idx = 0; idx < this.registeredEvents_.length; idx++) {\n var reg = this.registeredEvents_[idx];\n utils.removeEvent(reg.elem, reg.type, reg.fn);\n }\n }\n\n this.registeredEvents_ = [];\n};\n\n// Installed plugins, in order of precedence (most-general to most-specific).\nDygraph.PLUGINS = [_pluginsLegend2['default'], _pluginsAxes2['default'], _pluginsRangeSelector2['default'], // Has to be before ChartLabels so that its callbacks are called after ChartLabels' callbacks.\n_pluginsChartLabels2['default'], _pluginsAnnotations2['default'], _pluginsGrid2['default']];\n\n// There are many symbols which have historically been available through the\n// Dygraph class. These are exported here for backwards compatibility.\nDygraph.GVizChart = _dygraphGviz2['default'];\nDygraph.DASHED_LINE = utils.DASHED_LINE;\nDygraph.DOT_DASH_LINE = utils.DOT_DASH_LINE;\nDygraph.dateAxisLabelFormatter = utils.dateAxisLabelFormatter;\nDygraph.toRGB_ = utils.toRGB_;\nDygraph.findPos = utils.findPos;\nDygraph.pageX = utils.pageX;\nDygraph.pageY = utils.pageY;\nDygraph.dateString_ = utils.dateString_;\nDygraph.defaultInteractionModel = _dygraphInteractionModel2['default'].defaultModel;\nDygraph.nonInteractiveModel = Dygraph.nonInteractiveModel_ = _dygraphInteractionModel2['default'].nonInteractiveModel_;\nDygraph.Circles = utils.Circles;\n\nDygraph.Plugins = {\n Legend: _pluginsLegend2['default'],\n Axes: _pluginsAxes2['default'],\n Annotations: _pluginsAnnotations2['default'],\n ChartLabels: _pluginsChartLabels2['default'],\n Grid: _pluginsGrid2['default'],\n RangeSelector: _pluginsRangeSelector2['default']\n};\n\nDygraph.DataHandlers = {\n DefaultHandler: _datahandlerDefault2['default'],\n BarsHandler: _datahandlerBars2['default'],\n CustomBarsHandler: _datahandlerBarsCustom2['default'],\n DefaultFractionHandler: _datahandlerDefaultFractions2['default'],\n ErrorBarsHandler: _datahandlerBarsError2['default'],\n FractionsBarsHandler: _datahandlerBarsFractions2['default']\n};\n\nDygraph.startPan = _dygraphInteractionModel2['default'].startPan;\nDygraph.startZoom = _dygraphInteractionModel2['default'].startZoom;\nDygraph.movePan = _dygraphInteractionModel2['default'].movePan;\nDygraph.moveZoom = _dygraphInteractionModel2['default'].moveZoom;\nDygraph.endPan = _dygraphInteractionModel2['default'].endPan;\nDygraph.endZoom = _dygraphInteractionModel2['default'].endZoom;\n\nDygraph.numericLinearTicks = DygraphTickers.numericLinearTicks;\nDygraph.numericTicks = DygraphTickers.numericTicks;\nDygraph.dateTicker = DygraphTickers.dateTicker;\nDygraph.Granularity = DygraphTickers.Granularity;\nDygraph.getDateAxis = DygraphTickers.getDateAxis;\nDygraph.floatFormat = utils.floatFormat;\n\nexports['default'] = Dygraph;\nmodule.exports = exports['default'];","/**\n * @license\n * Copyright 2011 Dan Vanderkam (danvdk@gmail.com)\n * MIT-licensed (http://opensource.org/licenses/MIT)\n */\n\n/**\n * @fileoverview Description of this file.\n * @author danvk@google.com (Dan Vanderkam)\n *\n * A ticker is a function with the following interface:\n *\n * function(a, b, pixels, options_view, dygraph, forced_values);\n * -> [ { v: tick1_v, label: tick1_label[, label_v: label_v1] },\n * { v: tick2_v, label: tick2_label[, label_v: label_v2] },\n * ...\n * ]\n *\n * The returned value is called a \"tick list\".\n *\n * Arguments\n * ---------\n *\n * [a, b] is the range of the axis for which ticks are being generated. For a\n * numeric axis, these will simply be numbers. For a date axis, these will be\n * millis since epoch (convertable to Date objects using \"new Date(a)\" and \"new\n * Date(b)\").\n *\n * opts provides access to chart- and axis-specific options. It can be used to\n * access number/date formatting code/options, check for a log scale, etc.\n *\n * pixels is the length of the axis in pixels. opts('pixelsPerLabel') is the\n * minimum amount of space to be allotted to each label. For instance, if\n * pixels=400 and opts('pixelsPerLabel')=40 then the ticker should return\n * between zero and ten (400/40) ticks.\n *\n * dygraph is the Dygraph object for which an axis is being constructed.\n *\n * forced_values is used for secondary y-axes. The tick positions are typically\n * set by the primary y-axis, so the secondary y-axis has no choice in where to\n * put these. It simply has to generate labels for these data values.\n *\n * Tick lists\n * ----------\n * Typically a tick will have both a grid/tick line and a label at one end of\n * that line (at the bottom for an x-axis, at left or right for the y-axis).\n *\n * A tick may be missing one of these two components:\n * - If \"label_v\" is specified instead of \"v\", then there will be no tick or\n * gridline, just a label.\n * - Similarly, if \"label\" is not specified, then there will be a gridline\n * without a label.\n *\n * This flexibility is useful in a few situations:\n * - For log scales, some of the tick lines may be too close to all have labels.\n * - For date scales where years are being displayed, it is desirable to display\n * tick marks at the beginnings of years but labels (e.g. \"2006\") in the\n * middle of the years.\n */\n\n/*jshint sub:true */\n/*global Dygraph:false */\n\"use strict\";\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nvar _dygraphUtils = require('./dygraph-utils');\n\nvar utils = _interopRequireWildcard(_dygraphUtils);\n\n/** @typedef {Array.<{v:number, label:string, label_v:(string|undefined)}>} */\nvar TickList = undefined; // the ' = undefined' keeps jshint happy.\n\n/** @typedef {function(\n * number,\n * number,\n * number,\n * function(string):*,\n * Dygraph=,\n * Array.=\n * ): TickList}\n */\nvar Ticker = undefined; // the ' = undefined' keeps jshint happy.\n\n/** @type {Ticker} */\nvar numericLinearTicks = function numericLinearTicks(a, b, pixels, opts, dygraph, vals) {\n var nonLogscaleOpts = function nonLogscaleOpts(opt) {\n if (opt === 'logscale') return false;\n return opts(opt);\n };\n return numericTicks(a, b, pixels, nonLogscaleOpts, dygraph, vals);\n};\n\nexports.numericLinearTicks = numericLinearTicks;\n/** @type {Ticker} */\nvar numericTicks = function numericTicks(a, b, pixels, opts, dygraph, vals) {\n var pixels_per_tick = /** @type{number} */opts('pixelsPerLabel');\n var ticks = [];\n var i, j, tickV, nTicks;\n if (vals) {\n for (i = 0; i < vals.length; i++) {\n ticks.push({ v: vals[i] });\n }\n } else {\n // TODO(danvk): factor this log-scale block out into a separate function.\n if (opts(\"logscale\")) {\n nTicks = Math.floor(pixels / pixels_per_tick);\n var minIdx = utils.binarySearch(a, PREFERRED_LOG_TICK_VALUES, 1);\n var maxIdx = utils.binarySearch(b, PREFERRED_LOG_TICK_VALUES, -1);\n if (minIdx == -1) {\n minIdx = 0;\n }\n if (maxIdx == -1) {\n maxIdx = PREFERRED_LOG_TICK_VALUES.length - 1;\n }\n // Count the number of tick values would appear, if we can get at least\n // nTicks / 4 accept them.\n var lastDisplayed = null;\n if (maxIdx - minIdx >= nTicks / 4) {\n for (var idx = maxIdx; idx >= minIdx; idx--) {\n var tickValue = PREFERRED_LOG_TICK_VALUES[idx];\n var pixel_coord = Math.log(tickValue / a) / Math.log(b / a) * pixels;\n var tick = { v: tickValue };\n if (lastDisplayed === null) {\n lastDisplayed = {\n tickValue: tickValue,\n pixel_coord: pixel_coord\n };\n } else {\n if (Math.abs(pixel_coord - lastDisplayed.pixel_coord) >= pixels_per_tick) {\n lastDisplayed = {\n tickValue: tickValue,\n pixel_coord: pixel_coord\n };\n } else {\n tick.label = \"\";\n }\n }\n ticks.push(tick);\n }\n // Since we went in backwards order.\n ticks.reverse();\n }\n }\n\n // ticks.length won't be 0 if the log scale function finds values to insert.\n if (ticks.length === 0) {\n // Basic idea:\n // Try labels every 1, 2, 5, 10, 20, 50, 100, etc.\n // Calculate the resulting tick spacing (i.e. this.height_ / nTicks).\n // The first spacing greater than pixelsPerYLabel is what we use.\n // TODO(danvk): version that works on a log scale.\n var kmg2 = opts(\"labelsKMG2\");\n var mults, base;\n if (kmg2) {\n mults = [1, 2, 4, 8, 16, 32, 64, 128, 256];\n base = 16;\n } else {\n mults = [1, 2, 5, 10, 20, 50, 100];\n base = 10;\n }\n\n // Get the maximum number of permitted ticks based on the\n // graph's pixel size and pixels_per_tick setting.\n var max_ticks = Math.ceil(pixels / pixels_per_tick);\n\n // Now calculate the data unit equivalent of this tick spacing.\n // Use abs() since graphs may have a reversed Y axis.\n var units_per_tick = Math.abs(b - a) / max_ticks;\n\n // Based on this, get a starting scale which is the largest\n // integer power of the chosen base (10 or 16) that still remains\n // below the requested pixels_per_tick spacing.\n var base_power = Math.floor(Math.log(units_per_tick) / Math.log(base));\n var base_scale = Math.pow(base, base_power);\n\n // Now try multiples of the starting scale until we find one\n // that results in tick marks spaced sufficiently far apart.\n // The \"mults\" array should cover the range 1 .. base^2 to\n // adjust for rounding and edge effects.\n var scale, low_val, high_val, spacing;\n for (j = 0; j < mults.length; j++) {\n scale = base_scale * mults[j];\n low_val = Math.floor(a / scale) * scale;\n high_val = Math.ceil(b / scale) * scale;\n nTicks = Math.abs(high_val - low_val) / scale;\n spacing = pixels / nTicks;\n if (spacing > pixels_per_tick) break;\n }\n\n // Construct the set of ticks.\n // Allow reverse y-axis if it's explicitly requested.\n if (low_val > high_val) scale *= -1;\n for (i = 0; i <= nTicks; i++) {\n tickV = low_val + i * scale;\n ticks.push({ v: tickV });\n }\n }\n }\n\n var formatter = /**@type{AxisLabelFormatter}*/opts('axisLabelFormatter');\n\n // Add labels to the ticks.\n for (i = 0; i < ticks.length; i++) {\n if (ticks[i].label !== undefined) continue; // Use current label.\n // TODO(danvk): set granularity to something appropriate here.\n ticks[i].label = formatter.call(dygraph, ticks[i].v, 0, opts, dygraph);\n }\n\n return ticks;\n};\n\nexports.numericTicks = numericTicks;\n/** @type {Ticker} */\nvar dateTicker = function dateTicker(a, b, pixels, opts, dygraph, vals) {\n var chosen = pickDateTickGranularity(a, b, pixels, opts);\n\n if (chosen >= 0) {\n return getDateAxis(a, b, chosen, opts, dygraph);\n } else {\n // this can happen if self.width_ is zero.\n return [];\n }\n};\n\nexports.dateTicker = dateTicker;\n// Time granularity enumeration\nvar Granularity = {\n MILLISECONDLY: 0,\n TWO_MILLISECONDLY: 1,\n FIVE_MILLISECONDLY: 2,\n TEN_MILLISECONDLY: 3,\n FIFTY_MILLISECONDLY: 4,\n HUNDRED_MILLISECONDLY: 5,\n FIVE_HUNDRED_MILLISECONDLY: 6,\n SECONDLY: 7,\n TWO_SECONDLY: 8,\n FIVE_SECONDLY: 9,\n TEN_SECONDLY: 10,\n THIRTY_SECONDLY: 11,\n MINUTELY: 12,\n TWO_MINUTELY: 13,\n FIVE_MINUTELY: 14,\n TEN_MINUTELY: 15,\n THIRTY_MINUTELY: 16,\n HOURLY: 17,\n TWO_HOURLY: 18,\n SIX_HOURLY: 19,\n DAILY: 20,\n TWO_DAILY: 21,\n WEEKLY: 22,\n MONTHLY: 23,\n QUARTERLY: 24,\n BIANNUAL: 25,\n ANNUAL: 26,\n DECADAL: 27,\n CENTENNIAL: 28,\n NUM_GRANULARITIES: 29\n};\n\nexports.Granularity = Granularity;\n// Date components enumeration (in the order of the arguments in Date)\n// TODO: make this an @enum\nvar DateField = {\n DATEFIELD_Y: 0,\n DATEFIELD_M: 1,\n DATEFIELD_D: 2,\n DATEFIELD_HH: 3,\n DATEFIELD_MM: 4,\n DATEFIELD_SS: 5,\n DATEFIELD_MS: 6,\n NUM_DATEFIELDS: 7\n};\n\n/**\n * The value of datefield will start at an even multiple of \"step\", i.e.\n * if datefield=SS and step=5 then the first tick will be on a multiple of 5s.\n *\n * For granularities <= HOURLY, ticks are generated every `spacing` ms.\n *\n * At coarser granularities, ticks are generated by incrementing `datefield` by\n * `step`. In this case, the `spacing` value is only used to estimate the\n * number of ticks. It should roughly correspond to the spacing between\n * adjacent ticks.\n *\n * @type {Array.<{datefield:number, step:number, spacing:number}>}\n */\nvar TICK_PLACEMENT = [];\nTICK_PLACEMENT[Granularity.MILLISECONDLY] = { datefield: DateField.DATEFIELD_MS, step: 1, spacing: 1 };\nTICK_PLACEMENT[Granularity.TWO_MILLISECONDLY] = { datefield: DateField.DATEFIELD_MS, step: 2, spacing: 2 };\nTICK_PLACEMENT[Granularity.FIVE_MILLISECONDLY] = { datefield: DateField.DATEFIELD_MS, step: 5, spacing: 5 };\nTICK_PLACEMENT[Granularity.TEN_MILLISECONDLY] = { datefield: DateField.DATEFIELD_MS, step: 10, spacing: 10 };\nTICK_PLACEMENT[Granularity.FIFTY_MILLISECONDLY] = { datefield: DateField.DATEFIELD_MS, step: 50, spacing: 50 };\nTICK_PLACEMENT[Granularity.HUNDRED_MILLISECONDLY] = { datefield: DateField.DATEFIELD_MS, step: 100, spacing: 100 };\nTICK_PLACEMENT[Granularity.FIVE_HUNDRED_MILLISECONDLY] = { datefield: DateField.DATEFIELD_MS, step: 500, spacing: 500 };\nTICK_PLACEMENT[Granularity.SECONDLY] = { datefield: DateField.DATEFIELD_SS, step: 1, spacing: 1000 * 1 };\nTICK_PLACEMENT[Granularity.TWO_SECONDLY] = { datefield: DateField.DATEFIELD_SS, step: 2, spacing: 1000 * 2 };\nTICK_PLACEMENT[Granularity.FIVE_SECONDLY] = { datefield: DateField.DATEFIELD_SS, step: 5, spacing: 1000 * 5 };\nTICK_PLACEMENT[Granularity.TEN_SECONDLY] = { datefield: DateField.DATEFIELD_SS, step: 10, spacing: 1000 * 10 };\nTICK_PLACEMENT[Granularity.THIRTY_SECONDLY] = { datefield: DateField.DATEFIELD_SS, step: 30, spacing: 1000 * 30 };\nTICK_PLACEMENT[Granularity.MINUTELY] = { datefield: DateField.DATEFIELD_MM, step: 1, spacing: 1000 * 60 };\nTICK_PLACEMENT[Granularity.TWO_MINUTELY] = { datefield: DateField.DATEFIELD_MM, step: 2, spacing: 1000 * 60 * 2 };\nTICK_PLACEMENT[Granularity.FIVE_MINUTELY] = { datefield: DateField.DATEFIELD_MM, step: 5, spacing: 1000 * 60 * 5 };\nTICK_PLACEMENT[Granularity.TEN_MINUTELY] = { datefield: DateField.DATEFIELD_MM, step: 10, spacing: 1000 * 60 * 10 };\nTICK_PLACEMENT[Granularity.THIRTY_MINUTELY] = { datefield: DateField.DATEFIELD_MM, step: 30, spacing: 1000 * 60 * 30 };\nTICK_PLACEMENT[Granularity.HOURLY] = { datefield: DateField.DATEFIELD_HH, step: 1, spacing: 1000 * 3600 };\nTICK_PLACEMENT[Granularity.TWO_HOURLY] = { datefield: DateField.DATEFIELD_HH, step: 2, spacing: 1000 * 3600 * 2 };\nTICK_PLACEMENT[Granularity.SIX_HOURLY] = { datefield: DateField.DATEFIELD_HH, step: 6, spacing: 1000 * 3600 * 6 };\nTICK_PLACEMENT[Granularity.DAILY] = { datefield: DateField.DATEFIELD_D, step: 1, spacing: 1000 * 86400 };\nTICK_PLACEMENT[Granularity.TWO_DAILY] = { datefield: DateField.DATEFIELD_D, step: 2, spacing: 1000 * 86400 * 2 };\nTICK_PLACEMENT[Granularity.WEEKLY] = { datefield: DateField.DATEFIELD_D, step: 7, spacing: 1000 * 604800 };\nTICK_PLACEMENT[Granularity.MONTHLY] = { datefield: DateField.DATEFIELD_M, step: 1, spacing: 1000 * 7200 * 365.2524 }; // 1e3 * 60 * 60 * 24 * 365.2524 / 12\nTICK_PLACEMENT[Granularity.QUARTERLY] = { datefield: DateField.DATEFIELD_M, step: 3, spacing: 1000 * 21600 * 365.2524 }; // 1e3 * 60 * 60 * 24 * 365.2524 / 4\nTICK_PLACEMENT[Granularity.BIANNUAL] = { datefield: DateField.DATEFIELD_M, step: 6, spacing: 1000 * 43200 * 365.2524 }; // 1e3 * 60 * 60 * 24 * 365.2524 / 2\nTICK_PLACEMENT[Granularity.ANNUAL] = { datefield: DateField.DATEFIELD_Y, step: 1, spacing: 1000 * 86400 * 365.2524 }; // 1e3 * 60 * 60 * 24 * 365.2524 * 1\nTICK_PLACEMENT[Granularity.DECADAL] = { datefield: DateField.DATEFIELD_Y, step: 10, spacing: 1000 * 864000 * 365.2524 }; // 1e3 * 60 * 60 * 24 * 365.2524 * 10\nTICK_PLACEMENT[Granularity.CENTENNIAL] = { datefield: DateField.DATEFIELD_Y, step: 100, spacing: 1000 * 8640000 * 365.2524 }; // 1e3 * 60 * 60 * 24 * 365.2524 * 100\n\n/**\n * This is a list of human-friendly values at which to show tick marks on a log\n * scale. It is k * 10^n, where k=1..9 and n=-39..+39, so:\n * ..., 1, 2, 3, 4, 5, ..., 9, 10, 20, 30, ..., 90, 100, 200, 300, ...\n * NOTE: this assumes that utils.LOG_SCALE = 10.\n * @type {Array.}\n */\nvar PREFERRED_LOG_TICK_VALUES = (function () {\n var vals = [];\n for (var power = -39; power <= 39; power++) {\n var range = Math.pow(10, power);\n for (var mult = 1; mult <= 9; mult++) {\n var val = range * mult;\n vals.push(val);\n }\n }\n return vals;\n})();\n\n/**\n * Determine the correct granularity of ticks on a date axis.\n *\n * @param {number} a Left edge of the chart (ms)\n * @param {number} b Right edge of the chart (ms)\n * @param {number} pixels Size of the chart in the relevant dimension (width).\n * @param {function(string):*} opts Function mapping from option name -> value.\n * @return {number} The appropriate axis granularity for this chart. See the\n * enumeration of possible values in dygraph-tickers.js.\n */\nvar pickDateTickGranularity = function pickDateTickGranularity(a, b, pixels, opts) {\n var pixels_per_tick = /** @type{number} */opts('pixelsPerLabel');\n for (var i = 0; i < Granularity.NUM_GRANULARITIES; i++) {\n var num_ticks = numDateTicks(a, b, i);\n if (pixels / num_ticks >= pixels_per_tick) {\n return i;\n }\n }\n return -1;\n};\n\n/**\n * Compute the number of ticks on a date axis for a given granularity.\n * @param {number} start_time\n * @param {number} end_time\n * @param {number} granularity (one of the granularities enumerated above)\n * @return {number} (Approximate) number of ticks that would result.\n */\nvar numDateTicks = function numDateTicks(start_time, end_time, granularity) {\n var spacing = TICK_PLACEMENT[granularity].spacing;\n return Math.round(1.0 * (end_time - start_time) / spacing);\n};\n\n/**\n * Compute the positions and labels of ticks on a date axis for a given granularity.\n * @param {number} start_time\n * @param {number} end_time\n * @param {number} granularity (one of the granularities enumerated above)\n * @param {function(string):*} opts Function mapping from option name -> value.\n * @param {Dygraph=} dg\n * @return {!TickList}\n */\nvar getDateAxis = function getDateAxis(start_time, end_time, granularity, opts, dg) {\n var formatter = /** @type{AxisLabelFormatter} */opts(\"axisLabelFormatter\");\n var utc = opts(\"labelsUTC\");\n var accessors = utc ? utils.DateAccessorsUTC : utils.DateAccessorsLocal;\n\n var datefield = TICK_PLACEMENT[granularity].datefield;\n var step = TICK_PLACEMENT[granularity].step;\n var spacing = TICK_PLACEMENT[granularity].spacing;\n\n // Choose a nice tick position before the initial instant.\n // Currently, this code deals properly with the existent daily granularities:\n // DAILY (with step of 1) and WEEKLY (with step of 7 but specially handled).\n // Other daily granularities (say TWO_DAILY) should also be handled specially\n // by setting the start_date_offset to 0.\n var start_date = new Date(start_time);\n var date_array = [];\n date_array[DateField.DATEFIELD_Y] = accessors.getFullYear(start_date);\n date_array[DateField.DATEFIELD_M] = accessors.getMonth(start_date);\n date_array[DateField.DATEFIELD_D] = accessors.getDate(start_date);\n date_array[DateField.DATEFIELD_HH] = accessors.getHours(start_date);\n date_array[DateField.DATEFIELD_MM] = accessors.getMinutes(start_date);\n date_array[DateField.DATEFIELD_SS] = accessors.getSeconds(start_date);\n date_array[DateField.DATEFIELD_MS] = accessors.getMilliseconds(start_date);\n\n var start_date_offset = date_array[datefield] % step;\n if (granularity == Granularity.WEEKLY) {\n // This will put the ticks on Sundays.\n start_date_offset = accessors.getDay(start_date);\n }\n\n date_array[datefield] -= start_date_offset;\n for (var df = datefield + 1; df < DateField.NUM_DATEFIELDS; df++) {\n // The minimum value is 1 for the day of month, and 0 for all other fields.\n date_array[df] = df === DateField.DATEFIELD_D ? 1 : 0;\n }\n\n // Generate the ticks.\n // For granularities not coarser than HOURLY we use the fact that:\n // the number of milliseconds between ticks is constant\n // and equal to the defined spacing.\n // Otherwise we rely on the 'roll over' property of the Date functions:\n // when some date field is set to a value outside of its logical range,\n // the excess 'rolls over' the next (more significant) field.\n // However, when using local time with DST transitions,\n // there are dates that do not represent any time value at all\n // (those in the hour skipped at the 'spring forward'),\n // and the JavaScript engines usually return an equivalent value.\n // Hence we have to check that the date is properly increased at each step,\n // returning a date at a nice tick position.\n var ticks = [];\n var tick_date = accessors.makeDate.apply(null, date_array);\n var tick_time = tick_date.getTime();\n if (granularity <= Granularity.HOURLY) {\n if (tick_time < start_time) {\n tick_time += spacing;\n tick_date = new Date(tick_time);\n }\n while (tick_time <= end_time) {\n ticks.push({ v: tick_time,\n label: formatter.call(dg, tick_date, granularity, opts, dg)\n });\n tick_time += spacing;\n tick_date = new Date(tick_time);\n }\n } else {\n if (tick_time < start_time) {\n date_array[datefield] += step;\n tick_date = accessors.makeDate.apply(null, date_array);\n tick_time = tick_date.getTime();\n }\n while (tick_time <= end_time) {\n if (granularity >= Granularity.DAILY || accessors.getHours(tick_date) % step === 0) {\n ticks.push({ v: tick_time,\n label: formatter.call(dg, tick_date, granularity, opts, dg)\n });\n }\n date_array[datefield] += step;\n tick_date = accessors.makeDate.apply(null, date_array);\n tick_time = tick_date.getTime();\n }\n }\n return ticks;\n};\nexports.getDateAxis = getDateAxis;","/**\n * @license\n * Copyright 2011 Robert Konigsberg (konigsberg@google.com)\n * MIT-licensed (http://opensource.org/licenses/MIT)\n */\n\n/**\n * @fileoverview The default interaction model for Dygraphs. This is kept out\n * of dygraph.js for better navigability.\n * @author Robert Konigsberg (konigsberg@google.com)\n */\n\n/*global Dygraph:false */\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj[\"default\"] = obj; return newObj; } }\n\nvar _dygraphUtils = require('./dygraph-utils');\n\nvar utils = _interopRequireWildcard(_dygraphUtils);\n\n/**\n * You can drag this many pixels past the edge of the chart and still have it\n * be considered a zoom. This makes it easier to zoom to the exact edge of the\n * chart, a fairly common operation.\n */\nvar DRAG_EDGE_MARGIN = 100;\n\n/**\n * A collection of functions to facilitate build custom interaction models.\n * @class\n */\nvar DygraphInteraction = {};\n\n/**\n * Checks whether the beginning & ending of an event were close enough that it\n * should be considered a click. If it should, dispatch appropriate events.\n * Returns true if the event was treated as a click.\n *\n * @param {Event} event\n * @param {Dygraph} g\n * @param {Object} context\n */\nDygraphInteraction.maybeTreatMouseOpAsClick = function (event, g, context) {\n context.dragEndX = utils.dragGetX_(event, context);\n context.dragEndY = utils.dragGetY_(event, context);\n var regionWidth = Math.abs(context.dragEndX - context.dragStartX);\n var regionHeight = Math.abs(context.dragEndY - context.dragStartY);\n\n if (regionWidth < 2 && regionHeight < 2 && g.lastx_ !== undefined && g.lastx_ != -1) {\n DygraphInteraction.treatMouseOpAsClick(g, event, context);\n }\n\n context.regionWidth = regionWidth;\n context.regionHeight = regionHeight;\n};\n\n/**\n * Called in response to an interaction model operation that\n * should start the default panning behavior.\n *\n * It's used in the default callback for \"mousedown\" operations.\n * Custom interaction model builders can use it to provide the default\n * panning behavior.\n *\n * @param {Event} event the event object which led to the startPan call.\n * @param {Dygraph} g The dygraph on which to act.\n * @param {Object} context The dragging context object (with\n * dragStartX/dragStartY/etc. properties). This function modifies the\n * context.\n */\nDygraphInteraction.startPan = function (event, g, context) {\n var i, axis;\n context.isPanning = true;\n var xRange = g.xAxisRange();\n\n if (g.getOptionForAxis(\"logscale\", \"x\")) {\n context.initialLeftmostDate = utils.log10(xRange[0]);\n context.dateRange = utils.log10(xRange[1]) - utils.log10(xRange[0]);\n } else {\n context.initialLeftmostDate = xRange[0];\n context.dateRange = xRange[1] - xRange[0];\n }\n context.xUnitsPerPixel = context.dateRange / (g.plotter_.area.w - 1);\n\n if (g.getNumericOption(\"panEdgeFraction\")) {\n var maxXPixelsToDraw = g.width_ * g.getNumericOption(\"panEdgeFraction\");\n var xExtremes = g.xAxisExtremes(); // I REALLY WANT TO CALL THIS xTremes!\n\n var boundedLeftX = g.toDomXCoord(xExtremes[0]) - maxXPixelsToDraw;\n var boundedRightX = g.toDomXCoord(xExtremes[1]) + maxXPixelsToDraw;\n\n var boundedLeftDate = g.toDataXCoord(boundedLeftX);\n var boundedRightDate = g.toDataXCoord(boundedRightX);\n context.boundedDates = [boundedLeftDate, boundedRightDate];\n\n var boundedValues = [];\n var maxYPixelsToDraw = g.height_ * g.getNumericOption(\"panEdgeFraction\");\n\n for (i = 0; i < g.axes_.length; i++) {\n axis = g.axes_[i];\n var yExtremes = axis.extremeRange;\n\n var boundedTopY = g.toDomYCoord(yExtremes[0], i) + maxYPixelsToDraw;\n var boundedBottomY = g.toDomYCoord(yExtremes[1], i) - maxYPixelsToDraw;\n\n var boundedTopValue = g.toDataYCoord(boundedTopY, i);\n var boundedBottomValue = g.toDataYCoord(boundedBottomY, i);\n\n boundedValues[i] = [boundedTopValue, boundedBottomValue];\n }\n context.boundedValues = boundedValues;\n }\n\n // Record the range of each y-axis at the start of the drag.\n // If any axis has a valueRange, then we want a 2D pan.\n // We can't store data directly in g.axes_, because it does not belong to us\n // and could change out from under us during a pan (say if there's a data\n // update).\n context.is2DPan = false;\n context.axes = [];\n for (i = 0; i < g.axes_.length; i++) {\n axis = g.axes_[i];\n var axis_data = {};\n var yRange = g.yAxisRange(i);\n // TODO(konigsberg): These values should be in |context|.\n // In log scale, initialTopValue, dragValueRange and unitsPerPixel are log scale.\n var logscale = g.attributes_.getForAxis(\"logscale\", i);\n if (logscale) {\n axis_data.initialTopValue = utils.log10(yRange[1]);\n axis_data.dragValueRange = utils.log10(yRange[1]) - utils.log10(yRange[0]);\n } else {\n axis_data.initialTopValue = yRange[1];\n axis_data.dragValueRange = yRange[1] - yRange[0];\n }\n axis_data.unitsPerPixel = axis_data.dragValueRange / (g.plotter_.area.h - 1);\n context.axes.push(axis_data);\n\n // While calculating axes, set 2dpan.\n if (axis.valueRange) context.is2DPan = true;\n }\n};\n\n/**\n * Called in response to an interaction model operation that\n * responds to an event that pans the view.\n *\n * It's used in the default callback for \"mousemove\" operations.\n * Custom interaction model builders can use it to provide the default\n * panning behavior.\n *\n * @param {Event} event the event object which led to the movePan call.\n * @param {Dygraph} g The dygraph on which to act.\n * @param {Object} context The dragging context object (with\n * dragStartX/dragStartY/etc. properties). This function modifies the\n * context.\n */\nDygraphInteraction.movePan = function (event, g, context) {\n context.dragEndX = utils.dragGetX_(event, context);\n context.dragEndY = utils.dragGetY_(event, context);\n\n var minDate = context.initialLeftmostDate - (context.dragEndX - context.dragStartX) * context.xUnitsPerPixel;\n if (context.boundedDates) {\n minDate = Math.max(minDate, context.boundedDates[0]);\n }\n var maxDate = minDate + context.dateRange;\n if (context.boundedDates) {\n if (maxDate > context.boundedDates[1]) {\n // Adjust minDate, and recompute maxDate.\n minDate = minDate - (maxDate - context.boundedDates[1]);\n maxDate = minDate + context.dateRange;\n }\n }\n\n if (g.getOptionForAxis(\"logscale\", \"x\")) {\n g.dateWindow_ = [Math.pow(utils.LOG_SCALE, minDate), Math.pow(utils.LOG_SCALE, maxDate)];\n } else {\n g.dateWindow_ = [minDate, maxDate];\n }\n\n // y-axis scaling is automatic unless this is a full 2D pan.\n if (context.is2DPan) {\n\n var pixelsDragged = context.dragEndY - context.dragStartY;\n\n // Adjust each axis appropriately.\n for (var i = 0; i < g.axes_.length; i++) {\n var axis = g.axes_[i];\n var axis_data = context.axes[i];\n var unitsDragged = pixelsDragged * axis_data.unitsPerPixel;\n\n var boundedValue = context.boundedValues ? context.boundedValues[i] : null;\n\n // In log scale, maxValue and minValue are the logs of those values.\n var maxValue = axis_data.initialTopValue + unitsDragged;\n if (boundedValue) {\n maxValue = Math.min(maxValue, boundedValue[1]);\n }\n var minValue = maxValue - axis_data.dragValueRange;\n if (boundedValue) {\n if (minValue < boundedValue[0]) {\n // Adjust maxValue, and recompute minValue.\n maxValue = maxValue - (minValue - boundedValue[0]);\n minValue = maxValue - axis_data.dragValueRange;\n }\n }\n if (g.attributes_.getForAxis(\"logscale\", i)) {\n axis.valueRange = [Math.pow(utils.LOG_SCALE, minValue), Math.pow(utils.LOG_SCALE, maxValue)];\n } else {\n axis.valueRange = [minValue, maxValue];\n }\n }\n }\n\n g.drawGraph_(false);\n};\n\n/**\n * Called in response to an interaction model operation that\n * responds to an event that ends panning.\n *\n * It's used in the default callback for \"mouseup\" operations.\n * Custom interaction model builders can use it to provide the default\n * panning behavior.\n *\n * @param {Event} event the event object which led to the endPan call.\n * @param {Dygraph} g The dygraph on which to act.\n * @param {Object} context The dragging context object (with\n * dragStartX/dragStartY/etc. properties). This function modifies the\n * context.\n */\nDygraphInteraction.endPan = DygraphInteraction.maybeTreatMouseOpAsClick;\n\n/**\n * Called in response to an interaction model operation that\n * responds to an event that starts zooming.\n *\n * It's used in the default callback for \"mousedown\" operations.\n * Custom interaction model builders can use it to provide the default\n * zooming behavior.\n *\n * @param {Event} event the event object which led to the startZoom call.\n * @param {Dygraph} g The dygraph on which to act.\n * @param {Object} context The dragging context object (with\n * dragStartX/dragStartY/etc. properties). This function modifies the\n * context.\n */\nDygraphInteraction.startZoom = function (event, g, context) {\n context.isZooming = true;\n context.zoomMoved = false;\n};\n\n/**\n * Called in response to an interaction model operation that\n * responds to an event that defines zoom boundaries.\n *\n * It's used in the default callback for \"mousemove\" operations.\n * Custom interaction model builders can use it to provide the default\n * zooming behavior.\n *\n * @param {Event} event the event object which led to the moveZoom call.\n * @param {Dygraph} g The dygraph on which to act.\n * @param {Object} context The dragging context object (with\n * dragStartX/dragStartY/etc. properties). This function modifies the\n * context.\n */\nDygraphInteraction.moveZoom = function (event, g, context) {\n context.zoomMoved = true;\n context.dragEndX = utils.dragGetX_(event, context);\n context.dragEndY = utils.dragGetY_(event, context);\n\n var xDelta = Math.abs(context.dragStartX - context.dragEndX);\n var yDelta = Math.abs(context.dragStartY - context.dragEndY);\n\n // drag direction threshold for y axis is twice as large as x axis\n context.dragDirection = xDelta < yDelta / 2 ? utils.VERTICAL : utils.HORIZONTAL;\n\n g.drawZoomRect_(context.dragDirection, context.dragStartX, context.dragEndX, context.dragStartY, context.dragEndY, context.prevDragDirection, context.prevEndX, context.prevEndY);\n\n context.prevEndX = context.dragEndX;\n context.prevEndY = context.dragEndY;\n context.prevDragDirection = context.dragDirection;\n};\n\n/**\n * TODO(danvk): move this logic into dygraph.js\n * @param {Dygraph} g\n * @param {Event} event\n * @param {Object} context\n */\nDygraphInteraction.treatMouseOpAsClick = function (g, event, context) {\n var clickCallback = g.getFunctionOption('clickCallback');\n var pointClickCallback = g.getFunctionOption('pointClickCallback');\n\n var selectedPoint = null;\n\n // Find out if the click occurs on a point.\n var closestIdx = -1;\n var closestDistance = Number.MAX_VALUE;\n\n // check if the click was on a particular point.\n for (var i = 0; i < g.selPoints_.length; i++) {\n var p = g.selPoints_[i];\n var distance = Math.pow(p.canvasx - context.dragEndX, 2) + Math.pow(p.canvasy - context.dragEndY, 2);\n if (!isNaN(distance) && (closestIdx == -1 || distance < closestDistance)) {\n closestDistance = distance;\n closestIdx = i;\n }\n }\n\n // Allow any click within two pixels of the dot.\n var radius = g.getNumericOption('highlightCircleSize') + 2;\n if (closestDistance <= radius * radius) {\n selectedPoint = g.selPoints_[closestIdx];\n }\n\n if (selectedPoint) {\n var e = {\n cancelable: true,\n point: selectedPoint,\n canvasx: context.dragEndX,\n canvasy: context.dragEndY\n };\n var defaultPrevented = g.cascadeEvents_('pointClick', e);\n if (defaultPrevented) {\n // Note: this also prevents click / clickCallback from firing.\n return;\n }\n if (pointClickCallback) {\n pointClickCallback.call(g, event, selectedPoint);\n }\n }\n\n var e = {\n cancelable: true,\n xval: g.lastx_, // closest point by x value\n pts: g.selPoints_,\n canvasx: context.dragEndX,\n canvasy: context.dragEndY\n };\n if (!g.cascadeEvents_('click', e)) {\n if (clickCallback) {\n // TODO(danvk): pass along more info about the points, e.g. 'x'\n clickCallback.call(g, event, g.lastx_, g.selPoints_);\n }\n }\n};\n\n/**\n * Called in response to an interaction model operation that\n * responds to an event that performs a zoom based on previously defined\n * bounds..\n *\n * It's used in the default callback for \"mouseup\" operations.\n * Custom interaction model builders can use it to provide the default\n * zooming behavior.\n *\n * @param {Event} event the event object which led to the endZoom call.\n * @param {Dygraph} g The dygraph on which to end the zoom.\n * @param {Object} context The dragging context object (with\n * dragStartX/dragStartY/etc. properties). This function modifies the\n * context.\n */\nDygraphInteraction.endZoom = function (event, g, context) {\n g.clearZoomRect_();\n context.isZooming = false;\n DygraphInteraction.maybeTreatMouseOpAsClick(event, g, context);\n\n // The zoom rectangle is visibly clipped to the plot area, so its behavior\n // should be as well.\n // See http://code.google.com/p/dygraphs/issues/detail?id=280\n var plotArea = g.getArea();\n if (context.regionWidth >= 10 && context.dragDirection == utils.HORIZONTAL) {\n var left = Math.min(context.dragStartX, context.dragEndX),\n right = Math.max(context.dragStartX, context.dragEndX);\n left = Math.max(left, plotArea.x);\n right = Math.min(right, plotArea.x + plotArea.w);\n if (left < right) {\n g.doZoomX_(left, right);\n }\n context.cancelNextDblclick = true;\n } else if (context.regionHeight >= 10 && context.dragDirection == utils.VERTICAL) {\n var top = Math.min(context.dragStartY, context.dragEndY),\n bottom = Math.max(context.dragStartY, context.dragEndY);\n top = Math.max(top, plotArea.y);\n bottom = Math.min(bottom, plotArea.y + plotArea.h);\n if (top < bottom) {\n g.doZoomY_(top, bottom);\n }\n context.cancelNextDblclick = true;\n }\n context.dragStartX = null;\n context.dragStartY = null;\n};\n\n/**\n * @private\n */\nDygraphInteraction.startTouch = function (event, g, context) {\n event.preventDefault(); // touch browsers are all nice.\n if (event.touches.length > 1) {\n // If the user ever puts two fingers down, it's not a double tap.\n context.startTimeForDoubleTapMs = null;\n }\n\n var touches = [];\n for (var i = 0; i < event.touches.length; i++) {\n var t = event.touches[i];\n // we dispense with 'dragGetX_' because all touchBrowsers support pageX\n touches.push({\n pageX: t.pageX,\n pageY: t.pageY,\n dataX: g.toDataXCoord(t.pageX),\n dataY: g.toDataYCoord(t.pageY)\n // identifier: t.identifier\n });\n }\n context.initialTouches = touches;\n\n if (touches.length == 1) {\n // This is just a swipe.\n context.initialPinchCenter = touches[0];\n context.touchDirections = { x: true, y: true };\n } else if (touches.length >= 2) {\n // It's become a pinch!\n // In case there are 3+ touches, we ignore all but the \"first\" two.\n\n // only screen coordinates can be averaged (data coords could be log scale).\n context.initialPinchCenter = {\n pageX: 0.5 * (touches[0].pageX + touches[1].pageX),\n pageY: 0.5 * (touches[0].pageY + touches[1].pageY),\n\n // TODO(danvk): remove\n dataX: 0.5 * (touches[0].dataX + touches[1].dataX),\n dataY: 0.5 * (touches[0].dataY + touches[1].dataY)\n };\n\n // Make pinches in a 45-degree swath around either axis 1-dimensional zooms.\n var initialAngle = 180 / Math.PI * Math.atan2(context.initialPinchCenter.pageY - touches[0].pageY, touches[0].pageX - context.initialPinchCenter.pageX);\n\n // use symmetry to get it into the first quadrant.\n initialAngle = Math.abs(initialAngle);\n if (initialAngle > 90) initialAngle = 90 - initialAngle;\n\n context.touchDirections = {\n x: initialAngle < 90 - 45 / 2,\n y: initialAngle > 45 / 2\n };\n }\n\n // save the full x & y ranges.\n context.initialRange = {\n x: g.xAxisRange(),\n y: g.yAxisRange()\n };\n};\n\n/**\n * @private\n */\nDygraphInteraction.moveTouch = function (event, g, context) {\n // If the tap moves, then it's definitely not part of a double-tap.\n context.startTimeForDoubleTapMs = null;\n\n var i,\n touches = [];\n for (i = 0; i < event.touches.length; i++) {\n var t = event.touches[i];\n touches.push({\n pageX: t.pageX,\n pageY: t.pageY\n });\n }\n var initialTouches = context.initialTouches;\n\n var c_now;\n\n // old and new centers.\n var c_init = context.initialPinchCenter;\n if (touches.length == 1) {\n c_now = touches[0];\n } else {\n c_now = {\n pageX: 0.5 * (touches[0].pageX + touches[1].pageX),\n pageY: 0.5 * (touches[0].pageY + touches[1].pageY)\n };\n }\n\n // this is the \"swipe\" component\n // we toss it out for now, but could use it in the future.\n var swipe = {\n pageX: c_now.pageX - c_init.pageX,\n pageY: c_now.pageY - c_init.pageY\n };\n var dataWidth = context.initialRange.x[1] - context.initialRange.x[0];\n var dataHeight = context.initialRange.y[0] - context.initialRange.y[1];\n swipe.dataX = swipe.pageX / g.plotter_.area.w * dataWidth;\n swipe.dataY = swipe.pageY / g.plotter_.area.h * dataHeight;\n var xScale, yScale;\n\n // The residual bits are usually split into scale & rotate bits, but we split\n // them into x-scale and y-scale bits.\n if (touches.length == 1) {\n xScale = 1.0;\n yScale = 1.0;\n } else if (touches.length >= 2) {\n var initHalfWidth = initialTouches[1].pageX - c_init.pageX;\n xScale = (touches[1].pageX - c_now.pageX) / initHalfWidth;\n\n var initHalfHeight = initialTouches[1].pageY - c_init.pageY;\n yScale = (touches[1].pageY - c_now.pageY) / initHalfHeight;\n }\n\n // Clip scaling to [1/8, 8] to prevent too much blowup.\n xScale = Math.min(8, Math.max(0.125, xScale));\n yScale = Math.min(8, Math.max(0.125, yScale));\n\n var didZoom = false;\n if (context.touchDirections.x) {\n g.dateWindow_ = [c_init.dataX - swipe.dataX + (context.initialRange.x[0] - c_init.dataX) / xScale, c_init.dataX - swipe.dataX + (context.initialRange.x[1] - c_init.dataX) / xScale];\n didZoom = true;\n }\n\n if (context.touchDirections.y) {\n for (i = 0; i < 1 /*g.axes_.length*/; i++) {\n var axis = g.axes_[i];\n var logscale = g.attributes_.getForAxis(\"logscale\", i);\n if (logscale) {\n // TODO(danvk): implement\n } else {\n axis.valueRange = [c_init.dataY - swipe.dataY + (context.initialRange.y[0] - c_init.dataY) / yScale, c_init.dataY - swipe.dataY + (context.initialRange.y[1] - c_init.dataY) / yScale];\n didZoom = true;\n }\n }\n }\n\n g.drawGraph_(false);\n\n // We only call zoomCallback on zooms, not pans, to mirror desktop behavior.\n if (didZoom && touches.length > 1 && g.getFunctionOption('zoomCallback')) {\n var viewWindow = g.xAxisRange();\n g.getFunctionOption(\"zoomCallback\").call(g, viewWindow[0], viewWindow[1], g.yAxisRanges());\n }\n};\n\n/**\n * @private\n */\nDygraphInteraction.endTouch = function (event, g, context) {\n if (event.touches.length !== 0) {\n // this is effectively a \"reset\"\n DygraphInteraction.startTouch(event, g, context);\n } else if (event.changedTouches.length == 1) {\n // Could be part of a \"double tap\"\n // The heuristic here is that it's a double-tap if the two touchend events\n // occur within 500ms and within a 50x50 pixel box.\n var now = new Date().getTime();\n var t = event.changedTouches[0];\n if (context.startTimeForDoubleTapMs && now - context.startTimeForDoubleTapMs < 500 && context.doubleTapX && Math.abs(context.doubleTapX - t.screenX) < 50 && context.doubleTapY && Math.abs(context.doubleTapY - t.screenY) < 50) {\n g.resetZoom();\n } else {\n context.startTimeForDoubleTapMs = now;\n context.doubleTapX = t.screenX;\n context.doubleTapY = t.screenY;\n }\n }\n};\n\n// Determine the distance from x to [left, right].\nvar distanceFromInterval = function distanceFromInterval(x, left, right) {\n if (x < left) {\n return left - x;\n } else if (x > right) {\n return x - right;\n } else {\n return 0;\n }\n};\n\n/**\n * Returns the number of pixels by which the event happens from the nearest\n * edge of the chart. For events in the interior of the chart, this returns zero.\n */\nvar distanceFromChart = function distanceFromChart(event, g) {\n var chartPos = utils.findPos(g.canvas_);\n var box = {\n left: chartPos.x,\n right: chartPos.x + g.canvas_.offsetWidth,\n top: chartPos.y,\n bottom: chartPos.y + g.canvas_.offsetHeight\n };\n\n var pt = {\n x: utils.pageX(event),\n y: utils.pageY(event)\n };\n\n var dx = distanceFromInterval(pt.x, box.left, box.right),\n dy = distanceFromInterval(pt.y, box.top, box.bottom);\n return Math.max(dx, dy);\n};\n\n/**\n * Default interation model for dygraphs. You can refer to specific elements of\n * this when constructing your own interaction model, e.g.:\n * g.updateOptions( {\n * interactionModel: {\n * mousedown: DygraphInteraction.defaultInteractionModel.mousedown\n * }\n * } );\n */\nDygraphInteraction.defaultModel = {\n // Track the beginning of drag events\n mousedown: function mousedown(event, g, context) {\n // Right-click should not initiate a zoom.\n if (event.button && event.button == 2) return;\n\n context.initializeMouseDown(event, g, context);\n\n if (event.altKey || event.shiftKey) {\n DygraphInteraction.startPan(event, g, context);\n } else {\n DygraphInteraction.startZoom(event, g, context);\n }\n\n // Note: we register mousemove/mouseup on document to allow some leeway for\n // events to move outside of the chart. Interaction model events get\n // registered on the canvas, which is too small to allow this.\n var mousemove = function mousemove(event) {\n if (context.isZooming) {\n // When the mouse moves >200px from the chart edge, cancel the zoom.\n var d = distanceFromChart(event, g);\n if (d < DRAG_EDGE_MARGIN) {\n DygraphInteraction.moveZoom(event, g, context);\n } else {\n if (context.dragEndX !== null) {\n context.dragEndX = null;\n context.dragEndY = null;\n g.clearZoomRect_();\n }\n }\n } else if (context.isPanning) {\n DygraphInteraction.movePan(event, g, context);\n }\n };\n var mouseup = function mouseup(event) {\n if (context.isZooming) {\n if (context.dragEndX !== null) {\n DygraphInteraction.endZoom(event, g, context);\n } else {\n DygraphInteraction.maybeTreatMouseOpAsClick(event, g, context);\n }\n } else if (context.isPanning) {\n DygraphInteraction.endPan(event, g, context);\n }\n\n utils.removeEvent(document, 'mousemove', mousemove);\n utils.removeEvent(document, 'mouseup', mouseup);\n context.destroy();\n };\n\n g.addAndTrackEvent(document, 'mousemove', mousemove);\n g.addAndTrackEvent(document, 'mouseup', mouseup);\n },\n willDestroyContextMyself: true,\n\n touchstart: function touchstart(event, g, context) {\n DygraphInteraction.startTouch(event, g, context);\n },\n touchmove: function touchmove(event, g, context) {\n DygraphInteraction.moveTouch(event, g, context);\n },\n touchend: function touchend(event, g, context) {\n DygraphInteraction.endTouch(event, g, context);\n },\n\n // Disable zooming out if panning.\n dblclick: function dblclick(event, g, context) {\n if (context.cancelNextDblclick) {\n context.cancelNextDblclick = false;\n return;\n }\n\n // Give plugins a chance to grab this event.\n var e = {\n canvasx: context.dragEndX,\n canvasy: context.dragEndY,\n cancelable: true\n };\n if (g.cascadeEvents_('dblclick', e)) {\n return;\n }\n\n if (event.altKey || event.shiftKey) {\n return;\n }\n g.resetZoom();\n }\n};\n\n/*\nDygraph.DEFAULT_ATTRS.interactionModel = DygraphInteraction.defaultModel;\n\n// old ways of accessing these methods/properties\nDygraph.defaultInteractionModel = DygraphInteraction.defaultModel;\nDygraph.endZoom = DygraphInteraction.endZoom;\nDygraph.moveZoom = DygraphInteraction.moveZoom;\nDygraph.startZoom = DygraphInteraction.startZoom;\nDygraph.endPan = DygraphInteraction.endPan;\nDygraph.movePan = DygraphInteraction.movePan;\nDygraph.startPan = DygraphInteraction.startPan;\n*/\n\nDygraphInteraction.nonInteractiveModel_ = {\n mousedown: function mousedown(event, g, context) {\n context.initializeMouseDown(event, g, context);\n },\n mouseup: DygraphInteraction.maybeTreatMouseOpAsClick\n};\n\n// Default interaction model when using the range selector.\nDygraphInteraction.dragIsPanInteractionModel = {\n mousedown: function mousedown(event, g, context) {\n context.initializeMouseDown(event, g, context);\n DygraphInteraction.startPan(event, g, context);\n },\n mousemove: function mousemove(event, g, context) {\n if (context.isPanning) {\n DygraphInteraction.movePan(event, g, context);\n }\n },\n mouseup: function mouseup(event, g, context) {\n if (context.isPanning) {\n DygraphInteraction.endPan(event, g, context);\n }\n }\n};\n\nexports[\"default\"] = DygraphInteraction;\nmodule.exports = exports[\"default\"];","/**\n * @license\n * Copyright 2013 David Eberlein (david.eberlein@ch.sauter-bc.com)\n * MIT-licensed (http://opensource.org/licenses/MIT)\n */\n\n/**\n * @fileoverview This file contains the managment of data handlers\n * @author David Eberlein (david.eberlein@ch.sauter-bc.com)\n *\n * The idea is to define a common, generic data format that works for all data\n * structures supported by dygraphs. To make this possible, the DataHandler\n * interface is introduced. This makes it possible, that dygraph itself can work\n * with the same logic for every data type independent of the actual format and\n * the DataHandler takes care of the data format specific jobs.\n * DataHandlers are implemented for all data types supported by Dygraphs and\n * return Dygraphs compliant formats.\n * By default the correct DataHandler is chosen based on the options set.\n * Optionally the user may use his own DataHandler (similar to the plugin\n * system).\n *\n *\n * The unified data format returend by each handler is defined as so:\n * series[n][point] = [x,y,(extras)]\n *\n * This format contains the common basis that is needed to draw a simple line\n * series extended by optional extras for more complex graphing types. It\n * contains a primitive x value as first array entry, a primitive y value as\n * second array entry and an optional extras object for additional data needed.\n *\n * x must always be a number.\n * y must always be a number, NaN of type number or null.\n * extras is optional and must be interpreted by the DataHandler. It may be of\n * any type.\n *\n * In practice this might look something like this:\n * default: [x, yVal]\n * errorBar / customBar: [x, yVal, [yTopVariance, yBottomVariance] ]\n *\n */\n/*global Dygraph:false */\n/*global DygraphLayout:false */\n\n\"use strict\";\n\n/**\n *\n * The data handler is responsible for all data specific operations. All of the\n * series data it receives and returns is always in the unified data format.\n * Initially the unified data is created by the extractSeries method\n * @constructor\n */\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar DygraphDataHandler = function DygraphDataHandler() {};\n\nvar handler = DygraphDataHandler;\n\n/**\n * X-value array index constant for unified data samples.\n * @const\n * @type {number}\n */\nhandler.X = 0;\n\n/**\n * Y-value array index constant for unified data samples.\n * @const\n * @type {number}\n */\nhandler.Y = 1;\n\n/**\n * Extras-value array index constant for unified data samples.\n * @const\n * @type {number}\n */\nhandler.EXTRAS = 2;\n\n/**\n * Extracts one series from the raw data (a 2D array) into an array of the\n * unified data format.\n * This is where undesirable points (i.e. negative values on log scales and\n * missing values through which we wish to connect lines) are dropped.\n * TODO(danvk): the \"missing values\" bit above doesn't seem right.\n *\n * @param {!Array.} rawData The raw data passed into dygraphs where\n * rawData[i] = [x,ySeries1,...,ySeriesN].\n * @param {!number} seriesIndex Index of the series to extract. All other\n * series should be ignored.\n * @param {!DygraphOptions} options Dygraph options.\n * @return {Array.<[!number,?number,?]>} The series in the unified data format\n * where series[i] = [x,y,{extras}].\n */\nhandler.prototype.extractSeries = function (rawData, seriesIndex, options) {};\n\n/**\n * Converts a series to a Point array. The resulting point array must be\n * returned in increasing order of idx property.\n *\n * @param {!Array.<[!number,?number,?]>} series The series in the unified\n * data format where series[i] = [x,y,{extras}].\n * @param {!string} setName Name of the series.\n * @param {!number} boundaryIdStart Index offset of the first point, equal to the\n * number of skipped points left of the date window minimum (if any).\n * @return {!Array.} List of points for this series.\n */\nhandler.prototype.seriesToPoints = function (series, setName, boundaryIdStart) {\n // TODO(bhs): these loops are a hot-spot for high-point-count charts. In\n // fact,\n // on chrome+linux, they are 6 times more expensive than iterating through\n // the\n // points and drawing the lines. The brunt of the cost comes from allocating\n // the |point| structures.\n var points = [];\n for (var i = 0; i < series.length; ++i) {\n var item = series[i];\n var yraw = item[1];\n var yval = yraw === null ? null : handler.parseFloat(yraw);\n var point = {\n x: NaN,\n y: NaN,\n xval: handler.parseFloat(item[0]),\n yval: yval,\n name: setName, // TODO(danvk): is this really necessary?\n idx: i + boundaryIdStart\n };\n points.push(point);\n }\n this.onPointsCreated_(series, points);\n return points;\n};\n\n/**\n * Callback called for each series after the series points have been generated\n * which will later be used by the plotters to draw the graph.\n * Here data may be added to the seriesPoints which is needed by the plotters.\n * The indexes of series and points are in sync meaning the original data\n * sample for series[i] is points[i].\n *\n * @param {!Array.<[!number,?number,?]>} series The series in the unified\n * data format where series[i] = [x,y,{extras}].\n * @param {!Array.} points The corresponding points passed\n * to the plotter.\n * @protected\n */\nhandler.prototype.onPointsCreated_ = function (series, points) {};\n\n/**\n * Calculates the rolling average of a data set.\n *\n * @param {!Array.<[!number,?number,?]>} series The series in the unified\n * data format where series[i] = [x,y,{extras}].\n * @param {!number} rollPeriod The number of points over which to average the data\n * @param {!DygraphOptions} options The dygraph options.\n * @return {!Array.<[!number,?number,?]>} the rolled series.\n */\nhandler.prototype.rollingAverage = function (series, rollPeriod, options) {};\n\n/**\n * Computes the range of the data series (including confidence intervals).\n *\n * @param {!Array.<[!number,?number,?]>} series The series in the unified\n * data format where series[i] = [x, y, {extras}].\n * @param {!Array.} dateWindow The x-value range to display with\n * the format: [min, max].\n * @param {!DygraphOptions} options The dygraph options.\n * @return {Array.} The low and high extremes of the series in the\n * given window with the format: [low, high].\n */\nhandler.prototype.getExtremeYValues = function (series, dateWindow, options) {};\n\n/**\n * Callback called for each series after the layouting data has been\n * calculated before the series is drawn. Here normalized positioning data\n * should be calculated for the extras of each point.\n *\n * @param {!Array.} points The points passed to\n * the plotter.\n * @param {!Object} axis The axis on which the series will be plotted.\n * @param {!boolean} logscale Weather or not to use a logscale.\n */\nhandler.prototype.onLineEvaluated = function (points, axis, logscale) {};\n\n/**\n * Optimized replacement for parseFloat, which was way too slow when almost\n * all values were type number, with few edge cases, none of which were strings.\n * @param {?number} val\n * @return {number}\n * @protected\n */\nhandler.parseFloat = function (val) {\n // parseFloat(null) is NaN\n if (val === null) {\n return NaN;\n }\n\n // Assume it's a number or NaN. If it's something else, I'll be shocked.\n return val;\n};\n\nexports[\"default\"] = DygraphDataHandler;\nmodule.exports = exports[\"default\"];","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n};\nimport * as React from 'react';\nimport classNamesFunc from 'classnames';\nimport { parseThemeOptions } from './with-theme';\nimport { handleDeprecations } from './utils/deprecation';\n// ALL OF THESE FUNCTIONS MUTATE THE COPY OF PROPS\n// this is intentional and done for speed and memory\nvar handleClassNames = function (props, classNames, className, theme) {\n var finalClassNames = classNamesFunc.apply(void 0, __spread([className], (!!theme ? parseThemeOptions(theme) : []), (typeof classNames === 'function' ? classNames(props) : classNames)));\n props.className = finalClassNames;\n};\nvar handleTag = function (props, defaultTag, tag) {\n // Handle the case where we are extending a component but passing\n // a string as a tag. For instance, extending an Icon but rendering a span\n if (typeof defaultTag !== 'string') {\n props.tag = tag;\n return defaultTag;\n }\n return tag || defaultTag;\n};\nvar handleConsumeProps = function (props, consumeProps) {\n consumeProps.forEach(function (p) {\n delete props[p];\n });\n};\nexport var componentFactory = function (_a) {\n var displayName = _a.displayName, _b = _a.classNames, classNames = _b === void 0 ? [] : _b, _c = _a.tag, defaultTag = _c === void 0 ? 'div' : _c, deprecate = _a.deprecate, defaultProps = _a.defaultProps, _d = _a.consumeProps, consumeProps = _d === void 0 ? [] : _d, render = _a.render;\n var Component = React.forwardRef(function (props, ref) {\n var className = props.className, theme = props.theme, tag = props.tag, rest = __rest(props, [\"className\", \"theme\", \"tag\"]);\n var newProps = rest;\n handleClassNames(newProps, classNames, className, theme);\n var Tag = handleTag(newProps, defaultTag, tag);\n if (deprecate) {\n newProps = handleDeprecations(newProps, deprecate, displayName);\n }\n handleConsumeProps(newProps, consumeProps);\n var finalProps = newProps;\n // @ts-ignore\n return render ? (render(finalProps, ref, Tag)) : (React.createElement(Tag, __assign({}, finalProps, { ref: ref })));\n });\n Component.displayName = displayName;\n Component.defaultProps = defaultProps;\n return Component;\n};\n","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - Now `isValid` doesn't throw an exception\n * if the first argument is not an instance of Date.\n * Instead, argument is converted beforehand using `toDate`.\n *\n * Examples:\n *\n * | `isValid` argument | Before v2.0.0 | v2.0.0 onward |\n * |---------------------------|---------------|---------------|\n * | `new Date()` | `true` | `true` |\n * | `new Date('2016-01-01')` | `true` | `true` |\n * | `new Date('')` | `false` | `false` |\n * | `new Date(1488370835081)` | `true` | `true` |\n * | `new Date(NaN)` | `false` | `false` |\n * | `'2016-01-01'` | `TypeError` | `false` |\n * | `''` | `TypeError` | `false` |\n * | `1488370835081` | `TypeError` | `true` |\n * | `NaN` | `TypeError` | `false` |\n *\n * We introduce this change to make *date-fns* consistent with ECMAScript behavior\n * that try to coerce arguments to the expected type\n * (which is also the case with other *date-fns* functions).\n *\n * @param {*} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // For the valid date:\n * var result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * var result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * var result = isValid(new Date(''))\n * //=> false\n */\n\nexport default function isValid(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n return !isNaN(date);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_MINUTE = 60000;\n/**\n * @name addMinutes\n * @category Minute Helpers\n * @summary Add the specified number of minutes to the given date.\n *\n * @description\n * Add the specified number of minutes to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of minutes to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the minutes added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 30 minutes to 10 July 2014 12:00:00:\n * const result = addMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 12:30:00\n */\n\nexport default function addMinutes(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_MINUTE);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_HOUR = 3600000;\n/**\n * @name addHours\n * @category Hour Helpers\n * @summary Add the specified number of hours to the given date.\n *\n * @description\n * Add the specified number of hours to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of hours to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the hours added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 2 hours to 10 July 2014 23:00:00:\n * const result = addHours(new Date(2014, 6, 10, 23, 0), 2)\n * //=> Fri Jul 11 2014 01:00:00\n */\n\nexport default function addHours(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_HOUR);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addDays from \"../addDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addWeeks\n * @category Week Helpers\n * @summary Add the specified number of weeks to the given date.\n *\n * @description\n * Add the specified number of week to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of weeks to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the weeks added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 4 weeks to 1 September 2014:\n * const result = addWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Sep 29 2014 00:00:00\n */\n\nexport default function addWeeks(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n var days = amount * 7;\n return addDays(dirtyDate, days);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMonths from \"../addMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addYears\n * @category Year Helpers\n * @summary Add the specified number of years to the given date.\n *\n * @description\n * Add the specified number of years to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of years to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the years added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 5 years to 1 September 2014:\n * const result = addYears(new Date(2014, 8, 1), 5)\n * //=> Sun Sep 01 2019 00:00:00\n */\n\nexport default function addYears(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMonths(dirtyDate, amount * 12);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport getDaysInMonth from \"../getDaysInMonth/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setMonth\n * @category Month Helpers\n * @summary Set the month to the given date.\n *\n * @description\n * Set the month to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} month - the month of the new date\n * @returns {Date} the new date with the month set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set February to 1 September 2014:\n * const result = setMonth(new Date(2014, 8, 1), 1)\n * //=> Sat Feb 01 2014 00:00:00\n */\n\nexport default function setMonth(dirtyDate, dirtyMonth) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var month = toInteger(dirtyMonth);\n var year = date.getFullYear();\n var day = date.getDate();\n var dateWithDesiredMonth = new Date(0);\n dateWithDesiredMonth.setFullYear(year, month, 15);\n dateWithDesiredMonth.setHours(0, 0, 0, 0);\n var daysInMonth = getDaysInMonth(dateWithDesiredMonth); // Set the last day of the new month\n // if the original date was the last day of the longer month\n\n date.setMonth(month, Math.min(day, daysInMonth));\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getDaysInMonth\n * @category Month Helpers\n * @summary Get the number of days in a month of the given date.\n *\n * @description\n * Get the number of days in a month of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the number of days in a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // How many days are in February 2000?\n * const result = getDaysInMonth(new Date(2000, 1))\n * //=> 29\n */\n\nexport default function getDaysInMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n var monthIndex = date.getMonth();\n var lastDayOfMonth = new Date(0);\n lastDayOfMonth.setFullYear(year, monthIndex + 1, 0);\n lastDayOfMonth.setHours(0, 0, 0, 0);\n return lastDayOfMonth.getDate();\n}","/* global window */\nimport ponyfill from './ponyfill.js';\n\nvar root;\n\nif (typeof self !== 'undefined') {\n root = self;\n} else if (typeof window !== 'undefined') {\n root = window;\n} else if (typeof global !== 'undefined') {\n root = global;\n} else if (typeof module !== 'undefined') {\n root = module;\n} else {\n root = Function('return this')();\n}\n\nvar result = ponyfill(root);\nexport default result;\n","import _curry2 from './internal/_curry2.js';\n\n/**\n * Retrieve the value at a given path.\n *\n * @func\n * @memberOf R\n * @since v0.2.0\n * @category Object\n * @typedefn Idx = String | Int\n * @sig [Idx] -> {a} -> a | Undefined\n * @param {Array} path The path to use.\n * @param {Object} obj The object to retrieve the nested property from.\n * @return {*} The data at `path`.\n * @see R.prop\n * @example\n *\n * R.path(['a', 'b'], {a: {b: 2}}); //=> 2\n * R.path(['a', 'b'], {c: {b: 2}}); //=> undefined\n */\nvar path = /*#__PURE__*/_curry2(function path(paths, obj) {\n var val = obj;\n var idx = 0;\n while (idx < paths.length) {\n if (val == null) {\n return;\n }\n val = val[paths[idx]];\n idx += 1;\n }\n return val;\n});\nexport default path;","'use strict';\n\nvar stringify = require('./stringify');\nvar parse = require('./parse');\nvar formats = require('./formats');\n\nmodule.exports = {\n formats: formats,\n parse: parse,\n stringify: stringify\n};\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","'use strict';\n\nvar colorString = require('color-string');\nvar convert = require('color-convert');\n\nvar _slice = [].slice;\n\nvar skippedModels = [\n\t// to be honest, I don't really feel like keyword belongs in color convert, but eh.\n\t'keyword',\n\n\t// gray conflicts with some method names, and has its own method defined.\n\t'gray',\n\n\t// shouldn't really be in color-convert either...\n\t'hex'\n];\n\nvar hashedModelKeys = {};\nObject.keys(convert).forEach(function (model) {\n\thashedModelKeys[_slice.call(convert[model].labels).sort().join('')] = model;\n});\n\nvar limiters = {};\n\nfunction Color(obj, model) {\n\tif (!(this instanceof Color)) {\n\t\treturn new Color(obj, model);\n\t}\n\n\tif (model && model in skippedModels) {\n\t\tmodel = null;\n\t}\n\n\tif (model && !(model in convert)) {\n\t\tthrow new Error('Unknown model: ' + model);\n\t}\n\n\tvar i;\n\tvar channels;\n\n\tif (obj == null) { // eslint-disable-line no-eq-null,eqeqeq\n\t\tthis.model = 'rgb';\n\t\tthis.color = [0, 0, 0];\n\t\tthis.valpha = 1;\n\t} else if (obj instanceof Color) {\n\t\tthis.model = obj.model;\n\t\tthis.color = obj.color.slice();\n\t\tthis.valpha = obj.valpha;\n\t} else if (typeof obj === 'string') {\n\t\tvar result = colorString.get(obj);\n\t\tif (result === null) {\n\t\t\tthrow new Error('Unable to parse color from string: ' + obj);\n\t\t}\n\n\t\tthis.model = result.model;\n\t\tchannels = convert[this.model].channels;\n\t\tthis.color = result.value.slice(0, channels);\n\t\tthis.valpha = typeof result.value[channels] === 'number' ? result.value[channels] : 1;\n\t} else if (obj.length) {\n\t\tthis.model = model || 'rgb';\n\t\tchannels = convert[this.model].channels;\n\t\tvar newArr = _slice.call(obj, 0, channels);\n\t\tthis.color = zeroArray(newArr, channels);\n\t\tthis.valpha = typeof obj[channels] === 'number' ? obj[channels] : 1;\n\t} else if (typeof obj === 'number') {\n\t\t// this is always RGB - can be converted later on.\n\t\tobj &= 0xFFFFFF;\n\t\tthis.model = 'rgb';\n\t\tthis.color = [\n\t\t\t(obj >> 16) & 0xFF,\n\t\t\t(obj >> 8) & 0xFF,\n\t\t\tobj & 0xFF\n\t\t];\n\t\tthis.valpha = 1;\n\t} else {\n\t\tthis.valpha = 1;\n\n\t\tvar keys = Object.keys(obj);\n\t\tif ('alpha' in obj) {\n\t\t\tkeys.splice(keys.indexOf('alpha'), 1);\n\t\t\tthis.valpha = typeof obj.alpha === 'number' ? obj.alpha : 0;\n\t\t}\n\n\t\tvar hashedKeys = keys.sort().join('');\n\t\tif (!(hashedKeys in hashedModelKeys)) {\n\t\t\tthrow new Error('Unable to parse color from object: ' + JSON.stringify(obj));\n\t\t}\n\n\t\tthis.model = hashedModelKeys[hashedKeys];\n\n\t\tvar labels = convert[this.model].labels;\n\t\tvar color = [];\n\t\tfor (i = 0; i < labels.length; i++) {\n\t\t\tcolor.push(obj[labels[i]]);\n\t\t}\n\n\t\tthis.color = zeroArray(color);\n\t}\n\n\t// perform limitations (clamping, etc.)\n\tif (limiters[this.model]) {\n\t\tchannels = convert[this.model].channels;\n\t\tfor (i = 0; i < channels; i++) {\n\t\t\tvar limit = limiters[this.model][i];\n\t\t\tif (limit) {\n\t\t\t\tthis.color[i] = limit(this.color[i]);\n\t\t\t}\n\t\t}\n\t}\n\n\tthis.valpha = Math.max(0, Math.min(1, this.valpha));\n\n\tif (Object.freeze) {\n\t\tObject.freeze(this);\n\t}\n}\n\nColor.prototype = {\n\ttoString: function () {\n\t\treturn this.string();\n\t},\n\n\ttoJSON: function () {\n\t\treturn this[this.model]();\n\t},\n\n\tstring: function (places) {\n\t\tvar self = this.model in colorString.to ? this : this.rgb();\n\t\tself = self.round(typeof places === 'number' ? places : 1);\n\t\tvar args = self.valpha === 1 ? self.color : self.color.concat(this.valpha);\n\t\treturn colorString.to[self.model](args);\n\t},\n\n\tpercentString: function (places) {\n\t\tvar self = this.rgb().round(typeof places === 'number' ? places : 1);\n\t\tvar args = self.valpha === 1 ? self.color : self.color.concat(this.valpha);\n\t\treturn colorString.to.rgb.percent(args);\n\t},\n\n\tarray: function () {\n\t\treturn this.valpha === 1 ? this.color.slice() : this.color.concat(this.valpha);\n\t},\n\n\tobject: function () {\n\t\tvar result = {};\n\t\tvar channels = convert[this.model].channels;\n\t\tvar labels = convert[this.model].labels;\n\n\t\tfor (var i = 0; i < channels; i++) {\n\t\t\tresult[labels[i]] = this.color[i];\n\t\t}\n\n\t\tif (this.valpha !== 1) {\n\t\t\tresult.alpha = this.valpha;\n\t\t}\n\n\t\treturn result;\n\t},\n\n\tunitArray: function () {\n\t\tvar rgb = this.rgb().color;\n\t\trgb[0] /= 255;\n\t\trgb[1] /= 255;\n\t\trgb[2] /= 255;\n\n\t\tif (this.valpha !== 1) {\n\t\t\trgb.push(this.valpha);\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tunitObject: function () {\n\t\tvar rgb = this.rgb().object();\n\t\trgb.r /= 255;\n\t\trgb.g /= 255;\n\t\trgb.b /= 255;\n\n\t\tif (this.valpha !== 1) {\n\t\t\trgb.alpha = this.valpha;\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tround: function (places) {\n\t\tplaces = Math.max(places || 0, 0);\n\t\treturn new Color(this.color.map(roundToPlace(places)).concat(this.valpha), this.model);\n\t},\n\n\talpha: function (val) {\n\t\tif (arguments.length) {\n\t\t\treturn new Color(this.color.concat(Math.max(0, Math.min(1, val))), this.model);\n\t\t}\n\n\t\treturn this.valpha;\n\t},\n\n\t// rgb\n\tred: getset('rgb', 0, maxfn(255)),\n\tgreen: getset('rgb', 1, maxfn(255)),\n\tblue: getset('rgb', 2, maxfn(255)),\n\n\thue: getset(['hsl', 'hsv', 'hsl', 'hwb', 'hcg'], 0, function (val) { return ((val % 360) + 360) % 360; }), // eslint-disable-line brace-style\n\n\tsaturationl: getset('hsl', 1, maxfn(100)),\n\tlightness: getset('hsl', 2, maxfn(100)),\n\n\tsaturationv: getset('hsv', 1, maxfn(100)),\n\tvalue: getset('hsv', 2, maxfn(100)),\n\n\tchroma: getset('hcg', 1, maxfn(100)),\n\tgray: getset('hcg', 2, maxfn(100)),\n\n\twhite: getset('hwb', 1, maxfn(100)),\n\twblack: getset('hwb', 2, maxfn(100)),\n\n\tcyan: getset('cmyk', 0, maxfn(100)),\n\tmagenta: getset('cmyk', 1, maxfn(100)),\n\tyellow: getset('cmyk', 2, maxfn(100)),\n\tblack: getset('cmyk', 3, maxfn(100)),\n\n\tx: getset('xyz', 0, maxfn(100)),\n\ty: getset('xyz', 1, maxfn(100)),\n\tz: getset('xyz', 2, maxfn(100)),\n\n\tl: getset('lab', 0, maxfn(100)),\n\ta: getset('lab', 1),\n\tb: getset('lab', 2),\n\n\tkeyword: function (val) {\n\t\tif (arguments.length) {\n\t\t\treturn new Color(val);\n\t\t}\n\n\t\treturn convert[this.model].keyword(this.color);\n\t},\n\n\thex: function (val) {\n\t\tif (arguments.length) {\n\t\t\treturn new Color(val);\n\t\t}\n\n\t\treturn colorString.to.hex(this.rgb().round().color);\n\t},\n\n\trgbNumber: function () {\n\t\tvar rgb = this.rgb().color;\n\t\treturn ((rgb[0] & 0xFF) << 16) | ((rgb[1] & 0xFF) << 8) | (rgb[2] & 0xFF);\n\t},\n\n\tluminosity: function () {\n\t\t// http://www.w3.org/TR/WCAG20/#relativeluminancedef\n\t\tvar rgb = this.rgb().color;\n\n\t\tvar lum = [];\n\t\tfor (var i = 0; i < rgb.length; i++) {\n\t\t\tvar chan = rgb[i] / 255;\n\t\t\tlum[i] = (chan <= 0.03928) ? chan / 12.92 : Math.pow(((chan + 0.055) / 1.055), 2.4);\n\t\t}\n\n\t\treturn 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];\n\t},\n\n\tcontrast: function (color2) {\n\t\t// http://www.w3.org/TR/WCAG20/#contrast-ratiodef\n\t\tvar lum1 = this.luminosity();\n\t\tvar lum2 = color2.luminosity();\n\n\t\tif (lum1 > lum2) {\n\t\t\treturn (lum1 + 0.05) / (lum2 + 0.05);\n\t\t}\n\n\t\treturn (lum2 + 0.05) / (lum1 + 0.05);\n\t},\n\n\tlevel: function (color2) {\n\t\tvar contrastRatio = this.contrast(color2);\n\t\tif (contrastRatio >= 7.1) {\n\t\t\treturn 'AAA';\n\t\t}\n\n\t\treturn (contrastRatio >= 4.5) ? 'AA' : '';\n\t},\n\n\tisDark: function () {\n\t\t// YIQ equation from http://24ways.org/2010/calculating-color-contrast\n\t\tvar rgb = this.rgb().color;\n\t\tvar yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;\n\t\treturn yiq < 128;\n\t},\n\n\tisLight: function () {\n\t\treturn !this.isDark();\n\t},\n\n\tnegate: function () {\n\t\tvar rgb = this.rgb();\n\t\tfor (var i = 0; i < 3; i++) {\n\t\t\trgb.color[i] = 255 - rgb.color[i];\n\t\t}\n\t\treturn rgb;\n\t},\n\n\tlighten: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[2] += hsl.color[2] * ratio;\n\t\treturn hsl;\n\t},\n\n\tdarken: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[2] -= hsl.color[2] * ratio;\n\t\treturn hsl;\n\t},\n\n\tsaturate: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[1] += hsl.color[1] * ratio;\n\t\treturn hsl;\n\t},\n\n\tdesaturate: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[1] -= hsl.color[1] * ratio;\n\t\treturn hsl;\n\t},\n\n\twhiten: function (ratio) {\n\t\tvar hwb = this.hwb();\n\t\thwb.color[1] += hwb.color[1] * ratio;\n\t\treturn hwb;\n\t},\n\n\tblacken: function (ratio) {\n\t\tvar hwb = this.hwb();\n\t\thwb.color[2] += hwb.color[2] * ratio;\n\t\treturn hwb;\n\t},\n\n\tgrayscale: function () {\n\t\t// http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale\n\t\tvar rgb = this.rgb().color;\n\t\tvar val = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;\n\t\treturn Color.rgb(val, val, val);\n\t},\n\n\tfade: function (ratio) {\n\t\treturn this.alpha(this.valpha - (this.valpha * ratio));\n\t},\n\n\topaquer: function (ratio) {\n\t\treturn this.alpha(this.valpha + (this.valpha * ratio));\n\t},\n\n\trotate: function (degrees) {\n\t\tvar hsl = this.hsl();\n\t\tvar hue = hsl.color[0];\n\t\thue = (hue + degrees) % 360;\n\t\thue = hue < 0 ? 360 + hue : hue;\n\t\thsl.color[0] = hue;\n\t\treturn hsl;\n\t},\n\n\tmix: function (mixinColor, weight) {\n\t\t// ported from sass implementation in C\n\t\t// https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209\n\t\tif (!mixinColor || !mixinColor.rgb) {\n\t\t\tthrow new Error('Argument to \"mix\" was not a Color instance, but rather an instance of ' + typeof mixinColor);\n\t\t}\n\t\tvar color1 = mixinColor.rgb();\n\t\tvar color2 = this.rgb();\n\t\tvar p = weight === undefined ? 0.5 : weight;\n\n\t\tvar w = 2 * p - 1;\n\t\tvar a = color1.alpha() - color2.alpha();\n\n\t\tvar w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n\t\tvar w2 = 1 - w1;\n\n\t\treturn Color.rgb(\n\t\t\t\tw1 * color1.red() + w2 * color2.red(),\n\t\t\t\tw1 * color1.green() + w2 * color2.green(),\n\t\t\t\tw1 * color1.blue() + w2 * color2.blue(),\n\t\t\t\tcolor1.alpha() * p + color2.alpha() * (1 - p));\n\t}\n};\n\n// model conversion methods and static constructors\nObject.keys(convert).forEach(function (model) {\n\tif (skippedModels.indexOf(model) !== -1) {\n\t\treturn;\n\t}\n\n\tvar channels = convert[model].channels;\n\n\t// conversion methods\n\tColor.prototype[model] = function () {\n\t\tif (this.model === model) {\n\t\t\treturn new Color(this);\n\t\t}\n\n\t\tif (arguments.length) {\n\t\t\treturn new Color(arguments, model);\n\t\t}\n\n\t\tvar newAlpha = typeof arguments[channels] === 'number' ? channels : this.valpha;\n\t\treturn new Color(assertArray(convert[this.model][model].raw(this.color)).concat(newAlpha), model);\n\t};\n\n\t// 'static' construction methods\n\tColor[model] = function (color) {\n\t\tif (typeof color === 'number') {\n\t\t\tcolor = zeroArray(_slice.call(arguments), channels);\n\t\t}\n\t\treturn new Color(color, model);\n\t};\n});\n\nfunction roundTo(num, places) {\n\treturn Number(num.toFixed(places));\n}\n\nfunction roundToPlace(places) {\n\treturn function (num) {\n\t\treturn roundTo(num, places);\n\t};\n}\n\nfunction getset(model, channel, modifier) {\n\tmodel = Array.isArray(model) ? model : [model];\n\n\tmodel.forEach(function (m) {\n\t\t(limiters[m] || (limiters[m] = []))[channel] = modifier;\n\t});\n\n\tmodel = model[0];\n\n\treturn function (val) {\n\t\tvar result;\n\n\t\tif (arguments.length) {\n\t\t\tif (modifier) {\n\t\t\t\tval = modifier(val);\n\t\t\t}\n\n\t\t\tresult = this[model]();\n\t\t\tresult.color[channel] = val;\n\t\t\treturn result;\n\t\t}\n\n\t\tresult = this[model]().color[channel];\n\t\tif (modifier) {\n\t\t\tresult = modifier(result);\n\t\t}\n\n\t\treturn result;\n\t};\n}\n\nfunction maxfn(max) {\n\treturn function (v) {\n\t\treturn Math.max(0, Math.min(max, v));\n\t};\n}\n\nfunction assertArray(val) {\n\treturn Array.isArray(val) ? val : [val];\n}\n\nfunction zeroArray(arr, length) {\n\tfor (var i = 0; i < length; i++) {\n\t\tif (typeof arr[i] !== 'number') {\n\t\t\tarr[i] = 0;\n\t\t}\n\t}\n\n\treturn arr;\n}\n\nmodule.exports = Color;\n","function memoize(fn) {\n var cache = Object.create(null);\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nexport default memoize;\n","import memoize from '@emotion/memoize';\n\nvar reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|enterKeyHint|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/; // https://esbench.com/bench/5bfee68a4cd7e6009ef61d23\n\nvar isPropValid = /* #__PURE__ */memoize(function (prop) {\n return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111\n /* o */\n && prop.charCodeAt(1) === 110\n /* n */\n && prop.charCodeAt(2) < 91;\n}\n/* Z+1 */\n);\n\nexport default isPropValid;\n","import _objectAssign from './internal/_objectAssign.js';\nimport _curry1 from './internal/_curry1.js';\n\n/**\n * Merges a list of objects together into one object.\n *\n * @func\n * @memberOf R\n * @since v0.10.0\n * @category List\n * @sig [{k: v}] -> {k: v}\n * @param {Array} list An array of objects\n * @return {Object} A merged object.\n * @see R.reduce\n * @example\n *\n * R.mergeAll([{foo:1},{bar:2},{baz:3}]); //=> {foo:1,bar:2,baz:3}\n * R.mergeAll([{foo:1},{foo:2},{bar:2}]); //=> {foo:2,bar:2}\n * @symb R.mergeAll([{ x: 1 }, { y: 2 }, { z: 3 }]) = { x: 1, y: 2, z: 3 }\n */\nvar mergeAll = /*#__PURE__*/_curry1(function mergeAll(list) {\n return _objectAssign.apply(null, [{}].concat(list));\n});\nexport default mergeAll;","import nth from './nth.js';\n\n/**\n * Returns the last element of the given list or string.\n *\n * @func\n * @memberOf R\n * @since v0.1.4\n * @category List\n * @sig [a] -> a | Undefined\n * @sig String -> String\n * @param {*} list\n * @return {*}\n * @see R.init, R.head, R.tail\n * @example\n *\n * R.last(['fi', 'fo', 'fum']); //=> 'fum'\n * R.last([]); //=> undefined\n *\n * R.last('abc'); //=> 'c'\n * R.last(''); //=> ''\n */\nvar last = /*#__PURE__*/nth(-1);\nexport default last;","import _curry2 from './internal/_curry2.js';\nimport _isString from './internal/_isString.js';\n\n/**\n * Returns the nth element of the given list or string. If n is negative the\n * element at index length + n is returned.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig Number -> [a] -> a | Undefined\n * @sig Number -> String -> String\n * @param {Number} offset\n * @param {*} list\n * @return {*}\n * @example\n *\n * const list = ['foo', 'bar', 'baz', 'quux'];\n * R.nth(1, list); //=> 'bar'\n * R.nth(-1, list); //=> 'quux'\n * R.nth(-99, list); //=> undefined\n *\n * R.nth(2, 'abc'); //=> 'c'\n * R.nth(3, 'abc'); //=> ''\n * @symb R.nth(-1, [a, b, c]) = c\n * @symb R.nth(0, [a, b, c]) = a\n * @symb R.nth(1, [a, b, c]) = b\n */\nvar nth = /*#__PURE__*/_curry2(function nth(offset, list) {\n var idx = offset < 0 ? list.length + offset : offset;\n return _isString(list) ? list.charAt(idx) : list[idx];\n});\nexport default nth;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.add = add;\nexports.remove = remove;\nexports.has = has;\nexports.check = check;\nexports.all = all;\nexports.clear = clear;\nexports.enableChecking = enableChecking;\nexports.disableChecking = disableChecking;\nvar types = {};\nvar config = {\n checkExisting: true\n};\n\nfunction add(name) {\n types[name] = true;\n}\n\nfunction remove(name) {\n types[name] = false;\n}\n\nfunction has(name) {\n return !!types[name];\n}\n\nfunction check(name) {\n if (config.checkExisting && has(name)) {\n throw new TypeError(\"Duplicate action type: \".concat(name));\n }\n}\n\nfunction all() {\n return Object.keys(types).filter(has);\n}\n\nfunction clear() {\n all().forEach(remove);\n}\n\nfunction enableChecking() {\n config.checkExisting = true;\n}\n\nfunction disableChecking() {\n config.checkExisting = false;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = createAction;\n\nvar _types = require(\"./types\");\n\nvar id = 0;\n\nvar identity = function identity(arg) {\n return arg;\n};\n\nvar normalize = function normalize(dispatchOrStore) {\n if (dispatchOrStore && typeof dispatchOrStore.dispatch === 'function') {\n return dispatchOrStore.dispatch;\n } else {\n return dispatchOrStore;\n }\n};\n\nvar normalizeAll = function normalizeAll(dispatchOrStores) {\n if (Array.isArray(dispatchOrStores)) {\n return dispatchOrStores.map(normalize);\n } else {\n return normalize(dispatchOrStores);\n }\n};\n\nfunction createAction(description, payloadReducer, metaReducer) {\n if (typeof description === 'function') {\n metaReducer = payloadReducer;\n payloadReducer = description;\n description = undefined;\n }\n\n if (typeof payloadReducer !== 'function') {\n payloadReducer = identity;\n }\n\n if (typeof metaReducer !== 'function') {\n metaReducer = undefined;\n }\n\n var isSerializable = typeof description === 'string' && /^[0-9A-Z_]+$/.test(description);\n\n if (isSerializable) {\n (0, _types.check)(description);\n (0, _types.add)(description);\n } else {\n ++id;\n }\n\n var type = isSerializable ? description : \"[\".concat(id, \"]\").concat(description ? ' ' + description : '');\n var dispatchFunctions = undefined;\n\n function makeAction() {\n var payload = payloadReducer.apply(void 0, arguments);\n\n if (metaReducer) {\n return {\n type: type,\n payload: payload,\n error: payload instanceof Error,\n meta: metaReducer.apply(void 0, arguments)\n };\n }\n\n return {\n type: type,\n payload: payload,\n error: payload instanceof Error\n };\n }\n\n var makeAndDispatch = function makeAndDispatch(dispatchs, isError) {\n return function () {\n var payloadedAction = makeAction.apply(void 0, arguments);\n\n if (!payloadedAction.error) {\n payloadedAction.error = isError;\n }\n\n if (Array.isArray(dispatchs)) {\n return dispatchs.map(function (dispatch) {\n return dispatch(payloadedAction);\n });\n } else if (dispatchs) {\n return dispatchs(payloadedAction);\n } else {\n return payloadedAction;\n }\n };\n };\n\n function actionCreator() {\n return makeAndDispatch(dispatchFunctions, false).apply(void 0, arguments);\n }\n\n actionCreator.asError = function () {\n return makeAndDispatch(dispatchFunctions, true).apply(void 0, arguments);\n };\n\n actionCreator.getType = function () {\n return type;\n };\n\n actionCreator.toString = function () {\n return type;\n };\n\n actionCreator.raw = makeAction;\n\n actionCreator.assignTo = function (dispatchOrStores) {\n dispatchFunctions = normalizeAll(dispatchOrStores);\n return actionCreator;\n };\n\n actionCreator.assigned = function () {\n return !!dispatchFunctions;\n };\n\n actionCreator.bound = function () {\n return false;\n };\n\n actionCreator.dispatched = actionCreator.assigned;\n\n actionCreator.bindTo = function (dispatchOrStores) {\n var boundActionCreator = makeAndDispatch(normalizeAll(dispatchOrStores, false));\n boundActionCreator.asError = makeAndDispatch(normalizeAll(dispatchOrStores, true));\n boundActionCreator.raw = makeAction;\n boundActionCreator.getType = actionCreator.getType;\n boundActionCreator.toString = actionCreator.toString;\n\n boundActionCreator.assignTo = function () {\n return boundActionCreator;\n };\n\n boundActionCreator.bindTo = function () {\n return boundActionCreator;\n };\n\n boundActionCreator.assigned = function () {\n return false;\n };\n\n boundActionCreator.bound = function () {\n return true;\n };\n\n boundActionCreator.dispatched = boundActionCreator.bound;\n return boundActionCreator;\n };\n\n return actionCreator;\n}\n\n;","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code\n };\n };\n return error;\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded';\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(\n timeoutErrorMessage,\n config,\n config.transitional && config.transitional.clarifyTimeoutError ? 'ETIMEDOUT' : 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n var valueFromConfig2Keys = ['url', 'method', 'data'];\n var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy', 'params'];\n var defaultToConfig2Keys = [\n 'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer',\n 'timeout', 'timeoutMessage', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'decompress',\n 'maxContentLength', 'maxBodyLength', 'maxRedirects', 'transport', 'httpAgent',\n 'httpsAgent', 'cancelToken', 'socketPath', 'responseEncoding'\n ];\n var directMergeKeys = ['validateStatus'];\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n }\n\n utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n }\n });\n\n utils.forEach(mergeDeepPropertiesKeys, mergeDeepProperties);\n\n utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n utils.forEach(directMergeKeys, function merge(prop) {\n if (prop in config2) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n var axiosKeys = valueFromConfig2Keys\n .concat(mergeDeepPropertiesKeys)\n .concat(defaultToConfig2Keys)\n .concat(directMergeKeys);\n\n var otherKeys = Object\n .keys(config1)\n .concat(Object.keys(config2))\n .filter(function filterAxiosKeys(key) {\n return axiosKeys.indexOf(key) === -1;\n });\n\n utils.forEach(otherKeys, mergeDeepProperties);\n\n return config;\n};\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.useFirstMountState = void 0;\nvar react_1 = require(\"react\");\nfunction useFirstMountState() {\n var isFirst = react_1.useRef(true);\n if (isFirst.current) {\n isFirst.current = false;\n return true;\n }\n return isFirst.current;\n}\nexports.useFirstMountState = useFirstMountState;\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\nmodule.exports = {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Convert a data object to FormData\n * @param {Object} obj\n * @param {?Object} [formData]\n * @returns {Object}\n **/\n\nfunction toFormData(obj, formData) {\n // eslint-disable-next-line no-param-reassign\n formData = formData || new FormData();\n\n var stack = [];\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n function build(data, parentKey) {\n if (utils.isPlainObject(data) || utils.isArray(data)) {\n if (stack.indexOf(data) !== -1) {\n throw Error('Circular reference detected in ' + parentKey);\n }\n\n stack.push(data);\n\n utils.forEach(data, function each(value, key) {\n if (utils.isUndefined(value)) return;\n var fullKey = parentKey ? parentKey + '.' + key : key;\n var arr;\n\n if (value && !parentKey && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (utils.endsWith(key, '[]') && (arr = utils.toArray(value))) {\n // eslint-disable-next-line func-names\n arr.forEach(function(el) {\n !utils.isUndefined(el) && formData.append(fullKey, convertValue(el));\n });\n return;\n }\n }\n\n build(value, fullKey);\n });\n\n stack.pop();\n } else {\n formData.append(parentKey, convertValue(data));\n }\n }\n\n build(obj);\n\n return formData;\n}\n\nmodule.exports = toFormData;\n","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar transitionalDefaults = require('../defaults/transitional');\nvar AxiosError = require('../core/AxiosError');\nvar CanceledError = require('../cancel/CanceledError');\nvar parseProtocol = require('../helpers/parseProtocol');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n var onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n if (utils.isFormData(requestData) && utils.isStandardBrowserEnv()) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n var transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = function(cancel) {\n if (!request) {\n return;\n }\n reject(!cancel || (cancel && cancel.type) ? new CanceledError() : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n var protocol = parseProtocol(fullPath);\n\n if (protocol && [ 'http', 'https', 'file' ].indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(prop) {\n if (prop in config2) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n var mergeMap = {\n 'url': valueFromConfig2,\n 'method': valueFromConfig2,\n 'data': valueFromConfig2,\n 'baseURL': defaultToConfig2,\n 'transformRequest': defaultToConfig2,\n 'transformResponse': defaultToConfig2,\n 'paramsSerializer': defaultToConfig2,\n 'timeout': defaultToConfig2,\n 'timeoutMessage': defaultToConfig2,\n 'withCredentials': defaultToConfig2,\n 'adapter': defaultToConfig2,\n 'responseType': defaultToConfig2,\n 'xsrfCookieName': defaultToConfig2,\n 'xsrfHeaderName': defaultToConfig2,\n 'onUploadProgress': defaultToConfig2,\n 'onDownloadProgress': defaultToConfig2,\n 'decompress': defaultToConfig2,\n 'maxContentLength': defaultToConfig2,\n 'maxBodyLength': defaultToConfig2,\n 'beforeRedirect': defaultToConfig2,\n 'transport': defaultToConfig2,\n 'httpAgent': defaultToConfig2,\n 'httpsAgent': defaultToConfig2,\n 'cancelToken': defaultToConfig2,\n 'socketPath': defaultToConfig2,\n 'responseEncoding': defaultToConfig2,\n 'validateStatus': mergeDirectKeys\n };\n\n utils.forEach(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) {\n var merge = mergeMap[prop] || mergeDeepProperties;\n var configValue = merge(prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n};\n","module.exports = {\n \"version\": \"0.27.2\"\n};","'use strict';\n\nvar slice = Array.prototype.slice;\nvar isArgs = require('./isArguments');\n\nvar origKeys = Object.keys;\nvar keysShim = origKeys ? function keys(o) { return origKeys(o); } : require('./implementation');\n\nvar originalKeys = Object.keys;\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\tvar args = Object.keys(arguments);\n\t\t\treturn args && args.length === arguments.length;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tObject.keys = function keys(object) { // eslint-disable-line func-name-matching\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t}\n\t\t\t\treturn originalKeys(object);\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n","'use strict';\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n","'use strict';\n\nvar bind = require('function-bind');\n\nmodule.exports = bind.call(Function.call, Object.prototype.hasOwnProperty);\n","'use strict';\n\nvar toObject = Object;\nvar TypeErr = TypeError;\n\nmodule.exports = function flags() {\n\tif (this != null && this !== toObject(this)) {\n\t\tthrow new TypeErr('RegExp.prototype.flags getter called on non-object');\n\t}\n\tvar result = '';\n\tif (this.global) {\n\t\tresult += 'g';\n\t}\n\tif (this.ignoreCase) {\n\t\tresult += 'i';\n\t}\n\tif (this.multiline) {\n\t\tresult += 'm';\n\t}\n\tif (this.dotAll) {\n\t\tresult += 's';\n\t}\n\tif (this.unicode) {\n\t\tresult += 'u';\n\t}\n\tif (this.sticky) {\n\t\tresult += 'y';\n\t}\n\treturn result;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nvar supportsDescriptors = require('define-properties').supportsDescriptors;\nvar gOPD = Object.getOwnPropertyDescriptor;\nvar TypeErr = TypeError;\n\nmodule.exports = function getPolyfill() {\n\tif (!supportsDescriptors) {\n\t\tthrow new TypeErr('RegExp.prototype.flags requires a true ES5 environment that supports property descriptors');\n\t}\n\tif (/a/mig.flags === 'gim') {\n\t\tvar descriptor = gOPD(RegExp.prototype, 'flags');\n\t\tif (descriptor && typeof descriptor.get === 'function' && typeof (/a/).dotAll === 'boolean') {\n\t\t\treturn descriptor.get;\n\t\t}\n\t}\n\treturn implementation;\n};\n","'use strict';\n\nvar formats = require('./formats');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar hexTable = (function () {\n var array = [];\n for (var i = 0; i < 256; ++i) {\n array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n }\n\n return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n while (queue.length > 1) {\n var item = queue.pop();\n var obj = item.obj[item.prop];\n\n if (isArray(obj)) {\n var compacted = [];\n\n for (var j = 0; j < obj.length; ++j) {\n if (typeof obj[j] !== 'undefined') {\n compacted.push(obj[j]);\n }\n }\n\n item.obj[item.prop] = compacted;\n }\n }\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n var obj = options && options.plainObjects ? Object.create(null) : {};\n for (var i = 0; i < source.length; ++i) {\n if (typeof source[i] !== 'undefined') {\n obj[i] = source[i];\n }\n }\n\n return obj;\n};\n\nvar merge = function merge(target, source, options) {\n /* eslint no-param-reassign: 0 */\n if (!source) {\n return target;\n }\n\n if (typeof source !== 'object') {\n if (isArray(target)) {\n target.push(source);\n } else if (target && typeof target === 'object') {\n if ((options && (options.plainObjects || options.allowPrototypes)) || !has.call(Object.prototype, source)) {\n target[source] = true;\n }\n } else {\n return [target, source];\n }\n\n return target;\n }\n\n if (!target || typeof target !== 'object') {\n return [target].concat(source);\n }\n\n var mergeTarget = target;\n if (isArray(target) && !isArray(source)) {\n mergeTarget = arrayToObject(target, options);\n }\n\n if (isArray(target) && isArray(source)) {\n source.forEach(function (item, i) {\n if (has.call(target, i)) {\n var targetItem = target[i];\n if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n target[i] = merge(targetItem, item, options);\n } else {\n target.push(item);\n }\n } else {\n target[i] = item;\n }\n });\n return target;\n }\n\n return Object.keys(source).reduce(function (acc, key) {\n var value = source[key];\n\n if (has.call(acc, key)) {\n acc[key] = merge(acc[key], value, options);\n } else {\n acc[key] = value;\n }\n return acc;\n }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n return Object.keys(source).reduce(function (acc, key) {\n acc[key] = source[key];\n return acc;\n }, target);\n};\n\nvar decode = function (str, decoder, charset) {\n var strWithoutPlus = str.replace(/\\+/g, ' ');\n if (charset === 'iso-8859-1') {\n // unescape never throws, no try...catch needed:\n return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n }\n // utf-8\n try {\n return decodeURIComponent(strWithoutPlus);\n } catch (e) {\n return strWithoutPlus;\n }\n};\n\nvar encode = function encode(str, defaultEncoder, charset, kind, format) {\n // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n // It has been adapted here for stricter adherence to RFC 3986\n if (str.length === 0) {\n return str;\n }\n\n var string = str;\n if (typeof str === 'symbol') {\n string = Symbol.prototype.toString.call(str);\n } else if (typeof str !== 'string') {\n string = String(str);\n }\n\n if (charset === 'iso-8859-1') {\n return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {\n return '%26%23' + parseInt($0.slice(2), 16) + '%3B';\n });\n }\n\n var out = '';\n for (var i = 0; i < string.length; ++i) {\n var c = string.charCodeAt(i);\n\n if (\n c === 0x2D // -\n || c === 0x2E // .\n || c === 0x5F // _\n || c === 0x7E // ~\n || (c >= 0x30 && c <= 0x39) // 0-9\n || (c >= 0x41 && c <= 0x5A) // a-z\n || (c >= 0x61 && c <= 0x7A) // A-Z\n || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( )\n ) {\n out += string.charAt(i);\n continue;\n }\n\n if (c < 0x80) {\n out = out + hexTable[c];\n continue;\n }\n\n if (c < 0x800) {\n out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n if (c < 0xD800 || c >= 0xE000) {\n out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n i += 1;\n c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF));\n /* eslint operator-linebreak: [2, \"before\"] */\n out += hexTable[0xF0 | (c >> 18)]\n + hexTable[0x80 | ((c >> 12) & 0x3F)]\n + hexTable[0x80 | ((c >> 6) & 0x3F)]\n + hexTable[0x80 | (c & 0x3F)];\n }\n\n return out;\n};\n\nvar compact = function compact(value) {\n var queue = [{ obj: { o: value }, prop: 'o' }];\n var refs = [];\n\n for (var i = 0; i < queue.length; ++i) {\n var item = queue[i];\n var obj = item.obj[item.prop];\n\n var keys = Object.keys(obj);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n var val = obj[key];\n if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n queue.push({ obj: obj, prop: key });\n refs.push(val);\n }\n }\n }\n\n compactQueue(queue);\n\n return value;\n};\n\nvar isRegExp = function isRegExp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n\n return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nvar combine = function combine(a, b) {\n return [].concat(a, b);\n};\n\nvar maybeMap = function maybeMap(val, fn) {\n if (isArray(val)) {\n var mapped = [];\n for (var i = 0; i < val.length; i += 1) {\n mapped.push(fn(val[i]));\n }\n return mapped;\n }\n return fn(val);\n};\n\nmodule.exports = {\n arrayToObject: arrayToObject,\n assign: assign,\n combine: combine,\n compact: compact,\n decode: decode,\n encode: encode,\n isBuffer: isBuffer,\n isRegExp: isRegExp,\n maybeMap: maybeMap,\n merge: merge\n};\n","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nmodule.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DateTimeFormat = void 0;\nvar tslib_1 = require(\"tslib\");\nvar ecma402_abstract_1 = require(\"@formatjs/ecma402-abstract\");\nvar get_internal_slots_1 = tslib_1.__importDefault(require(\"./get_internal_slots\"));\nvar links_1 = tslib_1.__importDefault(require(\"./data/links\"));\nvar packer_1 = require(\"./packer\");\nvar FormatDateTime_1 = require(\"./abstract/FormatDateTime\");\nvar InitializeDateTimeFormat_1 = require(\"./abstract/InitializeDateTimeFormat\");\nvar utils_1 = require(\"./abstract/utils\");\nvar FormatDateTimeToParts_1 = require(\"./abstract/FormatDateTimeToParts\");\nvar FormatDateTimeRangeToParts_1 = require(\"./abstract/FormatDateTimeRangeToParts\");\nvar FormatDateTimeRange_1 = require(\"./abstract/FormatDateTimeRange\");\nvar skeleton_1 = require(\"./abstract/skeleton\");\nvar UPPERCASED_LINKS = Object.keys(links_1.default).reduce(function (all, l) {\n all[l.toUpperCase()] = links_1.default[l];\n return all;\n}, {});\nvar RESOLVED_OPTIONS_KEYS = [\n 'locale',\n 'calendar',\n 'numberingSystem',\n 'dateStyle',\n 'timeStyle',\n 'timeZone',\n 'hourCycle',\n 'weekday',\n 'era',\n 'year',\n 'month',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'timeZoneName',\n];\nvar formatDescriptor = {\n enumerable: false,\n configurable: true,\n get: function () {\n if (typeof this !== 'object' ||\n !ecma402_abstract_1.OrdinaryHasInstance(exports.DateTimeFormat, this)) {\n throw TypeError('Intl.DateTimeFormat format property accessor called on incompatible receiver');\n }\n var internalSlots = get_internal_slots_1.default(this);\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var dtf = this;\n var boundFormat = internalSlots.boundFormat;\n if (boundFormat === undefined) {\n // https://tc39.es/proposal-unified-intl-numberformat/section11/numberformat_diff_out.html#sec-number-format-functions\n boundFormat = function (date) {\n var x;\n if (date === undefined) {\n x = Date.now();\n }\n else {\n x = Number(date);\n }\n return FormatDateTime_1.FormatDateTime(dtf, x, {\n getInternalSlots: get_internal_slots_1.default,\n localeData: exports.DateTimeFormat.localeData,\n tzData: exports.DateTimeFormat.tzData,\n getDefaultTimeZone: exports.DateTimeFormat.getDefaultTimeZone,\n });\n };\n try {\n // https://github.com/tc39/test262/blob/master/test/intl402/NumberFormat/prototype/format/format-function-name.js\n Object.defineProperty(boundFormat, 'name', {\n configurable: true,\n enumerable: false,\n writable: false,\n value: '',\n });\n }\n catch (e) {\n // In older browser (e.g Chrome 36 like polyfill.io)\n // TypeError: Cannot redefine property: name\n }\n internalSlots.boundFormat = boundFormat;\n }\n return boundFormat;\n },\n};\ntry {\n // https://github.com/tc39/test262/blob/master/test/intl402/NumberFormat/prototype/format/name.js\n Object.defineProperty(formatDescriptor.get, 'name', {\n configurable: true,\n enumerable: false,\n writable: false,\n value: 'get format',\n });\n}\ncatch (e) {\n // In older browser (e.g Chrome 36 like polyfill.io)\n // TypeError: Cannot redefine property: name\n}\nexports.DateTimeFormat = function (locales, options) {\n // Cannot use `new.target` bc of IE11 & TS transpiles it to something else\n if (!this || !ecma402_abstract_1.OrdinaryHasInstance(exports.DateTimeFormat, this)) {\n return new exports.DateTimeFormat(locales, options);\n }\n InitializeDateTimeFormat_1.InitializeDateTimeFormat(this, locales, options, {\n tzData: exports.DateTimeFormat.tzData,\n uppercaseLinks: UPPERCASED_LINKS,\n availableLocales: exports.DateTimeFormat.availableLocales,\n relevantExtensionKeys: exports.DateTimeFormat.relevantExtensionKeys,\n getDefaultLocale: exports.DateTimeFormat.getDefaultLocale,\n getDefaultTimeZone: exports.DateTimeFormat.getDefaultTimeZone,\n getInternalSlots: get_internal_slots_1.default,\n localeData: exports.DateTimeFormat.localeData,\n });\n /** IMPL START */\n var internalSlots = get_internal_slots_1.default(this);\n var dataLocale = internalSlots.dataLocale;\n var dataLocaleData = exports.DateTimeFormat.localeData[dataLocale];\n ecma402_abstract_1.invariant(dataLocaleData !== undefined, \"Cannot load locale-dependent data for \" + dataLocale + \".\");\n /** IMPL END */\n};\n// Static properties\necma402_abstract_1.defineProperty(exports.DateTimeFormat, 'supportedLocalesOf', {\n value: function supportedLocalesOf(locales, options) {\n return ecma402_abstract_1.SupportedLocales(exports.DateTimeFormat.availableLocales, ecma402_abstract_1.CanonicalizeLocaleList(locales), options);\n },\n});\necma402_abstract_1.defineProperty(exports.DateTimeFormat.prototype, 'resolvedOptions', {\n value: function resolvedOptions() {\n if (typeof this !== 'object' ||\n !ecma402_abstract_1.OrdinaryHasInstance(exports.DateTimeFormat, this)) {\n throw TypeError('Method Intl.DateTimeFormat.prototype.resolvedOptions called on incompatible receiver');\n }\n var internalSlots = get_internal_slots_1.default(this);\n var ro = {};\n for (var _i = 0, RESOLVED_OPTIONS_KEYS_1 = RESOLVED_OPTIONS_KEYS; _i < RESOLVED_OPTIONS_KEYS_1.length; _i++) {\n var key = RESOLVED_OPTIONS_KEYS_1[_i];\n var value = internalSlots[key];\n if (key === 'hourCycle') {\n var hour12 = value === 'h11' || value === 'h12'\n ? true\n : value === 'h23' || value === 'h24'\n ? false\n : undefined;\n if (hour12 !== undefined) {\n ro.hour12 = hour12;\n }\n }\n if (utils_1.DATE_TIME_PROPS.indexOf(key) > -1) {\n if (internalSlots.dateStyle !== undefined ||\n internalSlots.timeStyle !== undefined) {\n value = undefined;\n }\n }\n if (value !== undefined) {\n ro[key] = value;\n }\n }\n return ro;\n },\n});\necma402_abstract_1.defineProperty(exports.DateTimeFormat.prototype, 'formatToParts', {\n value: function formatToParts(date) {\n if (date === undefined) {\n date = Date.now();\n }\n else {\n date = ecma402_abstract_1.ToNumber(date);\n }\n return FormatDateTimeToParts_1.FormatDateTimeToParts(this, date, {\n getInternalSlots: get_internal_slots_1.default,\n localeData: exports.DateTimeFormat.localeData,\n tzData: exports.DateTimeFormat.tzData,\n getDefaultTimeZone: exports.DateTimeFormat.getDefaultTimeZone,\n });\n },\n});\necma402_abstract_1.defineProperty(exports.DateTimeFormat.prototype, 'formatRangeToParts', {\n value: function formatRangeToParts(startDate, endDate) {\n var dtf = this;\n if (typeof dtf !== 'object') {\n throw new TypeError();\n }\n if (startDate === undefined || endDate === undefined) {\n throw new TypeError('startDate/endDate cannot be undefined');\n }\n var x = ecma402_abstract_1.ToNumber(startDate);\n var y = ecma402_abstract_1.ToNumber(endDate);\n return FormatDateTimeRangeToParts_1.FormatDateTimeRangeToParts(dtf, x, y, {\n getInternalSlots: get_internal_slots_1.default,\n localeData: exports.DateTimeFormat.localeData,\n tzData: exports.DateTimeFormat.tzData,\n getDefaultTimeZone: exports.DateTimeFormat.getDefaultTimeZone,\n });\n },\n});\necma402_abstract_1.defineProperty(exports.DateTimeFormat.prototype, 'formatRange', {\n value: function formatRange(startDate, endDate) {\n var dtf = this;\n if (typeof dtf !== 'object') {\n throw new TypeError();\n }\n if (startDate === undefined || endDate === undefined) {\n throw new TypeError('startDate/endDate cannot be undefined');\n }\n var x = ecma402_abstract_1.ToNumber(startDate);\n var y = ecma402_abstract_1.ToNumber(endDate);\n return FormatDateTimeRange_1.FormatDateTimeRange(dtf, x, y, {\n getInternalSlots: get_internal_slots_1.default,\n localeData: exports.DateTimeFormat.localeData,\n tzData: exports.DateTimeFormat.tzData,\n getDefaultTimeZone: exports.DateTimeFormat.getDefaultTimeZone,\n });\n },\n});\nvar DEFAULT_TIMEZONE = 'UTC';\nexports.DateTimeFormat.__setDefaultTimeZone = function (timeZone) {\n if (timeZone !== undefined) {\n timeZone = String(timeZone);\n if (!ecma402_abstract_1.IsValidTimeZoneName(timeZone, {\n tzData: exports.DateTimeFormat.tzData,\n uppercaseLinks: UPPERCASED_LINKS,\n })) {\n throw new RangeError('Invalid timeZoneName');\n }\n timeZone = ecma402_abstract_1.CanonicalizeTimeZoneName(timeZone, {\n tzData: exports.DateTimeFormat.tzData,\n uppercaseLinks: UPPERCASED_LINKS,\n });\n }\n else {\n timeZone = DEFAULT_TIMEZONE;\n }\n exports.DateTimeFormat.__defaultTimeZone = timeZone;\n};\nexports.DateTimeFormat.relevantExtensionKeys = ['nu', 'ca', 'hc'];\nexports.DateTimeFormat.__defaultTimeZone = DEFAULT_TIMEZONE;\nexports.DateTimeFormat.getDefaultTimeZone = function () { return exports.DateTimeFormat.__defaultTimeZone; };\nexports.DateTimeFormat.__addLocaleData = function __addLocaleData() {\n var data = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n data[_i] = arguments[_i];\n }\n var _loop_1 = function (d, locale) {\n var dateFormat = d.dateFormat, timeFormat = d.timeFormat, dateTimeFormat = d.dateTimeFormat, formats = d.formats, intervalFormats = d.intervalFormats, rawData = tslib_1.__rest(d, [\"dateFormat\", \"timeFormat\", \"dateTimeFormat\", \"formats\", \"intervalFormats\"]);\n var processedData = tslib_1.__assign(tslib_1.__assign({}, rawData), { dateFormat: {\n full: skeleton_1.parseDateTimeSkeleton(dateFormat.full),\n long: skeleton_1.parseDateTimeSkeleton(dateFormat.long),\n medium: skeleton_1.parseDateTimeSkeleton(dateFormat.medium),\n short: skeleton_1.parseDateTimeSkeleton(dateFormat.short),\n }, timeFormat: {\n full: skeleton_1.parseDateTimeSkeleton(timeFormat.full),\n long: skeleton_1.parseDateTimeSkeleton(timeFormat.long),\n medium: skeleton_1.parseDateTimeSkeleton(timeFormat.medium),\n short: skeleton_1.parseDateTimeSkeleton(timeFormat.short),\n }, dateTimeFormat: {\n full: skeleton_1.parseDateTimeSkeleton(dateTimeFormat.full).pattern,\n long: skeleton_1.parseDateTimeSkeleton(dateTimeFormat.long).pattern,\n medium: skeleton_1.parseDateTimeSkeleton(dateTimeFormat.medium).pattern,\n short: skeleton_1.parseDateTimeSkeleton(dateTimeFormat.short).pattern,\n }, formats: {} });\n var _loop_2 = function (calendar) {\n processedData.formats[calendar] = Object.keys(formats[calendar]).map(function (skeleton) {\n return skeleton_1.parseDateTimeSkeleton(skeleton, formats[calendar][skeleton], intervalFormats[skeleton], intervalFormats.intervalFormatFallback);\n });\n };\n for (var calendar in formats) {\n _loop_2(calendar);\n }\n var minimizedLocale = new Intl.Locale(locale)\n .minimize()\n .toString();\n exports.DateTimeFormat.localeData[locale] = exports.DateTimeFormat.localeData[minimizedLocale] = processedData;\n exports.DateTimeFormat.availableLocales.add(locale);\n exports.DateTimeFormat.availableLocales.add(minimizedLocale);\n if (!exports.DateTimeFormat.__defaultLocale) {\n exports.DateTimeFormat.__defaultLocale = minimizedLocale;\n }\n };\n for (var _a = 0, data_1 = data; _a < data_1.length; _a++) {\n var _b = data_1[_a], d = _b.data, locale = _b.locale;\n _loop_1(d, locale);\n }\n};\nObject.defineProperty(exports.DateTimeFormat.prototype, 'format', formatDescriptor);\nexports.DateTimeFormat.__defaultLocale = '';\nexports.DateTimeFormat.localeData = {};\nexports.DateTimeFormat.availableLocales = new Set();\nexports.DateTimeFormat.getDefaultLocale = function () {\n return exports.DateTimeFormat.__defaultLocale;\n};\nexports.DateTimeFormat.polyfilled = true;\nexports.DateTimeFormat.tzData = {};\nexports.DateTimeFormat.__addTZData = function (d) {\n exports.DateTimeFormat.tzData = packer_1.unpack(d);\n};\ntry {\n if (typeof Symbol !== 'undefined') {\n Object.defineProperty(exports.DateTimeFormat.prototype, Symbol.toStringTag, {\n value: 'Intl.DateTimeFormat',\n writable: false,\n enumerable: false,\n configurable: true,\n });\n }\n Object.defineProperty(exports.DateTimeFormat.prototype.constructor, 'length', {\n value: 1,\n writable: false,\n enumerable: false,\n configurable: true,\n });\n}\ncatch (e) {\n // Meta fix so we're test262-compliant, not important\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ResolveLocale = void 0;\nvar LookupMatcher_1 = require(\"./LookupMatcher\");\nvar BestFitMatcher_1 = require(\"./BestFitMatcher\");\nvar utils_1 = require(\"./utils\");\nvar UnicodeExtensionValue_1 = require(\"./UnicodeExtensionValue\");\n/**\n * https://tc39.es/ecma402/#sec-resolvelocale\n */\nfunction ResolveLocale(availableLocales, requestedLocales, options, relevantExtensionKeys, localeData, getDefaultLocale) {\n var matcher = options.localeMatcher;\n var r;\n if (matcher === 'lookup') {\n r = LookupMatcher_1.LookupMatcher(availableLocales, requestedLocales, getDefaultLocale);\n }\n else {\n r = BestFitMatcher_1.BestFitMatcher(availableLocales, requestedLocales, getDefaultLocale);\n }\n var foundLocale = r.locale;\n var result = { locale: '', dataLocale: foundLocale };\n var supportedExtension = '-u';\n for (var _i = 0, relevantExtensionKeys_1 = relevantExtensionKeys; _i < relevantExtensionKeys_1.length; _i++) {\n var key = relevantExtensionKeys_1[_i];\n utils_1.invariant(foundLocale in localeData, \"Missing locale data for \" + foundLocale);\n var foundLocaleData = localeData[foundLocale];\n utils_1.invariant(typeof foundLocaleData === 'object' && foundLocaleData !== null, \"locale data \" + key + \" must be an object\");\n var keyLocaleData = foundLocaleData[key];\n utils_1.invariant(Array.isArray(keyLocaleData), \"keyLocaleData for \" + key + \" must be an array\");\n var value = keyLocaleData[0];\n utils_1.invariant(typeof value === 'string' || value === null, \"value must be string or null but got \" + typeof value + \" in key \" + key);\n var supportedExtensionAddition = '';\n if (r.extension) {\n var requestedValue = UnicodeExtensionValue_1.UnicodeExtensionValue(r.extension, key);\n if (requestedValue !== undefined) {\n if (requestedValue !== '') {\n if (~keyLocaleData.indexOf(requestedValue)) {\n value = requestedValue;\n supportedExtensionAddition = \"-\" + key + \"-\" + value;\n }\n }\n else if (~requestedValue.indexOf('true')) {\n value = 'true';\n supportedExtensionAddition = \"-\" + key;\n }\n }\n }\n if (key in options) {\n var optionsValue = options[key];\n utils_1.invariant(typeof optionsValue === 'string' ||\n typeof optionsValue === 'undefined' ||\n optionsValue === null, 'optionsValue must be String, Undefined or Null');\n if (~keyLocaleData.indexOf(optionsValue)) {\n if (optionsValue !== value) {\n value = optionsValue;\n supportedExtensionAddition = '';\n }\n }\n }\n result[key] = value;\n supportedExtension += supportedExtensionAddition;\n }\n if (supportedExtension.length > 2) {\n var privateIndex = foundLocale.indexOf('-x-');\n if (privateIndex === -1) {\n foundLocale = foundLocale + supportedExtension;\n }\n else {\n var preExtension = foundLocale.slice(0, privateIndex);\n var postExtension = foundLocale.slice(privateIndex, foundLocale.length);\n foundLocale = preExtension + supportedExtension + postExtension;\n }\n foundLocale = Intl.getCanonicalLocales(foundLocale)[0];\n }\n result.locale = foundLocale;\n return result;\n}\nexports.ResolveLocale = ResolveLocale;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PartitionDateTimePattern = void 0;\nvar ecma402_abstract_1 = require(\"@formatjs/ecma402-abstract\");\nvar FormatDateTimePattern_1 = require(\"./FormatDateTimePattern\");\n/**\n * https://tc39.es/ecma402/#sec-partitiondatetimepattern\n * @param dtf\n * @param x\n */\nfunction PartitionDateTimePattern(dtf, x, implDetails) {\n x = ecma402_abstract_1.TimeClip(x);\n if (isNaN(x)) {\n throw new RangeError('invalid time');\n }\n /** IMPL START */\n var getInternalSlots = implDetails.getInternalSlots;\n var internalSlots = getInternalSlots(dtf);\n /** IMPL END */\n var pattern = internalSlots.pattern;\n return FormatDateTimePattern_1.FormatDateTimePattern(dtf, ecma402_abstract_1.PartitionPattern(pattern), x, implDetails);\n}\nexports.PartitionDateTimePattern = PartitionDateTimePattern;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FormatDateTimePattern = void 0;\nvar ecma402_abstract_1 = require(\"@formatjs/ecma402-abstract\");\nvar utils_1 = require(\"./utils\");\nvar ToLocalTime_1 = require(\"./ToLocalTime\");\nfunction pad(n) {\n if (n < 10) {\n return \"0\" + n;\n }\n return String(n);\n}\nfunction offsetToGmtString(gmtFormat, hourFormat, offsetInMs, style) {\n var offsetInMinutes = Math.floor(offsetInMs / 60000);\n var mins = Math.abs(offsetInMinutes) % 60;\n var hours = Math.floor(Math.abs(offsetInMinutes) / 60);\n var _a = hourFormat.split(';'), positivePattern = _a[0], negativePattern = _a[1];\n var offsetStr = '';\n var pattern = offsetInMs < 0 ? negativePattern : positivePattern;\n if (style === 'long') {\n offsetStr = pattern\n .replace('HH', pad(hours))\n .replace('H', String(hours))\n .replace('mm', pad(mins))\n .replace('m', String(mins));\n }\n else if (mins || hours) {\n if (!mins) {\n pattern = pattern.replace(/:?m+/, '');\n }\n offsetStr = pattern.replace(/H+/, String(hours)).replace(/m+/, String(mins));\n }\n return gmtFormat.replace('{0}', offsetStr);\n}\n/**\n * https://tc39.es/ecma402/#sec-partitiondatetimepattern\n * @param dtf\n * @param x\n */\nfunction FormatDateTimePattern(dtf, patternParts, x, _a) {\n var getInternalSlots = _a.getInternalSlots, localeData = _a.localeData, getDefaultTimeZone = _a.getDefaultTimeZone, tzData = _a.tzData;\n x = ecma402_abstract_1.TimeClip(x);\n /** IMPL START */\n var internalSlots = getInternalSlots(dtf);\n var dataLocale = internalSlots.dataLocale;\n var dataLocaleData = localeData[dataLocale];\n /** IMPL END */\n var locale = internalSlots.locale;\n var nfOptions = Object.create(null);\n nfOptions.useGrouping = false;\n var nf = new Intl.NumberFormat(locale, nfOptions);\n var nf2Options = Object.create(null);\n nf2Options.minimumIntegerDigits = 2;\n nf2Options.useGrouping = false;\n var nf2 = new Intl.NumberFormat(locale, nf2Options);\n var fractionalSecondDigits = internalSlots.fractionalSecondDigits;\n var nf3;\n if (fractionalSecondDigits !== undefined) {\n var nf3Options = Object.create(null);\n nf3Options.minimumIntegerDigits = fractionalSecondDigits;\n nf3Options.useGrouping = false;\n nf3 = new Intl.NumberFormat(locale, nf3Options);\n }\n var tm = ToLocalTime_1.ToLocalTime(x, \n // @ts-ignore\n internalSlots.calendar, internalSlots.timeZone, { tzData: tzData });\n var result = [];\n for (var _i = 0, patternParts_1 = patternParts; _i < patternParts_1.length; _i++) {\n var patternPart = patternParts_1[_i];\n var p = patternPart.type;\n if (p === 'literal') {\n result.push({\n type: 'literal',\n value: patternPart.value,\n });\n }\n else if (p === 'fractionalSecondDigits') {\n var v = Math.floor(tm.millisecond * Math.pow(10, ((fractionalSecondDigits || 0) - 3)));\n result.push({\n // @ts-expect-error Spec is not there yet\n type: 'fractionalSecond',\n value: nf3.format(v),\n });\n }\n else if (p === 'dayPeriod') {\n // TODO\n }\n else if (utils_1.DATE_TIME_PROPS.indexOf(p) > -1) {\n var fv = '';\n var f = internalSlots[p];\n // @ts-ignore\n var v = tm[p];\n if (p === 'year' && v <= 0) {\n v = 1 - v;\n }\n if (p === 'month') {\n v++;\n }\n var hourCycle = internalSlots.hourCycle;\n if (p === 'hour' && (hourCycle === 'h11' || hourCycle === 'h12')) {\n v = v % 12;\n if (v === 0 && hourCycle === 'h12') {\n v = 12;\n }\n }\n if (p === 'hour' && hourCycle === 'h24') {\n if (v === 0) {\n v = 24;\n }\n }\n if (f === 'numeric') {\n fv = nf.format(v);\n }\n else if (f === '2-digit') {\n fv = nf2.format(v);\n if (fv.length > 2) {\n fv = fv.slice(fv.length - 2, fv.length);\n }\n }\n else if (f === 'narrow' || f === 'short' || f === 'long') {\n if (p === 'era') {\n fv = dataLocaleData[p][f][v];\n }\n else if (p === 'timeZoneName') {\n var timeZoneName = dataLocaleData.timeZoneName, gmtFormat = dataLocaleData.gmtFormat, hourFormat = dataLocaleData.hourFormat;\n var timeZone = internalSlots.timeZone || getDefaultTimeZone();\n var timeZoneData = timeZoneName[timeZone];\n if (timeZoneData && timeZoneData[f]) {\n fv = timeZoneData[f][+tm.inDST];\n }\n else {\n // Fallback to gmtFormat\n fv = offsetToGmtString(gmtFormat, hourFormat, tm.timeZoneOffset, f);\n }\n }\n else if (p === 'month') {\n fv = dataLocaleData.month[f][v - 1];\n }\n else {\n fv = dataLocaleData[p][f][v];\n }\n }\n result.push({\n type: p,\n value: fv,\n });\n }\n else if (p === 'ampm') {\n var v = tm.hour;\n var fv = void 0;\n if (v > 11) {\n fv = dataLocaleData.pm;\n }\n else {\n fv = dataLocaleData.am;\n }\n result.push({\n type: 'dayPeriod',\n value: fv,\n });\n }\n else if (p === 'relatedYear') {\n var v = tm.relatedYear;\n // @ts-ignore\n var fv = nf.format(v);\n result.push({\n // @ts-ignore TODO: Fix TS type\n type: 'relatedYear',\n value: fv,\n });\n }\n else if (p === 'yearName') {\n var v = tm.yearName;\n // @ts-ignore\n var fv = nf.format(v);\n result.push({\n // @ts-ignore TODO: Fix TS type\n type: 'yearName',\n value: fv,\n });\n }\n }\n return result;\n}\nexports.FormatDateTimePattern = FormatDateTimePattern;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ToLocalTime = void 0;\nvar ecma402_abstract_1 = require(\"@formatjs/ecma402-abstract\");\nfunction getApplicableZoneData(t, timeZone, tzData) {\n var _a;\n var zoneData = tzData[timeZone];\n // We don't have data for this so just say it's UTC\n if (!zoneData) {\n return [0, false];\n }\n var i = 0;\n var offset = 0;\n var dst = false;\n for (; i <= zoneData.length; i++) {\n if (i === zoneData.length || zoneData[i][0] * 1e3 > t) {\n ;\n _a = zoneData[i - 1], offset = _a[2], dst = _a[3];\n break;\n }\n }\n return [offset * 1e3, dst];\n}\n/**\n * https://tc39.es/ecma402/#sec-tolocaltime\n * @param t\n * @param calendar\n * @param timeZone\n */\nfunction ToLocalTime(t, calendar, timeZone, _a) {\n var tzData = _a.tzData;\n ecma402_abstract_1.invariant(ecma402_abstract_1.Type(t) === 'Number', 'invalid time');\n ecma402_abstract_1.invariant(calendar === 'gregory', 'We only support Gregory calendar right now');\n var _b = getApplicableZoneData(t, timeZone, tzData), timeZoneOffset = _b[0], inDST = _b[1];\n var tz = t + timeZoneOffset;\n var year = ecma402_abstract_1.YearFromTime(tz);\n return {\n weekday: ecma402_abstract_1.WeekDay(tz),\n era: year < 0 ? 'BC' : 'AD',\n year: year,\n relatedYear: undefined,\n yearName: undefined,\n month: ecma402_abstract_1.MonthFromTime(tz),\n day: ecma402_abstract_1.DateFromTime(tz),\n hour: ecma402_abstract_1.HourFromTime(tz),\n minute: ecma402_abstract_1.MinFromTime(tz),\n second: ecma402_abstract_1.SecFromTime(tz),\n millisecond: ecma402_abstract_1.msFromTime(tz),\n inDST: inDST,\n // IMPORTANT: Not in spec\n timeZoneOffset: timeZoneOffset,\n };\n}\nexports.ToLocalTime = ToLocalTime;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.splitRangePattern = exports.splitFallbackRangePattern = exports.parseDateTimeSkeleton = exports.processDateTimePattern = void 0;\nvar tslib_1 = require(\"tslib\");\nvar ecma402_abstract_1 = require(\"@formatjs/ecma402-abstract\");\n/**\n * https://unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * Credit: https://github.com/caridy/intl-datetimeformat-pattern/blob/master/index.js\n * with some tweaks\n */\nvar DATE_TIME_REGEX = /(?:[Eec]{1,6}|G{1,5}|[Qq]{1,5}|(?:[yYur]+|U{1,5})|[ML]{1,5}|d{1,2}|D{1,3}|F{1}|[abB]{1,5}|[hkHK]{1,2}|w{1,2}|W{1}|m{1,2}|s{1,2}|[zZOvVxX]{1,4})(?=([^']*'[^']*')*[^']*$)/g;\n// trim patterns after transformations\nvar expPatternTrimmer = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g;\nfunction matchSkeletonPattern(match, result) {\n var len = match.length;\n switch (match[0]) {\n // Era\n case 'G':\n result.era = len === 4 ? 'long' : len === 5 ? 'narrow' : 'short';\n return '{era}';\n // Year\n case 'y':\n case 'Y':\n case 'u':\n case 'U':\n case 'r':\n result.year = len === 2 ? '2-digit' : 'numeric';\n return '{year}';\n // Quarter\n case 'q':\n case 'Q':\n throw new RangeError('`w/Q` (quarter) patterns are not supported');\n // Month\n case 'M':\n case 'L':\n result.month = ['numeric', '2-digit', 'short', 'long', 'narrow'][len - 1];\n return '{month}';\n // Week\n case 'w':\n case 'W':\n throw new RangeError('`w/W` (week of year) patterns are not supported');\n case 'd':\n result.day = ['numeric', '2-digit'][len - 1];\n return '{day}';\n case 'D':\n case 'F':\n case 'g':\n result.day = 'numeric';\n return '{day}';\n // Weekday\n case 'E':\n result.weekday = len === 4 ? 'long' : len === 5 ? 'narrow' : 'short';\n return '{weekday}';\n case 'e':\n result.weekday = [\n undefined,\n undefined,\n 'short',\n 'long',\n 'narrow',\n 'short',\n ][len - 1];\n return '{weekday}';\n case 'c':\n result.weekday = [\n undefined,\n undefined,\n 'short',\n 'long',\n 'narrow',\n 'short',\n ][len - 1];\n return '{weekday}';\n // Period\n case 'a': // AM, PM\n case 'b': // am, pm, noon, midnight\n case 'B': // flexible day periods\n result.hour12 = true;\n return '{ampm}';\n // Hour\n case 'h':\n result.hour = ['numeric', '2-digit'][len - 1];\n result.hour12 = true;\n return '{hour}';\n case 'H':\n result.hour = ['numeric', '2-digit'][len - 1];\n return '{hour}';\n case 'K':\n result.hour = ['numeric', '2-digit'][len - 1];\n result.hour12 = true;\n return '{hour}';\n case 'k':\n result.hour = ['numeric', '2-digit'][len - 1];\n return '{hour}';\n case 'j':\n case 'J':\n case 'C':\n throw new RangeError('`j/J/C` (hour) patterns are not supported, use `h/H/K/k` instead');\n // Minute\n case 'm':\n result.minute = ['numeric', '2-digit'][len - 1];\n return '{minute}';\n // Second\n case 's':\n result.second = ['numeric', '2-digit'][len - 1];\n return '{second}';\n case 'S':\n case 'A':\n result.second = 'numeric';\n return '{second}';\n // Zone\n case 'z': // 1..3, 4: specific non-location format\n case 'Z': // 1..3, 4, 5: The ISO8601 varios formats\n case 'O': // 1, 4: miliseconds in day short, long\n case 'v': // 1, 4: generic non-location format\n case 'V': // 1, 2, 3, 4: time zone ID or city\n case 'X': // 1, 2, 3, 4: The ISO8601 varios formats\n case 'x': // 1, 2, 3, 4: The ISO8601 varios formats\n result.timeZoneName = len < 4 ? 'short' : 'long';\n return '{timeZoneName}';\n }\n return '';\n}\nfunction skeletonTokenToTable2(c) {\n switch (c) {\n // Era\n case 'G':\n return 'era';\n // Year\n case 'y':\n case 'Y':\n case 'u':\n case 'U':\n case 'r':\n return 'year';\n // Month\n case 'M':\n case 'L':\n return 'month';\n // Day\n case 'd':\n case 'D':\n case 'F':\n case 'g':\n return 'day';\n // Period\n case 'a': // AM, PM\n case 'b': // am, pm, noon, midnight\n case 'B': // flexible day periods\n return 'ampm';\n // Hour\n case 'h':\n case 'H':\n case 'K':\n case 'k':\n return 'hour';\n // Minute\n case 'm':\n return 'minute';\n // Second\n case 's':\n case 'S':\n case 'A':\n return 'second';\n default:\n throw new RangeError('Invalid range pattern token');\n }\n}\nfunction processDateTimePattern(pattern, result) {\n var literals = [];\n // Use skeleton to populate result, but use mapped pattern to populate pattern\n var pattern12 = pattern\n // Double apostrophe\n .replace(/'{2}/g, '{apostrophe}')\n // Apostrophe-escaped\n .replace(/'(.*?)'/g, function (_, literal) {\n literals.push(literal);\n return \"$$\" + (literals.length - 1) + \"$$\";\n })\n .replace(DATE_TIME_REGEX, function (m) { return matchSkeletonPattern(m, result || {}); });\n //Restore literals\n if (literals.length) {\n pattern12 = pattern12\n .replace(/\\$\\$(\\d+)\\$\\$/g, function (_, i) {\n return literals[+i];\n })\n .replace(/\\{apostrophe\\}/g, \"'\");\n }\n // Handle apostrophe-escaped things\n return [\n pattern12\n .replace(/([\\s\\uFEFF\\xA0])\\{ampm\\}([\\s\\uFEFF\\xA0])/, '$1')\n .replace('{ampm}', '')\n .replace(expPatternTrimmer, ''),\n pattern12,\n ];\n}\nexports.processDateTimePattern = processDateTimePattern;\n/**\n * Parse Date time skeleton into Intl.DateTimeFormatOptions\n * Ref: https://unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * @public\n * @param skeleton skeleton string\n */\nfunction parseDateTimeSkeleton(skeleton, rawPattern, rangePatterns, intervalFormatFallback) {\n if (rawPattern === void 0) { rawPattern = skeleton; }\n var result = {\n pattern: '',\n pattern12: '',\n skeleton: skeleton,\n rawPattern: rawPattern,\n rangePatterns: {},\n rangePatterns12: {},\n };\n if (rangePatterns) {\n for (var k in rangePatterns) {\n var key = skeletonTokenToTable2(k);\n var rawPattern_1 = rangePatterns[k];\n var intervalResult = {\n patternParts: [],\n };\n var _a = processDateTimePattern(rawPattern_1, intervalResult), pattern_1 = _a[0], pattern12_1 = _a[1];\n result.rangePatterns[key] = tslib_1.__assign(tslib_1.__assign({}, intervalResult), { patternParts: splitRangePattern(pattern_1) });\n result.rangePatterns12[key] = tslib_1.__assign(tslib_1.__assign({}, intervalResult), { patternParts: splitRangePattern(pattern12_1) });\n }\n }\n if (intervalFormatFallback) {\n var patternParts = splitFallbackRangePattern(intervalFormatFallback);\n result.rangePatterns.default = {\n patternParts: patternParts,\n };\n result.rangePatterns12.default = {\n patternParts: patternParts,\n };\n }\n // Process skeleton\n skeleton.replace(DATE_TIME_REGEX, function (m) { return matchSkeletonPattern(m, result); });\n var _b = processDateTimePattern(rawPattern), pattern = _b[0], pattern12 = _b[1];\n result.pattern = pattern;\n result.pattern12 = pattern12;\n return result;\n}\nexports.parseDateTimeSkeleton = parseDateTimeSkeleton;\nfunction splitFallbackRangePattern(pattern) {\n var parts = pattern.split(/(\\{[0|1]\\})/g).filter(Boolean);\n return parts.map(function (pattern) {\n switch (pattern) {\n case '{0}':\n return {\n source: ecma402_abstract_1.RangePatternType.startRange,\n pattern: pattern,\n };\n case '{1}':\n return {\n source: ecma402_abstract_1.RangePatternType.endRange,\n pattern: pattern,\n };\n default:\n return {\n source: ecma402_abstract_1.RangePatternType.shared,\n pattern: pattern,\n };\n }\n });\n}\nexports.splitFallbackRangePattern = splitFallbackRangePattern;\nfunction splitRangePattern(pattern) {\n var PART_REGEX = /\\{(.*?)\\}/g;\n // Map of part and index within the string\n var parts = {};\n var match;\n var splitIndex = 0;\n while ((match = PART_REGEX.exec(pattern))) {\n if (!(match[0] in parts)) {\n parts[match[0]] = match.index;\n }\n else {\n splitIndex = match.index;\n break;\n }\n }\n if (!splitIndex) {\n return [\n {\n source: ecma402_abstract_1.RangePatternType.startRange,\n pattern: pattern,\n },\n ];\n }\n return [\n {\n source: ecma402_abstract_1.RangePatternType.startRange,\n pattern: pattern.slice(0, splitIndex),\n },\n {\n source: ecma402_abstract_1.RangePatternType.endRange,\n pattern: pattern.slice(splitIndex),\n },\n ];\n}\nexports.splitRangePattern = splitRangePattern;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ToDateTimeOptions = void 0;\nvar ecma402_abstract_1 = require(\"@formatjs/ecma402-abstract\");\n/**\n * https://tc39.es/ecma402/#sec-todatetimeoptions\n * @param options\n * @param required\n * @param defaults\n */\nfunction ToDateTimeOptions(options, required, defaults) {\n if (options === undefined) {\n options = null;\n }\n else {\n options = ecma402_abstract_1.ToObject(options);\n }\n options = Object.create(options);\n var needDefaults = true;\n if (required === 'date' || required === 'any') {\n for (var _i = 0, _a = ['weekday', 'year', 'month', 'day']; _i < _a.length; _i++) {\n var prop = _a[_i];\n var value = options[prop];\n if (value !== undefined) {\n needDefaults = false;\n }\n }\n }\n if (required === 'time' || required === 'any') {\n for (var _b = 0, _c = [\n 'dayPeriod',\n 'hour',\n 'minute',\n 'second',\n 'fractionalSecondDigits',\n ]; _b < _c.length; _b++) {\n var prop = _c[_b];\n var value = options[prop];\n if (value !== undefined) {\n needDefaults = false;\n }\n }\n }\n if (options.dateStyle !== undefined || options.timeStyle !== undefined) {\n needDefaults = false;\n }\n if (required === 'date' && options.timeStyle) {\n throw new TypeError('Intl.DateTimeFormat date was required but timeStyle was included');\n }\n if (required === 'time' && options.dateStyle) {\n throw new TypeError('Intl.DateTimeFormat time was required but dateStyle was included');\n }\n if (needDefaults && (defaults === 'date' || defaults === 'all')) {\n for (var _d = 0, _e = ['year', 'month', 'day']; _d < _e.length; _d++) {\n var prop = _e[_d];\n options[prop] = 'numeric';\n }\n }\n if (needDefaults && (defaults === 'time' || defaults === 'all')) {\n for (var _f = 0, _g = ['hour', 'minute', 'second']; _f < _g.length; _f++) {\n var prop = _g[_f];\n options[prop] = 'numeric';\n }\n }\n return options;\n}\nexports.ToDateTimeOptions = ToDateTimeOptions;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PartitionDateTimeRangePattern = void 0;\nvar ecma402_abstract_1 = require(\"@formatjs/ecma402-abstract\");\nvar ToLocalTime_1 = require(\"./ToLocalTime\");\nvar FormatDateTimePattern_1 = require(\"./FormatDateTimePattern\");\nvar TABLE_2_FIELDS = [\n 'era',\n 'year',\n 'month',\n 'day',\n 'dayPeriod',\n 'ampm',\n 'hour',\n 'minute',\n 'second',\n 'fractionalSecondDigits',\n];\nfunction PartitionDateTimeRangePattern(dtf, x, y, implDetails) {\n x = ecma402_abstract_1.TimeClip(x);\n if (isNaN(x)) {\n throw new RangeError('Invalid start time');\n }\n y = ecma402_abstract_1.TimeClip(y);\n if (isNaN(y)) {\n throw new RangeError('Invalid end time');\n }\n /** IMPL START */\n var getInternalSlots = implDetails.getInternalSlots, tzData = implDetails.tzData;\n var internalSlots = getInternalSlots(dtf);\n /** IMPL END */\n var tm1 = ToLocalTime_1.ToLocalTime(x, \n // @ts-ignore\n internalSlots.calendar, internalSlots.timeZone, { tzData: tzData });\n var tm2 = ToLocalTime_1.ToLocalTime(y, \n // @ts-ignore\n internalSlots.calendar, internalSlots.timeZone, { tzData: tzData });\n var pattern = internalSlots.pattern, rangePatterns = internalSlots.rangePatterns;\n var rangePattern;\n var dateFieldsPracticallyEqual = true;\n var patternContainsLargerDateField = false;\n for (var _i = 0, TABLE_2_FIELDS_1 = TABLE_2_FIELDS; _i < TABLE_2_FIELDS_1.length; _i++) {\n var fieldName = TABLE_2_FIELDS_1[_i];\n if (dateFieldsPracticallyEqual && !patternContainsLargerDateField) {\n var rp = fieldName in rangePatterns ? rangePatterns[fieldName] : undefined;\n if (rangePattern !== undefined && rp === undefined) {\n patternContainsLargerDateField = true;\n }\n else {\n rangePattern = rp;\n if (fieldName === 'ampm') {\n var v1 = tm1.hour;\n var v2 = tm2.hour;\n if ((v1 > 11 && v2 < 11) || (v1 < 11 && v2 > 11)) {\n dateFieldsPracticallyEqual = false;\n }\n }\n else if (fieldName === 'dayPeriod') {\n // TODO\n }\n else if (fieldName === 'fractionalSecondDigits') {\n var fractionalSecondDigits = internalSlots.fractionalSecondDigits;\n if (fractionalSecondDigits === undefined) {\n fractionalSecondDigits = 3;\n }\n var v1 = Math.floor(tm1.millisecond * Math.pow(10, (fractionalSecondDigits - 3)));\n var v2 = Math.floor(tm2.millisecond * Math.pow(10, (fractionalSecondDigits - 3)));\n if (!ecma402_abstract_1.SameValue(v1, v2)) {\n dateFieldsPracticallyEqual = false;\n }\n }\n else {\n var v1 = tm1[fieldName];\n var v2 = tm2[fieldName];\n if (!ecma402_abstract_1.SameValue(v1, v2)) {\n dateFieldsPracticallyEqual = false;\n }\n }\n }\n }\n }\n if (dateFieldsPracticallyEqual) {\n var result_2 = FormatDateTimePattern_1.FormatDateTimePattern(dtf, ecma402_abstract_1.PartitionPattern(pattern), x, implDetails);\n for (var _a = 0, result_1 = result_2; _a < result_1.length; _a++) {\n var r = result_1[_a];\n r.source = ecma402_abstract_1.RangePatternType.shared;\n }\n return result_2;\n }\n var result = [];\n if (rangePattern === undefined) {\n rangePattern = rangePatterns.default;\n /** IMPL DETAILS */\n // Now we have to replace {0} & {1} with actual pattern\n for (var _b = 0, _c = rangePattern.patternParts; _b < _c.length; _b++) {\n var patternPart = _c[_b];\n if (patternPart.pattern === '{0}' || patternPart.pattern === '{1}') {\n patternPart.pattern = pattern;\n }\n }\n }\n for (var _d = 0, _e = rangePattern.patternParts; _d < _e.length; _d++) {\n var rangePatternPart = _e[_d];\n var source = rangePatternPart.source, pattern_1 = rangePatternPart.pattern;\n var z = void 0;\n if (source === ecma402_abstract_1.RangePatternType.startRange ||\n source === ecma402_abstract_1.RangePatternType.shared) {\n z = x;\n }\n else {\n z = y;\n }\n var patternParts = ecma402_abstract_1.PartitionPattern(pattern_1);\n var partResult = FormatDateTimePattern_1.FormatDateTimePattern(dtf, patternParts, z, implDetails);\n for (var _f = 0, partResult_1 = partResult; _f < partResult_1.length; _f++) {\n var r = partResult_1[_f];\n r.source = source;\n }\n result = result.concat(partResult);\n }\n return result;\n}\nexports.PartitionDateTimeRangePattern = PartitionDateTimeRangePattern;\n","/**\n * @license\n * Copyright 2011 Dan Vanderkam (danvdk@gmail.com)\n * MIT-licensed (http://opensource.org/licenses/MIT)\n */\n\n/**\n * @fileoverview Based on PlotKitLayout, but modified to meet the needs of\n * dygraphs.\n */\n\n/*global Dygraph:false */\n\"use strict\";\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nvar _dygraphUtils = require('./dygraph-utils');\n\nvar utils = _interopRequireWildcard(_dygraphUtils);\n\n/**\n * Creates a new DygraphLayout object.\n *\n * This class contains all the data to be charted.\n * It uses data coordinates, but also records the chart range (in data\n * coordinates) and hence is able to calculate percentage positions ('In this\n * view, Point A lies 25% down the x-axis.')\n *\n * Two things that it does not do are:\n * 1. Record pixel coordinates for anything.\n * 2. (oddly) determine anything about the layout of chart elements.\n *\n * The naming is a vestige of Dygraph's original PlotKit roots.\n *\n * @constructor\n */\nvar DygraphLayout = function DygraphLayout(dygraph) {\n this.dygraph_ = dygraph;\n /**\n * Array of points for each series.\n *\n * [series index][row index in series] = |Point| structure,\n * where series index refers to visible series only, and the\n * point index is for the reduced set of points for the current\n * zoom region (including one point just outside the window).\n * All points in the same row index share the same X value.\n *\n * @type {Array.>}\n */\n this.points = [];\n this.setNames = [];\n this.annotations = [];\n this.yAxes_ = null;\n\n // TODO(danvk): it's odd that xTicks_ and yTicks_ are inputs, but xticks and\n // yticks are outputs. Clean this up.\n this.xTicks_ = null;\n this.yTicks_ = null;\n};\n\n/**\n * Add points for a single series.\n *\n * @param {string} setname Name of the series.\n * @param {Array.} set_xy Points for the series.\n */\nDygraphLayout.prototype.addDataset = function (setname, set_xy) {\n this.points.push(set_xy);\n this.setNames.push(setname);\n};\n\n/**\n * Returns the box which the chart should be drawn in. This is the canvas's\n * box, less space needed for the axis and chart labels.\n *\n * @return {{x: number, y: number, w: number, h: number}}\n */\nDygraphLayout.prototype.getPlotArea = function () {\n return this.area_;\n};\n\n// Compute the box which the chart should be drawn in. This is the canvas's\n// box, less space needed for axis, chart labels, and other plug-ins.\n// NOTE: This should only be called by Dygraph.predraw_().\nDygraphLayout.prototype.computePlotArea = function () {\n var area = {\n // TODO(danvk): per-axis setting.\n x: 0,\n y: 0\n };\n\n area.w = this.dygraph_.width_ - area.x - this.dygraph_.getOption('rightGap');\n area.h = this.dygraph_.height_;\n\n // Let plugins reserve space.\n var e = {\n chart_div: this.dygraph_.graphDiv,\n reserveSpaceLeft: function reserveSpaceLeft(px) {\n var r = {\n x: area.x,\n y: area.y,\n w: px,\n h: area.h\n };\n area.x += px;\n area.w -= px;\n return r;\n },\n reserveSpaceRight: function reserveSpaceRight(px) {\n var r = {\n x: area.x + area.w - px,\n y: area.y,\n w: px,\n h: area.h\n };\n area.w -= px;\n return r;\n },\n reserveSpaceTop: function reserveSpaceTop(px) {\n var r = {\n x: area.x,\n y: area.y,\n w: area.w,\n h: px\n };\n area.y += px;\n area.h -= px;\n return r;\n },\n reserveSpaceBottom: function reserveSpaceBottom(px) {\n var r = {\n x: area.x,\n y: area.y + area.h - px,\n w: area.w,\n h: px\n };\n area.h -= px;\n return r;\n },\n chartRect: function chartRect() {\n return { x: area.x, y: area.y, w: area.w, h: area.h };\n }\n };\n this.dygraph_.cascadeEvents_('layout', e);\n\n this.area_ = area;\n};\n\nDygraphLayout.prototype.setAnnotations = function (ann) {\n // The Dygraph object's annotations aren't parsed. We parse them here and\n // save a copy. If there is no parser, then the user must be using raw format.\n this.annotations = [];\n var parse = this.dygraph_.getOption('xValueParser') || function (x) {\n return x;\n };\n for (var i = 0; i < ann.length; i++) {\n var a = {};\n if (!ann[i].xval && ann[i].x === undefined) {\n console.error(\"Annotations must have an 'x' property\");\n return;\n }\n if (ann[i].icon && !(ann[i].hasOwnProperty('width') && ann[i].hasOwnProperty('height'))) {\n console.error(\"Must set width and height when setting \" + \"annotation.icon property\");\n return;\n }\n utils.update(a, ann[i]);\n if (!a.xval) a.xval = parse(a.x);\n this.annotations.push(a);\n }\n};\n\nDygraphLayout.prototype.setXTicks = function (xTicks) {\n this.xTicks_ = xTicks;\n};\n\n// TODO(danvk): add this to the Dygraph object's API or move it into Layout.\nDygraphLayout.prototype.setYAxes = function (yAxes) {\n this.yAxes_ = yAxes;\n};\n\nDygraphLayout.prototype.evaluate = function () {\n this._xAxis = {};\n this._evaluateLimits();\n this._evaluateLineCharts();\n this._evaluateLineTicks();\n this._evaluateAnnotations();\n};\n\nDygraphLayout.prototype._evaluateLimits = function () {\n var xlimits = this.dygraph_.xAxisRange();\n this._xAxis.minval = xlimits[0];\n this._xAxis.maxval = xlimits[1];\n var xrange = xlimits[1] - xlimits[0];\n this._xAxis.scale = xrange !== 0 ? 1 / xrange : 1.0;\n\n if (this.dygraph_.getOptionForAxis(\"logscale\", 'x')) {\n this._xAxis.xlogrange = utils.log10(this._xAxis.maxval) - utils.log10(this._xAxis.minval);\n this._xAxis.xlogscale = this._xAxis.xlogrange !== 0 ? 1.0 / this._xAxis.xlogrange : 1.0;\n }\n for (var i = 0; i < this.yAxes_.length; i++) {\n var axis = this.yAxes_[i];\n axis.minyval = axis.computedValueRange[0];\n axis.maxyval = axis.computedValueRange[1];\n axis.yrange = axis.maxyval - axis.minyval;\n axis.yscale = axis.yrange !== 0 ? 1.0 / axis.yrange : 1.0;\n\n if (this.dygraph_.getOption(\"logscale\")) {\n axis.ylogrange = utils.log10(axis.maxyval) - utils.log10(axis.minyval);\n axis.ylogscale = axis.ylogrange !== 0 ? 1.0 / axis.ylogrange : 1.0;\n if (!isFinite(axis.ylogrange) || isNaN(axis.ylogrange)) {\n console.error('axis ' + i + ' of graph at ' + axis.g + ' can\\'t be displayed in log scale for range [' + axis.minyval + ' - ' + axis.maxyval + ']');\n }\n }\n }\n};\n\nDygraphLayout.calcXNormal_ = function (value, xAxis, logscale) {\n if (logscale) {\n return (utils.log10(value) - utils.log10(xAxis.minval)) * xAxis.xlogscale;\n } else {\n return (value - xAxis.minval) * xAxis.scale;\n }\n};\n\n/**\n * @param {DygraphAxisType} axis\n * @param {number} value\n * @param {boolean} logscale\n * @return {number}\n */\nDygraphLayout.calcYNormal_ = function (axis, value, logscale) {\n if (logscale) {\n var x = 1.0 - (utils.log10(value) - utils.log10(axis.minyval)) * axis.ylogscale;\n return isFinite(x) ? x : NaN; // shim for v8 issue; see pull request 276\n } else {\n return 1.0 - (value - axis.minyval) * axis.yscale;\n }\n};\n\nDygraphLayout.prototype._evaluateLineCharts = function () {\n var isStacked = this.dygraph_.getOption(\"stackedGraph\");\n var isLogscaleForX = this.dygraph_.getOptionForAxis(\"logscale\", 'x');\n\n for (var setIdx = 0; setIdx < this.points.length; setIdx++) {\n var points = this.points[setIdx];\n var setName = this.setNames[setIdx];\n var connectSeparated = this.dygraph_.getOption('connectSeparatedPoints', setName);\n var axis = this.dygraph_.axisPropertiesForSeries(setName);\n // TODO (konigsberg): use optionsForAxis instead.\n var logscale = this.dygraph_.attributes_.getForSeries(\"logscale\", setName);\n\n for (var j = 0; j < points.length; j++) {\n var point = points[j];\n\n // Range from 0-1 where 0 represents left and 1 represents right.\n point.x = DygraphLayout.calcXNormal_(point.xval, this._xAxis, isLogscaleForX);\n // Range from 0-1 where 0 represents top and 1 represents bottom\n var yval = point.yval;\n if (isStacked) {\n point.y_stacked = DygraphLayout.calcYNormal_(axis, point.yval_stacked, logscale);\n if (yval !== null && !isNaN(yval)) {\n yval = point.yval_stacked;\n }\n }\n if (yval === null) {\n yval = NaN;\n if (!connectSeparated) {\n point.yval = NaN;\n }\n }\n point.y = DygraphLayout.calcYNormal_(axis, yval, logscale);\n }\n\n this.dygraph_.dataHandler_.onLineEvaluated(points, axis, logscale);\n }\n};\n\nDygraphLayout.prototype._evaluateLineTicks = function () {\n var i, tick, label, pos, v, has_tick;\n this.xticks = [];\n for (i = 0; i < this.xTicks_.length; i++) {\n tick = this.xTicks_[i];\n label = tick.label;\n has_tick = !('label_v' in tick);\n v = has_tick ? tick.v : tick.label_v;\n pos = this.dygraph_.toPercentXCoord(v);\n if (pos >= 0.0 && pos < 1.0) {\n this.xticks.push({ pos: pos, label: label, has_tick: has_tick });\n }\n }\n\n this.yticks = [];\n for (i = 0; i < this.yAxes_.length; i++) {\n var axis = this.yAxes_[i];\n for (var j = 0; j < axis.ticks.length; j++) {\n tick = axis.ticks[j];\n label = tick.label;\n has_tick = !('label_v' in tick);\n v = has_tick ? tick.v : tick.label_v;\n pos = this.dygraph_.toPercentYCoord(v, i);\n if (pos > 0.0 && pos <= 1.0) {\n this.yticks.push({ axis: i, pos: pos, label: label, has_tick: has_tick });\n }\n }\n }\n};\n\nDygraphLayout.prototype._evaluateAnnotations = function () {\n // Add the annotations to the point to which they belong.\n // Make a map from (setName, xval) to annotation for quick lookups.\n var i;\n var annotations = {};\n for (i = 0; i < this.annotations.length; i++) {\n var a = this.annotations[i];\n annotations[a.xval + \",\" + a.series] = a;\n }\n\n this.annotated_points = [];\n\n // Exit the function early if there are no annotations.\n if (!this.annotations || !this.annotations.length) {\n return;\n }\n\n // TODO(antrob): loop through annotations not points.\n for (var setIdx = 0; setIdx < this.points.length; setIdx++) {\n var points = this.points[setIdx];\n for (i = 0; i < points.length; i++) {\n var p = points[i];\n var k = p.xval + \",\" + p.name;\n if (k in annotations) {\n p.annotation = annotations[k];\n this.annotated_points.push(p);\n }\n }\n }\n};\n\n/**\n * Convenience function to remove all the data sets from a graph\n */\nDygraphLayout.prototype.removeAllDatasets = function () {\n delete this.points;\n delete this.setNames;\n delete this.setPointsLengths;\n delete this.setPointsOffsets;\n this.points = [];\n this.setNames = [];\n this.setPointsLengths = [];\n this.setPointsOffsets = [];\n};\n\nexports['default'] = DygraphLayout;\nmodule.exports = exports['default'];","/**\n * @license\n * Copyright 2006 Dan Vanderkam (danvdk@gmail.com)\n * MIT-licensed (http://opensource.org/licenses/MIT)\n */\n\n/**\n * @fileoverview Based on PlotKit.CanvasRenderer, but modified to meet the\n * needs of dygraphs.\n *\n * In particular, support for:\n * - grid overlays\n * - error bars\n * - dygraphs attribute system\n */\n\n/**\n * The DygraphCanvasRenderer class does the actual rendering of the chart onto\n * a canvas. It's based on PlotKit.CanvasRenderer.\n * @param {Object} element The canvas to attach to\n * @param {Object} elementContext The 2d context of the canvas (injected so it\n * can be mocked for testing.)\n * @param {Layout} layout The DygraphLayout object for this graph.\n * @constructor\n */\n\n/*global Dygraph:false */\n\"use strict\";\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nvar _dygraphUtils = require('./dygraph-utils');\n\nvar utils = _interopRequireWildcard(_dygraphUtils);\n\nvar _dygraph = require('./dygraph');\n\nvar _dygraph2 = _interopRequireDefault(_dygraph);\n\n/**\n * @constructor\n *\n * This gets called when there are \"new points\" to chart. This is generally the\n * case when the underlying data being charted has changed. It is _not_ called\n * in the common case that the user has zoomed or is panning the view.\n *\n * The chart canvas has already been created by the Dygraph object. The\n * renderer simply gets a drawing context.\n *\n * @param {Dygraph} dygraph The chart to which this renderer belongs.\n * @param {HTMLCanvasElement} element The <canvas> DOM element on which to draw.\n * @param {CanvasRenderingContext2D} elementContext The drawing context.\n * @param {DygraphLayout} layout The chart's DygraphLayout object.\n *\n * TODO(danvk): remove the elementContext property.\n */\nvar DygraphCanvasRenderer = function DygraphCanvasRenderer(dygraph, element, elementContext, layout) {\n this.dygraph_ = dygraph;\n\n this.layout = layout;\n this.element = element;\n this.elementContext = elementContext;\n\n this.height = dygraph.height_;\n this.width = dygraph.width_;\n\n // --- check whether everything is ok before we return\n if (!utils.isCanvasSupported(this.element)) {\n throw \"Canvas is not supported.\";\n }\n\n // internal state\n this.area = layout.getPlotArea();\n\n // Set up a clipping area for the canvas (and the interaction canvas).\n // This ensures that we don't overdraw.\n var ctx = this.dygraph_.canvas_ctx_;\n ctx.beginPath();\n ctx.rect(this.area.x, this.area.y, this.area.w, this.area.h);\n ctx.clip();\n\n ctx = this.dygraph_.hidden_ctx_;\n ctx.beginPath();\n ctx.rect(this.area.x, this.area.y, this.area.w, this.area.h);\n ctx.clip();\n};\n\n/**\n * Clears out all chart content and DOM elements.\n * This is called immediately before render() on every frame, including\n * during zooms and pans.\n * @private\n */\nDygraphCanvasRenderer.prototype.clear = function () {\n this.elementContext.clearRect(0, 0, this.width, this.height);\n};\n\n/**\n * This method is responsible for drawing everything on the chart, including\n * lines, error bars, fills and axes.\n * It is called immediately after clear() on every frame, including during pans\n * and zooms.\n * @private\n */\nDygraphCanvasRenderer.prototype.render = function () {\n // attaches point.canvas{x,y}\n this._updatePoints();\n\n // actually draws the chart.\n this._renderLineChart();\n};\n\n/**\n * Returns a predicate to be used with an iterator, which will\n * iterate over points appropriately, depending on whether\n * connectSeparatedPoints is true. When it's false, the predicate will\n * skip over points with missing yVals.\n */\nDygraphCanvasRenderer._getIteratorPredicate = function (connectSeparatedPoints) {\n return connectSeparatedPoints ? DygraphCanvasRenderer._predicateThatSkipsEmptyPoints : null;\n};\n\nDygraphCanvasRenderer._predicateThatSkipsEmptyPoints = function (array, idx) {\n return array[idx].yval !== null;\n};\n\n/**\n * Draws a line with the styles passed in and calls all the drawPointCallbacks.\n * @param {Object} e The dictionary passed to the plotter function.\n * @private\n */\nDygraphCanvasRenderer._drawStyledLine = function (e, color, strokeWidth, strokePattern, drawPoints, drawPointCallback, pointSize) {\n var g = e.dygraph;\n // TODO(konigsberg): Compute attributes outside this method call.\n var stepPlot = g.getBooleanOption(\"stepPlot\", e.setName);\n\n if (!utils.isArrayLike(strokePattern)) {\n strokePattern = null;\n }\n\n var drawGapPoints = g.getBooleanOption('drawGapEdgePoints', e.setName);\n\n var points = e.points;\n var setName = e.setName;\n var iter = utils.createIterator(points, 0, points.length, DygraphCanvasRenderer._getIteratorPredicate(g.getBooleanOption(\"connectSeparatedPoints\", setName)));\n\n var stroking = strokePattern && strokePattern.length >= 2;\n\n var ctx = e.drawingContext;\n ctx.save();\n if (stroking) {\n if (ctx.setLineDash) ctx.setLineDash(strokePattern);\n }\n\n var pointsOnLine = DygraphCanvasRenderer._drawSeries(e, iter, strokeWidth, pointSize, drawPoints, drawGapPoints, stepPlot, color);\n DygraphCanvasRenderer._drawPointsOnLine(e, pointsOnLine, drawPointCallback, color, pointSize);\n\n if (stroking) {\n if (ctx.setLineDash) ctx.setLineDash([]);\n }\n\n ctx.restore();\n};\n\n/**\n * This does the actual drawing of lines on the canvas, for just one series.\n * Returns a list of [canvasx, canvasy] pairs for points for which a\n * drawPointCallback should be fired. These include isolated points, or all\n * points if drawPoints=true.\n * @param {Object} e The dictionary passed to the plotter function.\n * @private\n */\nDygraphCanvasRenderer._drawSeries = function (e, iter, strokeWidth, pointSize, drawPoints, drawGapPoints, stepPlot, color) {\n\n var prevCanvasX = null;\n var prevCanvasY = null;\n var nextCanvasY = null;\n var isIsolated; // true if this point is isolated (no line segments)\n var point; // the point being processed in the while loop\n var pointsOnLine = []; // Array of [canvasx, canvasy] pairs.\n var first = true; // the first cycle through the while loop\n\n var ctx = e.drawingContext;\n ctx.beginPath();\n ctx.strokeStyle = color;\n ctx.lineWidth = strokeWidth;\n\n // NOTE: we break the iterator's encapsulation here for about a 25% speedup.\n var arr = iter.array_;\n var limit = iter.end_;\n var predicate = iter.predicate_;\n\n for (var i = iter.start_; i < limit; i++) {\n point = arr[i];\n if (predicate) {\n while (i < limit && !predicate(arr, i)) {\n i++;\n }\n if (i == limit) break;\n point = arr[i];\n }\n\n // FIXME: The 'canvasy != canvasy' test here catches NaN values but the test\n // doesn't catch Infinity values. Could change this to\n // !isFinite(point.canvasy), but I assume it avoids isNaN for performance?\n if (point.canvasy === null || point.canvasy != point.canvasy) {\n if (stepPlot && prevCanvasX !== null) {\n // Draw a horizontal line to the start of the missing data\n ctx.moveTo(prevCanvasX, prevCanvasY);\n ctx.lineTo(point.canvasx, prevCanvasY);\n }\n prevCanvasX = prevCanvasY = null;\n } else {\n isIsolated = false;\n if (drawGapPoints || prevCanvasX === null) {\n iter.nextIdx_ = i;\n iter.next();\n nextCanvasY = iter.hasNext ? iter.peek.canvasy : null;\n\n var isNextCanvasYNullOrNaN = nextCanvasY === null || nextCanvasY != nextCanvasY;\n isIsolated = prevCanvasX === null && isNextCanvasYNullOrNaN;\n if (drawGapPoints) {\n // Also consider a point to be \"isolated\" if it's adjacent to a\n // null point, excluding the graph edges.\n if (!first && prevCanvasX === null || iter.hasNext && isNextCanvasYNullOrNaN) {\n isIsolated = true;\n }\n }\n }\n\n if (prevCanvasX !== null) {\n if (strokeWidth) {\n if (stepPlot) {\n ctx.moveTo(prevCanvasX, prevCanvasY);\n ctx.lineTo(point.canvasx, prevCanvasY);\n }\n\n ctx.lineTo(point.canvasx, point.canvasy);\n }\n } else {\n ctx.moveTo(point.canvasx, point.canvasy);\n }\n if (drawPoints || isIsolated) {\n pointsOnLine.push([point.canvasx, point.canvasy, point.idx]);\n }\n prevCanvasX = point.canvasx;\n prevCanvasY = point.canvasy;\n }\n first = false;\n }\n ctx.stroke();\n return pointsOnLine;\n};\n\n/**\n * This fires the drawPointCallback functions, which draw dots on the points by\n * default. This gets used when the \"drawPoints\" option is set, or when there\n * are isolated points.\n * @param {Object} e The dictionary passed to the plotter function.\n * @private\n */\nDygraphCanvasRenderer._drawPointsOnLine = function (e, pointsOnLine, drawPointCallback, color, pointSize) {\n var ctx = e.drawingContext;\n for (var idx = 0; idx < pointsOnLine.length; idx++) {\n var cb = pointsOnLine[idx];\n ctx.save();\n drawPointCallback.call(e.dygraph, e.dygraph, e.setName, ctx, cb[0], cb[1], color, pointSize, cb[2]);\n ctx.restore();\n }\n};\n\n/**\n * Attaches canvas coordinates to the points array.\n * @private\n */\nDygraphCanvasRenderer.prototype._updatePoints = function () {\n // Update Points\n // TODO(danvk): here\n //\n // TODO(bhs): this loop is a hot-spot for high-point-count charts. These\n // transformations can be pushed into the canvas via linear transformation\n // matrices.\n // NOTE(danvk): this is trickier than it sounds at first. The transformation\n // needs to be done before the .moveTo() and .lineTo() calls, but must be\n // undone before the .stroke() call to ensure that the stroke width is\n // unaffected. An alternative is to reduce the stroke width in the\n // transformed coordinate space, but you can't specify different values for\n // each dimension (as you can with .scale()). The speedup here is ~12%.\n var sets = this.layout.points;\n for (var i = sets.length; i--;) {\n var points = sets[i];\n for (var j = points.length; j--;) {\n var point = points[j];\n point.canvasx = this.area.w * point.x + this.area.x;\n point.canvasy = this.area.h * point.y + this.area.y;\n }\n }\n};\n\n/**\n * Add canvas Actually draw the lines chart, including error bars.\n *\n * This function can only be called if DygraphLayout's points array has been\n * updated with canvas{x,y} attributes, i.e. by\n * DygraphCanvasRenderer._updatePoints.\n *\n * @param {string=} opt_seriesName when specified, only that series will\n * be drawn. (This is used for expedited redrawing with highlightSeriesOpts)\n * @param {CanvasRenderingContext2D} opt_ctx when specified, the drawing\n * context. However, lines are typically drawn on the object's\n * elementContext.\n * @private\n */\nDygraphCanvasRenderer.prototype._renderLineChart = function (opt_seriesName, opt_ctx) {\n var ctx = opt_ctx || this.elementContext;\n var i;\n\n var sets = this.layout.points;\n var setNames = this.layout.setNames;\n var setName;\n\n this.colors = this.dygraph_.colorsMap_;\n\n // Determine which series have specialized plotters.\n var plotter_attr = this.dygraph_.getOption(\"plotter\");\n var plotters = plotter_attr;\n if (!utils.isArrayLike(plotters)) {\n plotters = [plotters];\n }\n\n var setPlotters = {}; // series name -> plotter fn.\n for (i = 0; i < setNames.length; i++) {\n setName = setNames[i];\n var setPlotter = this.dygraph_.getOption(\"plotter\", setName);\n if (setPlotter == plotter_attr) continue; // not specialized.\n\n setPlotters[setName] = setPlotter;\n }\n\n for (i = 0; i < plotters.length; i++) {\n var plotter = plotters[i];\n var is_last = i == plotters.length - 1;\n\n for (var j = 0; j < sets.length; j++) {\n setName = setNames[j];\n if (opt_seriesName && setName != opt_seriesName) continue;\n\n var points = sets[j];\n\n // Only throw in the specialized plotters on the last iteration.\n var p = plotter;\n if (setName in setPlotters) {\n if (is_last) {\n p = setPlotters[setName];\n } else {\n // Don't use the standard plotters in this case.\n continue;\n }\n }\n\n var color = this.colors[setName];\n var strokeWidth = this.dygraph_.getOption(\"strokeWidth\", setName);\n\n ctx.save();\n ctx.strokeStyle = color;\n ctx.lineWidth = strokeWidth;\n p({\n points: points,\n setName: setName,\n drawingContext: ctx,\n color: color,\n strokeWidth: strokeWidth,\n dygraph: this.dygraph_,\n axis: this.dygraph_.axisPropertiesForSeries(setName),\n plotArea: this.area,\n seriesIndex: j,\n seriesCount: sets.length,\n singleSeriesName: opt_seriesName,\n allSeriesPoints: sets\n });\n ctx.restore();\n }\n }\n};\n\n/**\n * Standard plotters. These may be used by clients via Dygraph.Plotters.\n * See comments there for more details.\n */\nDygraphCanvasRenderer._Plotters = {\n linePlotter: function linePlotter(e) {\n DygraphCanvasRenderer._linePlotter(e);\n },\n\n fillPlotter: function fillPlotter(e) {\n DygraphCanvasRenderer._fillPlotter(e);\n },\n\n errorPlotter: function errorPlotter(e) {\n DygraphCanvasRenderer._errorPlotter(e);\n }\n};\n\n/**\n * Plotter which draws the central lines for a series.\n * @private\n */\nDygraphCanvasRenderer._linePlotter = function (e) {\n var g = e.dygraph;\n var setName = e.setName;\n var strokeWidth = e.strokeWidth;\n\n // TODO(danvk): Check if there's any performance impact of just calling\n // getOption() inside of _drawStyledLine. Passing in so many parameters makes\n // this code a bit nasty.\n var borderWidth = g.getNumericOption(\"strokeBorderWidth\", setName);\n var drawPointCallback = g.getOption(\"drawPointCallback\", setName) || utils.Circles.DEFAULT;\n var strokePattern = g.getOption(\"strokePattern\", setName);\n var drawPoints = g.getBooleanOption(\"drawPoints\", setName);\n var pointSize = g.getNumericOption(\"pointSize\", setName);\n\n if (borderWidth && strokeWidth) {\n DygraphCanvasRenderer._drawStyledLine(e, g.getOption(\"strokeBorderColor\", setName), strokeWidth + 2 * borderWidth, strokePattern, drawPoints, drawPointCallback, pointSize);\n }\n\n DygraphCanvasRenderer._drawStyledLine(e, e.color, strokeWidth, strokePattern, drawPoints, drawPointCallback, pointSize);\n};\n\n/**\n * Draws the shaded error bars/confidence intervals for each series.\n * This happens before the center lines are drawn, since the center lines\n * need to be drawn on top of the error bars for all series.\n * @private\n */\nDygraphCanvasRenderer._errorPlotter = function (e) {\n var g = e.dygraph;\n var setName = e.setName;\n var errorBars = g.getBooleanOption(\"errorBars\") || g.getBooleanOption(\"customBars\");\n if (!errorBars) return;\n\n var fillGraph = g.getBooleanOption(\"fillGraph\", setName);\n if (fillGraph) {\n console.warn(\"Can't use fillGraph option with error bars\");\n }\n\n var ctx = e.drawingContext;\n var color = e.color;\n var fillAlpha = g.getNumericOption('fillAlpha', setName);\n var stepPlot = g.getBooleanOption(\"stepPlot\", setName);\n var points = e.points;\n\n var iter = utils.createIterator(points, 0, points.length, DygraphCanvasRenderer._getIteratorPredicate(g.getBooleanOption(\"connectSeparatedPoints\", setName)));\n\n var newYs;\n\n // setup graphics context\n var prevX = NaN;\n var prevY = NaN;\n var prevYs = [-1, -1];\n // should be same color as the lines but only 15% opaque.\n var rgb = utils.toRGB_(color);\n var err_color = 'rgba(' + rgb.r + ',' + rgb.g + ',' + rgb.b + ',' + fillAlpha + ')';\n ctx.fillStyle = err_color;\n ctx.beginPath();\n\n var isNullUndefinedOrNaN = function isNullUndefinedOrNaN(x) {\n return x === null || x === undefined || isNaN(x);\n };\n\n while (iter.hasNext) {\n var point = iter.next();\n if (!stepPlot && isNullUndefinedOrNaN(point.y) || stepPlot && !isNaN(prevY) && isNullUndefinedOrNaN(prevY)) {\n prevX = NaN;\n continue;\n }\n\n newYs = [point.y_bottom, point.y_top];\n if (stepPlot) {\n prevY = point.y;\n }\n\n // The documentation specifically disallows nulls inside the point arrays,\n // but in case it happens we should do something sensible.\n if (isNaN(newYs[0])) newYs[0] = point.y;\n if (isNaN(newYs[1])) newYs[1] = point.y;\n\n newYs[0] = e.plotArea.h * newYs[0] + e.plotArea.y;\n newYs[1] = e.plotArea.h * newYs[1] + e.plotArea.y;\n if (!isNaN(prevX)) {\n if (stepPlot) {\n ctx.moveTo(prevX, prevYs[0]);\n ctx.lineTo(point.canvasx, prevYs[0]);\n ctx.lineTo(point.canvasx, prevYs[1]);\n } else {\n ctx.moveTo(prevX, prevYs[0]);\n ctx.lineTo(point.canvasx, newYs[0]);\n ctx.lineTo(point.canvasx, newYs[1]);\n }\n ctx.lineTo(prevX, prevYs[1]);\n ctx.closePath();\n }\n prevYs = newYs;\n prevX = point.canvasx;\n }\n ctx.fill();\n};\n\n/**\n * Proxy for CanvasRenderingContext2D which drops moveTo/lineTo calls which are\n * superfluous. It accumulates all movements which haven't changed the x-value\n * and only applies the two with the most extreme y-values.\n *\n * Calls to lineTo/moveTo must have non-decreasing x-values.\n */\nDygraphCanvasRenderer._fastCanvasProxy = function (context) {\n var pendingActions = []; // array of [type, x, y] tuples\n var lastRoundedX = null;\n var lastFlushedX = null;\n\n var LINE_TO = 1,\n MOVE_TO = 2;\n\n var actionCount = 0; // number of moveTos and lineTos passed to context.\n\n // Drop superfluous motions\n // Assumes all pendingActions have the same (rounded) x-value.\n var compressActions = function compressActions(opt_losslessOnly) {\n if (pendingActions.length <= 1) return;\n\n // Lossless compression: drop inconsequential moveTos.\n for (var i = pendingActions.length - 1; i > 0; i--) {\n var action = pendingActions[i];\n if (action[0] == MOVE_TO) {\n var prevAction = pendingActions[i - 1];\n if (prevAction[1] == action[1] && prevAction[2] == action[2]) {\n pendingActions.splice(i, 1);\n }\n }\n }\n\n // Lossless compression: ... drop consecutive moveTos ...\n for (var i = 0; i < pendingActions.length - 1;) /* incremented internally */{\n var action = pendingActions[i];\n if (action[0] == MOVE_TO && pendingActions[i + 1][0] == MOVE_TO) {\n pendingActions.splice(i, 1);\n } else {\n i++;\n }\n }\n\n // Lossy compression: ... drop all but the extreme y-values ...\n if (pendingActions.length > 2 && !opt_losslessOnly) {\n // keep an initial moveTo, but drop all others.\n var startIdx = 0;\n if (pendingActions[0][0] == MOVE_TO) startIdx++;\n var minIdx = null,\n maxIdx = null;\n for (var i = startIdx; i < pendingActions.length; i++) {\n var action = pendingActions[i];\n if (action[0] != LINE_TO) continue;\n if (minIdx === null && maxIdx === null) {\n minIdx = i;\n maxIdx = i;\n } else {\n var y = action[2];\n if (y < pendingActions[minIdx][2]) {\n minIdx = i;\n } else if (y > pendingActions[maxIdx][2]) {\n maxIdx = i;\n }\n }\n }\n var minAction = pendingActions[minIdx],\n maxAction = pendingActions[maxIdx];\n pendingActions.splice(startIdx, pendingActions.length - startIdx);\n if (minIdx < maxIdx) {\n pendingActions.push(minAction);\n pendingActions.push(maxAction);\n } else if (minIdx > maxIdx) {\n pendingActions.push(maxAction);\n pendingActions.push(minAction);\n } else {\n pendingActions.push(minAction);\n }\n }\n };\n\n var flushActions = function flushActions(opt_noLossyCompression) {\n compressActions(opt_noLossyCompression);\n for (var i = 0, len = pendingActions.length; i < len; i++) {\n var action = pendingActions[i];\n if (action[0] == LINE_TO) {\n context.lineTo(action[1], action[2]);\n } else if (action[0] == MOVE_TO) {\n context.moveTo(action[1], action[2]);\n }\n }\n if (pendingActions.length) {\n lastFlushedX = pendingActions[pendingActions.length - 1][1];\n }\n actionCount += pendingActions.length;\n pendingActions = [];\n };\n\n var addAction = function addAction(action, x, y) {\n var rx = Math.round(x);\n if (lastRoundedX === null || rx != lastRoundedX) {\n // if there are large gaps on the x-axis, it's essential to keep the\n // first and last point as well.\n var hasGapOnLeft = lastRoundedX - lastFlushedX > 1,\n hasGapOnRight = rx - lastRoundedX > 1,\n hasGap = hasGapOnLeft || hasGapOnRight;\n flushActions(hasGap);\n lastRoundedX = rx;\n }\n pendingActions.push([action, x, y]);\n };\n\n return {\n moveTo: function moveTo(x, y) {\n addAction(MOVE_TO, x, y);\n },\n lineTo: function lineTo(x, y) {\n addAction(LINE_TO, x, y);\n },\n\n // for major operations like stroke/fill, we skip compression to ensure\n // that there are no artifacts at the right edge.\n stroke: function stroke() {\n flushActions(true);context.stroke();\n },\n fill: function fill() {\n flushActions(true);context.fill();\n },\n beginPath: function beginPath() {\n flushActions(true);context.beginPath();\n },\n closePath: function closePath() {\n flushActions(true);context.closePath();\n },\n\n _count: function _count() {\n return actionCount;\n }\n };\n};\n\n/**\n * Draws the shaded regions when \"fillGraph\" is set. Not to be confused with\n * error bars.\n *\n * For stacked charts, it's more convenient to handle all the series\n * simultaneously. So this plotter plots all the points on the first series\n * it's asked to draw, then ignores all the other series.\n *\n * @private\n */\nDygraphCanvasRenderer._fillPlotter = function (e) {\n // Skip if we're drawing a single series for interactive highlight overlay.\n if (e.singleSeriesName) return;\n\n // We'll handle all the series at once, not one-by-one.\n if (e.seriesIndex !== 0) return;\n\n var g = e.dygraph;\n var setNames = g.getLabels().slice(1); // remove x-axis\n\n // getLabels() includes names for invisible series, which are not included in\n // allSeriesPoints. We remove those to make the two match.\n // TODO(danvk): provide a simpler way to get this information.\n for (var i = setNames.length; i >= 0; i--) {\n if (!g.visibility()[i]) setNames.splice(i, 1);\n }\n\n var anySeriesFilled = (function () {\n for (var i = 0; i < setNames.length; i++) {\n if (g.getBooleanOption(\"fillGraph\", setNames[i])) return true;\n }\n return false;\n })();\n\n if (!anySeriesFilled) return;\n\n var area = e.plotArea;\n var sets = e.allSeriesPoints;\n var setCount = sets.length;\n\n var stackedGraph = g.getBooleanOption(\"stackedGraph\");\n var colors = g.getColors();\n\n // For stacked graphs, track the baseline for filling.\n //\n // The filled areas below graph lines are trapezoids with two\n // vertical edges. The top edge is the line segment being drawn, and\n // the baseline is the bottom edge. Each baseline corresponds to the\n // top line segment from the previous stacked line. In the case of\n // step plots, the trapezoids are rectangles.\n var baseline = {};\n var currBaseline;\n var prevStepPlot; // for different line drawing modes (line/step) per series\n\n // Helper function to trace a line back along the baseline.\n var traceBackPath = function traceBackPath(ctx, baselineX, baselineY, pathBack) {\n ctx.lineTo(baselineX, baselineY);\n if (stackedGraph) {\n for (var i = pathBack.length - 1; i >= 0; i--) {\n var pt = pathBack[i];\n ctx.lineTo(pt[0], pt[1]);\n }\n }\n };\n\n // process sets in reverse order (needed for stacked graphs)\n for (var setIdx = setCount - 1; setIdx >= 0; setIdx--) {\n var ctx = e.drawingContext;\n var setName = setNames[setIdx];\n if (!g.getBooleanOption('fillGraph', setName)) continue;\n\n var fillAlpha = g.getNumericOption('fillAlpha', setName);\n var stepPlot = g.getBooleanOption('stepPlot', setName);\n var color = colors[setIdx];\n var axis = g.axisPropertiesForSeries(setName);\n var axisY = 1.0 + axis.minyval * axis.yscale;\n if (axisY < 0.0) axisY = 0.0;else if (axisY > 1.0) axisY = 1.0;\n axisY = area.h * axisY + area.y;\n\n var points = sets[setIdx];\n var iter = utils.createIterator(points, 0, points.length, DygraphCanvasRenderer._getIteratorPredicate(g.getBooleanOption(\"connectSeparatedPoints\", setName)));\n\n // setup graphics context\n var prevX = NaN;\n var prevYs = [-1, -1];\n var newYs;\n // should be same color as the lines but only 15% opaque.\n var rgb = utils.toRGB_(color);\n var err_color = 'rgba(' + rgb.r + ',' + rgb.g + ',' + rgb.b + ',' + fillAlpha + ')';\n ctx.fillStyle = err_color;\n ctx.beginPath();\n var last_x,\n is_first = true;\n\n // If the point density is high enough, dropping segments on their way to\n // the canvas justifies the overhead of doing so.\n if (points.length > 2 * g.width_ || _dygraph2['default'].FORCE_FAST_PROXY) {\n ctx = DygraphCanvasRenderer._fastCanvasProxy(ctx);\n }\n\n // For filled charts, we draw points from left to right, then back along\n // the x-axis to complete a shape for filling.\n // For stacked plots, this \"back path\" is a more complex shape. This array\n // stores the [x, y] values needed to trace that shape.\n var pathBack = [];\n\n // TODO(danvk): there are a lot of options at play in this loop.\n // The logic would be much clearer if some (e.g. stackGraph and\n // stepPlot) were split off into separate sub-plotters.\n var point;\n while (iter.hasNext) {\n point = iter.next();\n if (!utils.isOK(point.y) && !stepPlot) {\n traceBackPath(ctx, prevX, prevYs[1], pathBack);\n pathBack = [];\n prevX = NaN;\n if (point.y_stacked !== null && !isNaN(point.y_stacked)) {\n baseline[point.canvasx] = area.h * point.y_stacked + area.y;\n }\n continue;\n }\n if (stackedGraph) {\n if (!is_first && last_x == point.xval) {\n continue;\n } else {\n is_first = false;\n last_x = point.xval;\n }\n\n currBaseline = baseline[point.canvasx];\n var lastY;\n if (currBaseline === undefined) {\n lastY = axisY;\n } else {\n if (prevStepPlot) {\n lastY = currBaseline[0];\n } else {\n lastY = currBaseline;\n }\n }\n newYs = [point.canvasy, lastY];\n\n if (stepPlot) {\n // Step plots must keep track of the top and bottom of\n // the baseline at each point.\n if (prevYs[0] === -1) {\n baseline[point.canvasx] = [point.canvasy, axisY];\n } else {\n baseline[point.canvasx] = [point.canvasy, prevYs[0]];\n }\n } else {\n baseline[point.canvasx] = point.canvasy;\n }\n } else {\n if (isNaN(point.canvasy) && stepPlot) {\n newYs = [area.y + area.h, axisY];\n } else {\n newYs = [point.canvasy, axisY];\n }\n }\n if (!isNaN(prevX)) {\n // Move to top fill point\n if (stepPlot) {\n ctx.lineTo(point.canvasx, prevYs[0]);\n ctx.lineTo(point.canvasx, newYs[0]);\n } else {\n ctx.lineTo(point.canvasx, newYs[0]);\n }\n\n // Record the baseline for the reverse path.\n if (stackedGraph) {\n pathBack.push([prevX, prevYs[1]]);\n if (prevStepPlot && currBaseline) {\n // Draw to the bottom of the baseline\n pathBack.push([point.canvasx, currBaseline[1]]);\n } else {\n pathBack.push([point.canvasx, newYs[1]]);\n }\n }\n } else {\n ctx.moveTo(point.canvasx, newYs[1]);\n ctx.lineTo(point.canvasx, newYs[0]);\n }\n prevYs = newYs;\n prevX = point.canvasx;\n }\n prevStepPlot = stepPlot;\n if (newYs && point) {\n traceBackPath(ctx, point.canvasx, newYs[1], pathBack);\n pathBack = [];\n }\n ctx.fill();\n }\n};\n\nexports['default'] = DygraphCanvasRenderer;\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nvar _dygraphTickers = require('./dygraph-tickers');\n\nvar DygraphTickers = _interopRequireWildcard(_dygraphTickers);\n\nvar _dygraphInteractionModel = require('./dygraph-interaction-model');\n\nvar _dygraphInteractionModel2 = _interopRequireDefault(_dygraphInteractionModel);\n\nvar _dygraphCanvas = require('./dygraph-canvas');\n\nvar _dygraphCanvas2 = _interopRequireDefault(_dygraphCanvas);\n\nvar _dygraphUtils = require('./dygraph-utils');\n\nvar utils = _interopRequireWildcard(_dygraphUtils);\n\n// Default attribute values.\nvar DEFAULT_ATTRS = {\n highlightCircleSize: 3,\n highlightSeriesOpts: null,\n highlightSeriesBackgroundAlpha: 0.5,\n highlightSeriesBackgroundColor: 'rgb(255, 255, 255)',\n\n labelsSeparateLines: false,\n labelsShowZeroValues: true,\n labelsKMB: false,\n labelsKMG2: false,\n showLabelsOnHighlight: true,\n\n digitsAfterDecimal: 2,\n maxNumberWidth: 6,\n sigFigs: null,\n\n strokeWidth: 1.0,\n strokeBorderWidth: 0,\n strokeBorderColor: \"white\",\n\n axisTickSize: 3,\n axisLabelFontSize: 14,\n rightGap: 5,\n\n showRoller: false,\n xValueParser: undefined,\n\n delimiter: ',',\n\n sigma: 2.0,\n errorBars: false,\n fractions: false,\n wilsonInterval: true, // only relevant if fractions is true\n customBars: false,\n fillGraph: false,\n fillAlpha: 0.15,\n connectSeparatedPoints: false,\n\n stackedGraph: false,\n stackedGraphNaNFill: 'all',\n hideOverlayOnMouseOut: true,\n\n legend: 'onmouseover',\n stepPlot: false,\n xRangePad: 0,\n yRangePad: null,\n drawAxesAtZero: false,\n\n // Sizes of the various chart labels.\n titleHeight: 28,\n xLabelHeight: 18,\n yLabelWidth: 18,\n\n axisLineColor: \"black\",\n axisLineWidth: 0.3,\n gridLineWidth: 0.3,\n axisLabelWidth: 50,\n gridLineColor: \"rgb(128,128,128)\",\n\n interactionModel: _dygraphInteractionModel2['default'].defaultModel,\n animatedZooms: false, // (for now)\n\n // Range selector options\n showRangeSelector: false,\n rangeSelectorHeight: 40,\n rangeSelectorPlotStrokeColor: \"#808FAB\",\n rangeSelectorPlotFillGradientColor: \"white\",\n rangeSelectorPlotFillColor: \"#A7B1C4\",\n rangeSelectorBackgroundStrokeColor: \"gray\",\n rangeSelectorBackgroundLineWidth: 1,\n rangeSelectorPlotLineWidth: 1.5,\n rangeSelectorForegroundStrokeColor: \"black\",\n rangeSelectorForegroundLineWidth: 1,\n rangeSelectorAlpha: 0.6,\n showInRangeSelector: null,\n\n // The ordering here ensures that central lines always appear above any\n // fill bars/error bars.\n plotter: [_dygraphCanvas2['default']._fillPlotter, _dygraphCanvas2['default']._errorPlotter, _dygraphCanvas2['default']._linePlotter],\n\n plugins: [],\n\n // per-axis options\n axes: {\n x: {\n pixelsPerLabel: 70,\n axisLabelWidth: 60,\n axisLabelFormatter: utils.dateAxisLabelFormatter,\n valueFormatter: utils.dateValueFormatter,\n drawGrid: true,\n drawAxis: true,\n independentTicks: true,\n ticker: DygraphTickers.dateTicker\n },\n y: {\n axisLabelWidth: 50,\n pixelsPerLabel: 30,\n valueFormatter: utils.numberValueFormatter,\n axisLabelFormatter: utils.numberAxisLabelFormatter,\n drawGrid: true,\n drawAxis: true,\n independentTicks: true,\n ticker: DygraphTickers.numericTicks\n },\n y2: {\n axisLabelWidth: 50,\n pixelsPerLabel: 30,\n valueFormatter: utils.numberValueFormatter,\n axisLabelFormatter: utils.numberAxisLabelFormatter,\n drawAxis: true, // only applies when there are two axes of data.\n drawGrid: false,\n independentTicks: false,\n ticker: DygraphTickers.numericTicks\n }\n }\n};\n\nexports['default'] = DEFAULT_ATTRS;\nmodule.exports = exports['default'];","/**\n * @license\n * Copyright 2011 Dan Vanderkam (danvdk@gmail.com)\n * MIT-licensed (http://opensource.org/licenses/MIT)\n */\n\n\"use strict\";\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar OPTIONS_REFERENCE = null;\n\n// For \"production\" code, this gets removed by uglifyjs.\nif (typeof process !== 'undefined') {\n if (process.env.NODE_ENV != 'production') {\n\n // NOTE: in addition to parsing as JS, this snippet is expected to be valid\n // JSON. This assumption cannot be checked in JS, but it will be checked when\n // documentation is generated by the generate-documentation.py script. For the\n // most part, this just means that you should always use double quotes.\n OPTIONS_REFERENCE = // \n {\n \"xValueParser\": {\n \"default\": \"parseFloat() or Date.parse()*\",\n \"labels\": [\"CSV parsing\"],\n \"type\": \"function(str) -> number\",\n \"description\": \"A function which parses x-values (i.e. the dependent series). Must return a number, even when the values are dates. In this case, millis since epoch are used. This is used primarily for parsing CSV data. *=Dygraphs is slightly more accepting in the dates which it will parse. See code for details.\"\n },\n \"stackedGraph\": {\n \"default\": \"false\",\n \"labels\": [\"Data Line display\"],\n \"type\": \"boolean\",\n \"description\": \"If set, stack series on top of one another rather than drawing them independently. The first series specified in the input data will wind up on top of the chart and the last will be on bottom. NaN values are drawn as white areas without a line on top, see stackedGraphNaNFill for details.\"\n },\n \"stackedGraphNaNFill\": {\n \"default\": \"all\",\n \"labels\": [\"Data Line display\"],\n \"type\": \"string\",\n \"description\": \"Controls handling of NaN values inside a stacked graph. NaN values are interpolated/extended for stacking purposes, but the actual point value remains NaN in the legend display. Valid option values are \\\"all\\\" (interpolate internally, repeat leftmost and rightmost value as needed), \\\"inside\\\" (interpolate internally only, use zero outside leftmost and rightmost value), and \\\"none\\\" (treat NaN as zero everywhere).\"\n },\n \"pointSize\": {\n \"default\": \"1\",\n \"labels\": [\"Data Line display\"],\n \"type\": \"integer\",\n \"description\": \"The size of the dot to draw on each point in pixels (see drawPoints). A dot is always drawn when a point is \\\"isolated\\\", i.e. there is a missing point on either side of it. This also controls the size of those dots.\"\n },\n \"drawPoints\": {\n \"default\": \"false\",\n \"labels\": [\"Data Line display\"],\n \"type\": \"boolean\",\n \"description\": \"Draw a small dot at each point, in addition to a line going through the point. This makes the individual data points easier to see, but can increase visual clutter in the chart. The small dot can be replaced with a custom rendering by supplying a drawPointCallback.\"\n },\n \"drawGapEdgePoints\": {\n \"default\": \"false\",\n \"labels\": [\"Data Line display\"],\n \"type\": \"boolean\",\n \"description\": \"Draw points at the edges of gaps in the data. This improves visibility of small data segments or other data irregularities.\"\n },\n \"drawPointCallback\": {\n \"default\": \"null\",\n \"labels\": [\"Data Line display\"],\n \"type\": \"function(g, seriesName, canvasContext, cx, cy, color, pointSize)\",\n \"parameters\": [[\"g\", \"the reference graph\"], [\"seriesName\", \"the name of the series\"], [\"canvasContext\", \"the canvas to draw on\"], [\"cx\", \"center x coordinate\"], [\"cy\", \"center y coordinate\"], [\"color\", \"series color\"], [\"pointSize\", \"the radius of the image.\"], [\"idx\", \"the row-index of the point in the data.\"]],\n \"description\": \"Draw a custom item when drawPoints is enabled. Default is a small dot matching the series color. This method should constrain drawing to within pointSize pixels from (cx, cy). Also see drawHighlightPointCallback\"\n },\n \"height\": {\n \"default\": \"320\",\n \"labels\": [\"Overall display\"],\n \"type\": \"integer\",\n \"description\": \"Height, in pixels, of the chart. If the container div has been explicitly sized, this will be ignored.\"\n },\n \"zoomCallback\": {\n \"default\": \"null\",\n \"labels\": [\"Callbacks\"],\n \"type\": \"function(minDate, maxDate, yRanges)\",\n \"parameters\": [[\"minDate\", \"milliseconds since epoch\"], [\"maxDate\", \"milliseconds since epoch.\"], [\"yRanges\", \"is an array of [bottom, top] pairs, one for each y-axis.\"]],\n \"description\": \"A function to call when the zoom window is changed (either by zooming in or out). When animatedZooms is set, zoomCallback is called once at the end of the transition (it will not be called for intermediate frames).\"\n },\n \"pointClickCallback\": {\n \"snippet\": \"function(e, point){
  alert(point);
}\",\n \"default\": \"null\",\n \"labels\": [\"Callbacks\", \"Interactive Elements\"],\n \"type\": \"function(e, point)\",\n \"parameters\": [[\"e\", \"the event object for the click\"], [\"point\", \"the point that was clicked See Point properties for details\"]],\n \"description\": \"A function to call when a data point is clicked. and the point that was clicked.\"\n },\n \"color\": {\n \"default\": \"(see description)\",\n \"labels\": [\"Data Series Colors\"],\n \"type\": \"string\",\n \"example\": \"red\",\n \"description\": \"A per-series color definition. Used in conjunction with, and overrides, the colors option.\"\n },\n \"colors\": {\n \"default\": \"(see description)\",\n \"labels\": [\"Data Series Colors\"],\n \"type\": \"array\",\n \"example\": \"['red', '#00FF00']\",\n \"description\": \"List of colors for the data series. These can be of the form \\\"#AABBCC\\\" or \\\"rgb(255,100,200)\\\" or \\\"yellow\\\", etc. If not specified, equally-spaced points around a color wheel are used. Overridden by the 'color' option.\"\n },\n \"connectSeparatedPoints\": {\n \"default\": \"false\",\n \"labels\": [\"Data Line display\"],\n \"type\": \"boolean\",\n \"description\": \"Usually, when Dygraphs encounters a missing value in a data series, it interprets this as a gap and draws it as such. If, instead, the missing values represents an x-value for which only a different series has data, then you'll want to connect the dots by setting this to true. To explicitly include a gap with this option set, use a value of NaN.\"\n },\n \"highlightCallback\": {\n \"default\": \"null\",\n \"labels\": [\"Callbacks\"],\n \"type\": \"function(event, x, points, row, seriesName)\",\n \"description\": \"When set, this callback gets called every time a new point is highlighted.\",\n \"parameters\": [[\"event\", \"the JavaScript mousemove event\"], [\"x\", \"the x-coordinate of the highlighted points\"], [\"points\", \"an array of highlighted points: [ {name: 'series', yval: y-value}, … ]\"], [\"row\", \"integer index of the highlighted row in the data table, starting from 0\"], [\"seriesName\", \"name of the highlighted series, only present if highlightSeriesOpts is set.\"]]\n },\n \"drawHighlightPointCallback\": {\n \"default\": \"null\",\n \"labels\": [\"Data Line display\"],\n \"type\": \"function(g, seriesName, canvasContext, cx, cy, color, pointSize)\",\n \"parameters\": [[\"g\", \"the reference graph\"], [\"seriesName\", \"the name of the series\"], [\"canvasContext\", \"the canvas to draw on\"], [\"cx\", \"center x coordinate\"], [\"cy\", \"center y coordinate\"], [\"color\", \"series color\"], [\"pointSize\", \"the radius of the image.\"], [\"idx\", \"the row-index of the point in the data.\"]],\n \"description\": \"Draw a custom item when a point is highlighted. Default is a small dot matching the series color. This method should constrain drawing to within pointSize pixels from (cx, cy) Also see drawPointCallback\"\n },\n \"highlightSeriesOpts\": {\n \"default\": \"null\",\n \"labels\": [\"Interactive Elements\"],\n \"type\": \"Object\",\n \"description\": \"When set, the options from this object are applied to the timeseries closest to the mouse pointer for interactive highlighting. See also 'highlightCallback'. Example: highlightSeriesOpts: { strokeWidth: 3 }.\"\n },\n \"highlightSeriesBackgroundAlpha\": {\n \"default\": \"0.5\",\n \"labels\": [\"Interactive Elements\"],\n \"type\": \"float\",\n \"description\": \"Fade the background while highlighting series. 1=fully visible background (disable fading), 0=hiddden background (show highlighted series only).\"\n },\n \"highlightSeriesBackgroundColor\": {\n \"default\": \"rgb(255, 255, 255)\",\n \"labels\": [\"Interactive Elements\"],\n \"type\": \"string\",\n \"description\": \"Sets the background color used to fade out the series in conjunction with 'highlightSeriesBackgroundAlpha'.\"\n },\n \"includeZero\": {\n \"default\": \"false\",\n \"labels\": [\"Axis display\"],\n \"type\": \"boolean\",\n \"description\": \"Usually, dygraphs will use the range of the data plus some padding to set the range of the y-axis. If this option is set, the y-axis will always include zero, typically as the lowest value. This can be used to avoid exaggerating the variance in the data\"\n },\n \"rollPeriod\": {\n \"default\": \"1\",\n \"labels\": [\"Error Bars\", \"Rolling Averages\"],\n \"type\": \"integer >= 1\",\n \"description\": \"Number of days over which to average data. Discussed extensively above.\"\n },\n \"unhighlightCallback\": {\n \"default\": \"null\",\n \"labels\": [\"Callbacks\"],\n \"type\": \"function(event)\",\n \"parameters\": [[\"event\", \"the mouse event\"]],\n \"description\": \"When set, this callback gets called every time the user stops highlighting any point by mousing out of the graph.\"\n },\n \"axisTickSize\": {\n \"default\": \"3.0\",\n \"labels\": [\"Axis display\"],\n \"type\": \"number\",\n \"description\": \"The size of the line to display next to each tick mark on x- or y-axes.\"\n },\n \"labelsSeparateLines\": {\n \"default\": \"false\",\n \"labels\": [\"Legend\"],\n \"type\": \"boolean\",\n \"description\": \"Put <br/> between lines in the label string. Often used in conjunction with labelsDiv.\"\n },\n \"valueFormatter\": {\n \"default\": \"Depends on the type of your data.\",\n \"labels\": [\"Legend\", \"Value display/formatting\"],\n \"type\": \"function(num or millis, opts, seriesName, dygraph, row, col)\",\n \"description\": \"Function to provide a custom display format for the values displayed on mouseover. This does not affect the values that appear on tick marks next to the axes. To format those, see axisLabelFormatter. This is usually set on a per-axis basis. .\",\n \"parameters\": [[\"num_or_millis\", \"The value to be formatted. This is always a number. For date axes, it's millis since epoch. You can call new Date(millis) to get a Date object.\"], [\"opts\", \"This is a function you can call to access various options (e.g. opts('labelsKMB')). It returns per-axis values for the option when available.\"], [\"seriesName\", \"The name of the series from which the point came, e.g. 'X', 'Y', 'A', etc.\"], [\"dygraph\", \"The dygraph object for which the formatting is being done\"], [\"row\", \"The row of the data from which this point comes. g.getValue(row, 0) will return the x-value for this point.\"], [\"col\", \"The column of the data from which this point comes. g.getValue(row, col) will return the original y-value for this point. This can be used to get the full confidence interval for the point, or access un-rolled values for the point.\"]]\n },\n \"annotationMouseOverHandler\": {\n \"default\": \"null\",\n \"labels\": [\"Annotations\"],\n \"type\": \"function(annotation, point, dygraph, event)\",\n \"description\": \"If provided, this function is called whenever the user mouses over an annotation.\"\n },\n \"annotationMouseOutHandler\": {\n \"default\": \"null\",\n \"labels\": [\"Annotations\"],\n \"type\": \"function(annotation, point, dygraph, event)\",\n \"parameters\": [[\"annotation\", \"the annotation left\"], [\"point\", \"the point associated with the annotation\"], [\"dygraph\", \"the reference graph\"], [\"event\", \"the mouse event\"]],\n \"description\": \"If provided, this function is called whenever the user mouses out of an annotation.\"\n },\n \"annotationClickHandler\": {\n \"default\": \"null\",\n \"labels\": [\"Annotations\"],\n \"type\": \"function(annotation, point, dygraph, event)\",\n \"parameters\": [[\"annotation\", \"the annotation left\"], [\"point\", \"the point associated with the annotation\"], [\"dygraph\", \"the reference graph\"], [\"event\", \"the mouse event\"]],\n \"description\": \"If provided, this function is called whenever the user clicks on an annotation.\"\n },\n \"annotationDblClickHandler\": {\n \"default\": \"null\",\n \"labels\": [\"Annotations\"],\n \"type\": \"function(annotation, point, dygraph, event)\",\n \"parameters\": [[\"annotation\", \"the annotation left\"], [\"point\", \"the point associated with the annotation\"], [\"dygraph\", \"the reference graph\"], [\"event\", \"the mouse event\"]],\n \"description\": \"If provided, this function is called whenever the user double-clicks on an annotation.\"\n },\n \"drawCallback\": {\n \"default\": \"null\",\n \"labels\": [\"Callbacks\"],\n \"type\": \"function(dygraph, is_initial)\",\n \"parameters\": [[\"dygraph\", \"The graph being drawn\"], [\"is_initial\", \"True if this is the initial draw, false for subsequent draws.\"]],\n \"description\": \"When set, this callback gets called every time the dygraph is drawn. This includes the initial draw, after zooming and repeatedly while panning.\"\n },\n \"labelsKMG2\": {\n \"default\": \"false\",\n \"labels\": [\"Value display/formatting\"],\n \"type\": \"boolean\",\n \"description\": \"Show k/M/G for kilo/Mega/Giga on y-axis. This is different than labelsKMB in that it uses base 2, not 10.\"\n },\n \"delimiter\": {\n \"default\": \",\",\n \"labels\": [\"CSV parsing\"],\n \"type\": \"string\",\n \"description\": \"The delimiter to look for when separating fields of a CSV file. Setting this to a tab is not usually necessary, since tab-delimited data is auto-detected.\"\n },\n \"axisLabelFontSize\": {\n \"default\": \"14\",\n \"labels\": [\"Axis display\"],\n \"type\": \"integer\",\n \"description\": \"Size of the font (in pixels) to use in the axis labels, both x- and y-axis.\"\n },\n \"underlayCallback\": {\n \"default\": \"null\",\n \"labels\": [\"Callbacks\"],\n \"type\": \"function(context, area, dygraph)\",\n \"parameters\": [[\"context\", \"the canvas drawing context on which to draw\"], [\"area\", \"An object with {x,y,w,h} properties describing the drawing area.\"], [\"dygraph\", \"the reference graph\"]],\n \"description\": \"When set, this callback gets called before the chart is drawn. It details on how to use this.\"\n },\n \"width\": {\n \"default\": \"480\",\n \"labels\": [\"Overall display\"],\n \"type\": \"integer\",\n \"description\": \"Width, in pixels, of the chart. If the container div has been explicitly sized, this will be ignored.\"\n },\n \"pixelRatio\": {\n \"default\": \"(devicePixelRatio / context.backingStoreRatio)\",\n \"labels\": [\"Overall display\"],\n \"type\": \"float\",\n \"description\": \"Overrides the pixel ratio scaling factor for the canvas's 2d context. Ordinarily, this is set to the devicePixelRatio / (context.backingStoreRatio || 1), so on mobile devices, where the devicePixelRatio can be somewhere around 3, performance can be improved by overriding this value to something less precise, like 1, at the expense of resolution.\"\n },\n \"interactionModel\": {\n \"default\": \"...\",\n \"labels\": [\"Interactive Elements\"],\n \"type\": \"Object\",\n \"description\": \"TODO(konigsberg): document this\"\n },\n \"ticker\": {\n \"default\": \"Dygraph.dateTicker or Dygraph.numericTicks\",\n \"labels\": [\"Axis display\"],\n \"type\": \"function(min, max, pixels, opts, dygraph, vals) -> [{v: ..., label: ...}, ...]\",\n \"parameters\": [[\"min\", \"\"], [\"max\", \"\"], [\"pixels\", \"\"], [\"opts\", \"\"], [\"dygraph\", \"the reference graph\"], [\"vals\", \"\"]],\n \"description\": \"This lets you specify an arbitrary function to generate tick marks on an axis. The tick marks are an array of (value, label) pairs. The built-in functions go to great lengths to choose good tick marks so, if you set this option, you'll most likely want to call one of them and modify the result. See dygraph-tickers.js for an extensive discussion. This is set on a per-axis basis.\"\n },\n \"xAxisHeight\": {\n \"default\": \"(null)\",\n \"labels\": [\"Axis display\"],\n \"type\": \"integer\",\n \"description\": \"Height, in pixels, of the x-axis. If not set explicitly, this is computed based on axisLabelFontSize and axisTickSize.\"\n },\n \"showLabelsOnHighlight\": {\n \"default\": \"true\",\n \"labels\": [\"Interactive Elements\", \"Legend\"],\n \"type\": \"boolean\",\n \"description\": \"Whether to show the legend upon mouseover.\"\n },\n \"axis\": {\n \"default\": \"(none)\",\n \"labels\": [\"Axis display\"],\n \"type\": \"string\",\n \"description\": \"Set to either 'y1' or 'y2' to assign a series to a y-axis (primary or secondary). Must be set per-series.\"\n },\n \"pixelsPerLabel\": {\n \"default\": \"70 (x-axis) or 30 (y-axes)\",\n \"labels\": [\"Axis display\", \"Grid\"],\n \"type\": \"integer\",\n \"description\": \"Number of pixels to require between each x- and y-label. Larger values will yield a sparser axis with fewer ticks. This is set on a per-axis basis.\"\n },\n \"labelsDiv\": {\n \"default\": \"null\",\n \"labels\": [\"Legend\"],\n \"type\": \"DOM element or string\",\n \"example\": \"document.getElementById('foo')or'foo'\",\n \"description\": \"Show data labels in an external div, rather than on the graph. This value can either be a div element or a div id.\"\n },\n \"fractions\": {\n \"default\": \"false\",\n \"labels\": [\"CSV parsing\", \"Error Bars\"],\n \"type\": \"boolean\",\n \"description\": \"When set, attempt to parse each cell in the CSV file as \\\"a/b\\\", where a and b are integers. The ratio will be plotted. This allows computation of Wilson confidence intervals (see below).\"\n },\n \"logscale\": {\n \"default\": \"false\",\n \"labels\": [\"Axis display\"],\n \"type\": \"boolean\",\n \"description\": \"When set for the y-axis or x-axis, the graph shows that axis in log scale. Any values less than or equal to zero are not displayed. Showing log scale with ranges that go below zero will result in an unviewable graph.\\n\\n Not compatible with showZero. connectSeparatedPoints is ignored. This is ignored for date-based x-axes.\"\n },\n \"strokeWidth\": {\n \"default\": \"1.0\",\n \"labels\": [\"Data Line display\"],\n \"type\": \"float\",\n \"example\": \"0.5, 2.0\",\n \"description\": \"The width of the lines connecting data points. This can be used to increase the contrast or some graphs.\"\n },\n \"strokePattern\": {\n \"default\": \"null\",\n \"labels\": [\"Data Line display\"],\n \"type\": \"array\",\n \"example\": \"[10, 2, 5, 2]\",\n \"description\": \"A custom pattern array where the even index is a draw and odd is a space in pixels. If null then it draws a solid line. The array should have a even length as any odd lengthed array could be expressed as a smaller even length array. This is used to create dashed lines.\"\n },\n \"strokeBorderWidth\": {\n \"default\": \"null\",\n \"labels\": [\"Data Line display\"],\n \"type\": \"float\",\n \"example\": \"1.0\",\n \"description\": \"Draw a border around graph lines to make crossing lines more easily distinguishable. Useful for graphs with many lines.\"\n },\n \"strokeBorderColor\": {\n \"default\": \"white\",\n \"labels\": [\"Data Line display\"],\n \"type\": \"string\",\n \"example\": \"red, #ccffdd\",\n \"description\": \"Color for the line border used if strokeBorderWidth is set.\"\n },\n \"wilsonInterval\": {\n \"default\": \"true\",\n \"labels\": [\"Error Bars\"],\n \"type\": \"boolean\",\n \"description\": \"Use in conjunction with the \\\"fractions\\\" option. Instead of plotting +/- N standard deviations, dygraphs will compute a Wilson confidence interval and plot that. This has more reasonable behavior for ratios close to 0 or 1.\"\n },\n \"fillGraph\": {\n \"default\": \"false\",\n \"labels\": [\"Data Line display\"],\n \"type\": \"boolean\",\n \"description\": \"Should the area underneath the graph be filled? This option is not compatible with error bars. This may be set on a per-series basis.\"\n },\n \"highlightCircleSize\": {\n \"default\": \"3\",\n \"labels\": [\"Interactive Elements\"],\n \"type\": \"integer\",\n \"description\": \"The size in pixels of the dot drawn over highlighted points.\"\n },\n \"gridLineColor\": {\n \"default\": \"rgb(128,128,128)\",\n \"labels\": [\"Grid\"],\n \"type\": \"red, blue\",\n \"description\": \"The color of the gridlines. This may be set on a per-axis basis to define each axis' grid separately.\"\n },\n \"gridLinePattern\": {\n \"default\": \"null\",\n \"labels\": [\"Grid\"],\n \"type\": \"array\",\n \"example\": \"[10, 2, 5, 2]\",\n \"description\": \"A custom pattern array where the even index is a draw and odd is a space in pixels. If null then it draws a solid line. The array should have a even length as any odd lengthed array could be expressed as a smaller even length array. This is used to create dashed gridlines.\"\n },\n \"visibility\": {\n \"default\": \"[true, true, ...]\",\n \"labels\": [\"Data Line display\"],\n \"type\": \"Array of booleans\",\n \"description\": \"Which series should initially be visible? Once the Dygraph has been constructed, you can access and modify the visibility of each series using the visibility and setVisibility methods.\"\n },\n \"valueRange\": {\n \"default\": \"Full range of the input is shown\",\n \"labels\": [\"Axis display\"],\n \"type\": \"Array of two numbers\",\n \"example\": \"[10, 110]\",\n \"description\": \"Explicitly set the vertical range of the graph to [low, high]. This may be set on a per-axis basis to define each y-axis separately. If either limit is unspecified, it will be calculated automatically (e.g. [null, 30] to automatically calculate just the lower bound)\"\n },\n \"colorSaturation\": {\n \"default\": \"1.0\",\n \"labels\": [\"Data Series Colors\"],\n \"type\": \"float (0.0 - 1.0)\",\n \"description\": \"If colors is not specified, saturation of the automatically-generated data series colors.\"\n },\n \"hideOverlayOnMouseOut\": {\n \"default\": \"true\",\n \"labels\": [\"Interactive Elements\", \"Legend\"],\n \"type\": \"boolean\",\n \"description\": \"Whether to hide the legend when the mouse leaves the chart area.\"\n },\n \"legend\": {\n \"default\": \"onmouseover\",\n \"labels\": [\"Legend\"],\n \"type\": \"string\",\n \"description\": \"When to display the legend. By default, it only appears when a user mouses over the chart. Set it to \\\"always\\\" to always display a legend of some sort. When set to \\\"follow\\\", legend follows highlighted points.\"\n },\n \"legendFormatter\": {\n \"default\": \"null\",\n \"labels\": [\"Legend\"],\n \"type\": \"function(data): string\",\n \"params\": [[\"data\", \"An object containing information about the selection (or lack of a selection). This includes formatted values and series information. See here for sample values.\"]],\n \"description\": \"Set this to supply a custom formatter for the legend. See this comment and the legendFormatter demo for usage.\"\n },\n \"labelsShowZeroValues\": {\n \"default\": \"true\",\n \"labels\": [\"Legend\"],\n \"type\": \"boolean\",\n \"description\": \"Show zero value labels in the labelsDiv.\"\n },\n \"stepPlot\": {\n \"default\": \"false\",\n \"labels\": [\"Data Line display\"],\n \"type\": \"boolean\",\n \"description\": \"When set, display the graph as a step plot instead of a line plot. This option may either be set for the whole graph or for single series.\"\n },\n \"labelsUTC\": {\n \"default\": \"false\",\n \"labels\": [\"Value display/formatting\", \"Axis display\"],\n \"type\": \"boolean\",\n \"description\": \"Show date/time labels according to UTC (instead of local time).\"\n },\n \"labelsKMB\": {\n \"default\": \"false\",\n \"labels\": [\"Value display/formatting\"],\n \"type\": \"boolean\",\n \"description\": \"Show K/M/B for thousands/millions/billions on y-axis.\"\n },\n \"rightGap\": {\n \"default\": \"5\",\n \"labels\": [\"Overall display\"],\n \"type\": \"integer\",\n \"description\": \"Number of pixels to leave blank at the right edge of the Dygraph. This makes it easier to highlight the right-most data point.\"\n },\n \"drawAxesAtZero\": {\n \"default\": \"false\",\n \"labels\": [\"Axis display\"],\n \"type\": \"boolean\",\n \"description\": \"When set, draw the X axis at the Y=0 position and the Y axis at the X=0 position if those positions are inside the graph's visible area. Otherwise, draw the axes at the bottom or left graph edge as usual.\"\n },\n \"xRangePad\": {\n \"default\": \"0\",\n \"labels\": [\"Axis display\"],\n \"type\": \"float\",\n \"description\": \"Add the specified amount of extra space (in pixels) around the X-axis value range to ensure points at the edges remain visible.\"\n },\n \"yRangePad\": {\n \"default\": \"null\",\n \"labels\": [\"Axis display\"],\n \"type\": \"float\",\n \"description\": \"If set, add the specified amount of extra space (in pixels) around the Y-axis value range to ensure points at the edges remain visible. If unset, use the traditional Y padding algorithm.\"\n },\n \"axisLabelFormatter\": {\n \"default\": \"Depends on the data type\",\n \"labels\": [\"Axis display\"],\n \"type\": \"function(number or Date, granularity, opts, dygraph)\",\n \"parameters\": [[\"number or date\", \"Either a number (for a numeric axis) or a Date object (for a date axis)\"], [\"granularity\", \"specifies how fine-grained the axis is. For date axes, this is a reference to the time granularity enumeration, defined in dygraph-tickers.js, e.g. Dygraph.WEEKLY.\"], [\"opts\", \"a function which provides access to various options on the dygraph, e.g. opts('labelsKMB').\"], [\"dygraph\", \"the referenced graph\"]],\n \"description\": \"Function to call to format the tick values that appear along an axis. This is usually set on a per-axis basis.\"\n },\n \"clickCallback\": {\n \"snippet\": \"function(e, date_millis){
  alert(new Date(date_millis));
}\",\n \"default\": \"null\",\n \"labels\": [\"Callbacks\"],\n \"type\": \"function(e, x, points)\",\n \"parameters\": [[\"e\", \"The event object for the click\"], [\"x\", \"The x value that was clicked (for dates, this is milliseconds since epoch)\"], [\"points\", \"The closest points along that date. See Point properties for details.\"]],\n \"description\": \"A function to call when the canvas is clicked.\"\n },\n \"labels\": {\n \"default\": \"[\\\"X\\\", \\\"Y1\\\", \\\"Y2\\\", ...]*\",\n \"labels\": [\"Legend\"],\n \"type\": \"array\",\n \"description\": \"A name for each data series, including the independent (X) series. For CSV files and DataTable objections, this is determined by context. For raw data, this must be specified. If it is not, default values are supplied and a warning is logged.\"\n },\n \"dateWindow\": {\n \"default\": \"Full range of the input is shown\",\n \"labels\": [\"Axis display\"],\n \"type\": \"Array of two numbers\",\n \"example\": \"[
  Date.parse('2006-01-01'),
  (new Date()).valueOf()
]\",\n \"description\": \"Initially zoom in on a section of the graph. Is of the form [earliest, latest], where earliest/latest are milliseconds since epoch. If the data for the x-axis is numeric, the values in dateWindow must also be numbers.\"\n },\n \"showRoller\": {\n \"default\": \"false\",\n \"labels\": [\"Interactive Elements\", \"Rolling Averages\"],\n \"type\": \"boolean\",\n \"description\": \"If the rolling average period text box should be shown.\"\n },\n \"sigma\": {\n \"default\": \"2.0\",\n \"labels\": [\"Error Bars\"],\n \"type\": \"float\",\n \"description\": \"When errorBars is set, shade this many standard deviations above/below each point.\"\n },\n \"customBars\": {\n \"default\": \"false\",\n \"labels\": [\"CSV parsing\", \"Error Bars\"],\n \"type\": \"boolean\",\n \"description\": \"When set, parse each CSV cell as \\\"low;middle;high\\\". Error bars will be drawn for each point between low and high, with the series itself going through middle.\"\n },\n \"colorValue\": {\n \"default\": \"1.0\",\n \"labels\": [\"Data Series Colors\"],\n \"type\": \"float (0.0 - 1.0)\",\n \"description\": \"If colors is not specified, value of the data series colors, as in hue/saturation/value. (0.0-1.0, default 0.5)\"\n },\n \"errorBars\": {\n \"default\": \"false\",\n \"labels\": [\"CSV parsing\", \"Error Bars\"],\n \"type\": \"boolean\",\n \"description\": \"Does the data contain standard deviations? Setting this to true alters the input format (see above).\"\n },\n \"displayAnnotations\": {\n \"default\": \"false\",\n \"labels\": [\"Annotations\"],\n \"type\": \"boolean\",\n \"description\": \"Only applies when Dygraphs is used as a GViz chart. Causes string columns following a data series to be interpreted as annotations on points in that series. This is the same format used by Google's AnnotatedTimeLine chart.\"\n },\n \"panEdgeFraction\": {\n \"default\": \"null\",\n \"labels\": [\"Axis display\", \"Interactive Elements\"],\n \"type\": \"float\",\n \"description\": \"A value representing the farthest a graph may be panned, in percent of the display. For example, a value of 0.1 means that the graph can only be panned 10% passed the edges of the displayed values. null means no bounds.\"\n },\n \"title\": {\n \"labels\": [\"Chart labels\"],\n \"type\": \"string\",\n \"default\": \"null\",\n \"description\": \"Text to display above the chart. You can supply any HTML for this value, not just text. If you wish to style it using CSS, use the 'dygraph-label' or 'dygraph-title' classes.\"\n },\n \"titleHeight\": {\n \"default\": \"18\",\n \"labels\": [\"Chart labels\"],\n \"type\": \"integer\",\n \"description\": \"Height of the chart title, in pixels. This also controls the default font size of the title. If you style the title on your own, this controls how much space is set aside above the chart for the title's div.\"\n },\n \"xlabel\": {\n \"labels\": [\"Chart labels\"],\n \"type\": \"string\",\n \"default\": \"null\",\n \"description\": \"Text to display below the chart's x-axis. You can supply any HTML for this value, not just text. If you wish to style it using CSS, use the 'dygraph-label' or 'dygraph-xlabel' classes.\"\n },\n \"xLabelHeight\": {\n \"labels\": [\"Chart labels\"],\n \"type\": \"integer\",\n \"default\": \"18\",\n \"description\": \"Height of the x-axis label, in pixels. This also controls the default font size of the x-axis label. If you style the label on your own, this controls how much space is set aside below the chart for the x-axis label's div.\"\n },\n \"ylabel\": {\n \"labels\": [\"Chart labels\"],\n \"type\": \"string\",\n \"default\": \"null\",\n \"description\": \"Text to display to the left of the chart's y-axis. You can supply any HTML for this value, not just text. If you wish to style it using CSS, use the 'dygraph-label' or 'dygraph-ylabel' classes. The text will be rotated 90 degrees by default, so CSS rules may behave in unintuitive ways. No additional space is set aside for a y-axis label. If you need more space, increase the width of the y-axis tick labels using the yAxisLabelWidth option. If you need a wider div for the y-axis label, either style it that way with CSS (but remember that it's rotated, so width is controlled by the 'height' property) or set the yLabelWidth option.\"\n },\n \"y2label\": {\n \"labels\": [\"Chart labels\"],\n \"type\": \"string\",\n \"default\": \"null\",\n \"description\": \"Text to display to the right of the chart's secondary y-axis. This label is only displayed if a secondary y-axis is present. See this test for an example of how to do this. The comments for the 'ylabel' option generally apply here as well. This label gets a 'dygraph-y2label' instead of a 'dygraph-ylabel' class.\"\n },\n \"yLabelWidth\": {\n \"labels\": [\"Chart labels\"],\n \"type\": \"integer\",\n \"default\": \"18\",\n \"description\": \"Width of the div which contains the y-axis label. Since the y-axis label appears rotated 90 degrees, this actually affects the height of its div.\"\n },\n \"drawGrid\": {\n \"default\": \"true for x and y, false for y2\",\n \"labels\": [\"Grid\"],\n \"type\": \"boolean\",\n \"description\": \"Whether to display gridlines in the chart. This may be set on a per-axis basis to define the visibility of each axis' grid separately.\"\n },\n \"independentTicks\": {\n \"default\": \"true for y, false for y2\",\n \"labels\": [\"Axis display\", \"Grid\"],\n \"type\": \"boolean\",\n \"description\": \"Only valid for y and y2, has no effect on x: This option defines whether the y axes should align their ticks or if they should be independent. Possible combinations: 1.) y=true, y2=false (default): y is the primary axis and the y2 ticks are aligned to the the ones of y. (only 1 grid) 2.) y=false, y2=true: y2 is the primary axis and the y ticks are aligned to the the ones of y2. (only 1 grid) 3.) y=true, y2=true: Both axis are independent and have their own ticks. (2 grids) 4.) y=false, y2=false: Invalid configuration causes an error.\"\n },\n \"drawAxis\": {\n \"default\": \"true for x and y, false for y2\",\n \"labels\": [\"Axis display\"],\n \"type\": \"boolean\",\n \"description\": \"Whether to draw the specified axis. This may be set on a per-axis basis to define the visibility of each axis separately. Setting this to false also prevents axis ticks from being drawn and reclaims the space for the chart grid/lines.\"\n },\n \"gridLineWidth\": {\n \"default\": \"0.3\",\n \"labels\": [\"Grid\"],\n \"type\": \"float\",\n \"description\": \"Thickness (in pixels) of the gridlines drawn under the chart. The vertical/horizontal gridlines can be turned off entirely by using the drawGrid option. This may be set on a per-axis basis to define each axis' grid separately.\"\n },\n \"axisLineWidth\": {\n \"default\": \"0.3\",\n \"labels\": [\"Axis display\"],\n \"type\": \"float\",\n \"description\": \"Thickness (in pixels) of the x- and y-axis lines.\"\n },\n \"axisLineColor\": {\n \"default\": \"black\",\n \"labels\": [\"Axis display\"],\n \"type\": \"string\",\n \"description\": \"Color of the x- and y-axis lines. Accepts any value which the HTML canvas strokeStyle attribute understands, e.g. 'black' or 'rgb(0, 100, 255)'.\"\n },\n \"fillAlpha\": {\n \"default\": \"0.15\",\n \"labels\": [\"Error Bars\", \"Data Series Colors\"],\n \"type\": \"float (0.0 - 1.0)\",\n \"description\": \"Error bars (or custom bars) for each series are drawn in the same color as the series, but with partial transparency. This sets the transparency. A value of 0.0 means that the error bars will not be drawn, whereas a value of 1.0 means that the error bars will be as dark as the line for the series itself. This can be used to produce chart lines whose thickness varies at each point.\"\n },\n \"axisLabelWidth\": {\n \"default\": \"50 (y-axis), 60 (x-axis)\",\n \"labels\": [\"Axis display\", \"Chart labels\"],\n \"type\": \"integer\",\n \"description\": \"Width (in pixels) of the containing divs for x- and y-axis labels. For the y-axis, this also controls the width of the y-axis. Note that for the x-axis, this is independent from pixelsPerLabel, which controls the spacing between labels.\"\n },\n \"sigFigs\": {\n \"default\": \"null\",\n \"labels\": [\"Value display/formatting\"],\n \"type\": \"integer\",\n \"description\": \"By default, dygraphs displays numbers with a fixed number of digits after the decimal point. If you'd prefer to have a fixed number of significant figures, set this option to that number of sig figs. A value of 2, for instance, would cause 1 to be display as 1.0 and 1234 to be displayed as 1.23e+3.\"\n },\n \"digitsAfterDecimal\": {\n \"default\": \"2\",\n \"labels\": [\"Value display/formatting\"],\n \"type\": \"integer\",\n \"description\": \"Unless it's run in scientific mode (see the sigFigs option), dygraphs displays numbers with digitsAfterDecimal digits after the decimal point. Trailing zeros are not displayed, so with a value of 2 you'll get '0', '0.1', '0.12', '123.45' but not '123.456' (it will be rounded to '123.46'). Numbers with absolute value less than 0.1^digitsAfterDecimal (i.e. those which would show up as '0.00') will be displayed in scientific notation.\"\n },\n \"maxNumberWidth\": {\n \"default\": \"6\",\n \"labels\": [\"Value display/formatting\"],\n \"type\": \"integer\",\n \"description\": \"When displaying numbers in normal (not scientific) mode, large numbers will be displayed with many trailing zeros (e.g. 100000000 instead of 1e9). This can lead to unwieldy y-axis labels. If there are more than maxNumberWidth digits to the left of the decimal in a number, dygraphs will switch to scientific notation, even when not operating in scientific mode. If you'd like to see all those digits, set this to something large, like 20 or 30.\"\n },\n \"file\": {\n \"default\": \"(set when constructed)\",\n \"labels\": [\"Data\"],\n \"type\": \"string (URL of CSV or CSV), GViz DataTable or 2D Array\",\n \"description\": \"Sets the data being displayed in the chart. This can only be set when calling updateOptions; it cannot be set from the constructor. For a full description of valid data formats, see the Data Formats page.\"\n },\n \"timingName\": {\n \"default\": \"null\",\n \"labels\": [\"Debugging\", \"Deprecated\"],\n \"type\": \"string\",\n \"description\": \"Set this option to log timing information. The value of the option will be logged along with the timimg, so that you can distinguish multiple dygraphs on the same page.\"\n },\n \"showRangeSelector\": {\n \"default\": \"false\",\n \"labels\": [\"Range Selector\"],\n \"type\": \"boolean\",\n \"description\": \"Show or hide the range selector widget.\"\n },\n \"rangeSelectorHeight\": {\n \"default\": \"40\",\n \"labels\": [\"Range Selector\"],\n \"type\": \"integer\",\n \"description\": \"Height, in pixels, of the range selector widget. This option can only be specified at Dygraph creation time.\"\n },\n \"rangeSelectorPlotStrokeColor\": {\n \"default\": \"#808FAB\",\n \"labels\": [\"Range Selector\"],\n \"type\": \"string\",\n \"description\": \"The range selector mini plot stroke color. This can be of the form \\\"#AABBCC\\\" or \\\"rgb(255,100,200)\\\" or \\\"yellow\\\". You can also specify null or \\\"\\\" to turn off stroke.\"\n },\n \"rangeSelectorPlotFillColor\": {\n \"default\": \"#A7B1C4\",\n \"labels\": [\"Range Selector\"],\n \"type\": \"string\",\n \"description\": \"The range selector mini plot fill color. This can be of the form \\\"#AABBCC\\\" or \\\"rgb(255,100,200)\\\" or \\\"yellow\\\". You can also specify null or \\\"\\\" to turn off fill.\"\n },\n \"rangeSelectorPlotFillGradientColor\": {\n \"default\": \"white\",\n \"labels\": [\"Range Selector\"],\n \"type\": \"string\",\n \"description\": \"The top color for the range selector mini plot fill color gradient. This can be of the form \\\"#AABBCC\\\" or \\\"rgb(255,100,200)\\\" or \\\"rgba(255,100,200,42)\\\" or \\\"yellow\\\". You can also specify null or \\\"\\\" to disable the gradient and fill with one single color.\"\n },\n \"rangeSelectorBackgroundStrokeColor\": {\n \"default\": \"gray\",\n \"labels\": [\"Range Selector\"],\n \"type\": \"string\",\n \"description\": \"The color of the lines below and on both sides of the range selector mini plot. This can be of the form \\\"#AABBCC\\\" or \\\"rgb(255,100,200)\\\" or \\\"yellow\\\".\"\n },\n \"rangeSelectorBackgroundLineWidth\": {\n \"default\": \"1\",\n \"labels\": [\"Range Selector\"],\n \"type\": \"float\",\n \"description\": \"The width of the lines below and on both sides of the range selector mini plot.\"\n },\n \"rangeSelectorPlotLineWidth\": {\n \"default\": \"1.5\",\n \"labels\": [\"Range Selector\"],\n \"type\": \"float\",\n \"description\": \"The width of the range selector mini plot line.\"\n },\n \"rangeSelectorForegroundStrokeColor\": {\n \"default\": \"black\",\n \"labels\": [\"Range Selector\"],\n \"type\": \"string\",\n \"description\": \"The color of the lines in the interactive layer of the range selector. This can be of the form \\\"#AABBCC\\\" or \\\"rgb(255,100,200)\\\" or \\\"yellow\\\".\"\n },\n \"rangeSelectorForegroundLineWidth\": {\n \"default\": \"1\",\n \"labels\": [\"Range Selector\"],\n \"type\": \"float\",\n \"description\": \"The width the lines in the interactive layer of the range selector.\"\n },\n \"rangeSelectorAlpha\": {\n \"default\": \"0.6\",\n \"labels\": [\"Range Selector\"],\n \"type\": \"float (0.0 - 1.0)\",\n \"description\": \"The transparency of the veil that is drawn over the unselected portions of the range selector mini plot. A value of 0 represents full transparency and the unselected portions of the mini plot will appear as normal. A value of 1 represents full opacity and the unselected portions of the mini plot will be hidden.\"\n },\n \"showInRangeSelector\": {\n \"default\": \"null\",\n \"labels\": [\"Range Selector\"],\n \"type\": \"boolean\",\n \"description\": \"Mark this series for inclusion in the range selector. The mini plot curve will be an average of all such series. If this is not specified for any series, the default behavior is to average all the visible series. Setting it for one series will result in that series being charted alone in the range selector. Once it's set for a single series, it needs to be set for all series which should be included (regardless of visibility).\"\n },\n \"animatedZooms\": {\n \"default\": \"false\",\n \"labels\": [\"Interactive Elements\"],\n \"type\": \"boolean\",\n \"description\": \"Set this option to animate the transition between zoom windows. Applies to programmatic and interactive zooms. Note that if you also set a drawCallback, it will be called several times on each zoom. If you set a zoomCallback, it will only be called after the animation is complete.\"\n },\n \"plotter\": {\n \"default\": \"[DygraphCanvasRenderer.Plotters.fillPlotter, DygraphCanvasRenderer.Plotters.errorPlotter, DygraphCanvasRenderer.Plotters.linePlotter]\",\n \"labels\": [\"Data Line display\"],\n \"type\": \"array or function\",\n \"description\": \"A function (or array of functions) which plot each data series on the chart. TODO(danvk): more details! May be set per-series.\"\n },\n \"axes\": {\n \"default\": \"null\",\n \"labels\": [\"Configuration\"],\n \"type\": \"Object\",\n \"description\": \"Defines per-axis options. Valid keys are 'x', 'y' and 'y2'. Only some options may be set on a per-axis basis. If an option may be set in this way, it will be noted on this page. See also documentation on per-series and per-axis options.\"\n },\n \"series\": {\n \"default\": \"null\",\n \"labels\": [\"Series\"],\n \"type\": \"Object\",\n \"description\": \"Defines per-series options. Its keys match the y-axis label names, and the values are dictionaries themselves that contain options specific to that series.\"\n },\n \"plugins\": {\n \"default\": \"[]\",\n \"labels\": [\"Configuration\"],\n \"type\": \"Array\",\n \"description\": \"Defines per-graph plugins. Useful for per-graph customization\"\n },\n \"dataHandler\": {\n \"default\": \"(depends on data)\",\n \"labels\": [\"Data\"],\n \"type\": \"Dygraph.DataHandler\",\n \"description\": \"Custom DataHandler. This is an advanced customization. See http://bit.ly/151E7Aq.\"\n }\n }; //
\n // NOTE: in addition to parsing as JS, this snippet is expected to be valid\n // JSON. This assumption cannot be checked in JS, but it will be checked when\n // documentation is generated by the generate-documentation.py script. For the\n // most part, this just means that you should always use double quotes.\n\n // Do a quick sanity check on the options reference.\n var warn = function warn(msg) {\n if (window.console) window.console.warn(msg);\n };\n var flds = ['type', 'default', 'description'];\n var valid_cats = ['Annotations', 'Axis display', 'Chart labels', 'CSV parsing', 'Callbacks', 'Data', 'Data Line display', 'Data Series Colors', 'Error Bars', 'Grid', 'Interactive Elements', 'Range Selector', 'Legend', 'Overall display', 'Rolling Averages', 'Series', 'Value display/formatting', 'Zooming', 'Debugging', 'Configuration', 'Deprecated'];\n var i;\n var cats = {};\n for (i = 0; i < valid_cats.length; i++) cats[valid_cats[i]] = true;\n\n for (var k in OPTIONS_REFERENCE) {\n if (!OPTIONS_REFERENCE.hasOwnProperty(k)) continue;\n var op = OPTIONS_REFERENCE[k];\n for (i = 0; i < flds.length; i++) {\n if (!op.hasOwnProperty(flds[i])) {\n warn('Option ' + k + ' missing \"' + flds[i] + '\" property');\n } else if (typeof op[flds[i]] != 'string') {\n warn(k + '.' + flds[i] + ' must be of type string');\n }\n }\n var labels = op.labels;\n if (typeof labels !== 'object') {\n warn('Option \"' + k + '\" is missing a \"labels\": [...] option');\n } else {\n for (i = 0; i < labels.length; i++) {\n if (!cats.hasOwnProperty(labels[i])) {\n warn('Option \"' + k + '\" has label \"' + labels[i] + '\", which is invalid.');\n }\n }\n }\n }\n }\n}\n\nexports['default'] = OPTIONS_REFERENCE;\nmodule.exports = exports['default'];","/**\n * To create a \"drag\" interaction, you typically register a mousedown event\n * handler on the element where the drag begins. In that handler, you register a\n * mouseup handler on the window to determine when the mouse is released,\n * wherever that release happens. This works well, except when the user releases\n * the mouse over an off-domain iframe. In that case, the mouseup event is\n * handled by the iframe and never bubbles up to the window handler.\n *\n * To deal with this issue, we cover iframes with high z-index divs to make sure\n * they don't capture mouseup.\n *\n * Usage:\n * element.addEventListener('mousedown', function() {\n * var tarper = new IFrameTarp();\n * tarper.cover();\n * var mouseUpHandler = function() {\n * ...\n * window.removeEventListener(mouseUpHandler);\n * tarper.uncover();\n * };\n * window.addEventListener('mouseup', mouseUpHandler);\n * };\n *\n * @constructor\n */\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj[\"default\"] = obj; return newObj; } }\n\nvar _dygraphUtils = require('./dygraph-utils');\n\nvar utils = _interopRequireWildcard(_dygraphUtils);\n\nfunction IFrameTarp() {\n /** @type {Array.} */\n this.tarps = [];\n};\n\n/**\n * Find all the iframes in the document and cover them with high z-index\n * transparent divs.\n */\nIFrameTarp.prototype.cover = function () {\n var iframes = document.getElementsByTagName(\"iframe\");\n for (var i = 0; i < iframes.length; i++) {\n var iframe = iframes[i];\n var pos = utils.findPos(iframe),\n x = pos.x,\n y = pos.y,\n width = iframe.offsetWidth,\n height = iframe.offsetHeight;\n\n var div = document.createElement(\"div\");\n div.style.position = \"absolute\";\n div.style.left = x + 'px';\n div.style.top = y + 'px';\n div.style.width = width + 'px';\n div.style.height = height + 'px';\n div.style.zIndex = 999;\n document.body.appendChild(div);\n this.tarps.push(div);\n }\n};\n\n/**\n * Remove all the iframe covers. You should call this in a mouseup handler.\n */\nIFrameTarp.prototype.uncover = function () {\n for (var i = 0; i < this.tarps.length; i++) {\n this.tarps[i].parentNode.removeChild(this.tarps[i]);\n }\n this.tarps = [];\n};\n\nexports[\"default\"] = IFrameTarp;\nmodule.exports = exports[\"default\"];","/**\n * @license\n * Copyright 2013 David Eberlein (david.eberlein@ch.sauter-bc.com)\n * MIT-licensed (http://opensource.org/licenses/MIT)\n */\n\n/**\n * @fileoverview DataHandler default implementation used for simple line charts.\n * @author David Eberlein (david.eberlein@ch.sauter-bc.com)\n */\n\n/*global Dygraph:false */\n\"use strict\";\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _datahandler = require('./datahandler');\n\nvar _datahandler2 = _interopRequireDefault(_datahandler);\n\n/**\n * @constructor\n * @extends Dygraph.DataHandler\n */\nvar DefaultHandler = function DefaultHandler() {};\n\nDefaultHandler.prototype = new _datahandler2['default']();\n\n/** @inheritDoc */\nDefaultHandler.prototype.extractSeries = function (rawData, i, options) {\n // TODO(danvk): pre-allocate series here.\n var series = [];\n var logScale = options.get('logscale');\n for (var j = 0; j < rawData.length; j++) {\n var x = rawData[j][0];\n var point = rawData[j][i];\n if (logScale) {\n // On the log scale, points less than zero do not exist.\n // This will create a gap in the chart.\n if (point <= 0) {\n point = null;\n }\n }\n series.push([x, point]);\n }\n return series;\n};\n\n/** @inheritDoc */\nDefaultHandler.prototype.rollingAverage = function (originalData, rollPeriod, options) {\n rollPeriod = Math.min(rollPeriod, originalData.length);\n var rollingData = [];\n\n var i, j, y, sum, num_ok;\n // Calculate the rolling average for the first rollPeriod - 1 points\n // where\n // there is not enough data to roll over the full number of points\n if (rollPeriod == 1) {\n return originalData;\n }\n for (i = 0; i < originalData.length; i++) {\n sum = 0;\n num_ok = 0;\n for (j = Math.max(0, i - rollPeriod + 1); j < i + 1; j++) {\n y = originalData[j][1];\n if (y === null || isNaN(y)) continue;\n num_ok++;\n sum += originalData[j][1];\n }\n if (num_ok) {\n rollingData[i] = [originalData[i][0], sum / num_ok];\n } else {\n rollingData[i] = [originalData[i][0], null];\n }\n }\n\n return rollingData;\n};\n\n/** @inheritDoc */\nDefaultHandler.prototype.getExtremeYValues = function (series, dateWindow, options) {\n var minY = null,\n maxY = null,\n y;\n var firstIdx = 0,\n lastIdx = series.length - 1;\n\n for (var j = firstIdx; j <= lastIdx; j++) {\n y = series[j][1];\n if (y === null || isNaN(y)) continue;\n if (maxY === null || y > maxY) {\n maxY = y;\n }\n if (minY === null || y < minY) {\n minY = y;\n }\n }\n return [minY, maxY];\n};\n\nexports['default'] = DefaultHandler;\nmodule.exports = exports['default'];","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","/* MIT license */\nvar cssKeywords = require('color-name');\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n// values that give correct `typeof` results).\n// do not use box values types (i.e. Number(), String(), etc.)\n\nvar reverseKeywords = {};\nfor (var key in cssKeywords) {\n\tif (cssKeywords.hasOwnProperty(key)) {\n\t\treverseKeywords[cssKeywords[key]] = key;\n\t}\n}\n\nvar convert = module.exports = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\n// hide .channels and .labels properties\nfor (var model in convert) {\n\tif (convert.hasOwnProperty(model)) {\n\t\tif (!('channels' in convert[model])) {\n\t\t\tthrow new Error('missing channels property: ' + model);\n\t\t}\n\n\t\tif (!('labels' in convert[model])) {\n\t\t\tthrow new Error('missing channel labels property: ' + model);\n\t\t}\n\n\t\tif (convert[model].labels.length !== convert[model].channels) {\n\t\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t\t}\n\n\t\tvar channels = convert[model].channels;\n\t\tvar labels = convert[model].labels;\n\t\tdelete convert[model].channels;\n\t\tdelete convert[model].labels;\n\t\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\t\tObject.defineProperty(convert[model], 'labels', {value: labels});\n\t}\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar min = Math.min(r, g, b);\n\tvar max = Math.max(r, g, b);\n\tvar delta = max - min;\n\tvar h;\n\tvar s;\n\tvar l;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tl = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tvar rdif;\n\tvar gdif;\n\tvar bdif;\n\tvar h;\n\tvar s;\n\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar v = Math.max(r, g, b);\n\tvar diff = v - Math.min(r, g, b);\n\tvar diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = s = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tvar r = rgb[0];\n\tvar g = rgb[1];\n\tvar b = rgb[2];\n\tvar h = convert.rgb.hsl(rgb)[0];\n\tvar w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar c;\n\tvar m;\n\tvar y;\n\tvar k;\n\n\tk = Math.min(1 - r, 1 - g, 1 - b);\n\tc = (1 - r - k) / (1 - k) || 0;\n\tm = (1 - g - k) / (1 - k) || 0;\n\ty = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\n/**\n * See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n * */\nfunction comparativeDistance(x, y) {\n\treturn (\n\t\tMath.pow(x[0] - y[0], 2) +\n\t\tMath.pow(x[1] - y[1], 2) +\n\t\tMath.pow(x[2] - y[2], 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tvar reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tvar currentClosestDistance = Infinity;\n\tvar currentClosestKeyword;\n\n\tfor (var keyword in cssKeywords) {\n\t\tif (cssKeywords.hasOwnProperty(keyword)) {\n\t\t\tvar value = cssKeywords[keyword];\n\n\t\t\t// Compute comparative distance\n\t\t\tvar distance = comparativeDistance(rgb, value);\n\n\t\t\t// Check if its less, if so set as closest\n\t\t\tif (distance < currentClosestDistance) {\n\t\t\t\tcurrentClosestDistance = distance;\n\t\t\t\tcurrentClosestKeyword = keyword;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\n\t// assume sRGB\n\tr = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);\n\n\tvar x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tvar y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tvar z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tvar xyz = convert.rgb.xyz(rgb);\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tvar h = hsl[0] / 360;\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar t1;\n\tvar t2;\n\tvar t3;\n\tvar rgb;\n\tvar val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tt1 = 2 * l - t2;\n\n\trgb = [0, 0, 0];\n\tfor (var i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tvar h = hsl[0];\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar smin = s;\n\tvar lmin = Math.max(l, 0.01);\n\tvar sv;\n\tvar v;\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tv = (l + s) / 2;\n\tsv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tvar h = hsv[0] / 60;\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar hi = Math.floor(h) % 6;\n\n\tvar f = h - Math.floor(h);\n\tvar p = 255 * v * (1 - s);\n\tvar q = 255 * v * (1 - (s * f));\n\tvar t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tvar h = hsv[0];\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar vmin = Math.max(v, 0.01);\n\tvar lmin;\n\tvar sl;\n\tvar l;\n\n\tl = (2 - s) * v;\n\tlmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tvar h = hwb[0] / 360;\n\tvar wh = hwb[1] / 100;\n\tvar bl = hwb[2] / 100;\n\tvar ratio = wh + bl;\n\tvar i;\n\tvar v;\n\tvar f;\n\tvar n;\n\n\t// wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\ti = Math.floor(6 * h);\n\tv = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tn = wh + f * (v - wh); // linear interpolation\n\n\tvar r;\n\tvar g;\n\tvar b;\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tvar c = cmyk[0] / 100;\n\tvar m = cmyk[1] / 100;\n\tvar y = cmyk[2] / 100;\n\tvar k = cmyk[3] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = 1 - Math.min(1, c * (1 - k) + k);\n\tg = 1 - Math.min(1, m * (1 - k) + k);\n\tb = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tvar x = xyz[0] / 100;\n\tvar y = xyz[1] / 100;\n\tvar z = xyz[2] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar x;\n\tvar y;\n\tvar z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tvar y2 = Math.pow(y, 3);\n\tvar x2 = Math.pow(x, 3);\n\tvar z2 = Math.pow(z, 3);\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar hr;\n\tvar h;\n\tvar c;\n\n\thr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tc = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tvar l = lch[0];\n\tvar c = lch[1];\n\tvar h = lch[2];\n\tvar a;\n\tvar b;\n\tvar hr;\n\n\thr = h / 360 * 2 * Math.PI;\n\ta = c * Math.cos(hr);\n\tb = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\tvar value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tvar ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\n\t// we use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tvar ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tvar color = args % 10;\n\n\t// handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tvar mult = (~~(args > 50) + 1) * 0.5;\n\tvar r = ((color & 1) * mult) * 255;\n\tvar g = (((color >> 1) & 1) * mult) * 255;\n\tvar b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// handle greyscale\n\tif (args >= 232) {\n\t\tvar c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tvar rem;\n\tvar r = Math.floor(args / 36) / 5 * 255;\n\tvar g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tvar b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tvar integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tvar match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tvar colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(function (char) {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tvar integer = parseInt(colorString, 16);\n\tvar r = (integer >> 16) & 0xFF;\n\tvar g = (integer >> 8) & 0xFF;\n\tvar b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar max = Math.max(Math.max(r, g), b);\n\tvar min = Math.min(Math.min(r, g), b);\n\tvar chroma = (max - min);\n\tvar grayscale;\n\tvar hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma + 4;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar c = 1;\n\tvar f = 0;\n\n\tif (l < 0.5) {\n\t\tc = 2.0 * s * l;\n\t} else {\n\t\tc = 2.0 * s * (1.0 - l);\n\t}\n\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\n\tvar c = s * v;\n\tvar f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tvar h = hcg[0] / 360;\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tvar pure = [0, 0, 0];\n\tvar hi = (h % 1) * 6;\n\tvar v = hi % 1;\n\tvar w = 1 - v;\n\tvar mg = 0;\n\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar v = c + g * (1.0 - c);\n\tvar f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar l = g * (1.0 - c) + 0.5 * c;\n\tvar s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\tvar v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tvar w = hwb[1] / 100;\n\tvar b = hwb[2] / 100;\n\tvar v = 1 - b;\n\tvar c = v - w;\n\tvar g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = convert.gray.hsv = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tvar val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tvar integer = (val << 16) + (val << 8) + val;\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tvar val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n","/**\n*\n* jquery.sparkline.js\n*\n* v2.4.1\n* (c) Splunk, Inc\n* Contact: Gareth Watts (gareth@splunk.com)\n* http://omnipotent.net/jquery.sparkline/\n*\n* Generates inline sparkline charts from data supplied either to the method\n* or inline in HTML\n*\n* Compatible with Internet Explorer 6.0+ and modern browsers equipped with the canvas tag\n* (Firefox 2.0+, Safari, Opera, etc)\n*\n* License: New BSD License\n*\n* Copyright (c) 2012, Splunk Inc.\n* All rights reserved.\n*\n* Redistribution and use in source and binary forms, with or without modification,\n* are permitted provided that the following conditions are met:\n*\n* * Redistributions of source code must retain the above copyright notice,\n* this list of conditions and the following disclaimer.\n* * Redistributions in binary form must reproduce the above copyright notice,\n* this list of conditions and the following disclaimer in the documentation\n* and/or other materials provided with the distribution.\n* * Neither the name of Splunk Inc nor the names of its contributors may\n* be used to endorse or promote products derived from this software without\n* specific prior written permission.\n*\n* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY\n* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT\n* SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT\n* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\n* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*\n*\n* Usage:\n* $(selector).sparkline(values, options)\n*\n* If values is undefined or set to 'html' then the data values are read from the specified tag:\n*

Sparkline: 1,4,6,6,8,5,3,5

\n* $('.sparkline').sparkline();\n* There must be no spaces in the enclosed data set\n*\n* Otherwise values must be an array of numbers or null values\n*

Sparkline: This text replaced if the browser is compatible

\n* $('#sparkline1').sparkline([1,4,6,6,8,5,3,5])\n* $('#sparkline2').sparkline([1,4,6,null,null,5,3,5])\n*\n* Values can also be specified in an HTML comment, or as a values attribute:\n*

Sparkline:

\n*

Sparkline:

\n* $('.sparkline').sparkline();\n*\n* For line charts, x values can also be specified:\n*

Sparkline: 1:1,2.7:4,3.4:6,5:6,6:8,8.7:5,9:3,10:5

\n* $('#sparkline1').sparkline([ [1,1], [2.7,4], [3.4,6], [5,6], [6,8], [8.7,5], [9,3], [10,5] ])\n*\n* By default, options should be passed in as the second argument to the sparkline function:\n* $('.sparkline').sparkline([1,2,3,4], {type: 'bar'})\n*\n* Options can also be set by passing them on the tag itself. This feature is disabled by default though\n* as there's a slight performance overhead:\n* $('.sparkline').sparkline([1,2,3,4], {enableTagOptions: true})\n*

Sparkline: loading

\n* Prefix all options supplied as tag attribute with \"spark\" (configurable by setting tagOptionsPrefix)\n*\n* Supported options:\n* lineColor - Color of the line used for the chart\n* fillColor - Color used to fill in the chart - Set to '' or false for a transparent chart\n* width - Width of the chart - Defaults to 3 times the number of values in pixels\n* height - Height of the chart - Defaults to the height of the containing element\n* chartRangeMin - Specify the minimum value to use for the Y range of the chart - Defaults to the minimum value supplied\n* chartRangeMax - Specify the maximum value to use for the Y range of the chart - Defaults to the maximum value supplied\n* chartRangeClip - Clip out of range values to the max/min specified by chartRangeMin and chartRangeMax\n* chartRangeMinX - Specify the minimum value to use for the X range of the chart - Defaults to the minimum value supplied\n* chartRangeMaxX - Specify the maximum value to use for the X range of the chart - Defaults to the maximum value supplied\n* composite - If true then don't erase any existing chart attached to the tag, but draw\n* another chart over the top - Note that width and height are ignored if an\n* existing chart is detected.\n* tagValuesAttribute - Name of tag attribute to check for data values - Defaults to 'values'\n* enableTagOptions - Whether to check tags for sparkline options\n* tagOptionsPrefix - Prefix used for options supplied as tag attributes - Defaults to 'spark'\n* disableHiddenCheck - If set to true, then the plugin will assume that charts will never be drawn into a\n* hidden dom element, avoding a browser reflow\n* disableInteraction - If set to true then all mouseover/click interaction behaviour will be disabled,\n* making the plugin perform much like it did in 1.x\n* disableTooltips - If set to true then tooltips will be disabled - Defaults to false (tooltips enabled)\n* disableHighlight - If set to true then highlighting of selected chart elements on mouseover will be disabled\n* defaults to false (highlights enabled)\n* highlightLighten - Factor to lighten/darken highlighted chart values by - Defaults to 1.4 for a 40% increase\n* tooltipContainer - Specify which DOM element the tooltip should be rendered into - defaults to document.body\n* tooltipClassname - Optional CSS classname to apply to tooltips - If not specified then a default style will be applied\n* tooltipOffsetX - How many pixels away from the mouse pointer to render the tooltip on the X axis\n* tooltipOffsetY - How many pixels away from the mouse pointer to render the tooltip on the r axis\n* tooltipFormatter - Optional callback that allows you to override the HTML displayed in the tooltip\n* callback is given arguments of (sparkline, options, fields)\n* tooltipChartTitle - If specified then the tooltip uses the string specified by this setting as a title\n* tooltipFormat - A format string or SPFormat object (or an array thereof for multiple entries)\n* to control the format of the tooltip\n* tooltipPrefix - A string to prepend to each field displayed in a tooltip\n* tooltipSuffix - A string to append to each field displayed in a tooltip\n* tooltipSkipNull - If true then null values will not have a tooltip displayed (defaults to true)\n* tooltipValueLookups - An object or range map to map field values to tooltip strings\n* (eg. to map -1 to \"Lost\", 0 to \"Draw\", and 1 to \"Win\")\n* numberFormatter - Optional callback for formatting numbers in tooltips\n* numberDigitGroupSep - Character to use for group separator in numbers \"1,234\" - Defaults to \",\"\n* numberDecimalMark - Character to use for the decimal point when formatting numbers - Defaults to \".\"\n* numberDigitGroupCount - Number of digits between group separator - Defaults to 3\n*\n* There are 7 types of sparkline, selected by supplying a \"type\" option of 'line' (default),\n* 'bar', 'tristate', 'bullet', 'discrete', 'pie' or 'box'\n* line - Line chart. Options:\n* spotColor - Set to '' to not end each line in a circular spot\n* minSpotColor - If set, color of spot at minimum value\n* maxSpotColor - If set, color of spot at maximum value\n* spotRadius - Radius in pixels\n* lineWidth - Width of line in pixels\n* normalRangeMin\n* normalRangeMax - If set draws a filled horizontal bar between these two values marking the \"normal\"\n* or expected range of values\n* normalRangeColor - Color to use for the above bar\n* drawNormalOnTop - Draw the normal range above the chart fill color if true\n* defaultPixelsPerValue - Defaults to 3 pixels of width for each value in the chart\n* highlightSpotColor - The color to use for drawing a highlight spot on mouseover - Set to null to disable\n* highlightLineColor - The color to use for drawing a highlight line on mouseover - Set to null to disable\n* valueSpots - Specify which points to draw spots on, and in which color. Accepts a range map\n*\n* bar - Bar chart. Options:\n* barColor - Color of bars for postive values\n* negBarColor - Color of bars for negative values\n* zeroColor - Color of bars with zero values\n* nullColor - Color of bars with null values - Defaults to omitting the bar entirely\n* barWidth - Width of bars in pixels\n* colorMap - Optional mappnig of values to colors to override the *BarColor values above\n* can be an Array of values to control the color of individual bars or a range map\n* to specify colors for individual ranges of values\n* barSpacing - Gap between bars in pixels\n* zeroAxis - Centers the y-axis around zero if true\n*\n* tristate - Charts values of win (>0), lose (<0) or draw (=0)\n* posBarColor - Color of win values\n* negBarColor - Color of lose values\n* zeroBarColor - Color of draw values\n* barWidth - Width of bars in pixels\n* barSpacing - Gap between bars in pixels\n* colorMap - Optional mappnig of values to colors to override the *BarColor values above\n* can be an Array of values to control the color of individual bars or a range map\n* to specify colors for individual ranges of values\n*\n* discrete - Options:\n* lineHeight - Height of each line in pixels - Defaults to 30% of the graph height\n* thesholdValue - Values less than this value will be drawn using thresholdColor instead of lineColor\n* thresholdColor\n*\n* bullet - Values for bullet graphs msut be in the order: target, performance, range1, range2, range3, ...\n* options:\n* targetColor - The color of the vertical target marker\n* targetWidth - The width of the target marker in pixels\n* performanceColor - The color of the performance measure horizontal bar\n* rangeColors - Colors to use for each qualitative range background color\n*\n* pie - Pie chart. Options:\n* sliceColors - An array of colors to use for pie slices\n* offset - Angle in degrees to offset the first slice - Try -90 or +90\n* borderWidth - Width of border to draw around the pie chart, in pixels - Defaults to 0 (no border)\n* borderColor - Color to use for the pie chart border - Defaults to #000\n*\n* box - Box plot. Options:\n* raw - Set to true to supply pre-computed plot points as values\n* values should be: low_outlier, low_whisker, q1, median, q3, high_whisker, high_outlier\n* When set to false you can supply any number of values and the box plot will\n* be computed for you. Default is false.\n* showOutliers - Set to true (default) to display outliers as circles\n* outlierIQR - Interquartile range used to determine outliers. Default 1.5\n* boxLineColor - Outline color of the box\n* boxFillColor - Fill color for the box\n* whiskerColor - Line color used for whiskers\n* outlierLineColor - Outline color of outlier circles\n* outlierFillColor - Fill color of the outlier circles\n* spotRadius - Radius of outlier circles\n* medianColor - Line color of the median line\n* target - Draw a target cross hair at the supplied value (default undefined)\n*\n*\n*\n* Examples:\n* $('#sparkline1').sparkline(myvalues, { lineColor: '#f00', fillColor: false });\n* $('.barsparks').sparkline('html', { type:'bar', height:'40px', barWidth:5 });\n* $('#tristate').sparkline([1,1,-1,1,0,0,-1], { type:'tristate' }):\n* $('#discrete').sparkline([1,3,4,5,5,3,4,5], { type:'discrete' });\n* $('#bullet').sparkline([10,12,12,9,7], { type:'bullet' });\n* $('#pie').sparkline([1,1,2], { type:'pie' });\n*/\n\n/*jslint regexp: true, browser: true, jquery: true, white: true, nomen: false, plusplus: false, maxerr: 500, indent: 4 */\n\n(function(document, Math, undefined) { // performance/minified-size optimization\n(function(factory) {\n if(typeof define === 'function' && define.amd) {\n define(['jquery'], factory);\n } else if (jQuery && !jQuery.fn.sparkline) {\n factory(jQuery);\n }\n}\n(function($) {\n 'use strict';\n\n var UNSET_OPTION = {},\n getDefaults, createClass, SPFormat, clipval, quartile, normalizeValue, normalizeValues,\n remove, isNumber, all, sum, addCSS, ensureArray, formatNumber, RangeMap,\n MouseHandler, Tooltip, barHighlightMixin,\n line, bar, tristate, discrete, bullet, pie, box, defaultStyles, initStyles,\n VShape, VCanvas_base, VCanvas_canvas, VCanvas_vml, pending, shapeCount = 0;\n\n /**\n * Default configuration settings\n */\n getDefaults = function () {\n return {\n // Settings common to most/all chart types\n common: {\n type: 'line',\n lineColor: '#00f',\n fillColor: '#cdf',\n defaultPixelsPerValue: 3,\n width: 'auto',\n height: 'auto',\n composite: false,\n tagValuesAttribute: 'values',\n tagOptionsPrefix: 'spark',\n enableTagOptions: false,\n enableHighlight: true,\n highlightLighten: 1.4,\n tooltipSkipNull: true,\n tooltipPrefix: '',\n tooltipSuffix: '',\n disableHiddenCheck: false,\n numberFormatter: false,\n numberDigitGroupCount: 3,\n numberDigitGroupSep: ',',\n numberDecimalMark: '.',\n disableTooltips: false,\n disableInteraction: false\n },\n // Defaults for line charts\n line: {\n spotColor: '#f80',\n highlightSpotColor: '#5f5',\n highlightLineColor: '#f22',\n spotRadius: 1.5,\n minSpotColor: '#f80',\n maxSpotColor: '#f80',\n lineWidth: 1,\n normalRangeMin: undefined,\n normalRangeMax: undefined,\n normalRangeColor: '#ccc',\n drawNormalOnTop: false,\n chartRangeMin: undefined,\n chartRangeMax: undefined,\n chartRangeMinX: undefined,\n chartRangeMaxX: undefined,\n tooltipFormat: new SPFormat(' {{prefix}}{{y}}{{suffix}}')\n },\n // Defaults for bar charts\n bar: {\n barColor: '#3366cc',\n negBarColor: '#f44',\n stackedBarColor: ['#3366cc', '#dc3912', '#ff9900', '#109618', '#66aa00',\n '#dd4477', '#0099c6', '#990099'],\n zeroColor: undefined,\n nullColor: undefined,\n zeroAxis: true,\n barWidth: 4,\n barSpacing: 1,\n chartRangeMax: undefined,\n chartRangeMin: undefined,\n chartRangeClip: false,\n colorMap: undefined,\n tooltipFormat: new SPFormat(' {{prefix}}{{value}}{{suffix}}')\n },\n // Defaults for tristate charts\n tristate: {\n barWidth: 4,\n barSpacing: 1,\n posBarColor: '#6f6',\n negBarColor: '#f44',\n zeroBarColor: '#999',\n colorMap: {},\n tooltipFormat: new SPFormat(' {{value:map}}'),\n tooltipValueLookups: { map: { '-1': 'Loss', '0': 'Draw', '1': 'Win' } }\n },\n // Defaults for discrete charts\n discrete: {\n lineHeight: 'auto',\n thresholdColor: undefined,\n thresholdValue: 0,\n chartRangeMax: undefined,\n chartRangeMin: undefined,\n chartRangeClip: false,\n tooltipFormat: new SPFormat('{{prefix}}{{value}}{{suffix}}')\n },\n // Defaults for bullet charts\n bullet: {\n targetColor: '#f33',\n targetWidth: 3, // width of the target bar in pixels\n performanceColor: '#33f',\n rangeColors: ['#d3dafe', '#a8b6ff', '#7f94ff'],\n base: undefined, // set this to a number to change the base start number\n tooltipFormat: new SPFormat('{{fieldkey:fields}} - {{value}}'),\n tooltipValueLookups: { fields: {r: 'Range', p: 'Performance', t: 'Target'} }\n },\n // Defaults for pie charts\n pie: {\n offset: 0,\n sliceColors: ['#3366cc', '#dc3912', '#ff9900', '#109618', '#66aa00',\n '#dd4477', '#0099c6', '#990099'],\n borderWidth: 0,\n borderColor: '#000',\n tooltipFormat: new SPFormat(' {{value}} ({{percent.1}}%)')\n },\n // Defaults for box plots\n box: {\n raw: false,\n boxLineColor: '#000',\n boxFillColor: '#cdf',\n whiskerColor: '#000',\n outlierLineColor: '#333',\n outlierFillColor: '#fff',\n medianColor: '#f00',\n showOutliers: true,\n outlierIQR: 1.5,\n spotRadius: 1.5,\n target: undefined,\n targetColor: '#4a2',\n chartRangeMax: undefined,\n chartRangeMin: undefined,\n tooltipFormat: new SPFormat('{{field:fields}}: {{value}}'),\n tooltipFormatFieldlistKey: 'field',\n tooltipValueLookups: { fields: { lq: 'Lower Quartile', med: 'Median',\n uq: 'Upper Quartile', lo: 'Left Outlier', ro: 'Right Outlier',\n lw: 'Left Whisker', rw: 'Right Whisker'} }\n }\n };\n };\n\n // You can have tooltips use a css class other than jqstooltip by specifying tooltipClassname\n defaultStyles = '.jqstooltip { ' +\n 'position: absolute;' +\n 'left: 0px;' +\n 'top: 0px;' +\n 'visibility: hidden;' +\n 'background: rgb(0, 0, 0) transparent;' +\n 'background-color: rgba(0,0,0,0.6);' +\n 'filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000);' +\n '-ms-filter: \"progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)\";' +\n 'color: white;' +\n 'font: 10px arial, san serif;' +\n 'text-align: left;' +\n 'white-space: nowrap;' +\n 'padding: 5px;' +\n 'border: 1px solid white;' +\n 'box-sizing: content-box;' +\n 'z-index: 10000;' +\n '}' +\n '.jqsfield { ' +\n 'color: white;' +\n 'font: 10px arial, san serif;' +\n 'text-align: left;' +\n '}';\n\n /**\n * Utilities\n */\n\n createClass = function (/* [baseclass, [mixin, ...]], definition */) {\n var Class, args;\n Class = function () {\n this.init.apply(this, arguments);\n };\n if (arguments.length > 1) {\n if (arguments[0]) {\n Class.prototype = $.extend(new arguments[0](), arguments[arguments.length - 1]);\n Class._super = arguments[0].prototype;\n } else {\n Class.prototype = arguments[arguments.length - 1];\n }\n if (arguments.length > 2) {\n args = Array.prototype.slice.call(arguments, 1, -1);\n args.unshift(Class.prototype);\n $.extend.apply($, args);\n }\n } else {\n Class.prototype = arguments[0];\n }\n Class.prototype.cls = Class;\n return Class;\n };\n\n /**\n * Wraps a format string for tooltips\n * {{x}}\n * {{x.2}\n * {{x:months}}\n */\n $.SPFormatClass = SPFormat = createClass({\n fre: /\\{\\{([\\w.]+?)(:(.+?))?\\}\\}/g,\n precre: /(\\w+)\\.(\\d+)/,\n\n init: function (format, fclass) {\n this.format = format;\n this.fclass = fclass;\n },\n\n render: function (fieldset, lookups, options) {\n var self = this,\n fields = fieldset,\n match, token, lookupkey, fieldvalue, prec;\n return this.format.replace(this.fre, function () {\n var lookup;\n token = arguments[1];\n lookupkey = arguments[3];\n match = self.precre.exec(token);\n if (match) {\n prec = match[2];\n token = match[1];\n } else {\n prec = false;\n }\n fieldvalue = fields[token];\n if (fieldvalue === undefined) {\n return '';\n }\n if (lookupkey && lookups && lookups[lookupkey]) {\n lookup = lookups[lookupkey];\n if (lookup.get) { // RangeMap\n return lookups[lookupkey].get(fieldvalue) || fieldvalue;\n } else {\n return lookups[lookupkey][fieldvalue] || fieldvalue;\n }\n }\n if (isNumber(fieldvalue)) {\n if (options.get('numberFormatter')) {\n fieldvalue = options.get('numberFormatter')(fieldvalue);\n } else {\n fieldvalue = formatNumber(fieldvalue, prec,\n options.get('numberDigitGroupCount'),\n options.get('numberDigitGroupSep'),\n options.get('numberDecimalMark'));\n }\n }\n return fieldvalue;\n });\n }\n });\n\n // convience method to avoid needing the new operator\n $.spformat = function(format, fclass) {\n return new SPFormat(format, fclass);\n };\n\n clipval = function (val, min, max) {\n if (val < min) {\n return min;\n }\n if (val > max) {\n return max;\n }\n return val;\n };\n\n quartile = function (values, q) {\n var vl;\n if (q === 2) {\n vl = Math.floor(values.length / 2);\n return values.length % 2 ? values[vl] : (values[vl-1] + values[vl]) / 2;\n } else {\n if (values.length % 2 ) { // odd\n vl = (values.length * q + q) / 4;\n return vl % 1 ? (values[Math.floor(vl)] + values[Math.floor(vl) - 1]) / 2 : values[vl-1];\n } else { //even\n vl = (values.length * q + 2) / 4;\n return vl % 1 ? (values[Math.floor(vl)] + values[Math.floor(vl) - 1]) / 2 : values[vl-1];\n\n }\n }\n };\n\n normalizeValue = function (val) {\n var nf;\n switch (val) {\n case 'undefined':\n val = undefined;\n break;\n case 'null':\n val = null;\n break;\n case 'true':\n val = true;\n break;\n case 'false':\n val = false;\n break;\n default:\n nf = parseFloat(val);\n if (val == nf) {\n val = nf;\n }\n }\n return val;\n };\n\n normalizeValues = function (vals) {\n var i, result = [];\n for (i = vals.length; i--;) {\n result[i] = normalizeValue(vals[i]);\n }\n return result;\n };\n\n remove = function (vals, filter) {\n var i, vl, result = [];\n for (i = 0, vl = vals.length; i < vl; i++) {\n if (vals[i] !== filter) {\n result.push(vals[i]);\n }\n }\n return result;\n };\n\n isNumber = function (num) {\n return !isNaN(parseFloat(num)) && isFinite(num);\n };\n\n formatNumber = function (num, prec, groupsize, groupsep, decsep) {\n var p, i;\n num = (prec === false ? parseFloat(num).toString() : num.toFixed(prec)).split('');\n p = (p = $.inArray('.', num)) < 0 ? num.length : p;\n if (p < num.length) {\n num[p] = decsep;\n }\n for (i = p - groupsize; i > 0; i -= groupsize) {\n num.splice(i, 0, groupsep);\n }\n return num.join('');\n };\n\n // determine if all values of an array match a value\n // returns true if the array is empty\n all = function (val, arr, ignoreNull) {\n var i;\n for (i = arr.length; i--; ) {\n if (ignoreNull && arr[i] === null) continue;\n if (arr[i] !== val) {\n return false;\n }\n }\n return true;\n };\n\n // sums the numeric values in an array, ignoring other values\n sum = function (vals) {\n var total = 0, i;\n for (i = vals.length; i--;) {\n total += typeof vals[i] === 'number' ? vals[i] : 0;\n }\n return total;\n };\n\n ensureArray = function (val) {\n return $.isArray(val) ? val : [val];\n };\n\n // http://paulirish.com/2008/bookmarklet-inject-new-css-rules/\n addCSS = function(css) {\n var tag, iefail;\n if (document.createStyleSheet) {\n try {\n document.createStyleSheet().cssText = css;\n return;\n } catch (e) {\n // IE <= 9 maxes out at 31 stylesheets; inject into page instead.\n iefail = true;\n }\n }\n tag = document.createElement('style');\n tag.type = 'text/css';\n document.getElementsByTagName('head')[0].appendChild(tag);\n if (iefail) {\n document.styleSheets[document.styleSheets.length - 1].cssText = css;\n } else {\n tag[(typeof document.body.style.WebkitAppearance == 'string') /* webkit only */ ? 'innerText' : 'innerHTML'] = css;\n }\n };\n\n // Provide a cross-browser interface to a few simple drawing primitives\n $.fn.simpledraw = function (width, height, useExisting, interact) {\n var target, mhandler;\n if (useExisting && (target = this.data('_jqs_vcanvas'))) {\n return target;\n }\n\n if ($.fn.sparkline.canvas === false) {\n // We've already determined that neither Canvas nor VML are available\n return false;\n\n } else if ($.fn.sparkline.canvas === undefined) {\n // No function defined yet -- need to see if we support Canvas or VML\n var el = document.createElement('canvas');\n if (!!(el.getContext && el.getContext('2d'))) {\n // Canvas is available\n $.fn.sparkline.canvas = function(width, height, target, interact) {\n return new VCanvas_canvas(width, height, target, interact);\n };\n } else if (document.namespaces && !document.namespaces.v) {\n // VML is available\n document.namespaces.add('v', 'urn:schemas-microsoft-com:vml', '#default#VML');\n $.fn.sparkline.canvas = function(width, height, target, interact) {\n return new VCanvas_vml(width, height, target);\n };\n } else {\n // Neither Canvas nor VML are available\n $.fn.sparkline.canvas = false;\n return false;\n }\n }\n\n if (width === undefined) {\n width = $(this).innerWidth();\n }\n if (height === undefined) {\n height = $(this).innerHeight();\n }\n\n target = $.fn.sparkline.canvas(width, height, this, interact);\n\n mhandler = $(this).data('_jqs_mhandler');\n if (mhandler) {\n mhandler.registerCanvas(target);\n }\n return target;\n };\n\n $.fn.cleardraw = function () {\n var target = this.data('_jqs_vcanvas');\n if (target) {\n target.reset();\n }\n };\n\n $.RangeMapClass = RangeMap = createClass({\n init: function (map) {\n var key, range, rangelist = [];\n for (key in map) {\n if (map.hasOwnProperty(key) && typeof key === 'string' && key.indexOf(':') > -1) {\n range = key.split(':');\n range[0] = range[0].length === 0 ? -Infinity : parseFloat(range[0]);\n range[1] = range[1].length === 0 ? Infinity : parseFloat(range[1]);\n range[2] = map[key];\n rangelist.push(range);\n }\n }\n this.map = map;\n this.rangelist = rangelist || false;\n },\n\n get: function (value) {\n var rangelist = this.rangelist,\n i, range, result;\n if ((result = this.map[value]) !== undefined) {\n return result;\n }\n if (rangelist) {\n for (i = rangelist.length; i--;) {\n range = rangelist[i];\n if (range[0] <= value && range[1] >= value) {\n return range[2];\n }\n }\n }\n return undefined;\n }\n });\n\n // Convenience function\n $.range_map = function(map) {\n return new RangeMap(map);\n };\n\n MouseHandler = createClass({\n init: function (el, options) {\n var $el = $(el);\n this.$el = $el;\n this.options = options;\n this.currentPageX = 0;\n this.currentPageY = 0;\n this.el = el;\n this.splist = [];\n this.tooltip = null;\n this.over = false;\n this.displayTooltips = !options.get('disableTooltips');\n this.highlightEnabled = !options.get('disableHighlight');\n },\n\n registerSparkline: function (sp) {\n this.splist.push(sp);\n if (this.over) {\n this.updateDisplay();\n }\n },\n\n registerCanvas: function (canvas) {\n var $canvas = $(canvas.canvas);\n this.canvas = canvas;\n this.$canvas = $canvas;\n $canvas.mouseenter($.proxy(this.mouseenter, this));\n $canvas.mouseleave($.proxy(this.mouseleave, this));\n $canvas.click($.proxy(this.mouseclick, this));\n },\n\n reset: function (removeTooltip) {\n this.splist = [];\n if (this.tooltip && removeTooltip) {\n this.tooltip.remove();\n this.tooltip = undefined;\n }\n },\n\n mouseclick: function (e) {\n var clickEvent = $.Event('sparklineClick');\n clickEvent.originalEvent = e;\n clickEvent.sparklines = this.splist;\n this.$el.trigger(clickEvent);\n },\n\n mouseenter: function (e) {\n $(document.body).unbind('mousemove.jqs');\n $(document.body).bind('mousemove.jqs', $.proxy(this.mousemove, this));\n this.over = true;\n this.currentPageX = e.pageX;\n this.currentPageY = e.pageY;\n this.currentEl = e.target;\n if (!this.tooltip && this.displayTooltips) {\n this.tooltip = new Tooltip(this.options);\n this.tooltip.updatePosition(e.pageX, e.pageY);\n }\n this.updateDisplay();\n },\n\n mouseleave: function () {\n $(document.body).unbind('mousemove.jqs');\n var splist = this.splist,\n spcount = splist.length,\n needsRefresh = false,\n sp, i;\n this.over = false;\n this.currentEl = null;\n\n if (this.tooltip) {\n this.tooltip.remove();\n this.tooltip = null;\n }\n\n for (i = 0; i < spcount; i++) {\n sp = splist[i];\n if (sp.clearRegionHighlight()) {\n needsRefresh = true;\n }\n }\n\n if (needsRefresh) {\n this.canvas.render();\n }\n },\n\n mousemove: function (e) {\n this.currentPageX = e.pageX;\n this.currentPageY = e.pageY;\n this.currentEl = e.target;\n if (this.tooltip) {\n this.tooltip.updatePosition(e.pageX, e.pageY);\n }\n this.updateDisplay();\n },\n\n updateDisplay: function () {\n var splist = this.splist,\n spcount = splist.length,\n needsRefresh = false,\n offset = this.$canvas.offset(),\n localX = this.currentPageX - offset.left,\n localY = this.currentPageY - offset.top,\n tooltiphtml, sp, i, result, changeEvent;\n if (!this.over) {\n return;\n }\n for (i = 0; i < spcount; i++) {\n sp = splist[i];\n result = sp.setRegionHighlight(this.currentEl, localX, localY);\n if (result) {\n needsRefresh = true;\n }\n }\n if (needsRefresh) {\n changeEvent = $.Event('sparklineRegionChange');\n changeEvent.sparklines = this.splist;\n this.$el.trigger(changeEvent);\n if (this.tooltip) {\n tooltiphtml = '';\n for (i = 0; i < spcount; i++) {\n sp = splist[i];\n tooltiphtml += sp.getCurrentRegionTooltip();\n }\n this.tooltip.setContent(tooltiphtml);\n }\n if (!this.disableHighlight) {\n this.canvas.render();\n }\n }\n if (result === null) {\n this.mouseleave();\n }\n }\n });\n\n\n Tooltip = createClass({\n sizeStyle: 'position: static !important;' +\n 'display: block !important;' +\n 'visibility: hidden !important;' +\n 'float: left !important;',\n\n init: function (options) {\n var tooltipClassname = options.get('tooltipClassname', 'jqstooltip'),\n sizetipStyle = this.sizeStyle,\n offset;\n this.container = options.get('tooltipContainer') || document.body;\n this.tooltipOffsetX = options.get('tooltipOffsetX', 10);\n this.tooltipOffsetY = options.get('tooltipOffsetY', 12);\n // remove any previous lingering tooltip\n $('#jqssizetip').remove();\n $('#jqstooltip').remove();\n this.sizetip = $('
', {\n id: 'jqssizetip',\n style: sizetipStyle,\n 'class': tooltipClassname\n });\n this.tooltip = $('
', {\n id: 'jqstooltip',\n 'class': tooltipClassname\n }).appendTo(this.container);\n // account for the container's location\n offset = this.tooltip.offset();\n this.offsetLeft = offset.left;\n this.offsetTop = offset.top;\n this.hidden = true;\n $(window).unbind('resize.jqs scroll.jqs');\n $(window).bind('resize.jqs scroll.jqs', $.proxy(this.updateWindowDims, this));\n this.updateWindowDims();\n },\n\n updateWindowDims: function () {\n this.scrollTop = $(window).scrollTop();\n this.scrollLeft = $(window).scrollLeft();\n this.scrollRight = this.scrollLeft + $(window).width();\n this.updatePosition();\n },\n\n getSize: function (content) {\n this.sizetip.html(content).appendTo(this.container);\n this.width = this.sizetip.width() + 1;\n this.height = this.sizetip.height();\n this.sizetip.remove();\n },\n\n setContent: function (content) {\n if (!content) {\n this.tooltip.css('visibility', 'hidden');\n this.hidden = true;\n return;\n }\n this.getSize(content);\n this.tooltip.html(content)\n .css({\n 'width': this.width,\n 'height': this.height,\n 'visibility': 'visible'\n });\n if (this.hidden) {\n this.hidden = false;\n this.updatePosition();\n }\n },\n\n updatePosition: function (x, y) {\n if (x === undefined) {\n if (this.mousex === undefined) {\n return;\n }\n x = this.mousex - this.offsetLeft;\n y = this.mousey - this.offsetTop;\n\n } else {\n this.mousex = x = x - this.offsetLeft;\n this.mousey = y = y - this.offsetTop;\n }\n if (!this.height || !this.width || this.hidden) {\n return;\n }\n\n y -= this.height + this.tooltipOffsetY;\n x += this.tooltipOffsetX;\n\n if (y < this.scrollTop) {\n y = this.scrollTop;\n }\n if (x < this.scrollLeft) {\n x = this.scrollLeft;\n } else if (x + this.width > this.scrollRight) {\n x = this.scrollRight - this.width;\n }\n\n this.tooltip.css({\n 'left': x,\n 'top': y\n });\n },\n\n remove: function () {\n this.tooltip.remove();\n this.sizetip.remove();\n this.sizetip = this.tooltip = undefined;\n $(window).unbind('resize.jqs scroll.jqs');\n }\n });\n\n initStyles = function() {\n addCSS(defaultStyles);\n };\n\n $(initStyles);\n\n pending = [];\n $.fn.sparkline = function (userValues, userOptions) {\n return this.each(function () {\n var options = new $.fn.sparkline.options(this, userOptions),\n $this = $(this),\n render, i;\n render = function () {\n var values, width, height, tmp, mhandler, sp, vals;\n if (userValues === 'html' || userValues === undefined) {\n vals = this.getAttribute(options.get('tagValuesAttribute'));\n if (vals === undefined || vals === null) {\n vals = $this.html();\n }\n values = vals.replace(/(^\\s*\\s*$)|\\s+/g, '').split(',');\n } else {\n values = userValues;\n }\n\n width = options.get('width') === 'auto' ? values.length * options.get('defaultPixelsPerValue') : options.get('width');\n if (options.get('height') === 'auto') {\n if (!options.get('composite') || !$.data(this, '_jqs_vcanvas')) {\n // must be a better way to get the line height\n tmp = document.createElement('span');\n tmp.innerHTML = 'a';\n $this.html(tmp);\n height = $(tmp).innerHeight() || $(tmp).height();\n $(tmp).remove();\n tmp = null;\n }\n } else {\n height = options.get('height');\n }\n\n if (!options.get('disableInteraction')) {\n mhandler = $.data(this, '_jqs_mhandler');\n if (!mhandler) {\n mhandler = new MouseHandler(this, options);\n $.data(this, '_jqs_mhandler', mhandler);\n } else if (!options.get('composite')) {\n mhandler.reset();\n }\n } else {\n mhandler = false;\n }\n\n if (options.get('composite') && !$.data(this, '_jqs_vcanvas')) {\n if (!$.data(this, '_jqs_errnotify')) {\n alert('Attempted to attach a composite sparkline to an element with no existing sparkline');\n $.data(this, '_jqs_errnotify', true);\n }\n return;\n }\n\n sp = new $.fn.sparkline[options.get('type')](this, values, options, width, height);\n\n sp.render();\n\n if (mhandler) {\n mhandler.registerSparkline(sp);\n }\n };\n if (($(this).html() && !options.get('disableHiddenCheck') && $(this).is(':hidden')) || !$(this).parents('body').length) {\n if (!options.get('composite') && $.data(this, '_jqs_pending')) {\n // remove any existing references to the element\n for (i = pending.length; i; i--) {\n if (pending[i - 1][0] == this) {\n pending.splice(i - 1, 1);\n }\n }\n }\n pending.push([this, render]);\n $.data(this, '_jqs_pending', true);\n } else {\n render.call(this);\n }\n });\n };\n\n $.fn.sparkline.defaults = getDefaults();\n\n\n $.sparkline_display_visible = function () {\n var el, i, pl;\n var done = [];\n for (i = 0, pl = pending.length; i < pl; i++) {\n el = pending[i][0];\n if ($(el).is(':visible') && !$(el).parents().is(':hidden')) {\n pending[i][1].call(el);\n $.data(pending[i][0], '_jqs_pending', false);\n done.push(i);\n } else if (!$(el).closest('html').length && !$.data(el, '_jqs_pending')) {\n // element has been inserted and removed from the DOM\n // If it was not yet inserted into the dom then the .data request\n // will return true.\n // removing from the dom causes the data to be removed.\n $.data(pending[i][0], '_jqs_pending', false);\n done.push(i);\n }\n }\n for (i = done.length; i; i--) {\n pending.splice(done[i - 1], 1);\n }\n };\n\n\n /**\n * User option handler\n */\n $.fn.sparkline.options = createClass({\n init: function (tag, userOptions) {\n var extendedOptions, defaults, base, tagOptionType;\n this.userOptions = userOptions = userOptions || {};\n this.tag = tag;\n this.tagValCache = {};\n defaults = $.fn.sparkline.defaults;\n base = defaults.common;\n this.tagOptionsPrefix = userOptions.enableTagOptions && (userOptions.tagOptionsPrefix || base.tagOptionsPrefix);\n\n tagOptionType = this.getTagSetting('type');\n if (tagOptionType === UNSET_OPTION) {\n extendedOptions = defaults[userOptions.type || base.type];\n } else {\n extendedOptions = defaults[tagOptionType];\n }\n this.mergedOptions = $.extend({}, base, extendedOptions, userOptions);\n },\n\n\n getTagSetting: function (key) {\n var prefix = this.tagOptionsPrefix,\n val, i, pairs, keyval;\n if (prefix === false || prefix === undefined) {\n return UNSET_OPTION;\n }\n if (this.tagValCache.hasOwnProperty(key)) {\n val = this.tagValCache.key;\n } else {\n val = this.tag.getAttribute(prefix + key);\n if (val === undefined || val === null) {\n val = UNSET_OPTION;\n } else if (val.substr(0, 1) === '[') {\n val = val.substr(1, val.length - 2).split(',');\n for (i = val.length; i--;) {\n val[i] = normalizeValue(val[i].replace(/(^\\s*)|(\\s*$)/g, ''));\n }\n } else if (val.substr(0, 1) === '{') {\n pairs = val.substr(1, val.length - 2).split(',');\n val = {};\n for (i = pairs.length; i--;) {\n keyval = pairs[i].split(':', 2);\n val[keyval[0].replace(/(^\\s*)|(\\s*$)/g, '')] = normalizeValue(keyval[1].replace(/(^\\s*)|(\\s*$)/g, ''));\n }\n } else {\n val = normalizeValue(val);\n }\n this.tagValCache.key = val;\n }\n return val;\n },\n\n get: function (key, defaultval) {\n var tagOption = this.getTagSetting(key),\n result;\n if (tagOption !== UNSET_OPTION) {\n return tagOption;\n }\n return (result = this.mergedOptions[key]) === undefined ? defaultval : result;\n }\n });\n\n\n $.fn.sparkline._base = createClass({\n disabled: false,\n\n init: function (el, values, options, width, height) {\n this.el = el;\n this.$el = $(el);\n this.values = values;\n this.options = options;\n this.width = width;\n this.height = height;\n this.currentRegion = undefined;\n },\n\n /**\n * Setup the canvas\n */\n initTarget: function () {\n var interactive = !this.options.get('disableInteraction');\n if (!(this.target = this.$el.simpledraw(this.width, this.height, this.options.get('composite'), interactive))) {\n this.disabled = true;\n } else {\n this.canvasWidth = this.target.pixelWidth;\n this.canvasHeight = this.target.pixelHeight;\n }\n },\n\n /**\n * Actually render the chart to the canvas\n */\n render: function () {\n if (this.disabled) {\n this.el.innerHTML = '';\n return false;\n }\n return true;\n },\n\n /**\n * Return a region id for a given x/y co-ordinate\n */\n getRegion: function (x, y) {\n },\n\n /**\n * Highlight an item based on the moused-over x,y co-ordinate\n */\n setRegionHighlight: function (el, x, y) {\n var currentRegion = this.currentRegion,\n highlightEnabled = !this.options.get('disableHighlight'),\n newRegion;\n if (x > this.canvasWidth || y > this.canvasHeight || x < 0 || y < 0) {\n return null;\n }\n newRegion = this.getRegion(el, x, y);\n if (currentRegion !== newRegion) {\n if (currentRegion !== undefined && highlightEnabled) {\n this.removeHighlight();\n }\n this.currentRegion = newRegion;\n if (newRegion !== undefined && highlightEnabled) {\n this.renderHighlight();\n }\n return true;\n }\n return false;\n },\n\n /**\n * Reset any currently highlighted item\n */\n clearRegionHighlight: function () {\n if (this.currentRegion !== undefined) {\n this.removeHighlight();\n this.currentRegion = undefined;\n return true;\n }\n return false;\n },\n\n renderHighlight: function () {\n this.changeHighlight(true);\n },\n\n removeHighlight: function () {\n this.changeHighlight(false);\n },\n\n changeHighlight: function (highlight) {},\n\n /**\n * Fetch the HTML to display as a tooltip\n */\n getCurrentRegionTooltip: function () {\n var options = this.options,\n header = '',\n entries = [],\n fields, formats, formatlen, fclass, text, i,\n showFields, showFieldsKey, newFields, fv,\n formatter, format, fieldlen, j;\n if (this.currentRegion === undefined) {\n return '';\n }\n fields = this.getCurrentRegionFields();\n formatter = options.get('tooltipFormatter');\n if (formatter) {\n return formatter(this, options, fields);\n }\n if (options.get('tooltipChartTitle')) {\n header += '
' + options.get('tooltipChartTitle') + '
\\n';\n }\n formats = this.options.get('tooltipFormat');\n if (!formats) {\n return '';\n }\n if (!$.isArray(formats)) {\n formats = [formats];\n }\n if (!$.isArray(fields)) {\n fields = [fields];\n }\n showFields = this.options.get('tooltipFormatFieldlist');\n showFieldsKey = this.options.get('tooltipFormatFieldlistKey');\n if (showFields && showFieldsKey) {\n // user-selected ordering of fields\n newFields = [];\n for (i = fields.length; i--;) {\n fv = fields[i][showFieldsKey];\n if ((j = $.inArray(fv, showFields)) != -1) {\n newFields[j] = fields[i];\n }\n }\n fields = newFields;\n }\n formatlen = formats.length;\n fieldlen = fields.length;\n for (i = 0; i < formatlen; i++) {\n format = formats[i];\n if (typeof format === 'string') {\n format = new SPFormat(format);\n }\n fclass = format.fclass || 'jqsfield';\n for (j = 0; j < fieldlen; j++) {\n if (!fields[j].isNull || !options.get('tooltipSkipNull')) {\n $.extend(fields[j], {\n prefix: options.get('tooltipPrefix'),\n suffix: options.get('tooltipSuffix')\n });\n text = format.render(fields[j], options.get('tooltipValueLookups'), options);\n entries.push('
' + text + '
');\n }\n }\n }\n if (entries.length) {\n return header + entries.join('\\n');\n }\n return '';\n },\n\n getCurrentRegionFields: function () {},\n\n calcHighlightColor: function (color, options) {\n var highlightColor = options.get('highlightColor'),\n lighten = options.get('highlightLighten'),\n parse, mult, rgbnew, i;\n if (highlightColor) {\n return highlightColor;\n }\n if (lighten) {\n // extract RGB values\n parse = /^#([0-9a-f])([0-9a-f])([0-9a-f])$/i.exec(color) || /^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i.exec(color);\n if (parse) {\n rgbnew = [];\n mult = color.length === 4 ? 16 : 1;\n for (i = 0; i < 3; i++) {\n rgbnew[i] = clipval(Math.round(parseInt(parse[i + 1], 16) * mult * lighten), 0, 255);\n }\n return 'rgb(' + rgbnew.join(',') + ')';\n }\n\n }\n return color;\n }\n\n });\n\n barHighlightMixin = {\n changeHighlight: function (highlight) {\n var currentRegion = this.currentRegion,\n target = this.target,\n shapeids = this.regionShapes[currentRegion],\n newShapes;\n // will be null if the region value was null\n if (shapeids) {\n newShapes = this.renderRegion(currentRegion, highlight);\n if ($.isArray(newShapes) || $.isArray(shapeids)) {\n target.replaceWithShapes(shapeids, newShapes);\n this.regionShapes[currentRegion] = $.map(newShapes, function (newShape) {\n return newShape.id;\n });\n } else {\n target.replaceWithShape(shapeids, newShapes);\n this.regionShapes[currentRegion] = newShapes.id;\n }\n }\n },\n\n render: function () {\n var values = this.values,\n target = this.target,\n regionShapes = this.regionShapes,\n shapes, ids, i, j;\n\n if (!this.cls._super.render.call(this)) {\n return;\n }\n for (i = values.length; i--;) {\n shapes = this.renderRegion(i);\n if (shapes) {\n if ($.isArray(shapes)) {\n ids = [];\n for (j = shapes.length; j--;) {\n shapes[j].append();\n ids.push(shapes[j].id);\n }\n regionShapes[i] = ids;\n } else {\n shapes.append();\n regionShapes[i] = shapes.id; // store just the shapeid\n }\n } else {\n // null value\n regionShapes[i] = null;\n }\n }\n target.render();\n }\n };\n\n /**\n * Line charts\n */\n $.fn.sparkline.line = line = createClass($.fn.sparkline._base, {\n type: 'line',\n\n init: function (el, values, options, width, height) {\n line._super.init.call(this, el, values, options, width, height);\n this.vertices = [];\n this.regionMap = [];\n this.xvalues = [];\n this.yvalues = [];\n this.yminmax = [];\n this.hightlightSpotId = null;\n this.lastShapeId = null;\n this.initTarget();\n },\n\n getRegion: function (el, x, y) {\n var i,\n regionMap = this.regionMap; // maps regions to value positions\n for (i = regionMap.length; i--;) {\n if (regionMap[i] !== null && x >= regionMap[i][0] && x <= regionMap[i][1]) {\n return regionMap[i][2];\n }\n }\n return undefined;\n },\n\n getCurrentRegionFields: function () {\n var currentRegion = this.currentRegion;\n return {\n isNull: this.yvalues[currentRegion] === null,\n x: this.xvalues[currentRegion],\n y: this.yvalues[currentRegion],\n color: this.options.get('lineColor'),\n fillColor: this.options.get('fillColor'),\n offset: currentRegion\n };\n },\n\n renderHighlight: function () {\n var currentRegion = this.currentRegion,\n target = this.target,\n vertex = this.vertices[currentRegion],\n options = this.options,\n spotRadius = options.get('spotRadius'),\n highlightSpotColor = options.get('highlightSpotColor'),\n highlightLineColor = options.get('highlightLineColor'),\n highlightSpot, highlightLine;\n\n if (!vertex) {\n return;\n }\n if (spotRadius && highlightSpotColor) {\n highlightSpot = target.drawCircle(vertex[0], vertex[1],\n spotRadius, undefined, highlightSpotColor);\n this.highlightSpotId = highlightSpot.id;\n target.insertAfterShape(this.lastShapeId, highlightSpot);\n }\n if (highlightLineColor) {\n highlightLine = target.drawLine(vertex[0], this.canvasTop, vertex[0],\n this.canvasTop + this.canvasHeight, highlightLineColor);\n this.highlightLineId = highlightLine.id;\n target.insertAfterShape(this.lastShapeId, highlightLine);\n }\n },\n\n removeHighlight: function () {\n var target = this.target;\n if (this.highlightSpotId) {\n target.removeShapeId(this.highlightSpotId);\n this.highlightSpotId = null;\n }\n if (this.highlightLineId) {\n target.removeShapeId(this.highlightLineId);\n this.highlightLineId = null;\n }\n },\n\n scanValues: function () {\n var values = this.values,\n valcount = values.length,\n xvalues = this.xvalues,\n yvalues = this.yvalues,\n yminmax = this.yminmax,\n i, val, isStr, isArray, sp;\n for (i = 0; i < valcount; i++) {\n val = values[i];\n isStr = typeof(values[i]) === 'string';\n isArray = typeof(values[i]) === 'object' && values[i] instanceof Array;\n sp = isStr && values[i].split(':');\n if (isStr && sp.length === 2) { // x:y\n xvalues.push(Number(sp[0]));\n yvalues.push(Number(sp[1]));\n yminmax.push(Number(sp[1]));\n } else if (isArray) {\n xvalues.push(val[0]);\n yvalues.push(val[1]);\n yminmax.push(val[1]);\n } else {\n xvalues.push(i);\n if (values[i] === null || values[i] === 'null') {\n yvalues.push(null);\n } else {\n yvalues.push(Number(val));\n yminmax.push(Number(val));\n }\n }\n }\n if (this.options.get('xvalues')) {\n xvalues = this.options.get('xvalues');\n }\n\n this.maxy = this.maxyorg = Math.max.apply(Math, yminmax);\n this.miny = this.minyorg = Math.min.apply(Math, yminmax);\n\n this.maxx = Math.max.apply(Math, xvalues);\n this.minx = Math.min.apply(Math, xvalues);\n\n this.xvalues = xvalues;\n this.yvalues = yvalues;\n this.yminmax = yminmax;\n\n },\n\n processRangeOptions: function () {\n var options = this.options,\n normalRangeMin = options.get('normalRangeMin'),\n normalRangeMax = options.get('normalRangeMax');\n\n if (normalRangeMin !== undefined) {\n if (normalRangeMin < this.miny) {\n this.miny = normalRangeMin;\n }\n if (normalRangeMax > this.maxy) {\n this.maxy = normalRangeMax;\n }\n }\n if (options.get('chartRangeMin') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMin') < this.miny)) {\n this.miny = options.get('chartRangeMin');\n }\n if (options.get('chartRangeMax') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMax') > this.maxy)) {\n this.maxy = options.get('chartRangeMax');\n }\n if (options.get('chartRangeMinX') !== undefined && (options.get('chartRangeClipX') || options.get('chartRangeMinX') < this.minx)) {\n this.minx = options.get('chartRangeMinX');\n }\n if (options.get('chartRangeMaxX') !== undefined && (options.get('chartRangeClipX') || options.get('chartRangeMaxX') > this.maxx)) {\n this.maxx = options.get('chartRangeMaxX');\n }\n\n },\n\n drawNormalRange: function (canvasLeft, canvasTop, canvasHeight, canvasWidth, rangey) {\n var normalRangeMin = this.options.get('normalRangeMin'),\n normalRangeMax = this.options.get('normalRangeMax'),\n ytop = canvasTop + Math.round(canvasHeight - (canvasHeight * ((normalRangeMax - this.miny) / rangey))),\n height = Math.round((canvasHeight * (normalRangeMax - normalRangeMin)) / rangey);\n this.target.drawRect(canvasLeft, ytop, canvasWidth, height, undefined, this.options.get('normalRangeColor')).append();\n },\n\n render: function () {\n var options = this.options,\n target = this.target,\n canvasWidth = this.canvasWidth,\n canvasHeight = this.canvasHeight,\n vertices = this.vertices,\n spotRadius = options.get('spotRadius'),\n regionMap = this.regionMap,\n rangex, rangey, yvallast,\n canvasTop, canvasLeft,\n vertex, path, paths, x, y, xnext, xpos, xposnext,\n last, next, yvalcount, lineShapes, fillShapes, plen,\n valueSpots, hlSpotsEnabled, color, xvalues, yvalues, i;\n\n if (!line._super.render.call(this)) {\n return;\n }\n\n this.scanValues();\n this.processRangeOptions();\n\n xvalues = this.xvalues;\n yvalues = this.yvalues;\n\n if (!this.yminmax.length || this.yvalues.length < 2) {\n // empty or all null valuess\n return;\n }\n\n canvasTop = canvasLeft = 0;\n\n rangex = this.maxx - this.minx === 0 ? 1 : this.maxx - this.minx;\n rangey = this.maxy - this.miny === 0 ? 1 : this.maxy - this.miny;\n yvallast = this.yvalues.length - 1;\n\n if (spotRadius && (canvasWidth < (spotRadius * 4) || canvasHeight < (spotRadius * 4))) {\n spotRadius = 0;\n }\n if (spotRadius) {\n // adjust the canvas size as required so that spots will fit\n hlSpotsEnabled = options.get('highlightSpotColor') && !options.get('disableInteraction');\n if (hlSpotsEnabled || options.get('minSpotColor') || (options.get('spotColor') && yvalues[yvallast] === this.miny)) {\n canvasHeight -= Math.ceil(spotRadius);\n }\n if (hlSpotsEnabled || options.get('maxSpotColor') || (options.get('spotColor') && yvalues[yvallast] === this.maxy)) {\n canvasHeight -= Math.ceil(spotRadius);\n canvasTop += Math.ceil(spotRadius);\n }\n if (hlSpotsEnabled ||\n ((options.get('minSpotColor') || options.get('maxSpotColor')) && (yvalues[0] === this.miny || yvalues[0] === this.maxy))) {\n canvasLeft += Math.ceil(spotRadius);\n canvasWidth -= Math.ceil(spotRadius);\n }\n if (hlSpotsEnabled || options.get('spotColor') ||\n (options.get('minSpotColor') || options.get('maxSpotColor') &&\n (yvalues[yvallast] === this.miny || yvalues[yvallast] === this.maxy))) {\n canvasWidth -= Math.ceil(spotRadius);\n }\n }\n\n\n canvasHeight--;\n\n if (options.get('normalRangeMin') !== undefined && !options.get('drawNormalOnTop')) {\n this.drawNormalRange(canvasLeft, canvasTop, canvasHeight, canvasWidth, rangey);\n }\n\n path = [];\n paths = [path];\n last = next = null;\n yvalcount = yvalues.length;\n for (i = 0; i < yvalcount; i++) {\n x = xvalues[i];\n xnext = xvalues[i + 1];\n y = yvalues[i];\n xpos = canvasLeft + Math.round((x - this.minx) * (canvasWidth / rangex));\n xposnext = i < yvalcount - 1 ? canvasLeft + Math.round((xnext - this.minx) * (canvasWidth / rangex)) : canvasWidth;\n next = xpos + ((xposnext - xpos) / 2);\n regionMap[i] = [last || 0, next, i];\n last = next;\n if (y === null) {\n if (i) {\n if (yvalues[i - 1] !== null) {\n path = [];\n paths.push(path);\n }\n vertices.push(null);\n }\n } else {\n if (y < this.miny) {\n y = this.miny;\n }\n if (y > this.maxy) {\n y = this.maxy;\n }\n if (!path.length) {\n // previous value was null\n path.push([xpos, canvasTop + canvasHeight]);\n }\n vertex = [xpos, canvasTop + Math.round(canvasHeight - (canvasHeight * ((y - this.miny) / rangey)))];\n path.push(vertex);\n vertices.push(vertex);\n }\n }\n\n lineShapes = [];\n fillShapes = [];\n plen = paths.length;\n for (i = 0; i < plen; i++) {\n path = paths[i];\n if (path.length) {\n if (options.get('fillColor')) {\n path.push([path[path.length - 1][0], (canvasTop + canvasHeight)]);\n fillShapes.push(path.slice(0));\n path.pop();\n }\n // if there's only a single point in this path, then we want to display it\n // as a vertical line which means we keep path[0] as is\n if (path.length > 2) {\n // else we want the first value\n path[0] = [path[0][0], path[1][1]];\n }\n lineShapes.push(path);\n }\n }\n\n // draw the fill first, then optionally the normal range, then the line on top of that\n plen = fillShapes.length;\n for (i = 0; i < plen; i++) {\n target.drawShape(fillShapes[i],\n options.get('fillColor'), options.get('fillColor')).append();\n }\n\n if (options.get('normalRangeMin') !== undefined && options.get('drawNormalOnTop')) {\n this.drawNormalRange(canvasLeft, canvasTop, canvasHeight, canvasWidth, rangey);\n }\n\n plen = lineShapes.length;\n for (i = 0; i < plen; i++) {\n target.drawShape(lineShapes[i], options.get('lineColor'), undefined,\n options.get('lineWidth')).append();\n }\n\n if (spotRadius && options.get('valueSpots')) {\n valueSpots = options.get('valueSpots');\n if (valueSpots.get === undefined) {\n valueSpots = new RangeMap(valueSpots);\n }\n for (i = 0; i < yvalcount; i++) {\n color = valueSpots.get(yvalues[i]);\n if (color) {\n target.drawCircle(canvasLeft + Math.round((xvalues[i] - this.minx) * (canvasWidth / rangex)),\n canvasTop + Math.round(canvasHeight - (canvasHeight * ((yvalues[i] - this.miny) / rangey))),\n spotRadius, undefined,\n color).append();\n }\n }\n\n }\n if (spotRadius && options.get('spotColor') && yvalues[yvallast] !== null) {\n target.drawCircle(canvasLeft + Math.round((xvalues[xvalues.length - 1] - this.minx) * (canvasWidth / rangex)),\n canvasTop + Math.round(canvasHeight - (canvasHeight * ((yvalues[yvallast] - this.miny) / rangey))),\n spotRadius, undefined,\n options.get('spotColor')).append();\n }\n if (this.maxy !== this.minyorg) {\n if (spotRadius && options.get('minSpotColor')) {\n x = xvalues[$.inArray(this.minyorg, yvalues)];\n target.drawCircle(canvasLeft + Math.round((x - this.minx) * (canvasWidth / rangex)),\n canvasTop + Math.round(canvasHeight - (canvasHeight * ((this.minyorg - this.miny) / rangey))),\n spotRadius, undefined,\n options.get('minSpotColor')).append();\n }\n if (spotRadius && options.get('maxSpotColor')) {\n x = xvalues[$.inArray(this.maxyorg, yvalues)];\n target.drawCircle(canvasLeft + Math.round((x - this.minx) * (canvasWidth / rangex)),\n canvasTop + Math.round(canvasHeight - (canvasHeight * ((this.maxyorg - this.miny) / rangey))),\n spotRadius, undefined,\n options.get('maxSpotColor')).append();\n }\n }\n\n this.lastShapeId = target.getLastShapeId();\n this.canvasTop = canvasTop;\n target.render();\n }\n });\n\n /**\n * Bar charts\n */\n $.fn.sparkline.bar = bar = createClass($.fn.sparkline._base, barHighlightMixin, {\n type: 'bar',\n\n init: function (el, values, options, width, height) {\n var barWidth = parseInt(options.get('barWidth'), 10),\n barSpacing = parseInt(options.get('barSpacing'), 10),\n chartRangeMin = options.get('chartRangeMin'),\n chartRangeMax = options.get('chartRangeMax'),\n chartRangeClip = options.get('chartRangeClip'),\n stackMin = Infinity,\n stackMax = -Infinity,\n isStackString, groupMin, groupMax, stackRanges,\n numValues, i, vlen, range, zeroAxis, xaxisOffset, min, max, clipMin, clipMax,\n stacked, vlist, j, slen, svals, val, yoffset, yMaxCalc, canvasHeightEf;\n bar._super.init.call(this, el, values, options, width, height);\n\n // scan values to determine whether to stack bars\n for (i = 0, vlen = values.length; i < vlen; i++) {\n val = values[i];\n isStackString = typeof(val) === 'string' && val.indexOf(':') > -1;\n if (isStackString || $.isArray(val)) {\n stacked = true;\n if (isStackString) {\n val = values[i] = normalizeValues(val.split(':'));\n }\n val = remove(val, null); // min/max will treat null as zero\n groupMin = Math.min.apply(Math, val);\n groupMax = Math.max.apply(Math, val);\n if (groupMin < stackMin) {\n stackMin = groupMin;\n }\n if (groupMax > stackMax) {\n stackMax = groupMax;\n }\n }\n }\n\n this.stacked = stacked;\n this.regionShapes = {};\n this.barWidth = barWidth;\n this.barSpacing = barSpacing;\n this.totalBarWidth = barWidth + barSpacing;\n this.width = width = (values.length * barWidth) + ((values.length - 1) * barSpacing);\n\n this.initTarget();\n\n if (chartRangeClip) {\n clipMin = chartRangeMin === undefined ? -Infinity : chartRangeMin;\n clipMax = chartRangeMax === undefined ? Infinity : chartRangeMax;\n }\n\n numValues = [];\n stackRanges = stacked ? [] : numValues;\n var stackTotals = [];\n var stackRangesNeg = [];\n for (i = 0, vlen = values.length; i < vlen; i++) {\n if (stacked) {\n vlist = values[i];\n values[i] = svals = [];\n stackTotals[i] = 0;\n stackRanges[i] = stackRangesNeg[i] = 0;\n for (j = 0, slen = vlist.length; j < slen; j++) {\n val = svals[j] = chartRangeClip ? clipval(vlist[j], clipMin, clipMax) : vlist[j];\n if (val !== null) {\n if (val > 0) {\n stackTotals[i] += val;\n }\n if (stackMin < 0 && stackMax > 0) {\n if (val < 0) {\n stackRangesNeg[i] += Math.abs(val);\n } else {\n stackRanges[i] += val;\n }\n } else {\n stackRanges[i] += Math.abs(val - (val < 0 ? stackMax : stackMin));\n }\n numValues.push(val);\n }\n }\n } else {\n val = chartRangeClip ? clipval(values[i], clipMin, clipMax) : values[i];\n val = values[i] = normalizeValue(val);\n if (val !== null) {\n numValues.push(val);\n }\n }\n }\n this.max = max = Math.max.apply(Math, numValues);\n this.min = min = Math.min.apply(Math, numValues);\n this.stackMax = stackMax = stacked ? Math.max.apply(Math, stackTotals) : max;\n this.stackMin = stackMin = stacked ? Math.min.apply(Math, numValues) : min;\n\n if (options.get('chartRangeMin') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMin') < min)) {\n min = options.get('chartRangeMin');\n }\n if (options.get('chartRangeMax') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMax') > max)) {\n max = options.get('chartRangeMax');\n }\n\n this.zeroAxis = zeroAxis = options.get('zeroAxis', true);\n if (min <= 0 && max >= 0 && zeroAxis) {\n xaxisOffset = 0;\n } else if (zeroAxis == false) {\n xaxisOffset = min;\n } else if (min > 0) {\n xaxisOffset = min;\n } else {\n xaxisOffset = max;\n }\n this.xaxisOffset = xaxisOffset;\n\n range = stacked ? (Math.max.apply(Math, stackRanges) + Math.max.apply(Math, stackRangesNeg)) : max - min;\n\n // as we plot zero/min values a single pixel line, we add a pixel to all other\n // values - Reduce the effective canvas size to suit\n this.canvasHeightEf = (zeroAxis && min < 0) ? this.canvasHeight - 2 : this.canvasHeight - 1;\n\n if (min < xaxisOffset) {\n yMaxCalc = (stacked && max >= 0) ? stackMax : max;\n yoffset = (yMaxCalc - xaxisOffset) / range * this.canvasHeight;\n if (yoffset !== Math.ceil(yoffset)) {\n this.canvasHeightEf -= 2;\n yoffset = Math.ceil(yoffset);\n }\n } else {\n yoffset = this.canvasHeight;\n }\n this.yoffset = yoffset;\n\n if ($.isArray(options.get('colorMap'))) {\n this.colorMapByIndex = options.get('colorMap');\n this.colorMapByValue = null;\n } else {\n this.colorMapByIndex = null;\n this.colorMapByValue = options.get('colorMap');\n if (this.colorMapByValue && this.colorMapByValue.get === undefined) {\n this.colorMapByValue = new RangeMap(this.colorMapByValue);\n }\n }\n\n this.range = range;\n },\n\n getRegion: function (el, x, y) {\n var result = Math.floor(x / this.totalBarWidth);\n return (result < 0 || result >= this.values.length) ? undefined : result;\n },\n\n getCurrentRegionFields: function () {\n var currentRegion = this.currentRegion,\n values = ensureArray(this.values[currentRegion]),\n result = [],\n value, i;\n for (i = values.length; i--;) {\n value = values[i];\n result.push({\n isNull: value === null,\n value: value,\n color: this.calcColor(i, value, currentRegion),\n offset: currentRegion\n });\n }\n return result;\n },\n\n calcColor: function (stacknum, value, valuenum) {\n var colorMapByIndex = this.colorMapByIndex,\n colorMapByValue = this.colorMapByValue,\n options = this.options,\n color, newColor;\n if (this.stacked) {\n color = options.get('stackedBarColor');\n } else {\n color = (value < 0) ? options.get('negBarColor') : options.get('barColor');\n }\n if (value === 0 && options.get('zeroColor') !== undefined) {\n color = options.get('zeroColor');\n }\n if (colorMapByValue && (newColor = colorMapByValue.get(value))) {\n color = newColor;\n } else if (colorMapByIndex && colorMapByIndex.length > valuenum) {\n color = colorMapByIndex[valuenum];\n }\n return $.isArray(color) ? color[stacknum % color.length] : color;\n },\n\n /**\n * Render bar(s) for a region\n */\n renderRegion: function (valuenum, highlight) {\n var vals = this.values[valuenum],\n options = this.options,\n xaxisOffset = this.xaxisOffset,\n result = [],\n range = this.range,\n stacked = this.stacked,\n target = this.target,\n x = valuenum * this.totalBarWidth,\n canvasHeightEf = this.canvasHeightEf,\n yoffset = this.yoffset,\n y, height, color, isNull, yoffsetNeg, i, valcount, val, minPlotted, allMin;\n\n vals = $.isArray(vals) ? vals : [vals];\n valcount = vals.length;\n val = vals[0];\n isNull = all(null, vals);\n allMin = all(xaxisOffset, vals, true);\n\n if (isNull) {\n if (options.get('nullColor')) {\n color = highlight ? options.get('nullColor') : this.calcHighlightColor(options.get('nullColor'), options);\n y = (yoffset > 0) ? yoffset - 1 : yoffset;\n return target.drawRect(x, y, this.barWidth - 1, 0, color, color);\n } else {\n return undefined;\n }\n }\n yoffsetNeg = yoffset;\n for (i = 0; i < valcount; i++) {\n val = vals[i];\n\n if (stacked && val === xaxisOffset) {\n if (!allMin || minPlotted) {\n continue;\n }\n minPlotted = true;\n }\n\n if (range > 0) {\n height = Math.floor(canvasHeightEf * ((Math.abs(val - xaxisOffset) / range))) + 1;\n } else {\n height = 1;\n }\n if (val < xaxisOffset || (val === xaxisOffset && yoffset === 0)) {\n y = yoffsetNeg;\n yoffsetNeg += height;\n } else {\n y = yoffset - height;\n yoffset -= height;\n }\n color = this.calcColor(i, val, valuenum);\n if (highlight) {\n color = this.calcHighlightColor(color, options);\n }\n result.push(target.drawRect(x, y, this.barWidth - 1, height - 1, color, color));\n }\n if (result.length === 1) {\n return result[0];\n }\n return result;\n }\n });\n\n /**\n * Tristate charts\n */\n $.fn.sparkline.tristate = tristate = createClass($.fn.sparkline._base, barHighlightMixin, {\n type: 'tristate',\n\n init: function (el, values, options, width, height) {\n var barWidth = parseInt(options.get('barWidth'), 10),\n barSpacing = parseInt(options.get('barSpacing'), 10);\n tristate._super.init.call(this, el, values, options, width, height);\n\n this.regionShapes = {};\n this.barWidth = barWidth;\n this.barSpacing = barSpacing;\n this.totalBarWidth = barWidth + barSpacing;\n this.values = $.map(values, Number);\n this.width = width = (values.length * barWidth) + ((values.length - 1) * barSpacing);\n\n if ($.isArray(options.get('colorMap'))) {\n this.colorMapByIndex = options.get('colorMap');\n this.colorMapByValue = null;\n } else {\n this.colorMapByIndex = null;\n this.colorMapByValue = options.get('colorMap');\n if (this.colorMapByValue && this.colorMapByValue.get === undefined) {\n this.colorMapByValue = new RangeMap(this.colorMapByValue);\n }\n }\n this.initTarget();\n },\n\n getRegion: function (el, x, y) {\n return Math.floor(x / this.totalBarWidth);\n },\n\n getCurrentRegionFields: function () {\n var currentRegion = this.currentRegion;\n return {\n isNull: this.values[currentRegion] === undefined,\n value: this.values[currentRegion],\n color: this.calcColor(this.values[currentRegion], currentRegion),\n offset: currentRegion\n };\n },\n\n calcColor: function (value, valuenum) {\n var values = this.values,\n options = this.options,\n colorMapByIndex = this.colorMapByIndex,\n colorMapByValue = this.colorMapByValue,\n color, newColor;\n\n if (colorMapByValue && (newColor = colorMapByValue.get(value))) {\n color = newColor;\n } else if (colorMapByIndex && colorMapByIndex.length > valuenum) {\n color = colorMapByIndex[valuenum];\n } else if (values[valuenum] < 0) {\n color = options.get('negBarColor');\n } else if (values[valuenum] > 0) {\n color = options.get('posBarColor');\n } else {\n color = options.get('zeroBarColor');\n }\n return color;\n },\n\n renderRegion: function (valuenum, highlight) {\n var values = this.values,\n options = this.options,\n target = this.target,\n canvasHeight, height, halfHeight,\n x, y, color;\n\n canvasHeight = target.pixelHeight;\n halfHeight = Math.round(canvasHeight / 2);\n\n x = valuenum * this.totalBarWidth;\n if (values[valuenum] < 0) {\n y = halfHeight;\n height = halfHeight - 1;\n } else if (values[valuenum] > 0) {\n y = 0;\n height = halfHeight - 1;\n } else {\n y = halfHeight - 1;\n height = 2;\n }\n color = this.calcColor(values[valuenum], valuenum);\n if (color === null) {\n return;\n }\n if (highlight) {\n color = this.calcHighlightColor(color, options);\n }\n return target.drawRect(x, y, this.barWidth - 1, height - 1, color, color);\n }\n });\n\n /**\n * Discrete charts\n */\n $.fn.sparkline.discrete = discrete = createClass($.fn.sparkline._base, barHighlightMixin, {\n type: 'discrete',\n\n init: function (el, values, options, width, height) {\n discrete._super.init.call(this, el, values, options, width, height);\n\n this.regionShapes = {};\n this.values = values = $.map(values, Number);\n this.min = Math.min.apply(Math, values);\n this.max = Math.max.apply(Math, values);\n this.range = this.max - this.min;\n this.width = width = options.get('width') === 'auto' ? values.length * 2 : this.width;\n this.interval = Math.floor(width / values.length);\n this.itemWidth = width / values.length;\n if (options.get('chartRangeMin') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMin') < this.min)) {\n this.min = options.get('chartRangeMin');\n }\n if (options.get('chartRangeMax') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMax') > this.max)) {\n this.max = options.get('chartRangeMax');\n }\n this.initTarget();\n if (this.target) {\n this.lineHeight = options.get('lineHeight') === 'auto' ? Math.round(this.canvasHeight * 0.3) : options.get('lineHeight');\n }\n },\n\n getRegion: function (el, x, y) {\n return Math.floor(x / this.itemWidth);\n },\n\n getCurrentRegionFields: function () {\n var currentRegion = this.currentRegion;\n return {\n isNull: this.values[currentRegion] === undefined,\n value: this.values[currentRegion],\n offset: currentRegion\n };\n },\n\n renderRegion: function (valuenum, highlight) {\n var values = this.values,\n options = this.options,\n min = this.min,\n max = this.max,\n range = this.range,\n interval = this.interval,\n target = this.target,\n canvasHeight = this.canvasHeight,\n lineHeight = this.lineHeight,\n pheight = canvasHeight - lineHeight,\n ytop, val, color, x;\n\n val = clipval(values[valuenum], min, max);\n x = valuenum * interval;\n ytop = Math.round(pheight - pheight * ((val - min) / range));\n color = (options.get('thresholdColor') && val < options.get('thresholdValue')) ? options.get('thresholdColor') : options.get('lineColor');\n if (highlight) {\n color = this.calcHighlightColor(color, options);\n }\n return target.drawLine(x, ytop, x, ytop + lineHeight, color);\n }\n });\n\n /**\n * Bullet charts\n */\n $.fn.sparkline.bullet = bullet = createClass($.fn.sparkline._base, {\n type: 'bullet',\n\n init: function (el, values, options, width, height) {\n var min, max, vals;\n bullet._super.init.call(this, el, values, options, width, height);\n\n // values: target, performance, range1, range2, range3\n this.values = values = normalizeValues(values);\n // target or performance could be null\n vals = values.slice();\n vals[0] = vals[0] === null ? vals[2] : vals[0];\n vals[1] = values[1] === null ? vals[2] : vals[1];\n min = Math.min.apply(Math, values);\n max = Math.max.apply(Math, values);\n if (options.get('base') === undefined) {\n min = min < 0 ? min : 0;\n } else {\n min = options.get('base');\n }\n this.min = min;\n this.max = max;\n this.range = max - min;\n this.shapes = {};\n this.valueShapes = {};\n this.regiondata = {};\n this.width = width = options.get('width') === 'auto' ? '4.0em' : width;\n this.target = this.$el.simpledraw(width, height, options.get('composite'));\n if (!values.length) {\n this.disabled = true;\n }\n this.initTarget();\n },\n\n getRegion: function (el, x, y) {\n var shapeid = this.target.getShapeAt(el, x, y);\n return (shapeid !== undefined && this.shapes[shapeid] !== undefined) ? this.shapes[shapeid] : undefined;\n },\n\n getCurrentRegionFields: function () {\n var currentRegion = this.currentRegion;\n return {\n fieldkey: currentRegion.substr(0, 1),\n value: this.values[currentRegion.substr(1)],\n region: currentRegion\n };\n },\n\n changeHighlight: function (highlight) {\n var currentRegion = this.currentRegion,\n shapeid = this.valueShapes[currentRegion],\n shape;\n delete this.shapes[shapeid];\n switch (currentRegion.substr(0, 1)) {\n case 'r':\n shape = this.renderRange(currentRegion.substr(1), highlight);\n break;\n case 'p':\n shape = this.renderPerformance(highlight);\n break;\n case 't':\n shape = this.renderTarget(highlight);\n break;\n }\n this.valueShapes[currentRegion] = shape.id;\n this.shapes[shape.id] = currentRegion;\n this.target.replaceWithShape(shapeid, shape);\n },\n\n renderRange: function (rn, highlight) {\n var rangeval = this.values[rn],\n rangewidth = Math.round(this.canvasWidth * ((rangeval - this.min) / this.range)),\n color = this.options.get('rangeColors')[rn - 2];\n if (highlight) {\n color = this.calcHighlightColor(color, this.options);\n }\n return this.target.drawRect(0, 0, rangewidth - 1, this.canvasHeight - 1, color, color);\n },\n\n renderPerformance: function (highlight) {\n var perfval = this.values[1],\n perfwidth = Math.round(this.canvasWidth * ((perfval - this.min) / this.range)),\n color = this.options.get('performanceColor');\n if (highlight) {\n color = this.calcHighlightColor(color, this.options);\n }\n return this.target.drawRect(0, Math.round(this.canvasHeight * 0.3), perfwidth - 1,\n Math.round(this.canvasHeight * 0.4) - 1, color, color);\n },\n\n renderTarget: function (highlight) {\n var targetval = this.values[0],\n x = Math.round(this.canvasWidth * ((targetval - this.min) / this.range) - (this.options.get('targetWidth') / 2)),\n targettop = Math.round(this.canvasHeight * 0.10),\n targetheight = this.canvasHeight - (targettop * 2),\n color = this.options.get('targetColor');\n if (highlight) {\n color = this.calcHighlightColor(color, this.options);\n }\n return this.target.drawRect(x, targettop, this.options.get('targetWidth') - 1, targetheight - 1, color, color);\n },\n\n render: function () {\n var vlen = this.values.length,\n target = this.target,\n i, shape;\n if (!bullet._super.render.call(this)) {\n return;\n }\n for (i = 2; i < vlen; i++) {\n shape = this.renderRange(i).append();\n this.shapes[shape.id] = 'r' + i;\n this.valueShapes['r' + i] = shape.id;\n }\n if (this.values[1] !== null) {\n shape = this.renderPerformance().append();\n this.shapes[shape.id] = 'p1';\n this.valueShapes.p1 = shape.id;\n }\n if (this.values[0] !== null) {\n shape = this.renderTarget().append();\n this.shapes[shape.id] = 't0';\n this.valueShapes.t0 = shape.id;\n }\n target.render();\n }\n });\n\n /**\n * Pie charts\n */\n $.fn.sparkline.pie = pie = createClass($.fn.sparkline._base, {\n type: 'pie',\n\n init: function (el, values, options, width, height) {\n var total = 0, i;\n\n pie._super.init.call(this, el, values, options, width, height);\n\n this.shapes = {}; // map shape ids to value offsets\n this.valueShapes = {}; // maps value offsets to shape ids\n this.values = values = $.map(values, Number);\n\n if (options.get('width') === 'auto') {\n this.width = this.height;\n }\n\n if (values.length > 0) {\n for (i = values.length; i--;) {\n total += values[i];\n }\n }\n this.total = total;\n this.initTarget();\n this.radius = Math.floor(Math.min(this.canvasWidth, this.canvasHeight) / 2);\n },\n\n getRegion: function (el, x, y) {\n var shapeid = this.target.getShapeAt(el, x, y);\n return (shapeid !== undefined && this.shapes[shapeid] !== undefined) ? this.shapes[shapeid] : undefined;\n },\n\n getCurrentRegionFields: function () {\n var currentRegion = this.currentRegion;\n return {\n isNull: this.values[currentRegion] === undefined,\n value: this.values[currentRegion],\n percent: this.values[currentRegion] / this.total * 100,\n color: this.options.get('sliceColors')[currentRegion % this.options.get('sliceColors').length],\n offset: currentRegion\n };\n },\n\n changeHighlight: function (highlight) {\n var currentRegion = this.currentRegion,\n newslice = this.renderSlice(currentRegion, highlight),\n shapeid = this.valueShapes[currentRegion];\n delete this.shapes[shapeid];\n this.target.replaceWithShape(shapeid, newslice);\n this.valueShapes[currentRegion] = newslice.id;\n this.shapes[newslice.id] = currentRegion;\n },\n\n renderSlice: function (valuenum, highlight) {\n var target = this.target,\n options = this.options,\n radius = this.radius,\n borderWidth = options.get('borderWidth'),\n offset = options.get('offset'),\n circle = 2 * Math.PI,\n values = this.values,\n total = this.total,\n next = offset ? (2*Math.PI)*(offset/360) : 0,\n start, end, i, vlen, color;\n\n vlen = values.length;\n for (i = 0; i < vlen; i++) {\n start = next;\n end = next;\n if (total > 0) { // avoid divide by zero\n end = next + (circle * (values[i] / total));\n }\n if (valuenum === i) {\n color = options.get('sliceColors')[i % options.get('sliceColors').length];\n if (highlight) {\n color = this.calcHighlightColor(color, options);\n }\n\n return target.drawPieSlice(radius, radius, radius - borderWidth, start, end, undefined, color);\n }\n next = end;\n }\n },\n\n render: function () {\n var target = this.target,\n values = this.values,\n options = this.options,\n radius = this.radius,\n borderWidth = options.get('borderWidth'),\n donutWidth = options.get('donutWidth'),\n shape, i;\n\n if (!pie._super.render.call(this)) {\n return;\n }\n if (borderWidth) {\n target.drawCircle(radius, radius, Math.floor(radius - (borderWidth / 2)),\n options.get('borderColor'), undefined, borderWidth).append();\n }\n for (i = values.length; i--;) {\n if (values[i]) { // don't render zero values\n shape = this.renderSlice(i).append();\n this.valueShapes[i] = shape.id; // store just the shapeid\n this.shapes[shape.id] = i;\n }\n }\n if (donutWidth) {\n target.drawCircle(radius, radius, radius - donutWidth, options.get('donutColor'), \n options.get('donutColor'), 0).append();\n }\n target.render();\n }\n });\n\n /**\n * Box plots\n */\n $.fn.sparkline.box = box = createClass($.fn.sparkline._base, {\n type: 'box',\n\n init: function (el, values, options, width, height) {\n box._super.init.call(this, el, values, options, width, height);\n this.values = $.map(values, Number);\n this.width = options.get('width') === 'auto' ? '4.0em' : width;\n this.initTarget();\n if (!this.values.length) {\n this.disabled = 1;\n }\n },\n\n /**\n * Simulate a single region\n */\n getRegion: function () {\n return 1;\n },\n\n getCurrentRegionFields: function () {\n var result = [\n { field: 'lq', value: this.quartiles[0] },\n { field: 'med', value: this.quartiles[1] },\n { field: 'uq', value: this.quartiles[2] }\n ];\n if (this.loutlier !== undefined) {\n result.push({ field: 'lo', value: this.loutlier});\n }\n if (this.routlier !== undefined) {\n result.push({ field: 'ro', value: this.routlier});\n }\n if (this.lwhisker !== undefined) {\n result.push({ field: 'lw', value: this.lwhisker});\n }\n if (this.rwhisker !== undefined) {\n result.push({ field: 'rw', value: this.rwhisker});\n }\n return result;\n },\n\n render: function () {\n var target = this.target,\n values = this.values,\n vlen = values.length,\n options = this.options,\n canvasWidth = this.canvasWidth,\n canvasHeight = this.canvasHeight,\n minValue = options.get('chartRangeMin') === undefined ? Math.min.apply(Math, values) : options.get('chartRangeMin'),\n maxValue = options.get('chartRangeMax') === undefined ? Math.max.apply(Math, values) : options.get('chartRangeMax'),\n canvasLeft = 0,\n lwhisker, loutlier, iqr, q1, q2, q3, rwhisker, routlier, i,\n size, unitSize;\n\n if (!box._super.render.call(this)) {\n return;\n }\n\n if (options.get('raw')) {\n if (options.get('showOutliers') && values.length > 5) {\n loutlier = values[0];\n lwhisker = values[1];\n q1 = values[2];\n q2 = values[3];\n q3 = values[4];\n rwhisker = values[5];\n routlier = values[6];\n } else {\n lwhisker = values[0];\n q1 = values[1];\n q2 = values[2];\n q3 = values[3];\n rwhisker = values[4];\n }\n } else {\n values.sort(function (a, b) { return a - b; });\n q1 = quartile(values, 1);\n q2 = quartile(values, 2);\n q3 = quartile(values, 3);\n iqr = q3 - q1;\n if (options.get('showOutliers')) {\n lwhisker = rwhisker = undefined;\n for (i = 0; i < vlen; i++) {\n if (lwhisker === undefined && values[i] > q1 - (iqr * options.get('outlierIQR'))) {\n lwhisker = values[i];\n }\n if (values[i] < q3 + (iqr * options.get('outlierIQR'))) {\n rwhisker = values[i];\n }\n }\n loutlier = values[0];\n routlier = values[vlen - 1];\n } else {\n lwhisker = values[0];\n rwhisker = values[vlen - 1];\n }\n }\n this.quartiles = [q1, q2, q3];\n this.lwhisker = lwhisker;\n this.rwhisker = rwhisker;\n this.loutlier = loutlier;\n this.routlier = routlier;\n\n unitSize = canvasWidth / (maxValue - minValue + 1);\n if (options.get('showOutliers')) {\n canvasLeft = Math.ceil(options.get('spotRadius'));\n canvasWidth -= 2 * Math.ceil(options.get('spotRadius'));\n unitSize = canvasWidth / (maxValue - minValue + 1);\n if (loutlier < lwhisker) {\n target.drawCircle((loutlier - minValue) * unitSize + canvasLeft,\n canvasHeight / 2,\n options.get('spotRadius'),\n options.get('outlierLineColor'),\n options.get('outlierFillColor')).append();\n }\n if (routlier > rwhisker) {\n target.drawCircle((routlier - minValue) * unitSize + canvasLeft,\n canvasHeight / 2,\n options.get('spotRadius'),\n options.get('outlierLineColor'),\n options.get('outlierFillColor')).append();\n }\n }\n\n // box\n target.drawRect(\n Math.round((q1 - minValue) * unitSize + canvasLeft),\n Math.round(canvasHeight * 0.1),\n Math.round((q3 - q1) * unitSize),\n Math.round(canvasHeight * 0.8),\n options.get('boxLineColor'),\n options.get('boxFillColor')).append();\n // left whisker\n target.drawLine(\n Math.round((lwhisker - minValue) * unitSize + canvasLeft),\n Math.round(canvasHeight / 2),\n Math.round((q1 - minValue) * unitSize + canvasLeft),\n Math.round(canvasHeight / 2),\n options.get('lineColor')).append();\n target.drawLine(\n Math.round((lwhisker - minValue) * unitSize + canvasLeft),\n Math.round(canvasHeight / 4),\n Math.round((lwhisker - minValue) * unitSize + canvasLeft),\n Math.round(canvasHeight - canvasHeight / 4),\n options.get('whiskerColor')).append();\n // right whisker\n target.drawLine(Math.round((rwhisker - minValue) * unitSize + canvasLeft),\n Math.round(canvasHeight / 2),\n Math.round((q3 - minValue) * unitSize + canvasLeft),\n Math.round(canvasHeight / 2),\n options.get('lineColor')).append();\n target.drawLine(\n Math.round((rwhisker - minValue) * unitSize + canvasLeft),\n Math.round(canvasHeight / 4),\n Math.round((rwhisker - minValue) * unitSize + canvasLeft),\n Math.round(canvasHeight - canvasHeight / 4),\n options.get('whiskerColor')).append();\n // median line\n target.drawLine(\n Math.round((q2 - minValue) * unitSize + canvasLeft),\n Math.round(canvasHeight * 0.1),\n Math.round((q2 - minValue) * unitSize + canvasLeft),\n Math.round(canvasHeight * 0.9),\n options.get('medianColor')).append();\n if (options.get('target')) {\n size = Math.ceil(options.get('spotRadius'));\n target.drawLine(\n Math.round((options.get('target') - minValue) * unitSize + canvasLeft),\n Math.round((canvasHeight / 2) - size),\n Math.round((options.get('target') - minValue) * unitSize + canvasLeft),\n Math.round((canvasHeight / 2) + size),\n options.get('targetColor')).append();\n target.drawLine(\n Math.round((options.get('target') - minValue) * unitSize + canvasLeft - size),\n Math.round(canvasHeight / 2),\n Math.round((options.get('target') - minValue) * unitSize + canvasLeft + size),\n Math.round(canvasHeight / 2),\n options.get('targetColor')).append();\n }\n target.render();\n }\n });\n\n // Setup a very simple \"virtual canvas\" to make drawing the few shapes we need easier\n // This is accessible as $(foo).simpledraw()\n\n VShape = createClass({\n init: function (target, id, type, args) {\n this.target = target;\n this.id = id;\n this.type = type;\n this.args = args;\n },\n append: function () {\n this.target.appendShape(this);\n return this;\n }\n });\n\n VCanvas_base = createClass({\n _pxregex: /(\\d+)(px)?\\s*$/i,\n\n init: function (width, height, target) {\n if (!width) {\n return;\n }\n this.width = width;\n this.height = height;\n this.target = target;\n this.lastShapeId = null;\n if (target[0]) {\n target = target[0];\n }\n $.data(target, '_jqs_vcanvas', this);\n },\n\n drawLine: function (x1, y1, x2, y2, lineColor, lineWidth) {\n return this.drawShape([[x1, y1], [x2, y2]], lineColor, lineWidth);\n },\n\n drawShape: function (path, lineColor, fillColor, lineWidth) {\n return this._genShape('Shape', [path, lineColor, fillColor, lineWidth]);\n },\n\n drawCircle: function (x, y, radius, lineColor, fillColor, lineWidth) {\n return this._genShape('Circle', [x, y, radius, lineColor, fillColor, lineWidth]);\n },\n\n drawPieSlice: function (x, y, radius, startAngle, endAngle, lineColor, fillColor) {\n return this._genShape('PieSlice', [x, y, radius, startAngle, endAngle, lineColor, fillColor]);\n },\n\n drawRect: function (x, y, width, height, lineColor, fillColor) {\n return this._genShape('Rect', [x, y, width, height, lineColor, fillColor]);\n },\n\n getElement: function () {\n return this.canvas;\n },\n\n /**\n * Return the most recently inserted shape id\n */\n getLastShapeId: function () {\n return this.lastShapeId;\n },\n\n /**\n * Clear and reset the canvas\n */\n reset: function () {\n alert('reset not implemented');\n },\n\n _insert: function (el, target) {\n $(target).html(el);\n },\n\n /**\n * Calculate the pixel dimensions of the canvas\n */\n _calculatePixelDims: function (width, height, canvas) {\n // XXX This should probably be a configurable option\n var match;\n match = this._pxregex.exec(height);\n if (match) {\n this.pixelHeight = match[1];\n } else {\n this.pixelHeight = $(canvas).height();\n }\n match = this._pxregex.exec(width);\n if (match) {\n this.pixelWidth = match[1];\n } else {\n this.pixelWidth = $(canvas).width();\n }\n },\n\n /**\n * Generate a shape object and id for later rendering\n */\n _genShape: function (shapetype, shapeargs) {\n var id = shapeCount++;\n shapeargs.unshift(id);\n return new VShape(this, id, shapetype, shapeargs);\n },\n\n /**\n * Add a shape to the end of the render queue\n */\n appendShape: function (shape) {\n alert('appendShape not implemented');\n },\n\n /**\n * Replace one shape with another\n */\n replaceWithShape: function (shapeid, shape) {\n alert('replaceWithShape not implemented');\n },\n\n /**\n * Insert one shape after another in the render queue\n */\n insertAfterShape: function (shapeid, shape) {\n alert('insertAfterShape not implemented');\n },\n\n /**\n * Remove a shape from the queue\n */\n removeShapeId: function (shapeid) {\n alert('removeShapeId not implemented');\n },\n\n /**\n * Find a shape at the specified x/y co-ordinates\n */\n getShapeAt: function (el, x, y) {\n alert('getShapeAt not implemented');\n },\n\n /**\n * Render all queued shapes onto the canvas\n */\n render: function () {\n alert('render not implemented');\n }\n });\n\n VCanvas_canvas = createClass(VCanvas_base, {\n init: function (width, height, target, interact) {\n VCanvas_canvas._super.init.call(this, width, height, target);\n this.canvas = document.createElement('canvas');\n if (target[0]) {\n target = target[0];\n }\n $.data(target, '_jqs_vcanvas', this);\n $(this.canvas).css({ display: 'inline-block', width: width, height: height, verticalAlign: 'top' });\n this._insert(this.canvas, target);\n this._calculatePixelDims(width, height, this.canvas);\n this.canvas.width = this.pixelWidth;\n this.canvas.height = this.pixelHeight;\n this.interact = interact;\n this.shapes = {};\n this.shapeseq = [];\n this.currentTargetShapeId = undefined;\n $(this.canvas).css({width: this.pixelWidth, height: this.pixelHeight});\n },\n\n _getContext: function (lineColor, fillColor, lineWidth) {\n var context = this.canvas.getContext('2d');\n if (lineColor !== undefined) {\n context.strokeStyle = lineColor;\n }\n context.lineWidth = lineWidth === undefined ? 1 : lineWidth;\n if (fillColor !== undefined) {\n context.fillStyle = fillColor;\n }\n return context;\n },\n\n reset: function () {\n var context = this._getContext();\n context.clearRect(0, 0, this.pixelWidth, this.pixelHeight);\n this.shapes = {};\n this.shapeseq = [];\n this.currentTargetShapeId = undefined;\n },\n\n _drawShape: function (shapeid, path, lineColor, fillColor, lineWidth) {\n var context = this._getContext(lineColor, fillColor, lineWidth),\n i, plen;\n context.beginPath();\n context.moveTo(path[0][0] + 0.5, path[0][1] + 0.5);\n for (i = 1, plen = path.length; i < plen; i++) {\n context.lineTo(path[i][0] + 0.5, path[i][1] + 0.5); // the 0.5 offset gives us crisp pixel-width lines\n }\n if (lineColor !== undefined) {\n context.stroke();\n }\n if (fillColor !== undefined) {\n context.fill();\n }\n if (this.targetX !== undefined && this.targetY !== undefined &&\n context.isPointInPath(this.targetX, this.targetY)) {\n this.currentTargetShapeId = shapeid;\n }\n },\n\n _drawCircle: function (shapeid, x, y, radius, lineColor, fillColor, lineWidth) {\n var context = this._getContext(lineColor, fillColor, lineWidth);\n context.beginPath();\n context.arc(x, y, radius, 0, 2 * Math.PI, false);\n if (this.targetX !== undefined && this.targetY !== undefined &&\n context.isPointInPath(this.targetX, this.targetY)) {\n this.currentTargetShapeId = shapeid;\n }\n if (lineColor !== undefined) {\n context.stroke();\n }\n if (fillColor !== undefined) {\n context.fill();\n }\n },\n\n _drawPieSlice: function (shapeid, x, y, radius, startAngle, endAngle, lineColor, fillColor) {\n var context = this._getContext(lineColor, fillColor);\n context.beginPath();\n context.moveTo(x, y);\n context.arc(x, y, radius, startAngle, endAngle, false);\n context.lineTo(x, y);\n context.closePath();\n if (lineColor !== undefined) {\n context.stroke();\n }\n if (fillColor) {\n context.fill();\n }\n if (this.targetX !== undefined && this.targetY !== undefined &&\n context.isPointInPath(this.targetX, this.targetY)) {\n this.currentTargetShapeId = shapeid;\n }\n },\n\n _drawRect: function (shapeid, x, y, width, height, lineColor, fillColor) {\n return this._drawShape(shapeid, [[x, y], [x + width, y], [x + width, y + height], [x, y + height], [x, y]], lineColor, fillColor);\n },\n\n appendShape: function (shape) {\n this.shapes[shape.id] = shape;\n this.shapeseq.push(shape.id);\n this.lastShapeId = shape.id;\n return shape.id;\n },\n\n replaceWithShape: function (shapeid, shape) {\n var shapeseq = this.shapeseq,\n i;\n this.shapes[shape.id] = shape;\n for (i = shapeseq.length; i--;) {\n if (shapeseq[i] == shapeid) {\n shapeseq[i] = shape.id;\n }\n }\n delete this.shapes[shapeid];\n },\n\n replaceWithShapes: function (shapeids, shapes) {\n var shapeseq = this.shapeseq,\n shapemap = {},\n sid, i, first;\n\n for (i = shapeids.length; i--;) {\n shapemap[shapeids[i]] = true;\n }\n for (i = shapeseq.length; i--;) {\n sid = shapeseq[i];\n if (shapemap[sid]) {\n shapeseq.splice(i, 1);\n delete this.shapes[sid];\n first = i;\n }\n }\n for (i = shapes.length; i--;) {\n shapeseq.splice(first, 0, shapes[i].id);\n this.shapes[shapes[i].id] = shapes[i];\n }\n\n },\n\n insertAfterShape: function (shapeid, shape) {\n var shapeseq = this.shapeseq,\n i;\n for (i = shapeseq.length; i--;) {\n if (shapeseq[i] === shapeid) {\n shapeseq.splice(i + 1, 0, shape.id);\n this.shapes[shape.id] = shape;\n return;\n }\n }\n },\n\n removeShapeId: function (shapeid) {\n var shapeseq = this.shapeseq,\n i;\n for (i = shapeseq.length; i--;) {\n if (shapeseq[i] === shapeid) {\n shapeseq.splice(i, 1);\n break;\n }\n }\n delete this.shapes[shapeid];\n },\n\n getShapeAt: function (el, x, y) {\n this.targetX = x;\n this.targetY = y;\n this.render();\n return this.currentTargetShapeId;\n },\n\n render: function () {\n var shapeseq = this.shapeseq,\n shapes = this.shapes,\n shapeCount = shapeseq.length,\n context = this._getContext(),\n shapeid, shape, i;\n context.clearRect(0, 0, this.pixelWidth, this.pixelHeight);\n for (i = 0; i < shapeCount; i++) {\n shapeid = shapeseq[i];\n shape = shapes[shapeid];\n this['_draw' + shape.type].apply(this, shape.args);\n }\n if (!this.interact) {\n // not interactive so no need to keep the shapes array\n this.shapes = {};\n this.shapeseq = [];\n }\n }\n\n });\n\n VCanvas_vml = createClass(VCanvas_base, {\n init: function (width, height, target) {\n var groupel;\n VCanvas_vml._super.init.call(this, width, height, target);\n if (target[0]) {\n target = target[0];\n }\n $.data(target, '_jqs_vcanvas', this);\n this.canvas = document.createElement('span');\n $(this.canvas).css({ display: 'inline-block', position: 'relative', overflow: 'hidden', width: width, height: height, margin: '0px', padding: '0px', verticalAlign: 'top'});\n this._insert(this.canvas, target);\n this._calculatePixelDims(width, height, this.canvas);\n this.canvas.width = this.pixelWidth;\n this.canvas.height = this.pixelHeight;\n groupel = '';\n this.canvas.insertAdjacentHTML('beforeEnd', groupel);\n this.group = $(this.canvas).children()[0];\n this.rendered = false;\n this.prerender = '';\n },\n\n _drawShape: function (shapeid, path, lineColor, fillColor, lineWidth) {\n var vpath = [],\n initial, stroke, fill, closed, vel, plen, i;\n for (i = 0, plen = path.length; i < plen; i++) {\n vpath[i] = '' + (path[i][0]) + ',' + (path[i][1]);\n }\n initial = vpath.splice(0, 1);\n lineWidth = lineWidth === undefined ? 1 : lineWidth;\n stroke = lineColor === undefined ? ' stroked=\"false\" ' : ' strokeWeight=\"' + lineWidth + 'px\" strokeColor=\"' + lineColor + '\" ';\n fill = fillColor === undefined ? ' filled=\"false\"' : ' fillColor=\"' + fillColor + '\" filled=\"true\" ';\n closed = vpath[0] === vpath[vpath.length - 1] ? 'x ' : '';\n vel = '' +\n ' ';\n return vel;\n },\n\n _drawCircle: function (shapeid, x, y, radius, lineColor, fillColor, lineWidth) {\n var stroke, fill, vel;\n x -= radius;\n y -= radius;\n stroke = lineColor === undefined ? ' stroked=\"false\" ' : ' strokeWeight=\"' + lineWidth + 'px\" strokeColor=\"' + lineColor + '\" ';\n fill = fillColor === undefined ? ' filled=\"false\"' : ' fillColor=\"' + fillColor + '\" filled=\"true\" ';\n vel = '';\n return vel;\n\n },\n\n _drawPieSlice: function (shapeid, x, y, radius, startAngle, endAngle, lineColor, fillColor) {\n var vpath, startx, starty, endx, endy, stroke, fill, vel;\n if (startAngle === endAngle) {\n return ''; // VML seems to have problem when start angle equals end angle.\n }\n if ((endAngle - startAngle) === (2 * Math.PI)) {\n startAngle = 0.0; // VML seems to have a problem when drawing a full circle that doesn't start 0\n endAngle = (2 * Math.PI);\n }\n\n startx = x + Math.round(Math.cos(startAngle) * radius);\n starty = y + Math.round(Math.sin(startAngle) * radius);\n endx = x + Math.round(Math.cos(endAngle) * radius);\n endy = y + Math.round(Math.sin(endAngle) * radius);\n\n if (startx === endx && starty === endy) {\n if ((endAngle - startAngle) < Math.PI) {\n // Prevent very small slices from being mistaken as a whole pie\n return '';\n }\n // essentially going to be the entire circle, so ignore startAngle\n startx = endx = x + radius;\n starty = endy = y;\n }\n\n if (startx === endx && starty === endy && (endAngle - startAngle) < Math.PI) {\n return '';\n }\n\n vpath = [x - radius, y - radius, x + radius, y + radius, startx, starty, endx, endy];\n stroke = lineColor === undefined ? ' stroked=\"false\" ' : ' strokeWeight=\"1px\" strokeColor=\"' + lineColor + '\" ';\n fill = fillColor === undefined ? ' filled=\"false\"' : ' fillColor=\"' + fillColor + '\" filled=\"true\" ';\n vel = '' +\n ' ';\n return vel;\n },\n\n _drawRect: function (shapeid, x, y, width, height, lineColor, fillColor) {\n return this._drawShape(shapeid, [[x, y], [x, y + height], [x + width, y + height], [x + width, y], [x, y]], lineColor, fillColor);\n },\n\n reset: function () {\n this.group.innerHTML = '';\n },\n\n appendShape: function (shape) {\n var vel = this['_draw' + shape.type].apply(this, shape.args);\n if (this.rendered) {\n this.group.insertAdjacentHTML('beforeEnd', vel);\n } else {\n this.prerender += vel;\n }\n this.lastShapeId = shape.id;\n return shape.id;\n },\n\n replaceWithShape: function (shapeid, shape) {\n var existing = $('#jqsshape' + shapeid),\n vel = this['_draw' + shape.type].apply(this, shape.args);\n existing[0].outerHTML = vel;\n },\n\n replaceWithShapes: function (shapeids, shapes) {\n // replace the first shapeid with all the new shapes then toast the remaining old shapes\n var existing = $('#jqsshape' + shapeids[0]),\n replace = '',\n slen = shapes.length,\n i;\n for (i = 0; i < slen; i++) {\n replace += this['_draw' + shapes[i].type].apply(this, shapes[i].args);\n }\n existing[0].outerHTML = replace;\n for (i = 1; i < shapeids.length; i++) {\n $('#jqsshape' + shapeids[i]).remove();\n }\n },\n\n insertAfterShape: function (shapeid, shape) {\n var existing = $('#jqsshape' + shapeid),\n vel = this['_draw' + shape.type].apply(this, shape.args);\n existing[0].insertAdjacentHTML('afterEnd', vel);\n },\n\n removeShapeId: function (shapeid) {\n var existing = $('#jqsshape' + shapeid);\n this.group.removeChild(existing[0]);\n },\n\n getShapeAt: function (el, x, y) {\n var shapeid = el.id.substr(8);\n return shapeid;\n },\n\n render: function () {\n if (!this.rendered) {\n // batch the intial render into a single repaint\n this.group.innerHTML = this.prerender;\n this.rendered = true;\n }\n }\n });\n\n}))}(document, Math));\n","/* istanbul ignore file */\nexport var eventsMap = {\n blur: 'onBlur',\n cancel: 'onCancel',\n click: 'onClick',\n close: 'onClose',\n contextmenu: 'onContextMenu',\n copy: 'onCopy',\n cut: 'onCut',\n auxclick: 'onAuxClick',\n doubleclick: 'onDoubleClick',\n dragend: 'onDragEnd',\n dragstart: 'onDragStart',\n drop: 'onDrop',\n focus: 'onFocus',\n input: 'onInput',\n invalid: 'onInvalid',\n keydown: 'onKeyDown',\n keypress: 'onKeyPress',\n keyup: 'onKeyUp',\n mousedown: 'onMouseDown',\n mouseup: 'onMouseUp',\n paste: 'onPaste',\n pause: 'onPause',\n play: 'onPlay',\n pointercancel: 'onPointerCancel',\n pointerdown: 'onPointerDown',\n pointerup: 'onPointerUp',\n ratechange: 'onRateChange',\n reset: 'onReset',\n seeked: 'onSeeked',\n submit: 'onSubmit',\n touchcancel: 'onTouchCancel',\n touchend: 'onTouchEnd',\n touchstart: 'onTouchStart',\n volumechange: 'onVolumeChange',\n abort: 'onAbort',\n animationend: 'onAnimationEnd',\n animationiteration: 'onAnimationIteration',\n animationstart: 'onAnimationStart',\n canplay: 'onCanPlay',\n canplaythrough: 'onCanPlayThrough',\n drag: 'onDrag',\n dragenter: 'onDragEnter',\n dragexit: 'onDragExit',\n dragleave: 'onDragLeave',\n dragover: 'onDragOver',\n durationchange: 'onDurationChange',\n emptied: 'onEmptied',\n encrypted: 'onEncrypted',\n ended: 'onEnded',\n error: 'onError',\n gotpointercapture: 'onGotPointerCapture',\n load: 'onLoad',\n loadeddata: 'onLoadedData',\n loadedmetadata: 'onLoadedMetadata',\n loadstart: 'onLoadStart',\n lostpointercapture: 'onLostPointerCapture',\n mousemove: 'onMouseMove',\n mouseout: 'onMouseOut',\n mouseover: 'onMouseOver',\n playing: 'onPlaying',\n pointermove: 'onPointerMove',\n pointerout: 'onPointerOut',\n pointerover: 'onPointerOver',\n progress: 'onProgress',\n scroll: 'onScroll',\n seeking: 'onSeeking',\n stalled: 'onStalled',\n suspend: 'onSuspend',\n timeupdate: 'onTimeUpdate',\n toggle: 'onToggle',\n touchmove: 'onTouchMove',\n transitionend: 'onTransitionEnd',\n waiting: 'onWaiting',\n wheel: 'onWheel',\n mouseenter: 'onMouseEnter',\n mouseleave: 'onMouseLeave',\n pointerenter: 'onPointerEnter',\n pointerleave: 'onPointerLeave',\n change: 'onChange',\n select: 'onSelect',\n beforeinput: 'onBeforeInput',\n compositionend: 'onCompositionEnd',\n compositionstart: 'onCompositionStart',\n compositionupdate: 'onCompositionUpdate'\n};\n","export var debounce = function (func, wait) {\n var timeout;\n return function () {\n // @ts-ignore\n var context = this, args = arguments;\n var later = function () {\n timeout = null;\n func.apply(context, args);\n };\n timeout !== null && clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n };\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n};\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { eventsMap } from './utils/events-map';\nimport { debounce } from './utils/debounce';\nimport { toCamel } from './utils/strings';\nvar reactPropFromEventName = function (evtName) {\n return eventsMap[evtName] || evtName;\n};\nvar FoundationElement = /** @class */ (function () {\n function FoundationElement(onChange) {\n this._classes = new Set();\n this._events = {};\n this._style = {};\n this._props = {};\n this._ref = null;\n this._onChange = null;\n this._onChange = onChange;\n this.onChange = this.onChange.bind(this);\n this.addClass = this.addClass.bind(this);\n this.removeClass = this.removeClass.bind(this);\n this.hasClass = this.hasClass.bind(this);\n this.setProp = this.setProp.bind(this);\n this.getProp = this.getProp.bind(this);\n this.removeProp = this.removeProp.bind(this);\n this.setStyle = this.setStyle.bind(this);\n this.addEventListener = this.addEventListener.bind(this);\n this.removeEventListener = this.removeEventListener.bind(this);\n this.setRef = this.setRef.bind(this);\n }\n FoundationElement.prototype.onChange = function () {\n this._onChange && this._onChange();\n };\n FoundationElement.prototype.destroy = function () {\n this._onChange = null;\n this._ref = null;\n this._events = {};\n this._style = {};\n this._props = {};\n this._classes = new Set();\n };\n /**************************************************\n * Classes\n **************************************************/\n FoundationElement.prototype.addClass = function (className) {\n if (!this._classes.has(className)) {\n this._classes.add(className);\n this.onChange();\n }\n };\n FoundationElement.prototype.removeClass = function (className) {\n if (this._classes.has(className)) {\n this._classes.delete(className);\n this.onChange();\n }\n };\n FoundationElement.prototype.hasClass = function (className) {\n return this._classes.has(className);\n };\n /**************************************************\n * Props\n **************************************************/\n FoundationElement.prototype.setProp = function (propName, value) {\n if (this._props[propName] !== value) {\n this._props[propName] = value;\n this.onChange();\n }\n };\n FoundationElement.prototype.getProp = function (propName) {\n return this._props[propName];\n };\n FoundationElement.prototype.removeProp = function (propName) {\n if (this._props[propName] !== undefined) {\n delete this._props[propName];\n this.onChange();\n }\n };\n FoundationElement.prototype.props = function (propsToMerge) {\n var _this = this;\n var _a = propsToMerge.className, className = _a === void 0 ? '' : _a, _b = propsToMerge.style, style = _b === void 0 ? {} : _b;\n // handle merging events\n // the foundation should be able to pass something onClick as well as a user\n // This wraps them in a function that calls both\n var mergedEvents = Object.entries(propsToMerge).reduce(function (acc, _a) {\n var _b = __read(_a, 2), key = _b[0], possibleCallback = _b[1];\n var existingCallback = _this._events[key];\n if (typeof possibleCallback === 'function' &&\n typeof existingCallback === 'function') {\n var wrappedCallback = function (evt) {\n existingCallback(evt);\n return possibleCallback(evt);\n };\n acc[key] = wrappedCallback;\n }\n return acc;\n }, __assign({}, this._events));\n // handle className\n var mergedClasses = classNames(className, __spread(this._classes));\n // handle styles\n var mergedStyles = __assign({}, this._style, style);\n return __assign({}, propsToMerge, this._props, mergedEvents, { style: mergedStyles, className: mergedClasses });\n };\n /**************************************************\n * Styles\n **************************************************/\n FoundationElement.prototype.setStyle = function (propertyName, value) {\n propertyName = propertyName.startsWith('--')\n ? propertyName\n : toCamel(propertyName);\n if (this._style[propertyName] !== value) {\n this._style[propertyName] = value;\n this.onChange();\n }\n };\n /**************************************************\n * Events\n **************************************************/\n FoundationElement.prototype.addEventListener = function (evtName, callback) {\n var propName = reactPropFromEventName(evtName);\n if (this._events[propName] !== callback) {\n this._events[propName] = callback;\n this.onChange();\n }\n };\n FoundationElement.prototype.removeEventListener = function (evtName, callback) {\n var propName = reactPropFromEventName(evtName);\n if (this._events[propName]) {\n delete this._events[propName];\n this.onChange();\n }\n };\n /**************************************************\n * Refs\n **************************************************/\n FoundationElement.prototype.setRef = function (el) {\n if (el) {\n this._ref = el;\n }\n };\n Object.defineProperty(FoundationElement.prototype, \"ref\", {\n get: function () {\n return this._ref;\n },\n enumerable: true,\n configurable: true\n });\n return FoundationElement;\n}());\nexport { FoundationElement };\nvar FoundationComponent = /** @class */ (function (_super) {\n __extends(FoundationComponent, _super);\n function FoundationComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.elements = {};\n //@ts-ignore\n if (_this.constructor.shouldDebounce) {\n _this.update = debounce(_this.update.bind(_this), 0);\n }\n else {\n _this.update = _this.update.bind(_this);\n }\n return _this;\n }\n FoundationComponent.prototype.componentDidMount = function () {\n this.foundation = this.getDefaultFoundation();\n this.foundation.init();\n this.sync(this.props, {});\n };\n FoundationComponent.prototype.componentDidUpdate = function (prevProps) {\n this.sync(this.props, prevProps);\n };\n FoundationComponent.prototype.componentWillUnmount = function () {\n this.foundation && this.foundation.destroy();\n // @ts-ignore\n this.foundation = undefined;\n Object.values(this.elements).forEach(function (el) { return el.destroy(); });\n };\n FoundationComponent.prototype.createElement = function (elementName) {\n var el = new FoundationElement(this.update);\n this.elements[elementName] = el;\n return el;\n };\n FoundationComponent.prototype.update = function () {\n this.foundation && this.setState({});\n };\n FoundationComponent.prototype.sync = function (props, prevProps) { };\n FoundationComponent.prototype.syncProp = function (prop, prevProp, callback) {\n if ((prop !== undefined || (prevProp !== undefined && prop === undefined)) &&\n prop !== prevProp) {\n callback();\n }\n };\n FoundationComponent.prototype.getDefaultFoundation = function () {\n return {\n init: function () { },\n destroy: function () { }\n };\n };\n /**\n * Fires a cross-browser-compatible custom event from the component root of the given type,\n */\n FoundationComponent.prototype.emit = function (evtType, evtData, shouldBubble) {\n if (shouldBubble === void 0) { shouldBubble = false; }\n var evt;\n evt = new CustomEvent(evtType, {\n detail: evtData,\n bubbles: shouldBubble\n });\n // bugfix for events coming from form elements\n // and also fits with reacts form pattern better...\n // This should always otherwise be null since there is no target\n // for Custom Events\n Object.defineProperty(evt, 'target', {\n value: evtData,\n writable: false\n });\n Object.defineProperty(evt, 'currentTarget', {\n value: evtData,\n writable: false\n });\n // Custom handling for React\n var propName = evtType;\n // check to see if the foundation still exists. If not, we are\n // probably unmounted or destroyed and dont want to call any more handlers\n // This happens when MDC broadcasts certain events on timers\n if (this.foundation) {\n //@ts-ignore\n this.props[propName] && this.props[propName](evt);\n }\n return evt;\n };\n FoundationComponent.shouldDebounce = false;\n return FoundationComponent;\n}(React.Component));\nexport { FoundationComponent };\n","export default function symbolObservablePonyfill(root) {\n\tvar result;\n\tvar Symbol = root.Symbol;\n\n\tif (typeof Symbol === 'function') {\n\t\tif (Symbol.observable) {\n\t\t\tresult = Symbol.observable;\n\t\t} else {\n\t\t\tresult = Symbol('observable');\n\t\t\tSymbol.observable = result;\n\t\t}\n\t} else {\n\t\tresult = '@@observable';\n\t}\n\n\treturn result;\n};\n","import _checkForMethod from './internal/_checkForMethod.js';\nimport _curry1 from './internal/_curry1.js';\nimport slice from './slice.js';\n\n/**\n * Returns all but the first element of the given list or string (or object\n * with a `tail` method).\n *\n * Dispatches to the `slice` method of the first argument, if present.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig [a] -> [a]\n * @sig String -> String\n * @param {*} list\n * @return {*}\n * @see R.head, R.init, R.last\n * @example\n *\n * R.tail([1, 2, 3]); //=> [2, 3]\n * R.tail([1, 2]); //=> [2]\n * R.tail([1]); //=> []\n * R.tail([]); //=> []\n *\n * R.tail('abc'); //=> 'bc'\n * R.tail('ab'); //=> 'b'\n * R.tail('a'); //=> ''\n * R.tail(''); //=> ''\n */\nvar tail = /*#__PURE__*/_curry1( /*#__PURE__*/_checkForMethod('tail', /*#__PURE__*/slice(1, Infinity)));\nexport default tail;","/** PURE_IMPORTS_START tslib,_util_subscribeToResult,_OuterSubscriber,_InnerSubscriber,_map,_observable_from PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { subscribeToResult } from '../util/subscribeToResult';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { InnerSubscriber } from '../InnerSubscriber';\nimport { map } from './map';\nimport { from } from '../observable/from';\nexport function mergeMap(project, resultSelector, concurrent) {\n if (concurrent === void 0) {\n concurrent = Number.POSITIVE_INFINITY;\n }\n if (typeof resultSelector === 'function') {\n return function (source) { return source.pipe(mergeMap(function (a, i) { return from(project(a, i)).pipe(map(function (b, ii) { return resultSelector(a, b, i, ii); })); }, concurrent)); };\n }\n else if (typeof resultSelector === 'number') {\n concurrent = resultSelector;\n }\n return function (source) { return source.lift(new MergeMapOperator(project, concurrent)); };\n}\nvar MergeMapOperator = /*@__PURE__*/ (function () {\n function MergeMapOperator(project, concurrent) {\n if (concurrent === void 0) {\n concurrent = Number.POSITIVE_INFINITY;\n }\n this.project = project;\n this.concurrent = concurrent;\n }\n MergeMapOperator.prototype.call = function (observer, source) {\n return source.subscribe(new MergeMapSubscriber(observer, this.project, this.concurrent));\n };\n return MergeMapOperator;\n}());\nexport { MergeMapOperator };\nvar MergeMapSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(MergeMapSubscriber, _super);\n function MergeMapSubscriber(destination, project, concurrent) {\n if (concurrent === void 0) {\n concurrent = Number.POSITIVE_INFINITY;\n }\n var _this = _super.call(this, destination) || this;\n _this.project = project;\n _this.concurrent = concurrent;\n _this.hasCompleted = false;\n _this.buffer = [];\n _this.active = 0;\n _this.index = 0;\n return _this;\n }\n MergeMapSubscriber.prototype._next = function (value) {\n if (this.active < this.concurrent) {\n this._tryNext(value);\n }\n else {\n this.buffer.push(value);\n }\n };\n MergeMapSubscriber.prototype._tryNext = function (value) {\n var result;\n var index = this.index++;\n try {\n result = this.project(value, index);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.active++;\n this._innerSub(result, value, index);\n };\n MergeMapSubscriber.prototype._innerSub = function (ish, value, index) {\n var innerSubscriber = new InnerSubscriber(this, value, index);\n var destination = this.destination;\n destination.add(innerSubscriber);\n var innerSubscription = subscribeToResult(this, ish, undefined, undefined, innerSubscriber);\n if (innerSubscription !== innerSubscriber) {\n destination.add(innerSubscription);\n }\n };\n MergeMapSubscriber.prototype._complete = function () {\n this.hasCompleted = true;\n if (this.active === 0 && this.buffer.length === 0) {\n this.destination.complete();\n }\n this.unsubscribe();\n };\n MergeMapSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.destination.next(innerValue);\n };\n MergeMapSubscriber.prototype.notifyComplete = function (innerSub) {\n var buffer = this.buffer;\n this.remove(innerSub);\n this.active--;\n if (buffer.length > 0) {\n this._next(buffer.shift());\n }\n else if (this.active === 0 && this.hasCompleted) {\n this.destination.complete();\n }\n };\n return MergeMapSubscriber;\n}(OuterSubscriber));\nexport { MergeMapSubscriber };\n//# sourceMappingURL=mergeMap.js.map\n","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = math;\n\nvar _defaultSymbols = /*#__PURE__*/_interopRequireDefault( /*#__PURE__*/require(\"./presets/defaultSymbols\"));\n\nvar _errors = /*#__PURE__*/_interopRequireDefault( /*#__PURE__*/require(\"../internalHelpers/_errors\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nvar unitRegExp = /((?!\\w)a|na|hc|mc|dg|me[r]?|xe|ni(?![a-zA-Z])|mm|cp|tp|xp|q(?!s)|hv|xamv|nimv|wv|sm|s(?!\\D|$)|ged|darg?|nrut)/g; // Merges additional math functionality into the defaults.\n\nfunction mergeSymbolMaps(additionalSymbols) {\n var symbolMap = {};\n symbolMap.symbols = additionalSymbols ? _extends({}, _defaultSymbols[\"default\"].symbols, additionalSymbols.symbols) : _extends({}, _defaultSymbols[\"default\"].symbols);\n return symbolMap;\n}\n\nfunction exec(operators, values) {\n var _ref;\n\n var op = operators.pop();\n values.push(op.f.apply(op, (_ref = []).concat.apply(_ref, values.splice(-op.argCount))));\n return op.precedence;\n}\n\nfunction calculate(expression, additionalSymbols) {\n var symbolMap = mergeSymbolMaps(additionalSymbols);\n var match;\n var operators = [symbolMap.symbols['('].prefix];\n var values = [];\n var pattern = new RegExp( // Pattern for numbers\n \"\\\\d+(?:\\\\.\\\\d+)?|\" + // ...and patterns for individual operators/function names\n Object.keys(symbolMap.symbols).map(function (key) {\n return symbolMap.symbols[key];\n }) // longer symbols should be listed first\n // $FlowFixMe\n .sort(function (a, b) {\n return b.symbol.length - a.symbol.length;\n }) // $FlowFixMe\n .map(function (val) {\n return val.regSymbol;\n }).join('|') + \"|(\\\\S)\", 'g');\n pattern.lastIndex = 0; // Reset regular expression object\n\n var afterValue = false;\n\n do {\n match = pattern.exec(expression);\n\n var _ref2 = match || [')', undefined],\n token = _ref2[0],\n bad = _ref2[1];\n\n var notNumber = symbolMap.symbols[token];\n var notNewValue = notNumber && !notNumber.prefix && !notNumber.func;\n var notAfterValue = !notNumber || !notNumber.postfix && !notNumber.infix; // Check for syntax errors:\n\n if (bad || (afterValue ? notAfterValue : notNewValue)) {\n throw new _errors[\"default\"](37, match ? match.index : expression.length, expression);\n }\n\n if (afterValue) {\n // We either have an infix or postfix operator (they should be mutually exclusive)\n var curr = notNumber.postfix || notNumber.infix;\n\n do {\n var prev = operators[operators.length - 1];\n if ((curr.precedence - prev.precedence || prev.rightToLeft) > 0) break; // Apply previous operator, since it has precedence over current one\n } while (exec(operators, values)); // Exit loop after executing an opening parenthesis or function\n\n\n afterValue = curr.notation === 'postfix';\n\n if (curr.symbol !== ')') {\n operators.push(curr); // Postfix always has precedence over any operator that follows after it\n\n if (afterValue) exec(operators, values);\n }\n } else if (notNumber) {\n // prefix operator or function\n operators.push(notNumber.prefix || notNumber.func);\n\n if (notNumber.func) {\n // Require an opening parenthesis\n match = pattern.exec(expression);\n\n if (!match || match[0] !== '(') {\n throw new _errors[\"default\"](38, match ? match.index : expression.length, expression);\n }\n }\n } else {\n // number\n values.push(+token);\n afterValue = true;\n }\n } while (match && operators.length);\n\n if (operators.length) {\n throw new _errors[\"default\"](39, match ? match.index : expression.length, expression);\n } else if (match) {\n throw new _errors[\"default\"](40, match ? match.index : expression.length, expression);\n } else {\n return values.pop();\n }\n}\n\nfunction reverseString(str) {\n return str.split('').reverse().join('');\n}\n/**\n * Helper for doing math with CSS Units. Accepts a formula as a string. All values in the formula must have the same unit (or be unitless). Supports complex formulas utliziing addition, subtraction, multiplication, division, square root, powers, factorial, min, max, as well as parentheses for order of operation.\n *\n *In cases where you need to do calculations with mixed units where one unit is a [relative length unit](https://developer.mozilla.org/en-US/docs/Web/CSS/length#Relative_length_units), you will want to use [CSS Calc](https://developer.mozilla.org/en-US/docs/Web/CSS/calc).\n *\n * *warning* While we've done everything possible to ensure math safely evalutes formulas expressed as strings, you should always use extreme caution when passing `math` user provided values.\n * @example\n * // Styles as object usage\n * const styles = {\n * fontSize: math('12rem + 8rem'),\n * fontSize: math('(12px + 2px) * 3'),\n * fontSize: math('3px^2 + sqrt(4)'),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * fontSize: ${math('12rem + 8rem')};\n * fontSize: ${math('(12px + 2px) * 3')};\n * fontSize: ${math('3px^2 + sqrt(4)')};\n * `\n *\n * // CSS as JS Output\n *\n * div: {\n * fontSize: '20rem',\n * fontSize: '42px',\n * fontSize: '11px',\n * }\n */\n\n\nfunction math(formula, additionalSymbols) {\n var reversedFormula = reverseString(formula);\n var formulaMatch = reversedFormula.match(unitRegExp); // Check that all units are the same\n\n if (formulaMatch && !formulaMatch.every(function (unit) {\n return unit === formulaMatch[0];\n })) {\n throw new _errors[\"default\"](41);\n }\n\n var cleanFormula = reverseString(reversedFormula.replace(unitRegExp, ''));\n return \"\" + calculate(cleanFormula, additionalSymbols) + (formulaMatch ? reverseString(formulaMatch[0]) : '');\n}\n\nmodule.exports = exports.default;","//\n\nmodule.exports = function shallowEqual(objA, objB, compare, compareContext) {\n var ret = compare ? compare.call(compareContext, objA, objB) : void 0;\n\n if (ret !== void 0) {\n return !!ret;\n }\n\n if (objA === objB) {\n return true;\n }\n\n if (typeof objA !== \"object\" || !objA || typeof objB !== \"object\" || !objB) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);\n\n // Test for A's keys different from B.\n for (var idx = 0; idx < keysA.length; idx++) {\n var key = keysA[idx];\n\n if (!bHasOwnProperty(key)) {\n return false;\n }\n\n var valueA = objA[key];\n var valueB = objB[key];\n\n ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;\n\n if (ret === false || (ret === void 0 && valueA !== valueB)) {\n return false;\n }\n }\n\n return true;\n};\n","function stylis_min (W) {\n function M(d, c, e, h, a) {\n for (var m = 0, b = 0, v = 0, n = 0, q, g, x = 0, K = 0, k, u = k = q = 0, l = 0, r = 0, I = 0, t = 0, B = e.length, J = B - 1, y, f = '', p = '', F = '', G = '', C; l < B;) {\n g = e.charCodeAt(l);\n l === J && 0 !== b + n + v + m && (0 !== b && (g = 47 === b ? 10 : 47), n = v = m = 0, B++, J++);\n\n if (0 === b + n + v + m) {\n if (l === J && (0 < r && (f = f.replace(N, '')), 0 < f.trim().length)) {\n switch (g) {\n case 32:\n case 9:\n case 59:\n case 13:\n case 10:\n break;\n\n default:\n f += e.charAt(l);\n }\n\n g = 59;\n }\n\n switch (g) {\n case 123:\n f = f.trim();\n q = f.charCodeAt(0);\n k = 1;\n\n for (t = ++l; l < B;) {\n switch (g = e.charCodeAt(l)) {\n case 123:\n k++;\n break;\n\n case 125:\n k--;\n break;\n\n case 47:\n switch (g = e.charCodeAt(l + 1)) {\n case 42:\n case 47:\n a: {\n for (u = l + 1; u < J; ++u) {\n switch (e.charCodeAt(u)) {\n case 47:\n if (42 === g && 42 === e.charCodeAt(u - 1) && l + 2 !== u) {\n l = u + 1;\n break a;\n }\n\n break;\n\n case 10:\n if (47 === g) {\n l = u + 1;\n break a;\n }\n\n }\n }\n\n l = u;\n }\n\n }\n\n break;\n\n case 91:\n g++;\n\n case 40:\n g++;\n\n case 34:\n case 39:\n for (; l++ < J && e.charCodeAt(l) !== g;) {\n }\n\n }\n\n if (0 === k) break;\n l++;\n }\n\n k = e.substring(t, l);\n 0 === q && (q = (f = f.replace(ca, '').trim()).charCodeAt(0));\n\n switch (q) {\n case 64:\n 0 < r && (f = f.replace(N, ''));\n g = f.charCodeAt(1);\n\n switch (g) {\n case 100:\n case 109:\n case 115:\n case 45:\n r = c;\n break;\n\n default:\n r = O;\n }\n\n k = M(c, r, k, g, a + 1);\n t = k.length;\n 0 < A && (r = X(O, f, I), C = H(3, k, r, c, D, z, t, g, a, h), f = r.join(''), void 0 !== C && 0 === (t = (k = C.trim()).length) && (g = 0, k = ''));\n if (0 < t) switch (g) {\n case 115:\n f = f.replace(da, ea);\n\n case 100:\n case 109:\n case 45:\n k = f + '{' + k + '}';\n break;\n\n case 107:\n f = f.replace(fa, '$1 $2');\n k = f + '{' + k + '}';\n k = 1 === w || 2 === w && L('@' + k, 3) ? '@-webkit-' + k + '@' + k : '@' + k;\n break;\n\n default:\n k = f + k, 112 === h && (k = (p += k, ''));\n } else k = '';\n break;\n\n default:\n k = M(c, X(c, f, I), k, h, a + 1);\n }\n\n F += k;\n k = I = r = u = q = 0;\n f = '';\n g = e.charCodeAt(++l);\n break;\n\n case 125:\n case 59:\n f = (0 < r ? f.replace(N, '') : f).trim();\n if (1 < (t = f.length)) switch (0 === u && (q = f.charCodeAt(0), 45 === q || 96 < q && 123 > q) && (t = (f = f.replace(' ', ':')).length), 0 < A && void 0 !== (C = H(1, f, c, d, D, z, p.length, h, a, h)) && 0 === (t = (f = C.trim()).length) && (f = '\\x00\\x00'), q = f.charCodeAt(0), g = f.charCodeAt(1), q) {\n case 0:\n break;\n\n case 64:\n if (105 === g || 99 === g) {\n G += f + e.charAt(l);\n break;\n }\n\n default:\n 58 !== f.charCodeAt(t - 1) && (p += P(f, q, g, f.charCodeAt(2)));\n }\n I = r = u = q = 0;\n f = '';\n g = e.charCodeAt(++l);\n }\n }\n\n switch (g) {\n case 13:\n case 10:\n 47 === b ? b = 0 : 0 === 1 + q && 107 !== h && 0 < f.length && (r = 1, f += '\\x00');\n 0 < A * Y && H(0, f, c, d, D, z, p.length, h, a, h);\n z = 1;\n D++;\n break;\n\n case 59:\n case 125:\n if (0 === b + n + v + m) {\n z++;\n break;\n }\n\n default:\n z++;\n y = e.charAt(l);\n\n switch (g) {\n case 9:\n case 32:\n if (0 === n + m + b) switch (x) {\n case 44:\n case 58:\n case 9:\n case 32:\n y = '';\n break;\n\n default:\n 32 !== g && (y = ' ');\n }\n break;\n\n case 0:\n y = '\\\\0';\n break;\n\n case 12:\n y = '\\\\f';\n break;\n\n case 11:\n y = '\\\\v';\n break;\n\n case 38:\n 0 === n + b + m && (r = I = 1, y = '\\f' + y);\n break;\n\n case 108:\n if (0 === n + b + m + E && 0 < u) switch (l - u) {\n case 2:\n 112 === x && 58 === e.charCodeAt(l - 3) && (E = x);\n\n case 8:\n 111 === K && (E = K);\n }\n break;\n\n case 58:\n 0 === n + b + m && (u = l);\n break;\n\n case 44:\n 0 === b + v + n + m && (r = 1, y += '\\r');\n break;\n\n case 34:\n case 39:\n 0 === b && (n = n === g ? 0 : 0 === n ? g : n);\n break;\n\n case 91:\n 0 === n + b + v && m++;\n break;\n\n case 93:\n 0 === n + b + v && m--;\n break;\n\n case 41:\n 0 === n + b + m && v--;\n break;\n\n case 40:\n if (0 === n + b + m) {\n if (0 === q) switch (2 * x + 3 * K) {\n case 533:\n break;\n\n default:\n q = 1;\n }\n v++;\n }\n\n break;\n\n case 64:\n 0 === b + v + n + m + u + k && (k = 1);\n break;\n\n case 42:\n case 47:\n if (!(0 < n + m + v)) switch (b) {\n case 0:\n switch (2 * g + 3 * e.charCodeAt(l + 1)) {\n case 235:\n b = 47;\n break;\n\n case 220:\n t = l, b = 42;\n }\n\n break;\n\n case 42:\n 47 === g && 42 === x && t + 2 !== l && (33 === e.charCodeAt(t + 2) && (p += e.substring(t, l + 1)), y = '', b = 0);\n }\n }\n\n 0 === b && (f += y);\n }\n\n K = x;\n x = g;\n l++;\n }\n\n t = p.length;\n\n if (0 < t) {\n r = c;\n if (0 < A && (C = H(2, p, r, d, D, z, t, h, a, h), void 0 !== C && 0 === (p = C).length)) return G + p + F;\n p = r.join(',') + '{' + p + '}';\n\n if (0 !== w * E) {\n 2 !== w || L(p, 2) || (E = 0);\n\n switch (E) {\n case 111:\n p = p.replace(ha, ':-moz-$1') + p;\n break;\n\n case 112:\n p = p.replace(Q, '::-webkit-input-$1') + p.replace(Q, '::-moz-$1') + p.replace(Q, ':-ms-input-$1') + p;\n }\n\n E = 0;\n }\n }\n\n return G + p + F;\n }\n\n function X(d, c, e) {\n var h = c.trim().split(ia);\n c = h;\n var a = h.length,\n m = d.length;\n\n switch (m) {\n case 0:\n case 1:\n var b = 0;\n\n for (d = 0 === m ? '' : d[0] + ' '; b < a; ++b) {\n c[b] = Z(d, c[b], e).trim();\n }\n\n break;\n\n default:\n var v = b = 0;\n\n for (c = []; b < a; ++b) {\n for (var n = 0; n < m; ++n) {\n c[v++] = Z(d[n] + ' ', h[b], e).trim();\n }\n }\n\n }\n\n return c;\n }\n\n function Z(d, c, e) {\n var h = c.charCodeAt(0);\n 33 > h && (h = (c = c.trim()).charCodeAt(0));\n\n switch (h) {\n case 38:\n return c.replace(F, '$1' + d.trim());\n\n case 58:\n return d.trim() + c.replace(F, '$1' + d.trim());\n\n default:\n if (0 < 1 * e && 0 < c.indexOf('\\f')) return c.replace(F, (58 === d.charCodeAt(0) ? '' : '$1') + d.trim());\n }\n\n return d + c;\n }\n\n function P(d, c, e, h) {\n var a = d + ';',\n m = 2 * c + 3 * e + 4 * h;\n\n if (944 === m) {\n d = a.indexOf(':', 9) + 1;\n var b = a.substring(d, a.length - 1).trim();\n b = a.substring(0, d).trim() + b + ';';\n return 1 === w || 2 === w && L(b, 1) ? '-webkit-' + b + b : b;\n }\n\n if (0 === w || 2 === w && !L(a, 1)) return a;\n\n switch (m) {\n case 1015:\n return 97 === a.charCodeAt(10) ? '-webkit-' + a + a : a;\n\n case 951:\n return 116 === a.charCodeAt(3) ? '-webkit-' + a + a : a;\n\n case 963:\n return 110 === a.charCodeAt(5) ? '-webkit-' + a + a : a;\n\n case 1009:\n if (100 !== a.charCodeAt(4)) break;\n\n case 969:\n case 942:\n return '-webkit-' + a + a;\n\n case 978:\n return '-webkit-' + a + '-moz-' + a + a;\n\n case 1019:\n case 983:\n return '-webkit-' + a + '-moz-' + a + '-ms-' + a + a;\n\n case 883:\n if (45 === a.charCodeAt(8)) return '-webkit-' + a + a;\n if (0 < a.indexOf('image-set(', 11)) return a.replace(ja, '$1-webkit-$2') + a;\n break;\n\n case 932:\n if (45 === a.charCodeAt(4)) switch (a.charCodeAt(5)) {\n case 103:\n return '-webkit-box-' + a.replace('-grow', '') + '-webkit-' + a + '-ms-' + a.replace('grow', 'positive') + a;\n\n case 115:\n return '-webkit-' + a + '-ms-' + a.replace('shrink', 'negative') + a;\n\n case 98:\n return '-webkit-' + a + '-ms-' + a.replace('basis', 'preferred-size') + a;\n }\n return '-webkit-' + a + '-ms-' + a + a;\n\n case 964:\n return '-webkit-' + a + '-ms-flex-' + a + a;\n\n case 1023:\n if (99 !== a.charCodeAt(8)) break;\n b = a.substring(a.indexOf(':', 15)).replace('flex-', '').replace('space-between', 'justify');\n return '-webkit-box-pack' + b + '-webkit-' + a + '-ms-flex-pack' + b + a;\n\n case 1005:\n return ka.test(a) ? a.replace(aa, ':-webkit-') + a.replace(aa, ':-moz-') + a : a;\n\n case 1e3:\n b = a.substring(13).trim();\n c = b.indexOf('-') + 1;\n\n switch (b.charCodeAt(0) + b.charCodeAt(c)) {\n case 226:\n b = a.replace(G, 'tb');\n break;\n\n case 232:\n b = a.replace(G, 'tb-rl');\n break;\n\n case 220:\n b = a.replace(G, 'lr');\n break;\n\n default:\n return a;\n }\n\n return '-webkit-' + a + '-ms-' + b + a;\n\n case 1017:\n if (-1 === a.indexOf('sticky', 9)) break;\n\n case 975:\n c = (a = d).length - 10;\n b = (33 === a.charCodeAt(c) ? a.substring(0, c) : a).substring(d.indexOf(':', 7) + 1).trim();\n\n switch (m = b.charCodeAt(0) + (b.charCodeAt(7) | 0)) {\n case 203:\n if (111 > b.charCodeAt(8)) break;\n\n case 115:\n a = a.replace(b, '-webkit-' + b) + ';' + a;\n break;\n\n case 207:\n case 102:\n a = a.replace(b, '-webkit-' + (102 < m ? 'inline-' : '') + 'box') + ';' + a.replace(b, '-webkit-' + b) + ';' + a.replace(b, '-ms-' + b + 'box') + ';' + a;\n }\n\n return a + ';';\n\n case 938:\n if (45 === a.charCodeAt(5)) switch (a.charCodeAt(6)) {\n case 105:\n return b = a.replace('-items', ''), '-webkit-' + a + '-webkit-box-' + b + '-ms-flex-' + b + a;\n\n case 115:\n return '-webkit-' + a + '-ms-flex-item-' + a.replace(ba, '') + a;\n\n default:\n return '-webkit-' + a + '-ms-flex-line-pack' + a.replace('align-content', '').replace(ba, '') + a;\n }\n break;\n\n case 973:\n case 989:\n if (45 !== a.charCodeAt(3) || 122 === a.charCodeAt(4)) break;\n\n case 931:\n case 953:\n if (!0 === la.test(d)) return 115 === (b = d.substring(d.indexOf(':') + 1)).charCodeAt(0) ? P(d.replace('stretch', 'fill-available'), c, e, h).replace(':fill-available', ':stretch') : a.replace(b, '-webkit-' + b) + a.replace(b, '-moz-' + b.replace('fill-', '')) + a;\n break;\n\n case 962:\n if (a = '-webkit-' + a + (102 === a.charCodeAt(5) ? '-ms-' + a : '') + a, 211 === e + h && 105 === a.charCodeAt(13) && 0 < a.indexOf('transform', 10)) return a.substring(0, a.indexOf(';', 27) + 1).replace(ma, '$1-webkit-$2') + a;\n }\n\n return a;\n }\n\n function L(d, c) {\n var e = d.indexOf(1 === c ? ':' : '{'),\n h = d.substring(0, 3 !== c ? e : 10);\n e = d.substring(e + 1, d.length - 1);\n return R(2 !== c ? h : h.replace(na, '$1'), e, c);\n }\n\n function ea(d, c) {\n var e = P(c, c.charCodeAt(0), c.charCodeAt(1), c.charCodeAt(2));\n return e !== c + ';' ? e.replace(oa, ' or ($1)').substring(4) : '(' + c + ')';\n }\n\n function H(d, c, e, h, a, m, b, v, n, q) {\n for (var g = 0, x = c, w; g < A; ++g) {\n switch (w = S[g].call(B, d, x, e, h, a, m, b, v, n, q)) {\n case void 0:\n case !1:\n case !0:\n case null:\n break;\n\n default:\n x = w;\n }\n }\n\n if (x !== c) return x;\n }\n\n function T(d) {\n switch (d) {\n case void 0:\n case null:\n A = S.length = 0;\n break;\n\n default:\n if ('function' === typeof d) S[A++] = d;else if ('object' === typeof d) for (var c = 0, e = d.length; c < e; ++c) {\n T(d[c]);\n } else Y = !!d | 0;\n }\n\n return T;\n }\n\n function U(d) {\n d = d.prefix;\n void 0 !== d && (R = null, d ? 'function' !== typeof d ? w = 1 : (w = 2, R = d) : w = 0);\n return U;\n }\n\n function B(d, c) {\n var e = d;\n 33 > e.charCodeAt(0) && (e = e.trim());\n V = e;\n e = [V];\n\n if (0 < A) {\n var h = H(-1, c, e, e, D, z, 0, 0, 0, 0);\n void 0 !== h && 'string' === typeof h && (c = h);\n }\n\n var a = M(O, e, c, 0, 0);\n 0 < A && (h = H(-2, a, e, e, D, z, a.length, 0, 0, 0), void 0 !== h && (a = h));\n V = '';\n E = 0;\n z = D = 1;\n return a;\n }\n\n var ca = /^\\0+/g,\n N = /[\\0\\r\\f]/g,\n aa = /: */g,\n ka = /zoo|gra/,\n ma = /([,: ])(transform)/g,\n ia = /,\\r+?/g,\n F = /([\\t\\r\\n ])*\\f?&/g,\n fa = /@(k\\w+)\\s*(\\S*)\\s*/,\n Q = /::(place)/g,\n ha = /:(read-only)/g,\n G = /[svh]\\w+-[tblr]{2}/,\n da = /\\(\\s*(.*)\\s*\\)/g,\n oa = /([\\s\\S]*?);/g,\n ba = /-self|flex-/g,\n na = /[^]*?(:[rp][el]a[\\w-]+)[^]*/,\n la = /stretch|:\\s*\\w+\\-(?:conte|avail)/,\n ja = /([^-])(image-set\\()/,\n z = 1,\n D = 1,\n E = 0,\n w = 1,\n O = [],\n S = [],\n A = 0,\n R = null,\n Y = 0,\n V = '';\n B.use = T;\n B.set = U;\n void 0 !== W && U(W);\n return B;\n}\n\nexport default stylis_min;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar useEffectOnce_1 = tslib_1.__importDefault(require(\"./useEffectOnce\"));\nvar useMount = function (fn) {\n useEffectOnce_1.default(function () {\n fn();\n });\n};\nexports.default = useMount;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = require(\"react\");\nvar useFirstMountState_1 = require(\"./useFirstMountState\");\nvar strictEquals = function (prev, next) { return prev === next; };\nfunction usePreviousDistinct(value, compare) {\n if (compare === void 0) { compare = strictEquals; }\n var prevRef = react_1.useRef();\n var curRef = react_1.useRef(value);\n var isFirstMount = useFirstMountState_1.useFirstMountState();\n if (!isFirstMount && !compare(curRef.current, value)) {\n prevRef.current = curRef.current;\n curRef.current = value;\n }\n return prevRef.current;\n}\nexports.default = usePreviousDistinct;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = require(\"react\");\nvar useFirstMountState_1 = require(\"./useFirstMountState\");\nvar useUpdateEffect = function (effect, deps) {\n var isFirstMount = useFirstMountState_1.useFirstMountState();\n react_1.useEffect(function () {\n if (!isFirstMount) {\n return effect();\n }\n }, deps);\n};\nexports.default = useUpdateEffect;\n","module.exports = require('./lib/axios');","var objectKeys = require('object-keys');\nvar isArguments = require('is-arguments');\nvar is = require('object-is');\nvar isRegex = require('is-regex');\nvar flags = require('regexp.prototype.flags');\nvar isDate = require('is-date-object');\n\nvar getTime = Date.prototype.getTime;\n\nfunction deepEqual(actual, expected, options) {\n var opts = options || {};\n\n // 7.1. All identical values are equivalent, as determined by ===.\n if (opts.strict ? is(actual, expected) : actual === expected) {\n return true;\n }\n\n // 7.3. Other pairs that do not both pass typeof value == 'object', equivalence is determined by ==.\n if (!actual || !expected || (typeof actual !== 'object' && typeof expected !== 'object')) {\n return opts.strict ? is(actual, expected) : actual == expected;\n }\n\n /*\n * 7.4. For all other Object pairs, including Array objects, equivalence is\n * determined by having the same number of owned properties (as verified\n * with Object.prototype.hasOwnProperty.call), the same set of keys\n * (although not necessarily the same order), equivalent values for every\n * corresponding key, and an identical 'prototype' property. Note: this\n * accounts for both named and indexed properties on Arrays.\n */\n // eslint-disable-next-line no-use-before-define\n return objEquiv(actual, expected, opts);\n}\n\nfunction isUndefinedOrNull(value) {\n return value === null || value === undefined;\n}\n\nfunction isBuffer(x) {\n if (!x || typeof x !== 'object' || typeof x.length !== 'number') {\n return false;\n }\n if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n return false;\n }\n if (x.length > 0 && typeof x[0] !== 'number') {\n return false;\n }\n return true;\n}\n\nfunction objEquiv(a, b, opts) {\n /* eslint max-statements: [2, 50] */\n var i, key;\n if (typeof a !== typeof b) { return false; }\n if (isUndefinedOrNull(a) || isUndefinedOrNull(b)) { return false; }\n\n // an identical 'prototype' property.\n if (a.prototype !== b.prototype) { return false; }\n\n if (isArguments(a) !== isArguments(b)) { return false; }\n\n var aIsRegex = isRegex(a);\n var bIsRegex = isRegex(b);\n if (aIsRegex !== bIsRegex) { return false; }\n if (aIsRegex || bIsRegex) {\n return a.source === b.source && flags(a) === flags(b);\n }\n\n if (isDate(a) && isDate(b)) {\n return getTime.call(a) === getTime.call(b);\n }\n\n var aIsBuffer = isBuffer(a);\n var bIsBuffer = isBuffer(b);\n if (aIsBuffer !== bIsBuffer) { return false; }\n if (aIsBuffer || bIsBuffer) { // && would work too, because both are true or both false here\n if (a.length !== b.length) { return false; }\n for (i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) { return false; }\n }\n return true;\n }\n\n if (typeof a !== typeof b) { return false; }\n\n try {\n var ka = objectKeys(a);\n var kb = objectKeys(b);\n } catch (e) { // happens when one is a string literal and the other isn't\n return false;\n }\n // having the same number of owned properties (keys incorporates hasOwnProperty)\n if (ka.length !== kb.length) { return false; }\n\n // the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n // ~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] != kb[i]) { return false; }\n }\n // equivalent values for every corresponding key, and ~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!deepEqual(a[key], b[key], opts)) { return false; }\n }\n\n return true;\n}\n\nmodule.exports = deepEqual;\n","var global = typeof self !== 'undefined' ? self : this;\nvar __self__ = (function () {\nfunction F() {\nthis.fetch = false;\nthis.DOMException = global.DOMException\n}\nF.prototype = global;\nreturn new F();\n})();\n(function(self) {\n\nvar irrelevant = (function (exports) {\n\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob:\n 'FileReader' in self &&\n 'Blob' in self &&\n (function() {\n try {\n new Blob();\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n };\n\n function isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ];\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n };\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift();\n return {done: value === undefined, value: value}\n }\n };\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n };\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {};\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name]);\n }, this);\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n };\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)];\n };\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null\n };\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n };\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n };\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n };\n\n Headers.prototype.keys = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push(name);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.values = function() {\n var items = [];\n this.forEach(function(value) {\n items.push(value);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.entries = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items)\n };\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true;\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result);\n };\n reader.onerror = function() {\n reject(reader.error);\n };\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsArrayBuffer(blob);\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsText(blob);\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf);\n var chars = new Array(view.length);\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i]);\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength);\n view.set(new Uint8Array(buf));\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false;\n\n this._initBody = function(body) {\n this._bodyInit = body;\n if (!body) {\n this._bodyText = '';\n } else if (typeof body === 'string') {\n this._bodyText = body;\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body;\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body;\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString();\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer);\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer]);\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body);\n } else {\n this._bodyText = body = Object.prototype.toString.call(body);\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8');\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type);\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n }\n };\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n };\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n };\n }\n\n this.text = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n };\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n };\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n };\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase();\n return methods.indexOf(upcased) > -1 ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {};\n var body = options.body;\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url;\n this.credentials = input.credentials;\n if (!options.headers) {\n this.headers = new Headers(input.headers);\n }\n this.method = input.method;\n this.mode = input.mode;\n this.signal = input.signal;\n if (!body && input._bodyInit != null) {\n body = input._bodyInit;\n input.bodyUsed = true;\n }\n } else {\n this.url = String(input);\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin';\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers);\n }\n this.method = normalizeMethod(options.method || this.method || 'GET');\n this.mode = options.mode || this.mode || null;\n this.signal = options.signal || this.signal;\n this.referrer = null;\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body);\n }\n\n Request.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n };\n\n function decode(body) {\n var form = new FormData();\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=');\n var name = split.shift().replace(/\\+/g, ' ');\n var value = split.join('=').replace(/\\+/g, ' ');\n form.append(decodeURIComponent(name), decodeURIComponent(value));\n }\n });\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers();\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':');\n var key = parts.shift().trim();\n if (key) {\n var value = parts.join(':').trim();\n headers.append(key, value);\n }\n });\n return headers\n }\n\n Body.call(Request.prototype);\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {};\n }\n\n this.type = 'default';\n this.status = options.status === undefined ? 200 : options.status;\n this.ok = this.status >= 200 && this.status < 300;\n this.statusText = 'statusText' in options ? options.statusText : 'OK';\n this.headers = new Headers(options.headers);\n this.url = options.url || '';\n this._initBody(bodyInit);\n }\n\n Body.call(Response.prototype);\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n };\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''});\n response.type = 'error';\n return response\n };\n\n var redirectStatuses = [301, 302, 303, 307, 308];\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n };\n\n exports.DOMException = self.DOMException;\n try {\n new exports.DOMException();\n } catch (err) {\n exports.DOMException = function(message, name) {\n this.message = message;\n this.name = name;\n var error = Error(message);\n this.stack = error.stack;\n };\n exports.DOMException.prototype = Object.create(Error.prototype);\n exports.DOMException.prototype.constructor = exports.DOMException;\n }\n\n function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init);\n\n if (request.signal && request.signal.aborted) {\n return reject(new exports.DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest();\n\n function abortXhr() {\n xhr.abort();\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n };\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n resolve(new Response(body, options));\n };\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.onabort = function() {\n reject(new exports.DOMException('Aborted', 'AbortError'));\n };\n\n xhr.open(request.method, request.url, true);\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob';\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value);\n });\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr);\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr);\n }\n };\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n })\n }\n\n fetch.polyfill = true;\n\n if (!self.fetch) {\n self.fetch = fetch;\n self.Headers = Headers;\n self.Request = Request;\n self.Response = Response;\n }\n\n exports.Headers = Headers;\n exports.Request = Request;\n exports.Response = Response;\n exports.fetch = fetch;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n return exports;\n\n})({});\n})(__self__);\n__self__.fetch.ponyfill = true;\n// Remove \"polyfill\" property added by whatwg-fetch\ndelete __self__.fetch.polyfill;\n// Choose between native implementation (global) or custom implementation (__self__)\n// var ctx = global.fetch ? global : __self__;\nvar ctx = __self__; // this line disable service worker support temporarily\nexports = ctx.fetch // To enable: import fetch from 'cross-fetch'\nexports.default = ctx.fetch // For TypeScript consumers without esModuleInterop.\nexports.fetch = ctx.fetch // To enable: import {fetch} from 'cross-fetch'\nexports.Headers = ctx.Headers\nexports.Request = ctx.Request\nexports.Response = ctx.Response\nmodule.exports = exports\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = require(\"react\");\nvar util_1 = require(\"./misc/util\");\nvar useLocalStorage = function (key, initialValue, options) {\n if (!util_1.isBrowser) {\n return [initialValue, util_1.noop, util_1.noop];\n }\n if (!key) {\n throw new Error('useLocalStorage key may not be falsy');\n }\n var deserializer = options\n ? options.raw\n ? function (value) { return value; }\n : options.deserializer\n : JSON.parse;\n // eslint-disable-next-line react-hooks/rules-of-hooks\n var initializer = react_1.useRef(function (key) {\n try {\n var serializer = options ? (options.raw ? String : options.serializer) : JSON.stringify;\n var localStorageValue = localStorage.getItem(key);\n if (localStorageValue !== null) {\n return deserializer(localStorageValue);\n }\n else {\n initialValue && localStorage.setItem(key, serializer(initialValue));\n return initialValue;\n }\n }\n catch (_a) {\n // If user is in private mode or has storage restriction\n // localStorage can throw. JSON.parse and JSON.stringify\n // can throw, too.\n return initialValue;\n }\n });\n // eslint-disable-next-line react-hooks/rules-of-hooks\n var _a = react_1.useState(function () { return initializer.current(key); }), state = _a[0], setState = _a[1];\n // eslint-disable-next-line react-hooks/rules-of-hooks\n react_1.useLayoutEffect(function () { return setState(initializer.current(key)); }, [key]);\n // eslint-disable-next-line react-hooks/rules-of-hooks\n var set = react_1.useCallback(function (valOrFunc) {\n try {\n var newState = typeof valOrFunc === 'function' ? valOrFunc(state) : valOrFunc;\n if (typeof newState === 'undefined')\n return;\n var value = void 0;\n if (options)\n if (options.raw)\n if (typeof newState === 'string')\n value = newState;\n else\n value = JSON.stringify(newState);\n else if (options.serializer)\n value = options.serializer(newState);\n else\n value = JSON.stringify(newState);\n else\n value = JSON.stringify(newState);\n localStorage.setItem(key, value);\n setState(deserializer(value));\n }\n catch (_a) {\n // If user is in private mode or has storage restriction\n // localStorage can throw. Also JSON.stringify can throw.\n }\n }, [key, setState]);\n // eslint-disable-next-line react-hooks/rules-of-hooks\n var remove = react_1.useCallback(function () {\n try {\n localStorage.removeItem(key);\n setState(undefined);\n }\n catch (_a) {\n // If user is in private mode or has storage restriction\n // localStorage can throw.\n }\n }, [key, setState]);\n return [state, set, remove];\n};\nexports.default = useLocalStorage;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = require(\"react\");\nfunction usePrevious(state) {\n var ref = react_1.useRef();\n react_1.useEffect(function () {\n ref.current = state;\n });\n return ref.current;\n}\nexports.default = usePrevious;\n","'use strict';\n\nmodule.exports = require('./src/js/main');\n","/**\r\n * A collection of shims that provide minimal functionality of the ES6 collections.\r\n *\r\n * These implementations are not meant to be used outside of the ResizeObserver\r\n * modules as they cover only a limited range of use cases.\r\n */\r\n/* eslint-disable require-jsdoc, valid-jsdoc */\r\nvar MapShim = (function () {\r\n if (typeof Map !== 'undefined') {\r\n return Map;\r\n }\r\n /**\r\n * Returns index in provided array that matches the specified key.\r\n *\r\n * @param {Array} arr\r\n * @param {*} key\r\n * @returns {number}\r\n */\r\n function getIndex(arr, key) {\r\n var result = -1;\r\n arr.some(function (entry, index) {\r\n if (entry[0] === key) {\r\n result = index;\r\n return true;\r\n }\r\n return false;\r\n });\r\n return result;\r\n }\r\n return /** @class */ (function () {\r\n function class_1() {\r\n this.__entries__ = [];\r\n }\r\n Object.defineProperty(class_1.prototype, \"size\", {\r\n /**\r\n * @returns {boolean}\r\n */\r\n get: function () {\r\n return this.__entries__.length;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @param {*} key\r\n * @returns {*}\r\n */\r\n class_1.prototype.get = function (key) {\r\n var index = getIndex(this.__entries__, key);\r\n var entry = this.__entries__[index];\r\n return entry && entry[1];\r\n };\r\n /**\r\n * @param {*} key\r\n * @param {*} value\r\n * @returns {void}\r\n */\r\n class_1.prototype.set = function (key, value) {\r\n var index = getIndex(this.__entries__, key);\r\n if (~index) {\r\n this.__entries__[index][1] = value;\r\n }\r\n else {\r\n this.__entries__.push([key, value]);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.delete = function (key) {\r\n var entries = this.__entries__;\r\n var index = getIndex(entries, key);\r\n if (~index) {\r\n entries.splice(index, 1);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.has = function (key) {\r\n return !!~getIndex(this.__entries__, key);\r\n };\r\n /**\r\n * @returns {void}\r\n */\r\n class_1.prototype.clear = function () {\r\n this.__entries__.splice(0);\r\n };\r\n /**\r\n * @param {Function} callback\r\n * @param {*} [ctx=null]\r\n * @returns {void}\r\n */\r\n class_1.prototype.forEach = function (callback, ctx) {\r\n if (ctx === void 0) { ctx = null; }\r\n for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) {\r\n var entry = _a[_i];\r\n callback.call(ctx, entry[1], entry[0]);\r\n }\r\n };\r\n return class_1;\r\n }());\r\n})();\n\n/**\r\n * Detects whether window and document objects are available in current environment.\r\n */\r\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document;\n\n// Returns global object of a current environment.\r\nvar global$1 = (function () {\r\n if (typeof global !== 'undefined' && global.Math === Math) {\r\n return global;\r\n }\r\n if (typeof self !== 'undefined' && self.Math === Math) {\r\n return self;\r\n }\r\n if (typeof window !== 'undefined' && window.Math === Math) {\r\n return window;\r\n }\r\n // eslint-disable-next-line no-new-func\r\n return Function('return this')();\r\n})();\n\n/**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\r\nvar requestAnimationFrame$1 = (function () {\r\n if (typeof requestAnimationFrame === 'function') {\r\n // It's required to use a bounded function because IE sometimes throws\r\n // an \"Invalid calling object\" error if rAF is invoked without the global\r\n // object on the left hand side.\r\n return requestAnimationFrame.bind(global$1);\r\n }\r\n return function (callback) { return setTimeout(function () { return callback(Date.now()); }, 1000 / 60); };\r\n})();\n\n// Defines minimum timeout before adding a trailing call.\r\nvar trailingTimeout = 2;\r\n/**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\r\nfunction throttle (callback, delay) {\r\n var leadingCall = false, trailingCall = false, lastCallTime = 0;\r\n /**\r\n * Invokes the original callback function and schedules new invocation if\r\n * the \"proxy\" was called during current request.\r\n *\r\n * @returns {void}\r\n */\r\n function resolvePending() {\r\n if (leadingCall) {\r\n leadingCall = false;\r\n callback();\r\n }\r\n if (trailingCall) {\r\n proxy();\r\n }\r\n }\r\n /**\r\n * Callback invoked after the specified delay. It will further postpone\r\n * invocation of the original function delegating it to the\r\n * requestAnimationFrame.\r\n *\r\n * @returns {void}\r\n */\r\n function timeoutCallback() {\r\n requestAnimationFrame$1(resolvePending);\r\n }\r\n /**\r\n * Schedules invocation of the original function.\r\n *\r\n * @returns {void}\r\n */\r\n function proxy() {\r\n var timeStamp = Date.now();\r\n if (leadingCall) {\r\n // Reject immediately following calls.\r\n if (timeStamp - lastCallTime < trailingTimeout) {\r\n return;\r\n }\r\n // Schedule new call to be in invoked when the pending one is resolved.\r\n // This is important for \"transitions\" which never actually start\r\n // immediately so there is a chance that we might miss one if change\r\n // happens amids the pending invocation.\r\n trailingCall = true;\r\n }\r\n else {\r\n leadingCall = true;\r\n trailingCall = false;\r\n setTimeout(timeoutCallback, delay);\r\n }\r\n lastCallTime = timeStamp;\r\n }\r\n return proxy;\r\n}\n\n// Minimum delay before invoking the update of observers.\r\nvar REFRESH_DELAY = 20;\r\n// A list of substrings of CSS properties used to find transition events that\r\n// might affect dimensions of observed elements.\r\nvar transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight'];\r\n// Check if MutationObserver is available.\r\nvar mutationObserverSupported = typeof MutationObserver !== 'undefined';\r\n/**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\r\nvar ResizeObserverController = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserverController.\r\n *\r\n * @private\r\n */\r\n function ResizeObserverController() {\r\n /**\r\n * Indicates whether DOM listeners have been added.\r\n *\r\n * @private {boolean}\r\n */\r\n this.connected_ = false;\r\n /**\r\n * Tells that controller has subscribed for Mutation Events.\r\n *\r\n * @private {boolean}\r\n */\r\n this.mutationEventsAdded_ = false;\r\n /**\r\n * Keeps reference to the instance of MutationObserver.\r\n *\r\n * @private {MutationObserver}\r\n */\r\n this.mutationsObserver_ = null;\r\n /**\r\n * A list of connected observers.\r\n *\r\n * @private {Array}\r\n */\r\n this.observers_ = [];\r\n this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\r\n this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\r\n }\r\n /**\r\n * Adds observer to observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be added.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.addObserver = function (observer) {\r\n if (!~this.observers_.indexOf(observer)) {\r\n this.observers_.push(observer);\r\n }\r\n // Add listeners if they haven't been added yet.\r\n if (!this.connected_) {\r\n this.connect_();\r\n }\r\n };\r\n /**\r\n * Removes observer from observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.removeObserver = function (observer) {\r\n var observers = this.observers_;\r\n var index = observers.indexOf(observer);\r\n // Remove observer if it's present in registry.\r\n if (~index) {\r\n observers.splice(index, 1);\r\n }\r\n // Remove listeners if controller has no connected observers.\r\n if (!observers.length && this.connected_) {\r\n this.disconnect_();\r\n }\r\n };\r\n /**\r\n * Invokes the update of observers. It will continue running updates insofar\r\n * it detects changes.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.refresh = function () {\r\n var changesDetected = this.updateObservers_();\r\n // Continue running updates if changes have been detected as there might\r\n // be future ones caused by CSS transitions.\r\n if (changesDetected) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Updates every observer from observers list and notifies them of queued\r\n * entries.\r\n *\r\n * @private\r\n * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n * dimensions of it's elements.\r\n */\r\n ResizeObserverController.prototype.updateObservers_ = function () {\r\n // Collect observers that have active observations.\r\n var activeObservers = this.observers_.filter(function (observer) {\r\n return observer.gatherActive(), observer.hasActive();\r\n });\r\n // Deliver notifications in a separate cycle in order to avoid any\r\n // collisions between observers, e.g. when multiple instances of\r\n // ResizeObserver are tracking the same element and the callback of one\r\n // of them changes content dimensions of the observed target. Sometimes\r\n // this may result in notifications being blocked for the rest of observers.\r\n activeObservers.forEach(function (observer) { return observer.broadcastActive(); });\r\n return activeObservers.length > 0;\r\n };\r\n /**\r\n * Initializes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.connect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already added.\r\n if (!isBrowser || this.connected_) {\r\n return;\r\n }\r\n // Subscription to the \"Transitionend\" event is used as a workaround for\r\n // delayed transitions. This way it's possible to capture at least the\r\n // final state of an element.\r\n document.addEventListener('transitionend', this.onTransitionEnd_);\r\n window.addEventListener('resize', this.refresh);\r\n if (mutationObserverSupported) {\r\n this.mutationsObserver_ = new MutationObserver(this.refresh);\r\n this.mutationsObserver_.observe(document, {\r\n attributes: true,\r\n childList: true,\r\n characterData: true,\r\n subtree: true\r\n });\r\n }\r\n else {\r\n document.addEventListener('DOMSubtreeModified', this.refresh);\r\n this.mutationEventsAdded_ = true;\r\n }\r\n this.connected_ = true;\r\n };\r\n /**\r\n * Removes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.disconnect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already removed.\r\n if (!isBrowser || !this.connected_) {\r\n return;\r\n }\r\n document.removeEventListener('transitionend', this.onTransitionEnd_);\r\n window.removeEventListener('resize', this.refresh);\r\n if (this.mutationsObserver_) {\r\n this.mutationsObserver_.disconnect();\r\n }\r\n if (this.mutationEventsAdded_) {\r\n document.removeEventListener('DOMSubtreeModified', this.refresh);\r\n }\r\n this.mutationsObserver_ = null;\r\n this.mutationEventsAdded_ = false;\r\n this.connected_ = false;\r\n };\r\n /**\r\n * \"Transitionend\" event handler.\r\n *\r\n * @private\r\n * @param {TransitionEvent} event\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.onTransitionEnd_ = function (_a) {\r\n var _b = _a.propertyName, propertyName = _b === void 0 ? '' : _b;\r\n // Detect whether transition may affect dimensions of an element.\r\n var isReflowProperty = transitionKeys.some(function (key) {\r\n return !!~propertyName.indexOf(key);\r\n });\r\n if (isReflowProperty) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Returns instance of the ResizeObserverController.\r\n *\r\n * @returns {ResizeObserverController}\r\n */\r\n ResizeObserverController.getInstance = function () {\r\n if (!this.instance_) {\r\n this.instance_ = new ResizeObserverController();\r\n }\r\n return this.instance_;\r\n };\r\n /**\r\n * Holds reference to the controller's instance.\r\n *\r\n * @private {ResizeObserverController}\r\n */\r\n ResizeObserverController.instance_ = null;\r\n return ResizeObserverController;\r\n}());\n\n/**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\r\nvar defineConfigurable = (function (target, props) {\r\n for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\r\n var key = _a[_i];\r\n Object.defineProperty(target, key, {\r\n value: props[key],\r\n enumerable: false,\r\n writable: false,\r\n configurable: true\r\n });\r\n }\r\n return target;\r\n});\n\n/**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\r\nvar getWindowOf = (function (target) {\r\n // Assume that the element is an instance of Node, which means that it\r\n // has the \"ownerDocument\" property from which we can retrieve a\r\n // corresponding global object.\r\n var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;\r\n // Return the local global object if it's not possible extract one from\r\n // provided element.\r\n return ownerGlobal || global$1;\r\n});\n\n// Placeholder of an empty content rectangle.\r\nvar emptyRect = createRectInit(0, 0, 0, 0);\r\n/**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\r\nfunction toFloat(value) {\r\n return parseFloat(value) || 0;\r\n}\r\n/**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\r\nfunction getBordersSize(styles) {\r\n var positions = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n positions[_i - 1] = arguments[_i];\r\n }\r\n return positions.reduce(function (size, position) {\r\n var value = styles['border-' + position + '-width'];\r\n return size + toFloat(value);\r\n }, 0);\r\n}\r\n/**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\r\nfunction getPaddings(styles) {\r\n var positions = ['top', 'right', 'bottom', 'left'];\r\n var paddings = {};\r\n for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {\r\n var position = positions_1[_i];\r\n var value = styles['padding-' + position];\r\n paddings[position] = toFloat(value);\r\n }\r\n return paddings;\r\n}\r\n/**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n * to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getSVGContentRect(target) {\r\n var bbox = target.getBBox();\r\n return createRectInit(0, 0, bbox.width, bbox.height);\r\n}\r\n/**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getHTMLElementContentRect(target) {\r\n // Client width & height properties can't be\r\n // used exclusively as they provide rounded values.\r\n var clientWidth = target.clientWidth, clientHeight = target.clientHeight;\r\n // By this condition we can catch all non-replaced inline, hidden and\r\n // detached elements. Though elements with width & height properties less\r\n // than 0.5 will be discarded as well.\r\n //\r\n // Without it we would need to implement separate methods for each of\r\n // those cases and it's not possible to perform a precise and performance\r\n // effective test for hidden elements. E.g. even jQuery's ':visible' filter\r\n // gives wrong results for elements with width & height less than 0.5.\r\n if (!clientWidth && !clientHeight) {\r\n return emptyRect;\r\n }\r\n var styles = getWindowOf(target).getComputedStyle(target);\r\n var paddings = getPaddings(styles);\r\n var horizPad = paddings.left + paddings.right;\r\n var vertPad = paddings.top + paddings.bottom;\r\n // Computed styles of width & height are being used because they are the\r\n // only dimensions available to JS that contain non-rounded values. It could\r\n // be possible to utilize the getBoundingClientRect if only it's data wasn't\r\n // affected by CSS transformations let alone paddings, borders and scroll bars.\r\n var width = toFloat(styles.width), height = toFloat(styles.height);\r\n // Width & height include paddings and borders when the 'border-box' box\r\n // model is applied (except for IE).\r\n if (styles.boxSizing === 'border-box') {\r\n // Following conditions are required to handle Internet Explorer which\r\n // doesn't include paddings and borders to computed CSS dimensions.\r\n //\r\n // We can say that if CSS dimensions + paddings are equal to the \"client\"\r\n // properties then it's either IE, and thus we don't need to subtract\r\n // anything, or an element merely doesn't have paddings/borders styles.\r\n if (Math.round(width + horizPad) !== clientWidth) {\r\n width -= getBordersSize(styles, 'left', 'right') + horizPad;\r\n }\r\n if (Math.round(height + vertPad) !== clientHeight) {\r\n height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\r\n }\r\n }\r\n // Following steps can't be applied to the document's root element as its\r\n // client[Width/Height] properties represent viewport area of the window.\r\n // Besides, it's as well not necessary as the itself neither has\r\n // rendered scroll bars nor it can be clipped.\r\n if (!isDocumentElement(target)) {\r\n // In some browsers (only in Firefox, actually) CSS width & height\r\n // include scroll bars size which can be removed at this step as scroll\r\n // bars are the only difference between rounded dimensions + paddings\r\n // and \"client\" properties, though that is not always true in Chrome.\r\n var vertScrollbar = Math.round(width + horizPad) - clientWidth;\r\n var horizScrollbar = Math.round(height + vertPad) - clientHeight;\r\n // Chrome has a rather weird rounding of \"client\" properties.\r\n // E.g. for an element with content width of 314.2px it sometimes gives\r\n // the client width of 315px and for the width of 314.7px it may give\r\n // 314px. And it doesn't happen all the time. So just ignore this delta\r\n // as a non-relevant.\r\n if (Math.abs(vertScrollbar) !== 1) {\r\n width -= vertScrollbar;\r\n }\r\n if (Math.abs(horizScrollbar) !== 1) {\r\n height -= horizScrollbar;\r\n }\r\n }\r\n return createRectInit(paddings.left, paddings.top, width, height);\r\n}\r\n/**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nvar isSVGGraphicsElement = (function () {\r\n // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\r\n // interface.\r\n if (typeof SVGGraphicsElement !== 'undefined') {\r\n return function (target) { return target instanceof getWindowOf(target).SVGGraphicsElement; };\r\n }\r\n // If it's so, then check that element is at least an instance of the\r\n // SVGElement and that it has the \"getBBox\" method.\r\n // eslint-disable-next-line no-extra-parens\r\n return function (target) { return (target instanceof getWindowOf(target).SVGElement &&\r\n typeof target.getBBox === 'function'); };\r\n})();\r\n/**\r\n * Checks whether provided element is a document element ().\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nfunction isDocumentElement(target) {\r\n return target === getWindowOf(target).document.documentElement;\r\n}\r\n/**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getContentRect(target) {\r\n if (!isBrowser) {\r\n return emptyRect;\r\n }\r\n if (isSVGGraphicsElement(target)) {\r\n return getSVGContentRect(target);\r\n }\r\n return getHTMLElementContentRect(target);\r\n}\r\n/**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\r\nfunction createReadOnlyRect(_a) {\r\n var x = _a.x, y = _a.y, width = _a.width, height = _a.height;\r\n // If DOMRectReadOnly is available use it as a prototype for the rectangle.\r\n var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\r\n var rect = Object.create(Constr.prototype);\r\n // Rectangle's properties are not writable and non-enumerable.\r\n defineConfigurable(rect, {\r\n x: x, y: y, width: width, height: height,\r\n top: y,\r\n right: x + width,\r\n bottom: height + y,\r\n left: x\r\n });\r\n return rect;\r\n}\r\n/**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction createRectInit(x, y, width, height) {\r\n return { x: x, y: y, width: width, height: height };\r\n}\n\n/**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\r\nvar ResizeObservation = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObservation.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n */\r\n function ResizeObservation(target) {\r\n /**\r\n * Broadcasted width of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastWidth = 0;\r\n /**\r\n * Broadcasted height of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastHeight = 0;\r\n /**\r\n * Reference to the last observed content rectangle.\r\n *\r\n * @private {DOMRectInit}\r\n */\r\n this.contentRect_ = createRectInit(0, 0, 0, 0);\r\n this.target = target;\r\n }\r\n /**\r\n * Updates content rectangle and tells whether it's width or height properties\r\n * have changed since the last broadcast.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObservation.prototype.isActive = function () {\r\n var rect = getContentRect(this.target);\r\n this.contentRect_ = rect;\r\n return (rect.width !== this.broadcastWidth ||\r\n rect.height !== this.broadcastHeight);\r\n };\r\n /**\r\n * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n * from the corresponding properties of the last observed content rectangle.\r\n *\r\n * @returns {DOMRectInit} Last observed content rectangle.\r\n */\r\n ResizeObservation.prototype.broadcastRect = function () {\r\n var rect = this.contentRect_;\r\n this.broadcastWidth = rect.width;\r\n this.broadcastHeight = rect.height;\r\n return rect;\r\n };\r\n return ResizeObservation;\r\n}());\n\nvar ResizeObserverEntry = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObserverEntry.\r\n *\r\n * @param {Element} target - Element that is being observed.\r\n * @param {DOMRectInit} rectInit - Data of the element's content rectangle.\r\n */\r\n function ResizeObserverEntry(target, rectInit) {\r\n var contentRect = createReadOnlyRect(rectInit);\r\n // According to the specification following properties are not writable\r\n // and are also not enumerable in the native implementation.\r\n //\r\n // Property accessors are not being used as they'd require to define a\r\n // private WeakMap storage which may cause memory leaks in browsers that\r\n // don't support this type of collections.\r\n defineConfigurable(this, { target: target, contentRect: contentRect });\r\n }\r\n return ResizeObserverEntry;\r\n}());\n\nvar ResizeObserverSPI = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback function that is invoked\r\n * when one of the observed elements changes it's content dimensions.\r\n * @param {ResizeObserverController} controller - Controller instance which\r\n * is responsible for the updates of observer.\r\n * @param {ResizeObserver} callbackCtx - Reference to the public\r\n * ResizeObserver instance which will be passed to callback function.\r\n */\r\n function ResizeObserverSPI(callback, controller, callbackCtx) {\r\n /**\r\n * Collection of resize observations that have detected changes in dimensions\r\n * of elements.\r\n *\r\n * @private {Array}\r\n */\r\n this.activeObservations_ = [];\r\n /**\r\n * Registry of the ResizeObservation instances.\r\n *\r\n * @private {Map}\r\n */\r\n this.observations_ = new MapShim();\r\n if (typeof callback !== 'function') {\r\n throw new TypeError('The callback provided as parameter 1 is not a function.');\r\n }\r\n this.callback_ = callback;\r\n this.controller_ = controller;\r\n this.callbackCtx_ = callbackCtx;\r\n }\r\n /**\r\n * Starts observing provided element.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.observe = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is already being observed.\r\n if (observations.has(target)) {\r\n return;\r\n }\r\n observations.set(target, new ResizeObservation(target));\r\n this.controller_.addObserver(this);\r\n // Force the update of observations.\r\n this.controller_.refresh();\r\n };\r\n /**\r\n * Stops observing provided element.\r\n *\r\n * @param {Element} target - Element to stop observing.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.unobserve = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is not being observed.\r\n if (!observations.has(target)) {\r\n return;\r\n }\r\n observations.delete(target);\r\n if (!observations.size) {\r\n this.controller_.removeObserver(this);\r\n }\r\n };\r\n /**\r\n * Stops observing all elements.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.disconnect = function () {\r\n this.clearActive();\r\n this.observations_.clear();\r\n this.controller_.removeObserver(this);\r\n };\r\n /**\r\n * Collects observation instances the associated element of which has changed\r\n * it's content rectangle.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.gatherActive = function () {\r\n var _this = this;\r\n this.clearActive();\r\n this.observations_.forEach(function (observation) {\r\n if (observation.isActive()) {\r\n _this.activeObservations_.push(observation);\r\n }\r\n });\r\n };\r\n /**\r\n * Invokes initial callback function with a list of ResizeObserverEntry\r\n * instances collected from active resize observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.broadcastActive = function () {\r\n // Do nothing if observer doesn't have active observations.\r\n if (!this.hasActive()) {\r\n return;\r\n }\r\n var ctx = this.callbackCtx_;\r\n // Create ResizeObserverEntry instance for every active observation.\r\n var entries = this.activeObservations_.map(function (observation) {\r\n return new ResizeObserverEntry(observation.target, observation.broadcastRect());\r\n });\r\n this.callback_.call(ctx, entries, ctx);\r\n this.clearActive();\r\n };\r\n /**\r\n * Clears the collection of active observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.clearActive = function () {\r\n this.activeObservations_.splice(0);\r\n };\r\n /**\r\n * Tells whether observer has active observations.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObserverSPI.prototype.hasActive = function () {\r\n return this.activeObservations_.length > 0;\r\n };\r\n return ResizeObserverSPI;\r\n}());\n\n// Registry of internal observers. If WeakMap is not available use current shim\r\n// for the Map collection as it has all required methods and because WeakMap\r\n// can't be fully polyfilled anyway.\r\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\r\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\r\nvar ResizeObserver = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback that is invoked when\r\n * dimensions of the observed elements change.\r\n */\r\n function ResizeObserver(callback) {\r\n if (!(this instanceof ResizeObserver)) {\r\n throw new TypeError('Cannot call a class as a function.');\r\n }\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n var controller = ResizeObserverController.getInstance();\r\n var observer = new ResizeObserverSPI(callback, controller, this);\r\n observers.set(this, observer);\r\n }\r\n return ResizeObserver;\r\n}());\r\n// Expose public methods of ResizeObserver.\r\n[\r\n 'observe',\r\n 'unobserve',\r\n 'disconnect'\r\n].forEach(function (method) {\r\n ResizeObserver.prototype[method] = function () {\r\n var _a;\r\n return (_a = observers.get(this))[method].apply(_a, arguments);\r\n };\r\n});\n\nvar index = (function () {\r\n // Export existing implementation if available.\r\n if (typeof global$1.ResizeObserver !== 'undefined') {\r\n return global$1.ResizeObserver;\r\n }\r\n return ResizeObserver;\r\n})();\n\nexport default index;\n","import arrayWithHoles from \"./arrayWithHoles\";\nimport iterableToArray from \"./iterableToArray\";\nimport nonIterableRest from \"./nonIterableRest\";\nexport default function _toArray(arr) {\n return arrayWithHoles(arr) || iterableToArray(arr) || nonIterableRest();\n}","import { useRef } from 'react';\nimport useEffectOnce from './useEffectOnce';\nvar useUnmount = function (fn) {\n var fnRef = useRef(fn);\n // update the ref each render so if it change the newest callback will be invoked\n fnRef.current = fn;\n useEffectOnce(function () { return function () { return fnRef.current(); }; });\n};\nexport default useUnmount;\n","/**!\n * easy-pie-chart\n * Lightweight plugin to render simple, animated and retina optimized pie charts\n *\n * @license \n * @author Robert Fleischmann (http://robert-fleischmann.de)\n * @version 2.1.7\n **/\n\n(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module unless amdModuleId is set\n define([], function () {\n return (root['EasyPieChart'] = factory());\n });\n } else if (typeof exports === 'object') {\n // Node. Does not work with strict CommonJS, but\n // only CommonJS-like environments that support module.exports,\n // like Node.\n module.exports = factory();\n } else {\n root['EasyPieChart'] = factory();\n }\n}(this, function () {\n\n/**\n * Renderer to render the chart on a canvas object\n * @param {DOMElement} el DOM element to host the canvas (root of the plugin)\n * @param {object} options options object of the plugin\n */\nvar CanvasRenderer = function(el, options) {\n\tvar cachedBackground;\n\tvar canvas = document.createElement('canvas');\n\n\tel.appendChild(canvas);\n\n\tif (typeof(G_vmlCanvasManager) === 'object') {\n\t\tG_vmlCanvasManager.initElement(canvas);\n\t}\n\n\tvar ctx = canvas.getContext('2d');\n\n\tcanvas.width = canvas.height = options.size;\n\n\t// canvas on retina devices\n\tvar scaleBy = 1;\n\tif (window.devicePixelRatio > 1) {\n\t\tscaleBy = window.devicePixelRatio;\n\t\tcanvas.style.width = canvas.style.height = [options.size, 'px'].join('');\n\t\tcanvas.width = canvas.height = options.size * scaleBy;\n\t\tctx.scale(scaleBy, scaleBy);\n\t}\n\n\t// move 0,0 coordinates to the center\n\tctx.translate(options.size / 2, options.size / 2);\n\n\t// rotate canvas -90deg\n\tctx.rotate((-1 / 2 + options.rotate / 180) * Math.PI);\n\n\tvar radius = (options.size - options.lineWidth) / 2;\n\tif (options.scaleColor && options.scaleLength) {\n\t\tradius -= options.scaleLength + 2; // 2 is the distance between scale and bar\n\t}\n\n\t// IE polyfill for Date\n\tDate.now = Date.now || function() {\n\t\treturn +(new Date());\n\t};\n\n\t/**\n\t * Draw a circle around the center of the canvas\n\t * @param {strong} color Valid CSS color string\n\t * @param {number} lineWidth Width of the line in px\n\t * @param {number} percent Percentage to draw (float between -1 and 1)\n\t */\n\tvar drawCircle = function(color, lineWidth, percent) {\n\t\tpercent = Math.min(Math.max(-1, percent || 0), 1);\n\t\tvar isNegative = percent <= 0 ? true : false;\n\n\t\tctx.beginPath();\n\t\tctx.arc(0, 0, radius, 0, Math.PI * 2 * percent, isNegative);\n\n\t\tctx.strokeStyle = color;\n\t\tctx.lineWidth = lineWidth;\n\n\t\tctx.stroke();\n\t};\n\n\t/**\n\t * Draw the scale of the chart\n\t */\n\tvar drawScale = function() {\n\t\tvar offset;\n\t\tvar length;\n\n\t\tctx.lineWidth = 1;\n\t\tctx.fillStyle = options.scaleColor;\n\n\t\tctx.save();\n\t\tfor (var i = 24; i > 0; --i) {\n\t\t\tif (i % 6 === 0) {\n\t\t\t\tlength = options.scaleLength;\n\t\t\t\toffset = 0;\n\t\t\t} else {\n\t\t\t\tlength = options.scaleLength * 0.6;\n\t\t\t\toffset = options.scaleLength - length;\n\t\t\t}\n\t\t\tctx.fillRect(-options.size/2 + offset, 0, length, 1);\n\t\t\tctx.rotate(Math.PI / 12);\n\t\t}\n\t\tctx.restore();\n\t};\n\n\t/**\n\t * Request animation frame wrapper with polyfill\n\t * @return {function} Request animation frame method or timeout fallback\n\t */\n\tvar reqAnimationFrame = (function() {\n\t\treturn window.requestAnimationFrame ||\n\t\t\t\twindow.webkitRequestAnimationFrame ||\n\t\t\t\twindow.mozRequestAnimationFrame ||\n\t\t\t\tfunction(callback) {\n\t\t\t\t\twindow.setTimeout(callback, 1000 / 60);\n\t\t\t\t};\n\t}());\n\n\t/**\n\t * Draw the background of the plugin including the scale and the track\n\t */\n\tvar drawBackground = function() {\n\t\tif(options.scaleColor) drawScale();\n\t\tif(options.trackColor) drawCircle(options.trackColor, options.trackWidth || options.lineWidth, 1);\n\t};\n\n /**\n * Canvas accessor\n */\n this.getCanvas = function() {\n return canvas;\n };\n\n /**\n * Canvas 2D context 'ctx' accessor\n */\n this.getCtx = function() {\n return ctx;\n };\n\n\t/**\n\t * Clear the complete canvas\n\t */\n\tthis.clear = function() {\n\t\tctx.clearRect(options.size / -2, options.size / -2, options.size, options.size);\n\t};\n\n\t/**\n\t * Draw the complete chart\n\t * @param {number} percent Percent shown by the chart between -100 and 100\n\t */\n\tthis.draw = function(percent) {\n\t\t// do we need to render a background\n\t\tif (!!options.scaleColor || !!options.trackColor) {\n\t\t\t// getImageData and putImageData are supported\n\t\t\tif (ctx.getImageData && ctx.putImageData) {\n\t\t\t\tif (!cachedBackground) {\n\t\t\t\t\tdrawBackground();\n\t\t\t\t\tcachedBackground = ctx.getImageData(0, 0, options.size * scaleBy, options.size * scaleBy);\n\t\t\t\t} else {\n\t\t\t\t\tctx.putImageData(cachedBackground, 0, 0);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.clear();\n\t\t\t\tdrawBackground();\n\t\t\t}\n\t\t} else {\n\t\t\tthis.clear();\n\t\t}\n\n\t\tctx.lineCap = options.lineCap;\n\n\t\t// if barcolor is a function execute it and pass the percent as a value\n\t\tvar color;\n\t\tif (typeof(options.barColor) === 'function') {\n\t\t\tcolor = options.barColor(percent);\n\t\t} else {\n\t\t\tcolor = options.barColor;\n\t\t}\n\n\t\t// draw bar\n\t\tdrawCircle(color, options.lineWidth, percent / 100);\n\t}.bind(this);\n\n\t/**\n\t * Animate from some percent to some other percentage\n\t * @param {number} from Starting percentage\n\t * @param {number} to Final percentage\n\t */\n\tthis.animate = function(from, to) {\n\t\tvar startTime = Date.now();\n\t\toptions.onStart(from, to);\n\t\tvar animation = function() {\n\t\t\tvar process = Math.min(Date.now() - startTime, options.animate.duration);\n\t\t\tvar currentValue = options.easing(this, process, from, to - from, options.animate.duration);\n\t\t\tthis.draw(currentValue);\n\t\t\toptions.onStep(from, to, currentValue);\n\t\t\tif (process >= options.animate.duration) {\n\t\t\t\toptions.onStop(from, to);\n\t\t\t} else {\n\t\t\t\treqAnimationFrame(animation);\n\t\t\t}\n\t\t}.bind(this);\n\n\t\treqAnimationFrame(animation);\n\t}.bind(this);\n};\n\nvar EasyPieChart = function(el, opts) {\n\tvar defaultOptions = {\n\t\tbarColor: '#ef1e25',\n\t\ttrackColor: '#f9f9f9',\n\t\tscaleColor: '#dfe0e0',\n\t\tscaleLength: 5,\n\t\tlineCap: 'round',\n\t\tlineWidth: 3,\n\t\ttrackWidth: undefined,\n\t\tsize: 110,\n\t\trotate: 0,\n\t\tanimate: {\n\t\t\tduration: 1000,\n\t\t\tenabled: true\n\t\t},\n\t\teasing: function (x, t, b, c, d) { // more can be found here: http://gsgd.co.uk/sandbox/jquery/easing/\n\t\t\tt = t / (d/2);\n\t\t\tif (t < 1) {\n\t\t\t\treturn c / 2 * t * t + b;\n\t\t\t}\n\t\t\treturn -c/2 * ((--t)*(t-2) - 1) + b;\n\t\t},\n\t\tonStart: function(from, to) {\n\t\t\treturn;\n\t\t},\n\t\tonStep: function(from, to, currentValue) {\n\t\t\treturn;\n\t\t},\n\t\tonStop: function(from, to) {\n\t\t\treturn;\n\t\t}\n\t};\n\n\t// detect present renderer\n\tif (typeof(CanvasRenderer) !== 'undefined') {\n\t\tdefaultOptions.renderer = CanvasRenderer;\n\t} else if (typeof(SVGRenderer) !== 'undefined') {\n\t\tdefaultOptions.renderer = SVGRenderer;\n\t} else {\n\t\tthrow new Error('Please load either the SVG- or the CanvasRenderer');\n\t}\n\n\tvar options = {};\n\tvar currentValue = 0;\n\n\t/**\n\t * Initialize the plugin by creating the options object and initialize rendering\n\t */\n\tvar init = function() {\n\t\tthis.el = el;\n\t\tthis.options = options;\n\n\t\t// merge user options into default options\n\t\tfor (var i in defaultOptions) {\n\t\t\tif (defaultOptions.hasOwnProperty(i)) {\n\t\t\t\toptions[i] = opts && typeof(opts[i]) !== 'undefined' ? opts[i] : defaultOptions[i];\n\t\t\t\tif (typeof(options[i]) === 'function') {\n\t\t\t\t\toptions[i] = options[i].bind(this);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// check for jQuery easing\n\t\tif (typeof(options.easing) === 'string' && typeof(jQuery) !== 'undefined' && jQuery.isFunction(jQuery.easing[options.easing])) {\n\t\t\toptions.easing = jQuery.easing[options.easing];\n\t\t} else {\n\t\t\toptions.easing = defaultOptions.easing;\n\t\t}\n\n\t\t// process earlier animate option to avoid bc breaks\n\t\tif (typeof(options.animate) === 'number') {\n\t\t\toptions.animate = {\n\t\t\t\tduration: options.animate,\n\t\t\t\tenabled: true\n\t\t\t};\n\t\t}\n\n\t\tif (typeof(options.animate) === 'boolean' && !options.animate) {\n\t\t\toptions.animate = {\n\t\t\t\tduration: 1000,\n\t\t\t\tenabled: options.animate\n\t\t\t};\n\t\t}\n\n\t\t// create renderer\n\t\tthis.renderer = new options.renderer(el, options);\n\n\t\t// initial draw\n\t\tthis.renderer.draw(currentValue);\n\n\t\t// initial update\n\t\tif (el.dataset && el.dataset.percent) {\n\t\t\tthis.update(parseFloat(el.dataset.percent));\n\t\t} else if (el.getAttribute && el.getAttribute('data-percent')) {\n\t\t\tthis.update(parseFloat(el.getAttribute('data-percent')));\n\t\t}\n\t}.bind(this);\n\n\t/**\n\t * Update the value of the chart\n\t * @param {number} newValue Number between 0 and 100\n\t * @return {object} Instance of the plugin for method chaining\n\t */\n\tthis.update = function(newValue) {\n\t\tnewValue = parseFloat(newValue);\n\t\tif (options.animate.enabled) {\n\t\t\tthis.renderer.animate(currentValue, newValue);\n\t\t} else {\n\t\t\tthis.renderer.draw(newValue);\n\t\t}\n\t\tcurrentValue = newValue;\n\t\treturn this;\n\t}.bind(this);\n\n\t/**\n\t * Disable animation\n\t * @return {object} Instance of the plugin for method chaining\n\t */\n\tthis.disableAnimation = function() {\n\t\toptions.animate.enabled = false;\n\t\treturn this;\n\t};\n\n\t/**\n\t * Enable animation\n\t * @return {object} Instance of the plugin for method chaining\n\t */\n\tthis.enableAnimation = function() {\n\t\toptions.animate.enabled = true;\n\t\treturn this;\n\t};\n\n\tinit();\n};\n\nreturn EasyPieChart;\n\n}));\n","// Generated by CoffeeScript 1.10.0\n(function() {\n var AnimatedText, AnimatedTextFactory, Bar, BaseDonut, BaseGauge, Donut, Gauge, GaugePointer, TextRenderer, ValueUpdater, addCommas, cutHex, formatNumber, mergeObjects, secondsToString,\n slice = [].slice,\n hasProp = {}.hasOwnProperty,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };\n\n (function() {\n var browserRequestAnimationFrame, isCancelled, j, lastId, len, vendor, vendors;\n vendors = ['ms', 'moz', 'webkit', 'o'];\n for (j = 0, len = vendors.length; j < len; j++) {\n vendor = vendors[j];\n if (window.requestAnimationFrame) {\n break;\n }\n window.requestAnimationFrame = window[vendor + 'RequestAnimationFrame'];\n window.cancelAnimationFrame = window[vendor + 'CancelAnimationFrame'] || window[vendor + 'CancelRequestAnimationFrame'];\n }\n browserRequestAnimationFrame = null;\n lastId = 0;\n isCancelled = {};\n if (!requestAnimationFrame) {\n window.requestAnimationFrame = function(callback, element) {\n var currTime, id, lastTime, timeToCall;\n currTime = new Date().getTime();\n timeToCall = Math.max(0, 16 - (currTime - lastTime));\n id = window.setTimeout(function() {\n return callback(currTime + timeToCall);\n }, timeToCall);\n lastTime = currTime + timeToCall;\n return id;\n };\n return window.cancelAnimationFrame = function(id) {\n return clearTimeout(id);\n };\n } else if (!window.cancelAnimationFrame) {\n browserRequestAnimationFrame = window.requestAnimationFrame;\n window.requestAnimationFrame = function(callback, element) {\n var myId;\n myId = ++lastId;\n browserRequestAnimationFrame(function() {\n if (!isCancelled[myId]) {\n return callback();\n }\n }, element);\n return myId;\n };\n return window.cancelAnimationFrame = function(id) {\n return isCancelled[id] = true;\n };\n }\n })();\n\n secondsToString = function(sec) {\n var hr, min;\n hr = Math.floor(sec / 3600);\n min = Math.floor((sec - (hr * 3600)) / 60);\n sec -= (hr * 3600) + (min * 60);\n sec += '';\n min += '';\n while (min.length < 2) {\n min = '0' + min;\n }\n while (sec.length < 2) {\n sec = '0' + sec;\n }\n hr = hr ? hr + ':' : '';\n return hr + min + ':' + sec;\n };\n\n formatNumber = function() {\n var digits, num, value;\n num = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n value = num[0];\n digits = 0 || num[1];\n return addCommas(value.toFixed(digits));\n };\n\n mergeObjects = function(obj1, obj2) {\n var key, out, val;\n out = {};\n for (key in obj1) {\n if (!hasProp.call(obj1, key)) continue;\n val = obj1[key];\n out[key] = val;\n }\n for (key in obj2) {\n if (!hasProp.call(obj2, key)) continue;\n val = obj2[key];\n out[key] = val;\n }\n return out;\n };\n\n addCommas = function(nStr) {\n var rgx, x, x1, x2;\n nStr += '';\n x = nStr.split('.');\n x1 = x[0];\n x2 = '';\n if (x.length > 1) {\n x2 = '.' + x[1];\n }\n rgx = /(\\d+)(\\d{3})/;\n while (rgx.test(x1)) {\n x1 = x1.replace(rgx, '$1' + ',' + '$2');\n }\n return x1 + x2;\n };\n\n cutHex = function(nStr) {\n if (nStr.charAt(0) === \"#\") {\n return nStr.substring(1, 7);\n }\n return nStr;\n };\n\n ValueUpdater = (function() {\n ValueUpdater.prototype.animationSpeed = 32;\n\n function ValueUpdater(addToAnimationQueue, clear) {\n if (addToAnimationQueue == null) {\n addToAnimationQueue = true;\n }\n this.clear = clear != null ? clear : true;\n if (addToAnimationQueue) {\n AnimationUpdater.add(this);\n }\n }\n\n ValueUpdater.prototype.update = function(force) {\n var diff;\n if (force == null) {\n force = false;\n }\n if (force || this.displayedValue !== this.value) {\n if (this.ctx && this.clear) {\n this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n }\n diff = this.value - this.displayedValue;\n if (Math.abs(diff / this.animationSpeed) <= 0.001) {\n this.displayedValue = this.value;\n } else {\n this.displayedValue = this.displayedValue + diff / this.animationSpeed;\n }\n this.render();\n return true;\n }\n return false;\n };\n\n return ValueUpdater;\n\n })();\n\n BaseGauge = (function(superClass) {\n extend(BaseGauge, superClass);\n\n function BaseGauge() {\n return BaseGauge.__super__.constructor.apply(this, arguments);\n }\n\n BaseGauge.prototype.displayScale = 1;\n\n BaseGauge.prototype.forceUpdate = true;\n\n BaseGauge.prototype.setTextField = function(textField, fractionDigits) {\n return this.textField = textField instanceof TextRenderer ? textField : new TextRenderer(textField, fractionDigits);\n };\n\n BaseGauge.prototype.setMinValue = function(minValue, updateStartValue) {\n var gauge, j, len, ref, results;\n this.minValue = minValue;\n if (updateStartValue == null) {\n updateStartValue = true;\n }\n if (updateStartValue) {\n this.displayedValue = this.minValue;\n ref = this.gp || [];\n results = [];\n for (j = 0, len = ref.length; j < len; j++) {\n gauge = ref[j];\n results.push(gauge.displayedValue = this.minValue);\n }\n return results;\n }\n };\n\n BaseGauge.prototype.setOptions = function(options) {\n if (options == null) {\n options = null;\n }\n this.options = mergeObjects(this.options, options);\n if (this.textField) {\n this.textField.el.style.fontSize = options.fontSize + 'px';\n }\n if (this.options.angle > .5) {\n this.options.angle = .5;\n }\n this.configDisplayScale();\n return this;\n };\n\n BaseGauge.prototype.configDisplayScale = function() {\n var backingStorePixelRatio, devicePixelRatio, height, prevDisplayScale, width;\n prevDisplayScale = this.displayScale;\n if (this.options.highDpiSupport === false) {\n delete this.displayScale;\n } else {\n devicePixelRatio = window.devicePixelRatio || 1;\n backingStorePixelRatio = this.ctx.webkitBackingStorePixelRatio || this.ctx.mozBackingStorePixelRatio || this.ctx.msBackingStorePixelRatio || this.ctx.oBackingStorePixelRatio || this.ctx.backingStorePixelRatio || 1;\n this.displayScale = devicePixelRatio / backingStorePixelRatio;\n }\n if (this.displayScale !== prevDisplayScale) {\n width = this.canvas.G__width || this.canvas.width;\n height = this.canvas.G__height || this.canvas.height;\n this.canvas.width = width * this.displayScale;\n this.canvas.height = height * this.displayScale;\n this.canvas.style.width = width + \"px\";\n this.canvas.style.height = height + \"px\";\n this.canvas.G__width = width;\n this.canvas.G__height = height;\n }\n return this;\n };\n\n BaseGauge.prototype.parseValue = function(value) {\n value = parseFloat(value) || Number(value);\n if (isFinite(value)) {\n return value;\n } else {\n return 0;\n }\n };\n\n return BaseGauge;\n\n })(ValueUpdater);\n\n TextRenderer = (function() {\n function TextRenderer(el, fractionDigits1) {\n this.el = el;\n this.fractionDigits = fractionDigits1;\n }\n\n TextRenderer.prototype.render = function(gauge) {\n return this.el.innerHTML = formatNumber(gauge.displayedValue, this.fractionDigits);\n };\n\n return TextRenderer;\n\n })();\n\n AnimatedText = (function(superClass) {\n extend(AnimatedText, superClass);\n\n AnimatedText.prototype.displayedValue = 0;\n\n AnimatedText.prototype.value = 0;\n\n AnimatedText.prototype.setVal = function(value) {\n return this.value = 1 * value;\n };\n\n function AnimatedText(elem1, text) {\n this.elem = elem1;\n this.text = text != null ? text : false;\n AnimatedText.__super__.constructor.call(this);\n if (this.elem === void 0) {\n throw new Error('The element isn\\'t defined.');\n }\n this.value = 1 * this.elem.innerHTML;\n if (this.text) {\n this.value = 0;\n }\n }\n\n AnimatedText.prototype.render = function() {\n var textVal;\n if (this.text) {\n textVal = secondsToString(this.displayedValue.toFixed(0));\n } else {\n textVal = addCommas(formatNumber(this.displayedValue));\n }\n return this.elem.innerHTML = textVal;\n };\n\n return AnimatedText;\n\n })(ValueUpdater);\n\n AnimatedTextFactory = {\n create: function(objList) {\n var elem, j, len, out;\n out = [];\n for (j = 0, len = objList.length; j < len; j++) {\n elem = objList[j];\n out.push(new AnimatedText(elem));\n }\n return out;\n }\n };\n\n GaugePointer = (function(superClass) {\n extend(GaugePointer, superClass);\n\n GaugePointer.prototype.displayedValue = 0;\n\n GaugePointer.prototype.value = 0;\n\n GaugePointer.prototype.options = {\n strokeWidth: 0.035,\n length: 0.1,\n color: \"#000000\",\n iconPath: null,\n iconScale: 1.0,\n iconAngle: 0\n };\n\n GaugePointer.prototype.img = null;\n\n function GaugePointer(gauge1) {\n this.gauge = gauge1;\n if (this.gauge === void 0) {\n throw new Error('The element isn\\'t defined.');\n }\n this.ctx = this.gauge.ctx;\n this.canvas = this.gauge.canvas;\n GaugePointer.__super__.constructor.call(this, false, false);\n this.setOptions();\n }\n\n GaugePointer.prototype.setOptions = function(options) {\n if (options == null) {\n options = null;\n }\n this.options = mergeObjects(this.options, options);\n this.length = 2 * this.gauge.radius * this.gauge.options.radiusScale * this.options.length;\n this.strokeWidth = this.canvas.height * this.options.strokeWidth;\n this.maxValue = this.gauge.maxValue;\n this.minValue = this.gauge.minValue;\n this.animationSpeed = this.gauge.animationSpeed;\n this.options.angle = this.gauge.options.angle;\n if (this.options.iconPath) {\n this.img = new Image();\n return this.img.src = this.options.iconPath;\n }\n };\n\n GaugePointer.prototype.render = function() {\n var angle, endX, endY, imgX, imgY, startX, startY, x, y;\n angle = this.gauge.getAngle.call(this, this.displayedValue);\n x = Math.round(this.length * Math.cos(angle));\n y = Math.round(this.length * Math.sin(angle));\n startX = Math.round(this.strokeWidth * Math.cos(angle - Math.PI / 2));\n startY = Math.round(this.strokeWidth * Math.sin(angle - Math.PI / 2));\n endX = Math.round(this.strokeWidth * Math.cos(angle + Math.PI / 2));\n endY = Math.round(this.strokeWidth * Math.sin(angle + Math.PI / 2));\n this.ctx.beginPath();\n this.ctx.fillStyle = this.options.color;\n this.ctx.arc(0, 0, this.strokeWidth, 0, Math.PI * 2, false);\n this.ctx.fill();\n this.ctx.beginPath();\n this.ctx.moveTo(startX, startY);\n this.ctx.lineTo(x, y);\n this.ctx.lineTo(endX, endY);\n this.ctx.fill();\n if (this.img) {\n imgX = Math.round(this.img.width * this.options.iconScale);\n imgY = Math.round(this.img.height * this.options.iconScale);\n this.ctx.save();\n this.ctx.translate(x, y);\n this.ctx.rotate(angle + Math.PI / 180.0 * (90 + this.options.iconAngle));\n this.ctx.drawImage(this.img, -imgX / 2, -imgY / 2, imgX, imgY);\n return this.ctx.restore();\n }\n };\n\n return GaugePointer;\n\n })(ValueUpdater);\n\n Bar = (function() {\n function Bar(elem1) {\n this.elem = elem1;\n }\n\n Bar.prototype.updateValues = function(arrValues) {\n this.value = arrValues[0];\n this.maxValue = arrValues[1];\n this.avgValue = arrValues[2];\n return this.render();\n };\n\n Bar.prototype.render = function() {\n var avgPercent, valPercent;\n if (this.textField) {\n this.textField.text(formatNumber(this.value));\n }\n if (this.maxValue === 0) {\n this.maxValue = this.avgValue * 2;\n }\n valPercent = (this.value / this.maxValue) * 100;\n avgPercent = (this.avgValue / this.maxValue) * 100;\n $(\".bar-value\", this.elem).css({\n \"width\": valPercent + \"%\"\n });\n return $(\".typical-value\", this.elem).css({\n \"width\": avgPercent + \"%\"\n });\n };\n\n return Bar;\n\n })();\n\n Gauge = (function(superClass) {\n extend(Gauge, superClass);\n\n Gauge.prototype.elem = null;\n\n Gauge.prototype.value = [20];\n\n Gauge.prototype.maxValue = 80;\n\n Gauge.prototype.minValue = 0;\n\n Gauge.prototype.displayedAngle = 0;\n\n Gauge.prototype.displayedValue = 0;\n\n Gauge.prototype.lineWidth = 40;\n\n Gauge.prototype.paddingTop = 0.1;\n\n Gauge.prototype.paddingBottom = 0.1;\n\n Gauge.prototype.percentColors = null;\n\n Gauge.prototype.options = {\n colorStart: \"#6fadcf\",\n colorStop: void 0,\n gradientType: 0,\n strokeColor: \"#e0e0e0\",\n pointer: {\n length: 0.8,\n strokeWidth: 0.035,\n iconScale: 1.0\n },\n angle: 0.15,\n lineWidth: 0.44,\n radiusScale: 1.0,\n fontSize: 40,\n limitMax: false,\n limitMin: false\n };\n\n function Gauge(canvas) {\n var h, w;\n this.canvas = canvas;\n Gauge.__super__.constructor.call(this);\n this.percentColors = null;\n if (typeof G_vmlCanvasManager !== 'undefined') {\n this.canvas = window.G_vmlCanvasManager.initElement(this.canvas);\n }\n this.ctx = this.canvas.getContext('2d');\n h = this.canvas.clientHeight;\n w = this.canvas.clientWidth;\n this.canvas.height = h;\n this.canvas.width = w;\n this.gp = [new GaugePointer(this)];\n this.setOptions();\n }\n\n Gauge.prototype.setOptions = function(options) {\n var gauge, j, len, phi, ref;\n if (options == null) {\n options = null;\n }\n Gauge.__super__.setOptions.call(this, options);\n this.configPercentColors();\n this.extraPadding = 0;\n if (this.options.angle < 0) {\n phi = Math.PI * (1 + this.options.angle);\n this.extraPadding = Math.sin(phi);\n }\n this.availableHeight = this.canvas.height * (1 - this.paddingTop - this.paddingBottom);\n this.lineWidth = this.availableHeight * this.options.lineWidth;\n this.radius = (this.availableHeight - this.lineWidth / 2) / (1.0 + this.extraPadding);\n this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n ref = this.gp;\n for (j = 0, len = ref.length; j < len; j++) {\n gauge = ref[j];\n gauge.setOptions(this.options.pointer);\n gauge.render();\n }\n this.render();\n return this;\n };\n\n Gauge.prototype.configPercentColors = function() {\n var bval, gval, i, j, ref, results, rval;\n this.percentColors = null;\n if (this.options.percentColors !== void 0) {\n this.percentColors = new Array();\n results = [];\n for (i = j = 0, ref = this.options.percentColors.length - 1; 0 <= ref ? j <= ref : j >= ref; i = 0 <= ref ? ++j : --j) {\n rval = parseInt((cutHex(this.options.percentColors[i][1])).substring(0, 2), 16);\n gval = parseInt((cutHex(this.options.percentColors[i][1])).substring(2, 4), 16);\n bval = parseInt((cutHex(this.options.percentColors[i][1])).substring(4, 6), 16);\n results.push(this.percentColors[i] = {\n pct: this.options.percentColors[i][0],\n color: {\n r: rval,\n g: gval,\n b: bval\n }\n });\n }\n return results;\n }\n };\n\n Gauge.prototype.set = function(value) {\n var gp, i, j, k, l, len, ref, ref1, val;\n if (!(value instanceof Array)) {\n value = [value];\n }\n for (i = j = 0, ref = value.length - 1; 0 <= ref ? j <= ref : j >= ref; i = 0 <= ref ? ++j : --j) {\n value[i] = this.parseValue(value[i]);\n }\n if (value.length > this.gp.length) {\n for (i = k = 0, ref1 = value.length - this.gp.length; 0 <= ref1 ? k < ref1 : k > ref1; i = 0 <= ref1 ? ++k : --k) {\n gp = new GaugePointer(this);\n gp.setOptions(this.options.pointer);\n this.gp.push(gp);\n }\n } else if (value.length < this.gp.length) {\n this.gp = this.gp.slice(this.gp.length - value.length);\n }\n i = 0;\n for (l = 0, len = value.length; l < len; l++) {\n val = value[l];\n if (val > this.maxValue) {\n if (this.options.limitMax) {\n val = this.maxValue;\n } else {\n this.maxValue = val + 1;\n }\n } else if (val < this.minValue) {\n if (this.options.limitMin) {\n val = this.minValue;\n } else {\n this.minValue = val - 1;\n }\n }\n this.gp[i].value = val;\n this.gp[i++].setOptions({\n minValue: this.minValue,\n maxValue: this.maxValue,\n angle: this.options.angle\n });\n }\n this.value = Math.max(Math.min(value[value.length - 1], this.maxValue), this.minValue);\n AnimationUpdater.run(this.forceUpdate);\n return this.forceUpdate = false;\n };\n\n Gauge.prototype.getAngle = function(value) {\n return (1 + this.options.angle) * Math.PI + ((value - this.minValue) / (this.maxValue - this.minValue)) * (1 - this.options.angle * 2) * Math.PI;\n };\n\n Gauge.prototype.getColorForPercentage = function(pct, grad) {\n var color, endColor, i, j, rangePct, ref, startColor;\n if (pct === 0) {\n color = this.percentColors[0].color;\n } else {\n color = this.percentColors[this.percentColors.length - 1].color;\n for (i = j = 0, ref = this.percentColors.length - 1; 0 <= ref ? j <= ref : j >= ref; i = 0 <= ref ? ++j : --j) {\n if (pct <= this.percentColors[i].pct) {\n if (grad === true) {\n startColor = this.percentColors[i - 1] || this.percentColors[0];\n endColor = this.percentColors[i];\n rangePct = (pct - startColor.pct) / (endColor.pct - startColor.pct);\n color = {\n r: Math.floor(startColor.color.r * (1 - rangePct) + endColor.color.r * rangePct),\n g: Math.floor(startColor.color.g * (1 - rangePct) + endColor.color.g * rangePct),\n b: Math.floor(startColor.color.b * (1 - rangePct) + endColor.color.b * rangePct)\n };\n } else {\n color = this.percentColors[i].color;\n }\n break;\n }\n }\n }\n return 'rgb(' + [color.r, color.g, color.b].join(',') + ')';\n };\n\n Gauge.prototype.getColorForValue = function(val, grad) {\n var pct;\n pct = (val - this.minValue) / (this.maxValue - this.minValue);\n return this.getColorForPercentage(pct, grad);\n };\n\n Gauge.prototype.renderStaticLabels = function(staticLabels, w, h, radius) {\n var font, fontsize, j, len, match, re, ref, rest, rotationAngle, value;\n this.ctx.save();\n this.ctx.translate(w, h);\n font = staticLabels.font || \"10px Times\";\n re = /\\d+\\.?\\d?/;\n match = font.match(re)[0];\n rest = font.slice(match.length);\n fontsize = parseFloat(match) * this.displayScale;\n this.ctx.font = fontsize + rest;\n this.ctx.fillStyle = staticLabels.color || \"#000000\";\n this.ctx.textBaseline = \"bottom\";\n this.ctx.textAlign = \"center\";\n ref = staticLabels.labels;\n for (j = 0, len = ref.length; j < len; j++) {\n value = ref[j];\n if (value.label !== void 0) {\n if ((!this.options.limitMin || value >= this.minValue) && (!this.options.limitMax || value <= this.maxValue)) {\n font = value.font || staticLabels.font;\n match = font.match(re)[0];\n rest = font.slice(match.length);\n fontsize = parseFloat(match) * this.displayScale;\n this.ctx.font = fontsize + rest;\n rotationAngle = this.getAngle(value.label) - 3 * Math.PI / 2;\n this.ctx.rotate(rotationAngle);\n this.ctx.fillText(formatNumber(value.label, staticLabels.fractionDigits), 0, -radius - this.lineWidth / 2);\n this.ctx.rotate(-rotationAngle);\n }\n } else {\n if ((!this.options.limitMin || value >= this.minValue) && (!this.options.limitMax || value <= this.maxValue)) {\n rotationAngle = this.getAngle(value) - 3 * Math.PI / 2;\n this.ctx.rotate(rotationAngle);\n this.ctx.fillText(formatNumber(value, staticLabels.fractionDigits), 0, -radius - this.lineWidth / 2);\n this.ctx.rotate(-rotationAngle);\n }\n }\n }\n return this.ctx.restore();\n };\n\n Gauge.prototype.renderTicks = function(ticksOptions, w, h, radius) {\n var currentDivision, currentSubDivision, divColor, divLength, divWidth, divisionCount, j, lineWidth, range, rangeDivisions, ref, results, scaleMutate, st, subColor, subDivisions, subLength, subWidth, subdivisionCount, t, tmpRadius;\n if (ticksOptions !== {}) {\n divisionCount = ticksOptions.divisions || 0;\n subdivisionCount = ticksOptions.subDivisions || 0;\n divColor = ticksOptions.divColor || '#fff';\n subColor = ticksOptions.subColor || '#fff';\n divLength = ticksOptions.divLength || 0.7;\n subLength = ticksOptions.subLength || 0.2;\n range = parseFloat(this.maxValue) - parseFloat(this.minValue);\n rangeDivisions = parseFloat(range) / parseFloat(ticksOptions.divisions);\n subDivisions = parseFloat(rangeDivisions) / parseFloat(ticksOptions.subDivisions);\n currentDivision = parseFloat(this.minValue);\n currentSubDivision = 0.0 + subDivisions;\n lineWidth = range / 400;\n divWidth = lineWidth * (ticksOptions.divWidth || 1);\n subWidth = lineWidth * (ticksOptions.subWidth || 1);\n results = [];\n for (t = j = 0, ref = divisionCount + 1; j < ref; t = j += 1) {\n this.ctx.lineWidth = this.lineWidth * divLength;\n scaleMutate = (this.lineWidth / 2) * (1 - divLength);\n tmpRadius = (this.radius * this.options.radiusScale) + scaleMutate;\n this.ctx.strokeStyle = divColor;\n this.ctx.beginPath();\n this.ctx.arc(0, 0, tmpRadius, this.getAngle(currentDivision - divWidth), this.getAngle(currentDivision + divWidth), false);\n this.ctx.stroke();\n currentSubDivision = currentDivision + subDivisions;\n currentDivision += rangeDivisions;\n if (t !== ticksOptions.divisions && subdivisionCount > 0) {\n results.push((function() {\n var k, ref1, results1;\n results1 = [];\n for (st = k = 0, ref1 = subdivisionCount - 1; k < ref1; st = k += 1) {\n this.ctx.lineWidth = this.lineWidth * subLength;\n scaleMutate = (this.lineWidth / 2) * (1 - subLength);\n tmpRadius = (this.radius * this.options.radiusScale) + scaleMutate;\n this.ctx.strokeStyle = subColor;\n this.ctx.beginPath();\n this.ctx.arc(0, 0, tmpRadius, this.getAngle(currentSubDivision - subWidth), this.getAngle(currentSubDivision + subWidth), false);\n this.ctx.stroke();\n results1.push(currentSubDivision += subDivisions);\n }\n return results1;\n }).call(this));\n } else {\n results.push(void 0);\n }\n }\n return results;\n }\n };\n\n Gauge.prototype.render = function() {\n var displayedAngle, fillStyle, gauge, h, j, k, len, len1, max, min, radius, ref, ref1, scaleMutate, tmpRadius, w, zone;\n w = this.canvas.width / 2;\n h = (this.canvas.height * this.paddingTop + this.availableHeight) - ((this.radius + this.lineWidth / 2) * this.extraPadding);\n displayedAngle = this.getAngle(this.displayedValue);\n if (this.textField) {\n this.textField.render(this);\n }\n this.ctx.lineCap = \"butt\";\n radius = this.radius * this.options.radiusScale;\n if (this.options.staticLabels) {\n this.renderStaticLabels(this.options.staticLabels, w, h, radius);\n }\n if (this.options.staticZones) {\n this.ctx.save();\n this.ctx.translate(w, h);\n this.ctx.lineWidth = this.lineWidth;\n ref = this.options.staticZones;\n for (j = 0, len = ref.length; j < len; j++) {\n zone = ref[j];\n min = zone.min;\n if (this.options.limitMin && min < this.minValue) {\n min = this.minValue;\n }\n max = zone.max;\n if (this.options.limitMax && max > this.maxValue) {\n max = this.maxValue;\n }\n tmpRadius = this.radius * this.options.radiusScale;\n if (zone.height) {\n this.ctx.lineWidth = this.lineWidth * zone.height;\n scaleMutate = (this.lineWidth / 2) * (zone.offset || 1 - zone.height);\n tmpRadius = (this.radius * this.options.radiusScale) + scaleMutate;\n }\n this.ctx.strokeStyle = zone.strokeStyle;\n this.ctx.beginPath();\n this.ctx.arc(0, 0, tmpRadius, this.getAngle(min), this.getAngle(max), false);\n this.ctx.stroke();\n }\n } else {\n if (this.options.customFillStyle !== void 0) {\n fillStyle = this.options.customFillStyle(this);\n } else if (this.percentColors !== null) {\n fillStyle = this.getColorForValue(this.displayedValue, this.options.generateGradient);\n } else if (this.options.colorStop !== void 0) {\n if (this.options.gradientType === 0) {\n fillStyle = this.ctx.createRadialGradient(w, h, 9, w, h, 70);\n } else {\n fillStyle = this.ctx.createLinearGradient(0, 0, w, 0);\n }\n fillStyle.addColorStop(0, this.options.colorStart);\n fillStyle.addColorStop(1, this.options.colorStop);\n } else {\n fillStyle = this.options.colorStart;\n }\n this.ctx.strokeStyle = fillStyle;\n this.ctx.beginPath();\n this.ctx.arc(w, h, radius, (1 + this.options.angle) * Math.PI, displayedAngle, false);\n this.ctx.lineWidth = this.lineWidth;\n this.ctx.stroke();\n this.ctx.strokeStyle = this.options.strokeColor;\n this.ctx.beginPath();\n this.ctx.arc(w, h, radius, displayedAngle, (2 - this.options.angle) * Math.PI, false);\n this.ctx.stroke();\n this.ctx.save();\n this.ctx.translate(w, h);\n }\n if (this.options.renderTicks) {\n this.renderTicks(this.options.renderTicks, w, h, radius);\n }\n this.ctx.restore();\n this.ctx.translate(w, h);\n ref1 = this.gp;\n for (k = 0, len1 = ref1.length; k < len1; k++) {\n gauge = ref1[k];\n gauge.update(true);\n }\n return this.ctx.translate(-w, -h);\n };\n\n return Gauge;\n\n })(BaseGauge);\n\n BaseDonut = (function(superClass) {\n extend(BaseDonut, superClass);\n\n BaseDonut.prototype.lineWidth = 15;\n\n BaseDonut.prototype.displayedValue = 0;\n\n BaseDonut.prototype.value = 33;\n\n BaseDonut.prototype.maxValue = 80;\n\n BaseDonut.prototype.minValue = 0;\n\n BaseDonut.prototype.options = {\n lineWidth: 0.10,\n colorStart: \"#6f6ea0\",\n colorStop: \"#c0c0db\",\n strokeColor: \"#eeeeee\",\n shadowColor: \"#d5d5d5\",\n angle: 0.35,\n radiusScale: 1.0\n };\n\n function BaseDonut(canvas) {\n this.canvas = canvas;\n BaseDonut.__super__.constructor.call(this);\n if (typeof G_vmlCanvasManager !== 'undefined') {\n this.canvas = window.G_vmlCanvasManager.initElement(this.canvas);\n }\n this.ctx = this.canvas.getContext('2d');\n this.setOptions();\n this.render();\n }\n\n BaseDonut.prototype.getAngle = function(value) {\n return (1 - this.options.angle) * Math.PI + ((value - this.minValue) / (this.maxValue - this.minValue)) * ((2 + this.options.angle) - (1 - this.options.angle)) * Math.PI;\n };\n\n BaseDonut.prototype.setOptions = function(options) {\n if (options == null) {\n options = null;\n }\n BaseDonut.__super__.setOptions.call(this, options);\n this.lineWidth = this.canvas.height * this.options.lineWidth;\n this.radius = this.options.radiusScale * (this.canvas.height / 2 - this.lineWidth / 2);\n return this;\n };\n\n BaseDonut.prototype.set = function(value) {\n this.value = this.parseValue(value);\n if (this.value > this.maxValue) {\n if (this.options.limitMax) {\n this.value = this.maxValue;\n } else {\n this.maxValue = this.value;\n }\n } else if (this.value < this.minValue) {\n if (this.options.limitMin) {\n this.value = this.minValue;\n } else {\n this.minValue = this.value;\n }\n }\n AnimationUpdater.run(this.forceUpdate);\n return this.forceUpdate = false;\n };\n\n BaseDonut.prototype.render = function() {\n var displayedAngle, grdFill, h, start, stop, w;\n displayedAngle = this.getAngle(this.displayedValue);\n w = this.canvas.width / 2;\n h = this.canvas.height / 2;\n if (this.textField) {\n this.textField.render(this);\n }\n grdFill = this.ctx.createRadialGradient(w, h, 39, w, h, 70);\n grdFill.addColorStop(0, this.options.colorStart);\n grdFill.addColorStop(1, this.options.colorStop);\n start = this.radius - this.lineWidth / 2;\n stop = this.radius + this.lineWidth / 2;\n this.ctx.strokeStyle = this.options.strokeColor;\n this.ctx.beginPath();\n this.ctx.arc(w, h, this.radius, (1 - this.options.angle) * Math.PI, (2 + this.options.angle) * Math.PI, false);\n this.ctx.lineWidth = this.lineWidth;\n this.ctx.lineCap = \"round\";\n this.ctx.stroke();\n this.ctx.strokeStyle = grdFill;\n this.ctx.beginPath();\n this.ctx.arc(w, h, this.radius, (1 - this.options.angle) * Math.PI, displayedAngle, false);\n return this.ctx.stroke();\n };\n\n return BaseDonut;\n\n })(BaseGauge);\n\n Donut = (function(superClass) {\n extend(Donut, superClass);\n\n function Donut() {\n return Donut.__super__.constructor.apply(this, arguments);\n }\n\n Donut.prototype.strokeGradient = function(w, h, start, stop) {\n var grd;\n grd = this.ctx.createRadialGradient(w, h, start, w, h, stop);\n grd.addColorStop(0, this.options.shadowColor);\n grd.addColorStop(0.12, this.options._orgStrokeColor);\n grd.addColorStop(0.88, this.options._orgStrokeColor);\n grd.addColorStop(1, this.options.shadowColor);\n return grd;\n };\n\n Donut.prototype.setOptions = function(options) {\n var h, start, stop, w;\n if (options == null) {\n options = null;\n }\n Donut.__super__.setOptions.call(this, options);\n w = this.canvas.width / 2;\n h = this.canvas.height / 2;\n start = this.radius - this.lineWidth / 2;\n stop = this.radius + this.lineWidth / 2;\n this.options._orgStrokeColor = this.options.strokeColor;\n this.options.strokeColor = this.strokeGradient(w, h, start, stop);\n return this;\n };\n\n return Donut;\n\n })(BaseDonut);\n\n window.AnimationUpdater = {\n elements: [],\n animId: null,\n addAll: function(list) {\n var elem, j, len, results;\n results = [];\n for (j = 0, len = list.length; j < len; j++) {\n elem = list[j];\n results.push(AnimationUpdater.elements.push(elem));\n }\n return results;\n },\n add: function(object) {\n return AnimationUpdater.elements.push(object);\n },\n run: function(force) {\n var elem, finished, isCallback, j, len, ref;\n if (force == null) {\n force = false;\n }\n isCallback = isFinite(parseFloat(force));\n if (isCallback || force === true) {\n finished = true;\n ref = AnimationUpdater.elements;\n for (j = 0, len = ref.length; j < len; j++) {\n elem = ref[j];\n if (elem.update(force === true)) {\n finished = false;\n }\n }\n return AnimationUpdater.animId = finished ? null : requestAnimationFrame(AnimationUpdater.run);\n } else if (force === false) {\n if (AnimationUpdater.animId === !null) {\n cancelAnimationFrame(AnimationUpdater.animId);\n }\n return AnimationUpdater.animId = requestAnimationFrame(AnimationUpdater.run);\n }\n }\n };\n\n if (typeof window.define === 'function' && (window.define.amd != null)) {\n define(function() {\n return {\n Gauge: Gauge,\n Donut: Donut,\n BaseDonut: BaseDonut,\n TextRenderer: TextRenderer\n };\n });\n } else if (typeof module !== 'undefined' && (module.exports != null)) {\n module.exports = {\n Gauge: Gauge,\n Donut: Donut,\n BaseDonut: BaseDonut,\n TextRenderer: TextRenderer\n };\n } else {\n window.Gauge = Gauge;\n window.Donut = Donut;\n window.BaseDonut = BaseDonut;\n window.TextRenderer = TextRenderer;\n }\n\n}).call(this);\n","var tabbable = require('tabbable');\nvar xtend = require('xtend');\n\nvar activeFocusDelay;\n\nvar activeFocusTraps = (function() {\n var trapQueue = [];\n return {\n activateTrap: function(trap) {\n if (trapQueue.length > 0) {\n var activeTrap = trapQueue[trapQueue.length - 1];\n if (activeTrap !== trap) {\n activeTrap.pause();\n }\n }\n\n var trapIndex = trapQueue.indexOf(trap);\n if (trapIndex === -1) {\n trapQueue.push(trap);\n } else {\n // move this existing trap to the front of the queue\n trapQueue.splice(trapIndex, 1);\n trapQueue.push(trap);\n }\n },\n\n deactivateTrap: function(trap) {\n var trapIndex = trapQueue.indexOf(trap);\n if (trapIndex !== -1) {\n trapQueue.splice(trapIndex, 1);\n }\n\n if (trapQueue.length > 0) {\n trapQueue[trapQueue.length - 1].unpause();\n }\n }\n };\n})();\n\nfunction focusTrap(element, userOptions) {\n var doc = document;\n var container =\n typeof element === 'string' ? doc.querySelector(element) : element;\n\n var config = xtend(\n {\n returnFocusOnDeactivate: true,\n escapeDeactivates: true\n },\n userOptions\n );\n\n var state = {\n firstTabbableNode: null,\n lastTabbableNode: null,\n nodeFocusedBeforeActivation: null,\n mostRecentlyFocusedNode: null,\n active: false,\n paused: false\n };\n\n var trap = {\n activate: activate,\n deactivate: deactivate,\n pause: pause,\n unpause: unpause\n };\n\n return trap;\n\n function activate(activateOptions) {\n if (state.active) return;\n\n updateTabbableNodes();\n\n state.active = true;\n state.paused = false;\n state.nodeFocusedBeforeActivation = doc.activeElement;\n\n var onActivate =\n activateOptions && activateOptions.onActivate\n ? activateOptions.onActivate\n : config.onActivate;\n if (onActivate) {\n onActivate();\n }\n\n addListeners();\n return trap;\n }\n\n function deactivate(deactivateOptions) {\n if (!state.active) return;\n\n clearTimeout(activeFocusDelay);\n\n removeListeners();\n state.active = false;\n state.paused = false;\n\n activeFocusTraps.deactivateTrap(trap);\n\n var onDeactivate =\n deactivateOptions && deactivateOptions.onDeactivate !== undefined\n ? deactivateOptions.onDeactivate\n : config.onDeactivate;\n if (onDeactivate) {\n onDeactivate();\n }\n\n var returnFocus =\n deactivateOptions && deactivateOptions.returnFocus !== undefined\n ? deactivateOptions.returnFocus\n : config.returnFocusOnDeactivate;\n if (returnFocus) {\n delay(function() {\n tryFocus(getReturnFocusNode(state.nodeFocusedBeforeActivation));\n });\n }\n\n return trap;\n }\n\n function pause() {\n if (state.paused || !state.active) return;\n state.paused = true;\n removeListeners();\n }\n\n function unpause() {\n if (!state.paused || !state.active) return;\n state.paused = false;\n updateTabbableNodes();\n addListeners();\n }\n\n function addListeners() {\n if (!state.active) return;\n\n // There can be only one listening focus trap at a time\n activeFocusTraps.activateTrap(trap);\n\n // Delay ensures that the focused element doesn't capture the event\n // that caused the focus trap activation.\n activeFocusDelay = delay(function() {\n tryFocus(getInitialFocusNode());\n });\n\n doc.addEventListener('focusin', checkFocusIn, true);\n doc.addEventListener('mousedown', checkPointerDown, {\n capture: true,\n passive: false\n });\n doc.addEventListener('touchstart', checkPointerDown, {\n capture: true,\n passive: false\n });\n doc.addEventListener('click', checkClick, {\n capture: true,\n passive: false\n });\n doc.addEventListener('keydown', checkKey, {\n capture: true,\n passive: false\n });\n\n return trap;\n }\n\n function removeListeners() {\n if (!state.active) return;\n\n doc.removeEventListener('focusin', checkFocusIn, true);\n doc.removeEventListener('mousedown', checkPointerDown, true);\n doc.removeEventListener('touchstart', checkPointerDown, true);\n doc.removeEventListener('click', checkClick, true);\n doc.removeEventListener('keydown', checkKey, true);\n\n return trap;\n }\n\n function getNodeForOption(optionName) {\n var optionValue = config[optionName];\n var node = optionValue;\n if (!optionValue) {\n return null;\n }\n if (typeof optionValue === 'string') {\n node = doc.querySelector(optionValue);\n if (!node) {\n throw new Error('`' + optionName + '` refers to no known node');\n }\n }\n if (typeof optionValue === 'function') {\n node = optionValue();\n if (!node) {\n throw new Error('`' + optionName + '` did not return a node');\n }\n }\n return node;\n }\n\n function getInitialFocusNode() {\n var node;\n if (getNodeForOption('initialFocus') !== null) {\n node = getNodeForOption('initialFocus');\n } else if (container.contains(doc.activeElement)) {\n node = doc.activeElement;\n } else {\n node = state.firstTabbableNode || getNodeForOption('fallbackFocus');\n }\n\n if (!node) {\n throw new Error(\n 'Your focus-trap needs to have at least one focusable element'\n );\n }\n\n return node;\n }\n\n function getReturnFocusNode(previousActiveElement) {\n var node = getNodeForOption('setReturnFocus');\n return node ? node : previousActiveElement;\n }\n\n // This needs to be done on mousedown and touchstart instead of click\n // so that it precedes the focus event.\n function checkPointerDown(e) {\n if (container.contains(e.target)) return;\n if (config.clickOutsideDeactivates) {\n deactivate({\n returnFocus: !tabbable.isFocusable(e.target)\n });\n return;\n }\n // This is needed for mobile devices.\n // (If we'll only let `click` events through,\n // then on mobile they will be blocked anyways if `touchstart` is blocked.)\n if (config.allowOutsideClick && config.allowOutsideClick(e)) {\n return;\n }\n e.preventDefault();\n }\n\n // In case focus escapes the trap for some strange reason, pull it back in.\n function checkFocusIn(e) {\n // In Firefox when you Tab out of an iframe the Document is briefly focused.\n if (container.contains(e.target) || e.target instanceof Document) {\n return;\n }\n e.stopImmediatePropagation();\n tryFocus(state.mostRecentlyFocusedNode || getInitialFocusNode());\n }\n\n function checkKey(e) {\n if (config.escapeDeactivates !== false && isEscapeEvent(e)) {\n e.preventDefault();\n deactivate();\n return;\n }\n if (isTabEvent(e)) {\n checkTab(e);\n return;\n }\n }\n\n // Hijack Tab events on the first and last focusable nodes of the trap,\n // in order to prevent focus from escaping. If it escapes for even a\n // moment it can end up scrolling the page and causing confusion so we\n // kind of need to capture the action at the keydown phase.\n function checkTab(e) {\n updateTabbableNodes();\n if (e.shiftKey && e.target === state.firstTabbableNode) {\n e.preventDefault();\n tryFocus(state.lastTabbableNode);\n return;\n }\n if (!e.shiftKey && e.target === state.lastTabbableNode) {\n e.preventDefault();\n tryFocus(state.firstTabbableNode);\n return;\n }\n }\n\n function checkClick(e) {\n if (config.clickOutsideDeactivates) return;\n if (container.contains(e.target)) return;\n if (config.allowOutsideClick && config.allowOutsideClick(e)) {\n return;\n }\n e.preventDefault();\n e.stopImmediatePropagation();\n }\n\n function updateTabbableNodes() {\n var tabbableNodes = tabbable(container);\n state.firstTabbableNode = tabbableNodes[0] || getInitialFocusNode();\n state.lastTabbableNode =\n tabbableNodes[tabbableNodes.length - 1] || getInitialFocusNode();\n }\n\n function tryFocus(node) {\n if (node === doc.activeElement) return;\n if (!node || !node.focus) {\n tryFocus(getInitialFocusNode());\n return;\n }\n node.focus();\n state.mostRecentlyFocusedNode = node;\n if (isSelectableInput(node)) {\n node.select();\n }\n }\n}\n\nfunction isSelectableInput(node) {\n return (\n node.tagName &&\n node.tagName.toLowerCase() === 'input' &&\n typeof node.select === 'function'\n );\n}\n\nfunction isEscapeEvent(e) {\n return e.key === 'Escape' || e.key === 'Esc' || e.keyCode === 27;\n}\n\nfunction isTabEvent(e) {\n return e.key === 'Tab' || e.keyCode === 9;\n}\n\nfunction delay(fn) {\n return setTimeout(fn, 0);\n}\n\nmodule.exports = focusTrap;\n","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getTime\n * @category Timestamp Helpers\n * @summary Get the milliseconds timestamp of the given date.\n *\n * @description\n * Get the milliseconds timestamp of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the timestamp\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the timestamp of 29 February 2012 11:45:05.123:\n * const result = getTime(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 1330515905123\n */\n\nexport default function getTime(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var timestamp = date.getTime();\n return timestamp;\n}","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?t(exports,require(\"react\"),require(\"prop-types\"),require(\"classnames\"),require(\"date-fns/isDate\"),require(\"date-fns/isValid\"),require(\"date-fns/format\"),require(\"date-fns/addMinutes\"),require(\"date-fns/addHours\"),require(\"date-fns/addDays\"),require(\"date-fns/addWeeks\"),require(\"date-fns/addMonths\"),require(\"date-fns/addYears\"),require(\"date-fns/subMinutes\"),require(\"date-fns/subHours\"),require(\"date-fns/subDays\"),require(\"date-fns/subWeeks\"),require(\"date-fns/subMonths\"),require(\"date-fns/subYears\"),require(\"date-fns/getSeconds\"),require(\"date-fns/getMinutes\"),require(\"date-fns/getHours\"),require(\"date-fns/getDay\"),require(\"date-fns/getDate\"),require(\"date-fns/getISOWeek\"),require(\"date-fns/getMonth\"),require(\"date-fns/getQuarter\"),require(\"date-fns/getYear\"),require(\"date-fns/getTime\"),require(\"date-fns/setSeconds\"),require(\"date-fns/setMinutes\"),require(\"date-fns/setHours\"),require(\"date-fns/setMonth\"),require(\"date-fns/setQuarter\"),require(\"date-fns/setYear\"),require(\"date-fns/min\"),require(\"date-fns/max\"),require(\"date-fns/differenceInCalendarDays\"),require(\"date-fns/differenceInCalendarMonths\"),require(\"date-fns/differenceInCalendarWeeks\"),require(\"date-fns/differenceInCalendarYears\"),require(\"date-fns/startOfDay\"),require(\"date-fns/startOfWeek\"),require(\"date-fns/startOfMonth\"),require(\"date-fns/startOfQuarter\"),require(\"date-fns/startOfYear\"),require(\"date-fns/endOfDay\"),require(\"date-fns/endOfWeek\"),require(\"date-fns/endOfMonth\"),require(\"date-fns/isEqual\"),require(\"date-fns/isSameDay\"),require(\"date-fns/isSameMonth\"),require(\"date-fns/isSameYear\"),require(\"date-fns/isSameQuarter\"),require(\"date-fns/isAfter\"),require(\"date-fns/isBefore\"),require(\"date-fns/isWithinInterval\"),require(\"date-fns/toDate\"),require(\"date-fns/parse\"),require(\"date-fns/parseISO\"),require(\"react-onclickoutside\"),require(\"react-dom\"),require(\"react-popper\")):\"function\"==typeof define&&define.amd?define([\"exports\",\"react\",\"prop-types\",\"classnames\",\"date-fns/isDate\",\"date-fns/isValid\",\"date-fns/format\",\"date-fns/addMinutes\",\"date-fns/addHours\",\"date-fns/addDays\",\"date-fns/addWeeks\",\"date-fns/addMonths\",\"date-fns/addYears\",\"date-fns/subMinutes\",\"date-fns/subHours\",\"date-fns/subDays\",\"date-fns/subWeeks\",\"date-fns/subMonths\",\"date-fns/subYears\",\"date-fns/getSeconds\",\"date-fns/getMinutes\",\"date-fns/getHours\",\"date-fns/getDay\",\"date-fns/getDate\",\"date-fns/getISOWeek\",\"date-fns/getMonth\",\"date-fns/getQuarter\",\"date-fns/getYear\",\"date-fns/getTime\",\"date-fns/setSeconds\",\"date-fns/setMinutes\",\"date-fns/setHours\",\"date-fns/setMonth\",\"date-fns/setQuarter\",\"date-fns/setYear\",\"date-fns/min\",\"date-fns/max\",\"date-fns/differenceInCalendarDays\",\"date-fns/differenceInCalendarMonths\",\"date-fns/differenceInCalendarWeeks\",\"date-fns/differenceInCalendarYears\",\"date-fns/startOfDay\",\"date-fns/startOfWeek\",\"date-fns/startOfMonth\",\"date-fns/startOfQuarter\",\"date-fns/startOfYear\",\"date-fns/endOfDay\",\"date-fns/endOfWeek\",\"date-fns/endOfMonth\",\"date-fns/isEqual\",\"date-fns/isSameDay\",\"date-fns/isSameMonth\",\"date-fns/isSameYear\",\"date-fns/isSameQuarter\",\"date-fns/isAfter\",\"date-fns/isBefore\",\"date-fns/isWithinInterval\",\"date-fns/toDate\",\"date-fns/parse\",\"date-fns/parseISO\",\"react-onclickoutside\",\"react-dom\",\"react-popper\"],t):t((e=\"undefined\"!=typeof globalThis?globalThis:e||self).DatePicker={},e.React,e.PropTypes,e.classNames,e.isDate,e.isValidDate,e.format,e.addMinutes,e.addHours,e.addDays,e.addWeeks,e.addMonths,e.addYears,null,null,e.subDays,e.subWeeks,e.subMonths,e.subYears,e.getSeconds,e.getMinutes,e.getHours,e.getDay,e.getDate,e.getISOWeek,e.getMonth,e.getQuarter,e.getYear,e.getTime,e.setSeconds,e.setMinutes,e.setHours,e.setMonth,e.setQuarter,e.setYear,e.min,e.max,e.differenceInCalendarDays,e.differenceInCalendarMonths,null,e.differenceInCalendarYears,e.startOfDay,e.startOfWeek,e.startOfMonth,e.startOfQuarter,e.startOfYear,e.endOfDay,null,null,e.dfIsEqual,e.dfIsSameDay,e.dfIsSameMonth,e.dfIsSameYear,e.dfIsSameQuarter,e.isAfter,e.isBefore,e.isWithinInterval,e.toDate,e.parse,e.parseISO,e.onClickOutside,e.ReactDOM,e.ReactPopper)}(this,(function(e,t,r,a,n,o,s,i,p,l,d,c,u,f,h,m,y,D,v,w,g,k,b,C,S,_,M,P,E,N,O,Y,x,T,I,L,F,R,q,A,W,K,B,j,H,Q,V,U,$,z,G,J,X,Z,ee,te,re,ae,ne,oe,se,ie,pe){\"use strict\";function le(e){return e&&\"object\"==typeof e&&\"default\"in e?e:{default:e}}var de=le(t),ce=le(a),ue=le(n),fe=le(o),he=le(s),me=le(i),ye=le(p),De=le(l),ve=le(d),we=le(c),ge=le(u),ke=le(m),be=le(y),Ce=le(D),Se=le(v),_e=le(w),Me=le(g),Pe=le(k),Ee=le(b),Ne=le(C),Oe=le(S),Ye=le(_),xe=le(M),Te=le(P),Ie=le(E),Le=le(N),Fe=le(O),Re=le(Y),qe=le(x),Ae=le(T),We=le(I),Ke=le(L),Be=le(F),je=le(R),He=le(q),Qe=le(W),Ve=le(K),Ue=le(B),$e=le(j),ze=le(H),Ge=le(Q),Je=le(V),Xe=le(z),Ze=le(G),et=le(J),tt=le(X),rt=le(Z),at=le(ee),nt=le(te),ot=le(re),st=le(ae),it=le(ne),pt=le(oe),lt=le(se),dt=le(ie);function ct(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function ut(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,a=new Array(t);r0&&(o=it.default(e,t.slice(0,e.length),new Date)),It(o)||(o=new Date(e))),It(o)&&i?o:null)}function It(e,t){return t=t||new Date(\"1/1/1000\"),fe.default(e)&&at.default(e,t)}function Lt(e,t,r){if(\"en\"===r)return he.default(e,t,{awareOfUnicodeTokens:!0});var a=Xt(r);return r&&!a&&console.warn('A locale object was not found for the provided string [\"'.concat(r,'\"].')),!a&&Jt()&&Xt(Jt())&&(a=Xt(Jt())),he.default(e,t,{locale:a||null,awareOfUnicodeTokens:!0})}function Ft(e,t){var r=t.dateFormat,a=t.locale;return e&&Lt(e,Array.isArray(r)?r[0]:r,a)||\"\"}function Rt(e,t){var r=t.hour,a=void 0===r?0:r,n=t.minute,o=void 0===n?0:n,s=t.second,i=void 0===s?0:s;return Re.default(Fe.default(Le.default(e,i),o),a)}function qt(e,t){var r=t&&Xt(t)||Jt()&&Xt(Jt());return Oe.default(e,r?{locale:r}:null)}function At(e,t){return Lt(e,\"ddd\",t)}function Wt(e){return Ve.default(e)}function Kt(e,t,r){var a=Xt(t||Jt());return Ue.default(e,{locale:a,weekStartsOn:r})}function Bt(e){return $e.default(e)}function jt(e){return Ge.default(e)}function Ht(e){return ze.default(e)}function Qt(e,t){return e&&t?tt.default(e,t):!e&&!t}function Vt(e,t){return e&&t?et.default(e,t):!e&&!t}function Ut(e,t){return e&&t?rt.default(e,t):!e&&!t}function $t(e,t){return e&&t?Ze.default(e,t):!e&&!t}function zt(e,t){return e&&t?Xe.default(e,t):!e&&!t}function Gt(e,t,r){var a,n=Ve.default(t),o=Je.default(r);try{a=ot.default(e,{start:n,end:o})}catch(e){a=!1}return a}function Jt(){return(\"undefined\"!=typeof window?window:global).__localeId__}function Xt(e){if(\"string\"==typeof e){var t=\"undefined\"!=typeof window?window:global;return t.__localeData__?t.__localeData__[e]:null}return e}function Zt(e,t){return Lt(qe.default(xt(),e),\"LLLL\",t)}function er(e,t){return Lt(qe.default(xt(),e),\"LLL\",t)}function tr(e,t){return Lt(Ae.default(xt(),e),\"QQQ\",t)}function rr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,a=t.maxDate,n=t.excludeDates,o=t.includeDates,s=t.filterDate;return lr(e,{minDate:r,maxDate:a})||n&&n.some((function(t){return $t(e,t)}))||o&&!o.some((function(t){return $t(e,t)}))||s&&!s(xt(e))||!1}function ar(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.excludeDates;return r&&r.some((function(t){return $t(e,t)}))||!1}function nr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,a=t.maxDate,n=t.excludeDates,o=t.includeDates,s=t.filterDate;return lr(e,{minDate:r,maxDate:a})||n&&n.some((function(t){return Vt(e,t)}))||o&&!o.some((function(t){return Vt(e,t)}))||s&&!s(xt(e))||!1}function or(e,t,r,a){var n=Te.default(e),o=Ye.default(e),s=Te.default(t),i=Ye.default(t),p=Te.default(a);return n===s&&n===p?o<=r&&r<=i:n=r||pn:void 0}function sr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,a=t.maxDate,n=t.excludeDates,o=t.includeDates,s=t.filterDate;return lr(e,{minDate:r,maxDate:a})||n&&n.some((function(t){return Ut(e,t)}))||o&&!o.some((function(t){return Ut(e,t)}))||s&&!s(xt(e))||!1}function ir(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,a=t.maxDate,n=new Date(e,0,1);return lr(n,{minDate:r,maxDate:a})||!1}function pr(e,t,r,a){var n=Te.default(e),o=xe.default(e),s=Te.default(t),i=xe.default(t),p=Te.default(a);return n===s&&n===p?o<=r&&r<=i:n=r||pn:void 0}function lr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,a=t.maxDate;return r&&je.default(e,r)<0||a&&je.default(e,a)>0}function dr(e,t){return t.some((function(t){return Pe.default(t)===Pe.default(e)&&Me.default(t)===Me.default(e)}))}function cr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.excludeTimes,a=t.includeTimes,n=t.filterTime;return r&&dr(e,r)||a&&!dr(e,a)||n&&!n(e)||!1}function ur(e,t){var r=t.minTime,a=t.maxTime;if(!r||!a)throw new Error(\"Both minTime and maxTime props required\");var n,o=xt(),s=Re.default(Fe.default(o,Me.default(e)),Pe.default(e)),i=Re.default(Fe.default(o,Me.default(r)),Pe.default(r)),p=Re.default(Fe.default(o,Me.default(a)),Pe.default(a));try{n=!ot.default(s,{start:i,end:p})}catch(e){n=!1}return n}function fr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,a=t.includeDates,n=Ce.default(e,1);return r&&He.default(r,n)>0||a&&a.every((function(e){return He.default(e,n)>0}))||!1}function hr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.maxDate,a=t.includeDates,n=we.default(e,1);return r&&He.default(n,r)>0||a&&a.every((function(e){return He.default(n,e)>0}))||!1}function mr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,a=t.includeDates,n=Se.default(e,1);return r&&Qe.default(r,n)>0||a&&a.every((function(e){return Qe.default(e,n)>0}))||!1}function yr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.maxDate,a=t.includeDates,n=ge.default(e,1);return r&&Qe.default(n,r)>0||a&&a.every((function(e){return Qe.default(n,e)>0}))||!1}function Dr(e){var t=e.minDate,r=e.includeDates;if(r&&t){var a=r.filter((function(e){return je.default(e,t)>=0}));return Ke.default(a)}return r?Ke.default(r):t}function vr(e){var t=e.maxDate,r=e.includeDates;if(r&&t){var a=r.filter((function(e){return je.default(e,t)<=0}));return Be.default(a)}return r?Be.default(r):t}function wr(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"react-datepicker__day--highlighted\",r=new Map,a=0,n=e.length;a1&&void 0!==arguments[1]?arguments[1]:Ot,r=Math.ceil(Te.default(e)/t)*t,a=r-(t-1);return{startPeriod:a,endPeriod:r}}function Cr(e,t,r,a){for(var n=[],o=0;o<2*t+1;o++){var s=e+t-o,i=!0;r&&(i=Te.default(r)<=s),a&&i&&(i=Te.default(a)>=s),i&&n.push(s)}return n}var Sr=function(e){wt(r,e);var t=St(r);function r(e){var a;ht(this,r),Dt(bt(a=t.call(this,e)),\"renderOptions\",(function(){var e=a.props.year,t=a.state.yearsList.map((function(t){return de.default.createElement(\"div\",{className:e===t?\"react-datepicker__year-option react-datepicker__year-option--selected_year\":\"react-datepicker__year-option\",key:t,onClick:a.onChange.bind(bt(a),t)},e===t?de.default.createElement(\"span\",{className:\"react-datepicker__year-option--selected\"},\"✓\"):\"\",t)})),r=a.props.minDate?Te.default(a.props.minDate):null,n=a.props.maxDate?Te.default(a.props.maxDate):null;return n&&a.state.yearsList.find((function(e){return e===n}))||t.unshift(de.default.createElement(\"div\",{className:\"react-datepicker__year-option\",key:\"upcoming\",onClick:a.incrementYears},de.default.createElement(\"a\",{className:\"react-datepicker__navigation react-datepicker__navigation--years react-datepicker__navigation--years-upcoming\"}))),r&&a.state.yearsList.find((function(e){return e===r}))||t.push(de.default.createElement(\"div\",{className:\"react-datepicker__year-option\",key:\"previous\",onClick:a.decrementYears},de.default.createElement(\"a\",{className:\"react-datepicker__navigation react-datepicker__navigation--years react-datepicker__navigation--years-previous\"}))),t})),Dt(bt(a),\"onChange\",(function(e){a.props.onChange(e)})),Dt(bt(a),\"handleClickOutside\",(function(){a.props.onCancel()})),Dt(bt(a),\"shiftYears\",(function(e){var t=a.state.yearsList.map((function(t){return t+e}));a.setState({yearsList:t})})),Dt(bt(a),\"incrementYears\",(function(){return a.shiftYears(1)})),Dt(bt(a),\"decrementYears\",(function(){return a.shiftYears(-1)}));var n=e.yearDropdownItemNumber,o=e.scrollableYearDropdown,s=n||(o?10:5);return a.state={yearsList:Cr(a.props.year,s,a.props.minDate,a.props.maxDate)},a}return yt(r,[{key:\"render\",value:function(){var e=ce.default({\"react-datepicker__year-dropdown\":!0,\"react-datepicker__year-dropdown--scrollable\":this.props.scrollableYearDropdown});return de.default.createElement(\"div\",{className:e},this.renderOptions())}}]),r}(de.default.Component),_r=lt.default(Sr),Mr=function(e){wt(r,e);var t=St(r);function r(){var e;ht(this,r);for(var a=arguments.length,n=new Array(a),o=0;o0&&void 0!==arguments[0]?arguments[0]:{},r=!1;0===e.getTabIndex()&&!t.isInputFocused&&e.isSameDay(e.props.preSelection)&&(document.activeElement&&document.activeElement!==document.body||(r=!0),e.props.inline&&!e.props.shouldFocusDayInline&&(r=!1),e.props.containerRef&&e.props.containerRef.current&&e.props.containerRef.current.contains(document.activeElement)&&document.activeElement.classList.contains(\"react-datepicker__day\")&&(r=!0)),r&&e.dayEl.current.focus({preventScroll:!0})})),Dt(bt(e),\"renderDayContents\",(function(){if(e.isOutsideMonth()){if(e.props.monthShowsDuplicateDaysEnd&&Ne.default(e.props.day)<10)return null;if(e.props.monthShowsDuplicateDaysStart&&Ne.default(e.props.day)>20)return null}return e.props.renderDayContents?e.props.renderDayContents(Ne.default(e.props.day),e.props.day):Ne.default(e.props.day)})),Dt(bt(e),\"render\",(function(){return de.default.createElement(\"div\",{ref:e.dayEl,className:e.getClassNames(e.props.day),onKeyDown:e.handleOnKeyDown,onClick:e.handleClick,onMouseEnter:e.handleMouseEnter,tabIndex:e.getTabIndex(),\"aria-label\":e.getAriaLabel(),role:\"button\",\"aria-disabled\":e.isDisabled()},e.renderDayContents())})),e}return yt(r,[{key:\"componentDidMount\",value:function(){this.handleFocusDay()}},{key:\"componentDidUpdate\",value:function(e){this.handleFocusDay(e)}}]),r}(de.default.Component),Lr=function(e){wt(r,e);var t=St(r);function r(){var e;ht(this,r);for(var a=arguments.length,n=new Array(a),o=0;o=6,i=!r&&!e.isWeekInMonth(o);if(s||i){if(!e.props.peekNextMonth)break;n=!0}}return t})),Dt(bt(e),\"onMonthClick\",(function(t,r){e.handleDayClick(Bt(qe.default(e.props.day,r)),t)})),Dt(bt(e),\"handleMonthNavigation\",(function(t,r){e.isDisabled(r)||e.isExcluded(r)||(e.props.setPreSelection(r),e.MONTH_REFS[t].current&&e.MONTH_REFS[t].current.focus())})),Dt(bt(e),\"onMonthKeyDown\",(function(t,r){var a=t.key;if(!e.props.disabledKeyboardNavigation)switch(a){case\"Enter\":e.onMonthClick(t,r),e.props.setPreSelection(e.props.selected);break;case\"ArrowRight\":e.handleMonthNavigation(11===r?0:r+1,we.default(e.props.preSelection,1));break;case\"ArrowLeft\":e.handleMonthNavigation(0===r?11:r-1,Ce.default(e.props.preSelection,1))}})),Dt(bt(e),\"onQuarterClick\",(function(t,r){e.handleDayClick(Ht(Ae.default(e.props.day,r)),t)})),Dt(bt(e),\"getMonthClassNames\",(function(t){var r=e.props,a=r.day,n=r.startDate,o=r.endDate,s=r.selected,i=r.minDate,p=r.maxDate,l=r.preSelection,d=r.monthClassName,c=d?d(a):void 0;return ce.default(\"react-datepicker__month-text\",\"react-datepicker__month-\".concat(t),c,{\"react-datepicker__month--disabled\":(i||p)&&nr(qe.default(a,t),e.props),\"react-datepicker__month--selected\":Ye.default(a)===t&&Te.default(a)===Te.default(s),\"react-datepicker__month-text--keyboard-selected\":Ye.default(l)===t,\"react-datepicker__month--in-range\":or(n,o,t,a),\"react-datepicker__month--range-start\":e.isRangeStartMonth(t),\"react-datepicker__month--range-end\":e.isRangeEndMonth(t)})})),Dt(bt(e),\"getTabIndex\",(function(t){var r=Ye.default(e.props.preSelection);return e.props.disabledKeyboardNavigation||t!==r?\"-1\":\"0\"})),Dt(bt(e),\"getAriaLabel\",(function(t){var r=e.props,a=r.ariaLabelPrefix,n=void 0===a?\"Choose\":a,o=r.disabledDayAriaLabelPrefix,s=void 0===o?\"Not available\":o,i=r.day,p=qe.default(i,t),l=e.isDisabled(p)||e.isExcluded(p)?s:n;return\"\".concat(l,\" \").concat(Lt(p,\"MMMM yyyy\"))})),Dt(bt(e),\"getQuarterClassNames\",(function(t){var r=e.props,a=r.day,n=r.startDate,o=r.endDate,s=r.selected,i=r.minDate,p=r.maxDate;return ce.default(\"react-datepicker__quarter-text\",\"react-datepicker__quarter-\".concat(t),{\"react-datepicker__quarter--disabled\":(i||p)&&sr(Ae.default(a,t),e.props),\"react-datepicker__quarter--selected\":xe.default(a)===t&&Te.default(a)===Te.default(s),\"react-datepicker__quarter--in-range\":pr(n,o,t,a),\"react-datepicker__quarter--range-start\":e.isRangeStartQuarter(t),\"react-datepicker__quarter--range-end\":e.isRangeEndQuarter(t)})})),Dt(bt(e),\"renderMonths\",(function(){var t=e.props,r=t.showFullMonthYearPicker,a=t.showTwoColumnMonthYearPicker,n=t.showFourColumnMonthYearPicker,o=t.locale;return(n?[[0,1,2,3],[4,5,6,7],[8,9,10,11]]:a?[[0,1],[2,3],[4,5],[6,7],[8,9],[10,11]]:[[0,1,2],[3,4,5],[6,7,8],[9,10,11]]).map((function(t,a){return de.default.createElement(\"div\",{className:\"react-datepicker__month-wrapper\",key:a},t.map((function(t,a){return de.default.createElement(\"div\",{ref:e.MONTH_REFS[t],key:a,onClick:function(r){e.onMonthClick(r,t)},onKeyDown:function(r){e.onMonthKeyDown(r,t)},tabIndex:e.getTabIndex(t),className:e.getMonthClassNames(t),role:\"button\",\"aria-label\":e.getAriaLabel(t)},r?Zt(t,o):er(t,o))})))}))})),Dt(bt(e),\"renderQuarters\",(function(){return de.default.createElement(\"div\",{className:\"react-datepicker__quarter-wrapper\"},[1,2,3,4].map((function(t,r){return de.default.createElement(\"div\",{key:r,onClick:function(r){e.onQuarterClick(r,t)},className:e.getQuarterClassNames(t)},tr(t,e.props.locale))})))})),Dt(bt(e),\"getClassNames\",(function(){var t=e.props;t.day;var r=t.selectingDate,a=t.selectsStart,n=t.selectsEnd,o=t.showMonthYearPicker,s=t.showQuarterYearPicker;return ce.default(\"react-datepicker__month\",{\"react-datepicker__month--selecting-range\":r&&(a||n)},{\"react-datepicker__monthPicker\":o},{\"react-datepicker__quarterPicker\":s})})),e}return yt(r,[{key:\"render\",value:function(){var e=this.props,t=e.showMonthYearPicker,r=e.showQuarterYearPicker,a=e.day,n=e.ariaLabelPrefix,o=void 0===n?\"month \":n;return de.default.createElement(\"div\",{className:this.getClassNames(),onMouseLeave:this.handleMouseLeave,\"aria-label\":\"\".concat(o,\" \").concat(Lt(a,\"yyyy-MM\"))},t?this.renderMonths():r?this.renderQuarters():this.renderWeeks())}}]),r}(de.default.Component),qr=function(e){wt(r,e);var t=St(r);function r(){var e;ht(this,r);for(var a=arguments.length,n=new Array(a),o=0;o0&&void 0!==arguments[0]?arguments[0]:{}).className||\"\").split(/\\s+/);return Br.some((function(t){return e.indexOf(t)>=0}))})(e.target)&&a.props.onDropdownFocus()})),Dt(bt(a),\"getDateInView\",(function(){var e=a.props,t=e.preSelection,r=e.selected,n=e.openToDate,o=Dr(a.props),s=vr(a.props),i=xt(),p=n||r||t;return p||(o&&nt.default(i,o)?o:s&&at.default(i,s)?s:i)})),Dt(bt(a),\"increaseMonth\",(function(){a.setState((function(e){var t=e.date;return{date:we.default(t,1)}}),(function(){return a.handleMonthChange(a.state.date)}))})),Dt(bt(a),\"decreaseMonth\",(function(){a.setState((function(e){var t=e.date;return{date:Ce.default(t,1)}}),(function(){return a.handleMonthChange(a.state.date)}))})),Dt(bt(a),\"handleDayClick\",(function(e,t,r){a.props.onSelect(e,t,r),a.props.setPreSelection&&a.props.setPreSelection(e)})),Dt(bt(a),\"handleDayMouseEnter\",(function(e){a.setState({selectingDate:e}),a.props.onDayMouseEnter&&a.props.onDayMouseEnter(e)})),Dt(bt(a),\"handleMonthMouseLeave\",(function(){a.setState({selectingDate:null}),a.props.onMonthMouseLeave&&a.props.onMonthMouseLeave()})),Dt(bt(a),\"handleYearChange\",(function(e){a.props.onYearChange&&a.props.onYearChange(e),a.props.adjustDateOnChange&&(a.props.onSelect&&a.props.onSelect(e),a.props.setOpen&&a.props.setOpen(!0)),a.props.setPreSelection&&a.props.setPreSelection(e)})),Dt(bt(a),\"handleMonthChange\",(function(e){a.props.onMonthChange&&a.props.onMonthChange(e),a.props.adjustDateOnChange&&(a.props.onSelect&&a.props.onSelect(e),a.props.setOpen&&a.props.setOpen(!0)),a.props.setPreSelection&&a.props.setPreSelection(e)})),Dt(bt(a),\"handleMonthYearChange\",(function(e){a.handleYearChange(e),a.handleMonthChange(e)})),Dt(bt(a),\"changeYear\",(function(e){a.setState((function(t){var r=t.date;return{date:We.default(r,e)}}),(function(){return a.handleYearChange(a.state.date)}))})),Dt(bt(a),\"changeMonth\",(function(e){a.setState((function(t){var r=t.date;return{date:qe.default(r,e)}}),(function(){return a.handleMonthChange(a.state.date)}))})),Dt(bt(a),\"changeMonthYear\",(function(e){a.setState((function(t){var r=t.date;return{date:We.default(qe.default(r,Ye.default(e)),Te.default(e))}}),(function(){return a.handleMonthYearChange(a.state.date)}))})),Dt(bt(a),\"header\",(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:a.state.date,t=Kt(e,a.props.locale,a.props.calendarStartDay),r=[];return a.props.showWeekNumbers&&r.push(de.default.createElement(\"div\",{key:\"W\",className:\"react-datepicker__day-name\"},a.props.weekLabel||\"#\")),r.concat([0,1,2,3,4,5,6].map((function(e){var r=De.default(t,e),n=a.formatWeekday(r,a.props.locale),o=a.props.weekDayClassName?a.props.weekDayClassName(r):void 0;return de.default.createElement(\"div\",{key:e,className:ce.default(\"react-datepicker__day-name\",o)},n)})))})),Dt(bt(a),\"formatWeekday\",(function(e,t){return a.props.formatWeekDay?function(e,t,r){return t(Lt(e,\"EEEE\",r))}(e,a.props.formatWeekDay,t):a.props.useWeekdaysShort?function(e,t){return Lt(e,\"EEE\",t)}(e,t):function(e,t){return Lt(e,\"EEEEEE\",t)}(e,t)})),Dt(bt(a),\"decreaseYear\",(function(){a.setState((function(e){var t=e.date;return{date:Se.default(t,a.props.showYearPicker?a.props.yearItemNumber:1)}}),(function(){return a.handleYearChange(a.state.date)}))})),Dt(bt(a),\"renderPreviousButton\",(function(){if(!a.props.renderCustomHeader){var e;switch(!0){case a.props.showMonthYearPicker:e=mr(a.state.date,a.props);break;case a.props.showYearPicker:e=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,a=t.yearItemNumber,n=void 0===a?Ot:a,o=br(jt(Se.default(e,n)),n).endPeriod,s=r&&Te.default(r);return s&&s>o||!1}(a.state.date,a.props);break;default:e=fr(a.state.date,a.props)}if((a.props.forceShowMonthNavigation||a.props.showDisabledMonthNavigation||!e)&&!a.props.showTimeSelectOnly){var t=[\"react-datepicker__navigation\",\"react-datepicker__navigation--previous\"],r=a.decreaseMonth;(a.props.showMonthYearPicker||a.props.showQuarterYearPicker||a.props.showYearPicker)&&(r=a.decreaseYear),e&&a.props.showDisabledMonthNavigation&&(t.push(\"react-datepicker__navigation--previous--disabled\"),r=null);var n=a.props.showMonthYearPicker||a.props.showQuarterYearPicker||a.props.showYearPicker,o=a.props,s=o.previousMonthAriaLabel,i=void 0===s?\"Previous Month\":s,p=o.previousYearAriaLabel,l=void 0===p?\"Previous Year\":p;return de.default.createElement(\"button\",{type:\"button\",className:t.join(\" \"),onClick:r,onKeyDown:a.props.handleOnKeyDown,\"aria-label\":n?l:i},de.default.createElement(\"span\",{className:[\"react-datepicker__navigation-icon\",\"react-datepicker__navigation-icon--previous\"].join(\" \")},n?a.props.previousYearButtonLabel:a.props.previousMonthButtonLabel))}}})),Dt(bt(a),\"increaseYear\",(function(){a.setState((function(e){var t=e.date;return{date:ge.default(t,a.props.showYearPicker?a.props.yearItemNumber:1)}}),(function(){return a.handleYearChange(a.state.date)}))})),Dt(bt(a),\"renderNextButton\",(function(){if(!a.props.renderCustomHeader){var e;switch(!0){case a.props.showMonthYearPicker:e=yr(a.state.date,a.props);break;case a.props.showYearPicker:e=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.maxDate,a=t.yearItemNumber,n=void 0===a?Ot:a,o=br(ge.default(e,n),n).startPeriod,s=r&&Te.default(r);return s&&s0&&void 0!==arguments[0]?arguments[0]:a.state.date,t=[\"react-datepicker__current-month\"];return a.props.showYearDropdown&&t.push(\"react-datepicker__current-month--hasYearDropdown\"),a.props.showMonthDropdown&&t.push(\"react-datepicker__current-month--hasMonthDropdown\"),a.props.showMonthYearDropdown&&t.push(\"react-datepicker__current-month--hasMonthYearDropdown\"),de.default.createElement(\"div\",{className:t.join(\" \")},Lt(e,a.props.dateFormat,a.props.locale))})),Dt(bt(a),\"renderYearDropdown\",(function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(a.props.showYearDropdown&&!e)return de.default.createElement(Mr,{adjustDateOnChange:a.props.adjustDateOnChange,date:a.state.date,onSelect:a.props.onSelect,setOpen:a.props.setOpen,dropdownMode:a.props.dropdownMode,onChange:a.changeYear,minDate:a.props.minDate,maxDate:a.props.maxDate,year:Te.default(a.state.date),scrollableYearDropdown:a.props.scrollableYearDropdown,yearDropdownItemNumber:a.props.yearDropdownItemNumber})})),Dt(bt(a),\"renderMonthDropdown\",(function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(a.props.showMonthDropdown&&!e)return de.default.createElement(Nr,{dropdownMode:a.props.dropdownMode,locale:a.props.locale,onChange:a.changeMonth,month:Ye.default(a.state.date),useShortMonthInDropdown:a.props.useShortMonthInDropdown})})),Dt(bt(a),\"renderMonthYearDropdown\",(function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(a.props.showMonthYearDropdown&&!e)return de.default.createElement(Tr,{dropdownMode:a.props.dropdownMode,locale:a.props.locale,dateFormat:a.props.dateFormat,onChange:a.changeMonthYear,minDate:a.props.minDate,maxDate:a.props.maxDate,date:a.state.date,scrollableMonthYearDropdown:a.props.scrollableMonthYearDropdown})})),Dt(bt(a),\"renderTodayButton\",(function(){if(a.props.todayButton&&!a.props.showTimeSelectOnly)return de.default.createElement(\"div\",{className:\"react-datepicker__today-button\",onClick:function(e){return a.props.onSelect(Ve.default(xt()),e)}},a.props.todayButton)})),Dt(bt(a),\"renderDefaultHeader\",(function(e){var t=e.monthDate,r=e.i;return de.default.createElement(\"div\",{className:\"react-datepicker__header \".concat(a.props.showTimeSelect?\"react-datepicker__header--has-time-select\":\"\")},a.renderCurrentMonth(t),de.default.createElement(\"div\",{className:\"react-datepicker__header__dropdown react-datepicker__header__dropdown--\".concat(a.props.dropdownMode),onFocus:a.handleDropdownFocus},a.renderMonthDropdown(0!==r),a.renderMonthYearDropdown(0!==r),a.renderYearDropdown(0!==r)),de.default.createElement(\"div\",{className:\"react-datepicker__day-names\"},a.header(t)))})),Dt(bt(a),\"renderCustomHeader\",(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.monthDate,r=e.i;if(a.props.showTimeSelect&&!a.state.monthContainer||a.props.showTimeSelectOnly)return null;var n=fr(a.state.date,a.props),o=hr(a.state.date,a.props),s=mr(a.state.date,a.props),i=yr(a.state.date,a.props),p=!a.props.showMonthYearPicker&&!a.props.showQuarterYearPicker&&!a.props.showYearPicker;return de.default.createElement(\"div\",{className:\"react-datepicker__header react-datepicker__header--custom\",onFocus:a.props.onDropdownFocus},a.props.renderCustomHeader(ut(ut({},a.state),{},{customHeaderCount:r,monthDate:t,changeMonth:a.changeMonth,changeYear:a.changeYear,decreaseMonth:a.decreaseMonth,increaseMonth:a.increaseMonth,decreaseYear:a.decreaseYear,increaseYear:a.increaseYear,prevMonthButtonDisabled:n,nextMonthButtonDisabled:o,prevYearButtonDisabled:s,nextYearButtonDisabled:i})),p&&de.default.createElement(\"div\",{className:\"react-datepicker__day-names\"},a.header(t)))})),Dt(bt(a),\"renderYearHeader\",(function(){var e=a.state.date,t=a.props,r=t.showYearPicker,n=br(e,t.yearItemNumber),o=n.startPeriod,s=n.endPeriod;return de.default.createElement(\"div\",{className:\"react-datepicker__header react-datepicker-year-header\"},r?\"\".concat(o,\" - \").concat(s):Te.default(e))})),Dt(bt(a),\"renderHeader\",(function(e){switch(!0){case void 0!==a.props.renderCustomHeader:return a.renderCustomHeader(e);case a.props.showMonthYearPicker||a.props.showQuarterYearPicker||a.props.showYearPicker:return a.renderYearHeader(e);default:return a.renderDefaultHeader(e)}})),Dt(bt(a),\"renderMonths\",(function(){if(!a.props.showTimeSelectOnly&&!a.props.showYearPicker){for(var e=[],t=a.props.showPreviousMonths?a.props.monthsShown-1:0,r=Ce.default(a.state.date,t),n=0;n0;e.push(de.default.createElement(\"div\",{key:i,ref:function(e){a.monthContainer=e},className:\"react-datepicker__month-container\"},a.renderHeader({monthDate:s,i:n}),de.default.createElement(Rr,{chooseDayAriaLabelPrefix:a.props.chooseDayAriaLabelPrefix,disabledDayAriaLabelPrefix:a.props.disabledDayAriaLabelPrefix,weekAriaLabelPrefix:a.props.weekAriaLabelPrefix,onChange:a.changeMonthYear,day:s,dayClassName:a.props.dayClassName,calendarStartDay:a.props.calendarStartDay,monthClassName:a.props.monthClassName,onDayClick:a.handleDayClick,handleOnKeyDown:a.props.handleOnDayKeyDown,onDayMouseEnter:a.handleDayMouseEnter,onMouseLeave:a.handleMonthMouseLeave,onWeekSelect:a.props.onWeekSelect,orderInDisplay:n,formatWeekNumber:a.props.formatWeekNumber,locale:a.props.locale,minDate:a.props.minDate,maxDate:a.props.maxDate,excludeDates:a.props.excludeDates,highlightDates:a.props.highlightDates,selectingDate:a.state.selectingDate,includeDates:a.props.includeDates,inline:a.props.inline,shouldFocusDayInline:a.props.shouldFocusDayInline,fixedHeight:a.props.fixedHeight,filterDate:a.props.filterDate,preSelection:a.props.preSelection,setPreSelection:a.props.setPreSelection,selected:a.props.selected,selectsStart:a.props.selectsStart,selectsEnd:a.props.selectsEnd,selectsRange:a.props.selectsRange,showWeekNumbers:a.props.showWeekNumbers,startDate:a.props.startDate,endDate:a.props.endDate,peekNextMonth:a.props.peekNextMonth,setOpen:a.props.setOpen,shouldCloseOnSelect:a.props.shouldCloseOnSelect,renderDayContents:a.props.renderDayContents,disabledKeyboardNavigation:a.props.disabledKeyboardNavigation,showMonthYearPicker:a.props.showMonthYearPicker,showFullMonthYearPicker:a.props.showFullMonthYearPicker,showTwoColumnMonthYearPicker:a.props.showTwoColumnMonthYearPicker,showFourColumnMonthYearPicker:a.props.showFourColumnMonthYearPicker,showYearPicker:a.props.showYearPicker,showQuarterYearPicker:a.props.showQuarterYearPicker,isInputFocused:a.props.isInputFocused,containerRef:a.containerRef,monthShowsDuplicateDaysEnd:p,monthShowsDuplicateDaysStart:l})))}return e}})),Dt(bt(a),\"renderYears\",(function(){if(!a.props.showTimeSelectOnly)return a.props.showYearPicker?de.default.createElement(\"div\",{className:\"react-datepicker__year--container\"},a.renderHeader(),de.default.createElement(Ar,vt({onDayClick:a.handleDayClick,date:a.state.date},a.props))):void 0})),Dt(bt(a),\"renderTimeSection\",(function(){if(a.props.showTimeSelect&&(a.state.monthContainer||a.props.showTimeSelectOnly))return de.default.createElement(qr,{selected:a.props.selected,openToDate:a.props.openToDate,onChange:a.props.onTimeChange,timeClassName:a.props.timeClassName,format:a.props.timeFormat,includeTimes:a.props.includeTimes,intervals:a.props.timeIntervals,minTime:a.props.minTime,maxTime:a.props.maxTime,excludeTimes:a.props.excludeTimes,filterTime:a.props.filterTime,timeCaption:a.props.timeCaption,todayButton:a.props.todayButton,showMonthDropdown:a.props.showMonthDropdown,showMonthYearDropdown:a.props.showMonthYearDropdown,showYearDropdown:a.props.showYearDropdown,withPortal:a.props.withPortal,monthRef:a.state.monthContainer,injectTimes:a.props.injectTimes,locale:a.props.locale,handleOnKeyDown:a.props.handleOnKeyDown,showTimeSelectOnly:a.props.showTimeSelectOnly})})),Dt(bt(a),\"renderInputTimeSection\",(function(){var e=new Date(a.props.selected),t=It(e)&&Boolean(a.props.selected)?\"\".concat(kr(e.getHours()),\":\").concat(kr(e.getMinutes())):\"\";if(a.props.showTimeInput)return de.default.createElement(Wr,{date:e,timeString:t,timeInputLabel:a.props.timeInputLabel,onChange:a.props.onTimeChange,customTimeInput:a.props.customTimeInput})})),a.containerRef=de.default.createRef(),a.state={date:a.getDateInView(),selectingDate:null,monthContainer:null},a}return yt(r,[{key:\"componentDidMount\",value:function(){var e=this;this.props.showTimeSelect&&(this.assignMonthContainer=void e.setState({monthContainer:e.monthContainer}))}},{key:\"componentDidUpdate\",value:function(e){this.props.preSelection&&!$t(this.props.preSelection,e.preSelection)?this.setState({date:this.props.preSelection}):this.props.openToDate&&!$t(this.props.openToDate,e.openToDate)&&this.setState({date:this.props.openToDate})}},{key:\"render\",value:function(){var e=this.props.container||Kr;return de.default.createElement(\"div\",{ref:this.containerRef},de.default.createElement(e,{className:ce.default(\"react-datepicker\",this.props.className,{\"react-datepicker--time-only\":this.props.showTimeSelectOnly}),showPopperArrow:this.props.showPopperArrow,arrowProps:this.props.arrowProps},this.renderPreviousButton(),this.renderNextButton(),this.renderMonths(),this.renderYears(),this.renderTodayButton(),this.renderTimeSection(),this.renderInputTimeSection(),this.props.children))}}],[{key:\"defaultProps\",get:function(){return{onDropdownFocus:function(){},monthsShown:1,monthSelectedIn:0,forceShowMonthNavigation:!1,timeCaption:\"Time\",previousYearButtonLabel:\"Previous Year\",nextYearButtonLabel:\"Next Year\",previousMonthButtonLabel:\"Previous Month\",nextMonthButtonLabel:\"Next Month\",customTimeInput:null,yearItemNumber:Ot}}}]),r}(de.default.Component),Hr=function(e){wt(r,e);var t=St(r);function r(e){var a;return ht(this,r),(a=t.call(this,e)).el=document.createElement(\"div\"),a}return yt(r,[{key:\"componentDidMount\",value:function(){this.portalRoot=document.getElementById(this.props.portalId),this.portalRoot||(this.portalRoot=document.createElement(\"div\"),this.portalRoot.setAttribute(\"id\",this.props.portalId),document.body.appendChild(this.portalRoot)),this.portalRoot.appendChild(this.el)}},{key:\"componentWillUnmount\",value:function(){this.portalRoot.removeChild(this.el)}},{key:\"render\",value:function(){return dt.default.createPortal(this.props.children,this.el)}}]),r}(de.default.Component),Qr=function(e){return!e.disabled&&-1!==e.tabIndex},Vr=function(e){wt(r,e);var t=St(r);function r(e){var a;return ht(this,r),Dt(bt(a=t.call(this,e)),\"getTabChildren\",(function(){return Array.prototype.slice.call(a.tabLoopRef.current.querySelectorAll(\"[tabindex], a, button, input, select, textarea\"),1,-1).filter(Qr)})),Dt(bt(a),\"handleFocusStart\",(function(e){var t=a.getTabChildren();t&&t.length>1&&t[t.length-1].focus()})),Dt(bt(a),\"handleFocusEnd\",(function(e){var t=a.getTabChildren();t&&t.length>1&&t[0].focus()})),a.tabLoopRef=de.default.createRef(),a}return yt(r,[{key:\"render\",value:function(){return this.props.enableTabLoop?de.default.createElement(\"div\",{className:\"react-datepicker__tab-loop\",ref:this.tabLoopRef},de.default.createElement(\"div\",{className:\"react-datepicker__tab-loop__start\",tabIndex:\"0\",onFocus:this.handleFocusStart}),this.props.children,de.default.createElement(\"div\",{className:\"react-datepicker__tab-loop__end\",tabIndex:\"0\",onFocus:this.handleFocusEnd})):this.props.children}}],[{key:\"defaultProps\",get:function(){return{enableTabLoop:!0}}}]),r}(de.default.Component),Ur=function(e){wt(r,e);var t=St(r);function r(){return ht(this,r),t.apply(this,arguments)}return yt(r,[{key:\"render\",value:function(){var e,t=this.props,r=t.className,a=t.wrapperClassName,n=t.hidePopper,o=t.popperComponent,s=t.popperModifiers,i=t.popperPlacement,p=t.popperProps,l=t.targetComponent,d=t.enableTabLoop,c=t.popperOnKeyDown,u=t.portalId;if(!n){var f=ce.default(\"react-datepicker-popper\",r);e=de.default.createElement(pe.Popper,vt({modifiers:s,placement:i},p),(function(e){var t=e.ref,r=e.style,a=e.placement,n=e.arrowProps;return de.default.createElement(Vr,{enableTabLoop:d},de.default.createElement(\"div\",{ref:t,style:r,className:f,\"data-placement\":a,onKeyDown:c},de.default.cloneElement(o,{arrowProps:n})))}))}this.props.popperContainer&&(e=de.default.createElement(this.props.popperContainer,{},e)),u&&!n&&(e=de.default.createElement(Hr,{portalId:u},e));var h=ce.default(\"react-datepicker-wrapper\",a);return de.default.createElement(pe.Manager,{className:\"react-datepicker-manager\"},de.default.createElement(pe.Reference,null,(function(e){var t=e.ref;return de.default.createElement(\"div\",{ref:t,className:h},l)})),e)}}],[{key:\"defaultProps\",get:function(){return{hidePopper:!0,popperModifiers:[],popperProps:{},popperPlacement:\"bottom-start\"}}}]),r}(de.default.Component),$r=\"react-datepicker-ignore-onclickoutside\",zr=lt.default(jr);var Gr=\"Date input not valid.\",Jr=function(e){wt(r,e);var t=St(r);function r(e){var a;return ht(this,r),Dt(bt(a=t.call(this,e)),\"getPreSelection\",(function(){return a.props.openToDate?a.props.openToDate:a.props.selectsEnd&&a.props.startDate?a.props.startDate:a.props.selectsStart&&a.props.endDate?a.props.endDate:xt()})),Dt(bt(a),\"calcInitialState\",(function(){var e,t=a.getPreSelection(),r=Dr(a.props),n=vr(a.props),o=r&&nt.default(t,Ve.default(r))?r:n&&at.default(t,Je.default(n))?n:t;return{open:a.props.startOpen||!1,preventFocus:!1,preSelection:null!==(e=a.props.selectsRange?a.props.startDate:a.props.selected)&&void 0!==e?e:o,highlightDates:wr(a.props.highlightDates),focused:!1,shouldFocusDayInline:!1}})),Dt(bt(a),\"clearPreventFocusTimeout\",(function(){a.preventFocusTimeout&&clearTimeout(a.preventFocusTimeout)})),Dt(bt(a),\"setFocus\",(function(){a.input&&a.input.focus&&a.input.focus({preventScroll:!0})})),Dt(bt(a),\"setBlur\",(function(){a.input&&a.input.blur&&a.input.blur(),a.cancelFocusInput()})),Dt(bt(a),\"setOpen\",(function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];a.setState({open:e,preSelection:e&&a.state.open?a.state.preSelection:a.calcInitialState().preSelection,lastPreSelectChange:Zr},(function(){e||a.setState((function(e){return{focused:!!t&&e.focused}}),(function(){!t&&a.setBlur(),a.setState({inputValue:null})}))}))})),Dt(bt(a),\"inputOk\",(function(){return ue.default(a.state.preSelection)})),Dt(bt(a),\"isCalendarOpen\",(function(){return void 0===a.props.open?a.state.open&&!a.props.disabled&&!a.props.readOnly:a.props.open})),Dt(bt(a),\"handleFocus\",(function(e){a.state.preventFocus||(a.props.onFocus(e),a.props.preventOpenOnFocus||a.props.readOnly||a.setOpen(!0)),a.setState({focused:!0})})),Dt(bt(a),\"cancelFocusInput\",(function(){clearTimeout(a.inputFocusTimeout),a.inputFocusTimeout=null})),Dt(bt(a),\"deferFocusInput\",(function(){a.cancelFocusInput(),a.inputFocusTimeout=setTimeout((function(){return a.setFocus()}),1)})),Dt(bt(a),\"handleDropdownFocus\",(function(){a.cancelFocusInput()})),Dt(bt(a),\"handleBlur\",(function(e){(!a.state.open||a.props.withPortal||a.props.showTimeInput)&&a.props.onBlur(e),a.setState({focused:!1})})),Dt(bt(a),\"handleCalendarClickOutside\",(function(e){a.props.inline||a.setOpen(!1),a.props.onClickOutside(e),a.props.withPortal&&e.preventDefault()})),Dt(bt(a),\"handleChange\",(function(){for(var e=arguments.length,t=new Array(e),r=0;r &&` helpers in initial condition allow es6 code\n // to co-exist with es5.\n // 2. Replace `for of` with es5 compliant iteration using `for`.\n // Basically, take:\n //\n // ```js\n // for (i of a.entries())\n // if (!b.has(i[0])) return false;\n // ```\n //\n // ... and convert to:\n //\n // ```js\n // it = a.entries();\n // while (!(i = it.next()).done)\n // if (!b.has(i.value[0])) return false;\n // ```\n //\n // **Note**: `i` access switches to `i.value`.\n var it;\n if (hasMap && (a instanceof Map) && (b instanceof Map)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!equal(i.value[1], b.get(i.value[0]))) return false;\n return true;\n }\n\n if (hasSet && (a instanceof Set) && (b instanceof Set)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n return true;\n }\n // END: Modifications\n\n if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (a[i] !== b[i]) return false;\n return true;\n }\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n // END: fast-deep-equal\n\n // START: react-fast-compare\n // custom handling for DOM elements\n if (hasElementType && a instanceof Element) return false;\n\n // custom handling for React/Preact\n for (i = length; i-- !== 0;) {\n if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner\n // Preact-specific: avoid traversing Preact elements' __v and __o\n // __v = $_original / $_vnode\n // __o = $_owner\n // These properties contain circular references and are not needed when\n // comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of elements\n\n continue;\n }\n\n // all other properties should be traversed as usual\n if (!equal(a[keys[i]], b[keys[i]])) return false;\n }\n // END: react-fast-compare\n\n // START: fast-deep-equal\n return true;\n }\n\n return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function isEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if (((error.message || '').match(/stack|recursion/i))) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('react-fast-compare cannot handle circular refs');\n return false;\n }\n // some other error. we should definitely know about these\n throw error;\n }\n};\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n var printWarning = function printWarning(format, args) {\n var len = arguments.length;\n args = new Array(len > 1 ? len - 1 : 0);\n for (var key = 1; key < len; key++) {\n args[key - 1] = arguments[key];\n }\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n }\n\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n if (!condition) {\n printWarning.apply(null, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n","import toInteger from \"../toInteger/index.js\";\nimport toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function setUTCDay(dirtyDate, dirtyDay, dirtyOptions) {\n requiredArgs(2, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n var date = toDate(dirtyDate);\n var day = toInteger(dirtyDay);\n var currentDay = date.getUTCDay();\n var remainder = day % 7;\n var dayIndex = (remainder + 7) % 7;\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}","import getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport setUTCDay from \"../../../_lib/setUTCDay/index.js\";\nimport setUTCISODay from \"../../../_lib/setUTCISODay/index.js\";\nimport setUTCISOWeek from \"../../../_lib/setUTCISOWeek/index.js\";\nimport setUTCWeek from \"../../../_lib/setUTCWeek/index.js\";\nimport startOfUTCISOWeek from \"../../../_lib/startOfUTCISOWeek/index.js\";\nimport startOfUTCWeek from \"../../../_lib/startOfUTCWeek/index.js\";\nvar MILLISECONDS_IN_HOUR = 3600000;\nvar MILLISECONDS_IN_MINUTE = 60000;\nvar MILLISECONDS_IN_SECOND = 1000;\nvar numericPatterns = {\n month: /^(1[0-2]|0?\\d)/,\n // 0 to 12\n date: /^(3[0-1]|[0-2]?\\d)/,\n // 0 to 31\n dayOfYear: /^(36[0-6]|3[0-5]\\d|[0-2]?\\d?\\d)/,\n // 0 to 366\n week: /^(5[0-3]|[0-4]?\\d)/,\n // 0 to 53\n hour23h: /^(2[0-3]|[0-1]?\\d)/,\n // 0 to 23\n hour24h: /^(2[0-4]|[0-1]?\\d)/,\n // 0 to 24\n hour11h: /^(1[0-1]|0?\\d)/,\n // 0 to 11\n hour12h: /^(1[0-2]|0?\\d)/,\n // 0 to 12\n minute: /^[0-5]?\\d/,\n // 0 to 59\n second: /^[0-5]?\\d/,\n // 0 to 59\n singleDigit: /^\\d/,\n // 0 to 9\n twoDigits: /^\\d{1,2}/,\n // 0 to 99\n threeDigits: /^\\d{1,3}/,\n // 0 to 999\n fourDigits: /^\\d{1,4}/,\n // 0 to 9999\n anyDigitsSigned: /^-?\\d+/,\n singleDigitSigned: /^-?\\d/,\n // 0 to 9, -0 to -9\n twoDigitsSigned: /^-?\\d{1,2}/,\n // 0 to 99, -0 to -99\n threeDigitsSigned: /^-?\\d{1,3}/,\n // 0 to 999, -0 to -999\n fourDigitsSigned: /^-?\\d{1,4}/ // 0 to 9999, -0 to -9999\n\n};\nvar timezonePatterns = {\n basicOptionalMinutes: /^([+-])(\\d{2})(\\d{2})?|Z/,\n basic: /^([+-])(\\d{2})(\\d{2})|Z/,\n basicOptionalSeconds: /^([+-])(\\d{2})(\\d{2})((\\d{2}))?|Z/,\n extended: /^([+-])(\\d{2}):(\\d{2})|Z/,\n extendedOptionalSeconds: /^([+-])(\\d{2}):(\\d{2})(:(\\d{2}))?|Z/\n};\n\nfunction parseNumericPattern(pattern, string, valueCallback) {\n var matchResult = string.match(pattern);\n\n if (!matchResult) {\n return null;\n }\n\n var value = parseInt(matchResult[0], 10);\n return {\n value: valueCallback ? valueCallback(value) : value,\n rest: string.slice(matchResult[0].length)\n };\n}\n\nfunction parseTimezonePattern(pattern, string) {\n var matchResult = string.match(pattern);\n\n if (!matchResult) {\n return null;\n } // Input is 'Z'\n\n\n if (matchResult[0] === 'Z') {\n return {\n value: 0,\n rest: string.slice(1)\n };\n }\n\n var sign = matchResult[1] === '+' ? 1 : -1;\n var hours = matchResult[2] ? parseInt(matchResult[2], 10) : 0;\n var minutes = matchResult[3] ? parseInt(matchResult[3], 10) : 0;\n var seconds = matchResult[5] ? parseInt(matchResult[5], 10) : 0;\n return {\n value: sign * (hours * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE + seconds * MILLISECONDS_IN_SECOND),\n rest: string.slice(matchResult[0].length)\n };\n}\n\nfunction parseAnyDigitsSigned(string, valueCallback) {\n return parseNumericPattern(numericPatterns.anyDigitsSigned, string, valueCallback);\n}\n\nfunction parseNDigits(n, string, valueCallback) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigit, string, valueCallback);\n\n case 2:\n return parseNumericPattern(numericPatterns.twoDigits, string, valueCallback);\n\n case 3:\n return parseNumericPattern(numericPatterns.threeDigits, string, valueCallback);\n\n case 4:\n return parseNumericPattern(numericPatterns.fourDigits, string, valueCallback);\n\n default:\n return parseNumericPattern(new RegExp('^\\\\d{1,' + n + '}'), string, valueCallback);\n }\n}\n\nfunction parseNDigitsSigned(n, string, valueCallback) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigitSigned, string, valueCallback);\n\n case 2:\n return parseNumericPattern(numericPatterns.twoDigitsSigned, string, valueCallback);\n\n case 3:\n return parseNumericPattern(numericPatterns.threeDigitsSigned, string, valueCallback);\n\n case 4:\n return parseNumericPattern(numericPatterns.fourDigitsSigned, string, valueCallback);\n\n default:\n return parseNumericPattern(new RegExp('^-?\\\\d{1,' + n + '}'), string, valueCallback);\n }\n}\n\nfunction dayPeriodEnumToHours(enumValue) {\n switch (enumValue) {\n case 'morning':\n return 4;\n\n case 'evening':\n return 17;\n\n case 'pm':\n case 'noon':\n case 'afternoon':\n return 12;\n\n case 'am':\n case 'midnight':\n case 'night':\n default:\n return 0;\n }\n}\n\nfunction normalizeTwoDigitYear(twoDigitYear, currentYear) {\n var isCommonEra = currentYear > 0; // Absolute number of the current year:\n // 1 -> 1 AC\n // 0 -> 1 BC\n // -1 -> 2 BC\n\n var absCurrentYear = isCommonEra ? currentYear : 1 - currentYear;\n var result;\n\n if (absCurrentYear <= 50) {\n result = twoDigitYear || 100;\n } else {\n var rangeEnd = absCurrentYear + 50;\n var rangeEndCentury = Math.floor(rangeEnd / 100) * 100;\n var isPreviousCentury = twoDigitYear >= rangeEnd % 100;\n result = twoDigitYear + rangeEndCentury - (isPreviousCentury ? 100 : 0);\n }\n\n return isCommonEra ? result : 1 - result;\n}\n\nvar DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nvar DAYS_IN_MONTH_LEAP_YEAR = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; // User for validation\n\nfunction isLeapYearIndex(year) {\n return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O* | Timezone (GMT) |\n * | p | | P | |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z* | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `parse` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n */\n\n\nvar parsers = {\n // Era\n G: {\n priority: 140,\n parse: function (string, token, match, _options) {\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return match.era(string, {\n width: 'abbreviated'\n }) || match.era(string, {\n width: 'narrow'\n });\n // A, B\n\n case 'GGGGG':\n return match.era(string, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n\n case 'GGGG':\n default:\n return match.era(string, {\n width: 'wide'\n }) || match.era(string, {\n width: 'abbreviated'\n }) || match.era(string, {\n width: 'narrow'\n });\n }\n },\n set: function (date, flags, value, _options) {\n flags.era = value;\n date.setUTCFullYear(value, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['R', 'u', 't', 'T']\n },\n // Year\n y: {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n priority: 130,\n parse: function (string, token, match, _options) {\n var valueCallback = function (year) {\n return {\n year: year,\n isTwoDigitYear: token === 'yy'\n };\n };\n\n switch (token) {\n case 'y':\n return parseNDigits(4, string, valueCallback);\n\n case 'yo':\n return match.ordinalNumber(string, {\n unit: 'year',\n valueCallback: valueCallback\n });\n\n default:\n return parseNDigits(token.length, string, valueCallback);\n }\n },\n validate: function (_date, value, _options) {\n return value.isTwoDigitYear || value.year > 0;\n },\n set: function (date, flags, value, _options) {\n var currentYear = date.getUTCFullYear();\n\n if (value.isTwoDigitYear) {\n var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n date.setUTCFullYear(normalizedTwoDigitYear, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n\n var year = !('era' in flags) || flags.era === 1 ? value.year : 1 - value.year;\n date.setUTCFullYear(year, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'u', 'w', 'I', 'i', 'e', 'c', 't', 'T']\n },\n // Local week-numbering year\n Y: {\n priority: 130,\n parse: function (string, token, match, _options) {\n var valueCallback = function (year) {\n return {\n year: year,\n isTwoDigitYear: token === 'YY'\n };\n };\n\n switch (token) {\n case 'Y':\n return parseNDigits(4, string, valueCallback);\n\n case 'Yo':\n return match.ordinalNumber(string, {\n unit: 'year',\n valueCallback: valueCallback\n });\n\n default:\n return parseNDigits(token.length, string, valueCallback);\n }\n },\n validate: function (_date, value, _options) {\n return value.isTwoDigitYear || value.year > 0;\n },\n set: function (date, flags, value, options) {\n var currentYear = getUTCWeekYear(date, options);\n\n if (value.isTwoDigitYear) {\n var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n date.setUTCFullYear(normalizedTwoDigitYear, 0, options.firstWeekContainsDate);\n date.setUTCHours(0, 0, 0, 0);\n return startOfUTCWeek(date, options);\n }\n\n var year = !('era' in flags) || flags.era === 1 ? value.year : 1 - value.year;\n date.setUTCFullYear(year, 0, options.firstWeekContainsDate);\n date.setUTCHours(0, 0, 0, 0);\n return startOfUTCWeek(date, options);\n },\n incompatibleTokens: ['y', 'R', 'u', 'Q', 'q', 'M', 'L', 'I', 'd', 'D', 'i', 't', 'T']\n },\n // ISO week-numbering year\n R: {\n priority: 130,\n parse: function (string, token, _match, _options) {\n if (token === 'R') {\n return parseNDigitsSigned(4, string);\n }\n\n return parseNDigitsSigned(token.length, string);\n },\n set: function (_date, _flags, value, _options) {\n var firstWeekOfYear = new Date(0);\n firstWeekOfYear.setUTCFullYear(value, 0, 4);\n firstWeekOfYear.setUTCHours(0, 0, 0, 0);\n return startOfUTCISOWeek(firstWeekOfYear);\n },\n incompatibleTokens: ['G', 'y', 'Y', 'u', 'Q', 'q', 'M', 'L', 'w', 'd', 'D', 'e', 'c', 't', 'T']\n },\n // Extended year\n u: {\n priority: 130,\n parse: function (string, token, _match, _options) {\n if (token === 'u') {\n return parseNDigitsSigned(4, string);\n }\n\n return parseNDigitsSigned(token.length, string);\n },\n set: function (date, _flags, value, _options) {\n date.setUTCFullYear(value, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['G', 'y', 'Y', 'R', 'w', 'I', 'i', 'e', 'c', 't', 'T']\n },\n // Quarter\n Q: {\n priority: 120,\n parse: function (string, token, match, _options) {\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n case 'QQ':\n // 01, 02, 03, 04\n return parseNDigits(token.length, string);\n // 1st, 2nd, 3rd, 4th\n\n case 'Qo':\n return match.ordinalNumber(string, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\n case 'QQQ':\n return match.quarter(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.quarter(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n case 'QQQQQ':\n return match.quarter(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'QQQQ':\n default:\n return match.quarter(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.quarter(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.quarter(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 4;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMonth((value - 1) * 3, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'q', 'M', 'L', 'w', 'I', 'd', 'D', 'i', 'e', 'c', 't', 'T']\n },\n // Stand-alone quarter\n q: {\n priority: 120,\n parse: function (string, token, match, _options) {\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n case 'qq':\n // 01, 02, 03, 04\n return parseNDigits(token.length, string);\n // 1st, 2nd, 3rd, 4th\n\n case 'qo':\n return match.ordinalNumber(string, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\n case 'qqq':\n return match.quarter(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.quarter(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n case 'qqqqq':\n return match.quarter(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'qqqq':\n default:\n return match.quarter(string, {\n width: 'wide',\n context: 'standalone'\n }) || match.quarter(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.quarter(string, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 4;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMonth((value - 1) * 3, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'Q', 'M', 'L', 'w', 'I', 'd', 'D', 'i', 'e', 'c', 't', 'T']\n },\n // Month\n M: {\n priority: 110,\n parse: function (string, token, match, _options) {\n var valueCallback = function (value) {\n return value - 1;\n };\n\n switch (token) {\n // 1, 2, ..., 12\n case 'M':\n return parseNumericPattern(numericPatterns.month, string, valueCallback);\n // 01, 02, ..., 12\n\n case 'MM':\n return parseNDigits(2, string, valueCallback);\n // 1st, 2nd, ..., 12th\n\n case 'Mo':\n return match.ordinalNumber(string, {\n unit: 'month',\n valueCallback: valueCallback\n });\n // Jan, Feb, ..., Dec\n\n case 'MMM':\n return match.month(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.month(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // J, F, ..., D\n\n case 'MMMMM':\n return match.month(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n\n case 'MMMM':\n default:\n return match.month(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.month(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.month(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 11;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMonth(value, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'q', 'Q', 'L', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']\n },\n // Stand-alone month\n L: {\n priority: 110,\n parse: function (string, token, match, _options) {\n var valueCallback = function (value) {\n return value - 1;\n };\n\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return parseNumericPattern(numericPatterns.month, string, valueCallback);\n // 01, 02, ..., 12\n\n case 'LL':\n return parseNDigits(2, string, valueCallback);\n // 1st, 2nd, ..., 12th\n\n case 'Lo':\n return match.ordinalNumber(string, {\n unit: 'month',\n valueCallback: valueCallback\n });\n // Jan, Feb, ..., Dec\n\n case 'LLL':\n return match.month(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.month(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // J, F, ..., D\n\n case 'LLLLL':\n return match.month(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n\n case 'LLLL':\n default:\n return match.month(string, {\n width: 'wide',\n context: 'standalone'\n }) || match.month(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.month(string, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 11;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMonth(value, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'q', 'Q', 'M', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']\n },\n // Local week of year\n w: {\n priority: 100,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'w':\n return parseNumericPattern(numericPatterns.week, string);\n\n case 'wo':\n return match.ordinalNumber(string, {\n unit: 'week'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 53;\n },\n set: function (date, _flags, value, options) {\n return startOfUTCWeek(setUTCWeek(date, value, options), options);\n },\n incompatibleTokens: ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'i', 't', 'T']\n },\n // ISO week of year\n I: {\n priority: 100,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'I':\n return parseNumericPattern(numericPatterns.week, string);\n\n case 'Io':\n return match.ordinalNumber(string, {\n unit: 'week'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 53;\n },\n set: function (date, _flags, value, options) {\n return startOfUTCISOWeek(setUTCISOWeek(date, value, options), options);\n },\n incompatibleTokens: ['y', 'Y', 'u', 'q', 'Q', 'M', 'L', 'w', 'd', 'D', 'e', 'c', 't', 'T']\n },\n // Day of the month\n d: {\n priority: 90,\n subPriority: 1,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'd':\n return parseNumericPattern(numericPatterns.date, string);\n\n case 'do':\n return match.ordinalNumber(string, {\n unit: 'date'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (date, value, _options) {\n var year = date.getUTCFullYear();\n var isLeapYear = isLeapYearIndex(year);\n var month = date.getUTCMonth();\n\n if (isLeapYear) {\n return value >= 1 && value <= DAYS_IN_MONTH_LEAP_YEAR[month];\n } else {\n return value >= 1 && value <= DAYS_IN_MONTH[month];\n }\n },\n set: function (date, _flags, value, _options) {\n date.setUTCDate(value);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'q', 'Q', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']\n },\n // Day of year\n D: {\n priority: 90,\n subPriority: 1,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'D':\n case 'DD':\n return parseNumericPattern(numericPatterns.dayOfYear, string);\n\n case 'Do':\n return match.ordinalNumber(string, {\n unit: 'date'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (date, value, _options) {\n var year = date.getUTCFullYear();\n var isLeapYear = isLeapYearIndex(year);\n\n if (isLeapYear) {\n return value >= 1 && value <= 366;\n } else {\n return value >= 1 && value <= 365;\n }\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMonth(0, value);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'q', 'Q', 'M', 'L', 'w', 'I', 'd', 'E', 'i', 'e', 'c', 't', 'T']\n },\n // Day of week\n E: {\n priority: 90,\n parse: function (string, token, match, _options) {\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return match.day(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // T\n\n case 'EEEEE':\n return match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'EEEEEE':\n return match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tuesday\n\n case 'EEEE':\n default:\n return match.day(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.day(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 6;\n },\n set: function (date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['D', 'i', 'e', 'c', 't', 'T']\n },\n // Local day of week\n e: {\n priority: 90,\n parse: function (string, token, match, options) {\n var valueCallback = function (value) {\n var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n };\n\n switch (token) {\n // 3\n case 'e':\n case 'ee':\n // 03\n return parseNDigits(token.length, string, valueCallback);\n // 3rd\n\n case 'eo':\n return match.ordinalNumber(string, {\n unit: 'day',\n valueCallback: valueCallback\n });\n // Tue\n\n case 'eee':\n return match.day(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // T\n\n case 'eeeee':\n return match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'eeeeee':\n return match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tuesday\n\n case 'eeee':\n default:\n return match.day(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.day(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 6;\n },\n set: function (date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'E', 'i', 'c', 't', 'T']\n },\n // Stand-alone local day of week\n c: {\n priority: 90,\n parse: function (string, token, match, options) {\n var valueCallback = function (value) {\n var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n };\n\n switch (token) {\n // 3\n case 'c':\n case 'cc':\n // 03\n return parseNDigits(token.length, string, valueCallback);\n // 3rd\n\n case 'co':\n return match.ordinalNumber(string, {\n unit: 'day',\n valueCallback: valueCallback\n });\n // Tue\n\n case 'ccc':\n return match.day(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.day(string, {\n width: 'short',\n context: 'standalone'\n }) || match.day(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // T\n\n case 'ccccc':\n return match.day(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n\n case 'cccccc':\n return match.day(string, {\n width: 'short',\n context: 'standalone'\n }) || match.day(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tuesday\n\n case 'cccc':\n default:\n return match.day(string, {\n width: 'wide',\n context: 'standalone'\n }) || match.day(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.day(string, {\n width: 'short',\n context: 'standalone'\n }) || match.day(string, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 6;\n },\n set: function (date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'E', 'i', 'e', 't', 'T']\n },\n // ISO day of week\n i: {\n priority: 90,\n parse: function (string, token, match, _options) {\n var valueCallback = function (value) {\n if (value === 0) {\n return 7;\n }\n\n return value;\n };\n\n switch (token) {\n // 2\n case 'i':\n case 'ii':\n // 02\n return parseNDigits(token.length, string);\n // 2nd\n\n case 'io':\n return match.ordinalNumber(string, {\n unit: 'day'\n });\n // Tue\n\n case 'iii':\n return match.day(string, {\n width: 'abbreviated',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'short',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting',\n valueCallback: valueCallback\n });\n // T\n\n case 'iiiii':\n return match.day(string, {\n width: 'narrow',\n context: 'formatting',\n valueCallback: valueCallback\n });\n // Tu\n\n case 'iiiiii':\n return match.day(string, {\n width: 'short',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting',\n valueCallback: valueCallback\n });\n // Tuesday\n\n case 'iiii':\n default:\n return match.day(string, {\n width: 'wide',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'abbreviated',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'short',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting',\n valueCallback: valueCallback\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 7;\n },\n set: function (date, _flags, value, options) {\n date = setUTCISODay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['y', 'Y', 'u', 'q', 'Q', 'M', 'L', 'w', 'd', 'D', 'E', 'e', 'c', 't', 'T']\n },\n // AM or PM\n a: {\n priority: 80,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'a':\n case 'aa':\n case 'aaa':\n return match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'aaaaa':\n return match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'aaaa':\n default:\n return match.dayPeriod(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n set: function (date, _flags, value, _options) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['b', 'B', 'H', 'K', 'k', 't', 'T']\n },\n // AM, PM, midnight\n b: {\n priority: 80,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'b':\n case 'bb':\n case 'bbb':\n return match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'bbbbb':\n return match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'bbbb':\n default:\n return match.dayPeriod(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n set: function (date, _flags, value, _options) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['a', 'B', 'H', 'K', 'k', 't', 'T']\n },\n // in the morning, in the afternoon, in the evening, at night\n B: {\n priority: 80,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'BBBBB':\n return match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'BBBB':\n default:\n return match.dayPeriod(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n set: function (date, _flags, value, _options) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['a', 'b', 't', 'T']\n },\n // Hour [1-12]\n h: {\n priority: 70,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'h':\n return parseNumericPattern(numericPatterns.hour12h, string);\n\n case 'ho':\n return match.ordinalNumber(string, {\n unit: 'hour'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 12;\n },\n set: function (date, _flags, value, _options) {\n var isPM = date.getUTCHours() >= 12;\n\n if (isPM && value < 12) {\n date.setUTCHours(value + 12, 0, 0, 0);\n } else if (!isPM && value === 12) {\n date.setUTCHours(0, 0, 0, 0);\n } else {\n date.setUTCHours(value, 0, 0, 0);\n }\n\n return date;\n },\n incompatibleTokens: ['H', 'K', 'k', 't', 'T']\n },\n // Hour [0-23]\n H: {\n priority: 70,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'H':\n return parseNumericPattern(numericPatterns.hour23h, string);\n\n case 'Ho':\n return match.ordinalNumber(string, {\n unit: 'hour'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 23;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCHours(value, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['a', 'b', 'h', 'K', 'k', 't', 'T']\n },\n // Hour [0-11]\n K: {\n priority: 70,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'K':\n return parseNumericPattern(numericPatterns.hour11h, string);\n\n case 'Ko':\n return match.ordinalNumber(string, {\n unit: 'hour'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 11;\n },\n set: function (date, _flags, value, _options) {\n var isPM = date.getUTCHours() >= 12;\n\n if (isPM && value < 12) {\n date.setUTCHours(value + 12, 0, 0, 0);\n } else {\n date.setUTCHours(value, 0, 0, 0);\n }\n\n return date;\n },\n incompatibleTokens: ['a', 'b', 'h', 'H', 'k', 't', 'T']\n },\n // Hour [1-24]\n k: {\n priority: 70,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'k':\n return parseNumericPattern(numericPatterns.hour24h, string);\n\n case 'ko':\n return match.ordinalNumber(string, {\n unit: 'hour'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 24;\n },\n set: function (date, _flags, value, _options) {\n var hours = value <= 24 ? value % 24 : value;\n date.setUTCHours(hours, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['a', 'b', 'h', 'H', 'K', 't', 'T']\n },\n // Minute\n m: {\n priority: 60,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'm':\n return parseNumericPattern(numericPatterns.minute, string);\n\n case 'mo':\n return match.ordinalNumber(string, {\n unit: 'minute'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 59;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMinutes(value, 0, 0);\n return date;\n },\n incompatibleTokens: ['t', 'T']\n },\n // Second\n s: {\n priority: 50,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 's':\n return parseNumericPattern(numericPatterns.second, string);\n\n case 'so':\n return match.ordinalNumber(string, {\n unit: 'second'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 59;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCSeconds(value, 0);\n return date;\n },\n incompatibleTokens: ['t', 'T']\n },\n // Fraction of second\n S: {\n priority: 30,\n parse: function (string, token, _match, _options) {\n var valueCallback = function (value) {\n return Math.floor(value * Math.pow(10, -token.length + 3));\n };\n\n return parseNDigits(token.length, string, valueCallback);\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMilliseconds(value);\n return date;\n },\n incompatibleTokens: ['t', 'T']\n },\n // Timezone (ISO-8601. +00:00 is `'Z'`)\n X: {\n priority: 10,\n parse: function (string, token, _match, _options) {\n switch (token) {\n case 'X':\n return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, string);\n\n case 'XX':\n return parseTimezonePattern(timezonePatterns.basic, string);\n\n case 'XXXX':\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, string);\n\n case 'XXXXX':\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, string);\n\n case 'XXX':\n default:\n return parseTimezonePattern(timezonePatterns.extended, string);\n }\n },\n set: function (date, flags, value, _options) {\n if (flags.timestampIsSet) {\n return date;\n }\n\n return new Date(date.getTime() - value);\n },\n incompatibleTokens: ['t', 'T', 'x']\n },\n // Timezone (ISO-8601)\n x: {\n priority: 10,\n parse: function (string, token, _match, _options) {\n switch (token) {\n case 'x':\n return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, string);\n\n case 'xx':\n return parseTimezonePattern(timezonePatterns.basic, string);\n\n case 'xxxx':\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, string);\n\n case 'xxxxx':\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, string);\n\n case 'xxx':\n default:\n return parseTimezonePattern(timezonePatterns.extended, string);\n }\n },\n set: function (date, flags, value, _options) {\n if (flags.timestampIsSet) {\n return date;\n }\n\n return new Date(date.getTime() - value);\n },\n incompatibleTokens: ['t', 'T', 'X']\n },\n // Seconds timestamp\n t: {\n priority: 40,\n parse: function (string, _token, _match, _options) {\n return parseAnyDigitsSigned(string);\n },\n set: function (_date, _flags, value, _options) {\n return [new Date(value * 1000), {\n timestampIsSet: true\n }];\n },\n incompatibleTokens: '*'\n },\n // Milliseconds timestamp\n T: {\n priority: 20,\n parse: function (string, _token, _match, _options) {\n return parseAnyDigitsSigned(string);\n },\n set: function (_date, _flags, value, _options) {\n return [new Date(value), {\n timestampIsSet: true\n }];\n },\n incompatibleTokens: '*'\n }\n};\nexport default parsers;","import toInteger from \"../toInteger/index.js\";\nimport toDate from \"../../toDate/index.js\";\nimport getUTCWeek from \"../getUTCWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function setUTCWeek(dirtyDate, dirtyWeek, options) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var week = toInteger(dirtyWeek);\n var diff = getUTCWeek(date, options) - week;\n date.setUTCDate(date.getUTCDate() - diff * 7);\n return date;\n}","import toInteger from \"../toInteger/index.js\";\nimport toDate from \"../../toDate/index.js\";\nimport getUTCISOWeek from \"../getUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function setUTCISOWeek(dirtyDate, dirtyISOWeek) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var isoWeek = toInteger(dirtyISOWeek);\n var diff = getUTCISOWeek(date) - isoWeek;\n date.setUTCDate(date.getUTCDate() - diff * 7);\n return date;\n}","import toInteger from \"../toInteger/index.js\";\nimport toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function setUTCISODay(dirtyDate, dirtyDay) {\n requiredArgs(2, arguments);\n var day = toInteger(dirtyDay);\n\n if (day % 7 === 0) {\n day = day - 7;\n }\n\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var currentDay = date.getUTCDay();\n var remainder = day % 7;\n var dayIndex = (remainder + 7) % 7;\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}","import defaultLocale from \"../locale/en-US/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport assign from \"../_lib/assign/index.js\";\nimport longFormatters from \"../_lib/format/longFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from \"../_lib/protectedTokens/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport parsers from \"./_lib/parsers/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar TIMEZONE_UNIT_PRIORITY = 10; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\n\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g; // This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\n\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar notWhitespaceRegExp = /\\S/;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n/**\n * @name parse\n * @category Common Helpers\n * @summary Parse the date.\n *\n * @description\n * Return the date parsed from string using the given format string.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters in the format string wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n *\n * Format of the format string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 5 below the table).\n *\n * Not all tokens are compatible. Combinations that don't make sense or could lead to bugs are prohibited\n * and will throw `RangeError`. For example usage of 24-hour format token with AM/PM token will throw an exception:\n *\n * ```javascript\n * parse('23 AM', 'HH a', new Date())\n * //=> RangeError: The format string mustn't contain `HH` and `a` at the same time\n * ```\n *\n * See the compatibility table: https://docs.google.com/spreadsheets/d/e/2PACX-1vQOPU3xUhplll6dyoMmVUXHKl_8CRDs6_ueLmex3SoqwhuolkuN3O05l4rqx5h1dKX8eb46Ul-CCSrq/pubhtml?gid=0&single=true\n *\n * Accepted format string patterns:\n * | Unit |Prior| Pattern | Result examples | Notes |\n * |---------------------------------|-----|---------|-----------------------------------|-------|\n * | Era | 140 | G..GGG | AD, BC | |\n * | | | GGGG | Anno Domini, Before Christ | 2 |\n * | | | GGGGG | A, B | |\n * | Calendar year | 130 | y | 44, 1, 1900, 2017, 9999 | 4 |\n * | | | yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | yy | 44, 01, 00, 17 | 4 |\n * | | | yyy | 044, 001, 123, 999 | 4 |\n * | | | yyyy | 0044, 0001, 1900, 2017 | 4 |\n * | | | yyyyy | ... | 2,4 |\n * | Local week-numbering year | 130 | Y | 44, 1, 1900, 2017, 9000 | 4 |\n * | | | Yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | YY | 44, 01, 00, 17 | 4,6 |\n * | | | YYY | 044, 001, 123, 999 | 4 |\n * | | | YYYY | 0044, 0001, 1900, 2017 | 4,6 |\n * | | | YYYYY | ... | 2,4 |\n * | ISO week-numbering year | 130 | R | -43, 1, 1900, 2017, 9999, -9999 | 4,5 |\n * | | | RR | -43, 01, 00, 17 | 4,5 |\n * | | | RRR | -043, 001, 123, 999, -999 | 4,5 |\n * | | | RRRR | -0043, 0001, 2017, 9999, -9999 | 4,5 |\n * | | | RRRRR | ... | 2,4,5 |\n * | Extended year | 130 | u | -43, 1, 1900, 2017, 9999, -999 | 4 |\n * | | | uu | -43, 01, 99, -99 | 4 |\n * | | | uuu | -043, 001, 123, 999, -999 | 4 |\n * | | | uuuu | -0043, 0001, 2017, 9999, -9999 | 4 |\n * | | | uuuuu | ... | 2,4 |\n * | Quarter (formatting) | 120 | Q | 1, 2, 3, 4 | |\n * | | | Qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | QQ | 01, 02, 03, 04 | |\n * | | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | 120 | q | 1, 2, 3, 4 | |\n * | | | qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | qq | 01, 02, 03, 04 | |\n * | | | qqq | Q1, Q2, Q3, Q4 | |\n * | | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | | qqqqq | 1, 2, 3, 4 | 3 |\n * | Month (formatting) | 110 | M | 1, 2, ..., 12 | |\n * | | | Mo | 1st, 2nd, ..., 12th | 5 |\n * | | | MM | 01, 02, ..., 12 | |\n * | | | MMM | Jan, Feb, ..., Dec | |\n * | | | MMMM | January, February, ..., December | 2 |\n * | | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | 110 | L | 1, 2, ..., 12 | |\n * | | | Lo | 1st, 2nd, ..., 12th | 5 |\n * | | | LL | 01, 02, ..., 12 | |\n * | | | LLL | Jan, Feb, ..., Dec | |\n * | | | LLLL | January, February, ..., December | 2 |\n * | | | LLLLL | J, F, ..., D | |\n * | Local week of year | 100 | w | 1, 2, ..., 53 | |\n * | | | wo | 1st, 2nd, ..., 53th | 5 |\n * | | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | 100 | I | 1, 2, ..., 53 | 5 |\n * | | | Io | 1st, 2nd, ..., 53th | 5 |\n * | | | II | 01, 02, ..., 53 | 5 |\n * | Day of month | 90 | d | 1, 2, ..., 31 | |\n * | | | do | 1st, 2nd, ..., 31st | 5 |\n * | | | dd | 01, 02, ..., 31 | |\n * | Day of year | 90 | D | 1, 2, ..., 365, 366 | 7 |\n * | | | Do | 1st, 2nd, ..., 365th, 366th | 5 |\n * | | | DD | 01, 02, ..., 365, 366 | 7 |\n * | | | DDD | 001, 002, ..., 365, 366 | |\n * | | | DDDD | ... | 2 |\n * | Day of week (formatting) | 90 | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | | EEEEE | M, T, W, T, F, S, S | |\n * | | | EEEEEE | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | ISO day of week (formatting) | 90 | i | 1, 2, 3, ..., 7 | 5 |\n * | | | io | 1st, 2nd, ..., 7th | 5 |\n * | | | ii | 01, 02, ..., 07 | 5 |\n * | | | iii | Mon, Tue, Wed, ..., Sun | 5 |\n * | | | iiii | Monday, Tuesday, ..., Sunday | 2,5 |\n * | | | iiiii | M, T, W, T, F, S, S | 5 |\n * | | | iiiiii | Mo, Tu, We, Th, Fr, Su, Sa | 5 |\n * | Local day of week (formatting) | 90 | e | 2, 3, 4, ..., 1 | |\n * | | | eo | 2nd, 3rd, ..., 1st | 5 |\n * | | | ee | 02, 03, ..., 01 | |\n * | | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | | eeeee | M, T, W, T, F, S, S | |\n * | | | eeeeee | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | Local day of week (stand-alone) | 90 | c | 2, 3, 4, ..., 1 | |\n * | | | co | 2nd, 3rd, ..., 1st | 5 |\n * | | | cc | 02, 03, ..., 01 | |\n * | | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | | ccccc | M, T, W, T, F, S, S | |\n * | | | cccccc | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | AM, PM | 80 | a..aaa | AM, PM | |\n * | | | aaaa | a.m., p.m. | 2 |\n * | | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | 80 | b..bbb | AM, PM, noon, midnight | |\n * | | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | | bbbbb | a, p, n, mi | |\n * | Flexible day period | 80 | B..BBB | at night, in the morning, ... | |\n * | | | BBBB | at night, in the morning, ... | 2 |\n * | | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | 70 | h | 1, 2, ..., 11, 12 | |\n * | | | ho | 1st, 2nd, ..., 11th, 12th | 5 |\n * | | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | 70 | H | 0, 1, 2, ..., 23 | |\n * | | | Ho | 0th, 1st, 2nd, ..., 23rd | 5 |\n * | | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | 70 | K | 1, 2, ..., 11, 0 | |\n * | | | Ko | 1st, 2nd, ..., 11th, 0th | 5 |\n * | | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | 70 | k | 24, 1, 2, ..., 23 | |\n * | | | ko | 24th, 1st, 2nd, ..., 23rd | 5 |\n * | | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | 60 | m | 0, 1, ..., 59 | |\n * | | | mo | 0th, 1st, ..., 59th | 5 |\n * | | | mm | 00, 01, ..., 59 | |\n * | Second | 50 | s | 0, 1, ..., 59 | |\n * | | | so | 0th, 1st, ..., 59th | 5 |\n * | | | ss | 00, 01, ..., 59 | |\n * | Seconds timestamp | 40 | t | 512969520 | |\n * | | | tt | ... | 2 |\n * | Fraction of second | 30 | S | 0, 1, ..., 9 | |\n * | | | SS | 00, 01, ..., 99 | |\n * | | | SSS | 000, 0001, ..., 999 | |\n * | | | SSSS | ... | 2 |\n * | Milliseconds timestamp | 20 | T | 512969520900 | |\n * | | | TT | ... | 2 |\n * | Timezone (ISO-8601 w/ Z) | 10 | X | -08, +0530, Z | |\n * | | | XX | -0800, +0530, Z | |\n * | | | XXX | -08:00, +05:30, Z | |\n * | | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | 10 | x | -08, +0530, +00 | |\n * | | | xx | -0800, +0530, +0000 | |\n * | | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Long localized date | NA | P | 05/29/1453 | 5,8 |\n * | | | PP | May 29, 1453 | |\n * | | | PPP | May 29th, 1453 | |\n * | | | PPPP | Sunday, May 29th, 1453 | 2,5,8 |\n * | Long localized time | NA | p | 12:00 AM | 5,8 |\n * | | | pp | 12:00:00 AM | |\n * | Combination of date and time | NA | Pp | 05/29/1453, 12:00 AM | |\n * | | | PPpp | May 29, 1453, 12:00:00 AM | |\n * | | | PPPpp | May 29th, 1453 at ... | |\n * | | | PPPPpp | Sunday, May 29th, 1453 at ... | 2,5,8 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular.\n * In `format` function, they will produce different result:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * `parse` will try to match both formatting and stand-alone units interchangably.\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table:\n * - for numerical units (`yyyyyyyy`) `parse` will try to match a number\n * as wide as the sequence\n * - for text units (`MMMMMMMM`) `parse` will try to match the widest variation of the unit.\n * These variations are marked with \"2\" in the last column of the table.\n *\n * 3. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 4. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` will try to guess the century of two digit year by proximity with `referenceDate`:\n *\n * `parse('50', 'yy', new Date(2018, 0, 1)) //=> Sat Jan 01 2050 00:00:00`\n *\n * `parse('75', 'yy', new Date(2018, 0, 1)) //=> Wed Jan 01 1975 00:00:00`\n *\n * while `uu` will just assign the year as is:\n *\n * `parse('50', 'uu', new Date(2018, 0, 1)) //=> Sat Jan 01 0050 00:00:00`\n *\n * `parse('75', 'uu', new Date(2018, 0, 1)) //=> Tue Jan 01 0075 00:00:00`\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [setISOWeekYear]{@link https://date-fns.org/docs/setISOWeekYear}\n * and [setWeekYear]{@link https://date-fns.org/docs/setWeekYear}).\n *\n * 5. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 6. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://git.io/fxCyr\n *\n * 7. `D` and `DD` tokens represent days of the year but they are ofthen confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://git.io/fxCyr\n *\n * 8. `P+` tokens do not have a defined priority since they are merely aliases to other tokens based\n * on the given locale.\n *\n * using `en-US` locale: `P` => `MM/dd/yyyy`\n * using `en-US` locale: `p` => `hh:mm a`\n * using `pt-BR` locale: `P` => `dd/MM/yyyy`\n * using `pt-BR` locale: `p` => `HH:mm`\n *\n * Values will be assigned to the date in the descending order of its unit's priority.\n * Units of an equal priority overwrite each other in the order of appearance.\n *\n * If no values of higher priority are parsed (e.g. when parsing string 'January 1st' without a year),\n * the values will be taken from 3rd argument `referenceDate` which works as a context of parsing.\n *\n * `referenceDate` must be passed for correct work of the function.\n * If you're not sure which `referenceDate` to supply, create a new instance of Date:\n * `parse('02/11/2014', 'MM/dd/yyyy', new Date())`\n * In this case parsing will be done in the context of the current date.\n * If `referenceDate` is `Invalid Date` or a value not convertible to valid `Date`,\n * then `Invalid Date` will be returned.\n *\n * The result may vary by locale.\n *\n * If `formatString` matches with `dateString` but does not provides tokens, `referenceDate` will be returned.\n *\n * If parsing failed, `Invalid Date` will be returned.\n * Invalid Date is a Date, whose time value is NaN.\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - Old `parse` was renamed to `toDate`.\n * Now `parse` is a new function which parses a string using a provided format.\n *\n * ```javascript\n * // Before v2.0.0\n * parse('2016-01-01')\n *\n * // v2.0.0 onward (toDate no longer accepts a string)\n * toDate(1392098430000) // Unix to timestamp\n * toDate(new Date(2014, 1, 11, 11, 30, 30)) // Cloning the date\n * parse('2016-01-01', 'yyyy-MM-dd', new Date())\n * ```\n *\n * @param {String} dateString - the string to parse\n * @param {String} formatString - the string of tokens\n * @param {Date|Number} referenceDate - defines values missing from the parsed dateString\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://git.io/fxCyr\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://git.io/fxCyr\n * @returns {Date} the parsed date\n * @throws {TypeError} 3 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} `options.locale` must contain `match` property\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Parse 11 February 2014 from middle-endian format:\n * var result = parse('02/11/2014', 'MM/dd/yyyy', new Date())\n * //=> Tue Feb 11 2014 00:00:00\n *\n * @example\n * // Parse 28th of February in Esperanto locale in the context of 2010 year:\n * import eo from 'date-fns/locale/eo'\n * var result = parse('28-a de februaro', \"do 'de' MMMM\", new Date(2010, 0, 1), {\n * locale: eo\n * })\n * //=> Sun Feb 28 2010 00:00:00\n */\n\nexport default function parse(dirtyDateString, dirtyFormatString, dirtyReferenceDate, dirtyOptions) {\n requiredArgs(3, arguments);\n var dateString = String(dirtyDateString);\n var formatString = String(dirtyFormatString);\n var options = dirtyOptions || {};\n var locale = options.locale || defaultLocale;\n\n if (!locale.match) {\n throw new RangeError('locale must contain match property');\n }\n\n var localeFirstWeekContainsDate = locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n\n var localeWeekStartsOn = locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n if (formatString === '') {\n if (dateString === '') {\n return toDate(dirtyReferenceDate);\n } else {\n return new Date(NaN);\n }\n }\n\n var subFnOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale\n }; // If timezone isn't specified, it will be set to the system timezone\n\n var setters = [{\n priority: TIMEZONE_UNIT_PRIORITY,\n subPriority: -1,\n set: dateToSystemTimezone,\n index: 0\n }];\n var i;\n var tokens = formatString.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong, subFnOptions);\n }\n\n return substring;\n }).join('').match(formattingTokensRegExp);\n var usedTokens = [];\n\n for (i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (!options.useAdditionalWeekYearTokens && isProtectedWeekYearToken(token)) {\n throwProtectedError(token, formatString, dirtyDateString);\n }\n\n if (!options.useAdditionalDayOfYearTokens && isProtectedDayOfYearToken(token)) {\n throwProtectedError(token, formatString, dirtyDateString);\n }\n\n var firstCharacter = token[0];\n var parser = parsers[firstCharacter];\n\n if (parser) {\n var incompatibleTokens = parser.incompatibleTokens;\n\n if (Array.isArray(incompatibleTokens)) {\n var incompatibleToken = void 0;\n\n for (var _i = 0; _i < usedTokens.length; _i++) {\n var usedToken = usedTokens[_i].token;\n\n if (incompatibleTokens.indexOf(usedToken) !== -1 || usedToken === firstCharacter) {\n incompatibleToken = usedTokens[_i];\n break;\n }\n }\n\n if (incompatibleToken) {\n throw new RangeError(\"The format string mustn't contain `\".concat(incompatibleToken.fullToken, \"` and `\").concat(token, \"` at the same time\"));\n }\n } else if (parser.incompatibleTokens === '*' && usedTokens.length) {\n throw new RangeError(\"The format string mustn't contain `\".concat(token, \"` and any other token at the same time\"));\n }\n\n usedTokens.push({\n token: firstCharacter,\n fullToken: token\n });\n var parseResult = parser.parse(dateString, token, locale.match, subFnOptions);\n\n if (!parseResult) {\n return new Date(NaN);\n }\n\n setters.push({\n priority: parser.priority,\n subPriority: parser.subPriority || 0,\n set: parser.set,\n validate: parser.validate,\n value: parseResult.value,\n index: setters.length\n });\n dateString = parseResult.rest;\n } else {\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n } // Replace two single quote characters with one single quote character\n\n\n if (token === \"''\") {\n token = \"'\";\n } else if (firstCharacter === \"'\") {\n token = cleanEscapedString(token);\n } // Cut token from string, or, if string doesn't match the token, return Invalid Date\n\n\n if (dateString.indexOf(token) === 0) {\n dateString = dateString.slice(token.length);\n } else {\n return new Date(NaN);\n }\n }\n } // Check if the remaining input contains something other than whitespace\n\n\n if (dateString.length > 0 && notWhitespaceRegExp.test(dateString)) {\n return new Date(NaN);\n }\n\n var uniquePrioritySetters = setters.map(function (setter) {\n return setter.priority;\n }).sort(function (a, b) {\n return b - a;\n }).filter(function (priority, index, array) {\n return array.indexOf(priority) === index;\n }).map(function (priority) {\n return setters.filter(function (setter) {\n return setter.priority === priority;\n }).sort(function (a, b) {\n return b.subPriority - a.subPriority;\n });\n }).map(function (setterArray) {\n return setterArray[0];\n });\n var date = toDate(dirtyReferenceDate);\n\n if (isNaN(date)) {\n return new Date(NaN);\n } // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/37\n\n\n var utcDate = subMilliseconds(date, getTimezoneOffsetInMilliseconds(date));\n var flags = {};\n\n for (i = 0; i < uniquePrioritySetters.length; i++) {\n var setter = uniquePrioritySetters[i];\n\n if (setter.validate && !setter.validate(utcDate, setter.value, subFnOptions)) {\n return new Date(NaN);\n }\n\n var result = setter.set(utcDate, flags, setter.value, subFnOptions); // Result is tuple (date, flags)\n\n if (result[0]) {\n utcDate = result[0];\n assign(flags, result[1]); // Result is date\n } else {\n utcDate = result;\n }\n }\n\n return utcDate;\n}\n\nfunction dateToSystemTimezone(date, flags) {\n if (flags.timestampIsSet) {\n return date;\n }\n\n var convertedDate = new Date(0);\n convertedDate.setFullYear(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate());\n convertedDate.setHours(date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), date.getUTCMilliseconds());\n return convertedDate;\n}\n\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n}","import _curry2 from './_curry2.js';\nimport _xfBase from './_xfBase.js';\n\nvar XFilter = /*#__PURE__*/function () {\n function XFilter(f, xf) {\n this.xf = xf;\n this.f = f;\n }\n XFilter.prototype['@@transducer/init'] = _xfBase.init;\n XFilter.prototype['@@transducer/result'] = _xfBase.result;\n XFilter.prototype['@@transducer/step'] = function (result, input) {\n return this.f(input) ? this.xf['@@transducer/step'](result, input) : result;\n };\n\n return XFilter;\n}();\n\nvar _xfilter = /*#__PURE__*/_curry2(function _xfilter(f, xf) {\n return new XFilter(f, xf);\n});\nexport default _xfilter;","import _curry2 from './internal/_curry2.js';\nimport _dispatchable from './internal/_dispatchable.js';\nimport _filter from './internal/_filter.js';\nimport _isObject from './internal/_isObject.js';\nimport _reduce from './internal/_reduce.js';\nimport _xfilter from './internal/_xfilter.js';\nimport keys from './keys.js';\n\n/**\n * Takes a predicate and a `Filterable`, and returns a new filterable of the\n * same type containing the members of the given filterable which satisfy the\n * given predicate. Filterable objects include plain objects or any object\n * that has a filter method such as `Array`.\n *\n * Dispatches to the `filter` method of the second argument, if present.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig Filterable f => (a -> Boolean) -> f a -> f a\n * @param {Function} pred\n * @param {Array} filterable\n * @return {Array} Filterable\n * @see R.reject, R.transduce, R.addIndex\n * @example\n *\n * const isEven = n => n % 2 === 0;\n *\n * R.filter(isEven, [1, 2, 3, 4]); //=> [2, 4]\n *\n * R.filter(isEven, {a: 1, b: 2, c: 3, d: 4}); //=> {b: 2, d: 4}\n */\nvar filter = /*#__PURE__*/_curry2( /*#__PURE__*/_dispatchable(['filter'], _xfilter, function (pred, filterable) {\n return _isObject(filterable) ? _reduce(function (acc, key) {\n if (pred(filterable[key])) {\n acc[key] = filterable[key];\n }\n return acc;\n }, {}, keys(filterable)) :\n // else\n _filter(pred, filterable);\n}));\nexport default filter;","export default function _filter(fn, list) {\n var idx = 0;\n var len = list.length;\n var result = [];\n\n while (idx < len) {\n if (fn(list[idx])) {\n result[result.length] = list[idx];\n }\n idx += 1;\n }\n return result;\n}","\n\n/**\n * A function that always returns `true`. Any passed in parameters are ignored.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category Function\n * @sig * -> Boolean\n * @param {*}\n * @return {Boolean}\n * @see R.F\n * @example\n *\n * R.T(); //=> true\n */\nvar T = function () {\n return true;\n};\nexport default T;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Returns a partial copy of an object omitting the keys specified.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Object\n * @sig [String] -> {String: *} -> {String: *}\n * @param {Array} names an array of String property names to omit from the new object\n * @param {Object} obj The object to copy from\n * @return {Object} A new object with properties from `names` not on it.\n * @see R.pick\n * @example\n *\n * R.omit(['a', 'd'], {a: 1, b: 2, c: 3, d: 4}); //=> {b: 2, c: 3}\n */\nvar omit = /*#__PURE__*/_curry2(function omit(names, obj) {\n var result = {};\n var index = {};\n var idx = 0;\n var len = names.length;\n\n while (idx < len) {\n index[names[idx]] = 1;\n idx += 1;\n }\n\n for (var prop in obj) {\n if (!index.hasOwnProperty(prop)) {\n result[prop] = obj[prop];\n }\n }\n return result;\n});\nexport default omit;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Returns the larger of its two arguments.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Relation\n * @sig Ord a => a -> a -> a\n * @param {*} a\n * @param {*} b\n * @return {*}\n * @see R.maxBy, R.min\n * @example\n *\n * R.max(789, 123); //=> 789\n * R.max('a', 'b'); //=> 'b'\n */\nvar max = /*#__PURE__*/_curry2(function max(a, b) {\n return b > a ? b : a;\n});\nexport default max;","import _arity from './internal/_arity.js';\nimport _curry1 from './internal/_curry1.js';\nimport map from './map.js';\nimport max from './max.js';\nimport reduce from './reduce.js';\n\n/**\n * Returns a function, `fn`, which encapsulates `if/else, if/else, ...` logic.\n * `R.cond` takes a list of [predicate, transformer] pairs. All of the arguments\n * to `fn` are applied to each of the predicates in turn until one returns a\n * \"truthy\" value, at which point `fn` returns the result of applying its\n * arguments to the corresponding transformer. If none of the predicates\n * matches, `fn` returns undefined.\n *\n * @func\n * @memberOf R\n * @since v0.6.0\n * @category Logic\n * @sig [[(*... -> Boolean),(*... -> *)]] -> (*... -> *)\n * @param {Array} pairs A list of [predicate, transformer]\n * @return {Function}\n * @see R.ifElse, R.unless, R.when\n * @example\n *\n * const fn = R.cond([\n * [R.equals(0), R.always('water freezes at 0°C')],\n * [R.equals(100), R.always('water boils at 100°C')],\n * [R.T, temp => 'nothing special happens at ' + temp + '°C']\n * ]);\n * fn(0); //=> 'water freezes at 0°C'\n * fn(50); //=> 'nothing special happens at 50°C'\n * fn(100); //=> 'water boils at 100°C'\n */\nvar cond = /*#__PURE__*/_curry1(function cond(pairs) {\n var arity = reduce(max, 0, map(function (pair) {\n return pair[0].length;\n }, pairs));\n return _arity(arity, function () {\n var idx = 0;\n while (idx < pairs.length) {\n if (pairs[idx][0].apply(this, arguments)) {\n return pairs[idx][1].apply(this, arguments);\n }\n idx += 1;\n }\n });\n});\nexport default cond;","export default function _pipe(f, g) {\n return function () {\n return g.call(this, f.apply(this, arguments));\n };\n}","import _arity from './internal/_arity.js';\nimport _pipe from './internal/_pipe.js';\nimport reduce from './reduce.js';\nimport tail from './tail.js';\n\n/**\n * Performs left-to-right function composition. The leftmost function may have\n * any arity; the remaining functions must be unary.\n *\n * In some libraries this function is named `sequence`.\n *\n * **Note:** The result of pipe is not automatically curried.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig (((a, b, ..., n) -> o), (o -> p), ..., (x -> y), (y -> z)) -> ((a, b, ..., n) -> z)\n * @param {...Function} functions\n * @return {Function}\n * @see R.compose\n * @example\n *\n * const f = R.pipe(Math.pow, R.negate, R.inc);\n *\n * f(3, 4); // -(3^4) + 1\n * @symb R.pipe(f, g, h)(a, b) = h(g(f(a, b)))\n */\nexport default function pipe() {\n if (arguments.length === 0) {\n throw new Error('pipe requires at least one argument');\n }\n return _arity(arguments[0].length, reduce(_pipe, arguments[0], tail(arguments)));\n}","/** @license React v16.12.0\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var h=require(\"object-assign\"),n=\"function\"===typeof Symbol&&Symbol.for,p=n?Symbol.for(\"react.element\"):60103,q=n?Symbol.for(\"react.portal\"):60106,r=n?Symbol.for(\"react.fragment\"):60107,t=n?Symbol.for(\"react.strict_mode\"):60108,u=n?Symbol.for(\"react.profiler\"):60114,v=n?Symbol.for(\"react.provider\"):60109,w=n?Symbol.for(\"react.context\"):60110,x=n?Symbol.for(\"react.forward_ref\"):60112,y=n?Symbol.for(\"react.suspense\"):60113;n&&Symbol.for(\"react.suspense_list\");\nvar z=n?Symbol.for(\"react.memo\"):60115,aa=n?Symbol.for(\"react.lazy\"):60116;n&&Symbol.for(\"react.fundamental\");n&&Symbol.for(\"react.responder\");n&&Symbol.for(\"react.scope\");var A=\"function\"===typeof Symbol&&Symbol.iterator;\nfunction B(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cP.length&&P.push(a)}\nfunction S(a,b,c,e){var d=typeof a;if(\"undefined\"===d||\"boolean\"===d)a=null;var g=!1;if(null===a)g=!0;else switch(d){case \"string\":case \"number\":g=!0;break;case \"object\":switch(a.$$typeof){case p:case q:g=!0}}if(g)return c(e,a,\"\"===b?\".\"+T(a,0):b),1;g=0;b=\"\"===b?\".\":b+\":\";if(Array.isArray(a))for(var l=0;lb}return!1}function B(a,b,c,d,e,f){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f}var D={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){D[a]=new B(a,0,!1,a,null,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];D[b]=new B(b,1,!1,a[1],null,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){D[a]=new B(a,2,!1,a.toLowerCase(),null,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){D[a]=new B(a,2,!1,a,null,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){D[a]=new B(a,3,!1,a.toLowerCase(),null,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){D[a]=new B(a,3,!0,a,null,!1)});[\"capture\",\"download\"].forEach(function(a){D[a]=new B(a,4,!1,a,null,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){D[a]=new B(a,6,!1,a,null,!1)});[\"rowSpan\",\"start\"].forEach(function(a){D[a]=new B(a,5,!1,a.toLowerCase(),null,!1)});var sb=/[\\-:]([a-z])/g;function tb(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(sb,\ntb);D[b]=new B(b,1,!1,a,null,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(sb,tb);D[b]=new B(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(sb,tb);D[b]=new B(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!1)});\nD.xlinkHref=new B(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!0)});function ub(a){switch(typeof a){case \"boolean\":case \"number\":case \"object\":case \"string\":case \"undefined\":return a;default:return\"\"}}\nfunction vb(a,b,c,d){var e=D.hasOwnProperty(b)?D[b]:null;var f=null!==e?0===e.type:d?!1:!(2=b.length))throw Error(u(93));b=b[0]}c=b}null==c&&(c=\"\")}a._wrapperState={initialValue:ub(c)}}\nfunction Mb(a,b){var c=ub(b.value),d=ub(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function Nb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}var Ob={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction Pb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function Qb(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?Pb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar Rb,Sb=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==Ob.svg||\"innerHTML\"in a)a.innerHTML=b;else{Rb=Rb||document.createElement(\"div\");Rb.innerHTML=\"\"+b.valueOf().toString()+\"\";for(b=Rb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction Tb(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}function Ub(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;return c}var Vb={animationend:Ub(\"Animation\",\"AnimationEnd\"),animationiteration:Ub(\"Animation\",\"AnimationIteration\"),animationstart:Ub(\"Animation\",\"AnimationStart\"),transitionend:Ub(\"Transition\",\"TransitionEnd\")},Wb={},Xb={};\nYa&&(Xb=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete Vb.animationend.animation,delete Vb.animationiteration.animation,delete Vb.animationstart.animation),\"TransitionEvent\"in window||delete Vb.transitionend.transition);function Yb(a){if(Wb[a])return Wb[a];if(!Vb[a])return a;var b=Vb[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Xb)return Wb[a]=b[c];return a}var Zb=Yb(\"animationend\"),$b=Yb(\"animationiteration\"),ac=Yb(\"animationstart\"),bc=Yb(\"transitionend\"),cc=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \");\nfunction ec(a){var b=a,c=a;if(a.alternate)for(;b.return;)b=b.return;else{a=b;do b=a,0!==(b.effectTag&1026)&&(c=b.return),a=b.return;while(a)}return 3===b.tag?c:null}function fc(a){if(13===a.tag){var b=a.memoizedState;null===b&&(a=a.alternate,null!==a&&(b=a.memoizedState));if(null!==b)return b.dehydrated}return null}function gc(a){if(ec(a)!==a)throw Error(u(188));}\nfunction hc(a){var b=a.alternate;if(!b){b=ec(a);if(null===b)throw Error(u(188));return b!==a?null:a}for(var c=a,d=b;;){var e=c.return;if(null===e)break;var f=e.alternate;if(null===f){d=e.return;if(null!==d){c=d;continue}break}if(e.child===f.child){for(f=e.child;f;){if(f===c)return gc(e),a;if(f===d)return gc(e),b;f=f.sibling}throw Error(u(188));}if(c.return!==d.return)c=e,d=f;else{for(var g=!1,h=e.child;h;){if(h===c){g=!0;c=e;d=f;break}if(h===d){g=!0;d=e;c=f;break}h=h.sibling}if(!g){for(h=f.child;h;){if(h===\nc){g=!0;c=f;d=e;break}if(h===d){g=!0;d=f;c=e;break}h=h.sibling}if(!g)throw Error(u(189));}}if(c.alternate!==d)throw Error(u(190));}if(3!==c.tag)throw Error(u(188));return c.stateNode.current===c?a:b}function ic(a){a=hc(a);if(!a)return null;for(var b=a;;){if(5===b.tag||6===b.tag)return b;if(b.child)b.child.return=b,b=b.child;else{if(b===a)break;for(;!b.sibling;){if(!b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}}return null}\nvar jc,kc,lc,mc=!1,nc=[],oc=null,pc=null,qc=null,rc=new Map,sc=new Map,tc=[],uc=\"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput close cancel copy cut paste click change contextmenu reset submit\".split(\" \"),vc=\"focus blur dragenter dragleave mouseover mouseout pointerover pointerout gotpointercapture lostpointercapture\".split(\" \");\nfunction wc(a){var b=xc(a);uc.forEach(function(c){yc(c,a,b)});vc.forEach(function(c){yc(c,a,b)})}function zc(a,b,c,d){return{blockedOn:a,topLevelType:b,eventSystemFlags:c|32,nativeEvent:d}}function Ac(a,b){switch(a){case \"focus\":case \"blur\":oc=null;break;case \"dragenter\":case \"dragleave\":pc=null;break;case \"mouseover\":case \"mouseout\":qc=null;break;case \"pointerover\":case \"pointerout\":rc.delete(b.pointerId);break;case \"gotpointercapture\":case \"lostpointercapture\":sc.delete(b.pointerId)}}\nfunction Bc(a,b,c,d,e){if(null===a||a.nativeEvent!==e)return a=zc(b,c,d,e),null!==b&&(b=Cc(b),null!==b&&kc(b)),a;a.eventSystemFlags|=d;return a}function Dc(a,b,c,d){switch(b){case \"focus\":return oc=Bc(oc,a,b,c,d),!0;case \"dragenter\":return pc=Bc(pc,a,b,c,d),!0;case \"mouseover\":return qc=Bc(qc,a,b,c,d),!0;case \"pointerover\":var e=d.pointerId;rc.set(e,Bc(rc.get(e)||null,a,b,c,d));return!0;case \"gotpointercapture\":return e=d.pointerId,sc.set(e,Bc(sc.get(e)||null,a,b,c,d)),!0}return!1}\nfunction Ec(a){var b=Fc(a.target);if(null!==b){var c=ec(b);if(null!==c)if(b=c.tag,13===b){if(b=fc(c),null!==b){a.blockedOn=b;q.unstable_runWithPriority(a.priority,function(){lc(c)});return}}else if(3===b&&c.stateNode.hydrate){a.blockedOn=3===c.tag?c.stateNode.containerInfo:null;return}}a.blockedOn=null}function Gc(a){if(null!==a.blockedOn)return!1;var b=Hc(a.topLevelType,a.eventSystemFlags,a.nativeEvent);if(null!==b){var c=Cc(b);null!==c&&kc(c);a.blockedOn=b;return!1}return!0}\nfunction Ic(a,b,c){Gc(a)&&c.delete(b)}function Jc(){for(mc=!1;0this.eventPool.length&&this.eventPool.push(a)}function Vc(a){a.eventPool=[];a.getPooled=Wc;a.release=Xc}var Yc=E.extend({animationName:null,elapsedTime:null,pseudoElement:null}),Zc=E.extend({clipboardData:function(a){return\"clipboardData\"in a?a.clipboardData:window.clipboardData}}),$c=E.extend({view:null,detail:null}),ad=$c.extend({relatedTarget:null});\nfunction bd(a){var b=a.keyCode;\"charCode\"in a?(a=a.charCode,0===a&&13===b&&(a=13)):a=b;10===a&&(a=13);return 32<=a||13===a?a:0}\nvar cd={Esc:\"Escape\",Spacebar:\" \",Left:\"ArrowLeft\",Up:\"ArrowUp\",Right:\"ArrowRight\",Down:\"ArrowDown\",Del:\"Delete\",Win:\"OS\",Menu:\"ContextMenu\",Apps:\"ContextMenu\",Scroll:\"ScrollLock\",MozPrintableKey:\"Unidentified\"},dd={8:\"Backspace\",9:\"Tab\",12:\"Clear\",13:\"Enter\",16:\"Shift\",17:\"Control\",18:\"Alt\",19:\"Pause\",20:\"CapsLock\",27:\"Escape\",32:\" \",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"ArrowLeft\",38:\"ArrowUp\",39:\"ArrowRight\",40:\"ArrowDown\",45:\"Insert\",46:\"Delete\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",\n116:\"F5\",117:\"F6\",118:\"F7\",119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"NumLock\",145:\"ScrollLock\",224:\"Meta\"},ed={Alt:\"altKey\",Control:\"ctrlKey\",Meta:\"metaKey\",Shift:\"shiftKey\"};function gd(a){var b=this.nativeEvent;return b.getModifierState?b.getModifierState(a):(a=ed[a])?!!b[a]:!1}function hd(){return gd}\nvar id=$c.extend({key:function(a){if(a.key){var b=cd[a.key]||a.key;if(\"Unidentified\"!==b)return b}return\"keypress\"===a.type?(a=bd(a),13===a?\"Enter\":String.fromCharCode(a)):\"keydown\"===a.type||\"keyup\"===a.type?dd[a.keyCode]||\"Unidentified\":\"\"},location:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,repeat:null,locale:null,getModifierState:hd,charCode:function(a){return\"keypress\"===a.type?bd(a):0},keyCode:function(a){return\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0},which:function(a){return\"keypress\"===\na.type?bd(a):\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0}}),jd=0,kd=0,ld=!1,md=!1,nd=$c.extend({screenX:null,screenY:null,clientX:null,clientY:null,pageX:null,pageY:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,getModifierState:hd,button:null,buttons:null,relatedTarget:function(a){return a.relatedTarget||(a.fromElement===a.srcElement?a.toElement:a.fromElement)},movementX:function(a){if(\"movementX\"in a)return a.movementX;var b=jd;jd=a.screenX;return ld?\"mousemove\"===a.type?a.screenX-\nb:0:(ld=!0,0)},movementY:function(a){if(\"movementY\"in a)return a.movementY;var b=kd;kd=a.screenY;return md?\"mousemove\"===a.type?a.screenY-b:0:(md=!0,0)}}),od=nd.extend({pointerId:null,width:null,height:null,pressure:null,tangentialPressure:null,tiltX:null,tiltY:null,twist:null,pointerType:null,isPrimary:null}),pd=nd.extend({dataTransfer:null}),qd=$c.extend({touches:null,targetTouches:null,changedTouches:null,altKey:null,metaKey:null,ctrlKey:null,shiftKey:null,getModifierState:hd}),rd=E.extend({propertyName:null,\nelapsedTime:null,pseudoElement:null}),sd=nd.extend({deltaX:function(a){return\"deltaX\"in a?a.deltaX:\"wheelDeltaX\"in a?-a.wheelDeltaX:0},deltaY:function(a){return\"deltaY\"in a?a.deltaY:\"wheelDeltaY\"in a?-a.wheelDeltaY:\"wheelDelta\"in a?-a.wheelDelta:0},deltaZ:null,deltaMode:null}),td=[[\"blur\",\"blur\",0],[\"cancel\",\"cancel\",0],[\"click\",\"click\",0],[\"close\",\"close\",0],[\"contextmenu\",\"contextMenu\",0],[\"copy\",\"copy\",0],[\"cut\",\"cut\",0],[\"auxclick\",\"auxClick\",0],[\"dblclick\",\"doubleClick\",0],[\"dragend\",\"dragEnd\",\n0],[\"dragstart\",\"dragStart\",0],[\"drop\",\"drop\",0],[\"focus\",\"focus\",0],[\"input\",\"input\",0],[\"invalid\",\"invalid\",0],[\"keydown\",\"keyDown\",0],[\"keypress\",\"keyPress\",0],[\"keyup\",\"keyUp\",0],[\"mousedown\",\"mouseDown\",0],[\"mouseup\",\"mouseUp\",0],[\"paste\",\"paste\",0],[\"pause\",\"pause\",0],[\"play\",\"play\",0],[\"pointercancel\",\"pointerCancel\",0],[\"pointerdown\",\"pointerDown\",0],[\"pointerup\",\"pointerUp\",0],[\"ratechange\",\"rateChange\",0],[\"reset\",\"reset\",0],[\"seeked\",\"seeked\",0],[\"submit\",\"submit\",0],[\"touchcancel\",\"touchCancel\",\n0],[\"touchend\",\"touchEnd\",0],[\"touchstart\",\"touchStart\",0],[\"volumechange\",\"volumeChange\",0],[\"drag\",\"drag\",1],[\"dragenter\",\"dragEnter\",1],[\"dragexit\",\"dragExit\",1],[\"dragleave\",\"dragLeave\",1],[\"dragover\",\"dragOver\",1],[\"mousemove\",\"mouseMove\",1],[\"mouseout\",\"mouseOut\",1],[\"mouseover\",\"mouseOver\",1],[\"pointermove\",\"pointerMove\",1],[\"pointerout\",\"pointerOut\",1],[\"pointerover\",\"pointerOver\",1],[\"scroll\",\"scroll\",1],[\"toggle\",\"toggle\",1],[\"touchmove\",\"touchMove\",1],[\"wheel\",\"wheel\",1],[\"abort\",\"abort\",\n2],[Zb,\"animationEnd\",2],[$b,\"animationIteration\",2],[ac,\"animationStart\",2],[\"canplay\",\"canPlay\",2],[\"canplaythrough\",\"canPlayThrough\",2],[\"durationchange\",\"durationChange\",2],[\"emptied\",\"emptied\",2],[\"encrypted\",\"encrypted\",2],[\"ended\",\"ended\",2],[\"error\",\"error\",2],[\"gotpointercapture\",\"gotPointerCapture\",2],[\"load\",\"load\",2],[\"loadeddata\",\"loadedData\",2],[\"loadedmetadata\",\"loadedMetadata\",2],[\"loadstart\",\"loadStart\",2],[\"lostpointercapture\",\"lostPointerCapture\",2],[\"playing\",\"playing\",2],[\"progress\",\n\"progress\",2],[\"seeking\",\"seeking\",2],[\"stalled\",\"stalled\",2],[\"suspend\",\"suspend\",2],[\"timeupdate\",\"timeUpdate\",2],[bc,\"transitionEnd\",2],[\"waiting\",\"waiting\",2]],ud={},vd={},wd=0;for(;wd=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=ce(c)}}\nfunction ee(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?ee(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}function fe(){for(var a=window,b=be();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=be(a.document)}return b}\nfunction ge(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}var he=\"$\",ie=\"/$\",je=\"$?\",ke=\"$!\",le=null,me=null;function ne(a,b){switch(a){case \"button\":case \"input\":case \"select\":case \"textarea\":return!!b.autoFocus}return!1}\nfunction oe(a,b){return\"textarea\"===a||\"option\"===a||\"noscript\"===a||\"string\"===typeof b.children||\"number\"===typeof b.children||\"object\"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}var pe=\"function\"===typeof setTimeout?setTimeout:void 0,qe=\"function\"===typeof clearTimeout?clearTimeout:void 0;function re(a){for(;null!=a;a=a.nextSibling){var b=a.nodeType;if(1===b||3===b)break}return a}\nfunction se(a){a=a.previousSibling;for(var b=0;a;){if(8===a.nodeType){var c=a.data;if(c===he||c===ke||c===je){if(0===b)return a;b--}else c===ie&&b++}a=a.previousSibling}return null}var te=Math.random().toString(36).slice(2),ue=\"__reactInternalInstance$\"+te,ve=\"__reactEventHandlers$\"+te,we=\"__reactContainere$\"+te;\nfunction Fc(a){var b=a[ue];if(b)return b;for(var c=a.parentNode;c;){if(b=c[we]||c[ue]){c=b.alternate;if(null!==b.child||null!==c&&null!==c.child)for(a=se(a);null!==a;){if(c=a[ue])return c;a=se(a)}return b}a=c;c=a.parentNode}return null}function Cc(a){a=a[ue]||a[we];return!a||5!==a.tag&&6!==a.tag&&13!==a.tag&&3!==a.tag?null:a}function xe(a){if(5===a.tag||6===a.tag)return a.stateNode;throw Error(u(33));}function ye(a){return a[ve]||null}var ze=null,Ae=null,Be=null;\nfunction Ce(){if(Be)return Be;var a,b=Ae,c=b.length,d,e=\"value\"in ze?ze.value:ze.textContent,f=e.length;for(a=0;a=He),Ke=String.fromCharCode(32),Le={beforeInput:{phasedRegistrationNames:{bubbled:\"onBeforeInput\",captured:\"onBeforeInputCapture\"},dependencies:[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]},compositionEnd:{phasedRegistrationNames:{bubbled:\"onCompositionEnd\",captured:\"onCompositionEndCapture\"},dependencies:\"blur compositionend keydown keypress keyup mousedown\".split(\" \")},compositionStart:{phasedRegistrationNames:{bubbled:\"onCompositionStart\",\ncaptured:\"onCompositionStartCapture\"},dependencies:\"blur compositionstart keydown keypress keyup mousedown\".split(\" \")},compositionUpdate:{phasedRegistrationNames:{bubbled:\"onCompositionUpdate\",captured:\"onCompositionUpdateCapture\"},dependencies:\"blur compositionupdate keydown keypress keyup mousedown\".split(\" \")}},Me=!1;\nfunction Ne(a,b){switch(a){case \"keyup\":return-1!==Fe.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"blur\":return!0;default:return!1}}function Oe(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var Pe=!1;function Qe(a,b){switch(a){case \"compositionend\":return Oe(b);case \"keypress\":if(32!==b.which)return null;Me=!0;return Ke;case \"textInput\":return a=b.data,a===Ke&&Me?null:a;default:return null}}\nfunction Re(a,b){if(Pe)return\"compositionend\"===a||!Ge&&Ne(a,b)?(a=Ce(),Be=Ae=ze=null,Pe=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=document.documentMode,sf={select:{phasedRegistrationNames:{bubbled:\"onSelect\",captured:\"onSelectCapture\"},dependencies:\"blur contextmenu dragend focus keydown keyup mousedown mouseup selectionchange\".split(\" \")}},tf=null,uf=null,vf=null,wf=!1;\nfunction xf(a,b){var c=b.window===b?b.document:9===b.nodeType?b:b.ownerDocument;if(wf||null==tf||tf!==be(c))return null;c=tf;\"selectionStart\"in c&&ge(c)?c={start:c.selectionStart,end:c.selectionEnd}:(c=(c.ownerDocument&&c.ownerDocument.defaultView||window).getSelection(),c={anchorNode:c.anchorNode,anchorOffset:c.anchorOffset,focusNode:c.focusNode,focusOffset:c.focusOffset});return vf&&qf(vf,c)?null:(vf=c,a=E.getPooled(sf.select,uf,a,b),a.type=\"select\",a.target=tf,Sc(a),a)}\nvar yf={eventTypes:sf,extractEvents:function(a,b,c,d){var e=d.window===d?d.document:9===d.nodeType?d:d.ownerDocument,f;if(!(f=!e)){a:{e=xc(e);f=ja.onSelect;for(var g=0;gBf||(a.current=Af[Bf],Af[Bf]=null,Bf--)}\nfunction I(a,b){Bf++;Af[Bf]=a.current;a.current=b}var Cf={},J={current:Cf},K={current:!1},Df=Cf;function Ef(a,b){var c=a.type.contextTypes;if(!c)return Cf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function L(a){a=a.childContextTypes;return null!==a&&void 0!==a}\nfunction Ff(a){G(K,a);G(J,a)}function Gf(a){G(K,a);G(J,a)}function Hf(a,b,c){if(J.current!==Cf)throw Error(u(168));I(J,b,a);I(K,c,a)}function If(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in a))throw Error(u(108,Wa(b)||\"Unknown\",e));return n({},c,{},d)}function Jf(a){var b=a.stateNode;b=b&&b.__reactInternalMemoizedMergedChildContext||Cf;Df=J.current;I(J,b,a);I(K,K.current,a);return!0}\nfunction Kf(a,b,c){var d=a.stateNode;if(!d)throw Error(u(169));c?(b=If(a,b,Df),d.__reactInternalMemoizedMergedChildContext=b,G(K,a),G(J,a),I(J,b,a)):G(K,a);I(K,c,a)}\nvar Lf=q.unstable_runWithPriority,Mf=q.unstable_scheduleCallback,Nf=q.unstable_cancelCallback,Of=q.unstable_shouldYield,Pf=q.unstable_requestPaint,Qf=q.unstable_now,Rf=q.unstable_getCurrentPriorityLevel,Sf=q.unstable_ImmediatePriority,Tf=q.unstable_UserBlockingPriority,Uf=q.unstable_NormalPriority,Vf=q.unstable_LowPriority,Wf=q.unstable_IdlePriority,Xf={},Yf=void 0!==Pf?Pf:function(){},Zf=null,$f=null,ag=!1,bg=Qf(),cg=1E4>bg?Qf:function(){return Qf()-bg};\nfunction dg(){switch(Rf()){case Sf:return 99;case Tf:return 98;case Uf:return 97;case Vf:return 96;case Wf:return 95;default:throw Error(u(332));}}function eg(a){switch(a){case 99:return Sf;case 98:return Tf;case 97:return Uf;case 96:return Vf;case 95:return Wf;default:throw Error(u(332));}}function fg(a,b){a=eg(a);return Lf(a,b)}function gg(a,b,c){a=eg(a);return Mf(a,b,c)}function hg(a){null===Zf?(Zf=[a],$f=Mf(Sf,ig)):Zf.push(a);return Xf}function jg(){if(null!==$f){var a=$f;$f=null;Nf(a)}ig()}\nfunction ig(){if(!ag&&null!==Zf){ag=!0;var a=0;try{var b=Zf;fg(99,function(){for(;a=b&&(wg=!0),a.firstContext=null)}function xg(a,b){if(qg!==a&&!1!==b&&0!==b){if(\"number\"!==typeof b||1073741823===b)qg=a,b=1073741823;b={context:a,observedBits:b,next:null};if(null===pg){if(null===og)throw Error(u(308));pg=b;og.dependencies={expirationTime:0,firstContext:b,responders:null}}else pg=pg.next=b}return a._currentValue}var yg=!1;\nfunction zg(a){return{baseState:a,firstUpdate:null,lastUpdate:null,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}function Ag(a){return{baseState:a.baseState,firstUpdate:a.firstUpdate,lastUpdate:a.lastUpdate,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}\nfunction Bg(a,b){return{expirationTime:a,suspenseConfig:b,tag:0,payload:null,callback:null,next:null,nextEffect:null}}function Cg(a,b){null===a.lastUpdate?a.firstUpdate=a.lastUpdate=b:(a.lastUpdate.next=b,a.lastUpdate=b)}\nfunction Dg(a,b){var c=a.alternate;if(null===c){var d=a.updateQueue;var e=null;null===d&&(d=a.updateQueue=zg(a.memoizedState))}else d=a.updateQueue,e=c.updateQueue,null===d?null===e?(d=a.updateQueue=zg(a.memoizedState),e=c.updateQueue=zg(c.memoizedState)):d=a.updateQueue=Ag(e):null===e&&(e=c.updateQueue=Ag(d));null===e||d===e?Cg(d,b):null===d.lastUpdate||null===e.lastUpdate?(Cg(d,b),Cg(e,b)):(Cg(d,b),e.lastUpdate=b)}\nfunction Eg(a,b){var c=a.updateQueue;c=null===c?a.updateQueue=zg(a.memoizedState):Fg(a,c);null===c.lastCapturedUpdate?c.firstCapturedUpdate=c.lastCapturedUpdate=b:(c.lastCapturedUpdate.next=b,c.lastCapturedUpdate=b)}function Fg(a,b){var c=a.alternate;null!==c&&b===c.updateQueue&&(b=a.updateQueue=Ag(b));return b}\nfunction Gg(a,b,c,d,e,f){switch(c.tag){case 1:return a=c.payload,\"function\"===typeof a?a.call(f,d,e):a;case 3:a.effectTag=a.effectTag&-4097|64;case 0:a=c.payload;e=\"function\"===typeof a?a.call(f,d,e):a;if(null===e||void 0===e)break;return n({},d,e);case 2:yg=!0}return d}\nfunction Hg(a,b,c,d,e){yg=!1;b=Fg(a,b);for(var f=b.baseState,g=null,h=0,k=b.firstUpdate,l=f;null!==k;){var m=k.expirationTime;mx?(A=r,r=null):A=r.sibling;var p=y(e,r,h[x],k);if(null===p){null===r&&(r=A);break}a&&\nr&&null===p.alternate&&b(e,r);g=f(p,g,x);null===m?l=p:m.sibling=p;m=p;r=A}if(x===h.length)return c(e,r),l;if(null===r){for(;xx?(A=r,r=null):A=r.sibling;var z=y(e,r,p.value,k);if(null===z){null===r&&(r=A);break}a&&r&&null===z.alternate&&b(e,r);g=f(z,g,x);null===m?l=z:m.sibling=z;m=z;r=A}if(p.done)return c(e,r),l;if(null===r){for(;!p.done;x++,p=h.next())p=C(e,p.value,k),null!==p&&(g=f(p,g,x),null===m?l=p:m.sibling=p,m=p);return l}for(r=d(e,r);!p.done;x++,p=h.next())p=H(r,e,x,p.value,k),null!==p&&(a&&null!==\np.alternate&&r.delete(null===p.key?x:p.key),g=f(p,g,x),null===m?l=p:m.sibling=p,m=p);a&&r.forEach(function(a){return b(e,a)});return l}return function(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===Ia&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case Ga:a:{l=f.key;for(k=d;null!==k;){if(k.key===l)if(7===k.tag?f.type===Ia:k.elementType===f.type){c(a,k.sibling);d=e(k,f.type===Ia?f.props.children:f.props,h);d.ref=Yg(a,k,f);d.return=a;a=d;break a}else{c(a,\nk);break}else b(a,k);k=k.sibling}f.type===Ia?(d=eh(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=ch(f.type,f.key,f.props,null,a.mode,h),h.ref=Yg(a,d,f),h.return=a,a=h)}return g(a);case Ha:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[],h);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=dh(f,a.mode,h);d.return=a;a=d}return g(a)}if(\"string\"===\ntypeof f||\"number\"===typeof f)return f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f,h),d.return=a,a=d):(c(a,d),d=bh(f,a.mode,h),d.return=a,a=d),g(a);if(Xg(f))return z(a,d,f,h);if(Ua(f))return ta(a,d,f,h);l&&Zg(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 0:throw a=a.type,Error(u(152,a.displayName||a.name||\"Component\"));}return c(a,d)}}var fh=$g(!0),gh=$g(!1),hh={},ih={current:hh},jh={current:hh},kh={current:hh};function lh(a){if(a===hh)throw Error(u(174));return a}\nfunction mh(a,b){I(kh,b,a);I(jh,a,a);I(ih,hh,a);var c=b.nodeType;switch(c){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:Qb(null,\"\");break;default:c=8===c?b.parentNode:b,b=c.namespaceURI||null,c=c.tagName,b=Qb(b,c)}G(ih,a);I(ih,b,a)}function nh(a){G(ih,a);G(jh,a);G(kh,a)}function oh(a){lh(kh.current);var b=lh(ih.current);var c=Qb(b,a.type);b!==c&&(I(jh,a,a),I(ih,c,a))}function ph(a){jh.current===a&&(G(ih,a),G(jh,a))}var M={current:0};\nfunction qh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||c.data===je||c.data===ke))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.effectTag&64))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}function rh(a,b){return{responder:a,props:b}}\nvar sh=Ea.ReactCurrentDispatcher,N=Ea.ReactCurrentBatchConfig,th=0,uh=null,O=null,vh=null,wh=null,P=null,xh=null,yh=0,zh=null,Ah=0,Bh=!1,Ch=null,Gh=0;function Q(){throw Error(u(321));}function Hh(a,b){if(null===b)return!1;for(var c=0;cyh&&(yh=m,Jg(yh))):(Ig(m,k.suspenseConfig),f=k.eagerReducer===a?k.eagerState:a(f,k.action));g=k;k=k.next}while(null!==k&&k!==d);l||(h=g,e=f);of(f,b.memoizedState)||(wg=!0);b.memoizedState=f;b.baseUpdate=h;b.baseState=e;c.lastRenderedState=f}return[b.memoizedState,c.dispatch]}\nfunction Rh(a){var b=Nh();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a=b.queue={last:null,dispatch:null,lastRenderedReducer:Ph,lastRenderedState:a};a=a.dispatch=Sh.bind(null,uh,a);return[b.memoizedState,a]}function Th(a){return Qh(Ph,a)}function Uh(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};null===zh?(zh={lastEffect:null},zh.lastEffect=a.next=a):(b=zh.lastEffect,null===b?zh.lastEffect=a.next=a:(c=b.next,b.next=a,a.next=c,zh.lastEffect=a));return a}\nfunction Vh(a,b,c,d){var e=Nh();Ah|=a;e.memoizedState=Uh(b,c,void 0,void 0===d?null:d)}function Wh(a,b,c,d){var e=Oh();d=void 0===d?null:d;var f=void 0;if(null!==O){var g=O.memoizedState;f=g.destroy;if(null!==d&&Hh(d,g.deps)){Uh(0,c,f,d);return}}Ah|=a;e.memoizedState=Uh(b,c,f,d)}function Xh(a,b){return Vh(516,192,a,b)}function Yh(a,b){return Wh(516,192,a,b)}\nfunction Zh(a,b){if(\"function\"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}function $h(){}function ai(a,b){Nh().memoizedState=[a,void 0===b?null:b];return a}function bi(a,b){var c=Oh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Hh(b,d[1]))return d[0];c.memoizedState=[a,b];return a}\nfunction Sh(a,b,c){if(!(25>Gh))throw Error(u(301));var d=a.alternate;if(a===uh||null!==d&&d===uh)if(Bh=!0,a={expirationTime:th,suspenseConfig:null,action:c,eagerReducer:null,eagerState:null,next:null},null===Ch&&(Ch=new Map),c=Ch.get(b),void 0===c)Ch.set(b,a);else{for(b=c;null!==b.next;)b=b.next;b.next=a}else{var e=Pg(),f=Mg.suspense;e=Qg(e,a,f);f={expirationTime:e,suspenseConfig:f,action:c,eagerReducer:null,eagerState:null,next:null};var g=b.last;if(null===g)f.next=f;else{var h=g.next;null!==h&&\n(f.next=h);g.next=f}b.last=f;if(0===a.expirationTime&&(null===d||0===d.expirationTime)&&(d=b.lastRenderedReducer,null!==d))try{var k=b.lastRenderedState,l=d(k,c);f.eagerReducer=d;f.eagerState=l;if(of(l,k))return}catch(m){}finally{}Rg(a,e)}}\nvar Lh={readContext:xg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useResponder:Q,useDeferredValue:Q,useTransition:Q},Jh={readContext:xg,useCallback:ai,useContext:xg,useEffect:Xh,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Vh(4,36,Zh.bind(null,b,a),c)},useLayoutEffect:function(a,b){return Vh(4,36,a,b)},useMemo:function(a,b){var c=Nh();b=void 0===b?null:b;a=a();c.memoizedState=\n[a,b];return a},useReducer:function(a,b,c){var d=Nh();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a=d.queue={last:null,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};a=a.dispatch=Sh.bind(null,uh,a);return[d.memoizedState,a]},useRef:function(a){var b=Nh();a={current:a};return b.memoizedState=a},useState:Rh,useDebugValue:$h,useResponder:rh,useDeferredValue:function(a,b){var c=Rh(a),d=c[0],e=c[1];Xh(function(){q.unstable_next(function(){var c=N.suspense;N.suspense=void 0===b?null:b;try{e(a)}finally{N.suspense=\nc}})},[a,b]);return d},useTransition:function(a){var b=Rh(!1),c=b[0],d=b[1];return[ai(function(b){d(!0);q.unstable_next(function(){var c=N.suspense;N.suspense=void 0===a?null:a;try{d(!1),b()}finally{N.suspense=c}})},[a,c]),c]}},Kh={readContext:xg,useCallback:bi,useContext:xg,useEffect:Yh,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Wh(4,36,Zh.bind(null,b,a),c)},useLayoutEffect:function(a,b){return Wh(4,36,a,b)},useMemo:function(a,b){var c=Oh();b=void 0===b?\nnull:b;var d=c.memoizedState;if(null!==d&&null!==b&&Hh(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a},useReducer:Qh,useRef:function(){return Oh().memoizedState},useState:Th,useDebugValue:$h,useResponder:rh,useDeferredValue:function(a,b){var c=Th(a),d=c[0],e=c[1];Yh(function(){q.unstable_next(function(){var c=N.suspense;N.suspense=void 0===b?null:b;try{e(a)}finally{N.suspense=c}})},[a,b]);return d},useTransition:function(a){var b=Th(!1),c=b[0],d=b[1];return[bi(function(b){d(!0);q.unstable_next(function(){var c=\nN.suspense;N.suspense=void 0===a?null:a;try{d(!1),b()}finally{N.suspense=c}})},[a,c]),c]}},ci=null,di=null,ei=!1;function fi(a,b){var c=gi(5,null,null,0);c.elementType=\"DELETED\";c.type=\"DELETED\";c.stateNode=b;c.return=a;c.effectTag=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}\nfunction hi(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}\nfunction ii(a){if(ei){var b=di;if(b){var c=b;if(!hi(a,b)){b=re(c.nextSibling);if(!b||!hi(a,b)){a.effectTag=a.effectTag&-1025|2;ei=!1;ci=a;return}fi(ci,c)}ci=a;di=re(b.firstChild)}else a.effectTag=a.effectTag&-1025|2,ei=!1,ci=a}}function ji(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;ci=a}\nfunction ki(a){if(a!==ci)return!1;if(!ei)return ji(a),ei=!0,!1;var b=a.type;if(5!==a.tag||\"head\"!==b&&\"body\"!==b&&!oe(b,a.memoizedProps))for(b=di;b;)fi(a,b),b=re(b.nextSibling);ji(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(u(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(c===ie){if(0===b){di=re(a.nextSibling);break a}b--}else c!==he&&c!==ke&&c!==je||b++}a=a.nextSibling}di=null}}else di=ci?re(a.stateNode.nextSibling):null;return!0}\nfunction li(){di=ci=null;ei=!1}var mi=Ea.ReactCurrentOwner,wg=!1;function R(a,b,c,d){b.child=null===a?gh(b,null,c,d):fh(b,a.child,c,d)}function ni(a,b,c,d,e){c=c.render;var f=b.ref;vg(b,e);d=Ih(a,b,c,d,f,e);if(null!==a&&!wg)return b.updateQueue=a.updateQueue,b.effectTag&=-517,a.expirationTime<=e&&(a.expirationTime=0),oi(a,b,e);b.effectTag|=1;R(a,b,d,e);return b.child}\nfunction pi(a,b,c,d,e,f){if(null===a){var g=c.type;if(\"function\"===typeof g&&!qi(g)&&void 0===g.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=g,ri(a,b,g,d,e,f);a=ch(c.type,null,d,null,b.mode,f);a.ref=b.ref;a.return=b;return b.child=a}g=a.child;if(eb)&&Gj.set(a,b)))}}\nfunction Kj(a,b){a.expirationTimea?b:a}\nfunction Z(a){if(0!==a.lastExpiredTime)a.callbackExpirationTime=1073741823,a.callbackPriority=99,a.callbackNode=hg(Lj.bind(null,a));else{var b=Oj(a),c=a.callbackNode;if(0===b)null!==c&&(a.callbackNode=null,a.callbackExpirationTime=0,a.callbackPriority=90);else{var d=Pg();1073741823===b?d=99:1===b||2===b?d=95:(d=10*(1073741821-b)-10*(1073741821-d),d=0>=d?99:250>=d?98:5250>=d?97:95);if(null!==c){var e=a.callbackPriority;if(a.callbackExpirationTime===b&&e>=d)return;c!==Xf&&Nf(c)}a.callbackExpirationTime=\nb;a.callbackPriority=d;b=1073741823===b?hg(Lj.bind(null,a)):gg(d,Qj.bind(null,a),{timeout:10*(1073741821-b)-cg()});a.callbackNode=b}}}\nfunction Qj(a,b){Jj=0;if(b)return b=Pg(),Rj(a,b),Z(a),null;var c=Oj(a);if(0!==c){b=a.callbackNode;if((T&(oj|pj))!==S)throw Error(u(327));Sj();a===U&&c===W||Tj(a,c);if(null!==V){var d=T;T|=oj;var e=Uj(a);do try{Vj();break}catch(h){Wj(a,h)}while(1);rg();T=d;lj.current=e;if(X===rj)throw b=wj,Tj(a,c),Mj(a,c),Z(a),b;if(null===V)switch(e=a.finishedWork=a.current.alternate,a.finishedExpirationTime=c,d=X,U=null,d){case qj:case rj:throw Error(u(345));case sj:Rj(a,2=c){a.lastPingedTime=c;Tj(a,c);break}}f=Oj(a);if(0!==f&&f!==c)break;if(0!==d&&d!==c){a.lastPingedTime=d;break}a.timeoutHandle=pe(Yj.bind(null,a),e);break}Yj(a);break;case uj:Mj(a,c);d=a.lastSuspendedTime;c===d&&(a.nextKnownPendingLevel=Xj(e));if(Bj&&(e=a.lastPingedTime,0===e||e>=c)){a.lastPingedTime=c;Tj(a,c);break}e=Oj(a);if(0!==e&&e!==c)break;if(0!==d&&d!==c){a.lastPingedTime=\nd;break}1073741823!==yj?d=10*(1073741821-yj)-cg():1073741823===xj?d=0:(d=10*(1073741821-xj)-5E3,e=cg(),c=10*(1073741821-c)-e,d=e-d,0>d&&(d=0),d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*kj(d/1960))-d,c=d?d=0:(e=g.busyDelayMs|0,f=cg()-(10*(1073741821-f)-(g.timeoutMs|0||5E3)),d=f<=e?0:e+d-f);if(10 component higher in the tree to provide a loading indicator or placeholder to display.\"+Xa(e))}X!==vj&&(X=sj);f=Ni(f,e);k=d;do{switch(k.tag){case 3:g=f;k.effectTag|=4096;k.expirationTime=b;var x=fj(k,g,b);Eg(k,x);break a;case 1:g=f;var A=k.type,p=k.stateNode;if(0===(k.effectTag&64)&&(\"function\"===typeof A.getDerivedStateFromError||null!==p&&\"function\"===typeof p.componentDidCatch&&\n(null===jj||!jj.has(p)))){k.effectTag|=4096;k.expirationTime=b;var t=ij(k,g,b);Eg(k,t);break a}}k=k.return}while(null!==k)}V=ek(V)}catch(v){b=v;continue}break}while(1)}function Uj(){var a=lj.current;lj.current=Lh;return null===a?Lh:a}function Ig(a,b){aAj&&(Aj=a)}function Zj(){for(;null!==V;)V=fk(V)}function Vj(){for(;null!==V&&!Of();)V=fk(V)}\nfunction fk(a){var b=gk(a.alternate,a,W);a.memoizedProps=a.pendingProps;null===b&&(b=ek(a));mj.current=null;return b}\nfunction ek(a){V=a;do{var b=V.alternate;a=V.return;if(0===(V.effectTag&2048)){a:{var c=b;b=V;var d=W;var e=b.pendingProps;switch(b.tag){case 2:break;case 16:break;case 15:case 0:break;case 1:L(b.type)&&Ff(b);break;case 3:nh(b);Gf(b);e=b.stateNode;e.pendingContext&&(e.context=e.pendingContext,e.pendingContext=null);(null===c||null===c.child)&&ki(b)&&Ci(b);Ii(b);break;case 5:ph(b);d=lh(kh.current);var f=b.type;if(null!==c&&null!=b.stateNode)Ji(c,b,f,e,d),c.ref!==b.ref&&(b.effectTag|=128);else if(e){var g=\nlh(ih.current);if(ki(b)){e=b;var h=e.stateNode;c=e.type;var k=e.memoizedProps,l=d;h[ue]=e;h[ve]=k;f=void 0;d=h;switch(c){case \"iframe\":case \"object\":case \"embed\":F(\"load\",d);break;case \"video\":case \"audio\":for(h=0;h\\x3c/script>\",h=k.removeChild(k.firstChild)):\"string\"===typeof k.is?h=h.createElement(l,{is:k.is}):(h=h.createElement(l),\"select\"===l&&(l=h,k.multiple?l.multiple=!0:k.size&&(l.size=k.size))):h=h.createElementNS(g,l);k=h;k[ue]=c;k[ve]=e;Hi(k,b,!1,!1);b.stateNode=k;l=f;c=e;var m=d,C=Zd(l,c);switch(l){case \"iframe\":case \"object\":case \"embed\":F(\"load\",\nk);d=c;break;case \"video\":case \"audio\":for(d=0;de.tailExpiration&&1f&&(f=c),k>f&&(f=k),d=d.sibling;e.childExpirationTime=f}if(null!==b)return b;null!==a&&0===(a.effectTag&2048)&&(null===a.firstEffect&&(a.firstEffect=V.firstEffect),null!==V.lastEffect&&(null!==a.lastEffect&&(a.lastEffect.nextEffect=\nV.firstEffect),a.lastEffect=V.lastEffect),1a?b:a}function Yj(a){var b=dg();fg(99,ik.bind(null,a,b));return null}\nfunction ik(a,b){do Sj();while(null!==Ej);if((T&(oj|pj))!==S)throw Error(u(327));var c=a.finishedWork,d=a.finishedExpirationTime;if(null===c)return null;a.finishedWork=null;a.finishedExpirationTime=0;if(c===a.current)throw Error(u(177));a.callbackNode=null;a.callbackExpirationTime=0;a.callbackPriority=90;a.nextKnownPendingLevel=0;var e=Xj(c);a.firstPendingTime=e;d<=a.lastSuspendedTime?a.firstSuspendedTime=a.lastSuspendedTime=a.nextKnownPendingLevel=0:d<=a.firstSuspendedTime&&(a.firstSuspendedTime=\nd-1);d<=a.lastPingedTime&&(a.lastPingedTime=0);d<=a.lastExpiredTime&&(a.lastExpiredTime=0);a===U&&(V=U=null,W=0);1h&&(l=h,h=g,g=l),l=de(p,g),m=de(p,h),l&&m&&(1!==v.rangeCount||v.anchorNode!==l.node||v.anchorOffset!==l.offset||v.focusNode!==m.node||v.focusOffset!==m.offset)&&(t=t.createRange(),t.setStart(l.node,l.offset),v.removeAllRanges(),g>h?(v.addRange(t),v.extend(m.node,m.offset)):(t.setEnd(m.node,m.offset),v.addRange(t))))));t=[];for(v=p;v=v.parentNode;)1===v.nodeType&&t.push({element:v,left:v.scrollLeft,top:v.scrollTop});\n\"function\"===typeof p.focus&&p.focus();for(p=0;p=c)return yi(a,b,c);I(M,M.current&\n1,b);b=oi(a,b,c);return null!==b?b.sibling:null}I(M,M.current&1,b);break;case 19:d=b.childExpirationTime>=c;if(0!==(a.effectTag&64)){if(d)return Bi(a,b,c);b.effectTag|=64}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null);I(M,M.current,b);if(!d)return null}return oi(a,b,c)}wg=!1}}else wg=!1;b.expirationTime=0;switch(b.tag){case 2:d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2);a=b.pendingProps;e=Ef(b,J.current);vg(b,c);e=Ih(null,b,d,a,e,c);b.effectTag|=1;if(\"object\"===\ntypeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;Mh();if(L(d)){var f=!0;Jf(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;var g=d.getDerivedStateFromProps;\"function\"===typeof g&&Og(b,d,g,a);e.updater=Sg;b.stateNode=e;e._reactInternalFiber=b;Wg(b,d,a,c);b=vi(null,b,d,!0,f,c)}else b.tag=0,R(null,b,e,c),b=b.child;return b;case 16:e=b.elementType;null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2);a=b.pendingProps;Va(e);if(1!==e._status)throw e._result;\ne=e._result;b.type=e;f=b.tag=nk(e);a=mg(e,a);switch(f){case 0:b=si(null,b,e,a,c);break;case 1:b=ui(null,b,e,a,c);break;case 11:b=ni(null,b,e,a,c);break;case 14:b=pi(null,b,e,mg(e.type,a),d,c);break;default:throw Error(u(306,e,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:mg(d,e),si(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:mg(d,e),ui(a,b,d,e,c);case 3:wi(b);d=b.updateQueue;if(null===d)throw Error(u(282));e=b.memoizedState;e=null!==e?e.element:\nnull;Hg(b,d,b.pendingProps,null,c);d=b.memoizedState.element;if(d===e)li(),b=oi(a,b,c);else{if(e=b.stateNode.hydrate)di=re(b.stateNode.containerInfo.firstChild),ci=b,e=ei=!0;if(e)for(c=gh(b,null,d,c),b.child=c;c;)c.effectTag=c.effectTag&-3|1024,c=c.sibling;else R(a,b,d,c),li();b=b.child}return b;case 5:return oh(b),null===a&&ii(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,oe(d,e)?g=null:null!==f&&oe(d,f)&&(b.effectTag|=16),ti(a,b),b.mode&4&&1!==c&&e.hidden?(b.expirationTime=\nb.childExpirationTime=1,b=null):(R(a,b,g,c),b=b.child),b;case 6:return null===a&&ii(b),null;case 13:return yi(a,b,c);case 4:return mh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=fh(b,null,d,c):R(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:mg(d,e),ni(a,b,d,e,c);case 7:return R(a,b,b.pendingProps,c),b.child;case 8:return R(a,b,b.pendingProps.children,c),b.child;case 12:return R(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;\ne=b.pendingProps;g=b.memoizedProps;f=e.value;sg(b,f);if(null!==g){var h=g.value;f=of(h,f)?0:(\"function\"===typeof d._calculateChangedBits?d._calculateChangedBits(h,f):1073741823)|0;if(0===f){if(g.children===e.children&&!K.current){b=oi(a,b,c);break a}}else for(h=b.child,null!==h&&(h.return=b);null!==h;){var k=h.dependencies;if(null!==k){g=h.child;for(var l=k.firstContext;null!==l;){if(l.context===d&&0!==(l.observedBits&f)){1===h.tag&&(l=Bg(c,null),l.tag=2,Dg(h,l));h.expirationTime=b&&a<=b}function Mj(a,b){var c=a.firstSuspendedTime,d=a.lastSuspendedTime;cb||0===c)a.lastSuspendedTime=b;b<=a.lastPingedTime&&(a.lastPingedTime=0);b<=a.lastExpiredTime&&(a.lastExpiredTime=0)}\nfunction Nj(a,b){b>a.firstPendingTime&&(a.firstPendingTime=b);var c=a.firstSuspendedTime;0!==c&&(b>=c?a.firstSuspendedTime=a.lastSuspendedTime=a.nextKnownPendingLevel=0:b>=a.lastSuspendedTime&&(a.lastSuspendedTime=b+1),b>a.nextKnownPendingLevel&&(a.nextKnownPendingLevel=b))}function Rj(a,b){var c=a.lastExpiredTime;if(0===c||c>b)a.lastExpiredTime=b}\nfunction rk(a,b,c,d){var e=b.current,f=Pg(),g=Mg.suspense;f=Qg(f,e,g);a:if(c){c=c._reactInternalFiber;b:{if(ec(c)!==c||1!==c.tag)throw Error(u(170));var h=c;do{switch(h.tag){case 3:h=h.stateNode.context;break b;case 1:if(L(h.type)){h=h.stateNode.__reactInternalMemoizedMergedChildContext;break b}}h=h.return}while(null!==h);throw Error(u(171));}if(1===c.tag){var k=c.type;if(L(k)){c=If(c,k,h);break a}}c=h}else c=Cf;null===b.context?b.context=c:b.pendingContext=c;b=Bg(f,g);b.payload={element:a};d=void 0===\nd?null:d;null!==d&&(b.callback=d);Dg(e,b);Rg(e,f);return f}function sk(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function tk(a,b){a=a.memoizedState;null!==a&&null!==a.dehydrated&&a.retryTime=G};l=function(){};exports.unstable_forceFrameRate=function(a){0>a||125K(n,c))void 0!==r&&0>K(r,n)?(a[d]=r,a[v]=c,d=v):(a[d]=n,a[m]=c,d=m);else if(void 0!==r&&0>K(r,c))a[d]=r,a[v]=c,d=v;else break a}}return b}return null}function K(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var N=[],O=[],P=1,Q=null,R=3,S=!1,T=!1,U=!1;\nfunction V(a){for(var b=L(O);null!==b;){if(null===b.callback)M(O);else if(b.startTime<=a)M(O),b.sortIndex=b.expirationTime,J(N,b);else break;b=L(O)}}function W(a){U=!1;V(a);if(!T)if(null!==L(N))T=!0,f(X);else{var b=L(O);null!==b&&g(W,b.startTime-a)}}\nfunction X(a,b){T=!1;U&&(U=!1,h());S=!0;var c=R;try{V(b);for(Q=L(N);null!==Q&&(!(Q.expirationTime>b)||a&&!k());){var d=Q.callback;if(null!==d){Q.callback=null;R=Q.priorityLevel;var e=d(Q.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?Q.callback=e:Q===L(N)&&M(N);V(b)}else M(N);Q=L(N)}if(null!==Q)var m=!0;else{var n=L(O);null!==n&&g(W,n.startTime-b);m=!1}return m}finally{Q=null,R=c,S=!1}}\nfunction Y(a){switch(a){case 1:return-1;case 2:return 250;case 5:return 1073741823;case 4:return 1E4;default:return 5E3}}var Z=l;exports.unstable_ImmediatePriority=1;exports.unstable_UserBlockingPriority=2;exports.unstable_NormalPriority=3;exports.unstable_IdlePriority=5;exports.unstable_LowPriority=4;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=R;R=a;try{return b()}finally{R=c}};\nexports.unstable_next=function(a){switch(R){case 1:case 2:case 3:var b=3;break;default:b=R}var c=R;R=b;try{return a()}finally{R=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();if(\"object\"===typeof c&&null!==c){var e=c.delay;e=\"number\"===typeof e&&0d?(a.sortIndex=e,J(O,a),null===L(N)&&a===L(O)&&(U?h():U=!0,g(W,e-d))):(a.sortIndex=c,J(N,a),T||S||(T=!0,f(X)));return a};exports.unstable_cancelCallback=function(a){a.callback=null};\nexports.unstable_wrapCallback=function(a){var b=R;return function(){var c=R;R=b;try{return a.apply(this,arguments)}finally{R=c}}};exports.unstable_getCurrentPriorityLevel=function(){return R};exports.unstable_shouldYield=function(){var a=exports.unstable_now();V(a);var b=L(N);return b!==Q&&null!==Q&&null!==b&&null!==b.callback&&b.startTime<=a&&b.expirationTime 0 && arguments[0] !== undefined ? arguments[0] : {};\n var defaultState = arguments.length > 1 ? arguments[1] : undefined;\n var opts = {\n payload: true,\n fallback: null\n };\n\n var reducer = _extends(reduce, {\n has: has,\n on: on,\n off: off,\n options: options\n });\n\n function has(typeOrActionCreator) {\n return !!handlers[normalizeType(typeOrActionCreator)];\n }\n\n function on(typeOrActionCreator, handler) {\n if (Array.isArray(typeOrActionCreator)) {\n typeOrActionCreator.forEach(function (action) {\n on(action, handler);\n });\n } else {\n handlers[normalizeType(typeOrActionCreator)] = handler;\n }\n\n return reducer;\n }\n\n function off(typeOrActionCreator) {\n if (Array.isArray(typeOrActionCreator)) {\n typeOrActionCreator.forEach(off);\n } else {\n delete handlers[normalizeType(typeOrActionCreator)];\n }\n\n return reducer;\n }\n\n function options(newOpts) {\n Object.keys(newOpts).forEach(function (name) {\n return opts[name] = newOpts[name];\n });\n return reducer;\n }\n\n if (typeof handlers === 'function') {\n var factory = handlers;\n handlers = {};\n factory(on, off);\n }\n\n if (!has(_batch[\"default\"])) {\n on(_batch[\"default\"], function (state, payload) {\n if (opts.payload) {\n return payload.reduce(reduce, state);\n } else {\n return payload.payload.reduce(reduce, state);\n }\n });\n }\n\n function reduce() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultState;\n var action = arguments.length > 1 ? arguments[1] : undefined;\n\n if (!action || typeof action.type !== 'string') {\n return state;\n }\n\n if (action.type.startsWith('@@redux/')) {\n return state;\n }\n\n var handler = handlers[action.type] || opts.fallback;\n\n if (handler) {\n if (opts.payload) {\n return handler(state, action.payload, action.meta);\n } else {\n return handler(state, action);\n }\n }\n\n return state;\n }\n\n ;\n return reducer;\n}\n\n;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = assignAll;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction assignAll(actions, stores) {\n if (Array.isArray(actions)) {\n return actions.map(function (action) {\n return action.assignTo(stores);\n });\n }\n\n return Object.keys(actions).reduce(function (assigns, action) {\n return _extends(assigns, _defineProperty({}, action, actions[action].assignTo(stores)));\n }, {});\n}\n\n;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = bindAll;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction bindAll(actions, stores) {\n if (Array.isArray(actions)) {\n return actions.map(function (action) {\n return action.bindTo(stores);\n });\n }\n\n return Object.keys(actions).reduce(function (binds, action) {\n return _extends(binds, _defineProperty({}, action, actions[action].bindTo(stores)));\n }, {});\n}\n\n;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = disbatch;\n\nvar _batch = _interopRequireDefault(require(\"./batch\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction disbatch(store) {\n for (var _len = arguments.length, actions = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n actions[_key - 1] = arguments[_key];\n }\n\n if (actions && actions.length > 0) {\n if (!store || typeof store !== 'function' && typeof store.dispatch !== 'function') {\n throw new TypeError('disbatch must take either a valid Redux store or a dispatch function as first parameter');\n }\n\n if (typeof store.dispatch === 'function') {\n store = store.dispatch;\n } // store is actually the dispatch function here\n\n\n return store(_batch[\"default\"].apply(void 0, actions));\n } else {\n if (!store || typeof store.dispatch !== 'function') {\n throw new TypeError('disbatch must take a valid Redux store with a dispatch function as first parameter');\n }\n\n return _extends(store, {\n disbatch: disbatch.bind(undefined, store)\n });\n }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar reduxLogger = _interopRequireWildcard(require(\"./reduxLogger\"));\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj[\"default\"] = obj; return newObj; } }\n\nvar _default = {\n reduxLogger: reduxLogger\n};\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.actionTransformer = actionTransformer;\nexports.logger = void 0;\n\nvar _batch = _interopRequireDefault(require(\"../batch\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar batchType = _batch[\"default\"].getType();\n\nfunction actionTransformer(action) {\n if (action && action.type === batchType) {\n action.payload.type = batchType;\n return action.payload;\n }\n\n return action;\n}\n\nvar logger = {};\nexports.logger = logger;\n\nvar _loop = function _loop(level) {\n if (typeof console[level] === 'function') {\n logger[level] = function levelFn() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var lastArg = args.pop();\n\n if (Array.isArray(lastArg) && lastArg.type === batchType) {\n lastArg.forEach(function (action) {\n console[level].apply(console, [].concat(args, [action]));\n });\n } else {\n args.push(lastArg);\n console[level].apply(console, args);\n }\n };\n }\n};\n\nfor (var level in console) {\n _loop(level);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = asError;\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction asError(action) {\n if (_typeof(action) === 'object' && action !== null) {\n action.error = true;\n }\n\n return action;\n}\n\n;","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(mergeConfig(axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean, '1.0.0'),\n forcedJSONParsing: validators.transitional(validators.boolean, '1.0.0'),\n clarifyTimeoutError: validators.transitional(validators.boolean, '1.0.0')\n }, false);\n }\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('./../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar pkg = require('./../../package.json');\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\nvar currentVerArr = pkg.version.split('.');\n\n/**\n * Compare package versions\n * @param {string} version\n * @param {string?} thanVersion\n * @returns {boolean}\n */\nfunction isOlderVersion(version, thanVersion) {\n var pkgVersionArr = thanVersion ? thanVersion.split('.') : currentVerArr;\n var destVer = version.split('.');\n for (var i = 0; i < 3; i++) {\n if (pkgVersionArr[i] > destVer[i]) {\n return true;\n } else if (pkgVersionArr[i] < destVer[i]) {\n return false;\n }\n }\n return false;\n}\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator\n * @param {string?} version\n * @param {string} message\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n var isDeprecated = version && isOlderVersion(version);\n\n function formatMessage(opt, desc) {\n return '[Axios v' + pkg.version + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return function(value, opt, opts) {\n if (validator === false) {\n throw new Error(formatMessage(opt, ' has been removed in ' + version));\n }\n\n if (isDeprecated && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new TypeError('option ' + opt + ' must be ' + result);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw Error('Unknown option ' + opt);\n }\n }\n}\n\nmodule.exports = {\n isOlderVersion: isOlderVersion,\n assertOptions: assertOptions,\n validators: validators\n};\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return (typeof payload === 'object') && (payload.isAxiosError === true);\n};\n","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nfunction last() {\n var _ref;\n\n return _ref = arguments.length - 1, _ref < 0 || arguments.length <= _ref ? undefined : arguments[_ref];\n}\n\nfunction negation(a) {\n return -a;\n}\n\nfunction addition(a, b) {\n return a + b;\n}\n\nfunction subtraction(a, b) {\n return a - b;\n}\n\nfunction multiplication(a, b) {\n return a * b;\n}\n\nfunction division(a, b) {\n return a / b;\n}\n\nfunction max() {\n return Math.max.apply(Math, arguments);\n}\n\nfunction min() {\n return Math.min.apply(Math, arguments);\n}\n\nfunction comma() {\n return Array.of.apply(Array, arguments);\n}\n\nvar defaultSymbols = {\n symbols: {\n '*': {\n infix: {\n symbol: '*',\n f: multiplication,\n notation: 'infix',\n precedence: 4,\n rightToLeft: 0,\n argCount: 2\n },\n symbol: '*',\n regSymbol: '\\\\*'\n },\n '/': {\n infix: {\n symbol: '/',\n f: division,\n notation: 'infix',\n precedence: 4,\n rightToLeft: 0,\n argCount: 2\n },\n symbol: '/',\n regSymbol: '/'\n },\n '+': {\n infix: {\n symbol: '+',\n f: addition,\n notation: 'infix',\n precedence: 2,\n rightToLeft: 0,\n argCount: 2\n },\n prefix: {\n symbol: '+',\n f: last,\n notation: 'prefix',\n precedence: 3,\n rightToLeft: 0,\n argCount: 1\n },\n symbol: '+',\n regSymbol: '\\\\+'\n },\n '-': {\n infix: {\n symbol: '-',\n f: subtraction,\n notation: 'infix',\n precedence: 2,\n rightToLeft: 0,\n argCount: 2\n },\n prefix: {\n symbol: '-',\n f: negation,\n notation: 'prefix',\n precedence: 3,\n rightToLeft: 0,\n argCount: 1\n },\n symbol: '-',\n regSymbol: '-'\n },\n ',': {\n infix: {\n symbol: ',',\n f: comma,\n notation: 'infix',\n precedence: 1,\n rightToLeft: 0,\n argCount: 2\n },\n symbol: ',',\n regSymbol: ','\n },\n '(': {\n prefix: {\n symbol: '(',\n f: last,\n notation: 'prefix',\n precedence: 0,\n rightToLeft: 0,\n argCount: 1\n },\n symbol: '(',\n regSymbol: '\\\\('\n },\n ')': {\n postfix: {\n symbol: ')',\n f: undefined,\n notation: 'postfix',\n precedence: 0,\n rightToLeft: 0,\n argCount: 1\n },\n symbol: ')',\n regSymbol: '\\\\)'\n },\n min: {\n func: {\n symbol: 'min',\n f: min,\n notation: 'func',\n precedence: 0,\n rightToLeft: 0,\n argCount: 1\n },\n symbol: 'min',\n regSymbol: 'min\\\\b'\n },\n max: {\n func: {\n symbol: 'max',\n f: max,\n notation: 'func',\n precedence: 0,\n rightToLeft: 0,\n argCount: 1\n },\n symbol: 'max',\n regSymbol: 'max\\\\b'\n }\n }\n};\nvar _default = defaultSymbols;\nexports[\"default\"] = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\n\nfunction _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n// based on https://github.com/styled-components/styled-components/blob/fcf6f3804c57a14dd7984dfab7bc06ee2edca044/src/utils/error.js\n\n/**\n * Parse errors.md and turn it into a simple hash of code: message\n * @private\n */\nvar ERRORS = {\n \"1\": \"Passed invalid arguments to hsl, please pass multiple numbers e.g. hsl(360, 0.75, 0.4) or an object e.g. rgb({ hue: 255, saturation: 0.4, lightness: 0.75 }).\\n\\n\",\n \"2\": \"Passed invalid arguments to hsla, please pass multiple numbers e.g. hsla(360, 0.75, 0.4, 0.7) or an object e.g. rgb({ hue: 255, saturation: 0.4, lightness: 0.75, alpha: 0.7 }).\\n\\n\",\n \"3\": \"Passed an incorrect argument to a color function, please pass a string representation of a color.\\n\\n\",\n \"4\": \"Couldn't generate valid rgb string from %s, it returned %s.\\n\\n\",\n \"5\": \"Couldn't parse the color string. Please provide the color as a string in hex, rgb, rgba, hsl or hsla notation.\\n\\n\",\n \"6\": \"Passed invalid arguments to rgb, please pass multiple numbers e.g. rgb(255, 205, 100) or an object e.g. rgb({ red: 255, green: 205, blue: 100 }).\\n\\n\",\n \"7\": \"Passed invalid arguments to rgba, please pass multiple numbers e.g. rgb(255, 205, 100, 0.75) or an object e.g. rgb({ red: 255, green: 205, blue: 100, alpha: 0.75 }).\\n\\n\",\n \"8\": \"Passed invalid argument to toColorString, please pass a RgbColor, RgbaColor, HslColor or HslaColor object.\\n\\n\",\n \"9\": \"Please provide a number of steps to the modularScale helper.\\n\\n\",\n \"10\": \"Please pass a number or one of the predefined scales to the modularScale helper as the ratio.\\n\\n\",\n \"11\": \"Invalid value passed as base to modularScale, expected number or em string but got \\\"%s\\\"\\n\\n\",\n \"12\": \"Expected a string ending in \\\"px\\\" or a number passed as the first argument to %s(), got \\\"%s\\\" instead.\\n\\n\",\n \"13\": \"Expected a string ending in \\\"px\\\" or a number passed as the second argument to %s(), got \\\"%s\\\" instead.\\n\\n\",\n \"14\": \"Passed invalid pixel value (\\\"%s\\\") to %s(), please pass a value like \\\"12px\\\" or 12.\\n\\n\",\n \"15\": \"Passed invalid base value (\\\"%s\\\") to %s(), please pass a value like \\\"12px\\\" or 12.\\n\\n\",\n \"16\": \"You must provide a template to this method.\\n\\n\",\n \"17\": \"You passed an unsupported selector state to this method.\\n\\n\",\n \"18\": \"minScreen and maxScreen must be provided as stringified numbers with the same units.\\n\\n\",\n \"19\": \"fromSize and toSize must be provided as stringified numbers with the same units.\\n\\n\",\n \"20\": \"expects either an array of objects or a single object with the properties prop, fromSize, and toSize.\\n\\n\",\n \"21\": \"expects the objects in the first argument array to have the properties `prop`, `fromSize`, and `toSize`.\\n\\n\",\n \"22\": \"expects the first argument object to have the properties `prop`, `fromSize`, and `toSize`.\\n\\n\",\n \"23\": \"fontFace expects a name of a font-family.\\n\\n\",\n \"24\": \"fontFace expects either the path to the font file(s) or a name of a local copy.\\n\\n\",\n \"25\": \"fontFace expects localFonts to be an array.\\n\\n\",\n \"26\": \"fontFace expects fileFormats to be an array.\\n\\n\",\n \"27\": \"radialGradient requries at least 2 color-stops to properly render.\\n\\n\",\n \"28\": \"Please supply a filename to retinaImage() as the first argument.\\n\\n\",\n \"29\": \"Passed invalid argument to triangle, please pass correct pointingDirection e.g. 'right'.\\n\\n\",\n \"30\": \"Passed an invalid value to `height` or `width`. Please provide a pixel based unit.\\n\\n\",\n \"31\": \"The animation shorthand only takes 8 arguments. See the specification for more information: http://mdn.io/animation\\n\\n\",\n \"32\": \"To pass multiple animations please supply them in arrays, e.g. animation(['rotate', '2s'], ['move', '1s'])\\nTo pass a single animation please supply them in simple values, e.g. animation('rotate', '2s')\\n\\n\",\n \"33\": \"The animation shorthand arrays can only have 8 elements. See the specification for more information: http://mdn.io/animation\\n\\n\",\n \"34\": \"borderRadius expects a radius value as a string or number as the second argument.\\n\\n\",\n \"35\": \"borderRadius expects one of \\\"top\\\", \\\"bottom\\\", \\\"left\\\" or \\\"right\\\" as the first argument.\\n\\n\",\n \"36\": \"Property must be a string value.\\n\\n\",\n \"37\": \"Syntax Error at %s.\\n\\n\",\n \"38\": \"Formula contains a function that needs parentheses at %s.\\n\\n\",\n \"39\": \"Formula is missing closing parenthesis at %s.\\n\\n\",\n \"40\": \"Formula has too many closing parentheses at %s.\\n\\n\",\n \"41\": \"All values in a formula must have the same unit or be unitless.\\n\\n\",\n \"42\": \"Please provide a number of steps to the modularScale helper.\\n\\n\",\n \"43\": \"Please pass a number or one of the predefined scales to the modularScale helper as the ratio.\\n\\n\",\n \"44\": \"Invalid value passed as base to modularScale, expected number or em/rem string but got %s.\\n\\n\",\n \"45\": \"Passed invalid argument to hslToColorString, please pass a HslColor or HslaColor object.\\n\\n\",\n \"46\": \"Passed invalid argument to rgbToColorString, please pass a RgbColor or RgbaColor object.\\n\\n\",\n \"47\": \"minScreen and maxScreen must be provided as stringified numbers with the same units.\\n\\n\",\n \"48\": \"fromSize and toSize must be provided as stringified numbers with the same units.\\n\\n\",\n \"49\": \"Expects either an array of objects or a single object with the properties prop, fromSize, and toSize.\\n\\n\",\n \"50\": \"Expects the objects in the first argument array to have the properties prop, fromSize, and toSize.\\n\\n\",\n \"51\": \"Expects the first argument object to have the properties prop, fromSize, and toSize.\\n\\n\",\n \"52\": \"fontFace expects either the path to the font file(s) or a name of a local copy.\\n\\n\",\n \"53\": \"fontFace expects localFonts to be an array.\\n\\n\",\n \"54\": \"fontFace expects fileFormats to be an array.\\n\\n\",\n \"55\": \"fontFace expects a name of a font-family.\\n\\n\",\n \"56\": \"linearGradient requries at least 2 color-stops to properly render.\\n\\n\",\n \"57\": \"radialGradient requries at least 2 color-stops to properly render.\\n\\n\",\n \"58\": \"Please supply a filename to retinaImage() as the first argument.\\n\\n\",\n \"59\": \"Passed invalid argument to triangle, please pass correct pointingDirection e.g. 'right'.\\n\\n\",\n \"60\": \"Passed an invalid value to `height` or `width`. Please provide a pixel based unit.\\n\\n\",\n \"61\": \"Property must be a string value.\\n\\n\",\n \"62\": \"borderRadius expects a radius value as a string or number as the second argument.\\n\\n\",\n \"63\": \"borderRadius expects one of \\\"top\\\", \\\"bottom\\\", \\\"left\\\" or \\\"right\\\" as the first argument.\\n\\n\",\n \"64\": \"The animation shorthand only takes 8 arguments. See the specification for more information: http://mdn.io/animation.\\n\\n\",\n \"65\": \"To pass multiple animations please supply them in arrays, e.g. animation(['rotate', '2s'], ['move', '1s'])\\\\nTo pass a single animation please supply them in simple values, e.g. animation('rotate', '2s').\\n\\n\",\n \"66\": \"The animation shorthand arrays can only have 8 elements. See the specification for more information: http://mdn.io/animation.\\n\\n\",\n \"67\": \"You must provide a template to this method.\\n\\n\",\n \"68\": \"You passed an unsupported selector state to this method.\\n\\n\",\n \"69\": \"Expected a string ending in \\\"px\\\" or a number passed as the first argument to %s(), got %s instead.\\n\\n\",\n \"70\": \"Expected a string ending in \\\"px\\\" or a number passed as the second argument to %s(), got %s instead.\\n\\n\",\n \"71\": \"Passed invalid pixel value %s to %s(), please pass a value like \\\"12px\\\" or 12.\\n\\n\",\n \"72\": \"Passed invalid base value %s to %s(), please pass a value like \\\"12px\\\" or 12.\\n\\n\",\n \"73\": \"Please provide a valid CSS variable.\\n\\n\",\n \"74\": \"CSS variable not found and no default was provided.\\n\\n\",\n \"75\": \"important requires a valid style object, got a %s instead.\\n\\n\",\n \"76\": \"fromSize and toSize must be provided as stringified numbers with the same units as minScreen and maxScreen.\\n\\n\",\n \"77\": \"remToPx expects a value in \\\"rem\\\" but you provided it in \\\"%s\\\".\\n\\n\",\n \"78\": \"base must be set in \\\"px\\\" or \\\"%\\\" but you set it in \\\"%s\\\".\\n\"\n};\n/**\n * super basic version of sprintf\n * @private\n */\n\nfunction format() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var a = args[0];\n var b = [];\n var c;\n\n for (c = 1; c < args.length; c += 1) {\n b.push(args[c]);\n }\n\n b.forEach(function (d) {\n a = a.replace(/%[a-z]/, d);\n });\n return a;\n}\n/**\n * Create an error file out of errors.md for development and a simple web link to the full errors\n * in production mode.\n * @private\n */\n\n\nvar PolishedError = /*#__PURE__*/function (_Error) {\n _inheritsLoose(PolishedError, _Error);\n\n function PolishedError(code) {\n var _this;\n\n if (process.env.NODE_ENV === 'production') {\n _this = _Error.call(this, \"An error occurred. See https://github.com/styled-components/polished/blob/main/src/internalHelpers/errors.md#\" + code + \" for more information.\") || this;\n } else {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n _this = _Error.call(this, format.apply(void 0, [ERRORS[code]].concat(args))) || this;\n }\n\n return _assertThisInitialized(_this);\n }\n\n return PolishedError;\n}( /*#__PURE__*/_wrapNativeSuper(Error));\n\nexports[\"default\"] = PolishedError;\nmodule.exports = exports.default;","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = require(\"react\");\nvar useEffectOnce = function (effect) {\n react_1.useEffect(effect, []);\n};\nexports.default = useEffectOnce;\n","import React from 'react'\n\nlet renderErr = 'Renderer Error ☝️'\n\nexport const actions = {\n init: 'init',\n}\n\nexport const defaultRenderer = ({ value = '' }) => value;\nexport const emptyRenderer = () => <> ;\n\nexport const defaultColumn = {\n Cell: defaultRenderer,\n width: 150,\n minWidth: 0,\n maxWidth: Number.MAX_SAFE_INTEGER,\n}\n\nfunction mergeProps(...propList) {\n return propList.reduce((props, next) => {\n const { style, className, ...rest } = next\n\n props = {\n ...props,\n ...rest,\n }\n\n if (style) {\n props.style = props.style\n ? { ...(props.style || {}), ...(style || {}) }\n : style\n }\n\n if (className) {\n props.className = props.className\n ? props.className + ' ' + className\n : className\n }\n\n if (props.className === '') {\n delete props.className\n }\n\n return props\n }, {})\n}\n\nfunction handlePropGetter(prevProps, userProps, meta) {\n // Handle a lambda, pass it the previous props\n if (typeof userProps === 'function') {\n return handlePropGetter({}, userProps(prevProps, meta))\n }\n\n // Handle an array, merge each item as separate props\n if (Array.isArray(userProps)) {\n return mergeProps(prevProps, ...userProps)\n }\n\n // Handle an object by default, merge the two objects\n return mergeProps(prevProps, userProps)\n}\n\nexport const makePropGetter = (hooks, meta = {}) => {\n return (userProps = {}) =>\n [...hooks, userProps].reduce(\n (prev, next) =>\n handlePropGetter(prev, next, {\n ...meta,\n userProps,\n }),\n {}\n )\n}\n\nexport const reduceHooks = (hooks, initial, meta = {}, allowUndefined) =>\n hooks.reduce((prev, next) => {\n const nextValue = next(prev, meta)\n if (process.env.NODE_ENV !== 'production') {\n if (!allowUndefined && typeof nextValue === 'undefined') {\n console.info(next)\n throw new Error(\n 'React Table: A reducer hook ☝️ just returned undefined! This is not allowed.'\n )\n }\n }\n return nextValue\n }, initial)\n\nexport const loopHooks = (hooks, context, meta = {}) =>\n hooks.forEach(hook => {\n const nextValue = hook(context, meta)\n if (process.env.NODE_ENV !== 'production') {\n if (typeof nextValue !== 'undefined') {\n console.info(hook, nextValue)\n throw new Error(\n 'React Table: A loop-type hook ☝️ just returned a value! This is not allowed.'\n )\n }\n }\n })\n\nexport function ensurePluginOrder(plugins, befores, pluginName, afters) {\n if (process.env.NODE_ENV !== 'production' && afters) {\n throw new Error(\n `Defining plugins in the \"after\" section of ensurePluginOrder is no longer supported (see plugin ${pluginName})`\n )\n }\n const pluginIndex = plugins.findIndex(\n plugin => plugin.pluginName === pluginName\n )\n\n if (pluginIndex === -1) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`The plugin \"${pluginName}\" was not found in the plugin list!\nThis usually means you need to need to name your plugin hook by setting the 'pluginName' property of the hook function, eg:\n\n ${pluginName}.pluginName = '${pluginName}'\n`)\n }\n }\n\n befores.forEach(before => {\n const beforeIndex = plugins.findIndex(\n plugin => plugin.pluginName === before\n )\n if (beforeIndex > -1 && beforeIndex > pluginIndex) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(\n `React Table: The ${pluginName} plugin hook must be placed after the ${before} plugin hook!`\n )\n }\n }\n })\n}\n\nexport function functionalUpdate(updater, old) {\n return typeof updater === 'function' ? updater(old) : updater\n}\n\nexport function useGetLatest(obj) {\n const ref = React.useRef()\n ref.current = obj\n\n return React.useCallback(() => ref.current, [])\n}\n\n// SSR has issues with useLayoutEffect still, so use useEffect during SSR\nexport const safeUseLayoutEffect =\n typeof document !== 'undefined' ? React.useLayoutEffect : React.useEffect\n\nexport function useMountedLayoutEffect(fn, deps) {\n const mountedRef = React.useRef(false)\n\n safeUseLayoutEffect(() => {\n if (mountedRef.current) {\n fn()\n }\n mountedRef.current = true\n // eslint-disable-next-line\n }, deps)\n}\n\nexport function useAsyncDebounce(defaultFn, defaultWait = 0) {\n const debounceRef = React.useRef({})\n\n const getDefaultFn = useGetLatest(defaultFn)\n const getDefaultWait = useGetLatest(defaultWait)\n\n return React.useCallback(\n async (...args) => {\n if (!debounceRef.current.promise) {\n debounceRef.current.promise = new Promise((resolve, reject) => {\n debounceRef.current.resolve = resolve\n debounceRef.current.reject = reject\n })\n }\n\n if (debounceRef.current.timeout) {\n clearTimeout(debounceRef.current.timeout)\n }\n\n debounceRef.current.timeout = setTimeout(async () => {\n delete debounceRef.current.timeout\n try {\n debounceRef.current.resolve(await getDefaultFn()(...args))\n } catch (err) {\n debounceRef.current.reject(err)\n } finally {\n delete debounceRef.current.promise\n }\n }, getDefaultWait())\n\n return debounceRef.current.promise\n },\n [getDefaultFn, getDefaultWait]\n )\n}\n\nexport function makeRenderer(instance, column, meta = {}) {\n return (type, userProps = {}) => {\n const Comp = typeof type === 'string' ? column[type] : type\n\n if (typeof Comp === 'undefined') {\n console.info(column)\n throw new Error(renderErr)\n }\n\n return flexRender(Comp, { ...instance, column, ...meta, ...userProps })\n }\n}\n\nexport function flexRender(Comp, props) {\n return isReactComponent(Comp) ? : Comp\n}\n\nfunction isReactComponent(component) {\n return (\n isClassComponent(component) ||\n typeof component === 'function' ||\n isExoticComponent(component)\n )\n}\n\nfunction isClassComponent(component) {\n return (\n typeof component === 'function' &&\n (() => {\n const proto = Object.getPrototypeOf(component)\n return proto.prototype && proto.prototype.isReactComponent\n })()\n )\n}\n\nfunction isExoticComponent(component) {\n return (\n typeof component === 'object' &&\n typeof component.$$typeof === 'symbol' &&\n ['react.memo', 'react.forward_ref'].includes(component.$$typeof.description)\n )\n}\n","import { defaultColumn, emptyRenderer } from './publicUtils'\n\n// Find the depth of the columns\nexport function findMaxDepth(columns, depth = 0) {\n return columns.reduce((prev, curr) => {\n if (curr.columns) {\n return Math.max(prev, findMaxDepth(curr.columns, depth + 1))\n }\n return depth\n }, 0)\n}\n\n// Build the visible columns, headers and flat column list\nexport function linkColumnStructure(columns, parent, depth = 0) {\n return columns.map(column => {\n column = {\n ...column,\n parent,\n depth,\n }\n\n assignColumnAccessor(column)\n\n if (column.columns) {\n column.columns = linkColumnStructure(column.columns, column, depth + 1)\n }\n return column\n })\n}\n\nexport function flattenColumns(columns) {\n return flattenBy(columns, 'columns')\n}\n\nexport function assignColumnAccessor(column) {\n // First check for string accessor\n let { id, accessor, Header } = column\n\n if (typeof accessor === 'string') {\n id = id || accessor\n const accessorPath = accessor.split('.')\n accessor = row => getBy(row, accessorPath)\n }\n\n if (!id && typeof Header === 'string' && Header) {\n id = Header\n }\n\n if (!id && column.columns) {\n console.error(column)\n throw new Error('A column ID (or unique \"Header\" value) is required!')\n }\n\n if (!id) {\n console.error(column)\n throw new Error('A column ID (or string accessor) is required!')\n }\n\n Object.assign(column, {\n id,\n accessor,\n })\n\n return column\n}\n\nexport function decorateColumn(column, userDefaultColumn) {\n if (!userDefaultColumn) {\n throw new Error()\n }\n Object.assign(column, {\n // Make sure there is a fallback header, just in case\n Header: emptyRenderer,\n Footer: emptyRenderer,\n ...defaultColumn,\n ...userDefaultColumn,\n ...column,\n })\n\n Object.assign(column, {\n originalWidth: column.width,\n })\n\n return column\n}\n\n// Build the header groups from the bottom up\nexport function makeHeaderGroups(\n allColumns,\n defaultColumn,\n additionalHeaderProperties = () => ({})\n) {\n const headerGroups = []\n\n let scanColumns = allColumns\n\n let uid = 0\n const getUID = () => uid++\n\n while (scanColumns.length) {\n // The header group we are creating\n const headerGroup = {\n headers: [],\n }\n\n // The parent columns we're going to scan next\n const parentColumns = []\n\n const hasParents = scanColumns.some(d => d.parent)\n\n // Scan each column for parents\n scanColumns.forEach(column => {\n // What is the latest (last) parent column?\n let latestParentColumn = [...parentColumns].reverse()[0]\n\n let newParent\n\n if (hasParents) {\n // If the column has a parent, add it if necessary\n if (column.parent) {\n newParent = {\n ...column.parent,\n originalId: column.parent.id,\n id: `${column.parent.id}_${getUID()}`,\n headers: [column],\n ...additionalHeaderProperties(column),\n }\n } else {\n // If other columns have parents, we'll need to add a place holder if necessary\n const originalId = `${column.id}_placeholder`\n newParent = decorateColumn(\n {\n originalId,\n id: `${column.id}_placeholder_${getUID()}`,\n placeholderOf: column,\n headers: [column],\n ...additionalHeaderProperties(column),\n },\n defaultColumn\n )\n }\n\n // If the resulting parent columns are the same, just add\n // the column and increment the header span\n if (\n latestParentColumn &&\n latestParentColumn.originalId === newParent.originalId\n ) {\n latestParentColumn.headers.push(column)\n } else {\n parentColumns.push(newParent)\n }\n }\n\n headerGroup.headers.push(column)\n })\n\n headerGroups.push(headerGroup)\n\n // Start scanning the parent columns\n scanColumns = parentColumns\n }\n\n return headerGroups.reverse()\n}\n\nconst pathObjCache = new Map()\n\nexport function getBy(obj, path, def) {\n if (!path) {\n return obj\n }\n const cacheKey = typeof path === 'function' ? path : JSON.stringify(path)\n\n const pathObj =\n pathObjCache.get(cacheKey) ||\n (() => {\n const pathObj = makePathArray(path)\n pathObjCache.set(cacheKey, pathObj)\n return pathObj\n })()\n\n let val\n\n try {\n val = pathObj.reduce((cursor, pathPart) => cursor[pathPart], obj)\n } catch (e) {\n // continue regardless of error\n }\n return typeof val !== 'undefined' ? val : def\n}\n\nexport function getFirstDefined(...args) {\n for (let i = 0; i < args.length; i += 1) {\n if (typeof args[i] !== 'undefined') {\n return args[i]\n }\n }\n}\n\nexport function getElementDimensions(element) {\n const rect = element.getBoundingClientRect()\n const style = window.getComputedStyle(element)\n const margins = {\n left: parseInt(style.marginLeft),\n right: parseInt(style.marginRight),\n }\n const padding = {\n left: parseInt(style.paddingLeft),\n right: parseInt(style.paddingRight),\n }\n return {\n left: Math.ceil(rect.left),\n width: Math.ceil(rect.width),\n outerWidth: Math.ceil(\n rect.width + margins.left + margins.right + padding.left + padding.right\n ),\n marginLeft: margins.left,\n marginRight: margins.right,\n paddingLeft: padding.left,\n paddingRight: padding.right,\n scrollWidth: element.scrollWidth,\n }\n}\n\nexport function isFunction(a) {\n if (typeof a === 'function') {\n return a\n }\n}\n\nexport function flattenBy(arr, key) {\n const flat = []\n\n const recurse = arr => {\n arr.forEach(d => {\n if (!d[key]) {\n flat.push(d)\n } else {\n recurse(d[key])\n }\n })\n }\n\n recurse(arr)\n\n return flat\n}\n\nexport function expandRows(\n rows,\n { manualExpandedKey, expanded, expandSubRows = true }\n) {\n const expandedRows = []\n\n const handleRow = (row, addToExpandedRows = true) => {\n row.isExpanded =\n (row.original && row.original[manualExpandedKey]) || expanded[row.id]\n\n row.canExpand = row.subRows && !!row.subRows.length\n\n if (addToExpandedRows) {\n expandedRows.push(row)\n }\n\n if (row.subRows && row.subRows.length && row.isExpanded) {\n row.subRows.forEach(row => handleRow(row, expandSubRows))\n }\n }\n\n rows.forEach(row => handleRow(row))\n\n return expandedRows\n}\n\nexport function getFilterMethod(filter, userFilterTypes, filterTypes) {\n return (\n isFunction(filter) ||\n userFilterTypes[filter] ||\n filterTypes[filter] ||\n filterTypes.text\n )\n}\n\nexport function shouldAutoRemoveFilter(autoRemove, value, column) {\n return autoRemove ? autoRemove(value, column) : typeof value === 'undefined'\n}\n\nexport function unpreparedAccessWarning() {\n throw new Error(\n 'React-Table: You have not called prepareRow(row) one or more rows you are attempting to render.'\n )\n}\n\nlet passiveSupported = null\nexport function passiveEventSupported() {\n // memoize support to avoid adding multiple test events\n if (typeof passiveSupported === 'boolean') return passiveSupported\n\n let supported = false\n try {\n const options = {\n get passive() {\n supported = true\n return false\n },\n }\n\n window.addEventListener('test', null, options)\n window.removeEventListener('test', null, options)\n } catch (err) {\n supported = false\n }\n passiveSupported = supported\n return passiveSupported\n}\n\n//\n\nconst reOpenBracket = /\\[/g\nconst reCloseBracket = /\\]/g\n\nfunction makePathArray(obj) {\n return (\n flattenDeep(obj)\n // remove all periods in parts\n .map(d => String(d).replace('.', '_'))\n // join parts using period\n .join('.')\n // replace brackets with periods\n .replace(reOpenBracket, '.')\n .replace(reCloseBracket, '')\n // split it back out on periods\n .split('.')\n )\n}\n\nfunction flattenDeep(arr, newArr = []) {\n if (!Array.isArray(arr)) {\n newArr.push(arr)\n } else {\n for (let i = 0; i < arr.length; i += 1) {\n flattenDeep(arr[i], newArr)\n }\n }\n return newArr\n}\n","const defaultGetTableProps = props => ({\n role: 'table',\n ...props,\n})\n\nconst defaultGetTableBodyProps = props => ({\n role: 'rowgroup',\n ...props,\n})\n\nconst defaultGetHeaderProps = (props, { column }) => ({\n key: `header_${column.id}`,\n colSpan: column.totalVisibleHeaderCount,\n role: 'columnheader',\n ...props,\n})\n\nconst defaultGetFooterProps = (props, { column }) => ({\n key: `footer_${column.id}`,\n colSpan: column.totalVisibleHeaderCount,\n ...props,\n})\n\nconst defaultGetHeaderGroupProps = (props, { index }) => ({\n key: `headerGroup_${index}`,\n role: 'row',\n ...props,\n})\n\nconst defaultGetFooterGroupProps = (props, { index }) => ({\n key: `footerGroup_${index}`,\n ...props,\n})\n\nconst defaultGetRowProps = (props, { row }) => ({\n key: `row_${row.id}`,\n role: 'row',\n ...props,\n})\n\nconst defaultGetCellProps = (props, { cell }) => ({\n key: `cell_${cell.row.id}_${cell.column.id}`,\n role: 'cell',\n ...props,\n})\n\nexport default function makeDefaultPluginHooks() {\n return {\n useOptions: [],\n stateReducers: [],\n useControlledState: [],\n columns: [],\n columnsDeps: [],\n allColumns: [],\n allColumnsDeps: [],\n accessValue: [],\n materializedColumns: [],\n materializedColumnsDeps: [],\n useInstanceAfterData: [],\n visibleColumns: [],\n visibleColumnsDeps: [],\n headerGroups: [],\n headerGroupsDeps: [],\n useInstanceBeforeDimensions: [],\n useInstance: [],\n prepareRow: [],\n getTableProps: [defaultGetTableProps],\n getTableBodyProps: [defaultGetTableBodyProps],\n getHeaderGroupProps: [defaultGetHeaderGroupProps],\n getFooterGroupProps: [defaultGetFooterGroupProps],\n getHeaderProps: [defaultGetHeaderProps],\n getFooterProps: [defaultGetFooterProps],\n getRowProps: [defaultGetRowProps],\n getCellProps: [defaultGetCellProps],\n useFinalInstance: [],\n }\n}\n","import React from 'react'\n\nimport {\n actions,\n functionalUpdate,\n useGetLatest,\n makePropGetter,\n useMountedLayoutEffect,\n} from '../publicUtils'\n\nactions.resetHiddenColumns = 'resetHiddenColumns'\nactions.toggleHideColumn = 'toggleHideColumn'\nactions.setHiddenColumns = 'setHiddenColumns'\nactions.toggleHideAllColumns = 'toggleHideAllColumns'\n\nexport const useColumnVisibility = hooks => {\n hooks.getToggleHiddenProps = [defaultGetToggleHiddenProps]\n hooks.getToggleHideAllColumnsProps = [defaultGetToggleHideAllColumnsProps]\n\n hooks.stateReducers.push(reducer)\n hooks.useInstanceBeforeDimensions.push(useInstanceBeforeDimensions)\n hooks.headerGroupsDeps.push((deps, { instance }) => [\n ...deps,\n instance.state.hiddenColumns,\n ])\n hooks.useInstance.push(useInstance)\n}\n\nuseColumnVisibility.pluginName = 'useColumnVisibility'\n\nconst defaultGetToggleHiddenProps = (props, { column }) => [\n props,\n {\n onChange: e => {\n column.toggleHidden(!e.target.checked)\n },\n style: {\n cursor: 'pointer',\n },\n checked: column.isVisible,\n title: 'Toggle Column Visible',\n },\n]\n\nconst defaultGetToggleHideAllColumnsProps = (props, { instance }) => [\n props,\n {\n onChange: e => {\n instance.toggleHideAllColumns(!e.target.checked)\n },\n style: {\n cursor: 'pointer',\n },\n checked: !instance.allColumnsHidden && !instance.state.hiddenColumns.length,\n title: 'Toggle All Columns Hidden',\n indeterminate:\n !instance.allColumnsHidden && instance.state.hiddenColumns.length,\n },\n]\n\nfunction reducer(state, action, previousState, instance) {\n if (action.type === actions.init) {\n return {\n hiddenColumns: [],\n ...state,\n }\n }\n\n if (action.type === actions.resetHiddenColumns) {\n return {\n ...state,\n hiddenColumns: instance.initialState.hiddenColumns || [],\n }\n }\n\n if (action.type === actions.toggleHideColumn) {\n const should =\n typeof action.value !== 'undefined'\n ? action.value\n : !state.hiddenColumns.includes(action.columnId)\n\n const hiddenColumns = should\n ? [...state.hiddenColumns, action.columnId]\n : state.hiddenColumns.filter(d => d !== action.columnId)\n\n return {\n ...state,\n hiddenColumns,\n }\n }\n\n if (action.type === actions.setHiddenColumns) {\n return {\n ...state,\n hiddenColumns: functionalUpdate(action.value, state.hiddenColumns),\n }\n }\n\n if (action.type === actions.toggleHideAllColumns) {\n const shouldAll =\n typeof action.value !== 'undefined'\n ? action.value\n : !state.hiddenColumns.length\n\n return {\n ...state,\n hiddenColumns: shouldAll ? instance.allColumns.map(d => d.id) : [],\n }\n }\n}\n\nfunction useInstanceBeforeDimensions(instance) {\n const {\n headers,\n state: { hiddenColumns },\n } = instance\n\n const isMountedRef = React.useRef(false)\n\n if (!isMountedRef.current) {\n }\n\n const handleColumn = (column, parentVisible) => {\n column.isVisible = parentVisible && !hiddenColumns.includes(column.id)\n\n let totalVisibleHeaderCount = 0\n\n if (column.headers && column.headers.length) {\n column.headers.forEach(\n subColumn =>\n (totalVisibleHeaderCount += handleColumn(subColumn, column.isVisible))\n )\n } else {\n totalVisibleHeaderCount = column.isVisible ? 1 : 0\n }\n\n column.totalVisibleHeaderCount = totalVisibleHeaderCount\n\n return totalVisibleHeaderCount\n }\n\n let totalVisibleHeaderCount = 0\n\n headers.forEach(\n subHeader => (totalVisibleHeaderCount += handleColumn(subHeader, true))\n )\n}\n\nfunction useInstance(instance) {\n const {\n columns,\n flatHeaders,\n dispatch,\n allColumns,\n getHooks,\n state: { hiddenColumns },\n autoResetHiddenColumns = true,\n } = instance\n\n const getInstance = useGetLatest(instance)\n\n const allColumnsHidden = allColumns.length === hiddenColumns.length\n\n const toggleHideColumn = React.useCallback(\n (columnId, value) =>\n dispatch({ type: actions.toggleHideColumn, columnId, value }),\n [dispatch]\n )\n\n const setHiddenColumns = React.useCallback(\n value => dispatch({ type: actions.setHiddenColumns, value }),\n [dispatch]\n )\n\n const toggleHideAllColumns = React.useCallback(\n value => dispatch({ type: actions.toggleHideAllColumns, value }),\n [dispatch]\n )\n\n const getToggleHideAllColumnsProps = makePropGetter(\n getHooks().getToggleHideAllColumnsProps,\n { instance: getInstance() }\n )\n\n flatHeaders.forEach(column => {\n column.toggleHidden = value => {\n dispatch({\n type: actions.toggleHideColumn,\n columnId: column.id,\n value,\n })\n }\n\n column.getToggleHiddenProps = makePropGetter(\n getHooks().getToggleHiddenProps,\n {\n instance: getInstance(),\n column,\n }\n )\n })\n\n const getAutoResetHiddenColumns = useGetLatest(autoResetHiddenColumns)\n\n useMountedLayoutEffect(() => {\n if (getAutoResetHiddenColumns()) {\n dispatch({ type: actions.resetHiddenColumns })\n }\n }, [dispatch, columns])\n\n Object.assign(instance, {\n allColumnsHidden,\n toggleHideColumn,\n setHiddenColumns,\n toggleHideAllColumns,\n getToggleHideAllColumnsProps,\n })\n}\n","import React from 'react'\n\n//\n\nimport {\n linkColumnStructure,\n flattenColumns,\n assignColumnAccessor,\n unpreparedAccessWarning,\n makeHeaderGroups,\n decorateColumn,\n} from '../utils'\n\nimport {\n useGetLatest,\n reduceHooks,\n actions,\n loopHooks,\n makePropGetter,\n makeRenderer,\n} from '../publicUtils'\n\nimport makeDefaultPluginHooks from '../makeDefaultPluginHooks'\n\nimport { useColumnVisibility } from './useColumnVisibility'\n\nconst defaultInitialState = {}\nconst defaultColumnInstance = {}\nconst defaultReducer = (state, action, prevState) => state\nconst defaultGetSubRows = (row, index) => row.subRows || []\nconst defaultGetRowId = (row, index, parent) =>\n `${parent ? [parent.id, index].join('.') : index}`\nconst defaultUseControlledState = d => d\n\nfunction applyDefaults(props) {\n const {\n initialState = defaultInitialState,\n defaultColumn = defaultColumnInstance,\n getSubRows = defaultGetSubRows,\n getRowId = defaultGetRowId,\n stateReducer = defaultReducer,\n useControlledState = defaultUseControlledState,\n ...rest\n } = props\n\n return {\n ...rest,\n initialState,\n defaultColumn,\n getSubRows,\n getRowId,\n stateReducer,\n useControlledState,\n }\n}\n\nexport const useTable = (props, ...plugins) => {\n // Apply default props\n props = applyDefaults(props)\n\n // Add core plugins\n plugins = [useColumnVisibility, ...plugins]\n\n // Create the table instance\n let instanceRef = React.useRef({})\n\n // Create a getter for the instance (helps avoid a lot of potential memory leaks)\n const getInstance = useGetLatest(instanceRef.current)\n\n // Assign the props, plugins and hooks to the instance\n Object.assign(getInstance(), {\n ...props,\n plugins,\n hooks: makeDefaultPluginHooks(),\n })\n\n // Allow plugins to register hooks as early as possible\n plugins.filter(Boolean).forEach(plugin => {\n plugin(getInstance().hooks)\n })\n\n // Consume all hooks and make a getter for them\n const getHooks = useGetLatest(getInstance().hooks)\n getInstance().getHooks = getHooks\n delete getInstance().hooks\n\n // Allow useOptions hooks to modify the options coming into the table\n Object.assign(\n getInstance(),\n reduceHooks(getHooks().useOptions, applyDefaults(props))\n )\n\n const {\n data,\n columns: userColumns,\n initialState,\n defaultColumn,\n getSubRows,\n getRowId,\n stateReducer,\n useControlledState,\n } = getInstance()\n\n // Setup user reducer ref\n const getStateReducer = useGetLatest(stateReducer)\n\n // Build the reducer\n const reducer = React.useCallback(\n (state, action) => {\n // Detect invalid actions\n if (!action.type) {\n console.info({ action })\n throw new Error('Unknown Action 👆')\n }\n\n // Reduce the state from all plugin reducers\n return [\n ...getHooks().stateReducers,\n // Allow the user to add their own state reducer(s)\n ...(Array.isArray(getStateReducer())\n ? getStateReducer()\n : [getStateReducer()]),\n ].reduce(\n (s, handler) => handler(s, action, state, getInstance()) || s,\n state\n )\n },\n [getHooks, getStateReducer, getInstance]\n )\n\n // Start the reducer\n const [reducerState, dispatch] = React.useReducer(reducer, undefined, () =>\n reducer(initialState, { type: actions.init })\n )\n\n // Allow the user to control the final state with hooks\n const state = reduceHooks(\n [...getHooks().useControlledState, useControlledState],\n reducerState,\n { instance: getInstance() }\n )\n\n Object.assign(getInstance(), {\n state,\n dispatch,\n })\n\n // Decorate All the columns\n const columns = React.useMemo(\n () =>\n linkColumnStructure(\n reduceHooks(getHooks().columns, userColumns, {\n instance: getInstance(),\n })\n ),\n [\n getHooks,\n getInstance,\n userColumns,\n // eslint-disable-next-line react-hooks/exhaustive-deps\n ...reduceHooks(getHooks().columnsDeps, [], { instance: getInstance() }),\n ]\n )\n getInstance().columns = columns\n\n // Get the flat list of all columns and allow hooks to decorate\n // those columns (and trigger this memoization via deps)\n let allColumns = React.useMemo(\n () =>\n reduceHooks(getHooks().allColumns, flattenColumns(columns), {\n instance: getInstance(),\n }).map(assignColumnAccessor),\n [\n columns,\n getHooks,\n getInstance,\n // eslint-disable-next-line react-hooks/exhaustive-deps\n ...reduceHooks(getHooks().allColumnsDeps, [], {\n instance: getInstance(),\n }),\n ]\n )\n getInstance().allColumns = allColumns\n\n // Access the row model using initial columns\n const [rows, flatRows, rowsById] = React.useMemo(() => {\n let rows = []\n let flatRows = []\n const rowsById = {}\n\n const allColumnsQueue = [...allColumns]\n\n while (allColumnsQueue.length) {\n const column = allColumnsQueue.shift()\n accessRowsForColumn({\n data,\n rows,\n flatRows,\n rowsById,\n column,\n getRowId,\n getSubRows,\n accessValueHooks: getHooks().accessValue,\n getInstance,\n })\n }\n\n return [rows, flatRows, rowsById]\n }, [allColumns, data, getRowId, getSubRows, getHooks, getInstance])\n\n Object.assign(getInstance(), {\n rows,\n initialRows: [...rows],\n flatRows,\n rowsById,\n // materializedColumns,\n })\n\n loopHooks(getHooks().useInstanceAfterData, getInstance())\n\n // Get the flat list of all columns AFTER the rows\n // have been access, and allow hooks to decorate\n // those columns (and trigger this memoization via deps)\n let visibleColumns = React.useMemo(\n () =>\n reduceHooks(getHooks().visibleColumns, allColumns, {\n instance: getInstance(),\n }).map(d => decorateColumn(d, defaultColumn)),\n [\n getHooks,\n allColumns,\n getInstance,\n defaultColumn,\n // eslint-disable-next-line react-hooks/exhaustive-deps\n ...reduceHooks(getHooks().visibleColumnsDeps, [], {\n instance: getInstance(),\n }),\n ]\n )\n\n // Combine new visible columns with all columns\n allColumns = React.useMemo(() => {\n const columns = [...visibleColumns]\n\n allColumns.forEach(column => {\n if (!columns.find(d => d.id === column.id)) {\n columns.push(column)\n }\n })\n\n return columns\n }, [allColumns, visibleColumns])\n getInstance().allColumns = allColumns\n\n if (process.env.NODE_ENV !== 'production') {\n const duplicateColumns = allColumns.filter((column, i) => {\n return allColumns.findIndex(d => d.id === column.id) !== i\n })\n\n if (duplicateColumns.length) {\n console.info(allColumns)\n throw new Error(\n `Duplicate columns were found with ids: \"${duplicateColumns\n .map(d => d.id)\n .join(', ')}\" in the columns array above`\n )\n }\n }\n\n // Make the headerGroups\n const headerGroups = React.useMemo(\n () =>\n reduceHooks(\n getHooks().headerGroups,\n makeHeaderGroups(visibleColumns, defaultColumn),\n getInstance()\n ),\n [\n getHooks,\n visibleColumns,\n defaultColumn,\n getInstance,\n // eslint-disable-next-line react-hooks/exhaustive-deps\n ...reduceHooks(getHooks().headerGroupsDeps, [], {\n instance: getInstance(),\n }),\n ]\n )\n getInstance().headerGroups = headerGroups\n\n // Get the first level of headers\n const headers = React.useMemo(\n () => (headerGroups.length ? headerGroups[0].headers : []),\n [headerGroups]\n )\n getInstance().headers = headers\n\n // Provide a flat header list for utilities\n getInstance().flatHeaders = headerGroups.reduce(\n (all, headerGroup) => [...all, ...headerGroup.headers],\n []\n )\n\n loopHooks(getHooks().useInstanceBeforeDimensions, getInstance())\n\n // Filter columns down to visible ones\n const visibleColumnsDep = visibleColumns\n .filter(d => d.isVisible)\n .map(d => d.id)\n .sort()\n .join('_')\n\n visibleColumns = React.useMemo(\n () => visibleColumns.filter(d => d.isVisible),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [visibleColumns, visibleColumnsDep]\n )\n getInstance().visibleColumns = visibleColumns\n\n // Header Visibility is needed by this point\n const [\n totalColumnsMinWidth,\n totalColumnsWidth,\n totalColumnsMaxWidth,\n ] = calculateHeaderWidths(headers)\n\n getInstance().totalColumnsMinWidth = totalColumnsMinWidth\n getInstance().totalColumnsWidth = totalColumnsWidth\n getInstance().totalColumnsMaxWidth = totalColumnsMaxWidth\n\n loopHooks(getHooks().useInstance, getInstance())\n\n // Each materialized header needs to be assigned a render function and other\n // prop getter properties here.\n ;[...getInstance().flatHeaders, ...getInstance().allColumns].forEach(\n column => {\n // Give columns/headers rendering power\n column.render = makeRenderer(getInstance(), column)\n\n // Give columns/headers a default getHeaderProps\n column.getHeaderProps = makePropGetter(getHooks().getHeaderProps, {\n instance: getInstance(),\n column,\n })\n\n // Give columns/headers a default getFooterProps\n column.getFooterProps = makePropGetter(getHooks().getFooterProps, {\n instance: getInstance(),\n column,\n })\n }\n )\n\n getInstance().headerGroups = React.useMemo(\n () =>\n headerGroups.filter((headerGroup, i) => {\n // Filter out any headers and headerGroups that don't have visible columns\n headerGroup.headers = headerGroup.headers.filter(column => {\n const recurse = headers =>\n headers.filter(column => {\n if (column.headers) {\n return recurse(column.headers)\n }\n return column.isVisible\n }).length\n if (column.headers) {\n return recurse(column.headers)\n }\n return column.isVisible\n })\n\n // Give headerGroups getRowProps\n if (headerGroup.headers.length) {\n headerGroup.getHeaderGroupProps = makePropGetter(\n getHooks().getHeaderGroupProps,\n { instance: getInstance(), headerGroup, index: i }\n )\n\n headerGroup.getFooterGroupProps = makePropGetter(\n getHooks().getFooterGroupProps,\n { instance: getInstance(), headerGroup, index: i }\n )\n\n return true\n }\n\n return false\n }),\n [headerGroups, getInstance, getHooks]\n )\n\n getInstance().footerGroups = [...getInstance().headerGroups].reverse()\n\n // The prepareRow function is absolutely necessary and MUST be called on\n // any rows the user wishes to be displayed.\n\n getInstance().prepareRow = React.useCallback(\n row => {\n row.getRowProps = makePropGetter(getHooks().getRowProps, {\n instance: getInstance(),\n row,\n })\n\n // Build the visible cells for each row\n row.allCells = allColumns.map(column => {\n const value = row.values[column.id]\n\n const cell = {\n column,\n row,\n value,\n }\n\n // Give each cell a getCellProps base\n cell.getCellProps = makePropGetter(getHooks().getCellProps, {\n instance: getInstance(),\n cell,\n })\n\n // Give each cell a renderer function (supports multiple renderers)\n cell.render = makeRenderer(getInstance(), column, {\n row,\n cell,\n value,\n })\n\n return cell\n })\n\n row.cells = visibleColumns.map(column =>\n row.allCells.find(cell => cell.column.id === column.id)\n )\n\n // need to apply any row specific hooks (useExpanded requires this)\n loopHooks(getHooks().prepareRow, row, { instance: getInstance() })\n },\n [getHooks, getInstance, allColumns, visibleColumns]\n )\n\n getInstance().getTableProps = makePropGetter(getHooks().getTableProps, {\n instance: getInstance(),\n })\n\n getInstance().getTableBodyProps = makePropGetter(\n getHooks().getTableBodyProps,\n {\n instance: getInstance(),\n }\n )\n\n loopHooks(getHooks().useFinalInstance, getInstance())\n\n return getInstance()\n}\n\nfunction calculateHeaderWidths(headers, left = 0) {\n let sumTotalMinWidth = 0\n let sumTotalWidth = 0\n let sumTotalMaxWidth = 0\n let sumTotalFlexWidth = 0\n\n headers.forEach(header => {\n let { headers: subHeaders } = header\n\n header.totalLeft = left\n\n if (subHeaders && subHeaders.length) {\n const [\n totalMinWidth,\n totalWidth,\n totalMaxWidth,\n totalFlexWidth,\n ] = calculateHeaderWidths(subHeaders, left)\n header.totalMinWidth = totalMinWidth\n header.totalWidth = totalWidth\n header.totalMaxWidth = totalMaxWidth\n header.totalFlexWidth = totalFlexWidth\n } else {\n header.totalMinWidth = header.minWidth\n header.totalWidth = Math.min(\n Math.max(header.minWidth, header.width),\n header.maxWidth\n )\n header.totalMaxWidth = header.maxWidth\n header.totalFlexWidth = header.canResize ? header.totalWidth : 0\n }\n if (header.isVisible) {\n left += header.totalWidth\n sumTotalMinWidth += header.totalMinWidth\n sumTotalWidth += header.totalWidth\n sumTotalMaxWidth += header.totalMaxWidth\n sumTotalFlexWidth += header.totalFlexWidth\n }\n })\n\n return [sumTotalMinWidth, sumTotalWidth, sumTotalMaxWidth, sumTotalFlexWidth]\n}\n\nfunction accessRowsForColumn({\n data,\n rows,\n flatRows,\n rowsById,\n column,\n getRowId,\n getSubRows,\n accessValueHooks,\n getInstance,\n}) {\n // Access the row's data column-by-column\n // We do it this way so we can incrementally add materialized\n // columns after the first pass and avoid excessive looping\n const accessRow = (originalRow, rowIndex, depth = 0, parent, parentRows) => {\n // Keep the original reference around\n const original = originalRow\n\n const id = getRowId(originalRow, rowIndex, parent)\n\n let row = rowsById[id]\n\n // If the row hasn't been created, let's make it\n if (!row) {\n row = {\n id,\n original,\n index: rowIndex,\n depth,\n cells: [{}], // This is a dummy cell\n }\n\n // Override common array functions (and the dummy cell's getCellProps function)\n // to show an error if it is accessed without calling prepareRow\n row.cells.map = unpreparedAccessWarning\n row.cells.filter = unpreparedAccessWarning\n row.cells.forEach = unpreparedAccessWarning\n row.cells[0].getCellProps = unpreparedAccessWarning\n\n // Create the cells and values\n row.values = {}\n\n // Push this row into the parentRows array\n parentRows.push(row)\n // Keep track of every row in a flat array\n flatRows.push(row)\n // Also keep track of every row by its ID\n rowsById[id] = row\n\n // Get the original subrows\n row.originalSubRows = getSubRows(originalRow, rowIndex)\n\n // Then recursively access them\n if (row.originalSubRows) {\n const subRows = []\n row.originalSubRows.forEach((d, i) =>\n accessRow(d, i, depth + 1, row, subRows)\n )\n // Keep the new subRows array on the row\n row.subRows = subRows\n }\n } else if (row.subRows) {\n // If the row exists, then it's already been accessed\n // Keep recursing, but don't worry about passing the\n // accumlator array (those rows already exist)\n row.originalSubRows.forEach((d, i) => accessRow(d, i, depth + 1, row))\n }\n\n // If the column has an accessor, use it to get a value\n if (column.accessor) {\n row.values[column.id] = column.accessor(\n originalRow,\n rowIndex,\n row,\n parentRows,\n data\n )\n }\n\n // Allow plugins to manipulate the column value\n row.values[column.id] = reduceHooks(\n accessValueHooks,\n row.values[column.id],\n {\n row,\n column,\n instance: getInstance(),\n },\n true\n )\n }\n\n data.forEach((originalRow, rowIndex) =>\n accessRow(originalRow, rowIndex, 0, undefined, rows)\n )\n}\n","import React from 'react'\n\nimport { expandRows } from '../utils'\n\nimport {\n useGetLatest,\n actions,\n useMountedLayoutEffect,\n makePropGetter,\n ensurePluginOrder,\n} from '../publicUtils'\n\n// Actions\nactions.resetExpanded = 'resetExpanded'\nactions.toggleRowExpanded = 'toggleRowExpanded'\nactions.toggleAllRowsExpanded = 'toggleAllRowsExpanded'\n\nexport const useExpanded = hooks => {\n hooks.getToggleAllRowsExpandedProps = [defaultGetToggleAllRowsExpandedProps]\n hooks.getToggleRowExpandedProps = [defaultGetToggleRowExpandedProps]\n hooks.stateReducers.push(reducer)\n hooks.useInstance.push(useInstance)\n hooks.prepareRow.push(prepareRow)\n}\n\nuseExpanded.pluginName = 'useExpanded'\n\nconst defaultGetToggleAllRowsExpandedProps = (props, { instance }) => [\n props,\n {\n onClick: e => {\n instance.toggleAllRowsExpanded()\n },\n style: {\n cursor: 'pointer',\n },\n title: 'Toggle All Rows Expanded',\n },\n]\n\nconst defaultGetToggleRowExpandedProps = (props, { row }) => [\n props,\n {\n onClick: () => {\n row.toggleRowExpanded()\n },\n style: {\n cursor: 'pointer',\n },\n title: 'Toggle Row Expanded',\n },\n]\n\n// Reducer\nfunction reducer(state, action, previousState, instance) {\n if (action.type === actions.init) {\n return {\n expanded: {},\n ...state,\n }\n }\n\n if (action.type === actions.resetExpanded) {\n return {\n ...state,\n expanded: instance.initialState.expanded || {},\n }\n }\n\n if (action.type === actions.toggleAllRowsExpanded) {\n const { value } = action\n const { rowsById } = instance\n\n const isAllRowsExpanded =\n Object.keys(rowsById).length === Object.keys(state.expanded).length\n\n const expandAll = typeof value !== 'undefined' ? value : !isAllRowsExpanded\n\n if (expandAll) {\n const expanded = {}\n\n Object.keys(rowsById).forEach(rowId => {\n expanded[rowId] = true\n })\n\n return {\n ...state,\n expanded,\n }\n }\n\n return {\n ...state,\n expanded: {},\n }\n }\n\n if (action.type === actions.toggleRowExpanded) {\n const { id, value: setExpanded } = action\n const exists = state.expanded[id]\n\n const shouldExist =\n typeof setExpanded !== 'undefined' ? setExpanded : !exists\n\n if (!exists && shouldExist) {\n return {\n ...state,\n expanded: {\n ...state.expanded,\n [id]: true,\n },\n }\n } else if (exists && !shouldExist) {\n const { [id]: _, ...rest } = state.expanded\n return {\n ...state,\n expanded: rest,\n }\n } else {\n return state\n }\n }\n}\n\nfunction useInstance(instance) {\n const {\n data,\n rows,\n rowsById,\n manualExpandedKey = 'expanded',\n paginateExpandedRows = true,\n expandSubRows = true,\n autoResetExpanded = true,\n getHooks,\n plugins,\n state: { expanded },\n dispatch,\n } = instance\n\n ensurePluginOrder(\n plugins,\n ['useSortBy', 'useGroupBy', 'usePivotColumns', 'useGlobalFilter'],\n 'useExpanded'\n )\n\n const getAutoResetExpanded = useGetLatest(autoResetExpanded)\n\n let isAllRowsExpanded = Boolean(\n Object.keys(rowsById).length && Object.keys(expanded).length\n )\n\n if (isAllRowsExpanded) {\n if (Object.keys(rowsById).some(id => !expanded[id])) {\n isAllRowsExpanded = false\n }\n }\n\n // Bypass any effects from firing when this changes\n useMountedLayoutEffect(() => {\n if (getAutoResetExpanded()) {\n dispatch({ type: actions.resetExpanded })\n }\n }, [dispatch, data])\n\n const toggleRowExpanded = React.useCallback(\n (id, value) => {\n dispatch({ type: actions.toggleRowExpanded, id, value })\n },\n [dispatch]\n )\n\n const toggleAllRowsExpanded = React.useCallback(\n value => dispatch({ type: actions.toggleAllRowsExpanded, value }),\n [dispatch]\n )\n\n const expandedRows = React.useMemo(() => {\n if (paginateExpandedRows) {\n return expandRows(rows, { manualExpandedKey, expanded, expandSubRows })\n }\n\n return rows\n }, [paginateExpandedRows, rows, manualExpandedKey, expanded, expandSubRows])\n\n const expandedDepth = React.useMemo(() => findExpandedDepth(expanded), [\n expanded,\n ])\n\n const getInstance = useGetLatest(instance)\n\n const getToggleAllRowsExpandedProps = makePropGetter(\n getHooks().getToggleAllRowsExpandedProps,\n { instance: getInstance() }\n )\n\n Object.assign(instance, {\n preExpandedRows: rows,\n expandedRows,\n rows: expandedRows,\n expandedDepth,\n isAllRowsExpanded,\n toggleRowExpanded,\n toggleAllRowsExpanded,\n getToggleAllRowsExpandedProps,\n })\n}\n\nfunction prepareRow(row, { instance: { getHooks }, instance }) {\n row.toggleRowExpanded = set => instance.toggleRowExpanded(row.id, set)\n\n row.getToggleRowExpandedProps = makePropGetter(\n getHooks().getToggleRowExpandedProps,\n {\n instance,\n row,\n }\n )\n}\n\nfunction findExpandedDepth(expanded) {\n let maxDepth = 0\n\n Object.keys(expanded).forEach(id => {\n const splitId = id.split('.')\n maxDepth = Math.max(maxDepth, splitId.length)\n })\n\n return maxDepth\n}\n","export const text = (rows, ids, filterValue) => {\n rows = rows.filter(row => {\n return ids.some(id => {\n const rowValue = row.values[id]\n return String(rowValue)\n .toLowerCase()\n .includes(String(filterValue).toLowerCase())\n })\n })\n return rows\n}\n\ntext.autoRemove = val => !val\n\nexport const exactText = (rows, ids, filterValue) => {\n return rows.filter(row => {\n return ids.some(id => {\n const rowValue = row.values[id]\n return rowValue !== undefined\n ? String(rowValue).toLowerCase() === String(filterValue).toLowerCase()\n : true\n })\n })\n}\n\nexactText.autoRemove = val => !val\n\nexport const exactTextCase = (rows, ids, filterValue) => {\n return rows.filter(row => {\n return ids.some(id => {\n const rowValue = row.values[id]\n return rowValue !== undefined\n ? String(rowValue) === String(filterValue)\n : true\n })\n })\n}\n\nexactTextCase.autoRemove = val => !val\n\nexport const includes = (rows, ids, filterValue) => {\n return rows.filter(row => {\n return ids.some(id => {\n const rowValue = row.values[id]\n return rowValue.includes(filterValue)\n })\n })\n}\n\nincludes.autoRemove = val => !val || !val.length\n\nexport const includesAll = (rows, ids, filterValue) => {\n return rows.filter(row => {\n return ids.some(id => {\n const rowValue = row.values[id]\n return (\n rowValue &&\n rowValue.length &&\n filterValue.every(val => rowValue.includes(val))\n )\n })\n })\n}\n\nincludesAll.autoRemove = val => !val || !val.length\n\nexport const includesSome = (rows, ids, filterValue) => {\n return rows.filter(row => {\n return ids.some(id => {\n const rowValue = row.values[id]\n return (\n rowValue &&\n rowValue.length &&\n filterValue.some(val => rowValue.includes(val))\n )\n })\n })\n}\n\nincludesSome.autoRemove = val => !val || !val.length\n\nexport const includesValue = (rows, ids, filterValue) => {\n return rows.filter(row => {\n return ids.some(id => {\n const rowValue = row.values[id]\n return filterValue.includes(rowValue)\n })\n })\n}\n\nincludesValue.autoRemove = val => !val || !val.length\n\nexport const exact = (rows, ids, filterValue) => {\n return rows.filter(row => {\n return ids.some(id => {\n const rowValue = row.values[id]\n return rowValue === filterValue\n })\n })\n}\n\nexact.autoRemove = val => typeof val === 'undefined'\n\nexport const equals = (rows, ids, filterValue) => {\n return rows.filter(row => {\n return ids.some(id => {\n const rowValue = row.values[id]\n // eslint-disable-next-line eqeqeq\n return rowValue == filterValue\n })\n })\n}\n\nequals.autoRemove = val => val == null\n\nexport const between = (rows, ids, filterValue) => {\n let [min, max] = filterValue || []\n\n min = typeof min === 'number' ? min : -Infinity\n max = typeof max === 'number' ? max : Infinity\n\n if (min > max) {\n const temp = min\n min = max\n max = temp\n }\n\n return rows.filter(row => {\n return ids.some(id => {\n const rowValue = row.values[id]\n return rowValue >= min && rowValue <= max\n })\n })\n}\n\nbetween.autoRemove = val =>\n !val || (typeof val[0] !== 'number' && typeof val[1] !== 'number')\n","import React from 'react'\n\nimport {\n getFirstDefined,\n getFilterMethod,\n shouldAutoRemoveFilter,\n} from '../utils'\n\nimport {\n actions,\n useGetLatest,\n functionalUpdate,\n useMountedLayoutEffect,\n} from '../publicUtils'\n\nimport * as filterTypes from '../filterTypes'\n\n// Actions\nactions.resetFilters = 'resetFilters'\nactions.setFilter = 'setFilter'\nactions.setAllFilters = 'setAllFilters'\n\nexport const useFilters = hooks => {\n hooks.stateReducers.push(reducer)\n hooks.useInstance.push(useInstance)\n}\n\nuseFilters.pluginName = 'useFilters'\n\nfunction reducer(state, action, previousState, instance) {\n if (action.type === actions.init) {\n return {\n filters: [],\n ...state,\n }\n }\n\n if (action.type === actions.resetFilters) {\n return {\n ...state,\n filters: instance.initialState.filters || [],\n }\n }\n\n if (action.type === actions.setFilter) {\n const { columnId, filterValue } = action\n const { allColumns, filterTypes: userFilterTypes } = instance\n\n const column = allColumns.find(d => d.id === columnId)\n\n if (!column) {\n throw new Error(\n `React-Table: Could not find a column with id: ${columnId}`\n )\n }\n\n const filterMethod = getFilterMethod(\n column.filter,\n userFilterTypes || {},\n filterTypes\n )\n\n const previousfilter = state.filters.find(d => d.id === columnId)\n\n const newFilter = functionalUpdate(\n filterValue,\n previousfilter && previousfilter.value\n )\n\n //\n if (shouldAutoRemoveFilter(filterMethod.autoRemove, newFilter, column)) {\n return {\n ...state,\n filters: state.filters.filter(d => d.id !== columnId),\n }\n }\n\n if (previousfilter) {\n return {\n ...state,\n filters: state.filters.map(d => {\n if (d.id === columnId) {\n return { id: columnId, value: newFilter }\n }\n return d\n }),\n }\n }\n\n return {\n ...state,\n filters: [...state.filters, { id: columnId, value: newFilter }],\n }\n }\n\n if (action.type === actions.setAllFilters) {\n const { filters } = action\n const { allColumns, filterTypes: userFilterTypes } = instance\n\n return {\n ...state,\n // Filter out undefined values\n filters: functionalUpdate(filters, state.filters).filter(filter => {\n const column = allColumns.find(d => d.id === filter.id)\n const filterMethod = getFilterMethod(\n column.filter,\n userFilterTypes || {},\n filterTypes\n )\n\n if (\n shouldAutoRemoveFilter(filterMethod.autoRemove, filter.value, column)\n ) {\n return false\n }\n return true\n }),\n }\n }\n}\n\nfunction useInstance(instance) {\n const {\n data,\n rows,\n flatRows,\n rowsById,\n allColumns,\n filterTypes: userFilterTypes,\n manualFilters,\n defaultCanFilter = false,\n disableFilters,\n state: { filters },\n dispatch,\n autoResetFilters = true,\n } = instance\n\n const setFilter = React.useCallback(\n (columnId, filterValue) => {\n dispatch({ type: actions.setFilter, columnId, filterValue })\n },\n [dispatch]\n )\n\n const setAllFilters = React.useCallback(\n filters => {\n dispatch({\n type: actions.setAllFilters,\n filters,\n })\n },\n [dispatch]\n )\n\n allColumns.forEach(column => {\n const {\n id,\n accessor,\n defaultCanFilter: columnDefaultCanFilter,\n disableFilters: columnDisableFilters,\n } = column\n\n // Determine if a column is filterable\n column.canFilter = accessor\n ? getFirstDefined(\n columnDisableFilters === true ? false : undefined,\n disableFilters === true ? false : undefined,\n true\n )\n : getFirstDefined(columnDefaultCanFilter, defaultCanFilter, false)\n\n // Provide the column a way of updating the filter value\n column.setFilter = val => setFilter(column.id, val)\n\n // Provide the current filter value to the column for\n // convenience\n const found = filters.find(d => d.id === id)\n column.filterValue = found && found.value\n })\n\n const [\n filteredRows,\n filteredFlatRows,\n filteredRowsById,\n ] = React.useMemo(() => {\n if (manualFilters || !filters.length) {\n return [rows, flatRows, rowsById]\n }\n\n const filteredFlatRows = []\n const filteredRowsById = {}\n\n // Filters top level and nested rows\n const filterRows = (rows, depth = 0) => {\n let filteredRows = rows\n\n filteredRows = filters.reduce(\n (filteredSoFar, { id: columnId, value: filterValue }) => {\n // Find the filters column\n const column = allColumns.find(d => d.id === columnId)\n\n if (!column) {\n return filteredSoFar\n }\n\n if (depth === 0) {\n column.preFilteredRows = filteredSoFar\n }\n\n const filterMethod = getFilterMethod(\n column.filter,\n userFilterTypes || {},\n filterTypes\n )\n\n if (!filterMethod) {\n console.warn(\n `Could not find a valid 'column.filter' for column with the ID: ${column.id}.`\n )\n return filteredSoFar\n }\n\n // Pass the rows, id, filterValue and column to the filterMethod\n // to get the filtered rows back\n column.filteredRows = filterMethod(\n filteredSoFar,\n [columnId],\n filterValue\n )\n\n return column.filteredRows\n },\n rows\n )\n\n // Apply the filter to any subRows\n // We technically could do this recursively in the above loop,\n // but that would severely hinder the API for the user, since they\n // would be required to do that recursion in some scenarios\n filteredRows.forEach(row => {\n filteredFlatRows.push(row)\n filteredRowsById[row.id] = row\n if (!row.subRows) {\n return\n }\n\n row.subRows =\n row.subRows && row.subRows.length > 0\n ? filterRows(row.subRows, depth + 1)\n : row.subRows\n })\n\n return filteredRows\n }\n\n return [filterRows(rows), filteredFlatRows, filteredRowsById]\n }, [\n manualFilters,\n filters,\n rows,\n flatRows,\n rowsById,\n allColumns,\n userFilterTypes,\n ])\n\n React.useMemo(() => {\n // Now that each filtered column has it's partially filtered rows,\n // lets assign the final filtered rows to all of the other columns\n const nonFilteredColumns = allColumns.filter(\n column => !filters.find(d => d.id === column.id)\n )\n\n // This essentially enables faceted filter options to be built easily\n // using every column's preFilteredRows value\n nonFilteredColumns.forEach(column => {\n column.preFilteredRows = filteredRows\n column.filteredRows = filteredRows\n })\n }, [filteredRows, filters, allColumns])\n\n const getAutoResetFilters = useGetLatest(autoResetFilters)\n\n useMountedLayoutEffect(() => {\n if (getAutoResetFilters()) {\n dispatch({ type: actions.resetFilters })\n }\n }, [dispatch, manualFilters ? null : data])\n\n Object.assign(instance, {\n preFilteredRows: rows,\n preFilteredFlatRows: flatRows,\n preFilteredRowsById: rowsById,\n filteredRows,\n filteredFlatRows,\n filteredRowsById,\n rows: filteredRows,\n flatRows: filteredFlatRows,\n rowsById: filteredRowsById,\n setFilter,\n setAllFilters,\n })\n}\n","import React from 'react'\n\nimport {\n getFilterMethod,\n shouldAutoRemoveFilter,\n getFirstDefined,\n} from '../utils'\n\nimport {\n actions,\n useMountedLayoutEffect,\n functionalUpdate,\n useGetLatest,\n} from '../publicUtils'\n\nimport * as filterTypes from '../filterTypes'\n\n// Actions\nactions.resetGlobalFilter = 'resetGlobalFilter'\nactions.setGlobalFilter = 'setGlobalFilter'\n\nexport const useGlobalFilter = hooks => {\n hooks.stateReducers.push(reducer)\n hooks.useInstance.push(useInstance)\n}\n\nuseGlobalFilter.pluginName = 'useGlobalFilter'\n\nfunction reducer(state, action, previousState, instance) {\n if (action.type === actions.resetGlobalFilter) {\n return {\n ...state,\n globalFilter: instance.initialState.globalFilter || undefined,\n }\n }\n\n if (action.type === actions.setGlobalFilter) {\n const { filterValue } = action\n const { userFilterTypes } = instance\n\n const filterMethod = getFilterMethod(\n instance.globalFilter,\n userFilterTypes || {},\n filterTypes\n )\n\n const newFilter = functionalUpdate(filterValue, state.globalFilter)\n\n //\n if (shouldAutoRemoveFilter(filterMethod.autoRemove, newFilter)) {\n const { globalFilter, ...stateWithoutGlobalFilter } = state\n return stateWithoutGlobalFilter\n }\n\n return {\n ...state,\n globalFilter: newFilter,\n }\n }\n}\n\nfunction useInstance(instance) {\n const {\n data,\n rows,\n flatRows,\n rowsById,\n allColumns,\n filterTypes: userFilterTypes,\n globalFilter,\n manualGlobalFilter,\n state: { globalFilter: globalFilterValue },\n dispatch,\n autoResetGlobalFilter = true,\n disableGlobalFilter,\n } = instance\n\n const setGlobalFilter = React.useCallback(\n filterValue => {\n dispatch({ type: actions.setGlobalFilter, filterValue })\n },\n [dispatch]\n )\n\n // TODO: Create a filter cache for incremental high speed multi-filtering\n // This gets pretty complicated pretty fast, since you have to maintain a\n // cache for each row group (top-level rows, and each row's recursive subrows)\n // This would make multi-filtering a lot faster though. Too far?\n\n const [\n globalFilteredRows,\n globalFilteredFlatRows,\n globalFilteredRowsById,\n ] = React.useMemo(() => {\n if (manualGlobalFilter || typeof globalFilterValue === 'undefined') {\n return [rows, flatRows, rowsById]\n }\n\n const filteredFlatRows = []\n const filteredRowsById = {}\n\n const filterMethod = getFilterMethod(\n globalFilter,\n userFilterTypes || {},\n filterTypes\n )\n\n if (!filterMethod) {\n console.warn(`Could not find a valid 'globalFilter' option.`)\n return rows\n }\n\n allColumns.forEach(column => {\n const { disableGlobalFilter: columnDisableGlobalFilter } = column\n\n column.canFilter = getFirstDefined(\n columnDisableGlobalFilter === true ? false : undefined,\n disableGlobalFilter === true ? false : undefined,\n true\n )\n })\n\n const filterableColumns = allColumns.filter(c => c.canFilter === true)\n\n // Filters top level and nested rows\n const filterRows = filteredRows => {\n filteredRows = filterMethod(\n filteredRows,\n filterableColumns.map(d => d.id),\n globalFilterValue\n )\n\n filteredRows.forEach(row => {\n filteredFlatRows.push(row)\n filteredRowsById[row.id] = row\n\n row.subRows =\n row.subRows && row.subRows.length\n ? filterRows(row.subRows)\n : row.subRows\n })\n\n return filteredRows\n }\n\n return [filterRows(rows), filteredFlatRows, filteredRowsById]\n }, [\n manualGlobalFilter,\n globalFilterValue,\n globalFilter,\n userFilterTypes,\n allColumns,\n rows,\n flatRows,\n rowsById,\n disableGlobalFilter,\n ])\n\n const getAutoResetGlobalFilter = useGetLatest(autoResetGlobalFilter)\n\n useMountedLayoutEffect(() => {\n if (getAutoResetGlobalFilter()) {\n dispatch({ type: actions.resetGlobalFilter })\n }\n }, [dispatch, manualGlobalFilter ? null : data])\n\n Object.assign(instance, {\n preGlobalFilteredRows: rows,\n preGlobalFilteredFlatRows: flatRows,\n preGlobalFilteredRowsById: rowsById,\n globalFilteredRows,\n globalFilteredFlatRows,\n globalFilteredRowsById,\n rows: globalFilteredRows,\n flatRows: globalFilteredFlatRows,\n rowsById: globalFilteredRowsById,\n setGlobalFilter,\n disableGlobalFilter,\n })\n}\n","export function sum(values, aggregatedValues) {\n // It's faster to just add the aggregations together instead of\n // process leaf nodes individually\n return aggregatedValues.reduce(\n (sum, next) => sum + (typeof next === 'number' ? next : 0),\n 0\n )\n}\n\nexport function min(values) {\n let min = values[0] || 0\n\n values.forEach(value => {\n if (typeof value === 'number') {\n min = Math.min(min, value)\n }\n })\n\n return min\n}\n\nexport function max(values) {\n let max = values[0] || 0\n\n values.forEach(value => {\n if (typeof value === 'number') {\n max = Math.max(max, value)\n }\n })\n\n return max\n}\n\nexport function minMax(values) {\n let min = values[0] || 0\n let max = values[0] || 0\n\n values.forEach(value => {\n if (typeof value === 'number') {\n min = Math.min(min, value)\n max = Math.max(max, value)\n }\n })\n\n return `${min}..${max}`\n}\n\nexport function average(values) {\n return sum(null, values) / values.length\n}\n\nexport function median(values) {\n if (!values.length) {\n return null\n }\n\n const mid = Math.floor(values.length / 2)\n const nums = [...values].sort((a, b) => a - b)\n return values.length % 2 !== 0 ? nums[mid] : (nums[mid - 1] + nums[mid]) / 2\n}\n\nexport function unique(values) {\n return Array.from(new Set(values).values())\n}\n\nexport function uniqueCount(values) {\n return new Set(values).size\n}\n\nexport function count(values) {\n return values.length\n}\n","import React from 'react'\n\nimport * as aggregations from '../aggregations'\n\nimport { getFirstDefined, flattenBy } from '../utils'\n\nimport {\n actions,\n makePropGetter,\n ensurePluginOrder,\n useMountedLayoutEffect,\n useGetLatest,\n} from '../publicUtils'\n\nconst emptyArray = []\nconst emptyObject = {}\n\n// Actions\nactions.resetGroupBy = 'resetGroupBy'\nactions.setGroupBy = 'setGroupBy'\nactions.toggleGroupBy = 'toggleGroupBy'\n\nexport const useGroupBy = hooks => {\n hooks.getGroupByToggleProps = [defaultGetGroupByToggleProps]\n hooks.stateReducers.push(reducer)\n hooks.visibleColumnsDeps.push((deps, { instance }) => [\n ...deps,\n instance.state.groupBy,\n ])\n hooks.visibleColumns.push(visibleColumns)\n hooks.useInstance.push(useInstance)\n hooks.prepareRow.push(prepareRow)\n}\n\nuseGroupBy.pluginName = 'useGroupBy'\n\nconst defaultGetGroupByToggleProps = (props, { header }) => [\n props,\n {\n onClick: header.canGroupBy\n ? e => {\n e.persist()\n header.toggleGroupBy()\n }\n : undefined,\n style: {\n cursor: header.canGroupBy ? 'pointer' : undefined,\n },\n title: 'Toggle GroupBy',\n },\n]\n\n// Reducer\nfunction reducer(state, action, previousState, instance) {\n if (action.type === actions.init) {\n return {\n groupBy: [],\n ...state,\n }\n }\n\n if (action.type === actions.resetGroupBy) {\n return {\n ...state,\n groupBy: instance.initialState.groupBy || [],\n }\n }\n\n if (action.type === actions.setGroupBy) {\n const { value } = action\n return {\n ...state,\n groupBy: value,\n }\n }\n\n if (action.type === actions.toggleGroupBy) {\n const { columnId, value: setGroupBy } = action\n\n const resolvedGroupBy =\n typeof setGroupBy !== 'undefined'\n ? setGroupBy\n : !state.groupBy.includes(columnId)\n\n if (resolvedGroupBy) {\n return {\n ...state,\n groupBy: [...state.groupBy, columnId],\n }\n }\n\n return {\n ...state,\n groupBy: state.groupBy.filter(d => d !== columnId),\n }\n }\n}\n\nfunction visibleColumns(\n columns,\n {\n instance: {\n state: { groupBy },\n },\n }\n) {\n // Sort grouped columns to the start of the column list\n // before the headers are built\n\n const groupByColumns = groupBy\n .map(g => columns.find(col => col.id === g))\n .filter(Boolean)\n\n const nonGroupByColumns = columns.filter(col => !groupBy.includes(col.id))\n\n columns = [...groupByColumns, ...nonGroupByColumns]\n\n columns.forEach(column => {\n column.isGrouped = groupBy.includes(column.id)\n column.groupedIndex = groupBy.indexOf(column.id)\n })\n\n return columns\n}\n\nconst defaultUserAggregations = {}\n\nfunction useInstance(instance) {\n const {\n data,\n rows,\n flatRows,\n rowsById,\n allColumns,\n flatHeaders,\n groupByFn = defaultGroupByFn,\n manualGroupBy,\n aggregations: userAggregations = defaultUserAggregations,\n plugins,\n state: { groupBy },\n dispatch,\n autoResetGroupBy = true,\n disableGroupBy,\n defaultCanGroupBy,\n getHooks,\n } = instance\n\n ensurePluginOrder(plugins, ['useColumnOrder', 'useFilters'], 'useGroupBy')\n\n const getInstance = useGetLatest(instance)\n\n allColumns.forEach(column => {\n const {\n accessor,\n defaultGroupBy: defaultColumnGroupBy,\n disableGroupBy: columnDisableGroupBy,\n } = column\n\n column.canGroupBy = accessor\n ? getFirstDefined(\n column.canGroupBy,\n columnDisableGroupBy === true ? false : undefined,\n disableGroupBy === true ? false : undefined,\n true\n )\n : getFirstDefined(\n column.canGroupBy,\n defaultColumnGroupBy,\n defaultCanGroupBy,\n false\n )\n\n if (column.canGroupBy) {\n column.toggleGroupBy = () => instance.toggleGroupBy(column.id)\n }\n\n column.Aggregated = column.Aggregated || column.Cell\n })\n\n const toggleGroupBy = React.useCallback(\n (columnId, value) => {\n dispatch({ type: actions.toggleGroupBy, columnId, value })\n },\n [dispatch]\n )\n\n const setGroupBy = React.useCallback(\n value => {\n dispatch({ type: actions.setGroupBy, value })\n },\n [dispatch]\n )\n\n flatHeaders.forEach(header => {\n header.getGroupByToggleProps = makePropGetter(\n getHooks().getGroupByToggleProps,\n { instance: getInstance(), header }\n )\n })\n\n const [\n groupedRows,\n groupedFlatRows,\n groupedRowsById,\n onlyGroupedFlatRows,\n onlyGroupedRowsById,\n nonGroupedFlatRows,\n nonGroupedRowsById,\n ] = React.useMemo(() => {\n if (manualGroupBy || !groupBy.length) {\n return [\n rows,\n flatRows,\n rowsById,\n emptyArray,\n emptyObject,\n flatRows,\n rowsById,\n ]\n }\n\n // Ensure that the list of filtered columns exist\n const existingGroupBy = groupBy.filter(g =>\n allColumns.find(col => col.id === g)\n )\n\n // Find the columns that can or are aggregating\n // Uses each column to aggregate rows into a single value\n const aggregateRowsToValues = (leafRows, groupedRows, depth) => {\n const values = {}\n\n allColumns.forEach(column => {\n // Don't aggregate columns that are in the groupBy\n if (existingGroupBy.includes(column.id)) {\n values[column.id] = groupedRows[0]\n ? groupedRows[0].values[column.id]\n : null\n return\n }\n\n // Aggregate the values\n let aggregateFn =\n typeof column.aggregate === 'function'\n ? column.aggregate\n : userAggregations[column.aggregate] ||\n aggregations[column.aggregate]\n\n if (aggregateFn) {\n // Get the columnValues to aggregate\n const groupedValues = groupedRows.map(row => row.values[column.id])\n\n // Get the columnValues to aggregate\n const leafValues = leafRows.map(row => {\n let columnValue = row.values[column.id]\n\n if (!depth && column.aggregateValue) {\n const aggregateValueFn =\n typeof column.aggregateValue === 'function'\n ? column.aggregateValue\n : userAggregations[column.aggregateValue] ||\n aggregations[column.aggregateValue]\n\n if (!aggregateValueFn) {\n console.info({ column })\n throw new Error(\n `React Table: Invalid column.aggregateValue option for column listed above`\n )\n }\n\n columnValue = aggregateValueFn(columnValue, row, column)\n }\n return columnValue\n })\n\n values[column.id] = aggregateFn(leafValues, groupedValues)\n } else if (column.aggregate) {\n console.info({ column })\n throw new Error(\n `React Table: Invalid column.aggregate option for column listed above`\n )\n } else {\n values[column.id] = null\n }\n })\n\n return values\n }\n\n let groupedFlatRows = []\n const groupedRowsById = {}\n const onlyGroupedFlatRows = []\n const onlyGroupedRowsById = {}\n const nonGroupedFlatRows = []\n const nonGroupedRowsById = {}\n\n // Recursively group the data\n const groupUpRecursively = (rows, depth = 0, parentId) => {\n // This is the last level, just return the rows\n if (depth === existingGroupBy.length) {\n return rows.map((row) => ({ ...row, depth }))\n }\n\n const columnId = existingGroupBy[depth]\n\n // Group the rows together for this level\n let rowGroupsMap = groupByFn(rows, columnId)\n\n // Peform aggregations for each group\n const aggregatedGroupedRows = Object.entries(rowGroupsMap).map(\n ([groupByVal, groupedRows], index) => {\n let id = `${columnId}:${groupByVal}`\n id = parentId ? `${parentId}>${id}` : id\n\n // First, Recurse to group sub rows before aggregation\n const subRows = groupUpRecursively(groupedRows, depth + 1, id)\n\n // Flatten the leaf rows of the rows in this group\n const leafRows = depth\n ? flattenBy(groupedRows, 'leafRows')\n : groupedRows\n\n const values = aggregateRowsToValues(leafRows, groupedRows, depth)\n\n const row = {\n id,\n isGrouped: true,\n groupByID: columnId,\n groupByVal,\n values,\n subRows,\n leafRows,\n depth,\n index,\n }\n\n subRows.forEach(subRow => {\n groupedFlatRows.push(subRow)\n groupedRowsById[subRow.id] = subRow\n if (subRow.isGrouped) {\n onlyGroupedFlatRows.push(subRow)\n onlyGroupedRowsById[subRow.id] = subRow\n } else {\n nonGroupedFlatRows.push(subRow)\n nonGroupedRowsById[subRow.id] = subRow\n }\n })\n\n return row\n }\n )\n\n return aggregatedGroupedRows\n }\n\n const groupedRows = groupUpRecursively(rows)\n\n groupedRows.forEach(subRow => {\n groupedFlatRows.push(subRow)\n groupedRowsById[subRow.id] = subRow\n if (subRow.isGrouped) {\n onlyGroupedFlatRows.push(subRow)\n onlyGroupedRowsById[subRow.id] = subRow\n } else {\n nonGroupedFlatRows.push(subRow)\n nonGroupedRowsById[subRow.id] = subRow\n }\n })\n\n // Assign the new data\n return [\n groupedRows,\n groupedFlatRows,\n groupedRowsById,\n onlyGroupedFlatRows,\n onlyGroupedRowsById,\n nonGroupedFlatRows,\n nonGroupedRowsById,\n ]\n }, [\n manualGroupBy,\n groupBy,\n rows,\n flatRows,\n rowsById,\n allColumns,\n userAggregations,\n groupByFn,\n ])\n\n const getAutoResetGroupBy = useGetLatest(autoResetGroupBy)\n\n useMountedLayoutEffect(() => {\n if (getAutoResetGroupBy()) {\n dispatch({ type: actions.resetGroupBy })\n }\n }, [dispatch, manualGroupBy ? null : data])\n\n Object.assign(instance, {\n preGroupedRows: rows,\n preGroupedFlatRow: flatRows,\n preGroupedRowsById: rowsById,\n groupedRows,\n groupedFlatRows,\n groupedRowsById,\n onlyGroupedFlatRows,\n onlyGroupedRowsById,\n nonGroupedFlatRows,\n nonGroupedRowsById,\n rows: groupedRows,\n flatRows: groupedFlatRows,\n rowsById: groupedRowsById,\n toggleGroupBy,\n setGroupBy,\n })\n}\n\nfunction prepareRow(row) {\n row.allCells.forEach(cell => {\n // Grouped cells are in the groupBy and the pivot cell for the row\n cell.isGrouped = cell.column.isGrouped && cell.column.id === row.groupByID\n // Placeholder cells are any columns in the groupBy that are not grouped\n cell.isPlaceholder = !cell.isGrouped && cell.column.isGrouped\n // Aggregated cells are not grouped, not repeated, but still have subRows\n cell.isAggregated =\n !cell.isGrouped && !cell.isPlaceholder && row.subRows?.length\n })\n}\n\nexport function defaultGroupByFn(rows, columnId) {\n return rows.reduce((prev, row, i) => {\n // TODO: Might want to implement a key serializer here so\n // irregular column values can still be grouped if needed?\n const resKey = `${row.values[columnId]}`\n prev[resKey] = Array.isArray(prev[resKey]) ? prev[resKey] : []\n prev[resKey].push(row)\n return prev\n }, {})\n}\n","const reSplitAlphaNumeric = /([0-9]+)/gm\n\n// Mixed sorting is slow, but very inclusive of many edge cases.\n// It handles numbers, mixed alphanumeric combinations, and even\n// null, undefined, and Infinity\nexport const alphanumeric = (rowA, rowB, columnId) => {\n let [a, b] = getRowValuesByColumnID(rowA, rowB, columnId)\n\n // Force to strings (or \"\" for unsupported types)\n a = toString(a)\n b = toString(b)\n\n // Split on number groups, but keep the delimiter\n // Then remove falsey split values\n a = a.split(reSplitAlphaNumeric).filter(Boolean)\n b = b.split(reSplitAlphaNumeric).filter(Boolean)\n\n // While\n while (a.length && b.length) {\n let aa = a.shift()\n let bb = b.shift()\n\n const an = parseInt(aa, 10)\n const bn = parseInt(bb, 10)\n\n const combo = [an, bn].sort()\n\n // Both are string\n if (isNaN(combo[0])) {\n if (aa > bb) {\n return 1\n }\n if (bb > aa) {\n return -1\n }\n continue\n }\n\n // One is a string, one is a number\n if (isNaN(combo[1])) {\n return isNaN(an) ? -1 : 1\n }\n\n // Both are numbers\n if (an > bn) {\n return 1\n }\n if (bn > an) {\n return -1\n }\n }\n\n return a.length - b.length\n}\nexport function datetime(rowA, rowB, columnId) {\n let [a, b] = getRowValuesByColumnID(rowA, rowB, columnId)\n\n a = a.getTime()\n b = b.getTime()\n\n return compareBasic(a, b)\n}\n\nexport function basic(rowA, rowB, columnId) {\n let [a, b] = getRowValuesByColumnID(rowA, rowB, columnId)\n\n return compareBasic(a, b)\n}\n\nexport function string(rowA, rowB, columnId) {\n let [a, b] = getRowValuesByColumnID(rowA, rowB, columnId)\n\n a = a.split('').filter(Boolean)\n b = b.split('').filter(Boolean)\n\n while (a.length && b.length) {\n let aa = a.shift()\n let bb = b.shift()\n\n let alower = aa.toLowerCase()\n let blower = bb.toLowerCase()\n\n // Case insensitive comparison until characters match\n if (alower > blower) {\n return 1\n }\n if (blower > alower) {\n return -1\n }\n // If lowercase characters are identical\n if (aa > bb) {\n return 1\n }\n if (bb > aa) {\n return -1\n }\n continue\n }\n\n return a.length - b.length\n}\n\nexport function number(rowA, rowB, columnId) {\n let [a, b] = getRowValuesByColumnID(rowA, rowB, columnId)\n\n const replaceNonNumeric = /[^0-9.]/gi\n\n a = Number(String(a).replace(replaceNonNumeric, ''))\n b = Number(String(b).replace(replaceNonNumeric, ''))\n\n return compareBasic(a, b)\n}\n\n// Utils\n\nfunction compareBasic(a, b) {\n return a === b ? 0 : a > b ? 1 : -1\n}\n\nfunction getRowValuesByColumnID(row1, row2, columnId) {\n return [row1.values[columnId], row2.values[columnId]]\n}\n\nfunction toString(a) {\n if (typeof a === 'number') {\n if (isNaN(a) || a === Infinity || a === -Infinity) {\n return ''\n }\n return String(a)\n }\n if (typeof a === 'string') {\n return a\n }\n return ''\n}\n","import React from 'react'\n\nimport {\n actions,\n ensurePluginOrder,\n defaultColumn,\n makePropGetter,\n useGetLatest,\n useMountedLayoutEffect,\n} from '../publicUtils'\n\nimport { getFirstDefined, isFunction } from '../utils'\n\nimport * as sortTypes from '../sortTypes'\n\n// Actions\nactions.resetSortBy = 'resetSortBy'\nactions.setSortBy = 'setSortBy'\nactions.toggleSortBy = 'toggleSortBy'\nactions.clearSortBy = 'clearSortBy'\n\ndefaultColumn.sortType = 'alphanumeric'\ndefaultColumn.sortDescFirst = false\n\nexport const useSortBy = hooks => {\n hooks.getSortByToggleProps = [defaultGetSortByToggleProps]\n hooks.stateReducers.push(reducer)\n hooks.useInstance.push(useInstance)\n}\n\nuseSortBy.pluginName = 'useSortBy'\n\nconst defaultGetSortByToggleProps = (props, { instance, column }) => {\n const { isMultiSortEvent = e => e.shiftKey } = instance\n\n return [\n props,\n {\n onClick: column.canSort\n ? e => {\n e.persist()\n column.toggleSortBy(\n undefined,\n !instance.disableMultiSort && isMultiSortEvent(e)\n )\n }\n : undefined,\n style: {\n cursor: column.canSort ? 'pointer' : undefined,\n },\n title: column.canSort ? 'Toggle SortBy' : undefined,\n },\n ]\n}\n\n// Reducer\nfunction reducer(state, action, previousState, instance) {\n if (action.type === actions.init) {\n return {\n sortBy: [],\n ...state,\n }\n }\n\n if (action.type === actions.resetSortBy) {\n return {\n ...state,\n sortBy: instance.initialState.sortBy || [],\n }\n }\n\n if (action.type === actions.clearSortBy) {\n const { sortBy } = state\n const newSortBy = sortBy.filter(d => d.id !== action.columnId)\n\n return {\n ...state,\n sortBy: newSortBy,\n }\n }\n\n if (action.type === actions.setSortBy) {\n const { sortBy } = action\n return {\n ...state,\n sortBy,\n }\n }\n\n if (action.type === actions.toggleSortBy) {\n const { columnId, desc, multi } = action\n\n const {\n allColumns,\n disableMultiSort,\n disableSortRemove,\n disableMultiRemove,\n maxMultiSortColCount = Number.MAX_SAFE_INTEGER,\n } = instance\n\n const { sortBy } = state\n\n // Find the column for this columnId\n const column = allColumns.find(d => d.id === columnId)\n const { sortDescFirst } = column\n\n // Find any existing sortBy for this column\n const existingSortBy = sortBy.find(d => d.id === columnId)\n const existingIndex = sortBy.findIndex(d => d.id === columnId)\n const hasDescDefined = typeof desc !== 'undefined' && desc !== null\n\n let newSortBy = []\n\n // What should we do with this sort action?\n let sortAction\n\n if (!disableMultiSort && multi) {\n if (existingSortBy) {\n sortAction = 'toggle'\n } else {\n sortAction = 'add'\n }\n } else {\n // Normal mode\n if (existingIndex !== sortBy.length - 1 || sortBy.length !== 1) {\n sortAction = 'replace'\n } else if (existingSortBy) {\n sortAction = 'toggle'\n } else {\n sortAction = 'replace'\n }\n }\n\n // Handle toggle states that will remove the sortBy\n if (\n sortAction === 'toggle' && // Must be toggling\n !disableSortRemove && // If disableSortRemove, disable in general\n !hasDescDefined && // Must not be setting desc\n (multi ? !disableMultiRemove : true) && // If multi, don't allow if disableMultiRemove\n ((existingSortBy && // Finally, detect if it should indeed be removed\n existingSortBy.desc &&\n !sortDescFirst) ||\n (!existingSortBy.desc && sortDescFirst))\n ) {\n sortAction = 'remove'\n }\n\n if (sortAction === 'replace') {\n newSortBy = [\n {\n id: columnId,\n desc: hasDescDefined ? desc : sortDescFirst,\n },\n ]\n } else if (sortAction === 'add') {\n newSortBy = [\n ...sortBy,\n {\n id: columnId,\n desc: hasDescDefined ? desc : sortDescFirst,\n },\n ]\n // Take latest n columns\n newSortBy.splice(0, newSortBy.length - maxMultiSortColCount)\n } else if (sortAction === 'toggle') {\n // This flips (or sets) the\n newSortBy = sortBy.map(d => {\n if (d.id === columnId) {\n return {\n ...d,\n desc: hasDescDefined ? desc : !existingSortBy.desc,\n }\n }\n return d\n })\n } else if (sortAction === 'remove') {\n newSortBy = sortBy.filter(d => d.id !== columnId)\n }\n\n return {\n ...state,\n sortBy: newSortBy,\n }\n }\n}\n\nfunction useInstance(instance) {\n const {\n data,\n rows,\n flatRows,\n allColumns,\n orderByFn = defaultOrderByFn,\n sortTypes: userSortTypes,\n manualSortBy,\n defaultCanSort,\n disableSortBy,\n flatHeaders,\n state: { sortBy },\n dispatch,\n plugins,\n getHooks,\n autoResetSortBy = true,\n } = instance\n\n ensurePluginOrder(\n plugins,\n ['useFilters', 'useGlobalFilter', 'useGroupBy', 'usePivotColumns'],\n 'useSortBy'\n )\n\n const setSortBy = React.useCallback(\n sortBy => {\n dispatch({ type: actions.setSortBy, sortBy })\n },\n [dispatch]\n )\n\n // Updates sorting based on a columnId, desc flag and multi flag\n const toggleSortBy = React.useCallback(\n (columnId, desc, multi) => {\n dispatch({ type: actions.toggleSortBy, columnId, desc, multi })\n },\n [dispatch]\n )\n\n // use reference to avoid memory leak in #1608\n const getInstance = useGetLatest(instance)\n\n // Add the getSortByToggleProps method to columns and headers\n flatHeaders.forEach(column => {\n const {\n accessor,\n canSort: defaultColumnCanSort,\n disableSortBy: columnDisableSortBy,\n id,\n } = column\n\n const canSort = accessor\n ? getFirstDefined(\n columnDisableSortBy === true ? false : undefined,\n disableSortBy === true ? false : undefined,\n true\n )\n : getFirstDefined(defaultCanSort, defaultColumnCanSort, false)\n\n column.canSort = canSort\n\n if (column.canSort) {\n column.toggleSortBy = (desc, multi) =>\n toggleSortBy(column.id, desc, multi)\n\n column.clearSortBy = () => {\n dispatch({ type: actions.clearSortBy, columnId: column.id })\n }\n }\n\n column.getSortByToggleProps = makePropGetter(\n getHooks().getSortByToggleProps,\n {\n instance: getInstance(),\n column,\n }\n )\n\n const columnSort = sortBy.find(d => d.id === id)\n column.isSorted = !!columnSort\n column.sortedIndex = sortBy.findIndex(d => d.id === id)\n column.isSortedDesc = column.isSorted ? columnSort.desc : undefined\n })\n\n const [sortedRows, sortedFlatRows] = React.useMemo(() => {\n if (manualSortBy || !sortBy.length) {\n return [rows, flatRows]\n }\n\n const sortedFlatRows = []\n\n // Filter out sortBys that correspond to non existing columns\n const availableSortBy = sortBy.filter(sort =>\n allColumns.find(col => col.id === sort.id)\n )\n\n const sortData = rows => {\n // Use the orderByFn to compose multiple sortBy's together.\n // This will also perform a stable sorting using the row index\n // if needed.\n const sortedData = orderByFn(\n rows,\n availableSortBy.map(sort => {\n // Support custom sorting methods for each column\n const column = allColumns.find(d => d.id === sort.id)\n\n if (!column) {\n throw new Error(\n `React-Table: Could not find a column with id: ${sort.id} while sorting`\n )\n }\n\n const { sortType } = column\n\n // Look up sortBy functions in this order:\n // column function\n // column string lookup on user sortType\n // column string lookup on built-in sortType\n // default function\n // default string lookup on user sortType\n // default string lookup on built-in sortType\n const sortMethod =\n isFunction(sortType) ||\n (userSortTypes || {})[sortType] ||\n sortTypes[sortType]\n\n if (!sortMethod) {\n throw new Error(\n `React-Table: Could not find a valid sortType of '${sortType}' for column '${sort.id}'.`\n )\n }\n\n // Return the correct sortFn.\n // This function should always return in ascending order\n return (a, b) => sortMethod(a, b, sort.id, sort.desc)\n }),\n // Map the directions\n availableSortBy.map(sort => {\n // Detect and use the sortInverted option\n const column = allColumns.find(d => d.id === sort.id)\n\n if (column && column.sortInverted) {\n return sort.desc\n }\n\n return !sort.desc\n })\n )\n\n // If there are sub-rows, sort them\n sortedData.forEach(row => {\n sortedFlatRows.push(row)\n if (!row.subRows || row.subRows.length === 0) {\n return\n }\n row.subRows = sortData(row.subRows)\n })\n\n return sortedData\n }\n\n return [sortData(rows), sortedFlatRows]\n }, [\n manualSortBy,\n sortBy,\n rows,\n flatRows,\n allColumns,\n orderByFn,\n userSortTypes,\n ])\n\n const getAutoResetSortBy = useGetLatest(autoResetSortBy)\n\n useMountedLayoutEffect(() => {\n if (getAutoResetSortBy()) {\n dispatch({ type: actions.resetSortBy })\n }\n }, [manualSortBy ? null : data])\n\n Object.assign(instance, {\n preSortedRows: rows,\n preSortedFlatRows: flatRows,\n sortedRows,\n sortedFlatRows,\n rows: sortedRows,\n flatRows: sortedFlatRows,\n setSortBy,\n toggleSortBy,\n })\n}\n\nexport function defaultOrderByFn(arr, funcs, dirs) {\n return [...arr].sort((rowA, rowB) => {\n for (let i = 0; i < funcs.length; i += 1) {\n const sortFn = funcs[i]\n const desc = dirs[i] === false || dirs[i] === 'desc'\n const sortInt = sortFn(rowA, rowB)\n if (sortInt !== 0) {\n return desc ? -sortInt : sortInt\n }\n }\n return dirs[0] ? rowA.index - rowB.index : rowB.index - rowA.index\n })\n}\n","import React from 'react'\n\n//\n\nimport {\n actions,\n ensurePluginOrder,\n functionalUpdate,\n useMountedLayoutEffect,\n useGetLatest,\n} from '../publicUtils'\n\nimport { expandRows } from '../utils'\n\nconst pluginName = 'usePagination'\n\n// Actions\nactions.resetPage = 'resetPage'\nactions.gotoPage = 'gotoPage'\nactions.setPageSize = 'setPageSize'\n\nexport const usePagination = hooks => {\n hooks.stateReducers.push(reducer)\n hooks.useInstance.push(useInstance)\n}\n\nusePagination.pluginName = pluginName\n\nfunction reducer(state, action, previousState, instance) {\n if (action.type === actions.init) {\n return {\n pageSize: 10,\n pageIndex: 0,\n ...state,\n }\n }\n\n if (action.type === actions.resetPage) {\n return {\n ...state,\n pageIndex: instance.initialState.pageIndex || 0,\n }\n }\n\n if (action.type === actions.gotoPage) {\n const { pageCount, page } = instance\n const newPageIndex = functionalUpdate(action.pageIndex, state.pageIndex)\n let canNavigate = false\n\n if (newPageIndex > state.pageIndex) {\n // next page\n canNavigate =\n pageCount === -1\n ? page.length >= state.pageSize\n : newPageIndex < pageCount\n } else if (newPageIndex < state.pageIndex) {\n // prev page\n canNavigate = newPageIndex > -1\n }\n\n if (!canNavigate) {\n return state\n }\n\n return {\n ...state,\n pageIndex: newPageIndex,\n }\n }\n\n if (action.type === actions.setPageSize) {\n const { pageSize } = action\n const topRowIndex = state.pageSize * state.pageIndex\n const pageIndex = Math.floor(topRowIndex / pageSize)\n\n return {\n ...state,\n pageIndex,\n pageSize,\n }\n }\n}\n\nfunction useInstance(instance) {\n const {\n rows,\n autoResetPage = true,\n manualExpandedKey = 'expanded',\n plugins,\n pageCount: userPageCount,\n paginateExpandedRows = true,\n expandSubRows = true,\n state: {\n pageSize,\n pageIndex,\n expanded,\n globalFilter,\n filters,\n groupBy,\n sortBy,\n },\n dispatch,\n data,\n manualPagination,\n } = instance\n\n ensurePluginOrder(\n plugins,\n ['useGlobalFilter', 'useFilters', 'useGroupBy', 'useSortBy', 'useExpanded'],\n 'usePagination'\n )\n\n const getAutoResetPage = useGetLatest(autoResetPage)\n\n useMountedLayoutEffect(() => {\n if (getAutoResetPage()) {\n dispatch({ type: actions.resetPage })\n }\n }, [\n dispatch,\n manualPagination ? null : data,\n globalFilter,\n filters,\n groupBy,\n sortBy,\n ])\n\n const pageCount = manualPagination\n ? userPageCount\n : Math.ceil(rows.length / pageSize)\n\n const pageOptions = React.useMemo(\n () =>\n pageCount > 0\n ? [...new Array(pageCount)].fill(null).map((d, i) => i)\n : [],\n [pageCount]\n )\n\n const page = React.useMemo(() => {\n let page\n\n if (manualPagination) {\n page = rows\n } else {\n const pageStart = pageSize * pageIndex\n const pageEnd = pageStart + pageSize\n\n page = rows.slice(pageStart, pageEnd)\n }\n\n if (paginateExpandedRows) {\n return page\n }\n\n return expandRows(page, { manualExpandedKey, expanded, expandSubRows })\n }, [\n expandSubRows,\n expanded,\n manualExpandedKey,\n manualPagination,\n pageIndex,\n pageSize,\n paginateExpandedRows,\n rows,\n ])\n\n const canPreviousPage = pageIndex > 0\n const canNextPage =\n pageCount === -1 ? page.length >= pageSize : pageIndex < pageCount - 1\n\n const gotoPage = React.useCallback(\n pageIndex => {\n dispatch({ type: actions.gotoPage, pageIndex })\n },\n [dispatch]\n )\n\n const previousPage = React.useCallback(() => {\n return gotoPage(old => old - 1)\n }, [gotoPage])\n\n const nextPage = React.useCallback(() => {\n return gotoPage(old => old + 1)\n }, [gotoPage])\n\n const setPageSize = React.useCallback(\n pageSize => {\n dispatch({ type: actions.setPageSize, pageSize })\n },\n [dispatch]\n )\n\n Object.assign(instance, {\n pageOptions,\n pageCount,\n page,\n canPreviousPage,\n canNextPage,\n gotoPage,\n previousPage,\n nextPage,\n setPageSize,\n })\n}\n","/* istanbul ignore file */\n\nimport {\n actions,\n makePropGetter,\n ensurePluginOrder,\n useMountedLayoutEffect,\n useGetLatest,\n} from '../publicUtils'\n\nimport { flattenColumns, getFirstDefined } from '../utils'\n\n// Actions\nactions.resetPivot = 'resetPivot'\nactions.togglePivot = 'togglePivot'\n\nexport const _UNSTABLE_usePivotColumns = hooks => {\n hooks.getPivotToggleProps = [defaultGetPivotToggleProps]\n hooks.stateReducers.push(reducer)\n hooks.useInstanceAfterData.push(useInstanceAfterData)\n hooks.allColumns.push(allColumns)\n hooks.accessValue.push(accessValue)\n hooks.materializedColumns.push(materializedColumns)\n hooks.materializedColumnsDeps.push(materializedColumnsDeps)\n hooks.visibleColumns.push(visibleColumns)\n hooks.visibleColumnsDeps.push(visibleColumnsDeps)\n hooks.useInstance.push(useInstance)\n hooks.prepareRow.push(prepareRow)\n}\n\n_UNSTABLE_usePivotColumns.pluginName = 'usePivotColumns'\n\nconst defaultPivotColumns = []\n\nconst defaultGetPivotToggleProps = (props, { header }) => [\n props,\n {\n onClick: header.canPivot\n ? e => {\n e.persist()\n header.togglePivot()\n }\n : undefined,\n style: {\n cursor: header.canPivot ? 'pointer' : undefined,\n },\n title: 'Toggle Pivot',\n },\n]\n\n// Reducer\nfunction reducer(state, action, previousState, instance) {\n if (action.type === actions.init) {\n return {\n pivotColumns: defaultPivotColumns,\n ...state,\n }\n }\n\n if (action.type === actions.resetPivot) {\n return {\n ...state,\n pivotColumns: instance.initialState.pivotColumns || defaultPivotColumns,\n }\n }\n\n if (action.type === actions.togglePivot) {\n const { columnId, value: setPivot } = action\n\n const resolvedPivot =\n typeof setPivot !== 'undefined'\n ? setPivot\n : !state.pivotColumns.includes(columnId)\n\n if (resolvedPivot) {\n return {\n ...state,\n pivotColumns: [...state.pivotColumns, columnId],\n }\n }\n\n return {\n ...state,\n pivotColumns: state.pivotColumns.filter(d => d !== columnId),\n }\n }\n}\n\nfunction useInstanceAfterData(instance) {\n instance.allColumns.forEach(column => {\n column.isPivotSource = instance.state.pivotColumns.includes(column.id)\n })\n}\n\nfunction allColumns(columns, { instance }) {\n columns.forEach(column => {\n column.isPivotSource = instance.state.pivotColumns.includes(column.id)\n column.uniqueValues = new Set()\n })\n return columns\n}\n\nfunction accessValue(value, { column }) {\n if (column.uniqueValues && typeof value !== 'undefined') {\n column.uniqueValues.add(value)\n }\n return value\n}\n\nfunction materializedColumns(materialized, { instance }) {\n const { allColumns, state } = instance\n\n if (!state.pivotColumns.length || !state.groupBy || !state.groupBy.length) {\n return materialized\n }\n\n const pivotColumns = state.pivotColumns\n .map(id => allColumns.find(d => d.id === id))\n .filter(Boolean)\n\n const sourceColumns = allColumns.filter(\n d =>\n !d.isPivotSource &&\n !state.groupBy.includes(d.id) &&\n !state.pivotColumns.includes(d.id)\n )\n\n const buildPivotColumns = (depth = 0, parent, pivotFilters = []) => {\n const pivotColumn = pivotColumns[depth]\n\n if (!pivotColumn) {\n return sourceColumns.map(sourceColumn => {\n // TODO: We could offer support here for renesting pivoted\n // columns inside copies of their header groups. For now,\n // that seems like it would be (1) overkill on nesting, considering\n // you already get nesting for every pivot level and (2)\n // really hard. :)\n\n return {\n ...sourceColumn,\n canPivot: false,\n isPivoted: true,\n parent,\n depth: depth,\n id: `${parent ? `${parent.id}.${sourceColumn.id}` : sourceColumn.id}`,\n accessor: (originalRow, i, row) => {\n if (pivotFilters.every(filter => filter(row))) {\n return row.values[sourceColumn.id]\n }\n },\n }\n })\n }\n\n const uniqueValues = Array.from(pivotColumn.uniqueValues).sort()\n\n return uniqueValues.map(uniqueValue => {\n const columnGroup = {\n ...pivotColumn,\n Header:\n pivotColumn.PivotHeader || typeof pivotColumn.header === 'string'\n ? `${pivotColumn.Header}: ${uniqueValue}`\n : uniqueValue,\n isPivotGroup: true,\n parent,\n depth,\n id: parent\n ? `${parent.id}.${pivotColumn.id}.${uniqueValue}`\n : `${pivotColumn.id}.${uniqueValue}`,\n pivotValue: uniqueValue,\n }\n\n columnGroup.columns = buildPivotColumns(depth + 1, columnGroup, [\n ...pivotFilters,\n row => row.values[pivotColumn.id] === uniqueValue,\n ])\n\n return columnGroup\n })\n }\n\n const newMaterialized = flattenColumns(buildPivotColumns())\n\n return [...materialized, ...newMaterialized]\n}\n\nfunction materializedColumnsDeps(\n deps,\n {\n instance: {\n state: { pivotColumns, groupBy },\n },\n }\n) {\n return [...deps, pivotColumns, groupBy]\n}\n\nfunction visibleColumns(visibleColumns, { instance: { state } }) {\n visibleColumns = visibleColumns.filter(d => !d.isPivotSource)\n\n if (state.pivotColumns.length && state.groupBy && state.groupBy.length) {\n visibleColumns = visibleColumns.filter(\n column => column.isGrouped || column.isPivoted\n )\n }\n\n return visibleColumns\n}\n\nfunction visibleColumnsDeps(deps, { instance }) {\n return [...deps, instance.state.pivotColumns, instance.state.groupBy]\n}\n\nfunction useInstance(instance) {\n const {\n columns,\n allColumns,\n flatHeaders,\n // pivotFn = defaultPivotFn,\n // manualPivot,\n getHooks,\n plugins,\n dispatch,\n autoResetPivot = true,\n manaulPivot,\n disablePivot,\n defaultCanPivot,\n } = instance\n\n ensurePluginOrder(plugins, ['useGroupBy'], 'usePivotColumns')\n\n const getInstance = useGetLatest(instance)\n\n allColumns.forEach(column => {\n const {\n accessor,\n defaultPivot: defaultColumnPivot,\n disablePivot: columnDisablePivot,\n } = column\n\n column.canPivot = accessor\n ? getFirstDefined(\n column.canPivot,\n columnDisablePivot === true ? false : undefined,\n disablePivot === true ? false : undefined,\n true\n )\n : getFirstDefined(\n column.canPivot,\n defaultColumnPivot,\n defaultCanPivot,\n false\n )\n\n if (column.canPivot) {\n column.togglePivot = () => instance.togglePivot(column.id)\n }\n\n column.Aggregated = column.Aggregated || column.Cell\n })\n\n const togglePivot = (columnId, value) => {\n dispatch({ type: actions.togglePivot, columnId, value })\n }\n\n flatHeaders.forEach(header => {\n header.getPivotToggleProps = makePropGetter(\n getHooks().getPivotToggleProps,\n {\n instance: getInstance(),\n header,\n }\n )\n })\n\n const getAutoResetPivot = useGetLatest(autoResetPivot)\n\n useMountedLayoutEffect(() => {\n if (getAutoResetPivot()) {\n dispatch({ type: actions.resetPivot })\n }\n }, [dispatch, manaulPivot ? null : columns])\n\n Object.assign(instance, {\n togglePivot,\n })\n}\n\nfunction prepareRow(row) {\n row.allCells.forEach(cell => {\n // Grouped cells are in the pivotColumns and the pivot cell for the row\n cell.isPivoted = cell.column.isPivoted\n })\n}\n","import React from 'react'\n\nimport {\n actions,\n makePropGetter,\n ensurePluginOrder,\n useGetLatest,\n useMountedLayoutEffect,\n} from '../publicUtils'\n\nconst pluginName = 'useRowSelect'\n\n// Actions\nactions.resetSelectedRows = 'resetSelectedRows'\nactions.toggleAllRowsSelected = 'toggleAllRowsSelected'\nactions.toggleRowSelected = 'toggleRowSelected'\nactions.toggleAllPageRowsSelected = 'toggleAllPageRowsSelected'\n\nexport const useRowSelect = hooks => {\n hooks.getToggleRowSelectedProps = [defaultGetToggleRowSelectedProps]\n hooks.getToggleAllRowsSelectedProps = [defaultGetToggleAllRowsSelectedProps]\n hooks.getToggleAllPageRowsSelectedProps = [\n defaultGetToggleAllPageRowsSelectedProps,\n ]\n hooks.stateReducers.push(reducer)\n hooks.useInstance.push(useInstance)\n hooks.prepareRow.push(prepareRow)\n}\n\nuseRowSelect.pluginName = pluginName\n\nconst defaultGetToggleRowSelectedProps = (props, { instance, row }) => {\n const { manualRowSelectedKey = 'isSelected' } = instance\n let checked = false\n\n if (row.original && row.original[manualRowSelectedKey]) {\n checked = true\n } else {\n checked = row.isSelected\n }\n\n return [\n props,\n {\n onChange: e => {\n row.toggleRowSelected(e.target.checked)\n },\n style: {\n cursor: 'pointer',\n },\n checked,\n title: 'Toggle Row Selected',\n indeterminate: row.isSomeSelected,\n },\n ]\n}\n\nconst defaultGetToggleAllRowsSelectedProps = (props, { instance }) => [\n props,\n {\n onChange: e => {\n instance.toggleAllRowsSelected(e.target.checked)\n },\n style: {\n cursor: 'pointer',\n },\n checked: instance.isAllRowsSelected,\n title: 'Toggle All Rows Selected',\n indeterminate: Boolean(\n !instance.isAllRowsSelected &&\n Object.keys(instance.state.selectedRowIds).length\n ),\n },\n]\n\nconst defaultGetToggleAllPageRowsSelectedProps = (props, { instance }) => [\n props,\n {\n onChange(e) {\n instance.toggleAllPageRowsSelected(e.target.checked)\n },\n style: {\n cursor: 'pointer',\n },\n checked: instance.isAllPageRowsSelected,\n title: 'Toggle All Current Page Rows Selected',\n indeterminate: Boolean(\n !instance.isAllPageRowsSelected &&\n instance.page.some(({ id }) => instance.state.selectedRowIds[id])\n ),\n },\n]\n\n// eslint-disable-next-line max-params\nfunction reducer(state, action, previousState, instance) {\n if (action.type === actions.init) {\n return {\n selectedRowIds: {},\n ...state,\n }\n }\n\n if (action.type === actions.resetSelectedRows) {\n return {\n ...state,\n selectedRowIds: instance.initialState.selectedRowIds || {},\n }\n }\n\n if (action.type === actions.toggleAllRowsSelected) {\n const { value: setSelected } = action\n const {\n isAllRowsSelected,\n rowsById,\n nonGroupedRowsById = rowsById,\n } = instance\n\n const selectAll =\n typeof setSelected !== 'undefined' ? setSelected : !isAllRowsSelected\n\n // Only remove/add the rows that are visible on the screen\n // Leave all the other rows that are selected alone.\n const selectedRowIds = Object.assign({}, state.selectedRowIds)\n\n if (selectAll) {\n Object.keys(nonGroupedRowsById).forEach(rowId => {\n selectedRowIds[rowId] = true\n })\n } else {\n Object.keys(nonGroupedRowsById).forEach(rowId => {\n delete selectedRowIds[rowId]\n })\n }\n\n return {\n ...state,\n selectedRowIds,\n }\n }\n\n if (action.type === actions.toggleRowSelected) {\n const { id, value: setSelected } = action\n const { rowsById, selectSubRows = true, getSubRows } = instance\n const isSelected = state.selectedRowIds[id]\n const shouldExist =\n typeof setSelected !== 'undefined' ? setSelected : !isSelected\n\n if (isSelected === shouldExist) {\n return state\n }\n\n const newSelectedRowIds = { ...state.selectedRowIds }\n\n const handleRowById = id => {\n const row = rowsById[id]\n\n if (row) {\n if (!row.isGrouped) {\n if (shouldExist) {\n newSelectedRowIds[id] = true\n } else {\n delete newSelectedRowIds[id]\n }\n }\n\n if (selectSubRows && getSubRows(row)) {\n return getSubRows(row).forEach(row => handleRowById(row.id))\n }\n }\n }\n\n handleRowById(id)\n\n return {\n ...state,\n selectedRowIds: newSelectedRowIds,\n }\n }\n\n if (action.type === actions.toggleAllPageRowsSelected) {\n const { value: setSelected } = action\n const {\n page,\n rowsById,\n selectSubRows = true,\n isAllPageRowsSelected,\n getSubRows,\n } = instance\n\n const selectAll =\n typeof setSelected !== 'undefined' ? setSelected : !isAllPageRowsSelected\n\n const newSelectedRowIds = { ...state.selectedRowIds }\n\n const handleRowById = id => {\n const row = rowsById[id]\n\n if (!row.isGrouped) {\n if (selectAll) {\n newSelectedRowIds[id] = true\n } else {\n delete newSelectedRowIds[id]\n }\n }\n\n if (selectSubRows && getSubRows(row)) {\n return getSubRows(row).forEach(row => handleRowById(row.id))\n }\n }\n\n page.forEach(row => handleRowById(row.id))\n\n return {\n ...state,\n selectedRowIds: newSelectedRowIds,\n }\n }\n return state\n}\n\nfunction useInstance(instance) {\n const {\n data,\n rows,\n getHooks,\n plugins,\n rowsById,\n nonGroupedRowsById = rowsById,\n autoResetSelectedRows = true,\n state: { selectedRowIds },\n selectSubRows = true,\n dispatch,\n page,\n getSubRows,\n } = instance\n\n ensurePluginOrder(\n plugins,\n ['useFilters', 'useGroupBy', 'useSortBy', 'useExpanded', 'usePagination'],\n 'useRowSelect'\n )\n\n const selectedFlatRows = React.useMemo(() => {\n const selectedFlatRows = []\n\n rows.forEach(row => {\n const isSelected = selectSubRows\n ? getRowIsSelected(row, selectedRowIds, getSubRows)\n : !!selectedRowIds[row.id]\n row.isSelected = !!isSelected\n row.isSomeSelected = isSelected === null\n\n if (isSelected) {\n selectedFlatRows.push(row)\n }\n })\n\n return selectedFlatRows\n }, [rows, selectSubRows, selectedRowIds, getSubRows])\n\n let isAllRowsSelected = Boolean(\n Object.keys(nonGroupedRowsById).length && Object.keys(selectedRowIds).length\n )\n\n let isAllPageRowsSelected = isAllRowsSelected\n\n if (isAllRowsSelected) {\n if (Object.keys(nonGroupedRowsById).some(id => !selectedRowIds[id])) {\n isAllRowsSelected = false\n }\n }\n\n if (!isAllRowsSelected) {\n if (page && page.length && page.some(({ id }) => !selectedRowIds[id])) {\n isAllPageRowsSelected = false\n }\n }\n\n const getAutoResetSelectedRows = useGetLatest(autoResetSelectedRows)\n\n useMountedLayoutEffect(() => {\n if (getAutoResetSelectedRows()) {\n dispatch({ type: actions.resetSelectedRows })\n }\n }, [dispatch, data])\n\n const toggleAllRowsSelected = React.useCallback(\n value => dispatch({ type: actions.toggleAllRowsSelected, value }),\n [dispatch]\n )\n\n const toggleAllPageRowsSelected = React.useCallback(\n value => dispatch({ type: actions.toggleAllPageRowsSelected, value }),\n [dispatch]\n )\n\n const toggleRowSelected = React.useCallback(\n (id, value) => dispatch({ type: actions.toggleRowSelected, id, value }),\n [dispatch]\n )\n\n const getInstance = useGetLatest(instance)\n\n const getToggleAllRowsSelectedProps = makePropGetter(\n getHooks().getToggleAllRowsSelectedProps,\n { instance: getInstance() }\n )\n\n const getToggleAllPageRowsSelectedProps = makePropGetter(\n getHooks().getToggleAllPageRowsSelectedProps,\n { instance: getInstance() }\n )\n\n Object.assign(instance, {\n selectedFlatRows,\n isAllRowsSelected,\n isAllPageRowsSelected,\n toggleRowSelected,\n toggleAllRowsSelected,\n getToggleAllRowsSelectedProps,\n getToggleAllPageRowsSelectedProps,\n toggleAllPageRowsSelected,\n })\n}\n\nfunction prepareRow(row, { instance }) {\n row.toggleRowSelected = set => instance.toggleRowSelected(row.id, set)\n\n row.getToggleRowSelectedProps = makePropGetter(\n instance.getHooks().getToggleRowSelectedProps,\n { instance: instance, row }\n )\n}\n\nfunction getRowIsSelected(row, selectedRowIds, getSubRows) {\n if (selectedRowIds[row.id]) {\n return true\n }\n\n const subRows = getSubRows(row)\n\n if (subRows && subRows.length) {\n let allChildrenSelected = true\n let someSelected = false\n\n subRows.forEach(subRow => {\n // Bail out early if we know both of these\n if (someSelected && !allChildrenSelected) {\n return\n }\n\n if (getRowIsSelected(subRow, selectedRowIds, getSubRows)) {\n someSelected = true\n } else {\n allChildrenSelected = false\n }\n })\n return allChildrenSelected ? true : someSelected ? null : false\n }\n\n return false\n}\n","import React from 'react'\n\nimport {\n actions,\n functionalUpdate,\n useMountedLayoutEffect,\n useGetLatest,\n} from '../publicUtils'\n\nconst defaultInitialRowStateAccessor = row => ({})\nconst defaultInitialCellStateAccessor = cell => ({})\n\n// Actions\nactions.setRowState = 'setRowState'\nactions.setCellState = 'setCellState'\nactions.resetRowState = 'resetRowState'\n\nexport const useRowState = hooks => {\n hooks.stateReducers.push(reducer)\n hooks.useInstance.push(useInstance)\n hooks.prepareRow.push(prepareRow)\n}\n\nuseRowState.pluginName = 'useRowState'\n\nfunction reducer(state, action, previousState, instance) {\n const {\n initialRowStateAccessor = defaultInitialRowStateAccessor,\n initialCellStateAccessor = defaultInitialCellStateAccessor,\n rowsById,\n } = instance\n\n if (action.type === actions.init) {\n return {\n rowState: {},\n ...state,\n }\n }\n\n if (action.type === actions.resetRowState) {\n return {\n ...state,\n rowState: instance.initialState.rowState || {},\n }\n }\n\n if (action.type === actions.setRowState) {\n const { rowId, value } = action\n\n const oldRowState =\n typeof state.rowState[rowId] !== 'undefined'\n ? state.rowState[rowId]\n : initialRowStateAccessor(rowsById[rowId])\n\n return {\n ...state,\n rowState: {\n ...state.rowState,\n [rowId]: functionalUpdate(value, oldRowState),\n },\n }\n }\n\n if (action.type === actions.setCellState) {\n const { rowId, columnId, value } = action\n\n const oldRowState =\n typeof state.rowState[rowId] !== 'undefined'\n ? state.rowState[rowId]\n : initialRowStateAccessor(rowsById[rowId])\n\n const oldCellState =\n typeof oldRowState?.cellState?.[columnId] !== 'undefined'\n ? oldRowState.cellState[columnId]\n : initialCellStateAccessor(\n rowsById[rowId]?.cells?.find(cell => cell.column.id === columnId)\n )\n\n return {\n ...state,\n rowState: {\n ...state.rowState,\n [rowId]: {\n ...oldRowState,\n cellState: {\n ...(oldRowState.cellState || {}),\n [columnId]: functionalUpdate(value, oldCellState),\n },\n },\n },\n }\n }\n}\n\nfunction useInstance(instance) {\n const { autoResetRowState = true, data, dispatch } = instance\n\n const setRowState = React.useCallback(\n (rowId, value) =>\n dispatch({\n type: actions.setRowState,\n rowId,\n value,\n }),\n [dispatch]\n )\n\n const setCellState = React.useCallback(\n (rowId, columnId, value) =>\n dispatch({\n type: actions.setCellState,\n rowId,\n columnId,\n value,\n }),\n [dispatch]\n )\n\n const getAutoResetRowState = useGetLatest(autoResetRowState)\n\n useMountedLayoutEffect(() => {\n if (getAutoResetRowState()) {\n dispatch({ type: actions.resetRowState })\n }\n }, [data])\n\n Object.assign(instance, {\n setRowState,\n setCellState,\n })\n}\n\nfunction prepareRow(row, { instance }) {\n const {\n initialRowStateAccessor = defaultInitialRowStateAccessor,\n initialCellStateAccessor = defaultInitialCellStateAccessor,\n state: { rowState },\n } = instance\n\n if (row) {\n row.state =\n typeof rowState[row.id] !== 'undefined'\n ? rowState[row.id]\n : initialRowStateAccessor(row)\n\n row.setState = updater => {\n return instance.setRowState(row.id, updater)\n }\n\n row.cells.forEach(cell => {\n if (!row.state.cellState) {\n row.state.cellState = {}\n }\n\n cell.state =\n typeof row.state.cellState[cell.column.id] !== 'undefined'\n ? row.state.cellState[cell.column.id]\n : initialCellStateAccessor(cell)\n\n cell.setState = updater => {\n return instance.setCellState(row.id, cell.column.id, updater)\n }\n })\n }\n}\n","import React from 'react'\n\nimport { functionalUpdate, actions } from '../publicUtils'\n\n// Actions\nactions.resetColumnOrder = 'resetColumnOrder'\nactions.setColumnOrder = 'setColumnOrder'\n\nexport const useColumnOrder = hooks => {\n hooks.stateReducers.push(reducer)\n hooks.visibleColumnsDeps.push((deps, { instance }) => {\n return [...deps, instance.state.columnOrder]\n })\n hooks.visibleColumns.push(visibleColumns)\n hooks.useInstance.push(useInstance)\n}\n\nuseColumnOrder.pluginName = 'useColumnOrder'\n\nfunction reducer(state, action, previousState, instance) {\n if (action.type === actions.init) {\n return {\n columnOrder: [],\n ...state,\n }\n }\n\n if (action.type === actions.resetColumnOrder) {\n return {\n ...state,\n columnOrder: instance.initialState.columnOrder || [],\n }\n }\n\n if (action.type === actions.setColumnOrder) {\n return {\n ...state,\n columnOrder: functionalUpdate(action.columnOrder, state.columnOrder),\n }\n }\n}\n\nfunction visibleColumns(\n columns,\n {\n instance: {\n state: { columnOrder },\n },\n }\n) {\n // If there is no order, return the normal columns\n if (!columnOrder || !columnOrder.length) {\n return columns\n }\n\n const columnOrderCopy = [...columnOrder]\n\n // If there is an order, make a copy of the columns\n const columnsCopy = [...columns]\n\n // And make a new ordered array of the columns\n const columnsInOrder = []\n\n // Loop over the columns and place them in order into the new array\n while (columnsCopy.length && columnOrderCopy.length) {\n const targetColumnId = columnOrderCopy.shift()\n const foundIndex = columnsCopy.findIndex(d => d.id === targetColumnId)\n if (foundIndex > -1) {\n columnsInOrder.push(columnsCopy.splice(foundIndex, 1)[0])\n }\n }\n\n // If there are any columns left, add them to the end\n return [...columnsInOrder, ...columnsCopy]\n}\n\nfunction useInstance(instance) {\n const { dispatch } = instance\n\n instance.setColumnOrder = React.useCallback(\n columnOrder => {\n return dispatch({ type: actions.setColumnOrder, columnOrder })\n },\n [dispatch]\n )\n}\n","import React from 'react'\n\nimport {\n actions,\n defaultColumn,\n makePropGetter,\n useGetLatest,\n ensurePluginOrder,\n useMountedLayoutEffect,\n} from '../publicUtils'\n\nimport { getFirstDefined, passiveEventSupported } from '../utils'\n\n// Default Column\ndefaultColumn.canResize = true\n\n// Actions\nactions.columnStartResizing = 'columnStartResizing'\nactions.columnResizing = 'columnResizing'\nactions.columnDoneResizing = 'columnDoneResizing'\nactions.resetResize = 'resetResize'\n\nexport const useResizeColumns = hooks => {\n hooks.getResizerProps = [defaultGetResizerProps]\n hooks.getHeaderProps.push({\n style: {\n position: 'relative',\n },\n })\n hooks.stateReducers.push(reducer)\n hooks.useInstance.push(useInstance)\n hooks.useInstanceBeforeDimensions.push(useInstanceBeforeDimensions)\n}\n\nconst defaultGetResizerProps = (props, { instance, header }) => {\n const { dispatch } = instance\n\n const onResizeStart = (e, header) => {\n let isTouchEvent = false\n if (e.type === 'touchstart') {\n // lets not respond to multiple touches (e.g. 2 or 3 fingers)\n if (e.touches && e.touches.length > 1) {\n return\n }\n isTouchEvent = true\n }\n const headersToResize = getLeafHeaders(header)\n const headerIdWidths = headersToResize.map(d => [d.id, d.totalWidth])\n\n const clientX = isTouchEvent ? Math.round(e.touches[0].clientX) : e.clientX\n\n let raf\n let mostRecentClientX\n\n const dispatchEnd = () => {\n window.cancelAnimationFrame(raf)\n raf = null\n dispatch({ type: actions.columnDoneResizing })\n }\n const dispatchMove = () => {\n window.cancelAnimationFrame(raf)\n raf = null\n dispatch({ type: actions.columnResizing, clientX: mostRecentClientX })\n }\n\n const scheduleDispatchMoveOnNextAnimationFrame = clientXPos => {\n mostRecentClientX = clientXPos\n if (!raf) {\n raf = window.requestAnimationFrame(dispatchMove)\n }\n }\n\n const handlersAndEvents = {\n mouse: {\n moveEvent: 'mousemove',\n moveHandler: e => scheduleDispatchMoveOnNextAnimationFrame(e.clientX),\n upEvent: 'mouseup',\n upHandler: e => {\n document.removeEventListener(\n 'mousemove',\n handlersAndEvents.mouse.moveHandler\n )\n document.removeEventListener(\n 'mouseup',\n handlersAndEvents.mouse.upHandler\n )\n dispatchEnd()\n },\n },\n touch: {\n moveEvent: 'touchmove',\n moveHandler: e => {\n if (e.cancelable) {\n e.preventDefault()\n e.stopPropagation()\n }\n scheduleDispatchMoveOnNextAnimationFrame(e.touches[0].clientX)\n return false\n },\n upEvent: 'touchend',\n upHandler: e => {\n document.removeEventListener(\n handlersAndEvents.touch.moveEvent,\n handlersAndEvents.touch.moveHandler\n )\n document.removeEventListener(\n handlersAndEvents.touch.upEvent,\n handlersAndEvents.touch.moveHandler\n )\n dispatchEnd()\n },\n },\n }\n\n const events = isTouchEvent\n ? handlersAndEvents.touch\n : handlersAndEvents.mouse\n const passiveIfSupported = passiveEventSupported()\n ? { passive: false }\n : false\n document.addEventListener(\n events.moveEvent,\n events.moveHandler,\n passiveIfSupported\n )\n document.addEventListener(\n events.upEvent,\n events.upHandler,\n passiveIfSupported\n )\n\n dispatch({\n type: actions.columnStartResizing,\n columnId: header.id,\n columnWidth: header.totalWidth,\n headerIdWidths,\n clientX,\n })\n }\n\n return [\n props,\n {\n onMouseDown: e => e.persist() || onResizeStart(e, header),\n onTouchStart: e => e.persist() || onResizeStart(e, header),\n style: {\n cursor: 'col-resize',\n },\n draggable: false,\n role: 'separator',\n },\n ]\n}\n\nuseResizeColumns.pluginName = 'useResizeColumns'\n\nfunction reducer(state, action) {\n if (action.type === actions.init) {\n return {\n columnResizing: {\n columnWidths: {},\n },\n ...state,\n }\n }\n\n if (action.type === actions.resetResize) {\n return {\n ...state,\n columnResizing: {\n columnWidths: {},\n },\n }\n }\n\n if (action.type === actions.columnStartResizing) {\n const { clientX, columnId, columnWidth, headerIdWidths } = action\n\n return {\n ...state,\n columnResizing: {\n ...state.columnResizing,\n startX: clientX,\n headerIdWidths,\n columnWidth,\n isResizingColumn: columnId,\n },\n }\n }\n\n if (action.type === actions.columnResizing) {\n const { clientX } = action\n const { startX, columnWidth, headerIdWidths = [] } = state.columnResizing\n\n const deltaX = clientX - startX\n const percentageDeltaX = deltaX / columnWidth\n\n const newColumnWidths = {}\n\n headerIdWidths.forEach(([headerId, headerWidth]) => {\n newColumnWidths[headerId] = Math.max(\n headerWidth + headerWidth * percentageDeltaX,\n 0\n )\n })\n\n return {\n ...state,\n columnResizing: {\n ...state.columnResizing,\n columnWidths: {\n ...state.columnResizing.columnWidths,\n ...newColumnWidths,\n },\n },\n }\n }\n\n if (action.type === actions.columnDoneResizing) {\n return {\n ...state,\n columnResizing: {\n ...state.columnResizing,\n startX: null,\n isResizingColumn: null,\n },\n }\n }\n}\n\nconst useInstanceBeforeDimensions = instance => {\n const {\n flatHeaders,\n disableResizing,\n getHooks,\n state: { columnResizing },\n } = instance\n\n const getInstance = useGetLatest(instance)\n\n flatHeaders.forEach(header => {\n const canResize = getFirstDefined(\n header.disableResizing === true ? false : undefined,\n disableResizing === true ? false : undefined,\n true\n )\n\n header.canResize = canResize\n header.width =\n columnResizing.columnWidths[header.id] ||\n header.originalWidth ||\n header.width\n header.isResizing = columnResizing.isResizingColumn === header.id\n\n if (canResize) {\n header.getResizerProps = makePropGetter(getHooks().getResizerProps, {\n instance: getInstance(),\n header,\n })\n }\n })\n}\n\nfunction useInstance(instance) {\n const { plugins, dispatch, autoResetResize = true, columns } = instance\n\n ensurePluginOrder(plugins, ['useAbsoluteLayout'], 'useResizeColumns')\n\n const getAutoResetResize = useGetLatest(autoResetResize)\n useMountedLayoutEffect(() => {\n if (getAutoResetResize()) {\n dispatch({ type: actions.resetResize })\n }\n }, [columns])\n\n const resetResizing = React.useCallback(\n () => dispatch({ type: actions.resetResize }),\n [dispatch]\n )\n\n Object.assign(instance, {\n resetResizing,\n })\n}\n\nfunction getLeafHeaders(header) {\n const leafHeaders = []\n const recurseHeader = header => {\n if (header.columns && header.columns.length) {\n header.columns.map(recurseHeader)\n }\n leafHeaders.push(header)\n }\n recurseHeader(header)\n return leafHeaders\n}\n","const cellStyles = {\n position: 'absolute',\n top: 0,\n}\n\nexport const useAbsoluteLayout = hooks => {\n hooks.getTableBodyProps.push(getRowStyles)\n hooks.getRowProps.push(getRowStyles)\n hooks.getHeaderGroupProps.push(getRowStyles)\n hooks.getFooterGroupProps.push(getRowStyles)\n\n hooks.getHeaderProps.push((props, { column }) => [\n props,\n {\n style: {\n ...cellStyles,\n left: `${column.totalLeft}px`,\n width: `${column.totalWidth}px`,\n },\n },\n ])\n\n hooks.getCellProps.push((props, { cell }) => [\n props,\n {\n style: {\n ...cellStyles,\n left: `${cell.column.totalLeft}px`,\n width: `${cell.column.totalWidth}px`,\n },\n },\n ])\n\n hooks.getFooterProps.push((props, { column }) => [\n props,\n {\n style: {\n ...cellStyles,\n left: `${column.totalLeft}px`,\n width: `${column.totalWidth}px`,\n },\n },\n ])\n}\n\nuseAbsoluteLayout.pluginName = 'useAbsoluteLayout'\n\nconst getRowStyles = (props, { instance }) => [\n props,\n {\n style: {\n position: 'relative',\n width: `${instance.totalColumnsWidth}px`,\n },\n },\n]\n","const cellStyles = {\n display: 'inline-block',\n boxSizing: 'border-box',\n}\n\nconst getRowStyles = (props, { instance }) => [\n props,\n {\n style: {\n display: 'flex',\n width: `${instance.totalColumnsWidth}px`,\n },\n },\n]\n\nexport const useBlockLayout = hooks => {\n hooks.getRowProps.push(getRowStyles)\n hooks.getHeaderGroupProps.push(getRowStyles)\n hooks.getFooterGroupProps.push(getRowStyles)\n\n hooks.getHeaderProps.push((props, { column }) => [\n props,\n {\n style: {\n ...cellStyles,\n width: `${column.totalWidth}px`,\n },\n },\n ])\n\n hooks.getCellProps.push((props, { cell }) => [\n props,\n {\n style: {\n ...cellStyles,\n width: `${cell.column.totalWidth}px`,\n },\n },\n ])\n\n hooks.getFooterProps.push((props, { column }) => [\n props,\n {\n style: {\n ...cellStyles,\n width: `${column.totalWidth}px`,\n },\n },\n ])\n}\n\nuseBlockLayout.pluginName = 'useBlockLayout'\n","export function useFlexLayout(hooks) {\n hooks.getTableProps.push(getTableProps)\n hooks.getRowProps.push(getRowStyles)\n hooks.getHeaderGroupProps.push(getRowStyles)\n hooks.getFooterGroupProps.push(getRowStyles)\n hooks.getHeaderProps.push(getHeaderProps)\n hooks.getCellProps.push(getCellProps)\n hooks.getFooterProps.push(getFooterProps)\n}\n\nuseFlexLayout.pluginName = 'useFlexLayout'\n\nconst getTableProps = (props, { instance }) => [\n props,\n {\n style: {\n minWidth: `${instance.totalColumnsMinWidth}px`,\n },\n },\n]\n\nconst getRowStyles = (props, { instance }) => [\n props,\n {\n style: {\n display: 'flex',\n flex: '1 0 auto',\n minWidth: `${instance.totalColumnsMinWidth}px`,\n },\n },\n]\n\nconst getHeaderProps = (props, { column }) => [\n props,\n {\n style: {\n boxSizing: 'border-box',\n flex: column.totalFlexWidth\n ? `${column.totalFlexWidth} 0 auto`\n : undefined,\n minWidth: `${column.totalMinWidth}px`,\n width: `${column.totalWidth}px`,\n },\n },\n]\n\nconst getCellProps = (props, { cell }) => [\n props,\n {\n style: {\n boxSizing: 'border-box',\n flex: `${cell.column.totalFlexWidth} 0 auto`,\n minWidth: `${cell.column.totalMinWidth}px`,\n width: `${cell.column.totalWidth}px`,\n },\n },\n]\n\nconst getFooterProps = (props, { column }) => [\n props,\n {\n style: {\n boxSizing: 'border-box',\n flex: column.totalFlexWidth\n ? `${column.totalFlexWidth} 0 auto`\n : undefined,\n minWidth: `${column.totalMinWidth}px`,\n width: `${column.totalWidth}px`,\n },\n },\n]\n","import { actions } from '../publicUtils'\n\n// Actions\nactions.columnStartResizing = 'columnStartResizing'\nactions.columnResizing = 'columnResizing'\nactions.columnDoneResizing = 'columnDoneResizing'\nactions.resetResize = 'resetResize'\n\nexport function useGridLayout(hooks) {\n hooks.stateReducers.push(reducer)\n hooks.getTableProps.push(getTableProps)\n hooks.getHeaderProps.push(getHeaderProps)\n hooks.getRowProps.push(getRowProps)\n}\n\nuseGridLayout.pluginName = 'useGridLayout'\n\nconst getTableProps = (props, { instance }) => {\n const gridTemplateColumns = instance.visibleColumns.map(column => {\n if (instance.state.gridLayout.columnWidths[column.id])\n return `${instance.state.gridLayout.columnWidths[column.id]}px`\n // When resizing, lock the width of all unset columns\n // instead of using user-provided width or defaultColumn width,\n // which could potentially be 'auto' or 'fr' units that don't scale linearly\n if (instance.state.columnResizing?.isResizingColumn)\n return `${instance.state.gridLayout.startWidths[column.id]}px`\n if (typeof column.width === 'number') return `${column.width}px`\n return column.width\n })\n return [\n props,\n {\n style: {\n display: `grid`,\n gridTemplateColumns: gridTemplateColumns.join(` `),\n },\n },\n ]\n}\n\nconst getHeaderProps = (props, { column }) => [\n props,\n {\n id: `header-cell-${column.id}`,\n style: {\n position: `sticky`, //enables a scroll wrapper to be placed around the table and have sticky headers\n gridColumn: `span ${column.totalVisibleHeaderCount}`,\n },\n },\n]\n\nconst getRowProps = (props, { row }) => {\n if (row.isExpanded) {\n return [\n props,\n {\n style: {\n gridColumn: `1 / ${row.cells.length + 1}`,\n },\n },\n ]\n }\n return [props, {}]\n}\n\nfunction reducer(state, action, previousState, instance) {\n if (action.type === actions.init) {\n return {\n gridLayout: {\n columnWidths: {},\n },\n ...state,\n }\n }\n\n if (action.type === actions.resetResize) {\n return {\n ...state,\n gridLayout: {\n columnWidths: {},\n },\n }\n }\n\n if (action.type === actions.columnStartResizing) {\n const { columnId, headerIdWidths } = action\n const columnWidth = getElementWidth(columnId)\n\n if (columnWidth !== undefined) {\n const startWidths = instance.visibleColumns.reduce(\n (acc, column) => ({\n ...acc,\n [column.id]: getElementWidth(column.id),\n }),\n {}\n )\n const minWidths = instance.visibleColumns.reduce(\n (acc, column) => ({\n ...acc,\n [column.id]: column.minWidth,\n }),\n {}\n )\n const maxWidths = instance.visibleColumns.reduce(\n (acc, column) => ({\n ...acc,\n [column.id]: column.maxWidth,\n }),\n {}\n )\n\n const headerIdGridWidths = headerIdWidths.map(([headerId]) => [\n headerId,\n getElementWidth(headerId),\n ])\n\n return {\n ...state,\n gridLayout: {\n ...state.gridLayout,\n startWidths,\n minWidths,\n maxWidths,\n headerIdGridWidths,\n columnWidth,\n },\n }\n } else {\n return state\n }\n }\n\n if (action.type === actions.columnResizing) {\n const { clientX } = action\n const { startX } = state.columnResizing\n const {\n columnWidth,\n minWidths,\n maxWidths,\n headerIdGridWidths = [],\n } = state.gridLayout\n\n const deltaX = clientX - startX\n const percentageDeltaX = deltaX / columnWidth\n\n const newColumnWidths = {}\n\n headerIdGridWidths.forEach(([headerId, headerWidth]) => {\n newColumnWidths[headerId] = Math.min(\n Math.max(\n minWidths[headerId],\n headerWidth + headerWidth * percentageDeltaX\n ),\n maxWidths[headerId]\n )\n })\n\n return {\n ...state,\n gridLayout: {\n ...state.gridLayout,\n columnWidths: {\n ...state.gridLayout.columnWidths,\n ...newColumnWidths,\n },\n },\n }\n }\n\n if (action.type === actions.columnDoneResizing) {\n return {\n ...state,\n gridLayout: {\n ...state.gridLayout,\n startWidths: {},\n minWidths: {},\n maxWidths: {},\n },\n }\n }\n}\n\nfunction getElementWidth(columnId) {\n const width = document.getElementById(`header-cell-${columnId}`)?.offsetWidth\n\n if (width !== undefined) {\n return width\n }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = require(\"react\");\nfunction useTimeoutFn(fn, ms) {\n if (ms === void 0) { ms = 0; }\n var ready = react_1.useRef(false);\n var timeout = react_1.useRef();\n var callback = react_1.useRef(fn);\n var isReady = react_1.useCallback(function () { return ready.current; }, []);\n var set = react_1.useCallback(function () {\n ready.current = false;\n timeout.current && clearTimeout(timeout.current);\n timeout.current = setTimeout(function () {\n ready.current = true;\n callback.current();\n }, ms);\n }, [ms]);\n var clear = react_1.useCallback(function () {\n ready.current = null;\n timeout.current && clearTimeout(timeout.current);\n }, []);\n // update ref when function changes\n react_1.useEffect(function () {\n callback.current = fn;\n }, [fn]);\n // set on mount, clear on unmount\n react_1.useEffect(function () {\n set();\n return clear;\n }, [ms]);\n return [isReady, clear, set];\n}\nexports.default = useTimeoutFn;\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = require('./cancel/CanceledError');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\naxios.VERSION = require('./env/data').version;\naxios.toFormData = require('./helpers/toFormData');\n\n// Expose AxiosError class\naxios.AxiosError = require('../lib/core/AxiosError');\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar buildFullPath = require('./buildFullPath');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n var fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url: url,\n data: data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\nvar CanceledError = require('../cancel/CanceledError');\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(\n uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)\n ))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","exports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","'use strict';\n\nvar AxiosError = require('./AxiosError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nmodule.exports = function parseProtocol(url) {\n var match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n};\n","// eslint-disable-next-line strict\nmodule.exports = null;\n","'use strict';\n\nvar VERSION = require('../env/data').version;\nvar AxiosError = require('../core/AxiosError');\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return function(value, opt, opts) {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nmodule.exports = {\n assertOptions: assertOptions,\n validators: validators\n};\n","'use strict';\n\nvar CanceledError = require('./CanceledError');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(function(cancel) {\n if (!token._listeners) return;\n\n var i;\n var l = token._listeners.length;\n\n for (i = 0; i < l; i++) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = function(onfulfilled) {\n var _resolve;\n // eslint-disable-next-line func-names\n var promise = new Promise(function(resolve) {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Subscribe to the cancel signal\n */\n\nCancelToken.prototype.subscribe = function subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n};\n\n/**\n * Unsubscribe from the cancel signal\n */\n\nCancelToken.prototype.unsubscribe = function unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n var index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n};\n","'use strict';\n\nvar keysShim;\nif (!Object.keys) {\n\t// modified from https://github.com/es-shims/es5-shim\n\tvar has = Object.prototype.hasOwnProperty;\n\tvar toStr = Object.prototype.toString;\n\tvar isArgs = require('./isArguments'); // eslint-disable-line global-require\n\tvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\tvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\n\tvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\n\tvar dontEnums = [\n\t\t'toString',\n\t\t'toLocaleString',\n\t\t'valueOf',\n\t\t'hasOwnProperty',\n\t\t'isPrototypeOf',\n\t\t'propertyIsEnumerable',\n\t\t'constructor'\n\t];\n\tvar equalsConstructorPrototype = function (o) {\n\t\tvar ctor = o.constructor;\n\t\treturn ctor && ctor.prototype === o;\n\t};\n\tvar excludedKeys = {\n\t\t$applicationCache: true,\n\t\t$console: true,\n\t\t$external: true,\n\t\t$frame: true,\n\t\t$frameElement: true,\n\t\t$frames: true,\n\t\t$innerHeight: true,\n\t\t$innerWidth: true,\n\t\t$onmozfullscreenchange: true,\n\t\t$onmozfullscreenerror: true,\n\t\t$outerHeight: true,\n\t\t$outerWidth: true,\n\t\t$pageXOffset: true,\n\t\t$pageYOffset: true,\n\t\t$parent: true,\n\t\t$scrollLeft: true,\n\t\t$scrollTop: true,\n\t\t$scrollX: true,\n\t\t$scrollY: true,\n\t\t$self: true,\n\t\t$webkitIndexedDB: true,\n\t\t$webkitStorageInfo: true,\n\t\t$window: true\n\t};\n\tvar hasAutomationEqualityBug = (function () {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined') { return false; }\n\t\tfor (var k in window) {\n\t\t\ttry {\n\t\t\t\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}());\n\tvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t}\n\t\ttry {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tkeysShim = function keys(object) {\n\t\tvar isObject = object !== null && typeof object === 'object';\n\t\tvar isFunction = toStr.call(object) === '[object Function]';\n\t\tvar isArguments = isArgs(object);\n\t\tvar isString = isObject && toStr.call(object) === '[object String]';\n\t\tvar theKeys = [];\n\n\t\tif (!isObject && !isFunction && !isArguments) {\n\t\t\tthrow new TypeError('Object.keys called on a non-object');\n\t\t}\n\n\t\tvar skipProto = hasProtoEnumBug && isFunction;\n\t\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\t\ttheKeys.push(String(i));\n\t\t\t}\n\t\t}\n\n\t\tif (isArguments && object.length > 0) {\n\t\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\t\ttheKeys.push(String(j));\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var name in object) {\n\t\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\t\ttheKeys.push(String(name));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (hasDontEnumBug) {\n\t\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn theKeys;\n\t};\n}\nmodule.exports = keysShim;\n","'use strict';\n\nvar hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\nvar toStr = Object.prototype.toString;\n\nvar isStandardArguments = function isArguments(value) {\n\tif (hasToStringTag && value && typeof value === 'object' && Symbol.toStringTag in value) {\n\t\treturn false;\n\t}\n\treturn toStr.call(value) === '[object Arguments]';\n};\n\nvar isLegacyArguments = function isArguments(value) {\n\tif (isStandardArguments(value)) {\n\t\treturn true;\n\t}\n\treturn value !== null &&\n\t\ttypeof value === 'object' &&\n\t\ttypeof value.length === 'number' &&\n\t\tvalue.length >= 0 &&\n\t\ttoStr.call(value) !== '[object Array]' &&\n\t\ttoStr.call(value.callee) === '[object Function]';\n};\n\nvar supportsStandardArguments = (function () {\n\treturn isStandardArguments(arguments);\n}());\n\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\n\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n","\"use strict\";\n\n/* https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.is */\n\nvar NumberIsNaN = function (value) {\n\treturn value !== value;\n};\n\nmodule.exports = function is(a, b) {\n\tif (a === 0 && b === 0) {\n\t\treturn 1 / a === 1 / b;\n\t} else if (a === b) {\n\t\treturn true;\n\t} else if (NumberIsNaN(a) && NumberIsNaN(b)) {\n\t\treturn true;\n\t}\n\treturn false;\n};\n\n","'use strict';\n\nvar has = require('has');\nvar regexExec = RegExp.prototype.exec;\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nvar tryRegexExecCall = function tryRegexExec(value) {\n\ttry {\n\t\tvar lastIndex = value.lastIndex;\n\t\tvalue.lastIndex = 0;\n\n\t\tregexExec.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t} finally {\n\t\tvalue.lastIndex = lastIndex;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar regexClass = '[object RegExp]';\nvar hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\n\nmodule.exports = function isRegex(value) {\n\tif (!value || typeof value !== 'object') {\n\t\treturn false;\n\t}\n\tif (!hasToStringTag) {\n\t\treturn toStr.call(value) === regexClass;\n\t}\n\n\tvar descriptor = gOPD(value, 'lastIndex');\n\tvar hasLastIndexDataProperty = descriptor && has(descriptor, 'value');\n\tif (!hasLastIndexDataProperty) {\n\t\treturn false;\n\t}\n\n\treturn tryRegexExecCall(value);\n};\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slice.call(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n args.concat(slice.call(arguments))\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n } else {\n return target.apply(\n that,\n args.concat(slice.call(arguments))\n );\n }\n };\n\n var boundLength = Math.max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs.push('$' + i);\n }\n\n bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar define = require('define-properties');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar flagsBound = Function.call.bind(implementation);\n\ndefine(flagsBound, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = flagsBound;\n","'use strict';\n\nvar supportsDescriptors = require('define-properties').supportsDescriptors;\nvar getPolyfill = require('./polyfill');\nvar gOPD = Object.getOwnPropertyDescriptor;\nvar defineProperty = Object.defineProperty;\nvar TypeErr = TypeError;\nvar getProto = Object.getPrototypeOf;\nvar regex = /a/;\n\nmodule.exports = function shimFlags() {\n\tif (!supportsDescriptors || !getProto) {\n\t\tthrow new TypeErr('RegExp.prototype.flags requires a true ES5 environment that supports property descriptors');\n\t}\n\tvar polyfill = getPolyfill();\n\tvar proto = getProto(regex);\n\tvar descriptor = gOPD(proto, 'flags');\n\tif (!descriptor || descriptor.get !== polyfill) {\n\t\tdefineProperty(proto, 'flags', {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tget: polyfill\n\t\t});\n\t}\n\treturn polyfill;\n};\n","'use strict';\n\nvar getDay = Date.prototype.getDay;\nvar tryDateObject = function tryDateObject(value) {\n\ttry {\n\t\tgetDay.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\n\nvar toStr = Object.prototype.toString;\nvar dateClass = '[object Date]';\nvar hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\n\nmodule.exports = function isDateObject(value) {\n\tif (typeof value !== 'object' || value === null) { return false; }\n\treturn hasToStringTag ? tryDateObject(value) : toStr.call(value) === dateClass;\n};\n","'use strict';\n\nvar getSideChannel = require('side-channel');\nvar utils = require('./utils');\nvar formats = require('./formats');\nvar has = Object.prototype.hasOwnProperty;\n\nvar arrayPrefixGenerators = {\n brackets: function brackets(prefix) {\n return prefix + '[]';\n },\n comma: 'comma',\n indices: function indices(prefix, key) {\n return prefix + '[' + key + ']';\n },\n repeat: function repeat(prefix) {\n return prefix;\n }\n};\n\nvar isArray = Array.isArray;\nvar split = String.prototype.split;\nvar push = Array.prototype.push;\nvar pushToArray = function (arr, valueOrArray) {\n push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaultFormat = formats['default'];\nvar defaults = {\n addQueryPrefix: false,\n allowDots: false,\n charset: 'utf-8',\n charsetSentinel: false,\n delimiter: '&',\n encode: true,\n encoder: utils.encode,\n encodeValuesOnly: false,\n format: defaultFormat,\n formatter: formats.formatters[defaultFormat],\n // deprecated\n indices: false,\n serializeDate: function serializeDate(date) {\n return toISO.call(date);\n },\n skipNulls: false,\n strictNullHandling: false\n};\n\nvar isNonNullishPrimitive = function isNonNullishPrimitive(v) {\n return typeof v === 'string'\n || typeof v === 'number'\n || typeof v === 'boolean'\n || typeof v === 'symbol'\n || typeof v === 'bigint';\n};\n\nvar sentinel = {};\n\nvar stringify = function stringify(\n object,\n prefix,\n generateArrayPrefix,\n commaRoundTrip,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset,\n sideChannel\n) {\n var obj = object;\n\n var tmpSc = sideChannel;\n var step = 0;\n var findFlag = false;\n while ((tmpSc = tmpSc.get(sentinel)) !== void undefined && !findFlag) {\n // Where object last appeared in the ref tree\n var pos = tmpSc.get(object);\n step += 1;\n if (typeof pos !== 'undefined') {\n if (pos === step) {\n throw new RangeError('Cyclic object value');\n } else {\n findFlag = true; // Break while\n }\n }\n if (typeof tmpSc.get(sentinel) === 'undefined') {\n step = 0;\n }\n }\n\n if (typeof filter === 'function') {\n obj = filter(prefix, obj);\n } else if (obj instanceof Date) {\n obj = serializeDate(obj);\n } else if (generateArrayPrefix === 'comma' && isArray(obj)) {\n obj = utils.maybeMap(obj, function (value) {\n if (value instanceof Date) {\n return serializeDate(value);\n }\n return value;\n });\n }\n\n if (obj === null) {\n if (strictNullHandling) {\n return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key', format) : prefix;\n }\n\n obj = '';\n }\n\n if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) {\n if (encoder) {\n var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format);\n if (generateArrayPrefix === 'comma' && encodeValuesOnly) {\n var valuesArray = split.call(String(obj), ',');\n var valuesJoined = '';\n for (var i = 0; i < valuesArray.length; ++i) {\n valuesJoined += (i === 0 ? '' : ',') + formatter(encoder(valuesArray[i], defaults.encoder, charset, 'value', format));\n }\n return [formatter(keyValue) + (commaRoundTrip && isArray(obj) && valuesArray.length === 1 ? '[]' : '') + '=' + valuesJoined];\n }\n return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))];\n }\n return [formatter(prefix) + '=' + formatter(String(obj))];\n }\n\n var values = [];\n\n if (typeof obj === 'undefined') {\n return values;\n }\n\n var objKeys;\n if (generateArrayPrefix === 'comma' && isArray(obj)) {\n // we need to join elements in\n objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }];\n } else if (isArray(filter)) {\n objKeys = filter;\n } else {\n var keys = Object.keys(obj);\n objKeys = sort ? keys.sort(sort) : keys;\n }\n\n var adjustedPrefix = commaRoundTrip && isArray(obj) && obj.length === 1 ? prefix + '[]' : prefix;\n\n for (var j = 0; j < objKeys.length; ++j) {\n var key = objKeys[j];\n var value = typeof key === 'object' && typeof key.value !== 'undefined' ? key.value : obj[key];\n\n if (skipNulls && value === null) {\n continue;\n }\n\n var keyPrefix = isArray(obj)\n ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(adjustedPrefix, key) : adjustedPrefix\n : adjustedPrefix + (allowDots ? '.' + key : '[' + key + ']');\n\n sideChannel.set(object, step);\n var valueSideChannel = getSideChannel();\n valueSideChannel.set(sentinel, sideChannel);\n pushToArray(values, stringify(\n value,\n keyPrefix,\n generateArrayPrefix,\n commaRoundTrip,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset,\n valueSideChannel\n ));\n }\n\n return values;\n};\n\nvar normalizeStringifyOptions = function normalizeStringifyOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (opts.encoder !== null && typeof opts.encoder !== 'undefined' && typeof opts.encoder !== 'function') {\n throw new TypeError('Encoder has to be a function.');\n }\n\n var charset = opts.charset || defaults.charset;\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n\n var format = formats['default'];\n if (typeof opts.format !== 'undefined') {\n if (!has.call(formats.formatters, opts.format)) {\n throw new TypeError('Unknown format option provided.');\n }\n format = opts.format;\n }\n var formatter = formats.formatters[format];\n\n var filter = defaults.filter;\n if (typeof opts.filter === 'function' || isArray(opts.filter)) {\n filter = opts.filter;\n }\n\n return {\n addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,\n allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,\n encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,\n encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,\n encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,\n filter: filter,\n format: format,\n formatter: formatter,\n serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,\n skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,\n sort: typeof opts.sort === 'function' ? opts.sort : null,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (object, opts) {\n var obj = object;\n var options = normalizeStringifyOptions(opts);\n\n var objKeys;\n var filter;\n\n if (typeof options.filter === 'function') {\n filter = options.filter;\n obj = filter('', obj);\n } else if (isArray(options.filter)) {\n filter = options.filter;\n objKeys = filter;\n }\n\n var keys = [];\n\n if (typeof obj !== 'object' || obj === null) {\n return '';\n }\n\n var arrayFormat;\n if (opts && opts.arrayFormat in arrayPrefixGenerators) {\n arrayFormat = opts.arrayFormat;\n } else if (opts && 'indices' in opts) {\n arrayFormat = opts.indices ? 'indices' : 'repeat';\n } else {\n arrayFormat = 'indices';\n }\n\n var generateArrayPrefix = arrayPrefixGenerators[arrayFormat];\n if (opts && 'commaRoundTrip' in opts && typeof opts.commaRoundTrip !== 'boolean') {\n throw new TypeError('`commaRoundTrip` must be a boolean, or absent');\n }\n var commaRoundTrip = generateArrayPrefix === 'comma' && opts && opts.commaRoundTrip;\n\n if (!objKeys) {\n objKeys = Object.keys(obj);\n }\n\n if (options.sort) {\n objKeys.sort(options.sort);\n }\n\n var sideChannel = getSideChannel();\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n\n if (options.skipNulls && obj[key] === null) {\n continue;\n }\n pushToArray(keys, stringify(\n obj[key],\n key,\n generateArrayPrefix,\n commaRoundTrip,\n options.strictNullHandling,\n options.skipNulls,\n options.encode ? options.encoder : null,\n options.filter,\n options.sort,\n options.allowDots,\n options.serializeDate,\n options.format,\n options.formatter,\n options.encodeValuesOnly,\n options.charset,\n sideChannel\n ));\n }\n\n var joined = keys.join(options.delimiter);\n var prefix = options.addQueryPrefix === true ? '?' : '';\n\n if (options.charsetSentinel) {\n if (options.charset === 'iso-8859-1') {\n // encodeURIComponent('✓'), the \"numeric entity\" representation of a checkmark\n prefix += 'utf8=%26%2310003%3B&';\n } else {\n // encodeURIComponent('✓')\n prefix += 'utf8=%E2%9C%93&';\n }\n }\n\n return joined.length > 0 ? prefix + joined : '';\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bind/callBound');\nvar inspect = require('object-inspect');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\nvar $WeakMap = GetIntrinsic('%WeakMap%', true);\nvar $Map = GetIntrinsic('%Map%', true);\n\nvar $weakMapGet = callBound('WeakMap.prototype.get', true);\nvar $weakMapSet = callBound('WeakMap.prototype.set', true);\nvar $weakMapHas = callBound('WeakMap.prototype.has', true);\nvar $mapGet = callBound('Map.prototype.get', true);\nvar $mapSet = callBound('Map.prototype.set', true);\nvar $mapHas = callBound('Map.prototype.has', true);\n\n/*\n * This function traverses the list returning the node corresponding to the\n * given key.\n *\n * That node is also moved to the head of the list, so that if it's accessed\n * again we don't need to traverse the whole list. By doing so, all the recently\n * used nodes can be accessed relatively quickly.\n */\nvar listGetNode = function (list, key) { // eslint-disable-line consistent-return\n\tfor (var prev = list, curr; (curr = prev.next) !== null; prev = curr) {\n\t\tif (curr.key === key) {\n\t\t\tprev.next = curr.next;\n\t\t\tcurr.next = list.next;\n\t\t\tlist.next = curr; // eslint-disable-line no-param-reassign\n\t\t\treturn curr;\n\t\t}\n\t}\n};\n\nvar listGet = function (objects, key) {\n\tvar node = listGetNode(objects, key);\n\treturn node && node.value;\n};\nvar listSet = function (objects, key, value) {\n\tvar node = listGetNode(objects, key);\n\tif (node) {\n\t\tnode.value = value;\n\t} else {\n\t\t// Prepend the new node to the beginning of the list\n\t\tobjects.next = { // eslint-disable-line no-param-reassign\n\t\t\tkey: key,\n\t\t\tnext: objects.next,\n\t\t\tvalue: value\n\t\t};\n\t}\n};\nvar listHas = function (objects, key) {\n\treturn !!listGetNode(objects, key);\n};\n\nmodule.exports = function getSideChannel() {\n\tvar $wm;\n\tvar $m;\n\tvar $o;\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\tget: function (key) { // eslint-disable-line consistent-return\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapGet($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapGet($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listGet($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\thas: function (key) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapHas($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapHas($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listHas($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif (!$wm) {\n\t\t\t\t\t$wm = new $WeakMap();\n\t\t\t\t}\n\t\t\t\t$weakMapSet($wm, key, value);\n\t\t\t} else if ($Map) {\n\t\t\t\tif (!$m) {\n\t\t\t\t\t$m = new $Map();\n\t\t\t\t}\n\t\t\t\t$mapSet($m, key, value);\n\t\t\t} else {\n\t\t\t\tif (!$o) {\n\t\t\t\t\t/*\n\t\t\t\t\t * Initialize the linked list as an empty node, so that we don't have\n\t\t\t\t\t * to special-case handling of the first node: we can always refer to\n\t\t\t\t\t * it as (previous node).next, instead of something like (list).head\n\t\t\t\t\t */\n\t\t\t\t\t$o = { key: {}, next: null };\n\t\t\t\t}\n\t\t\t\tlistSet($o, key, value);\n\t\t\t}\n\t\t}\n\t};\n\treturn channel;\n};\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\nvar $max = GetIntrinsic('%Math.max%');\n\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = null;\n\t}\n}\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = $reflectApply(bind, $call, arguments);\n\tif ($gOPD && $defineProperty) {\n\t\tvar desc = $gOPD(func, 'length');\n\t\tif (desc.configurable) {\n\t\t\t// original length, plus the receiver, minus any additional arguments (after the receiver)\n\t\t\t$defineProperty(\n\t\t\t\tfunc,\n\t\t\t\t'length',\n\t\t\t\t{ value: 1 + $max(0, originalFunction.length - (arguments.length - 1)) }\n\t\t\t);\n\t\t}\n\t}\n\treturn func;\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","var hasMap = typeof Map === 'function' && Map.prototype;\nvar mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null;\nvar mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null;\nvar mapForEach = hasMap && Map.prototype.forEach;\nvar hasSet = typeof Set === 'function' && Set.prototype;\nvar setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null;\nvar setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null;\nvar setForEach = hasSet && Set.prototype.forEach;\nvar hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype;\nvar weakMapHas = hasWeakMap ? WeakMap.prototype.has : null;\nvar hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype;\nvar weakSetHas = hasWeakSet ? WeakSet.prototype.has : null;\nvar hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype;\nvar weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null;\nvar booleanValueOf = Boolean.prototype.valueOf;\nvar objectToString = Object.prototype.toString;\nvar functionToString = Function.prototype.toString;\nvar $match = String.prototype.match;\nvar $slice = String.prototype.slice;\nvar $replace = String.prototype.replace;\nvar $toUpperCase = String.prototype.toUpperCase;\nvar $toLowerCase = String.prototype.toLowerCase;\nvar $test = RegExp.prototype.test;\nvar $concat = Array.prototype.concat;\nvar $join = Array.prototype.join;\nvar $arrSlice = Array.prototype.slice;\nvar $floor = Math.floor;\nvar bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null;\nvar gOPS = Object.getOwnPropertySymbols;\nvar symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null;\nvar hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object';\n// ie, `has-tostringtag/shams\nvar toStringTag = typeof Symbol === 'function' && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? 'object' : 'symbol')\n ? Symbol.toStringTag\n : null;\nvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\nvar gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || (\n [].__proto__ === Array.prototype // eslint-disable-line no-proto\n ? function (O) {\n return O.__proto__; // eslint-disable-line no-proto\n }\n : null\n);\n\nfunction addNumericSeparator(num, str) {\n if (\n num === Infinity\n || num === -Infinity\n || num !== num\n || (num && num > -1000 && num < 1000)\n || $test.call(/e/, str)\n ) {\n return str;\n }\n var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;\n if (typeof num === 'number') {\n var int = num < 0 ? -$floor(-num) : $floor(num); // trunc(num)\n if (int !== num) {\n var intStr = String(int);\n var dec = $slice.call(str, intStr.length + 1);\n return $replace.call(intStr, sepRegex, '$&_') + '.' + $replace.call($replace.call(dec, /([0-9]{3})/g, '$&_'), /_$/, '');\n }\n }\n return $replace.call(str, sepRegex, '$&_');\n}\n\nvar utilInspect = require('./util.inspect');\nvar inspectCustom = utilInspect.custom;\nvar inspectSymbol = isSymbol(inspectCustom) ? inspectCustom : null;\n\nmodule.exports = function inspect_(obj, options, depth, seen) {\n var opts = options || {};\n\n if (has(opts, 'quoteStyle') && (opts.quoteStyle !== 'single' && opts.quoteStyle !== 'double')) {\n throw new TypeError('option \"quoteStyle\" must be \"single\" or \"double\"');\n }\n if (\n has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number'\n ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity\n : opts.maxStringLength !== null\n )\n ) {\n throw new TypeError('option \"maxStringLength\", if provided, must be a positive integer, Infinity, or `null`');\n }\n var customInspect = has(opts, 'customInspect') ? opts.customInspect : true;\n if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') {\n throw new TypeError('option \"customInspect\", if provided, must be `true`, `false`, or `\\'symbol\\'`');\n }\n\n if (\n has(opts, 'indent')\n && opts.indent !== null\n && opts.indent !== '\\t'\n && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)\n ) {\n throw new TypeError('option \"indent\" must be \"\\\\t\", an integer > 0, or `null`');\n }\n if (has(opts, 'numericSeparator') && typeof opts.numericSeparator !== 'boolean') {\n throw new TypeError('option \"numericSeparator\", if provided, must be `true` or `false`');\n }\n var numericSeparator = opts.numericSeparator;\n\n if (typeof obj === 'undefined') {\n return 'undefined';\n }\n if (obj === null) {\n return 'null';\n }\n if (typeof obj === 'boolean') {\n return obj ? 'true' : 'false';\n }\n\n if (typeof obj === 'string') {\n return inspectString(obj, opts);\n }\n if (typeof obj === 'number') {\n if (obj === 0) {\n return Infinity / obj > 0 ? '0' : '-0';\n }\n var str = String(obj);\n return numericSeparator ? addNumericSeparator(obj, str) : str;\n }\n if (typeof obj === 'bigint') {\n var bigIntStr = String(obj) + 'n';\n return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr;\n }\n\n var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth;\n if (typeof depth === 'undefined') { depth = 0; }\n if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') {\n return isArray(obj) ? '[Array]' : '[Object]';\n }\n\n var indent = getIndent(opts, depth);\n\n if (typeof seen === 'undefined') {\n seen = [];\n } else if (indexOf(seen, obj) >= 0) {\n return '[Circular]';\n }\n\n function inspect(value, from, noIndent) {\n if (from) {\n seen = $arrSlice.call(seen);\n seen.push(from);\n }\n if (noIndent) {\n var newOpts = {\n depth: opts.depth\n };\n if (has(opts, 'quoteStyle')) {\n newOpts.quoteStyle = opts.quoteStyle;\n }\n return inspect_(value, newOpts, depth + 1, seen);\n }\n return inspect_(value, opts, depth + 1, seen);\n }\n\n if (typeof obj === 'function' && !isRegExp(obj)) { // in older engines, regexes are callable\n var name = nameOf(obj);\n var keys = arrObjKeys(obj, inspect);\n return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + $join.call(keys, ', ') + ' }' : '');\n }\n if (isSymbol(obj)) {\n var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\\(.*\\))_[^)]*$/, '$1') : symToString.call(obj);\n return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString;\n }\n if (isElement(obj)) {\n var s = '<' + $toLowerCase.call(String(obj.nodeName));\n var attrs = obj.attributes || [];\n for (var i = 0; i < attrs.length; i++) {\n s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts);\n }\n s += '>';\n if (obj.childNodes && obj.childNodes.length) { s += '...'; }\n s += '';\n return s;\n }\n if (isArray(obj)) {\n if (obj.length === 0) { return '[]'; }\n var xs = arrObjKeys(obj, inspect);\n if (indent && !singleLineValues(xs)) {\n return '[' + indentedJoin(xs, indent) + ']';\n }\n return '[ ' + $join.call(xs, ', ') + ' ]';\n }\n if (isError(obj)) {\n var parts = arrObjKeys(obj, inspect);\n if (!('cause' in Error.prototype) && 'cause' in obj && !isEnumerable.call(obj, 'cause')) {\n return '{ [' + String(obj) + '] ' + $join.call($concat.call('[cause]: ' + inspect(obj.cause), parts), ', ') + ' }';\n }\n if (parts.length === 0) { return '[' + String(obj) + ']'; }\n return '{ [' + String(obj) + '] ' + $join.call(parts, ', ') + ' }';\n }\n if (typeof obj === 'object' && customInspect) {\n if (inspectSymbol && typeof obj[inspectSymbol] === 'function' && utilInspect) {\n return utilInspect(obj, { depth: maxDepth - depth });\n } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') {\n return obj.inspect();\n }\n }\n if (isMap(obj)) {\n var mapParts = [];\n mapForEach.call(obj, function (value, key) {\n mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj));\n });\n return collectionOf('Map', mapSize.call(obj), mapParts, indent);\n }\n if (isSet(obj)) {\n var setParts = [];\n setForEach.call(obj, function (value) {\n setParts.push(inspect(value, obj));\n });\n return collectionOf('Set', setSize.call(obj), setParts, indent);\n }\n if (isWeakMap(obj)) {\n return weakCollectionOf('WeakMap');\n }\n if (isWeakSet(obj)) {\n return weakCollectionOf('WeakSet');\n }\n if (isWeakRef(obj)) {\n return weakCollectionOf('WeakRef');\n }\n if (isNumber(obj)) {\n return markBoxed(inspect(Number(obj)));\n }\n if (isBigInt(obj)) {\n return markBoxed(inspect(bigIntValueOf.call(obj)));\n }\n if (isBoolean(obj)) {\n return markBoxed(booleanValueOf.call(obj));\n }\n if (isString(obj)) {\n return markBoxed(inspect(String(obj)));\n }\n if (!isDate(obj) && !isRegExp(obj)) {\n var ys = arrObjKeys(obj, inspect);\n var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object;\n var protoTag = obj instanceof Object ? '' : 'null prototype';\n var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? 'Object' : '';\n var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : '';\n var tag = constructorTag + (stringTag || protoTag ? '[' + $join.call($concat.call([], stringTag || [], protoTag || []), ': ') + '] ' : '');\n if (ys.length === 0) { return tag + '{}'; }\n if (indent) {\n return tag + '{' + indentedJoin(ys, indent) + '}';\n }\n return tag + '{ ' + $join.call(ys, ', ') + ' }';\n }\n return String(obj);\n};\n\nfunction wrapQuotes(s, defaultStyle, opts) {\n var quoteChar = (opts.quoteStyle || defaultStyle) === 'double' ? '\"' : \"'\";\n return quoteChar + s + quoteChar;\n}\n\nfunction quote(s) {\n return $replace.call(String(s), /\"/g, '"');\n}\n\nfunction isArray(obj) { return toStr(obj) === '[object Array]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isDate(obj) { return toStr(obj) === '[object Date]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isRegExp(obj) { return toStr(obj) === '[object RegExp]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isError(obj) { return toStr(obj) === '[object Error]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isString(obj) { return toStr(obj) === '[object String]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isNumber(obj) { return toStr(obj) === '[object Number]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isBoolean(obj) { return toStr(obj) === '[object Boolean]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\n\n// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives\nfunction isSymbol(obj) {\n if (hasShammedSymbols) {\n return obj && typeof obj === 'object' && obj instanceof Symbol;\n }\n if (typeof obj === 'symbol') {\n return true;\n }\n if (!obj || typeof obj !== 'object' || !symToString) {\n return false;\n }\n try {\n symToString.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isBigInt(obj) {\n if (!obj || typeof obj !== 'object' || !bigIntValueOf) {\n return false;\n }\n try {\n bigIntValueOf.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nvar hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; };\nfunction has(obj, key) {\n return hasOwn.call(obj, key);\n}\n\nfunction toStr(obj) {\n return objectToString.call(obj);\n}\n\nfunction nameOf(f) {\n if (f.name) { return f.name; }\n var m = $match.call(functionToString.call(f), /^function\\s*([\\w$]+)/);\n if (m) { return m[1]; }\n return null;\n}\n\nfunction indexOf(xs, x) {\n if (xs.indexOf) { return xs.indexOf(x); }\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) { return i; }\n }\n return -1;\n}\n\nfunction isMap(x) {\n if (!mapSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n mapSize.call(x);\n try {\n setSize.call(x);\n } catch (s) {\n return true;\n }\n return x instanceof Map; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakMap(x) {\n if (!weakMapHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakMapHas.call(x, weakMapHas);\n try {\n weakSetHas.call(x, weakSetHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakMap; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakRef(x) {\n if (!weakRefDeref || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakRefDeref.call(x);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isSet(x) {\n if (!setSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n setSize.call(x);\n try {\n mapSize.call(x);\n } catch (m) {\n return true;\n }\n return x instanceof Set; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakSet(x) {\n if (!weakSetHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakSetHas.call(x, weakSetHas);\n try {\n weakMapHas.call(x, weakMapHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakSet; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isElement(x) {\n if (!x || typeof x !== 'object') { return false; }\n if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) {\n return true;\n }\n return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function';\n}\n\nfunction inspectString(str, opts) {\n if (str.length > opts.maxStringLength) {\n var remaining = str.length - opts.maxStringLength;\n var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : '');\n return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer;\n }\n // eslint-disable-next-line no-control-regex\n var s = $replace.call($replace.call(str, /(['\\\\])/g, '\\\\$1'), /[\\x00-\\x1f]/g, lowbyte);\n return wrapQuotes(s, 'single', opts);\n}\n\nfunction lowbyte(c) {\n var n = c.charCodeAt(0);\n var x = {\n 8: 'b',\n 9: 't',\n 10: 'n',\n 12: 'f',\n 13: 'r'\n }[n];\n if (x) { return '\\\\' + x; }\n return '\\\\x' + (n < 0x10 ? '0' : '') + $toUpperCase.call(n.toString(16));\n}\n\nfunction markBoxed(str) {\n return 'Object(' + str + ')';\n}\n\nfunction weakCollectionOf(type) {\n return type + ' { ? }';\n}\n\nfunction collectionOf(type, size, entries, indent) {\n var joinedEntries = indent ? indentedJoin(entries, indent) : $join.call(entries, ', ');\n return type + ' (' + size + ') {' + joinedEntries + '}';\n}\n\nfunction singleLineValues(xs) {\n for (var i = 0; i < xs.length; i++) {\n if (indexOf(xs[i], '\\n') >= 0) {\n return false;\n }\n }\n return true;\n}\n\nfunction getIndent(opts, depth) {\n var baseIndent;\n if (opts.indent === '\\t') {\n baseIndent = '\\t';\n } else if (typeof opts.indent === 'number' && opts.indent > 0) {\n baseIndent = $join.call(Array(opts.indent + 1), ' ');\n } else {\n return null;\n }\n return {\n base: baseIndent,\n prev: $join.call(Array(depth + 1), baseIndent)\n };\n}\n\nfunction indentedJoin(xs, indent) {\n if (xs.length === 0) { return ''; }\n var lineJoiner = '\\n' + indent.prev + indent.base;\n return lineJoiner + $join.call(xs, ',' + lineJoiner) + '\\n' + indent.prev;\n}\n\nfunction arrObjKeys(obj, inspect) {\n var isArr = isArray(obj);\n var xs = [];\n if (isArr) {\n xs.length = obj.length;\n for (var i = 0; i < obj.length; i++) {\n xs[i] = has(obj, i) ? inspect(obj[i], obj) : '';\n }\n }\n var syms = typeof gOPS === 'function' ? gOPS(obj) : [];\n var symMap;\n if (hasShammedSymbols) {\n symMap = {};\n for (var k = 0; k < syms.length; k++) {\n symMap['$' + syms[k]] = syms[k];\n }\n }\n\n for (var key in obj) { // eslint-disable-line no-restricted-syntax\n if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) {\n // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section\n continue; // eslint-disable-line no-restricted-syntax, no-continue\n } else if ($test.call(/[^\\w$]/, key)) {\n xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));\n } else {\n xs.push(key + ': ' + inspect(obj[key], obj));\n }\n }\n if (typeof gOPS === 'function') {\n for (var j = 0; j < syms.length; j++) {\n if (isEnumerable.call(obj, syms[j])) {\n xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj));\n }\n }\n }\n return xs;\n}\n","'use strict';\n\nvar utils = require('./utils');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar defaults = {\n allowDots: false,\n allowPrototypes: false,\n allowSparse: false,\n arrayLimit: 20,\n charset: 'utf-8',\n charsetSentinel: false,\n comma: false,\n decoder: utils.decode,\n delimiter: '&',\n depth: 5,\n ignoreQueryPrefix: false,\n interpretNumericEntities: false,\n parameterLimit: 1000,\n parseArrays: true,\n plainObjects: false,\n strictNullHandling: false\n};\n\nvar interpretNumericEntities = function (str) {\n return str.replace(/&#(\\d+);/g, function ($0, numberStr) {\n return String.fromCharCode(parseInt(numberStr, 10));\n });\n};\n\nvar parseArrayValue = function (val, options) {\n if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) {\n return val.split(',');\n }\n\n return val;\n};\n\n// This is what browsers will submit when the ✓ character occurs in an\n// application/x-www-form-urlencoded body and the encoding of the page containing\n// the form is iso-8859-1, or when the submitted form has an accept-charset\n// attribute of iso-8859-1. Presumably also with other charsets that do not contain\n// the ✓ character, such as us-ascii.\nvar isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('✓')\n\n// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded.\nvar charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓')\n\nvar parseValues = function parseQueryStringValues(str, options) {\n var obj = {};\n var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;\n var parts = cleanStr.split(options.delimiter, limit);\n var skipIndex = -1; // Keep track of where the utf8 sentinel was found\n var i;\n\n var charset = options.charset;\n if (options.charsetSentinel) {\n for (i = 0; i < parts.length; ++i) {\n if (parts[i].indexOf('utf8=') === 0) {\n if (parts[i] === charsetSentinel) {\n charset = 'utf-8';\n } else if (parts[i] === isoSentinel) {\n charset = 'iso-8859-1';\n }\n skipIndex = i;\n i = parts.length; // The eslint settings do not allow break;\n }\n }\n }\n\n for (i = 0; i < parts.length; ++i) {\n if (i === skipIndex) {\n continue;\n }\n var part = parts[i];\n\n var bracketEqualsPos = part.indexOf(']=');\n var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n var key, val;\n if (pos === -1) {\n key = options.decoder(part, defaults.decoder, charset, 'key');\n val = options.strictNullHandling ? null : '';\n } else {\n key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key');\n val = utils.maybeMap(\n parseArrayValue(part.slice(pos + 1), options),\n function (encodedVal) {\n return options.decoder(encodedVal, defaults.decoder, charset, 'value');\n }\n );\n }\n\n if (val && options.interpretNumericEntities && charset === 'iso-8859-1') {\n val = interpretNumericEntities(val);\n }\n\n if (part.indexOf('[]=') > -1) {\n val = isArray(val) ? [val] : val;\n }\n\n if (has.call(obj, key)) {\n obj[key] = utils.combine(obj[key], val);\n } else {\n obj[key] = val;\n }\n }\n\n return obj;\n};\n\nvar parseObject = function (chain, val, options, valuesParsed) {\n var leaf = valuesParsed ? val : parseArrayValue(val, options);\n\n for (var i = chain.length - 1; i >= 0; --i) {\n var obj;\n var root = chain[i];\n\n if (root === '[]' && options.parseArrays) {\n obj = [].concat(leaf);\n } else {\n obj = options.plainObjects ? Object.create(null) : {};\n var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n var index = parseInt(cleanRoot, 10);\n if (!options.parseArrays && cleanRoot === '') {\n obj = { 0: leaf };\n } else if (\n !isNaN(index)\n && root !== cleanRoot\n && String(index) === cleanRoot\n && index >= 0\n && (options.parseArrays && index <= options.arrayLimit)\n ) {\n obj = [];\n obj[index] = leaf;\n } else if (cleanRoot !== '__proto__') {\n obj[cleanRoot] = leaf;\n }\n }\n\n leaf = obj;\n }\n\n return leaf;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) {\n if (!givenKey) {\n return;\n }\n\n // Transform dot notation to bracket notation\n var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n // The regex chunks\n\n var brackets = /(\\[[^[\\]]*])/;\n var child = /(\\[[^[\\]]*])/g;\n\n // Get the parent\n\n var segment = options.depth > 0 && brackets.exec(key);\n var parent = segment ? key.slice(0, segment.index) : key;\n\n // Stash the parent if it exists\n\n var keys = [];\n if (parent) {\n // If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties\n if (!options.plainObjects && has.call(Object.prototype, parent)) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n\n keys.push(parent);\n }\n\n // Loop through children appending to the array until we hit depth\n\n var i = 0;\n while (options.depth > 0 && (segment = child.exec(key)) !== null && i < options.depth) {\n i += 1;\n if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n keys.push(segment[1]);\n }\n\n // If there's a remainder, just add whatever is left\n\n if (segment) {\n keys.push('[' + key.slice(segment.index) + ']');\n }\n\n return parseObject(keys, val, options, valuesParsed);\n};\n\nvar normalizeParseOptions = function normalizeParseOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (opts.decoder !== null && opts.decoder !== undefined && typeof opts.decoder !== 'function') {\n throw new TypeError('Decoder has to be a function.');\n }\n\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset;\n\n return {\n allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes,\n allowSparse: typeof opts.allowSparse === 'boolean' ? opts.allowSparse : defaults.allowSparse,\n arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma,\n decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder,\n delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter,\n // eslint-disable-next-line no-implicit-coercion, no-extra-parens\n depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth,\n ignoreQueryPrefix: opts.ignoreQueryPrefix === true,\n interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities,\n parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit,\n parseArrays: opts.parseArrays !== false,\n plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (str, opts) {\n var options = normalizeParseOptions(opts);\n\n if (str === '' || str === null || typeof str === 'undefined') {\n return options.plainObjects ? Object.create(null) : {};\n }\n\n var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n var obj = options.plainObjects ? Object.create(null) : {};\n\n // Iterate over the keys and setup the new object\n\n var keys = Object.keys(tempObj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string');\n obj = utils.merge(obj, newObj, options);\n }\n\n if (options.allowSparse === true) {\n return obj;\n }\n\n return utils.compact(obj);\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isNavigator = exports.isBrowser = exports.off = exports.on = exports.noop = void 0;\nvar noop = function () { };\nexports.noop = noop;\nfunction on(obj) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (obj && obj.addEventListener) {\n obj.addEventListener.apply(obj, args);\n }\n}\nexports.on = on;\nfunction off(obj) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (obj && obj.removeEventListener) {\n obj.removeEventListener.apply(obj, args);\n }\n}\nexports.off = off;\nexports.isBrowser = typeof window !== 'undefined';\nexports.isNavigator = typeof navigator !== 'undefined';\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","/** @license React v17.0.2\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var b=60103,c=60106,d=60107,e=60108,f=60114,g=60109,h=60110,k=60112,l=60113,m=60120,n=60115,p=60116,q=60121,r=60122,u=60117,v=60129,w=60131;\nif(\"function\"===typeof Symbol&&Symbol.for){var x=Symbol.for;b=x(\"react.element\");c=x(\"react.portal\");d=x(\"react.fragment\");e=x(\"react.strict_mode\");f=x(\"react.profiler\");g=x(\"react.provider\");h=x(\"react.context\");k=x(\"react.forward_ref\");l=x(\"react.suspense\");m=x(\"react.suspense_list\");n=x(\"react.memo\");p=x(\"react.lazy\");q=x(\"react.block\");r=x(\"react.server.block\");u=x(\"react.fundamental\");v=x(\"react.debug_trace_mode\");w=x(\"react.legacy_hidden\")}\nfunction y(a){if(\"object\"===typeof a&&null!==a){var t=a.$$typeof;switch(t){case b:switch(a=a.type,a){case d:case f:case e:case l:case m:return a;default:switch(a=a&&a.$$typeof,a){case h:case k:case p:case n:case g:return a;default:return t}}case c:return t}}}var z=g,A=b,B=k,C=d,D=p,E=n,F=c,G=f,H=e,I=l;exports.ContextConsumer=h;exports.ContextProvider=z;exports.Element=A;exports.ForwardRef=B;exports.Fragment=C;exports.Lazy=D;exports.Memo=E;exports.Portal=F;exports.Profiler=G;exports.StrictMode=H;\nexports.Suspense=I;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return y(a)===h};exports.isContextProvider=function(a){return y(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return y(a)===k};exports.isFragment=function(a){return y(a)===d};exports.isLazy=function(a){return y(a)===p};exports.isMemo=function(a){return y(a)===n};\nexports.isPortal=function(a){return y(a)===c};exports.isProfiler=function(a){return y(a)===f};exports.isStrictMode=function(a){return y(a)===e};exports.isSuspense=function(a){return y(a)===l};exports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===v||a===e||a===l||a===m||a===w||\"object\"===typeof a&&null!==a&&(a.$$typeof===p||a.$$typeof===n||a.$$typeof===g||a.$$typeof===h||a.$$typeof===k||a.$$typeof===u||a.$$typeof===q||a[0]===r)?!0:!1};\nexports.typeOf=y;\n","var arrayWithHoles = require(\"./arrayWithHoles\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit\");\n\nvar nonIterableRest = require(\"./nonIterableRest\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray;","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;","function _iterableToArrayLimit(arr, i) {\n if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === \"[object Arguments]\")) {\n return;\n }\n\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}\n\nmodule.exports = _nonIterableRest;","var objectWithoutPropertiesLoose = require(\"./objectWithoutPropertiesLoose\");\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutProperties;","function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutPropertiesLoose;","var arrayWithoutHoles = require(\"./arrayWithoutHoles\");\n\nvar iterableToArray = require(\"./iterableToArray\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;","function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n}\n\nmodule.exports = _arrayWithoutHoles;","function _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nmodule.exports = _nonIterableSpread;","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;","var arrayWithHoles = require(\"./arrayWithHoles.js\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableRest = require(\"./nonIterableRest.js\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableRest, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var objectWithoutPropertiesLoose = require(\"./objectWithoutPropertiesLoose.js\");\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutProperties, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutPropertiesLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayWithoutHoles = require(\"./arrayWithoutHoles.js\");\n\nvar iterableToArray = require(\"./iterableToArray.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread.js\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\n\nmodule.exports = _arrayWithoutHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableSpread, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _taggedTemplateLiteral(strings, raw) {\n if (!raw) {\n raw = strings.slice(0);\n }\n\n return Object.freeze(Object.defineProperties(strings, {\n raw: {\n value: Object.freeze(raw)\n }\n }));\n}\n\nmodule.exports = _taggedTemplateLiteral, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\n\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _extends() {\n module.exports = _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _extends.apply(this, arguments);\n}\n\nmodule.exports = _extends, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","'use strict';\n\nvar destroy = require('./plugin/destroy');\nvar initialize = require('./plugin/initialize');\nvar update = require('./plugin/update');\n\nmodule.exports = {\n initialize: initialize,\n update: update,\n destroy: destroy\n};\n","'use strict';\n\nvar _ = require('../lib/helper');\nvar dom = require('../lib/dom');\nvar instances = require('./instances');\n\nmodule.exports = function (element) {\n var i = instances.get(element);\n\n if (!i) {\n return;\n }\n\n i.event.unbindAll();\n dom.remove(i.scrollbarX);\n dom.remove(i.scrollbarY);\n dom.remove(i.scrollbarXRail);\n dom.remove(i.scrollbarYRail);\n _.removePsClasses(element);\n\n instances.remove(element);\n};\n","'use strict';\n\nmodule.exports = {\n handlers: ['click-rail', 'drag-scrollbar', 'keyboard', 'wheel', 'touch'],\n maxScrollbarLength: null,\n minScrollbarLength: null,\n scrollXMarginOffset: 0,\n scrollYMarginOffset: 0,\n suppressScrollX: false,\n suppressScrollY: false,\n swipePropagation: true,\n useBothWheelAxes: false,\n wheelPropagation: false,\n wheelSpeed: 1,\n theme: 'default'\n};\n","'use strict';\n\nvar EventElement = function (element) {\n this.element = element;\n this.events = {};\n};\n\nEventElement.prototype.bind = function (eventName, handler) {\n if (typeof this.events[eventName] === 'undefined') {\n this.events[eventName] = [];\n }\n this.events[eventName].push(handler);\n this.element.addEventListener(eventName, handler, false);\n};\n\nEventElement.prototype.unbind = function (eventName, handler) {\n var isHandlerProvided = (typeof handler !== 'undefined');\n this.events[eventName] = this.events[eventName].filter(function (hdlr) {\n if (isHandlerProvided && hdlr !== handler) {\n return true;\n }\n this.element.removeEventListener(eventName, hdlr, false);\n return false;\n }, this);\n};\n\nEventElement.prototype.unbindAll = function () {\n for (var name in this.events) {\n this.unbind(name);\n }\n};\n\nvar EventManager = function () {\n this.eventElements = [];\n};\n\nEventManager.prototype.eventElement = function (element) {\n var ee = this.eventElements.filter(function (eventElement) {\n return eventElement.element === element;\n })[0];\n if (typeof ee === 'undefined') {\n ee = new EventElement(element);\n this.eventElements.push(ee);\n }\n return ee;\n};\n\nEventManager.prototype.bind = function (element, eventName, handler) {\n this.eventElement(element).bind(eventName, handler);\n};\n\nEventManager.prototype.unbind = function (element, eventName, handler) {\n this.eventElement(element).unbind(eventName, handler);\n};\n\nEventManager.prototype.unbindAll = function () {\n for (var i = 0; i < this.eventElements.length; i++) {\n this.eventElements[i].unbindAll();\n }\n};\n\nEventManager.prototype.once = function (element, eventName, handler) {\n var ee = this.eventElement(element);\n var onceHandler = function (e) {\n ee.unbind(eventName, onceHandler);\n handler(e);\n };\n ee.bind(eventName, onceHandler);\n};\n\nmodule.exports = EventManager;\n","'use strict';\n\nmodule.exports = (function () {\n function s4() {\n return Math.floor((1 + Math.random()) * 0x10000)\n .toString(16)\n .substring(1);\n }\n return function () {\n return s4() + s4() + '-' + s4() + '-' + s4() + '-' +\n s4() + '-' + s4() + s4() + s4();\n };\n})();\n","'use strict';\n\nvar _ = require('../lib/helper');\nvar cls = require('../lib/class');\nvar instances = require('./instances');\nvar updateGeometry = require('./update-geometry');\n\n// Handlers\nvar handlers = {\n 'click-rail': require('./handler/click-rail'),\n 'drag-scrollbar': require('./handler/drag-scrollbar'),\n 'keyboard': require('./handler/keyboard'),\n 'wheel': require('./handler/mouse-wheel'),\n 'touch': require('./handler/touch'),\n 'selection': require('./handler/selection')\n};\nvar nativeScrollHandler = require('./handler/native-scroll');\n\nmodule.exports = function (element, userSettings) {\n userSettings = typeof userSettings === 'object' ? userSettings : {};\n\n cls.add(element, 'ps-container');\n\n // Create a plugin instance.\n var i = instances.add(element);\n\n i.settings = _.extend(i.settings, userSettings);\n cls.add(element, 'ps-theme-' + i.settings.theme);\n\n i.settings.handlers.forEach(function (handlerName) {\n handlers[handlerName](element);\n });\n\n nativeScrollHandler(element);\n\n updateGeometry(element);\n};\n","'use strict';\n\nvar instances = require('../instances');\nvar updateGeometry = require('../update-geometry');\nvar updateScroll = require('../update-scroll');\n\nfunction bindClickRailHandler(element, i) {\n function pageOffset(el) {\n return el.getBoundingClientRect();\n }\n var stopPropagation = function (e) { e.stopPropagation(); };\n\n i.event.bind(i.scrollbarY, 'click', stopPropagation);\n i.event.bind(i.scrollbarYRail, 'click', function (e) {\n var positionTop = e.pageY - window.pageYOffset - pageOffset(i.scrollbarYRail).top;\n var direction = positionTop > i.scrollbarYTop ? 1 : -1;\n\n updateScroll(element, 'top', element.scrollTop + direction * i.containerHeight);\n updateGeometry(element);\n\n e.stopPropagation();\n });\n\n i.event.bind(i.scrollbarX, 'click', stopPropagation);\n i.event.bind(i.scrollbarXRail, 'click', function (e) {\n var positionLeft = e.pageX - window.pageXOffset - pageOffset(i.scrollbarXRail).left;\n var direction = positionLeft > i.scrollbarXLeft ? 1 : -1;\n\n updateScroll(element, 'left', element.scrollLeft + direction * i.containerWidth);\n updateGeometry(element);\n\n e.stopPropagation();\n });\n}\n\nmodule.exports = function (element) {\n var i = instances.get(element);\n bindClickRailHandler(element, i);\n};\n","'use strict';\n\nvar _ = require('../../lib/helper');\nvar dom = require('../../lib/dom');\nvar instances = require('../instances');\nvar updateGeometry = require('../update-geometry');\nvar updateScroll = require('../update-scroll');\n\nfunction bindMouseScrollXHandler(element, i) {\n var currentLeft = null;\n var currentPageX = null;\n\n function updateScrollLeft(deltaX) {\n var newLeft = currentLeft + (deltaX * i.railXRatio);\n var maxLeft = Math.max(0, i.scrollbarXRail.getBoundingClientRect().left) + (i.railXRatio * (i.railXWidth - i.scrollbarXWidth));\n\n if (newLeft < 0) {\n i.scrollbarXLeft = 0;\n } else if (newLeft > maxLeft) {\n i.scrollbarXLeft = maxLeft;\n } else {\n i.scrollbarXLeft = newLeft;\n }\n\n var scrollLeft = _.toInt(i.scrollbarXLeft * (i.contentWidth - i.containerWidth) / (i.containerWidth - (i.railXRatio * i.scrollbarXWidth))) - i.negativeScrollAdjustment;\n updateScroll(element, 'left', scrollLeft);\n }\n\n var mouseMoveHandler = function (e) {\n updateScrollLeft(e.pageX - currentPageX);\n updateGeometry(element);\n e.stopPropagation();\n e.preventDefault();\n };\n\n var mouseUpHandler = function () {\n _.stopScrolling(element, 'x');\n i.event.unbind(i.ownerDocument, 'mousemove', mouseMoveHandler);\n };\n\n i.event.bind(i.scrollbarX, 'mousedown', function (e) {\n currentPageX = e.pageX;\n currentLeft = _.toInt(dom.css(i.scrollbarX, 'left')) * i.railXRatio;\n _.startScrolling(element, 'x');\n\n i.event.bind(i.ownerDocument, 'mousemove', mouseMoveHandler);\n i.event.once(i.ownerDocument, 'mouseup', mouseUpHandler);\n\n e.stopPropagation();\n e.preventDefault();\n });\n}\n\nfunction bindMouseScrollYHandler(element, i) {\n var currentTop = null;\n var currentPageY = null;\n\n function updateScrollTop(deltaY) {\n var newTop = currentTop + (deltaY * i.railYRatio);\n var maxTop = Math.max(0, i.scrollbarYRail.getBoundingClientRect().top) + (i.railYRatio * (i.railYHeight - i.scrollbarYHeight));\n\n if (newTop < 0) {\n i.scrollbarYTop = 0;\n } else if (newTop > maxTop) {\n i.scrollbarYTop = maxTop;\n } else {\n i.scrollbarYTop = newTop;\n }\n\n var scrollTop = _.toInt(i.scrollbarYTop * (i.contentHeight - i.containerHeight) / (i.containerHeight - (i.railYRatio * i.scrollbarYHeight)));\n updateScroll(element, 'top', scrollTop);\n }\n\n var mouseMoveHandler = function (e) {\n updateScrollTop(e.pageY - currentPageY);\n updateGeometry(element);\n e.stopPropagation();\n e.preventDefault();\n };\n\n var mouseUpHandler = function () {\n _.stopScrolling(element, 'y');\n i.event.unbind(i.ownerDocument, 'mousemove', mouseMoveHandler);\n };\n\n i.event.bind(i.scrollbarY, 'mousedown', function (e) {\n currentPageY = e.pageY;\n currentTop = _.toInt(dom.css(i.scrollbarY, 'top')) * i.railYRatio;\n _.startScrolling(element, 'y');\n\n i.event.bind(i.ownerDocument, 'mousemove', mouseMoveHandler);\n i.event.once(i.ownerDocument, 'mouseup', mouseUpHandler);\n\n e.stopPropagation();\n e.preventDefault();\n });\n}\n\nmodule.exports = function (element) {\n var i = instances.get(element);\n bindMouseScrollXHandler(element, i);\n bindMouseScrollYHandler(element, i);\n};\n","'use strict';\n\nvar _ = require('../../lib/helper');\nvar dom = require('../../lib/dom');\nvar instances = require('../instances');\nvar updateGeometry = require('../update-geometry');\nvar updateScroll = require('../update-scroll');\n\nfunction bindKeyboardHandler(element, i) {\n var hovered = false;\n i.event.bind(element, 'mouseenter', function () {\n hovered = true;\n });\n i.event.bind(element, 'mouseleave', function () {\n hovered = false;\n });\n\n var shouldPrevent = false;\n function shouldPreventDefault(deltaX, deltaY) {\n var scrollTop = element.scrollTop;\n if (deltaX === 0) {\n if (!i.scrollbarYActive) {\n return false;\n }\n if ((scrollTop === 0 && deltaY > 0) || (scrollTop >= i.contentHeight - i.containerHeight && deltaY < 0)) {\n return !i.settings.wheelPropagation;\n }\n }\n\n var scrollLeft = element.scrollLeft;\n if (deltaY === 0) {\n if (!i.scrollbarXActive) {\n return false;\n }\n if ((scrollLeft === 0 && deltaX < 0) || (scrollLeft >= i.contentWidth - i.containerWidth && deltaX > 0)) {\n return !i.settings.wheelPropagation;\n }\n }\n return true;\n }\n\n i.event.bind(i.ownerDocument, 'keydown', function (e) {\n if ((e.isDefaultPrevented && e.isDefaultPrevented()) || e.defaultPrevented) {\n return;\n }\n\n var focused = dom.matches(i.scrollbarX, ':focus') ||\n dom.matches(i.scrollbarY, ':focus');\n\n if (!hovered && !focused) {\n return;\n }\n\n var activeElement = document.activeElement ? document.activeElement : i.ownerDocument.activeElement;\n if (activeElement) {\n if (activeElement.tagName === 'IFRAME') {\n activeElement = activeElement.contentDocument.activeElement;\n } else {\n // go deeper if element is a webcomponent\n while (activeElement.shadowRoot) {\n activeElement = activeElement.shadowRoot.activeElement;\n }\n }\n if (_.isEditable(activeElement)) {\n return;\n }\n }\n\n var deltaX = 0;\n var deltaY = 0;\n\n switch (e.which) {\n case 37: // left\n if (e.metaKey) {\n deltaX = -i.contentWidth;\n } else if (e.altKey) {\n deltaX = -i.containerWidth;\n } else {\n deltaX = -30;\n }\n break;\n case 38: // up\n if (e.metaKey) {\n deltaY = i.contentHeight;\n } else if (e.altKey) {\n deltaY = i.containerHeight;\n } else {\n deltaY = 30;\n }\n break;\n case 39: // right\n if (e.metaKey) {\n deltaX = i.contentWidth;\n } else if (e.altKey) {\n deltaX = i.containerWidth;\n } else {\n deltaX = 30;\n }\n break;\n case 40: // down\n if (e.metaKey) {\n deltaY = -i.contentHeight;\n } else if (e.altKey) {\n deltaY = -i.containerHeight;\n } else {\n deltaY = -30;\n }\n break;\n case 33: // page up\n deltaY = 90;\n break;\n case 32: // space bar\n if (e.shiftKey) {\n deltaY = 90;\n } else {\n deltaY = -90;\n }\n break;\n case 34: // page down\n deltaY = -90;\n break;\n case 35: // end\n if (e.ctrlKey) {\n deltaY = -i.contentHeight;\n } else {\n deltaY = -i.containerHeight;\n }\n break;\n case 36: // home\n if (e.ctrlKey) {\n deltaY = element.scrollTop;\n } else {\n deltaY = i.containerHeight;\n }\n break;\n default:\n return;\n }\n\n updateScroll(element, 'top', element.scrollTop - deltaY);\n updateScroll(element, 'left', element.scrollLeft + deltaX);\n updateGeometry(element);\n\n shouldPrevent = shouldPreventDefault(deltaX, deltaY);\n if (shouldPrevent) {\n e.preventDefault();\n }\n });\n}\n\nmodule.exports = function (element) {\n var i = instances.get(element);\n bindKeyboardHandler(element, i);\n};\n","'use strict';\n\nvar instances = require('../instances');\nvar updateGeometry = require('../update-geometry');\nvar updateScroll = require('../update-scroll');\n\nfunction bindMouseWheelHandler(element, i) {\n var shouldPrevent = false;\n\n function shouldPreventDefault(deltaX, deltaY) {\n var scrollTop = element.scrollTop;\n if (deltaX === 0) {\n if (!i.scrollbarYActive) {\n return false;\n }\n if ((scrollTop === 0 && deltaY > 0) || (scrollTop >= i.contentHeight - i.containerHeight && deltaY < 0)) {\n return !i.settings.wheelPropagation;\n }\n }\n\n var scrollLeft = element.scrollLeft;\n if (deltaY === 0) {\n if (!i.scrollbarXActive) {\n return false;\n }\n if ((scrollLeft === 0 && deltaX < 0) || (scrollLeft >= i.contentWidth - i.containerWidth && deltaX > 0)) {\n return !i.settings.wheelPropagation;\n }\n }\n return true;\n }\n\n function getDeltaFromEvent(e) {\n var deltaX = e.deltaX;\n var deltaY = -1 * e.deltaY;\n\n if (typeof deltaX === \"undefined\" || typeof deltaY === \"undefined\") {\n // OS X Safari\n deltaX = -1 * e.wheelDeltaX / 6;\n deltaY = e.wheelDeltaY / 6;\n }\n\n if (e.deltaMode && e.deltaMode === 1) {\n // Firefox in deltaMode 1: Line scrolling\n deltaX *= 10;\n deltaY *= 10;\n }\n\n if (deltaX !== deltaX && deltaY !== deltaY/* NaN checks */) {\n // IE in some mouse drivers\n deltaX = 0;\n deltaY = e.wheelDelta;\n }\n\n if (e.shiftKey) {\n // reverse axis with shift key\n return [-deltaY, -deltaX];\n }\n return [deltaX, deltaY];\n }\n\n function shouldBeConsumedByChild(deltaX, deltaY) {\n var child = element.querySelector('textarea:hover, select[multiple]:hover, .ps-child:hover');\n if (child) {\n if (!window.getComputedStyle(child).overflow.match(/(scroll|auto)/)) {\n // if not scrollable\n return false;\n }\n\n var maxScrollTop = child.scrollHeight - child.clientHeight;\n if (maxScrollTop > 0) {\n if (!(child.scrollTop === 0 && deltaY > 0) && !(child.scrollTop === maxScrollTop && deltaY < 0)) {\n return true;\n }\n }\n var maxScrollLeft = child.scrollLeft - child.clientWidth;\n if (maxScrollLeft > 0) {\n if (!(child.scrollLeft === 0 && deltaX < 0) && !(child.scrollLeft === maxScrollLeft && deltaX > 0)) {\n return true;\n }\n }\n }\n return false;\n }\n\n function mousewheelHandler(e) {\n var delta = getDeltaFromEvent(e);\n\n var deltaX = delta[0];\n var deltaY = delta[1];\n\n if (shouldBeConsumedByChild(deltaX, deltaY)) {\n return;\n }\n\n shouldPrevent = false;\n if (!i.settings.useBothWheelAxes) {\n // deltaX will only be used for horizontal scrolling and deltaY will\n // only be used for vertical scrolling - this is the default\n updateScroll(element, 'top', element.scrollTop - (deltaY * i.settings.wheelSpeed));\n updateScroll(element, 'left', element.scrollLeft + (deltaX * i.settings.wheelSpeed));\n } else if (i.scrollbarYActive && !i.scrollbarXActive) {\n // only vertical scrollbar is active and useBothWheelAxes option is\n // active, so let's scroll vertical bar using both mouse wheel axes\n if (deltaY) {\n updateScroll(element, 'top', element.scrollTop - (deltaY * i.settings.wheelSpeed));\n } else {\n updateScroll(element, 'top', element.scrollTop + (deltaX * i.settings.wheelSpeed));\n }\n shouldPrevent = true;\n } else if (i.scrollbarXActive && !i.scrollbarYActive) {\n // useBothWheelAxes and only horizontal bar is active, so use both\n // wheel axes for horizontal bar\n if (deltaX) {\n updateScroll(element, 'left', element.scrollLeft + (deltaX * i.settings.wheelSpeed));\n } else {\n updateScroll(element, 'left', element.scrollLeft - (deltaY * i.settings.wheelSpeed));\n }\n shouldPrevent = true;\n }\n\n updateGeometry(element);\n\n shouldPrevent = (shouldPrevent || shouldPreventDefault(deltaX, deltaY));\n if (shouldPrevent) {\n e.stopPropagation();\n e.preventDefault();\n }\n }\n\n if (typeof window.onwheel !== \"undefined\") {\n i.event.bind(element, 'wheel', mousewheelHandler);\n } else if (typeof window.onmousewheel !== \"undefined\") {\n i.event.bind(element, 'mousewheel', mousewheelHandler);\n }\n}\n\nmodule.exports = function (element) {\n var i = instances.get(element);\n bindMouseWheelHandler(element, i);\n};\n","'use strict';\n\nvar _ = require('../../lib/helper');\nvar instances = require('../instances');\nvar updateGeometry = require('../update-geometry');\nvar updateScroll = require('../update-scroll');\n\nfunction bindTouchHandler(element, i, supportsTouch, supportsIePointer) {\n function shouldPreventDefault(deltaX, deltaY) {\n var scrollTop = element.scrollTop;\n var scrollLeft = element.scrollLeft;\n var magnitudeX = Math.abs(deltaX);\n var magnitudeY = Math.abs(deltaY);\n\n if (magnitudeY > magnitudeX) {\n // user is perhaps trying to swipe up/down the page\n\n if (((deltaY < 0) && (scrollTop === i.contentHeight - i.containerHeight)) ||\n ((deltaY > 0) && (scrollTop === 0))) {\n return !i.settings.swipePropagation;\n }\n } else if (magnitudeX > magnitudeY) {\n // user is perhaps trying to swipe left/right across the page\n\n if (((deltaX < 0) && (scrollLeft === i.contentWidth - i.containerWidth)) ||\n ((deltaX > 0) && (scrollLeft === 0))) {\n return !i.settings.swipePropagation;\n }\n }\n\n return true;\n }\n\n function applyTouchMove(differenceX, differenceY) {\n updateScroll(element, 'top', element.scrollTop - differenceY);\n updateScroll(element, 'left', element.scrollLeft - differenceX);\n\n updateGeometry(element);\n }\n\n var startOffset = {};\n var startTime = 0;\n var speed = {};\n var easingLoop = null;\n var inGlobalTouch = false;\n var inLocalTouch = false;\n\n function globalTouchStart() {\n inGlobalTouch = true;\n }\n function globalTouchEnd() {\n inGlobalTouch = false;\n }\n\n function getTouch(e) {\n if (e.targetTouches) {\n return e.targetTouches[0];\n } else {\n // Maybe IE pointer\n return e;\n }\n }\n function shouldHandle(e) {\n if (e.targetTouches && e.targetTouches.length === 1) {\n return true;\n }\n if (e.pointerType && e.pointerType !== 'mouse' && e.pointerType !== e.MSPOINTER_TYPE_MOUSE) {\n return true;\n }\n return false;\n }\n function touchStart(e) {\n if (shouldHandle(e)) {\n inLocalTouch = true;\n\n var touch = getTouch(e);\n\n startOffset.pageX = touch.pageX;\n startOffset.pageY = touch.pageY;\n\n startTime = (new Date()).getTime();\n\n if (easingLoop !== null) {\n clearInterval(easingLoop);\n }\n\n e.stopPropagation();\n }\n }\n function touchMove(e) {\n if (!inLocalTouch && i.settings.swipePropagation) {\n touchStart(e);\n }\n if (!inGlobalTouch && inLocalTouch && shouldHandle(e)) {\n var touch = getTouch(e);\n\n var currentOffset = {pageX: touch.pageX, pageY: touch.pageY};\n\n var differenceX = currentOffset.pageX - startOffset.pageX;\n var differenceY = currentOffset.pageY - startOffset.pageY;\n\n applyTouchMove(differenceX, differenceY);\n startOffset = currentOffset;\n\n var currentTime = (new Date()).getTime();\n\n var timeGap = currentTime - startTime;\n if (timeGap > 0) {\n speed.x = differenceX / timeGap;\n speed.y = differenceY / timeGap;\n startTime = currentTime;\n }\n\n if (shouldPreventDefault(differenceX, differenceY)) {\n e.stopPropagation();\n e.preventDefault();\n }\n }\n }\n function touchEnd() {\n if (!inGlobalTouch && inLocalTouch) {\n inLocalTouch = false;\n\n clearInterval(easingLoop);\n easingLoop = setInterval(function () {\n if (!instances.get(element)) {\n clearInterval(easingLoop);\n return;\n }\n\n if (!speed.x && !speed.y) {\n clearInterval(easingLoop);\n return;\n }\n\n if (Math.abs(speed.x) < 0.01 && Math.abs(speed.y) < 0.01) {\n clearInterval(easingLoop);\n return;\n }\n\n applyTouchMove(speed.x * 30, speed.y * 30);\n\n speed.x *= 0.8;\n speed.y *= 0.8;\n }, 10);\n }\n }\n\n if (supportsTouch) {\n i.event.bind(window, 'touchstart', globalTouchStart);\n i.event.bind(window, 'touchend', globalTouchEnd);\n i.event.bind(element, 'touchstart', touchStart);\n i.event.bind(element, 'touchmove', touchMove);\n i.event.bind(element, 'touchend', touchEnd);\n }\n\n if (supportsIePointer) {\n if (window.PointerEvent) {\n i.event.bind(window, 'pointerdown', globalTouchStart);\n i.event.bind(window, 'pointerup', globalTouchEnd);\n i.event.bind(element, 'pointerdown', touchStart);\n i.event.bind(element, 'pointermove', touchMove);\n i.event.bind(element, 'pointerup', touchEnd);\n } else if (window.MSPointerEvent) {\n i.event.bind(window, 'MSPointerDown', globalTouchStart);\n i.event.bind(window, 'MSPointerUp', globalTouchEnd);\n i.event.bind(element, 'MSPointerDown', touchStart);\n i.event.bind(element, 'MSPointerMove', touchMove);\n i.event.bind(element, 'MSPointerUp', touchEnd);\n }\n }\n}\n\nmodule.exports = function (element) {\n if (!_.env.supportsTouch && !_.env.supportsIePointer) {\n return;\n }\n\n var i = instances.get(element);\n bindTouchHandler(element, i, _.env.supportsTouch, _.env.supportsIePointer);\n};\n","'use strict';\n\nvar _ = require('../../lib/helper');\nvar instances = require('../instances');\nvar updateGeometry = require('../update-geometry');\nvar updateScroll = require('../update-scroll');\n\nfunction bindSelectionHandler(element, i) {\n function getRangeNode() {\n var selection = window.getSelection ? window.getSelection() :\n document.getSelection ? document.getSelection() : '';\n if (selection.toString().length === 0) {\n return null;\n } else {\n return selection.getRangeAt(0).commonAncestorContainer;\n }\n }\n\n var scrollingLoop = null;\n var scrollDiff = {top: 0, left: 0};\n function startScrolling() {\n if (!scrollingLoop) {\n scrollingLoop = setInterval(function () {\n if (!instances.get(element)) {\n clearInterval(scrollingLoop);\n return;\n }\n\n updateScroll(element, 'top', element.scrollTop + scrollDiff.top);\n updateScroll(element, 'left', element.scrollLeft + scrollDiff.left);\n updateGeometry(element);\n }, 50); // every .1 sec\n }\n }\n function stopScrolling() {\n if (scrollingLoop) {\n clearInterval(scrollingLoop);\n scrollingLoop = null;\n }\n _.stopScrolling(element);\n }\n\n var isSelected = false;\n i.event.bind(i.ownerDocument, 'selectionchange', function () {\n if (element.contains(getRangeNode())) {\n isSelected = true;\n } else {\n isSelected = false;\n stopScrolling();\n }\n });\n i.event.bind(window, 'mouseup', function () {\n if (isSelected) {\n isSelected = false;\n stopScrolling();\n }\n });\n i.event.bind(window, 'keyup', function () {\n if (isSelected) {\n isSelected = false;\n stopScrolling();\n }\n });\n\n i.event.bind(window, 'mousemove', function (e) {\n if (isSelected) {\n var mousePosition = {x: e.pageX, y: e.pageY};\n var containerGeometry = {\n left: element.offsetLeft,\n right: element.offsetLeft + element.offsetWidth,\n top: element.offsetTop,\n bottom: element.offsetTop + element.offsetHeight\n };\n\n if (mousePosition.x < containerGeometry.left + 3) {\n scrollDiff.left = -5;\n _.startScrolling(element, 'x');\n } else if (mousePosition.x > containerGeometry.right - 3) {\n scrollDiff.left = 5;\n _.startScrolling(element, 'x');\n } else {\n scrollDiff.left = 0;\n }\n\n if (mousePosition.y < containerGeometry.top + 3) {\n if (containerGeometry.top + 3 - mousePosition.y < 5) {\n scrollDiff.top = -5;\n } else {\n scrollDiff.top = -20;\n }\n _.startScrolling(element, 'y');\n } else if (mousePosition.y > containerGeometry.bottom - 3) {\n if (mousePosition.y - containerGeometry.bottom + 3 < 5) {\n scrollDiff.top = 5;\n } else {\n scrollDiff.top = 20;\n }\n _.startScrolling(element, 'y');\n } else {\n scrollDiff.top = 0;\n }\n\n if (scrollDiff.top === 0 && scrollDiff.left === 0) {\n stopScrolling();\n } else {\n startScrolling();\n }\n }\n });\n}\n\nmodule.exports = function (element) {\n var i = instances.get(element);\n bindSelectionHandler(element, i);\n};\n","'use strict';\n\nvar instances = require('../instances');\nvar updateGeometry = require('../update-geometry');\n\nfunction bindNativeScrollHandler(element, i) {\n i.event.bind(element, 'scroll', function () {\n updateGeometry(element);\n });\n}\n\nmodule.exports = function (element) {\n var i = instances.get(element);\n bindNativeScrollHandler(element, i);\n};\n","'use strict';\n\nvar _ = require('../lib/helper');\nvar dom = require('../lib/dom');\nvar instances = require('./instances');\nvar updateGeometry = require('./update-geometry');\nvar updateScroll = require('./update-scroll');\n\nmodule.exports = function (element) {\n var i = instances.get(element);\n\n if (!i) {\n return;\n }\n\n // Recalcuate negative scrollLeft adjustment\n i.negativeScrollAdjustment = i.isNegativeScroll ? element.scrollWidth - element.clientWidth : 0;\n\n // Recalculate rail margins\n dom.css(i.scrollbarXRail, 'display', 'block');\n dom.css(i.scrollbarYRail, 'display', 'block');\n i.railXMarginWidth = _.toInt(dom.css(i.scrollbarXRail, 'marginLeft')) + _.toInt(dom.css(i.scrollbarXRail, 'marginRight'));\n i.railYMarginHeight = _.toInt(dom.css(i.scrollbarYRail, 'marginTop')) + _.toInt(dom.css(i.scrollbarYRail, 'marginBottom'));\n\n // Hide scrollbars not to affect scrollWidth and scrollHeight\n dom.css(i.scrollbarXRail, 'display', 'none');\n dom.css(i.scrollbarYRail, 'display', 'none');\n\n updateGeometry(element);\n\n // Update top/left scroll to trigger events\n updateScroll(element, 'top', element.scrollTop);\n updateScroll(element, 'left', element.scrollLeft);\n\n dom.css(i.scrollbarXRail, 'display', '');\n dom.css(i.scrollbarYRail, 'display', '');\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar _1 = require(\"./\");\nvar ecma402_abstract_1 = require(\"@formatjs/ecma402-abstract\");\nvar should_polyfill_1 = require(\"./should-polyfill\");\nvar to_locale_string_1 = require(\"./src/to_locale_string\");\nif (should_polyfill_1.shouldPolyfill()) {\n ecma402_abstract_1.defineProperty(Intl, 'DateTimeFormat', { value: _1.DateTimeFormat });\n ecma402_abstract_1.defineProperty(Date.prototype, 'toLocaleString', {\n value: function toLocaleString(locales, options) {\n return to_locale_string_1.toLocaleString(this, locales, options);\n },\n });\n ecma402_abstract_1.defineProperty(Date.prototype, 'toLocaleDateString', {\n value: function toLocaleDateString(locales, options) {\n return to_locale_string_1.toLocaleDateString(this, locales, options);\n },\n });\n ecma402_abstract_1.defineProperty(Date.prototype, 'toLocaleTimeString', {\n value: function toLocaleTimeString(locales, options) {\n return to_locale_string_1.toLocaleTimeString(this, locales, options);\n },\n });\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./src/core\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LookupMatcher = void 0;\nvar utils_1 = require(\"./utils\");\nvar BestAvailableLocale_1 = require(\"./BestAvailableLocale\");\n/**\n * https://tc39.es/ecma402/#sec-lookupmatcher\n * @param availableLocales\n * @param requestedLocales\n * @param getDefaultLocale\n */\nfunction LookupMatcher(availableLocales, requestedLocales, getDefaultLocale) {\n var result = { locale: '' };\n for (var _i = 0, requestedLocales_1 = requestedLocales; _i < requestedLocales_1.length; _i++) {\n var locale = requestedLocales_1[_i];\n var noExtensionLocale = locale.replace(utils_1.UNICODE_EXTENSION_SEQUENCE_REGEX, '');\n var availableLocale = BestAvailableLocale_1.BestAvailableLocale(availableLocales, noExtensionLocale);\n if (availableLocale) {\n result.locale = availableLocale;\n if (locale !== noExtensionLocale) {\n result.extension = locale.slice(noExtensionLocale.length + 1, locale.length);\n }\n return result;\n }\n }\n result.locale = getDefaultLocale();\n return result;\n}\nexports.LookupMatcher = LookupMatcher;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BestFitMatcher = void 0;\nvar BestAvailableLocale_1 = require(\"./BestAvailableLocale\");\nvar utils_1 = require(\"./utils\");\n/**\n * https://tc39.es/ecma402/#sec-bestfitmatcher\n * @param availableLocales\n * @param requestedLocales\n * @param getDefaultLocale\n */\nfunction BestFitMatcher(availableLocales, requestedLocales, getDefaultLocale) {\n var minimizedAvailableLocaleMap = Array.from(availableLocales).reduce(function (all, l) {\n all[l] = l;\n return all;\n }, {});\n var minimizedAvailableLocales = new Set();\n availableLocales.forEach(function (locale) {\n var minimizedLocale = new Intl.Locale(locale)\n .minimize()\n .toString();\n minimizedAvailableLocaleMap[minimizedLocale] = locale;\n minimizedAvailableLocales.add(minimizedLocale);\n });\n var foundLocale;\n for (var _i = 0, requestedLocales_1 = requestedLocales; _i < requestedLocales_1.length; _i++) {\n var l = requestedLocales_1[_i];\n if (foundLocale) {\n break;\n }\n var noExtensionLocale = l.replace(utils_1.UNICODE_EXTENSION_SEQUENCE_REGEX, '');\n if (availableLocales.has(noExtensionLocale)) {\n foundLocale = noExtensionLocale;\n break;\n }\n if (minimizedAvailableLocales.has(noExtensionLocale)) {\n foundLocale = noExtensionLocale;\n break;\n }\n var locale = new Intl.Locale(noExtensionLocale);\n var maximizedRequestedLocale = locale.maximize().toString();\n var minimizedRequestedLocale = locale.minimize().toString();\n // Check minimized locale\n if (minimizedAvailableLocales.has(minimizedRequestedLocale)) {\n foundLocale = minimizedRequestedLocale;\n break;\n }\n // Lookup algo on maximized locale\n foundLocale = BestAvailableLocale_1.BestAvailableLocale(minimizedAvailableLocales, maximizedRequestedLocale);\n }\n return {\n locale: (foundLocale && minimizedAvailableLocaleMap[foundLocale]) ||\n getDefaultLocale(),\n };\n}\nexports.BestFitMatcher = BestFitMatcher;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UnicodeExtensionValue = void 0;\nvar utils_1 = require(\"./utils\");\n/**\n * https://tc39.es/ecma402/#sec-unicodeextensionvalue\n * @param extension\n * @param key\n */\nfunction UnicodeExtensionValue(extension, key) {\n utils_1.invariant(key.length === 2, 'key must have 2 elements');\n var size = extension.length;\n var searchValue = \"-\" + key + \"-\";\n var pos = extension.indexOf(searchValue);\n if (pos !== -1) {\n var start = pos + 4;\n var end = start;\n var k = start;\n var done = false;\n while (!done) {\n var e = extension.indexOf('-', k);\n var len = void 0;\n if (e === -1) {\n len = size - k;\n }\n else {\n len = e - k;\n }\n if (len === 2) {\n done = true;\n }\n else if (e === -1) {\n end = size;\n done = true;\n }\n else {\n end = e;\n k = e + 1;\n }\n }\n return extension.slice(start, end);\n }\n searchValue = \"-\" + key;\n pos = extension.indexOf(searchValue);\n if (pos !== -1 && pos + 3 === size) {\n return '';\n }\n return undefined;\n}\nexports.UnicodeExtensionValue = UnicodeExtensionValue;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LookupSupportedLocales = void 0;\nvar utils_1 = require(\"./utils\");\nvar BestAvailableLocale_1 = require(\"./BestAvailableLocale\");\n/**\n * https://tc39.es/ecma402/#sec-lookupsupportedlocales\n * @param availableLocales\n * @param requestedLocales\n */\nfunction LookupSupportedLocales(availableLocales, requestedLocales) {\n var subset = [];\n for (var _i = 0, requestedLocales_1 = requestedLocales; _i < requestedLocales_1.length; _i++) {\n var locale = requestedLocales_1[_i];\n var noExtensionLocale = locale.replace(utils_1.UNICODE_EXTENSION_SEQUENCE_REGEX, '');\n var availableLocale = BestAvailableLocale_1.BestAvailableLocale(availableLocales, noExtensionLocale);\n if (availableLocale) {\n subset.push(availableLocale);\n }\n }\n return subset;\n}\nexports.LookupSupportedLocales = LookupSupportedLocales;\n","\"use strict\";\n// Type-only circular import\n// eslint-disable-next-line import/no-cycle\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar internalSlotMap = new WeakMap();\nfunction getInternalSlots(x) {\n var internalSlots = internalSlotMap.get(x);\n if (!internalSlots) {\n internalSlots = Object.create(null);\n internalSlotMap.set(x, internalSlots);\n }\n return internalSlots;\n}\nexports.default = getInternalSlots;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// @generated\n// prettier-ignore\nexports.default = {\n \"Africa/Asmera\": \"Africa/Nairobi\",\n \"Africa/Timbuktu\": \"Africa/Abidjan\",\n \"America/Argentina/ComodRivadavia\": \"America/Argentina/Catamarca\",\n \"America/Atka\": \"America/Adak\",\n \"America/Buenos_Aires\": \"America/Argentina/Buenos_Aires\",\n \"America/Catamarca\": \"America/Argentina/Catamarca\",\n \"America/Coral_Harbour\": \"America/Atikokan\",\n \"America/Cordoba\": \"America/Argentina/Cordoba\",\n \"America/Ensenada\": \"America/Tijuana\",\n \"America/Fort_Wayne\": \"America/Indiana/Indianapolis\",\n \"America/Godthab\": \"America/Nuuk\",\n \"America/Indianapolis\": \"America/Indiana/Indianapolis\",\n \"America/Jujuy\": \"America/Argentina/Jujuy\",\n \"America/Knox_IN\": \"America/Indiana/Knox\",\n \"America/Louisville\": \"America/Kentucky/Louisville\",\n \"America/Mendoza\": \"America/Argentina/Mendoza\",\n \"America/Montreal\": \"America/Toronto\",\n \"America/Porto_Acre\": \"America/Rio_Branco\",\n \"America/Rosario\": \"America/Argentina/Cordoba\",\n \"America/Santa_Isabel\": \"America/Tijuana\",\n \"America/Shiprock\": \"America/Denver\",\n \"America/Virgin\": \"America/Port_of_Spain\",\n \"Antarctica/South_Pole\": \"Pacific/Auckland\",\n \"Asia/Ashkhabad\": \"Asia/Ashgabat\",\n \"Asia/Calcutta\": \"Asia/Kolkata\",\n \"Asia/Chongqing\": \"Asia/Shanghai\",\n \"Asia/Chungking\": \"Asia/Shanghai\",\n \"Asia/Dacca\": \"Asia/Dhaka\",\n \"Asia/Harbin\": \"Asia/Shanghai\",\n \"Asia/Kashgar\": \"Asia/Urumqi\",\n \"Asia/Katmandu\": \"Asia/Kathmandu\",\n \"Asia/Macao\": \"Asia/Macau\",\n \"Asia/Rangoon\": \"Asia/Yangon\",\n \"Asia/Saigon\": \"Asia/Ho_Chi_Minh\",\n \"Asia/Tel_Aviv\": \"Asia/Jerusalem\",\n \"Asia/Thimbu\": \"Asia/Thimphu\",\n \"Asia/Ujung_Pandang\": \"Asia/Makassar\",\n \"Asia/Ulan_Bator\": \"Asia/Ulaanbaatar\",\n \"Atlantic/Faeroe\": \"Atlantic/Faroe\",\n \"Atlantic/Jan_Mayen\": \"Europe/Oslo\",\n \"Australia/ACT\": \"Australia/Sydney\",\n \"Australia/Canberra\": \"Australia/Sydney\",\n \"Australia/Currie\": \"Australia/Hobart\",\n \"Australia/LHI\": \"Australia/Lord_Howe\",\n \"Australia/NSW\": \"Australia/Sydney\",\n \"Australia/North\": \"Australia/Darwin\",\n \"Australia/Queensland\": \"Australia/Brisbane\",\n \"Australia/South\": \"Australia/Adelaide\",\n \"Australia/Tasmania\": \"Australia/Hobart\",\n \"Australia/Victoria\": \"Australia/Melbourne\",\n \"Australia/West\": \"Australia/Perth\",\n \"Australia/Yancowinna\": \"Australia/Broken_Hill\",\n \"Brazil/Acre\": \"America/Rio_Branco\",\n \"Brazil/DeNoronha\": \"America/Noronha\",\n \"Brazil/East\": \"America/Sao_Paulo\",\n \"Brazil/West\": \"America/Manaus\",\n \"Canada/Atlantic\": \"America/Halifax\",\n \"Canada/Central\": \"America/Winnipeg\",\n \"Canada/Eastern\": \"America/Toronto\",\n \"Canada/Mountain\": \"America/Edmonton\",\n \"Canada/Newfoundland\": \"America/St_Johns\",\n \"Canada/Pacific\": \"America/Vancouver\",\n \"Canada/Saskatchewan\": \"America/Regina\",\n \"Canada/Yukon\": \"America/Whitehorse\",\n \"Chile/Continental\": \"America/Santiago\",\n \"Chile/EasterIsland\": \"Pacific/Easter\",\n \"Cuba\": \"America/Havana\",\n \"Egypt\": \"Africa/Cairo\",\n \"Eire\": \"Europe/Dublin\",\n \"Etc/UCT\": \"Etc/UTC\",\n \"Europe/Belfast\": \"Europe/London\",\n \"Europe/Tiraspol\": \"Europe/Chisinau\",\n \"GB\": \"Europe/London\",\n \"GB-Eire\": \"Europe/London\",\n \"GMT+0\": \"Etc/GMT\",\n \"GMT-0\": \"Etc/GMT\",\n \"GMT0\": \"Etc/GMT\",\n \"Greenwich\": \"Etc/GMT\",\n \"Hongkong\": \"Asia/Hong_Kong\",\n \"Iceland\": \"Atlantic/Reykjavik\",\n \"Iran\": \"Asia/Tehran\",\n \"Israel\": \"Asia/Jerusalem\",\n \"Jamaica\": \"America/Jamaica\",\n \"Japan\": \"Asia/Tokyo\",\n \"Kwajalein\": \"Pacific/Kwajalein\",\n \"Libya\": \"Africa/Tripoli\",\n \"Mexico/BajaNorte\": \"America/Tijuana\",\n \"Mexico/BajaSur\": \"America/Mazatlan\",\n \"Mexico/General\": \"America/Mexico_City\",\n \"NZ\": \"Pacific/Auckland\",\n \"NZ-CHAT\": \"Pacific/Chatham\",\n \"Navajo\": \"America/Denver\",\n \"PRC\": \"Asia/Shanghai\",\n \"Pacific/Johnston\": \"Pacific/Honolulu\",\n \"Pacific/Ponape\": \"Pacific/Pohnpei\",\n \"Pacific/Samoa\": \"Pacific/Pago_Pago\",\n \"Pacific/Truk\": \"Pacific/Chuuk\",\n \"Pacific/Yap\": \"Pacific/Chuuk\",\n \"Poland\": \"Europe/Warsaw\",\n \"Portugal\": \"Europe/Lisbon\",\n \"ROC\": \"Asia/Taipei\",\n \"ROK\": \"Asia/Seoul\",\n \"Singapore\": \"Asia/Singapore\",\n \"Turkey\": \"Europe/Istanbul\",\n \"UCT\": \"Etc/UTC\",\n \"US/Alaska\": \"America/Anchorage\",\n \"US/Aleutian\": \"America/Adak\",\n \"US/Arizona\": \"America/Phoenix\",\n \"US/Central\": \"America/Chicago\",\n \"US/East-Indiana\": \"America/Indiana/Indianapolis\",\n \"US/Eastern\": \"America/New_York\",\n \"US/Hawaii\": \"Pacific/Honolulu\",\n \"US/Indiana-Starke\": \"America/Indiana/Knox\",\n \"US/Michigan\": \"America/Detroit\",\n \"US/Mountain\": \"America/Denver\",\n \"US/Pacific\": \"America/Los_Angeles\",\n \"US/Samoa\": \"Pacific/Pago_Pago\",\n \"UTC\": \"Etc/UTC\",\n \"Universal\": \"Etc/UTC\",\n \"W-SU\": \"Europe/Moscow\",\n \"Zulu\": \"Etc/UTC\"\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.unpack = exports.pack = void 0;\nvar tslib_1 = require(\"tslib\");\nfunction pack(data) {\n var zoneNames = Object.keys(data.zones);\n zoneNames.sort(); // so output is stable\n return {\n zones: zoneNames.map(function (zone) {\n return tslib_1.__spreadArray([\n zone\n ], data.zones[zone].map(function (_a) {\n var ts = _a[0], others = _a.slice(1);\n return tslib_1.__spreadArray([ts === '' ? '' : ts.toString(36)], others).join(',');\n })).join('|');\n }),\n abbrvs: data.abbrvs.join('|'),\n offsets: data.offsets.map(function (o) { return o.toString(36); }).join('|'),\n };\n}\nexports.pack = pack;\nfunction unpack(data) {\n var abbrvs = data.abbrvs.split('|');\n var offsets = data.offsets.split('|').map(function (n) { return parseInt(n, 36); });\n var packedZones = data.zones;\n var zones = {};\n for (var _i = 0, packedZones_1 = packedZones; _i < packedZones_1.length; _i++) {\n var d = packedZones_1[_i];\n var _a = d.split('|'), zone = _a[0], zoneData = _a.slice(1);\n zones[zone] = zoneData\n .map(function (z) { return z.split(','); })\n .map(function (_a) {\n var ts = _a[0], abbrvIndex = _a[1], offsetIndex = _a[2], dst = _a[3];\n return [\n ts === '' ? -Infinity : parseInt(ts, 36),\n abbrvs[+abbrvIndex],\n offsets[+offsetIndex],\n dst === '1',\n ];\n });\n }\n return zones;\n}\nexports.unpack = unpack;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FormatDateTime = void 0;\nvar PartitionDateTimePattern_1 = require(\"./PartitionDateTimePattern\");\n/**\n * https://tc39.es/ecma402/#sec-formatdatetime\n * @param dtf DateTimeFormat\n * @param x\n */\nfunction FormatDateTime(dtf, x, implDetails) {\n var parts = PartitionDateTimePattern_1.PartitionDateTimePattern(dtf, x, implDetails);\n var result = '';\n for (var _i = 0, parts_1 = parts; _i < parts_1.length; _i++) {\n var part = parts_1[_i];\n result += part.value;\n }\n return result;\n}\nexports.FormatDateTime = FormatDateTime;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InitializeDateTimeFormat = void 0;\nvar ecma402_abstract_1 = require(\"@formatjs/ecma402-abstract\");\nvar BasicFormatMatcher_1 = require(\"./BasicFormatMatcher\");\nvar BestFitFormatMatcher_1 = require(\"./BestFitFormatMatcher\");\nvar utils_1 = require(\"./utils\");\nvar DateTimeStyleFormat_1 = require(\"./DateTimeStyleFormat\");\nvar ToDateTimeOptions_1 = require(\"./ToDateTimeOptions\");\nvar intl_localematcher_1 = require(\"@formatjs/intl-localematcher\");\nfunction isTimeRelated(opt) {\n for (var _i = 0, _a = ['hour', 'minute', 'second']; _i < _a.length; _i++) {\n var prop = _a[_i];\n var value = opt[prop];\n if (value !== undefined) {\n return true;\n }\n }\n return false;\n}\nfunction resolveHourCycle(hc, hcDefault, hour12) {\n if (hc == null) {\n hc = hcDefault;\n }\n if (hour12 !== undefined) {\n if (hour12) {\n if (hcDefault === 'h11' || hcDefault === 'h23') {\n hc = 'h11';\n }\n else {\n hc = 'h12';\n }\n }\n else {\n ecma402_abstract_1.invariant(!hour12, 'hour12 must not be set');\n if (hcDefault === 'h11' || hcDefault === 'h23') {\n hc = 'h23';\n }\n else {\n hc = 'h24';\n }\n }\n }\n return hc;\n}\nvar TYPE_REGEX = /^[a-z0-9]{3,8}$/i;\n/**\n * https://tc39.es/ecma402/#sec-initializedatetimeformat\n * @param dtf DateTimeFormat\n * @param locales locales\n * @param opts options\n */\nfunction InitializeDateTimeFormat(dtf, locales, opts, _a) {\n var getInternalSlots = _a.getInternalSlots, availableLocales = _a.availableLocales, localeData = _a.localeData, getDefaultLocale = _a.getDefaultLocale, getDefaultTimeZone = _a.getDefaultTimeZone, relevantExtensionKeys = _a.relevantExtensionKeys, tzData = _a.tzData, uppercaseLinks = _a.uppercaseLinks;\n // @ts-ignore\n var requestedLocales = ecma402_abstract_1.CanonicalizeLocaleList(locales);\n var options = ToDateTimeOptions_1.ToDateTimeOptions(opts, 'any', 'date');\n var opt = Object.create(null);\n var matcher = ecma402_abstract_1.GetOption(options, 'localeMatcher', 'string', ['lookup', 'best fit'], 'best fit');\n opt.localeMatcher = matcher;\n var calendar = ecma402_abstract_1.GetOption(options, 'calendar', 'string', undefined, undefined);\n if (calendar !== undefined && !TYPE_REGEX.test(calendar)) {\n throw new RangeError('Malformed calendar');\n }\n var internalSlots = getInternalSlots(dtf);\n opt.ca = calendar;\n var numberingSystem = ecma402_abstract_1.GetOption(options, 'numberingSystem', 'string', undefined, undefined);\n if (numberingSystem !== undefined && !TYPE_REGEX.test(numberingSystem)) {\n throw new RangeError('Malformed numbering system');\n }\n opt.nu = numberingSystem;\n var hour12 = ecma402_abstract_1.GetOption(options, 'hour12', 'boolean', undefined, undefined);\n var hourCycle = ecma402_abstract_1.GetOption(options, 'hourCycle', 'string', ['h11', 'h12', 'h23', 'h24'], undefined);\n if (hour12 !== undefined) {\n // @ts-ignore\n hourCycle = null;\n }\n opt.hc = hourCycle;\n var r = intl_localematcher_1.ResolveLocale(availableLocales, requestedLocales, opt, relevantExtensionKeys, localeData, getDefaultLocale);\n internalSlots.locale = r.locale;\n calendar = r.ca;\n internalSlots.calendar = calendar;\n internalSlots.hourCycle = r.hc;\n internalSlots.numberingSystem = r.nu;\n var dataLocale = r.dataLocale;\n internalSlots.dataLocale = dataLocale;\n var timeZone = options.timeZone;\n if (timeZone !== undefined) {\n timeZone = String(timeZone);\n if (!ecma402_abstract_1.IsValidTimeZoneName(timeZone, { tzData: tzData, uppercaseLinks: uppercaseLinks })) {\n throw new RangeError('Invalid timeZoneName');\n }\n timeZone = ecma402_abstract_1.CanonicalizeTimeZoneName(timeZone, { tzData: tzData, uppercaseLinks: uppercaseLinks });\n }\n else {\n timeZone = getDefaultTimeZone();\n }\n internalSlots.timeZone = timeZone;\n opt = Object.create(null);\n opt.weekday = ecma402_abstract_1.GetOption(options, 'weekday', 'string', ['narrow', 'short', 'long'], undefined);\n opt.era = ecma402_abstract_1.GetOption(options, 'era', 'string', ['narrow', 'short', 'long'], undefined);\n opt.year = ecma402_abstract_1.GetOption(options, 'year', 'string', ['2-digit', 'numeric'], undefined);\n opt.month = ecma402_abstract_1.GetOption(options, 'month', 'string', ['2-digit', 'numeric', 'narrow', 'short', 'long'], undefined);\n opt.day = ecma402_abstract_1.GetOption(options, 'day', 'string', ['2-digit', 'numeric'], undefined);\n opt.hour = ecma402_abstract_1.GetOption(options, 'hour', 'string', ['2-digit', 'numeric'], undefined);\n opt.minute = ecma402_abstract_1.GetOption(options, 'minute', 'string', ['2-digit', 'numeric'], undefined);\n opt.second = ecma402_abstract_1.GetOption(options, 'second', 'string', ['2-digit', 'numeric'], undefined);\n opt.timeZoneName = ecma402_abstract_1.GetOption(options, 'timeZoneName', 'string', ['short', 'long'], undefined);\n opt.fractionalSecondDigits = ecma402_abstract_1.GetNumberOption(options, 'fractionalSecondDigits', 1, 3, \n // @ts-expect-error\n undefined);\n var dataLocaleData = localeData[dataLocale];\n ecma402_abstract_1.invariant(!!dataLocaleData, \"Missing locale data for \" + dataLocale);\n var formats = dataLocaleData.formats[calendar];\n // UNSPECCED: IMPLEMENTATION DETAILS\n if (!formats) {\n throw new RangeError(\"Calendar \\\"\" + calendar + \"\\\" is not supported. Try setting \\\"calendar\\\" to 1 of the following: \" + Object.keys(dataLocaleData.formats).join(', '));\n }\n var formatMatcher = ecma402_abstract_1.GetOption(options, 'formatMatcher', 'string', ['basic', 'best fit'], 'best fit');\n var dateStyle = ecma402_abstract_1.GetOption(options, 'dateStyle', 'string', ['full', 'long', 'medium', 'short'], undefined);\n internalSlots.dateStyle = dateStyle;\n var timeStyle = ecma402_abstract_1.GetOption(options, 'timeStyle', 'string', ['full', 'long', 'medium', 'short'], undefined);\n internalSlots.timeStyle = timeStyle;\n var bestFormat;\n if (dateStyle === undefined && timeStyle === undefined) {\n if (formatMatcher === 'basic') {\n bestFormat = BasicFormatMatcher_1.BasicFormatMatcher(opt, formats);\n }\n else {\n // IMPL DETAILS START\n if (isTimeRelated(opt)) {\n var hc = resolveHourCycle(internalSlots.hourCycle, dataLocaleData.hourCycle, hour12);\n opt.hour12 = hc === 'h11' || hc === 'h12';\n }\n // IMPL DETAILS END\n bestFormat = BestFitFormatMatcher_1.BestFitFormatMatcher(opt, formats);\n }\n }\n else {\n for (var _i = 0, DATE_TIME_PROPS_1 = utils_1.DATE_TIME_PROPS; _i < DATE_TIME_PROPS_1.length; _i++) {\n var prop = DATE_TIME_PROPS_1[_i];\n var p = opt[prop];\n if (p !== undefined) {\n throw new TypeError(\"Intl.DateTimeFormat can't set option \" + prop + \" when \" + (dateStyle ? 'dateStyle' : 'timeStyle') + \" is used\");\n }\n }\n bestFormat = DateTimeStyleFormat_1.DateTimeStyleFormat(dateStyle, timeStyle, dataLocaleData);\n }\n // IMPL DETAIL START\n // For debugging\n internalSlots.format = bestFormat;\n // IMPL DETAIL END\n for (var prop in opt) {\n var p = bestFormat[prop];\n if (p !== undefined) {\n internalSlots[prop] = p;\n }\n }\n var pattern;\n var rangePatterns;\n if (internalSlots.hour !== undefined) {\n var hc = resolveHourCycle(internalSlots.hourCycle, dataLocaleData.hourCycle, hour12);\n internalSlots.hourCycle = hc;\n if (hc === 'h11' || hc === 'h12') {\n pattern = bestFormat.pattern12;\n rangePatterns = bestFormat.rangePatterns12;\n }\n else {\n pattern = bestFormat.pattern;\n rangePatterns = bestFormat.rangePatterns;\n }\n }\n else {\n // @ts-ignore\n internalSlots.hourCycle = undefined;\n pattern = bestFormat.pattern;\n rangePatterns = bestFormat.rangePatterns;\n }\n internalSlots.pattern = pattern;\n internalSlots.rangePatterns = rangePatterns;\n return dtf;\n}\nexports.InitializeDateTimeFormat = InitializeDateTimeFormat;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BasicFormatMatcher = void 0;\nvar tslib_1 = require(\"tslib\");\nvar ecma402_abstract_1 = require(\"@formatjs/ecma402-abstract\");\nvar utils_1 = require(\"./utils\");\n/**\n * https://tc39.es/ecma402/#sec-basicformatmatcher\n * @param options\n * @param formats\n */\nfunction BasicFormatMatcher(options, formats) {\n var bestScore = -Infinity;\n var bestFormat = formats[0];\n ecma402_abstract_1.invariant(Array.isArray(formats), 'formats should be a list of things');\n for (var _i = 0, formats_1 = formats; _i < formats_1.length; _i++) {\n var format = formats_1[_i];\n var score = 0;\n for (var _a = 0, DATE_TIME_PROPS_1 = utils_1.DATE_TIME_PROPS; _a < DATE_TIME_PROPS_1.length; _a++) {\n var prop = DATE_TIME_PROPS_1[_a];\n var optionsProp = options[prop];\n var formatProp = format[prop];\n if (optionsProp === undefined && formatProp !== undefined) {\n score -= utils_1.additionPenalty;\n }\n else if (optionsProp !== undefined && formatProp === undefined) {\n score -= utils_1.removalPenalty;\n }\n else if (optionsProp !== formatProp) {\n var values = void 0;\n if (prop === 'fractionalSecondDigits') {\n values = [1, 2, 3];\n }\n else {\n values = ['2-digit', 'numeric', 'narrow', 'short', 'long'];\n }\n var optionsPropIndex = values.indexOf(optionsProp);\n var formatPropIndex = values.indexOf(formatProp);\n var delta = Math.max(-2, Math.min(formatPropIndex - optionsPropIndex, 2));\n if (delta === 2) {\n score -= utils_1.longMorePenalty;\n }\n else if (delta === 1) {\n score -= utils_1.shortMorePenalty;\n }\n else if (delta === -1) {\n score -= utils_1.shortLessPenalty;\n }\n else if (delta === -2) {\n score -= utils_1.longLessPenalty;\n }\n }\n }\n if (score > bestScore) {\n bestScore = score;\n bestFormat = format;\n }\n }\n return tslib_1.__assign({}, bestFormat);\n}\nexports.BasicFormatMatcher = BasicFormatMatcher;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BestFitFormatMatcher = exports.bestFitFormatMatcherScore = void 0;\nvar tslib_1 = require(\"tslib\");\nvar ecma402_abstract_1 = require(\"@formatjs/ecma402-abstract\");\nvar utils_1 = require(\"./utils\");\nvar skeleton_1 = require(\"./skeleton\");\nfunction isNumericType(t) {\n return t === 'numeric' || t === '2-digit';\n}\n/**\n * Credit: https://github.com/andyearnshaw/Intl.js/blob/0958dc1ad8153f1056653ea22b8208f0df289a4e/src/12.datetimeformat.js#L611\n * with some modifications\n * @param options\n * @param format\n */\nfunction bestFitFormatMatcherScore(options, format) {\n var score = 0;\n if (options.hour12 && !format.hour12) {\n score -= utils_1.removalPenalty;\n }\n else if (!options.hour12 && format.hour12) {\n score -= utils_1.additionPenalty;\n }\n for (var _i = 0, DATE_TIME_PROPS_1 = utils_1.DATE_TIME_PROPS; _i < DATE_TIME_PROPS_1.length; _i++) {\n var prop = DATE_TIME_PROPS_1[_i];\n var optionsProp = options[prop];\n var formatProp = format[prop];\n if (optionsProp === undefined && formatProp !== undefined) {\n score -= utils_1.additionPenalty;\n }\n else if (optionsProp !== undefined && formatProp === undefined) {\n score -= utils_1.removalPenalty;\n }\n else if (optionsProp !== formatProp) {\n // extra penalty for numeric vs non-numeric\n if (isNumericType(optionsProp) !==\n isNumericType(formatProp)) {\n score -= utils_1.differentNumericTypePenalty;\n }\n else {\n var values = ['2-digit', 'numeric', 'narrow', 'short', 'long'];\n var optionsPropIndex = values.indexOf(optionsProp);\n var formatPropIndex = values.indexOf(formatProp);\n var delta = Math.max(-2, Math.min(formatPropIndex - optionsPropIndex, 2));\n if (delta === 2) {\n score -= utils_1.longMorePenalty;\n }\n else if (delta === 1) {\n score -= utils_1.shortMorePenalty;\n }\n else if (delta === -1) {\n score -= utils_1.shortLessPenalty;\n }\n else if (delta === -2) {\n score -= utils_1.longLessPenalty;\n }\n }\n }\n }\n return score;\n}\nexports.bestFitFormatMatcherScore = bestFitFormatMatcherScore;\n/**\n * https://tc39.es/ecma402/#sec-bestfitformatmatcher\n * Just alias to basic for now\n * @param options\n * @param formats\n * @param implDetails Implementation details\n */\nfunction BestFitFormatMatcher(options, formats) {\n var bestScore = -Infinity;\n var bestFormat = formats[0];\n ecma402_abstract_1.invariant(Array.isArray(formats), 'formats should be a list of things');\n for (var _i = 0, formats_1 = formats; _i < formats_1.length; _i++) {\n var format = formats_1[_i];\n var score = bestFitFormatMatcherScore(options, format);\n if (score > bestScore) {\n bestScore = score;\n bestFormat = format;\n }\n }\n var skeletonFormat = tslib_1.__assign({}, bestFormat);\n var patternFormat = { rawPattern: bestFormat.rawPattern };\n skeleton_1.processDateTimePattern(bestFormat.rawPattern, patternFormat);\n // Kinda following https://github.com/unicode-org/icu/blob/dd50e38f459d84e9bf1b0c618be8483d318458ad/icu4j/main/classes/core/src/com/ibm/icu/text/DateTimePatternGenerator.java\n // Method adjustFieldTypes\n for (var prop in skeletonFormat) {\n var skeletonValue = skeletonFormat[prop];\n var patternValue = patternFormat[prop];\n var requestedValue = options[prop];\n // Don't mess with minute/second or we can get in the situation of\n // 7:0:0 which is weird\n if (prop === 'minute' || prop === 'second') {\n continue;\n }\n // Nothing to do here\n if (!requestedValue) {\n continue;\n }\n // https://unicode.org/reports/tr35/tr35-dates.html#Matching_Skeletons\n // Looks like we should not convert numeric to alphabetic but the other way\n // around is ok\n if (isNumericType(patternValue) &&\n !isNumericType(requestedValue)) {\n continue;\n }\n if (skeletonValue === requestedValue) {\n continue;\n }\n patternFormat[prop] = requestedValue;\n }\n // Copy those over\n patternFormat.pattern = skeletonFormat.pattern;\n patternFormat.pattern12 = skeletonFormat.pattern12;\n patternFormat.skeleton = skeletonFormat.skeleton;\n patternFormat.rangePatterns = skeletonFormat.rangePatterns;\n patternFormat.rangePatterns12 = skeletonFormat.rangePatterns12;\n return patternFormat;\n}\nexports.BestFitFormatMatcher = BestFitFormatMatcher;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DateTimeStyleFormat = void 0;\nvar ecma402_abstract_1 = require(\"@formatjs/ecma402-abstract\");\nfunction DateTimeStyleFormat(dateStyle, timeStyle, dataLocaleData) {\n var dateFormat, timeFormat;\n if (timeStyle !== undefined) {\n ecma402_abstract_1.invariant(timeStyle === 'full' ||\n timeStyle === 'long' ||\n timeStyle === 'medium' ||\n timeStyle === 'short', 'invalid timeStyle');\n timeFormat = dataLocaleData.timeFormat[timeStyle];\n }\n if (dateStyle !== undefined) {\n ecma402_abstract_1.invariant(dateStyle === 'full' ||\n dateStyle === 'long' ||\n dateStyle === 'medium' ||\n dateStyle === 'short', 'invalid dateStyle');\n dateFormat = dataLocaleData.dateFormat[dateStyle];\n }\n if (dateStyle !== undefined && timeStyle !== undefined) {\n var format = {};\n for (var field in dateFormat) {\n if (field !== 'pattern') {\n // @ts-ignore\n format[field] = dateFormat[field];\n }\n }\n for (var field in timeFormat) {\n if (field !== 'pattern' && field !== 'pattern12') {\n // @ts-ignore\n format[field] = timeFormat[field];\n }\n }\n var connector = dataLocaleData.dateTimeFormat[dateStyle];\n var pattern = connector\n .replace('{0}', timeFormat.pattern)\n .replace('{1}', dateFormat.pattern);\n format.pattern = pattern;\n if ('pattern12' in timeFormat) {\n var pattern12 = connector\n .replace('{0}', timeFormat.pattern12)\n .replace('{1}', dateFormat.pattern);\n format.pattern12 = pattern12;\n }\n return format;\n }\n if (timeStyle !== undefined) {\n return timeFormat;\n }\n ecma402_abstract_1.invariant(dateStyle !== undefined, 'dateStyle should not be undefined');\n return dateFormat;\n}\nexports.DateTimeStyleFormat = DateTimeStyleFormat;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FormatDateTimeToParts = void 0;\nvar PartitionDateTimePattern_1 = require(\"./PartitionDateTimePattern\");\nvar ecma402_abstract_1 = require(\"@formatjs/ecma402-abstract\");\n/**\n * https://tc39.es/ecma402/#sec-formatdatetimetoparts\n *\n * @param dtf\n * @param x\n * @param implDetails\n */\nfunction FormatDateTimeToParts(dtf, x, implDetails) {\n var parts = PartitionDateTimePattern_1.PartitionDateTimePattern(dtf, x, implDetails);\n var result = ecma402_abstract_1.ArrayCreate(0);\n for (var _i = 0, parts_1 = parts; _i < parts_1.length; _i++) {\n var part = parts_1[_i];\n result.push({\n type: part.type,\n value: part.value,\n });\n }\n return result;\n}\nexports.FormatDateTimeToParts = FormatDateTimeToParts;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FormatDateTimeRangeToParts = void 0;\nvar PartitionDateTimeRangePattern_1 = require(\"./PartitionDateTimeRangePattern\");\nfunction FormatDateTimeRangeToParts(dtf, x, y, implDetails) {\n var parts = PartitionDateTimeRangePattern_1.PartitionDateTimeRangePattern(dtf, x, y, implDetails);\n var result = new Array(0);\n for (var _i = 0, parts_1 = parts; _i < parts_1.length; _i++) {\n var part = parts_1[_i];\n result.push({\n type: part.type,\n value: part.value,\n source: part.source,\n });\n }\n return result;\n}\nexports.FormatDateTimeRangeToParts = FormatDateTimeRangeToParts;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FormatDateTimeRange = void 0;\nvar PartitionDateTimeRangePattern_1 = require(\"./PartitionDateTimeRangePattern\");\nfunction FormatDateTimeRange(dtf, x, y, implDetails) {\n var parts = PartitionDateTimeRangePattern_1.PartitionDateTimeRangePattern(dtf, x, y, implDetails);\n var result = '';\n for (var _i = 0, parts_1 = parts; _i < parts_1.length; _i++) {\n var part = parts_1[_i];\n result += part.value;\n }\n return result;\n}\nexports.FormatDateTimeRange = FormatDateTimeRange;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.shouldPolyfill = void 0;\nfunction supportsDateStyle() {\n try {\n return !!new Intl.DateTimeFormat(undefined, {\n dateStyle: 'short',\n }).resolvedOptions().dateStyle;\n }\n catch (e) {\n return false;\n }\n}\n/**\n * https://bugs.chromium.org/p/chromium/issues/detail?id=865351\n */\nfunction hasChromeLt71Bug() {\n try {\n return (new Intl.DateTimeFormat('en', {\n hourCycle: 'h11',\n hour: 'numeric',\n }).formatToParts(0)[2].type !== 'dayPeriod');\n }\n catch (e) {\n return false;\n }\n}\n/**\n * Node 14's version of Intl.DateTimeFormat does not throw\n * when dateStyle/timeStyle is used with other options.\n * This was fixed in newer V8 versions\n */\nfunction hasUnthrownDateTimeStyleBug() {\n try {\n return !!new Intl.DateTimeFormat('en', {\n dateStyle: 'short',\n hour: 'numeric',\n }).format(new Date(0));\n }\n catch (e) {\n return false;\n }\n}\nfunction supportedLocalesOf(locale) {\n if (!locale) {\n return true;\n }\n var locales = Array.isArray(locale) ? locale : [locale];\n return (Intl.DateTimeFormat.supportedLocalesOf(locales).length === locales.length);\n}\nfunction shouldPolyfill(locale) {\n return (!('DateTimeFormat' in Intl) ||\n !('formatToParts' in Intl.DateTimeFormat.prototype) ||\n !('formatRange' in Intl.DateTimeFormat.prototype) ||\n hasChromeLt71Bug() ||\n hasUnthrownDateTimeStyleBug() ||\n !supportsDateStyle() ||\n !supportedLocalesOf(locale));\n}\nexports.shouldPolyfill = shouldPolyfill;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.toLocaleTimeString = exports.toLocaleDateString = exports.toLocaleString = void 0;\n// eslint-disable-next-line import/no-cycle\nvar core_1 = require(\"./core\");\nvar ToDateTimeOptions_1 = require(\"./abstract/ToDateTimeOptions\");\n/**\n * Number.prototype.toLocaleString ponyfill\n * https://tc39.es/ecma402/#sup-number.prototype.tolocalestring\n */\nfunction toLocaleString(x, locales, options) {\n var dtf = new core_1.DateTimeFormat(locales, options);\n return dtf.format(x);\n}\nexports.toLocaleString = toLocaleString;\nfunction toLocaleDateString(x, locales, options) {\n var dtf = new core_1.DateTimeFormat(locales, ToDateTimeOptions_1.ToDateTimeOptions(options, 'date', 'date'));\n return dtf.format(x);\n}\nexports.toLocaleDateString = toLocaleDateString;\nfunction toLocaleTimeString(x, locales, options) {\n var dtf = new core_1.DateTimeFormat(locales, ToDateTimeOptions_1.ToDateTimeOptions(options, 'time', 'time'));\n return dtf.format(x);\n}\nexports.toLocaleTimeString = toLocaleTimeString;\n","/* @generated */\t\n\n // prettier-ignore\n if (Intl.DateTimeFormat && typeof Intl.DateTimeFormat.__addLocaleData === 'function') {\n Intl.DateTimeFormat.__addLocaleData({\"data\":{\"am\":\"AM\",\"pm\":\"PM\",\"weekday\":{\"narrow\":[\"S\",\"M\",\"T\",\"W\",\"T\",\"F\",\"S\"],\"short\":[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],\"long\":[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"]},\"era\":{\"narrow\":{\"BC\":\"B\",\"AD\":\"A\"},\"short\":{\"BC\":\"BC\",\"AD\":\"AD\"},\"long\":{\"BC\":\"Before Christ\",\"AD\":\"Anno Domini\"}},\"month\":{\"narrow\":[\"J\",\"F\",\"M\",\"A\",\"M\",\"J\",\"J\",\"A\",\"S\",\"O\",\"N\",\"D\"],\"short\":[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],\"long\":[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"]},\"timeZoneName\":{\"America/Rio_Branco\":{\"long\":[\"Acre Standard Time\",\"Acre Summer Time\"]},\"Asia/Kabul\":{\"long\":[\"Afghanistan Time\",\"Afghanistan Time\"]},\"Africa/Maputo\":{\"long\":[\"Central Africa Time\",\"Central Africa Time\"]},\"Africa/Bujumbura\":{\"long\":[\"Central Africa Time\",\"Central Africa Time\"]},\"Africa/Gaborone\":{\"long\":[\"Central Africa Time\",\"Central Africa Time\"]},\"Africa/Lubumbashi\":{\"long\":[\"Central Africa Time\",\"Central Africa Time\"]},\"Africa/Blantyre\":{\"long\":[\"Central Africa Time\",\"Central Africa Time\"]},\"Africa/Kigali\":{\"long\":[\"Central Africa Time\",\"Central Africa Time\"]},\"Africa/Lusaka\":{\"long\":[\"Central Africa Time\",\"Central Africa Time\"]},\"Africa/Harare\":{\"long\":[\"Central Africa Time\",\"Central Africa Time\"]},\"Africa/Nairobi\":{\"long\":[\"East Africa Time\",\"East Africa Time\"]},\"Africa/Djibouti\":{\"long\":[\"East Africa Time\",\"East Africa Time\"]},\"Africa/Asmera\":{\"long\":[\"East Africa Time\",\"East Africa Time\"]},\"Africa/Addis_Ababa\":{\"long\":[\"East Africa Time\",\"East Africa Time\"]},\"Indian/Comoro\":{\"long\":[\"East Africa Time\",\"East Africa Time\"]},\"Indian/Antananarivo\":{\"long\":[\"East Africa Time\",\"East Africa Time\"]},\"Africa/Mogadishu\":{\"long\":[\"East Africa Time\",\"East Africa Time\"]},\"Africa/Dar_es_Salaam\":{\"long\":[\"East Africa Time\",\"East Africa Time\"]},\"Africa/Kampala\":{\"long\":[\"East Africa Time\",\"East Africa Time\"]},\"Indian/Mayotte\":{\"long\":[\"East Africa Time\",\"East Africa Time\"]},\"Africa/Johannesburg\":{\"long\":[\"South Africa Standard Time\",\"South Africa Standard Time\"]},\"Africa/Maseru\":{\"long\":[\"South Africa Standard Time\",\"South Africa Standard Time\"]},\"Africa/Mbabane\":{\"long\":[\"South Africa Standard Time\",\"South Africa Standard Time\"]},\"Africa/Lagos\":{\"long\":[\"West Africa Standard Time\",\"West Africa Summer Time\"]},\"Africa/Luanda\":{\"long\":[\"West Africa Standard Time\",\"West Africa Summer Time\"]},\"Africa/Porto-Novo\":{\"long\":[\"West Africa Standard Time\",\"West Africa Summer Time\"]},\"Africa/Kinshasa\":{\"long\":[\"West Africa Standard Time\",\"West Africa Summer Time\"]},\"Africa/Bangui\":{\"long\":[\"West Africa Standard Time\",\"West Africa Summer Time\"]},\"Africa/Brazzaville\":{\"long\":[\"West Africa Standard Time\",\"West Africa Summer Time\"]},\"Africa/Douala\":{\"long\":[\"West Africa Standard Time\",\"West Africa Summer Time\"]},\"Africa/Libreville\":{\"long\":[\"West Africa Standard Time\",\"West Africa Summer Time\"]},\"Africa/Malabo\":{\"long\":[\"West Africa Standard Time\",\"West Africa Summer Time\"]},\"Africa/Niamey\":{\"long\":[\"West Africa Standard Time\",\"West Africa Summer Time\"]},\"Africa/Ndjamena\":{\"long\":[\"West Africa Standard Time\",\"West Africa Summer Time\"]},\"Asia/Aqtobe\":{\"long\":[\"West Kazakhstan Time\",\"West Kazakhstan Time\"]},\"America/Juneau\":{\"long\":[\"Alaska Standard Time\",\"Alaska Daylight Time\"],\"short\":[\"AKST\",\"AKDT\"]},\"Asia/Almaty\":{\"long\":[\"East Kazakhstan Time\",\"East Kazakhstan Time\"]},\"America/Manaus\":{\"long\":[\"Amazon Standard Time\",\"Amazon Summer Time\"]},\"America/Chicago\":{\"long\":[\"Central Standard Time\",\"Central Daylight Time\"],\"short\":[\"CST\",\"CDT\"]},\"America/Belize\":{\"long\":[\"Central Standard Time\",\"Central Daylight Time\"],\"short\":[\"CST\",\"CDT\"]},\"America/Winnipeg\":{\"long\":[\"Central Standard Time\",\"Central Daylight Time\"],\"short\":[\"CST\",\"CDT\"]},\"America/Costa_Rica\":{\"long\":[\"Central Standard Time\",\"Central Daylight Time\"],\"short\":[\"CST\",\"CDT\"]},\"America/Guatemala\":{\"long\":[\"Central Standard Time\",\"Central Daylight Time\"],\"short\":[\"CST\",\"CDT\"]},\"America/Tegucigalpa\":{\"long\":[\"Central Standard Time\",\"Central Daylight Time\"],\"short\":[\"CST\",\"CDT\"]},\"America/Mexico_City\":{\"long\":[\"Central Standard Time\",\"Central Daylight Time\"],\"short\":[\"CST\",\"CDT\"]},\"America/El_Salvador\":{\"long\":[\"Central Standard Time\",\"Central Daylight Time\"],\"short\":[\"CST\",\"CDT\"]},\"America/New_York\":{\"long\":[\"Eastern Standard Time\",\"Eastern Daylight Time\"],\"short\":[\"EST\",\"EDT\"]},\"America/Nassau\":{\"long\":[\"Eastern Standard Time\",\"Eastern Daylight Time\"],\"short\":[\"EST\",\"EDT\"]},\"America/Toronto\":{\"long\":[\"Eastern Standard Time\",\"Eastern Daylight Time\"],\"short\":[\"EST\",\"EDT\"]},\"America/Port-au-Prince\":{\"long\":[\"Eastern Standard Time\",\"Eastern Daylight Time\"],\"short\":[\"EST\",\"EDT\"]},\"America/Jamaica\":{\"long\":[\"Eastern Standard Time\",\"Eastern Daylight Time\"],\"short\":[\"EST\",\"EDT\"]},\"America/Cayman\":{\"long\":[\"Eastern Standard Time\",\"Eastern Daylight Time\"],\"short\":[\"EST\",\"EDT\"]},\"America/Panama\":{\"long\":[\"Eastern Standard Time\",\"Eastern Daylight Time\"],\"short\":[\"EST\",\"EDT\"]},\"America/Denver\":{\"long\":[\"Mountain Standard Time\",\"Mountain Daylight Time\"],\"short\":[\"MST\",\"MDT\"]},\"America/Edmonton\":{\"long\":[\"Mountain Standard Time\",\"Mountain Daylight Time\"],\"short\":[\"MST\",\"MDT\"]},\"America/Hermosillo\":{\"long\":[\"Mountain Standard Time\",\"Mountain Daylight Time\"],\"short\":[\"MST\",\"MDT\"]},\"America/Los_Angeles\":{\"long\":[\"Pacific Standard Time\",\"Pacific Daylight Time\"],\"short\":[\"PST\",\"PDT\"]},\"America/Vancouver\":{\"long\":[\"Pacific Standard Time\",\"Pacific Daylight Time\"],\"short\":[\"PST\",\"PDT\"]},\"America/Tijuana\":{\"long\":[\"Pacific Standard Time\",\"Pacific Daylight Time\"],\"short\":[\"PST\",\"PDT\"]},\"Asia/Anadyr\":{\"long\":[\"Anadyr Standard Time\",\"Anadyr Summer Time\"]},\"Pacific/Apia\":{\"long\":[\"Apia Standard Time\",\"Apia Daylight Time\"]},\"Asia/Riyadh\":{\"long\":[\"Arabian Standard Time\",\"Arabian Daylight Time\"]},\"Asia/Bahrain\":{\"long\":[\"Arabian Standard Time\",\"Arabian Daylight Time\"]},\"Asia/Baghdad\":{\"long\":[\"Arabian Standard Time\",\"Arabian Daylight Time\"]},\"Asia/Kuwait\":{\"long\":[\"Arabian Standard Time\",\"Arabian Daylight Time\"]},\"Asia/Qatar\":{\"long\":[\"Arabian Standard Time\",\"Arabian Daylight Time\"]},\"Asia/Aden\":{\"long\":[\"Arabian Standard Time\",\"Arabian Daylight Time\"]},\"America/Buenos_Aires\":{\"long\":[\"Argentina Standard Time\",\"Argentina Summer Time\"]},\"America/Argentina/San_Luis\":{\"long\":[\"Western Argentina Standard Time\",\"Western Argentina Summer Time\"]},\"Asia/Ashgabat\":{\"long\":[\"Turkmenistan Standard Time\",\"Turkmenistan Summer Time\"]},\"America/Halifax\":{\"long\":[\"Atlantic Standard Time\",\"Atlantic Daylight Time\"],\"short\":[\"AST\",\"ADT\"]},\"America/Antigua\":{\"long\":[\"Atlantic Standard Time\",\"Atlantic Daylight Time\"],\"short\":[\"AST\",\"ADT\"]},\"America/Anguilla\":{\"long\":[\"Atlantic Standard Time\",\"Atlantic Daylight Time\"],\"short\":[\"AST\",\"ADT\"]},\"America/Aruba\":{\"long\":[\"Atlantic Standard Time\",\"Atlantic Daylight Time\"],\"short\":[\"AST\",\"ADT\"]},\"America/Barbados\":{\"long\":[\"Atlantic Standard Time\",\"Atlantic Daylight Time\"],\"short\":[\"AST\",\"ADT\"]},\"Atlantic/Bermuda\":{\"long\":[\"Atlantic Standard Time\",\"Atlantic Daylight Time\"],\"short\":[\"AST\",\"ADT\"]},\"America/Kralendijk\":{\"long\":[\"Atlantic Standard Time\",\"Atlantic Daylight Time\"],\"short\":[\"AST\",\"ADT\"]},\"America/Curacao\":{\"long\":[\"Atlantic Standard Time\",\"Atlantic Daylight Time\"],\"short\":[\"AST\",\"ADT\"]},\"America/Dominica\":{\"long\":[\"Atlantic Standard Time\",\"Atlantic Daylight Time\"],\"short\":[\"AST\",\"ADT\"]},\"America/Grenada\":{\"long\":[\"Atlantic Standard Time\",\"Atlantic Daylight Time\"],\"short\":[\"AST\",\"ADT\"]},\"America/Thule\":{\"long\":[\"Atlantic Standard Time\",\"Atlantic Daylight Time\"],\"short\":[\"AST\",\"ADT\"]},\"America/Guadeloupe\":{\"long\":[\"Atlantic Standard Time\",\"Atlantic Daylight Time\"],\"short\":[\"AST\",\"ADT\"]},\"America/St_Kitts\":{\"long\":[\"Atlantic Standard Time\",\"Atlantic Daylight Time\"],\"short\":[\"AST\",\"ADT\"]},\"America/St_Lucia\":{\"long\":[\"Atlantic Standard Time\",\"Atlantic Daylight Time\"],\"short\":[\"AST\",\"ADT\"]},\"America/Marigot\":{\"long\":[\"Atlantic Standard Time\",\"Atlantic Daylight Time\"],\"short\":[\"AST\",\"ADT\"]},\"America/Martinique\":{\"long\":[\"Atlantic Standard Time\",\"Atlantic Daylight Time\"],\"short\":[\"AST\",\"ADT\"]},\"America/Montserrat\":{\"long\":[\"Atlantic Standard Time\",\"Atlantic Daylight Time\"],\"short\":[\"AST\",\"ADT\"]},\"America/Puerto_Rico\":{\"long\":[\"Atlantic Standard Time\",\"Atlantic Daylight Time\"],\"short\":[\"AST\",\"ADT\"]},\"America/Lower_Princes\":{\"long\":[\"Atlantic Standard Time\",\"Atlantic Daylight Time\"],\"short\":[\"AST\",\"ADT\"]},\"America/Port_of_Spain\":{\"long\":[\"Atlantic Standard Time\",\"Atlantic Daylight Time\"],\"short\":[\"AST\",\"ADT\"]},\"America/St_Vincent\":{\"long\":[\"Atlantic Standard Time\",\"Atlantic Daylight Time\"],\"short\":[\"AST\",\"ADT\"]},\"America/Tortola\":{\"long\":[\"Atlantic Standard Time\",\"Atlantic Daylight Time\"],\"short\":[\"AST\",\"ADT\"]},\"America/St_Thomas\":{\"long\":[\"Atlantic Standard Time\",\"Atlantic Daylight Time\"],\"short\":[\"AST\",\"ADT\"]},\"Australia/Adelaide\":{\"long\":[\"Australian Central Standard Time\",\"Australian Central Daylight Time\"]},\"Australia/Eucla\":{\"long\":[\"Australian Central Western Standard Time\",\"Australian Central Western Daylight Time\"]},\"Australia/Sydney\":{\"long\":[\"Australian Eastern Standard Time\",\"Australian Eastern Daylight Time\"]},\"Australia/Perth\":{\"long\":[\"Australian Western Standard Time\",\"Australian Western Daylight Time\"]},\"Atlantic/Azores\":{\"long\":[\"Azores Standard Time\",\"Azores Summer Time\"]},\"Asia/Thimphu\":{\"long\":[\"Bhutan Time\",\"Bhutan Time\"]},\"America/La_Paz\":{\"long\":[\"Bolivia Time\",\"Bolivia Time\"]},\"Asia/Kuching\":{\"long\":[\"Malaysia Time\",\"Malaysia Time\"]},\"America/Sao_Paulo\":{\"long\":[\"Brasilia Standard Time\",\"Brasilia Summer Time\"]},\"Europe/London\":{\"long\":[\"Greenwich Mean Time\",\"Greenwich Mean Time\"],\"short\":[\"GMT\",\"GMT\"]},\"Asia/Brunei\":{\"long\":[\"Brunei Darussalam Time\",\"Brunei Darussalam Time\"]},\"Atlantic/Cape_Verde\":{\"long\":[\"Cape Verde Standard Time\",\"Cape Verde Summer Time\"]},\"Antarctica/Casey\":{\"long\":[\"Casey Time\",\"Casey Time\"]},\"Pacific/Saipan\":{\"long\":[\"North Mariana Islands Time\",\"North Mariana Islands Time\"]},\"Pacific/Guam\":{\"long\":[\"Guam Standard Time\",\"Guam Standard Time\"]},\"Pacific/Chatham\":{\"long\":[\"Chatham Standard Time\",\"Chatham Daylight Time\"]},\"America/Santiago\":{\"long\":[\"Chile Standard Time\",\"Chile Summer Time\"]},\"Asia/Shanghai\":{\"long\":[\"China Standard Time\",\"China Daylight Time\"]},\"Asia/Choibalsan\":{\"long\":[\"Choibalsan Standard Time\",\"Choibalsan Summer Time\"]},\"Indian/Christmas\":{\"long\":[\"Christmas Island Time\",\"Christmas Island Time\"]},\"Indian/Cocos\":{\"long\":[\"Cocos Islands Time\",\"Cocos Islands Time\"]},\"America/Bogota\":{\"long\":[\"Colombia Standard Time\",\"Colombia Summer Time\"]},\"Pacific/Rarotonga\":{\"long\":[\"Cook Islands Standard Time\",\"Cook Islands Half Summer Time\"]},\"America/Havana\":{\"long\":[\"Cuba Standard Time\",\"Cuba Daylight Time\"]},\"Antarctica/Davis\":{\"long\":[\"Davis Time\",\"Davis Time\"]},\"Antarctica/DumontDUrville\":{\"long\":[\"Dumont-d’Urville Time\",\"Dumont-d’Urville Time\"]},\"Asia/Dushanbe\":{\"long\":[\"Tajikistan Time\",\"Tajikistan Time\"]},\"America/Paramaribo\":{\"long\":[\"Suriname Time\",\"Suriname Time\"]},\"Asia/Dili\":{\"long\":[\"East Timor Time\",\"East Timor Time\"]},\"Pacific/Easter\":{\"long\":[\"Easter Island Standard Time\",\"Easter Island Summer Time\"]},\"America/Guayaquil\":{\"long\":[\"Ecuador Time\",\"Ecuador Time\"]},\"Europe/Paris\":{\"long\":[\"Central European Standard Time\",\"Central European Summer Time\"]},\"Europe/Andorra\":{\"long\":[\"Central European Standard Time\",\"Central European Summer Time\"]},\"Europe/Tirane\":{\"long\":[\"Central European Standard Time\",\"Central European Summer Time\"]},\"Europe/Vienna\":{\"long\":[\"Central European Standard Time\",\"Central European Summer Time\"]},\"Europe/Sarajevo\":{\"long\":[\"Central European Standard Time\",\"Central European Summer Time\"]},\"Europe/Brussels\":{\"long\":[\"Central European Standard Time\",\"Central European Summer Time\"]},\"Europe/Zurich\":{\"long\":[\"Central European Standard Time\",\"Central European Summer Time\"]},\"Europe/Prague\":{\"long\":[\"Central European Standard Time\",\"Central European Summer Time\"]},\"Europe/Berlin\":{\"long\":[\"Central European Standard Time\",\"Central European Summer Time\"]},\"Europe/Copenhagen\":{\"long\":[\"Central European Standard Time\",\"Central European Summer Time\"]},\"Europe/Madrid\":{\"long\":[\"Central European Standard Time\",\"Central European Summer Time\"]},\"Europe/Gibraltar\":{\"long\":[\"Central European Standard Time\",\"Central European Summer Time\"]},\"Europe/Zagreb\":{\"long\":[\"Central European Standard Time\",\"Central European Summer Time\"]},\"Europe/Budapest\":{\"long\":[\"Central European Standard Time\",\"Central European Summer Time\"]},\"Europe/Rome\":{\"long\":[\"Central European Standard Time\",\"Central European Summer Time\"]},\"Europe/Vaduz\":{\"long\":[\"Central European Standard Time\",\"Central European Summer Time\"]},\"Europe/Luxembourg\":{\"long\":[\"Central European Standard Time\",\"Central European Summer Time\"]},\"Europe/Monaco\":{\"long\":[\"Central European Standard Time\",\"Central European Summer Time\"]},\"Europe/Podgorica\":{\"long\":[\"Central European Standard Time\",\"Central European Summer Time\"]},\"Europe/Skopje\":{\"long\":[\"Central European Standard Time\",\"Central European Summer Time\"]},\"Europe/Malta\":{\"long\":[\"Central European Standard Time\",\"Central European Summer Time\"]},\"Europe/Amsterdam\":{\"long\":[\"Central European Standard Time\",\"Central European Summer Time\"]},\"Europe/Oslo\":{\"long\":[\"Central European Standard Time\",\"Central European Summer Time\"]},\"Europe/Warsaw\":{\"long\":[\"Central European Standard Time\",\"Central European Summer Time\"]},\"Europe/Belgrade\":{\"long\":[\"Central European Standard Time\",\"Central European Summer Time\"]},\"Europe/Stockholm\":{\"long\":[\"Central European Standard Time\",\"Central European Summer Time\"]},\"Europe/Ljubljana\":{\"long\":[\"Central European Standard Time\",\"Central European Summer Time\"]},\"Arctic/Longyearbyen\":{\"long\":[\"Central European Standard Time\",\"Central European Summer Time\"]},\"Europe/Bratislava\":{\"long\":[\"Central European Standard Time\",\"Central European Summer Time\"]},\"Europe/San_Marino\":{\"long\":[\"Central European Standard Time\",\"Central European Summer Time\"]},\"Africa/Tunis\":{\"long\":[\"Central European Standard Time\",\"Central European Summer Time\"]},\"Europe/Vatican\":{\"long\":[\"Central European Standard Time\",\"Central European Summer Time\"]},\"Europe/Bucharest\":{\"long\":[\"Eastern European Standard Time\",\"Eastern European Summer Time\"]},\"Europe/Mariehamn\":{\"long\":[\"Eastern European Standard Time\",\"Eastern European Summer Time\"]},\"Europe/Sofia\":{\"long\":[\"Eastern European Standard Time\",\"Eastern European Summer Time\"]},\"Asia/Nicosia\":{\"long\":[\"Eastern European Standard Time\",\"Eastern European Summer Time\"]},\"Africa/Cairo\":{\"long\":[\"Eastern European Standard Time\",\"Eastern European Summer Time\"]},\"Europe/Helsinki\":{\"long\":[\"Eastern European Standard Time\",\"Eastern European Summer Time\"]},\"Europe/Athens\":{\"long\":[\"Eastern European Standard Time\",\"Eastern European Summer Time\"]},\"Asia/Amman\":{\"long\":[\"Eastern European Standard Time\",\"Eastern European Summer Time\"]},\"Asia/Beirut\":{\"long\":[\"Eastern European Standard Time\",\"Eastern European Summer Time\"]},\"Asia/Damascus\":{\"long\":[\"Eastern European Standard Time\",\"Eastern European Summer Time\"]},\"Europe/Minsk\":{\"long\":[\"Further-eastern European Time\",\"Further-eastern European Time\"]},\"Europe/Kaliningrad\":{\"long\":[\"Further-eastern European Time\",\"Further-eastern European Time\"]},\"Atlantic/Canary\":{\"long\":[\"Western European Standard Time\",\"Western European Summer Time\"]},\"Atlantic/Faeroe\":{\"long\":[\"Western European Standard Time\",\"Western European Summer Time\"]},\"Atlantic/Stanley\":{\"long\":[\"Falkland Islands Standard Time\",\"Falkland Islands Summer Time\"]},\"Pacific/Fiji\":{\"long\":[\"Fiji Standard Time\",\"Fiji Summer Time\"]},\"America/Cayenne\":{\"long\":[\"French Guiana Time\",\"French Guiana Time\"]},\"Indian/Kerguelen\":{\"long\":[\"French Southern & Antarctic Time\",\"French Southern & Antarctic Time\"]},\"Asia/Bishkek\":{\"long\":[\"Kyrgyzstan Time\",\"Kyrgyzstan Time\"]},\"Pacific/Galapagos\":{\"long\":[\"Galapagos Time\",\"Galapagos Time\"]},\"Pacific/Gambier\":{\"long\":[\"Gambier Time\",\"Gambier Time\"]},\"Pacific/Tarawa\":{\"long\":[\"Gilbert Islands Time\",\"Gilbert Islands Time\"]},\"Atlantic/Reykjavik\":{\"long\":[\"Greenwich Mean Time\",\"Greenwich Mean Time\"],\"short\":[\"GMT\",\"GMT\"]},\"Africa/Ouagadougou\":{\"long\":[\"Greenwich Mean Time\",\"Greenwich Mean Time\"],\"short\":[\"GMT\",\"GMT\"]},\"Africa/Abidjan\":{\"long\":[\"Greenwich Mean Time\",\"Greenwich Mean Time\"],\"short\":[\"GMT\",\"GMT\"]},\"Africa/Accra\":{\"long\":[\"Greenwich Mean Time\",\"Greenwich Mean Time\"],\"short\":[\"GMT\",\"GMT\"]},\"Africa/Banjul\":{\"long\":[\"Greenwich Mean Time\",\"Greenwich Mean Time\"],\"short\":[\"GMT\",\"GMT\"]},\"Africa/Conakry\":{\"long\":[\"Greenwich Mean Time\",\"Greenwich Mean Time\"],\"short\":[\"GMT\",\"GMT\"]},\"Africa/Bamako\":{\"long\":[\"Greenwich Mean Time\",\"Greenwich Mean Time\"],\"short\":[\"GMT\",\"GMT\"]},\"Africa/Nouakchott\":{\"long\":[\"Greenwich Mean Time\",\"Greenwich Mean Time\"],\"short\":[\"GMT\",\"GMT\"]},\"Atlantic/St_Helena\":{\"long\":[\"Greenwich Mean Time\",\"Greenwich Mean Time\"],\"short\":[\"GMT\",\"GMT\"]},\"Africa/Freetown\":{\"long\":[\"Greenwich Mean Time\",\"Greenwich Mean Time\"],\"short\":[\"GMT\",\"GMT\"]},\"Africa/Dakar\":{\"long\":[\"Greenwich Mean Time\",\"Greenwich Mean Time\"],\"short\":[\"GMT\",\"GMT\"]},\"Africa/Lome\":{\"long\":[\"Greenwich Mean Time\",\"Greenwich Mean Time\"],\"short\":[\"GMT\",\"GMT\"]},\"America/Scoresbysund\":{\"long\":[\"East Greenland Standard Time\",\"East Greenland Summer Time\"]},\"America/Godthab\":{\"long\":[\"West Greenland Standard Time\",\"West Greenland Summer Time\"]},\"Asia/Dubai\":{\"long\":[\"Gulf Standard Time\",\"Gulf Standard Time\"]},\"Asia/Muscat\":{\"long\":[\"Gulf Standard Time\",\"Gulf Standard Time\"]},\"America/Guyana\":{\"long\":[\"Guyana Time\",\"Guyana Time\"]},\"Pacific/Honolulu\":{\"long\":[\"Hawaii-Aleutian Standard Time\",\"Hawaii-Aleutian Daylight Time\"],\"short\":[\"HAST\",\"HADT\"]},\"Asia/Hong_Kong\":{\"long\":[\"Hong Kong Standard Time\",\"Hong Kong Summer Time\"]},\"Asia/Hovd\":{\"long\":[\"Hovd Standard Time\",\"Hovd Summer Time\"]},\"Asia/Calcutta\":{\"long\":[\"India Standard Time\",\"India Standard Time\"]},\"Asia/Colombo\":{\"long\":[\"Lanka Time\",\"Lanka Time\"]},\"Indian/Chagos\":{\"long\":[\"Indian Ocean Time\",\"Indian Ocean Time\"]},\"Asia/Bangkok\":{\"long\":[\"Indochina Time\",\"Indochina Time\"]},\"Asia/Phnom_Penh\":{\"long\":[\"Indochina Time\",\"Indochina Time\"]},\"Asia/Vientiane\":{\"long\":[\"Indochina Time\",\"Indochina Time\"]},\"Asia/Makassar\":{\"long\":[\"Central Indonesia Time\",\"Central Indonesia Time\"]},\"Asia/Jayapura\":{\"long\":[\"Eastern Indonesia Time\",\"Eastern Indonesia Time\"]},\"Asia/Jakarta\":{\"long\":[\"Western Indonesia Time\",\"Western Indonesia Time\"]},\"Asia/Tehran\":{\"long\":[\"Iran Standard Time\",\"Iran Daylight Time\"]},\"Asia/Irkutsk\":{\"long\":[\"Irkutsk Standard Time\",\"Irkutsk Summer Time\"]},\"Asia/Jerusalem\":{\"long\":[\"Israel Standard Time\",\"Israel Daylight Time\"]},\"Asia/Tokyo\":{\"long\":[\"Japan Standard Time\",\"Japan Daylight Time\"]},\"Asia/Kamchatka\":{\"long\":[\"Petropavlovsk-Kamchatski Standard Time\",\"Petropavlovsk-Kamchatski Summer Time\"]},\"Asia/Karachi\":{\"long\":[\"Pakistan Standard Time\",\"Pakistan Summer Time\"]},\"Asia/Qyzylorda\":{\"long\":[\"Qyzylorda Standard Time\",\"Qyzylorda Summer Time\"]},\"Asia/Seoul\":{\"long\":[\"Korean Standard Time\",\"Korean Daylight Time\"]},\"Pacific/Kosrae\":{\"long\":[\"Kosrae Time\",\"Kosrae Time\"]},\"Asia/Krasnoyarsk\":{\"long\":[\"Krasnoyarsk Standard Time\",\"Krasnoyarsk Summer Time\"]},\"Europe/Samara\":{\"long\":[\"Samara Standard Time\",\"Samara Summer Time\"]},\"Pacific/Kiritimati\":{\"long\":[\"Line Islands Time\",\"Line Islands Time\"]},\"Australia/Lord_Howe\":{\"long\":[\"Lord Howe Standard Time\",\"Lord Howe Daylight Time\"]},\"Asia/Macau\":{\"long\":[\"Macao Standard Time\",\"Macao Summer Time\"]},\"Antarctica/Macquarie\":{\"long\":[\"Macquarie Island Time\",\"Macquarie Island Time\"]},\"Asia/Magadan\":{\"long\":[\"Magadan Standard Time\",\"Magadan Summer Time\"]},\"Indian/Maldives\":{\"long\":[\"Maldives Time\",\"Maldives Time\"]},\"Pacific/Marquesas\":{\"long\":[\"Marquesas Time\",\"Marquesas Time\"]},\"Pacific/Majuro\":{\"long\":[\"Marshall Islands Time\",\"Marshall Islands Time\"]},\"Indian/Mauritius\":{\"long\":[\"Mauritius Standard Time\",\"Mauritius Summer Time\"]},\"Antarctica/Mawson\":{\"long\":[\"Mawson Time\",\"Mawson Time\"]},\"America/Santa_Isabel\":{\"long\":[\"Northwest Mexico Standard Time\",\"Northwest Mexico Daylight Time\"]},\"America/Mazatlan\":{\"long\":[\"Mexican Pacific Standard Time\",\"Mexican Pacific Daylight Time\"]},\"Asia/Ulaanbaatar\":{\"long\":[\"Ulaanbaatar Standard Time\",\"Ulaanbaatar Summer Time\"]},\"Europe/Moscow\":{\"long\":[\"Moscow Standard Time\",\"Moscow Summer Time\"]},\"Asia/Rangoon\":{\"long\":[\"Myanmar Time\",\"Myanmar Time\"]},\"Pacific/Nauru\":{\"long\":[\"Nauru Time\",\"Nauru Time\"]},\"Asia/Katmandu\":{\"long\":[\"Nepal Time\",\"Nepal Time\"]},\"Pacific/Noumea\":{\"long\":[\"New Caledonia Standard Time\",\"New Caledonia Summer Time\"]},\"Pacific/Auckland\":{\"long\":[\"New Zealand Standard Time\",\"New Zealand Daylight Time\"]},\"Antarctica/McMurdo\":{\"long\":[\"New Zealand Standard Time\",\"New Zealand Daylight Time\"]},\"America/St_Johns\":{\"long\":[\"Newfoundland Standard Time\",\"Newfoundland Daylight Time\"]},\"Pacific/Niue\":{\"long\":[\"Niue Time\",\"Niue Time\"]},\"Pacific/Norfolk\":{\"long\":[\"Norfolk Island Standard Time\",\"Norfolk Island Daylight Time\"]},\"America/Noronha\":{\"long\":[\"Fernando de Noronha Standard Time\",\"Fernando de Noronha Summer Time\"]},\"Asia/Novosibirsk\":{\"long\":[\"Novosibirsk Standard Time\",\"Novosibirsk Summer Time\"]},\"Asia/Omsk\":{\"long\":[\"Omsk Standard Time\",\"Omsk Summer Time\"]},\"Pacific/Palau\":{\"long\":[\"Palau Time\",\"Palau Time\"]},\"Pacific/Port_Moresby\":{\"long\":[\"Papua New Guinea Time\",\"Papua New Guinea Time\"]},\"America/Asuncion\":{\"long\":[\"Paraguay Standard Time\",\"Paraguay Summer Time\"]},\"America/Lima\":{\"long\":[\"Peru Standard Time\",\"Peru Summer Time\"]},\"Asia/Manila\":{\"long\":[\"Philippine Standard Time\",\"Philippine Summer Time\"]},\"Pacific/Enderbury\":{\"long\":[\"Phoenix Islands Time\",\"Phoenix Islands Time\"]},\"America/Miquelon\":{\"long\":[\"St. Pierre & Miquelon Standard Time\",\"St. Pierre & Miquelon Daylight Time\"]},\"Pacific/Pitcairn\":{\"long\":[\"Pitcairn Time\",\"Pitcairn Time\"]},\"Pacific/Ponape\":{\"long\":[\"Ponape Time\",\"Ponape Time\"]},\"Asia/Pyongyang\":{\"long\":[\"Pyongyang Time\",\"Pyongyang Time\"]},\"Indian/Reunion\":{\"long\":[\"Réunion Time\",\"Réunion Time\"]},\"Antarctica/Rothera\":{\"long\":[\"Rothera Time\",\"Rothera Time\"]},\"Asia/Sakhalin\":{\"long\":[\"Sakhalin Standard Time\",\"Sakhalin Summer Time\"]},\"Pacific/Pago_Pago\":{\"long\":[\"Samoa Standard Time\",\"Samoa Daylight Time\"]},\"Indian/Mahe\":{\"long\":[\"Seychelles Time\",\"Seychelles Time\"]},\"Asia/Singapore\":{\"long\":[\"Singapore Standard Time\",\"Singapore Standard Time\"]},\"Pacific/Guadalcanal\":{\"long\":[\"Solomon Islands Time\",\"Solomon Islands Time\"]},\"Atlantic/South_Georgia\":{\"long\":[\"South Georgia Time\",\"South Georgia Time\"]},\"Asia/Yekaterinburg\":{\"long\":[\"Yekaterinburg Standard Time\",\"Yekaterinburg Summer Time\"]},\"Antarctica/Syowa\":{\"long\":[\"Syowa Time\",\"Syowa Time\"]},\"Pacific/Tahiti\":{\"long\":[\"Tahiti Time\",\"Tahiti Time\"]},\"Asia/Taipei\":{\"long\":[\"Taipei Standard Time\",\"Taipei Daylight Time\"]},\"Asia/Tashkent\":{\"long\":[\"Uzbekistan Standard Time\",\"Uzbekistan Summer Time\"]},\"Pacific/Fakaofo\":{\"long\":[\"Tokelau Time\",\"Tokelau Time\"]},\"Pacific/Tongatapu\":{\"long\":[\"Tonga Standard Time\",\"Tonga Summer Time\"]},\"Pacific/Truk\":{\"long\":[\"Chuuk Time\",\"Chuuk Time\"]},\"Pacific/Funafuti\":{\"long\":[\"Tuvalu Time\",\"Tuvalu Time\"]},\"America/Montevideo\":{\"long\":[\"Uruguay Standard Time\",\"Uruguay Summer Time\"]},\"Pacific/Efate\":{\"long\":[\"Vanuatu Standard Time\",\"Vanuatu Summer Time\"]},\"America/Caracas\":{\"long\":[\"Venezuela Time\",\"Venezuela Time\"]},\"Asia/Vladivostok\":{\"long\":[\"Vladivostok Standard Time\",\"Vladivostok Summer Time\"]},\"Europe/Volgograd\":{\"long\":[\"Volgograd Standard Time\",\"Volgograd Summer Time\"]},\"Antarctica/Vostok\":{\"long\":[\"Vostok Time\",\"Vostok Time\"]},\"Pacific/Wake\":{\"long\":[\"Wake Island Time\",\"Wake Island Time\"]},\"Pacific/Wallis\":{\"long\":[\"Wallis & Futuna Time\",\"Wallis & Futuna Time\"]},\"Asia/Yakutsk\":{\"long\":[\"Yakutsk Standard Time\",\"Yakutsk Summer Time\"]},\"UTC\":{\"long\":[\"Coordinated Universal Time\",\"Coordinated Universal Time\"],\"short\":[\"UTC\",\"UTC\"]}},\"gmtFormat\":\"GMT{0}\",\"hourFormat\":\"+HH:mm;-HH:mm\",\"dateFormat\":{\"full\":\"EEEE, MMMM d, y\",\"long\":\"MMMM d, y\",\"medium\":\"MMM d, y\",\"short\":\"M/d/yy\"},\"timeFormat\":{\"full\":\"h:mm:ss a zzzz\",\"long\":\"h:mm:ss a z\",\"medium\":\"h:mm:ss a\",\"short\":\"h:mm a\"},\"dateTimeFormat\":{\"full\":\"{1} 'at' {0}\",\"long\":\"{1} 'at' {0}\",\"medium\":\"{1}, {0}\",\"short\":\"{1}, {0}\"},\"formats\":{\"gregory\":{\"Bh\":\"h B\",\"Bhm\":\"h:mm B\",\"Bhms\":\"h:mm:ss B\",\"d\":\"d\",\"E\":\"ccc\",\"EBhm\":\"E h:mm B\",\"EBhms\":\"E h:mm:ss B\",\"Ed\":\"d E\",\"Ehm\":\"E h:mm a\",\"EHm\":\"E HH:mm\",\"Ehms\":\"E h:mm:ss a\",\"EHms\":\"E HH:mm:ss\",\"Gy\":\"y G\",\"GyMMM\":\"MMM y G\",\"GyMMMd\":\"MMM d, y G\",\"GyMMMEd\":\"E, MMM d, y G\",\"h\":\"h a\",\"H\":\"HH\",\"hm\":\"h:mm a\",\"Hm\":\"HH:mm\",\"hms\":\"h:mm:ss a\",\"Hms\":\"HH:mm:ss\",\"hmsv\":\"h:mm:ss a v\",\"Hmsv\":\"HH:mm:ss v\",\"hmv\":\"h:mm a v\",\"Hmv\":\"HH:mm v\",\"M\":\"L\",\"Md\":\"M/d\",\"MEd\":\"E, M/d\",\"MMM\":\"LLL\",\"MMMd\":\"MMM d\",\"MMMEd\":\"E, MMM d\",\"MMMMd\":\"MMMM d\",\"ms\":\"mm:ss\",\"y\":\"y\",\"yM\":\"M/y\",\"yMd\":\"M/d/y\",\"yMEd\":\"E, M/d/y\",\"yMMM\":\"MMM y\",\"yMMMd\":\"MMM d, y\",\"yMMMEd\":\"E, MMM d, y\",\"yMMMM\":\"MMMM y\",\"EEEE, MMMM d, y\":\"EEEE, MMMM d, y\",\"MMMM d, y\":\"MMMM d, y\",\"MMM d, y\":\"MMM d, y\",\"M/d/yy\":\"M/d/yy\",\"h:mm:ss a zzzz\":\"h:mm:ss a zzzz\",\"h:mm:ss a z\":\"h:mm:ss a z\",\"h:mm:ss a\":\"h:mm:ss a\",\"h:mm a\":\"h:mm a\",\"EEEE, MMMM d, y 'at' h:mm:ss a zzzz\":\"EEEE, MMMM d, y 'at' h:mm:ss a zzzz\",\"MMMM d, y 'at' h:mm:ss a zzzz\":\"MMMM d, y 'at' h:mm:ss a zzzz\",\"MMM d, y, h:mm:ss a zzzz\":\"MMM d, y, h:mm:ss a zzzz\",\"M/d/yy, h:mm:ss a zzzz\":\"M/d/yy, h:mm:ss a zzzz\",\"d, h:mm:ss a zzzz\":\"d, h:mm:ss a zzzz\",\"E, h:mm:ss a zzzz\":\"ccc, h:mm:ss a zzzz\",\"Ed, h:mm:ss a zzzz\":\"d E, h:mm:ss a zzzz\",\"Gy, h:mm:ss a zzzz\":\"y G, h:mm:ss a zzzz\",\"GyMMM, h:mm:ss a zzzz\":\"MMM y G, h:mm:ss a zzzz\",\"GyMMMd, h:mm:ss a zzzz\":\"MMM d, y G, h:mm:ss a zzzz\",\"GyMMMEd, h:mm:ss a zzzz\":\"E, MMM d, y G, h:mm:ss a zzzz\",\"M, h:mm:ss a zzzz\":\"L, h:mm:ss a zzzz\",\"Md, h:mm:ss a zzzz\":\"M/d, h:mm:ss a zzzz\",\"MEd, h:mm:ss a zzzz\":\"E, M/d, h:mm:ss a zzzz\",\"MMM, h:mm:ss a zzzz\":\"LLL, h:mm:ss a zzzz\",\"MMMd, h:mm:ss a zzzz\":\"MMM d, h:mm:ss a zzzz\",\"MMMEd, h:mm:ss a zzzz\":\"E, MMM d, h:mm:ss a zzzz\",\"MMMMd 'at' h:mm:ss a zzzz\":\"MMMM d 'at' h:mm:ss a zzzz\",\"y, h:mm:ss a zzzz\":\"y, h:mm:ss a zzzz\",\"yM, h:mm:ss a zzzz\":\"M/y, h:mm:ss a zzzz\",\"yMd, h:mm:ss a zzzz\":\"M/d/y, h:mm:ss a zzzz\",\"yMEd, h:mm:ss a zzzz\":\"E, M/d/y, h:mm:ss a zzzz\",\"yMMM, h:mm:ss a zzzz\":\"MMM y, h:mm:ss a zzzz\",\"yMMMd, h:mm:ss a zzzz\":\"MMM d, y, h:mm:ss a zzzz\",\"yMMMEd, h:mm:ss a zzzz\":\"E, MMM d, y, h:mm:ss a zzzz\",\"yMMMM 'at' h:mm:ss a zzzz\":\"MMMM y 'at' h:mm:ss a zzzz\",\"EEEE, MMMM d, y 'at' h:mm:ss a z\":\"EEEE, MMMM d, y 'at' h:mm:ss a z\",\"MMMM d, y 'at' h:mm:ss a z\":\"MMMM d, y 'at' h:mm:ss a z\",\"MMM d, y, h:mm:ss a z\":\"MMM d, y, h:mm:ss a z\",\"M/d/yy, h:mm:ss a z\":\"M/d/yy, h:mm:ss a z\",\"d, h:mm:ss a z\":\"d, h:mm:ss a z\",\"E, h:mm:ss a z\":\"ccc, h:mm:ss a z\",\"Ed, h:mm:ss a z\":\"d E, h:mm:ss a z\",\"Gy, h:mm:ss a z\":\"y G, h:mm:ss a z\",\"GyMMM, h:mm:ss a z\":\"MMM y G, h:mm:ss a z\",\"GyMMMd, h:mm:ss a z\":\"MMM d, y G, h:mm:ss a z\",\"GyMMMEd, h:mm:ss a z\":\"E, MMM d, y G, h:mm:ss a z\",\"M, h:mm:ss a z\":\"L, h:mm:ss a z\",\"Md, h:mm:ss a z\":\"M/d, h:mm:ss a z\",\"MEd, h:mm:ss a z\":\"E, M/d, h:mm:ss a z\",\"MMM, h:mm:ss a z\":\"LLL, h:mm:ss a z\",\"MMMd, h:mm:ss a z\":\"MMM d, h:mm:ss a z\",\"MMMEd, h:mm:ss a z\":\"E, MMM d, h:mm:ss a z\",\"MMMMd 'at' h:mm:ss a z\":\"MMMM d 'at' h:mm:ss a z\",\"y, h:mm:ss a z\":\"y, h:mm:ss a z\",\"yM, h:mm:ss a z\":\"M/y, h:mm:ss a z\",\"yMd, h:mm:ss a z\":\"M/d/y, h:mm:ss a z\",\"yMEd, h:mm:ss a z\":\"E, M/d/y, h:mm:ss a z\",\"yMMM, h:mm:ss a z\":\"MMM y, h:mm:ss a z\",\"yMMMd, h:mm:ss a z\":\"MMM d, y, h:mm:ss a z\",\"yMMMEd, h:mm:ss a z\":\"E, MMM d, y, h:mm:ss a z\",\"yMMMM 'at' h:mm:ss a z\":\"MMMM y 'at' h:mm:ss a z\",\"EEEE, MMMM d, y 'at' h:mm:ss a\":\"EEEE, MMMM d, y 'at' h:mm:ss a\",\"MMMM d, y 'at' h:mm:ss a\":\"MMMM d, y 'at' h:mm:ss a\",\"MMM d, y, h:mm:ss a\":\"MMM d, y, h:mm:ss a\",\"M/d/yy, h:mm:ss a\":\"M/d/yy, h:mm:ss a\",\"d, h:mm:ss a\":\"d, h:mm:ss a\",\"E, h:mm:ss a\":\"ccc, h:mm:ss a\",\"Ed, h:mm:ss a\":\"d E, h:mm:ss a\",\"Gy, h:mm:ss a\":\"y G, h:mm:ss a\",\"GyMMM, h:mm:ss a\":\"MMM y G, h:mm:ss a\",\"GyMMMd, h:mm:ss a\":\"MMM d, y G, h:mm:ss a\",\"GyMMMEd, h:mm:ss a\":\"E, MMM d, y G, h:mm:ss a\",\"M, h:mm:ss a\":\"L, h:mm:ss a\",\"Md, h:mm:ss a\":\"M/d, h:mm:ss a\",\"MEd, h:mm:ss a\":\"E, M/d, h:mm:ss a\",\"MMM, h:mm:ss a\":\"LLL, h:mm:ss a\",\"MMMd, h:mm:ss a\":\"MMM d, h:mm:ss a\",\"MMMEd, h:mm:ss a\":\"E, MMM d, h:mm:ss a\",\"MMMMd 'at' h:mm:ss a\":\"MMMM d 'at' h:mm:ss a\",\"y, h:mm:ss a\":\"y, h:mm:ss a\",\"yM, h:mm:ss a\":\"M/y, h:mm:ss a\",\"yMd, h:mm:ss a\":\"M/d/y, h:mm:ss a\",\"yMEd, h:mm:ss a\":\"E, M/d/y, h:mm:ss a\",\"yMMM, h:mm:ss a\":\"MMM y, h:mm:ss a\",\"yMMMd, h:mm:ss a\":\"MMM d, y, h:mm:ss a\",\"yMMMEd, h:mm:ss a\":\"E, MMM d, y, h:mm:ss a\",\"yMMMM 'at' h:mm:ss a\":\"MMMM y 'at' h:mm:ss a\",\"EEEE, MMMM d, y 'at' h:mm a\":\"EEEE, MMMM d, y 'at' h:mm a\",\"MMMM d, y 'at' h:mm a\":\"MMMM d, y 'at' h:mm a\",\"MMM d, y, h:mm a\":\"MMM d, y, h:mm a\",\"M/d/yy, h:mm a\":\"M/d/yy, h:mm a\",\"d, h:mm a\":\"d, h:mm a\",\"E, h:mm a\":\"ccc, h:mm a\",\"Ed, h:mm a\":\"d E, h:mm a\",\"Gy, h:mm a\":\"y G, h:mm a\",\"GyMMM, h:mm a\":\"MMM y G, h:mm a\",\"GyMMMd, h:mm a\":\"MMM d, y G, h:mm a\",\"GyMMMEd, h:mm a\":\"E, MMM d, y G, h:mm a\",\"M, h:mm a\":\"L, h:mm a\",\"Md, h:mm a\":\"M/d, h:mm a\",\"MEd, h:mm a\":\"E, M/d, h:mm a\",\"MMM, h:mm a\":\"LLL, h:mm a\",\"MMMd, h:mm a\":\"MMM d, h:mm a\",\"MMMEd, h:mm a\":\"E, MMM d, h:mm a\",\"MMMMd 'at' h:mm a\":\"MMMM d 'at' h:mm a\",\"y, h:mm a\":\"y, h:mm a\",\"yM, h:mm a\":\"M/y, h:mm a\",\"yMd, h:mm a\":\"M/d/y, h:mm a\",\"yMEd, h:mm a\":\"E, M/d/y, h:mm a\",\"yMMM, h:mm a\":\"MMM y, h:mm a\",\"yMMMd, h:mm a\":\"MMM d, y, h:mm a\",\"yMMMEd, h:mm a\":\"E, MMM d, y, h:mm a\",\"yMMMM 'at' h:mm a\":\"MMMM y 'at' h:mm a\",\"EEEE, MMMM d, y 'at' Bh\":\"EEEE, MMMM d, y 'at' h B\",\"MMMM d, y 'at' Bh\":\"MMMM d, y 'at' h B\",\"MMM d, y, Bh\":\"MMM d, y, h B\",\"M/d/yy, Bh\":\"M/d/yy, h B\",\"d, Bh\":\"d, h B\",\"E, Bh\":\"ccc, h B\",\"Ed, Bh\":\"d E, h B\",\"Gy, Bh\":\"y G, h B\",\"GyMMM, Bh\":\"MMM y G, h B\",\"GyMMMd, Bh\":\"MMM d, y G, h B\",\"GyMMMEd, Bh\":\"E, MMM d, y G, h B\",\"M, Bh\":\"L, h B\",\"Md, Bh\":\"M/d, h B\",\"MEd, Bh\":\"E, M/d, h B\",\"MMM, Bh\":\"LLL, h B\",\"MMMd, Bh\":\"MMM d, h B\",\"MMMEd, Bh\":\"E, MMM d, h B\",\"MMMMd 'at' Bh\":\"MMMM d 'at' h B\",\"y, Bh\":\"y, h B\",\"yM, Bh\":\"M/y, h B\",\"yMd, Bh\":\"M/d/y, h B\",\"yMEd, Bh\":\"E, M/d/y, h B\",\"yMMM, Bh\":\"MMM y, h B\",\"yMMMd, Bh\":\"MMM d, y, h B\",\"yMMMEd, Bh\":\"E, MMM d, y, h B\",\"yMMMM 'at' Bh\":\"MMMM y 'at' h B\",\"EEEE, MMMM d, y 'at' Bhm\":\"EEEE, MMMM d, y 'at' h:mm B\",\"MMMM d, y 'at' Bhm\":\"MMMM d, y 'at' h:mm B\",\"MMM d, y, Bhm\":\"MMM d, y, h:mm B\",\"M/d/yy, Bhm\":\"M/d/yy, h:mm B\",\"d, Bhm\":\"d, h:mm B\",\"E, Bhm\":\"ccc, h:mm B\",\"Ed, Bhm\":\"d E, h:mm B\",\"Gy, Bhm\":\"y G, h:mm B\",\"GyMMM, Bhm\":\"MMM y G, h:mm B\",\"GyMMMd, Bhm\":\"MMM d, y G, h:mm B\",\"GyMMMEd, Bhm\":\"E, MMM d, y G, h:mm B\",\"M, Bhm\":\"L, h:mm B\",\"Md, Bhm\":\"M/d, h:mm B\",\"MEd, Bhm\":\"E, M/d, h:mm B\",\"MMM, Bhm\":\"LLL, h:mm B\",\"MMMd, Bhm\":\"MMM d, h:mm B\",\"MMMEd, Bhm\":\"E, MMM d, h:mm B\",\"MMMMd 'at' Bhm\":\"MMMM d 'at' h:mm B\",\"y, Bhm\":\"y, h:mm B\",\"yM, Bhm\":\"M/y, h:mm B\",\"yMd, Bhm\":\"M/d/y, h:mm B\",\"yMEd, Bhm\":\"E, M/d/y, h:mm B\",\"yMMM, Bhm\":\"MMM y, h:mm B\",\"yMMMd, Bhm\":\"MMM d, y, h:mm B\",\"yMMMEd, Bhm\":\"E, MMM d, y, h:mm B\",\"yMMMM 'at' Bhm\":\"MMMM y 'at' h:mm B\",\"EEEE, MMMM d, y 'at' Bhms\":\"EEEE, MMMM d, y 'at' h:mm:ss B\",\"MMMM d, y 'at' Bhms\":\"MMMM d, y 'at' h:mm:ss B\",\"MMM d, y, Bhms\":\"MMM d, y, h:mm:ss B\",\"M/d/yy, Bhms\":\"M/d/yy, h:mm:ss B\",\"d, Bhms\":\"d, h:mm:ss B\",\"E, Bhms\":\"ccc, h:mm:ss B\",\"Ed, Bhms\":\"d E, h:mm:ss B\",\"Gy, Bhms\":\"y G, h:mm:ss B\",\"GyMMM, Bhms\":\"MMM y G, h:mm:ss B\",\"GyMMMd, Bhms\":\"MMM d, y G, h:mm:ss B\",\"GyMMMEd, Bhms\":\"E, MMM d, y G, h:mm:ss B\",\"M, Bhms\":\"L, h:mm:ss B\",\"Md, Bhms\":\"M/d, h:mm:ss B\",\"MEd, Bhms\":\"E, M/d, h:mm:ss B\",\"MMM, Bhms\":\"LLL, h:mm:ss B\",\"MMMd, Bhms\":\"MMM d, h:mm:ss B\",\"MMMEd, Bhms\":\"E, MMM d, h:mm:ss B\",\"MMMMd 'at' Bhms\":\"MMMM d 'at' h:mm:ss B\",\"y, Bhms\":\"y, h:mm:ss B\",\"yM, Bhms\":\"M/y, h:mm:ss B\",\"yMd, Bhms\":\"M/d/y, h:mm:ss B\",\"yMEd, Bhms\":\"E, M/d/y, h:mm:ss B\",\"yMMM, Bhms\":\"MMM y, h:mm:ss B\",\"yMMMd, Bhms\":\"MMM d, y, h:mm:ss B\",\"yMMMEd, Bhms\":\"E, MMM d, y, h:mm:ss B\",\"yMMMM 'at' Bhms\":\"MMMM y 'at' h:mm:ss B\",\"EEEE, MMMM d, y 'at' h\":\"EEEE, MMMM d, y 'at' h a\",\"MMMM d, y 'at' h\":\"MMMM d, y 'at' h a\",\"MMM d, y, h\":\"MMM d, y, h a\",\"M/d/yy, h\":\"M/d/yy, h a\",\"d, h\":\"d, h a\",\"E, h\":\"ccc, h a\",\"Ed, h\":\"d E, h a\",\"Gy, h\":\"y G, h a\",\"GyMMM, h\":\"MMM y G, h a\",\"GyMMMd, h\":\"MMM d, y G, h a\",\"GyMMMEd, h\":\"E, MMM d, y G, h a\",\"M, h\":\"L, h a\",\"Md, h\":\"M/d, h a\",\"MEd, h\":\"E, M/d, h a\",\"MMM, h\":\"LLL, h a\",\"MMMd, h\":\"MMM d, h a\",\"MMMEd, h\":\"E, MMM d, h a\",\"MMMMd 'at' h\":\"MMMM d 'at' h a\",\"y, h\":\"y, h a\",\"yM, h\":\"M/y, h a\",\"yMd, h\":\"M/d/y, h a\",\"yMEd, h\":\"E, M/d/y, h a\",\"yMMM, h\":\"MMM y, h a\",\"yMMMd, h\":\"MMM d, y, h a\",\"yMMMEd, h\":\"E, MMM d, y, h a\",\"yMMMM 'at' h\":\"MMMM y 'at' h a\",\"EEEE, MMMM d, y 'at' H\":\"EEEE, MMMM d, y 'at' HH\",\"MMMM d, y 'at' H\":\"MMMM d, y 'at' HH\",\"MMM d, y, H\":\"MMM d, y, HH\",\"M/d/yy, H\":\"M/d/yy, HH\",\"d, H\":\"d, HH\",\"E, H\":\"ccc, HH\",\"Ed, H\":\"d E, HH\",\"Gy, H\":\"y G, HH\",\"GyMMM, H\":\"MMM y G, HH\",\"GyMMMd, H\":\"MMM d, y G, HH\",\"GyMMMEd, H\":\"E, MMM d, y G, HH\",\"M, H\":\"L, HH\",\"Md, H\":\"M/d, HH\",\"MEd, H\":\"E, M/d, HH\",\"MMM, H\":\"LLL, HH\",\"MMMd, H\":\"MMM d, HH\",\"MMMEd, H\":\"E, MMM d, HH\",\"MMMMd 'at' H\":\"MMMM d 'at' HH\",\"y, H\":\"y, HH\",\"yM, H\":\"M/y, HH\",\"yMd, H\":\"M/d/y, HH\",\"yMEd, H\":\"E, M/d/y, HH\",\"yMMM, H\":\"MMM y, HH\",\"yMMMd, H\":\"MMM d, y, HH\",\"yMMMEd, H\":\"E, MMM d, y, HH\",\"yMMMM 'at' H\":\"MMMM y 'at' HH\",\"EEEE, MMMM d, y 'at' hm\":\"EEEE, MMMM d, y 'at' h:mm a\",\"MMMM d, y 'at' hm\":\"MMMM d, y 'at' h:mm a\",\"MMM d, y, hm\":\"MMM d, y, h:mm a\",\"M/d/yy, hm\":\"M/d/yy, h:mm a\",\"d, hm\":\"d, h:mm a\",\"E, hm\":\"ccc, h:mm a\",\"Ed, hm\":\"d E, h:mm a\",\"Gy, hm\":\"y G, h:mm a\",\"GyMMM, hm\":\"MMM y G, h:mm a\",\"GyMMMd, hm\":\"MMM d, y G, h:mm a\",\"GyMMMEd, hm\":\"E, MMM d, y G, h:mm a\",\"M, hm\":\"L, h:mm a\",\"Md, hm\":\"M/d, h:mm a\",\"MEd, hm\":\"E, M/d, h:mm a\",\"MMM, hm\":\"LLL, h:mm a\",\"MMMd, hm\":\"MMM d, h:mm a\",\"MMMEd, hm\":\"E, MMM d, h:mm a\",\"MMMMd 'at' hm\":\"MMMM d 'at' h:mm a\",\"y, hm\":\"y, h:mm a\",\"yM, hm\":\"M/y, h:mm a\",\"yMd, hm\":\"M/d/y, h:mm a\",\"yMEd, hm\":\"E, M/d/y, h:mm a\",\"yMMM, hm\":\"MMM y, h:mm a\",\"yMMMd, hm\":\"MMM d, y, h:mm a\",\"yMMMEd, hm\":\"E, MMM d, y, h:mm a\",\"yMMMM 'at' hm\":\"MMMM y 'at' h:mm a\",\"EEEE, MMMM d, y 'at' Hm\":\"EEEE, MMMM d, y 'at' HH:mm\",\"MMMM d, y 'at' Hm\":\"MMMM d, y 'at' HH:mm\",\"MMM d, y, Hm\":\"MMM d, y, HH:mm\",\"M/d/yy, Hm\":\"M/d/yy, HH:mm\",\"d, Hm\":\"d, HH:mm\",\"E, Hm\":\"ccc, HH:mm\",\"Ed, Hm\":\"d E, HH:mm\",\"Gy, Hm\":\"y G, HH:mm\",\"GyMMM, Hm\":\"MMM y G, HH:mm\",\"GyMMMd, Hm\":\"MMM d, y G, HH:mm\",\"GyMMMEd, Hm\":\"E, MMM d, y G, HH:mm\",\"M, Hm\":\"L, HH:mm\",\"Md, Hm\":\"M/d, HH:mm\",\"MEd, Hm\":\"E, M/d, HH:mm\",\"MMM, Hm\":\"LLL, HH:mm\",\"MMMd, Hm\":\"MMM d, HH:mm\",\"MMMEd, Hm\":\"E, MMM d, HH:mm\",\"MMMMd 'at' Hm\":\"MMMM d 'at' HH:mm\",\"y, Hm\":\"y, HH:mm\",\"yM, Hm\":\"M/y, HH:mm\",\"yMd, Hm\":\"M/d/y, HH:mm\",\"yMEd, Hm\":\"E, M/d/y, HH:mm\",\"yMMM, Hm\":\"MMM y, HH:mm\",\"yMMMd, Hm\":\"MMM d, y, HH:mm\",\"yMMMEd, Hm\":\"E, MMM d, y, HH:mm\",\"yMMMM 'at' Hm\":\"MMMM y 'at' HH:mm\",\"EEEE, MMMM d, y 'at' hms\":\"EEEE, MMMM d, y 'at' h:mm:ss a\",\"MMMM d, y 'at' hms\":\"MMMM d, y 'at' h:mm:ss a\",\"MMM d, y, hms\":\"MMM d, y, h:mm:ss a\",\"M/d/yy, hms\":\"M/d/yy, h:mm:ss a\",\"d, hms\":\"d, h:mm:ss a\",\"E, hms\":\"ccc, h:mm:ss a\",\"Ed, hms\":\"d E, h:mm:ss a\",\"Gy, hms\":\"y G, h:mm:ss a\",\"GyMMM, hms\":\"MMM y G, h:mm:ss a\",\"GyMMMd, hms\":\"MMM d, y G, h:mm:ss a\",\"GyMMMEd, hms\":\"E, MMM d, y G, h:mm:ss a\",\"M, hms\":\"L, h:mm:ss a\",\"Md, hms\":\"M/d, h:mm:ss a\",\"MEd, hms\":\"E, M/d, h:mm:ss a\",\"MMM, hms\":\"LLL, h:mm:ss a\",\"MMMd, hms\":\"MMM d, h:mm:ss a\",\"MMMEd, hms\":\"E, MMM d, h:mm:ss a\",\"MMMMd 'at' hms\":\"MMMM d 'at' h:mm:ss a\",\"y, hms\":\"y, h:mm:ss a\",\"yM, hms\":\"M/y, h:mm:ss a\",\"yMd, hms\":\"M/d/y, h:mm:ss a\",\"yMEd, hms\":\"E, M/d/y, h:mm:ss a\",\"yMMM, hms\":\"MMM y, h:mm:ss a\",\"yMMMd, hms\":\"MMM d, y, h:mm:ss a\",\"yMMMEd, hms\":\"E, MMM d, y, h:mm:ss a\",\"yMMMM 'at' hms\":\"MMMM y 'at' h:mm:ss a\",\"EEEE, MMMM d, y 'at' Hms\":\"EEEE, MMMM d, y 'at' HH:mm:ss\",\"MMMM d, y 'at' Hms\":\"MMMM d, y 'at' HH:mm:ss\",\"MMM d, y, Hms\":\"MMM d, y, HH:mm:ss\",\"M/d/yy, Hms\":\"M/d/yy, HH:mm:ss\",\"d, Hms\":\"d, HH:mm:ss\",\"E, Hms\":\"ccc, HH:mm:ss\",\"Ed, Hms\":\"d E, HH:mm:ss\",\"Gy, Hms\":\"y G, HH:mm:ss\",\"GyMMM, Hms\":\"MMM y G, HH:mm:ss\",\"GyMMMd, Hms\":\"MMM d, y G, HH:mm:ss\",\"GyMMMEd, Hms\":\"E, MMM d, y G, HH:mm:ss\",\"M, Hms\":\"L, HH:mm:ss\",\"Md, Hms\":\"M/d, HH:mm:ss\",\"MEd, Hms\":\"E, M/d, HH:mm:ss\",\"MMM, Hms\":\"LLL, HH:mm:ss\",\"MMMd, Hms\":\"MMM d, HH:mm:ss\",\"MMMEd, Hms\":\"E, MMM d, HH:mm:ss\",\"MMMMd 'at' Hms\":\"MMMM d 'at' HH:mm:ss\",\"y, Hms\":\"y, HH:mm:ss\",\"yM, Hms\":\"M/y, HH:mm:ss\",\"yMd, Hms\":\"M/d/y, HH:mm:ss\",\"yMEd, Hms\":\"E, M/d/y, HH:mm:ss\",\"yMMM, Hms\":\"MMM y, HH:mm:ss\",\"yMMMd, Hms\":\"MMM d, y, HH:mm:ss\",\"yMMMEd, Hms\":\"E, MMM d, y, HH:mm:ss\",\"yMMMM 'at' Hms\":\"MMMM y 'at' HH:mm:ss\",\"EEEE, MMMM d, y 'at' hmsv\":\"EEEE, MMMM d, y 'at' h:mm:ss a v\",\"MMMM d, y 'at' hmsv\":\"MMMM d, y 'at' h:mm:ss a v\",\"MMM d, y, hmsv\":\"MMM d, y, h:mm:ss a v\",\"M/d/yy, hmsv\":\"M/d/yy, h:mm:ss a v\",\"d, hmsv\":\"d, h:mm:ss a v\",\"E, hmsv\":\"ccc, h:mm:ss a v\",\"Ed, hmsv\":\"d E, h:mm:ss a v\",\"Gy, hmsv\":\"y G, h:mm:ss a v\",\"GyMMM, hmsv\":\"MMM y G, h:mm:ss a v\",\"GyMMMd, hmsv\":\"MMM d, y G, h:mm:ss a v\",\"GyMMMEd, hmsv\":\"E, MMM d, y G, h:mm:ss a v\",\"M, hmsv\":\"L, h:mm:ss a v\",\"Md, hmsv\":\"M/d, h:mm:ss a v\",\"MEd, hmsv\":\"E, M/d, h:mm:ss a v\",\"MMM, hmsv\":\"LLL, h:mm:ss a v\",\"MMMd, hmsv\":\"MMM d, h:mm:ss a v\",\"MMMEd, hmsv\":\"E, MMM d, h:mm:ss a v\",\"MMMMd 'at' hmsv\":\"MMMM d 'at' h:mm:ss a v\",\"y, hmsv\":\"y, h:mm:ss a v\",\"yM, hmsv\":\"M/y, h:mm:ss a v\",\"yMd, hmsv\":\"M/d/y, h:mm:ss a v\",\"yMEd, hmsv\":\"E, M/d/y, h:mm:ss a v\",\"yMMM, hmsv\":\"MMM y, h:mm:ss a v\",\"yMMMd, hmsv\":\"MMM d, y, h:mm:ss a v\",\"yMMMEd, hmsv\":\"E, MMM d, y, h:mm:ss a v\",\"yMMMM 'at' hmsv\":\"MMMM y 'at' h:mm:ss a v\",\"EEEE, MMMM d, y 'at' Hmsv\":\"EEEE, MMMM d, y 'at' HH:mm:ss v\",\"MMMM d, y 'at' Hmsv\":\"MMMM d, y 'at' HH:mm:ss v\",\"MMM d, y, Hmsv\":\"MMM d, y, HH:mm:ss v\",\"M/d/yy, Hmsv\":\"M/d/yy, HH:mm:ss v\",\"d, Hmsv\":\"d, HH:mm:ss v\",\"E, Hmsv\":\"ccc, HH:mm:ss v\",\"Ed, Hmsv\":\"d E, HH:mm:ss v\",\"Gy, Hmsv\":\"y G, HH:mm:ss v\",\"GyMMM, Hmsv\":\"MMM y G, HH:mm:ss v\",\"GyMMMd, Hmsv\":\"MMM d, y G, HH:mm:ss v\",\"GyMMMEd, Hmsv\":\"E, MMM d, y G, HH:mm:ss v\",\"M, Hmsv\":\"L, HH:mm:ss v\",\"Md, Hmsv\":\"M/d, HH:mm:ss v\",\"MEd, Hmsv\":\"E, M/d, HH:mm:ss v\",\"MMM, Hmsv\":\"LLL, HH:mm:ss v\",\"MMMd, Hmsv\":\"MMM d, HH:mm:ss v\",\"MMMEd, Hmsv\":\"E, MMM d, HH:mm:ss v\",\"MMMMd 'at' Hmsv\":\"MMMM d 'at' HH:mm:ss v\",\"y, Hmsv\":\"y, HH:mm:ss v\",\"yM, Hmsv\":\"M/y, HH:mm:ss v\",\"yMd, Hmsv\":\"M/d/y, HH:mm:ss v\",\"yMEd, Hmsv\":\"E, M/d/y, HH:mm:ss v\",\"yMMM, Hmsv\":\"MMM y, HH:mm:ss v\",\"yMMMd, Hmsv\":\"MMM d, y, HH:mm:ss v\",\"yMMMEd, Hmsv\":\"E, MMM d, y, HH:mm:ss v\",\"yMMMM 'at' Hmsv\":\"MMMM y 'at' HH:mm:ss v\",\"EEEE, MMMM d, y 'at' hmv\":\"EEEE, MMMM d, y 'at' h:mm a v\",\"MMMM d, y 'at' hmv\":\"MMMM d, y 'at' h:mm a v\",\"MMM d, y, hmv\":\"MMM d, y, h:mm a v\",\"M/d/yy, hmv\":\"M/d/yy, h:mm a v\",\"d, hmv\":\"d, h:mm a v\",\"E, hmv\":\"ccc, h:mm a v\",\"Ed, hmv\":\"d E, h:mm a v\",\"Gy, hmv\":\"y G, h:mm a v\",\"GyMMM, hmv\":\"MMM y G, h:mm a v\",\"GyMMMd, hmv\":\"MMM d, y G, h:mm a v\",\"GyMMMEd, hmv\":\"E, MMM d, y G, h:mm a v\",\"M, hmv\":\"L, h:mm a v\",\"Md, hmv\":\"M/d, h:mm a v\",\"MEd, hmv\":\"E, M/d, h:mm a v\",\"MMM, hmv\":\"LLL, h:mm a v\",\"MMMd, hmv\":\"MMM d, h:mm a v\",\"MMMEd, hmv\":\"E, MMM d, h:mm a v\",\"MMMMd 'at' hmv\":\"MMMM d 'at' h:mm a v\",\"y, hmv\":\"y, h:mm a v\",\"yM, hmv\":\"M/y, h:mm a v\",\"yMd, hmv\":\"M/d/y, h:mm a v\",\"yMEd, hmv\":\"E, M/d/y, h:mm a v\",\"yMMM, hmv\":\"MMM y, h:mm a v\",\"yMMMd, hmv\":\"MMM d, y, h:mm a v\",\"yMMMEd, hmv\":\"E, MMM d, y, h:mm a v\",\"yMMMM 'at' hmv\":\"MMMM y 'at' h:mm a v\",\"EEEE, MMMM d, y 'at' Hmv\":\"EEEE, MMMM d, y 'at' HH:mm v\",\"MMMM d, y 'at' Hmv\":\"MMMM d, y 'at' HH:mm v\",\"MMM d, y, Hmv\":\"MMM d, y, HH:mm v\",\"M/d/yy, Hmv\":\"M/d/yy, HH:mm v\",\"d, Hmv\":\"d, HH:mm v\",\"E, Hmv\":\"ccc, HH:mm v\",\"Ed, Hmv\":\"d E, HH:mm v\",\"Gy, Hmv\":\"y G, HH:mm v\",\"GyMMM, Hmv\":\"MMM y G, HH:mm v\",\"GyMMMd, Hmv\":\"MMM d, y G, HH:mm v\",\"GyMMMEd, Hmv\":\"E, MMM d, y G, HH:mm v\",\"M, Hmv\":\"L, HH:mm v\",\"Md, Hmv\":\"M/d, HH:mm v\",\"MEd, Hmv\":\"E, M/d, HH:mm v\",\"MMM, Hmv\":\"LLL, HH:mm v\",\"MMMd, Hmv\":\"MMM d, HH:mm v\",\"MMMEd, Hmv\":\"E, MMM d, HH:mm v\",\"MMMMd 'at' Hmv\":\"MMMM d 'at' HH:mm v\",\"y, Hmv\":\"y, HH:mm v\",\"yM, Hmv\":\"M/y, HH:mm v\",\"yMd, Hmv\":\"M/d/y, HH:mm v\",\"yMEd, Hmv\":\"E, M/d/y, HH:mm v\",\"yMMM, Hmv\":\"MMM y, HH:mm v\",\"yMMMd, Hmv\":\"MMM d, y, HH:mm v\",\"yMMMEd, Hmv\":\"E, MMM d, y, HH:mm v\",\"yMMMM 'at' Hmv\":\"MMMM y 'at' HH:mm v\",\"EEEE, MMMM d, y 'at' ms\":\"EEEE, MMMM d, y 'at' mm:ss\",\"MMMM d, y 'at' ms\":\"MMMM d, y 'at' mm:ss\",\"MMM d, y, ms\":\"MMM d, y, mm:ss\",\"M/d/yy, ms\":\"M/d/yy, mm:ss\",\"d, ms\":\"d, mm:ss\",\"E, ms\":\"ccc, mm:ss\",\"Ed, ms\":\"d E, mm:ss\",\"Gy, ms\":\"y G, mm:ss\",\"GyMMM, ms\":\"MMM y G, mm:ss\",\"GyMMMd, ms\":\"MMM d, y G, mm:ss\",\"GyMMMEd, ms\":\"E, MMM d, y G, mm:ss\",\"M, ms\":\"L, mm:ss\",\"Md, ms\":\"M/d, mm:ss\",\"MEd, ms\":\"E, M/d, mm:ss\",\"MMM, ms\":\"LLL, mm:ss\",\"MMMd, ms\":\"MMM d, mm:ss\",\"MMMEd, ms\":\"E, MMM d, mm:ss\",\"MMMMd 'at' ms\":\"MMMM d 'at' mm:ss\",\"y, ms\":\"y, mm:ss\",\"yM, ms\":\"M/y, mm:ss\",\"yMd, ms\":\"M/d/y, mm:ss\",\"yMEd, ms\":\"E, M/d/y, mm:ss\",\"yMMM, ms\":\"MMM y, mm:ss\",\"yMMMd, ms\":\"MMM d, y, mm:ss\",\"yMMMEd, ms\":\"E, MMM d, y, mm:ss\",\"yMMMM 'at' ms\":\"MMMM y 'at' mm:ss\"}},\"intervalFormats\":{\"intervalFormatFallback\":\"{0} – {1}\",\"Bh\":{\"B\":\"h B – h B\",\"h\":\"h – h B\"},\"Bhm\":{\"B\":\"h:mm B – h:mm B\",\"h\":\"h:mm – h:mm B\",\"m\":\"h:mm – h:mm B\"},\"d\":{\"d\":\"d – d\"},\"Gy\":{\"G\":\"y G – y G\",\"y\":\"y – y G\"},\"GyM\":{\"G\":\"M/y GGGGG – M/y GGGGG\",\"M\":\"M/y – M/y GGGGG\",\"y\":\"M/y – M/y GGGGG\"},\"GyMd\":{\"d\":\"M/d/y – M/d/y GGGGG\",\"G\":\"M/d/y GGGGG – M/d/y GGGGG\",\"M\":\"M/d/y – M/d/y GGGGG\",\"y\":\"M/d/y – M/d/y GGGGG\"},\"GyMEd\":{\"d\":\"E, M/d/y – E, M/d/y GGGGG\",\"G\":\"E, M/d/y GGGGG – E, M/d/y GGGGG\",\"M\":\"E, M/d/y – E, M/d/y GGGGG\",\"y\":\"E, M/d/y – E, M/d/y GGGGG\"},\"GyMMM\":{\"G\":\"MMM y G – MMM y G\",\"M\":\"MMM – MMM y G\",\"y\":\"MMM y – MMM y G\"},\"GyMMMd\":{\"d\":\"MMM d – d, y G\",\"G\":\"MMM d, y G – MMM d, y G\",\"M\":\"MMM d – MMM d, y G\",\"y\":\"MMM d, y – MMM d, y G\"},\"GyMMMEd\":{\"d\":\"E, MMM d – E, MMM d, y G\",\"G\":\"E, MMM d, y G – E, MMM d, y G\",\"M\":\"E, MMM d – E, MMM d, y G\",\"y\":\"E, MMM d, y – E, MMM d, y G\"},\"h\":{\"a\":\"h a – h a\",\"h\":\"h – h a\"},\"H\":{\"H\":\"HH – HH\"},\"hm\":{\"a\":\"h:mm a – h:mm a\",\"h\":\"h:mm – h:mm a\",\"m\":\"h:mm – h:mm a\"},\"Hm\":{\"H\":\"HH:mm – HH:mm\",\"m\":\"HH:mm – HH:mm\"},\"hmv\":{\"a\":\"h:mm a – h:mm a v\",\"h\":\"h:mm – h:mm a v\",\"m\":\"h:mm – h:mm a v\"},\"Hmv\":{\"H\":\"HH:mm – HH:mm v\",\"m\":\"HH:mm – HH:mm v\"},\"hv\":{\"a\":\"h a – h a v\",\"h\":\"h – h a v\"},\"Hv\":{\"H\":\"HH – HH v\"},\"M\":{\"M\":\"M – M\"},\"Md\":{\"d\":\"M/d – M/d\",\"M\":\"M/d – M/d\"},\"MEd\":{\"d\":\"E, M/d – E, M/d\",\"M\":\"E, M/d – E, M/d\"},\"MMM\":{\"M\":\"MMM – MMM\"},\"MMMd\":{\"d\":\"MMM d – d\",\"M\":\"MMM d – MMM d\"},\"MMMEd\":{\"d\":\"E, MMM d – E, MMM d\",\"M\":\"E, MMM d – E, MMM d\"},\"y\":{\"y\":\"y – y\"},\"yM\":{\"M\":\"M/y – M/y\",\"y\":\"M/y – M/y\"},\"yMd\":{\"d\":\"M/d/y – M/d/y\",\"M\":\"M/d/y – M/d/y\",\"y\":\"M/d/y – M/d/y\"},\"yMEd\":{\"d\":\"E, M/d/y – E, M/d/y\",\"M\":\"E, M/d/y – E, M/d/y\",\"y\":\"E, M/d/y – E, M/d/y\"},\"yMMM\":{\"M\":\"MMM – MMM y\",\"y\":\"MMM y – MMM y\"},\"yMMMd\":{\"d\":\"MMM d – d, y\",\"M\":\"MMM d – MMM d, y\",\"y\":\"MMM d, y – MMM d, y\"},\"yMMMEd\":{\"d\":\"E, MMM d – E, MMM d, y\",\"M\":\"E, MMM d – E, MMM d, y\",\"y\":\"E, MMM d, y – E, MMM d, y\"},\"yMMMM\":{\"M\":\"MMMM – MMMM y\",\"y\":\"MMMM y – MMMM y\"}},\"hourCycle\":\"h12\",\"nu\":[\"latn\"],\"ca\":[\"gregory\"],\"hc\":[\"h12\",\"\",\"h23\",\"\"]},\"locale\":\"en\"}\n)\n }","// @generated\n// prettier-ignore\nif ('DateTimeFormat' in Intl && Intl.DateTimeFormat.__addTZData) {\n Intl.DateTimeFormat.__addTZData({\"zones\":[\"Africa/Accra|,0,0,0|-s9p1ak,1,1,0|-q5eqo1,1,1,0|-q5eqo0,2,2,1|-q3g8pd,2,2,1|-q3g8pc,1,1,0|-pqwd41,1,1,0|-pqwd40,2,2,1|-pkmgpd,2,2,1|-pkmgpc,1,1,0|-p84fs1,1,1,0|-p84fs0,2,2,1|-p1ujdd,2,2,1|-p1ujdc,1,1,0|-opcig1,1,1,0|-opcig0,2,2,1|-oj2m1d,2,2,1|-oj2m1c,1,1,0|-o6kl41,1,1,0|-o6kl40,2,2,1|-o0aopd,2,2,1|-o0aopc,1,1,0|-nnqt41,1,1,0|-nnqt40,2,2,1|-nhgwpd,2,2,1|-nhgwpc,1,1,0|-n4yvs1,1,1,0|-n4yvs0,2,2,1|-myozdd,2,2,1|-myozdc,1,1,0|-mm6yg1,1,1,0|-mm6yg0,2,2,1|-mfx21d,2,2,1|-mfx21c,1,1,0|-m3f141,1,1,0|-m3f140,2,2,1|-lx54pd,2,2,1|-lx54pc,1,1,0|-lkl941,1,1,0|-lkl940,2,2,1|-lebcpd,2,2,1|-lebcpc,1,1,0|-l1tbs1,1,1,0|-l1tbs0,2,2,1|-kvjfdd,2,2,1|-kvjfdc,1,1,0|-kj1eg1,1,1,0|-kj1eg0,2,2,1|-kcri1d,2,2,1|-kcri1c,1,1,0|-k09h41,1,1,0|-k09h40,2,2,1|-jtzkpd,2,2,1|-jtzkpc,1,1,0|-jhfp41,1,1,0|-jhfp40,2,2,1|-jb5spd,2,2,1|-jb5spc,1,1,0|-iynrs1,1,1,0|-iynrs0,2,2,1|-isdvdd,2,2,1|-isdvdc,1,1,0|-ifvug1,1,1,0|-ifvug0,2,2,1|-i9ly1d,2,2,1|-i9ly1c,1,1,0|-hx3x41,1,1,0|-hx3x40,2,2,1|-hqu0pd,2,2,1|-hqu0pc,1,1,0|-hea541,1,1,0|-hea540,2,2,1|-h808pd,2,2,1|-h808pc,1,1,0|-gvi7s1,1,1,0|-gvi7s0,2,2,1|-gp8bdd,2,2,1|-gp8bdc,1,1,0|-gcqag1,1,1,0|-gcqag0,2,2,1|-g6ge1d,2,2,1|-g6ge1c,1,1,0|-ftyd41,1,1,0|-ftyd40,2,2,1|-fnogpd,2,2,1|-fnogpc,1,1,0|-fhgd41,1,1,0|-fhgd40,2,2,1|-f4uopd,2,2,1|-f4uopc,1,1,0|-eyofs1,1,1,0|-eyofs0,2,2,1|-em2rdd,2,2,1|-em2rdc,1,1,0|-ek4io1,1,1,0|-ek4io0,3,3,0|-cio421,3,3,0|-cio420,1,1,0|-a39mg1,1,1,0|-a39mg0,3,3,1|-9wzqi1,3,3,1|-9wzqi0,1,1,0|-9khp41,1,1,0|-9khp40,3,3,1|-9e7t61,3,3,1|-9e7t60,1,1,0|-91nx41,1,1,0|-91nx40,3,3,1|-8ve161,3,3,1|-8ve160,1,1,0|-8ivzs1,1,1,0|-8ivzs0,3,3,1|-8cm3u1,3,3,1|-8cm3u0,1,1,0|-8042g1,1,1,0|-8042g0,3,3,1|-7tu6i1,3,3,1|-7tu6i0,1,1,0|-7hc541,1,1,0|-7hc540,3,3,1|-7b2961,3,3,1|-7b2960,1,1,0\",\"Africa/Addis_Ababa|,0,4,0|-w6p5hg,4,5,0|-lnsey1,4,5,0|-lnsey0,5,6,0|-kvcdo1,5,6,0|-kvcdo0,4,5,0|-h80ka1,4,5,0|-h80ka0,6,7,0|-eb6ib1,6,7,0|-eb6ib0,5,6,0\",\"Africa/Algiers|,0,8,0|-154gb8c,7,9,0|-uozn3m,7,9,0|-uozn3l,8,1,0|-ry2lg1,8,1,0|-ry2lg0,9,10,1|-rsgqs1,9,10,1|-rsgqs0,8,1,0|-rjiis1,8,1,0|-rjiis0,9,10,1|-r9dpg1,9,10,1|-r9dpg0,8,1,0|-r1idg1,8,1,0|-r1idg0,9,10,1|-qqnms1,9,10,1|-qqnms0,8,1,0|-qj59g1,8,1,0|-qj59g0,9,10,1|-q7xk41,9,10,1|-q7xk40,8,1,0|-q15441,8,1,0|-q15440,9,10,1|-po6g41,9,10,1|-po6g40,8,1,0|-pgvhg1,8,1,0|-pgvhg0,9,10,1|-pbs5g1,9,10,1|-pbs5g0,8,1,0|-fte841,8,1,0|-fte840,9,10,1|-fpw801,9,10,1|-fpw800,8,1,0|-fkul41,8,1,0|-fkul40,10,10,0|-dfqqk1,10,10,0|-dfqqk0,11,11,1|-d62o01,11,11,1|-d62o00,10,10,0|-cx0nw1,10,10,0|-cx0nw0,11,11,1|-cofk41,11,11,1|-cofk40,10,10,0|-c4kqs1,10,10,0|-c4kqs0,8,1,0|-79mio1,8,1,0|-79mio0,10,10,0|-3i8is1,10,10,0|-3i8is0,8,1,0|oot7z,8,1,0|oot80,9,10,1|wlzvz,9,10,1|wlzw0,8,1,0|3tynzz,8,1,0|3tyo00,9,10,1|42lp7z,9,10,1|42lp80,10,10,0|4aiynz,10,10,0|4aiyo0,11,11,1|4jw2rz,11,11,1|4jw2s0,10,10,0|54et7z,10,10,0|54et80,8,1,0|5drxbz,8,1,0|5drxc0,9,10,1|5ni03z,9,10,1|5ni040,8,1,0|5wuynz,8,1,0|5wuyo0,10,10,0\",\"Africa/Asmara|,0,4,0|-w6p5hg,4,5,0|-lnsey1,4,5,0|-lnsey0,5,6,0|-kvcdo1,5,6,0|-kvcdo0,4,5,0|-h80ka1,4,5,0|-h80ka0,6,7,0|-eb6ib1,6,7,0|-eb6ib0,5,6,0\",\"Africa/Bamako|,0,12,0|-u9rgl4,1,1,0\",\"Africa/Bangui|,0,13,0|-xnxnan,1,1,0|-w3k001,1,1,0|-w3k000,0,13,0|-t85smo,0,13,0|-t85smn,3,3,0|-q9qc21,3,3,0|-q9qc20,12,10,0\",\"Africa/Banjul|,0,12,0|-u9rgl4,1,1,0\",\"Africa/Bissau|,0,14,0|-u9rek0,13,15,0|2lxk3z,13,15,0|2lxk40,1,1,0\",\"Africa/Blantyre|,0,16,0|-yvtfd8,14,11,0\",\"Africa/Brazzaville|,0,13,0|-xnxnan,1,1,0|-w3k001,1,1,0|-w3k000,0,13,0|-t85smo,0,13,0|-t85smn,3,3,0|-q9qc21,3,3,0|-q9qc20,12,10,0\",\"Africa/Bujumbura|,0,16,0|-yvtfd8,14,11,0\",\"Africa/Cairo|,0,17,0|-1054wgl,15,11,0|-fdls81,15,11,0|-fdls80,16,6,1|-f9lf01,16,6,1|-f9lf00,15,11,0|-ezidk1,15,11,0|-ezidk0,16,6,1|-erl9o1,16,6,1|-erl9o0,15,11,0|-ehgdk1,15,11,0|-ehgdk0,16,6,1|-e6pf01,16,6,1|-e6pf00,15,11,0|-dyog81,15,11,0|-dyog80,16,6,1|-dno8c1,16,6,1|-dno8c0,15,11,0|-dfuo81,15,11,0|-dfuo80,16,6,1|-d4ugc1,16,6,1|-d4ugc0,15,11,0|-cwayw1,15,11,0|-cwayw0,16,6,1|-cm2j01,16,6,1|-cm2j00,15,11,0|-6lluw1,15,11,0|-6lluw0,16,6,1|-6e79o1,16,6,1|-6e79o0,15,11,0|-63alk1,15,11,0|-63alk0,16,6,1|-5vfcc1,16,6,1|-5vfcc0,15,11,0|-5kilg1,15,11,0|-5kilg0,16,6,1|-5cp1c1,16,6,1|-5cp1c0,15,11,0|-51otg1,15,11,0|-51otg0,16,6,1|-4tv9c1,16,6,1|-4tv9c0,15,11,0|-4iww41,15,11,0|-4iww40,16,6,1|-4b3c01,16,6,1|-4b3c00,15,11,0|-404ys1,15,11,0|-404ys0,16,6,1|-3sbeo1,16,6,1|-3sbeo0,15,11,0|-3hd1g1,15,11,0|-3hd1g0,16,6,1|-39jhc1,16,6,1|-39jhc0,15,11,0|-2yj9g1,15,11,0|-2yj9g0,16,6,1|-2qppc1,16,6,1|-2qppc0,15,11,0|-2frc41,15,11,0|-2frc40,16,6,1|-27xs01,16,6,1|-27xs00,15,11,0|-1wzes1,15,11,0|-1wzes0,16,6,1|-1p4001,16,6,1|-1p4000,15,11,0|-1e7hg1,15,11,0|-1e7hg0,16,6,1|-16c2o1,16,6,1|-16c2o0,15,11,0|-vdpg1,15,11,0|-vdpg0,16,6,1|-niao1,16,6,1|-niao0,15,11,0|-cls41,15,11,0|-cls40,16,6,1|-4qdc1,16,6,1|-4qdc0,15,11,0|6657z,15,11,0|66580,16,6,1|e1jzz,16,6,1|e1k00,15,11,0|oy2jz,15,11,0|oy2k0,16,6,1|wthbz,16,6,1|wthc0,15,11,0|17rujz,15,11,0|17ruk0,16,6,1|1fn9bz,16,6,1|1fn9c0,15,11,0|1qjrvz,15,11,0|1qjrw0,16,6,1|1yf6nz,16,6,1|1yf6o0,15,11,0|29bp7z,15,11,0|29bp80,16,6,1|2h73zz,16,6,1|2h7400,15,11,0|2s3mjz,15,11,0|2s3mk0,16,6,1|2zz1bz,16,6,1|2zz1c0,15,11,0|3axejz,15,11,0|3axek0,16,6,1|3istbz,16,6,1|3istc0,15,11,0|3tpbvz,15,11,0|3tpbw0,16,6,1|41kqnz,16,6,1|41kqo0,15,11,0|4ch97z,15,11,0|4ch980,16,6,1|4kcnzz,16,6,1|4kco00,15,11,0|4v96jz,15,11,0|4v96k0,16,6,1|534lbz,16,6,1|534lc0,15,11,0|5e2yjz,15,11,0|5e2yk0,16,6,1|5lydbz,16,6,1|5lydc0,15,11,0|5wuvvz,15,11,0|5wuvw0,16,6,1|64qanz,16,6,1|64qao0,15,11,0|6k07vz,15,11,0|6k07w0,16,6,1|6ni7zz,16,6,1|6ni800,15,11,0|7242jz,15,11,0|7242k0,16,6,1|76a5bz,16,6,1|76a5c0,15,11,0|7h8ijz,15,11,0|7h8ik0,16,6,1|7p3xbz,16,6,1|7p3xc0,15,11,0|800fvz,15,11,0|800fw0,16,6,1|87vunz,16,6,1|87vuo0,15,11,0|8isd7z,15,11,0|8isd80,16,6,1|8qnrzz,16,6,1|8qns00,15,11,0|91kajz,15,11,0|91kak0,16,6,1|99fpbz,16,6,1|99fpc0,15,11,0|9ke2jz,15,11,0|9ke2k0,16,6,1|9s9hbz,16,6,1|9s9hc0,15,11,0|a3f97z,15,11,0|a3f980,16,6,1|ab1enz,16,6,1|ab1eo0,15,11,0|alxx7z,15,11,0|alxx80,16,6,1|attbzz,16,6,1|attc00,15,11,0|b4pujz,15,11,0|b4puk0,16,6,1|bcl9bz,16,6,1|bcl9c0,15,11,0|bnjmjz,15,11,0|bnjmk0,16,6,1|bvf1bz,16,6,1|bvf1c0,15,11,0|c6bjvz,15,11,0|c6bjw0,16,6,1|ce6ynz,16,6,1|ce6yo0,15,11,0|cp3h7z,15,11,0|cp3h80,16,6,1|cwyvzz,16,6,1|cwyw00,15,11,0|d7prrz,15,11,0|d7prs0,16,6,1|dfmvnz,16,6,1|dfmvo0,15,11,0|dqfufz,15,11,0|dqfug0,16,6,1|dycybz,16,6,1|dycyc0,15,11,0|e95x3z,15,11,0|e95x40,16,6,1|eh30zz,16,6,1|eh3100,15,11,0|ervzrz,15,11,0|ervzs0,16,6,1|ezt3nz,16,6,1|ezt3o0,15,11,0|faz13z,15,11,0|faz140,16,6,1|fiw4zz,16,6,1|fiw500,15,11,0|ftp3rz,15,11,0|ftp3s0,16,6,1|g1m7nz,16,6,1|g1m7o0,15,11,0|gcf6fz,15,11,0|gcf6g0,16,6,1|gkcabz,16,6,1|gkcac0,15,11,0|gv593z,15,11,0|gv5940,16,6,1|h32czz,16,6,1|h32d00,15,11,0|hdvbrz,15,11,0|hdvbs0,16,6,1|hlsfnz,16,6,1|hlsfo0,15,11,0|hwyd3z,15,11,0|hwyd40,16,6,1|i4vgzz,16,6,1|i4vh00,15,11,0|ifofrz,15,11,0|ifofs0,16,6,1|inljnz,16,6,1|inljo0,15,11,0|iyeifz,15,11,0|iyeig0,16,6,1|j5ynnz,16,6,1|j5yno0,15,11,0|jh4l3z,15,11,0|jh4l40,16,6,1|jnyszz,16,6,1|jnyt00,15,11,0|jzunrz,15,11,0|jzuns0,16,6,1|k6bwzz,16,6,1|k6bx00,15,11,0|kikqfz,15,11,0|kikqg0,16,6,1|kop0zz,16,6,1|kop100,15,11,0|l1nrrz,15,11,0|l1nrs0,16,6,1|l6yfnz,16,6,1|l6yfo0,15,11,0|l8i2fz,15,11,0|l8i2g0,16,6,1|l9kvnz,16,6,1|l9kvo0,15,11,0|n5myfz,15,11,0|n5myg0,16,6,1|n7snnz,16,6,1|n7sno0,15,11,0|n9ljrz,15,11,0|n9ljs0,16,6,1|nch6bz,16,6,1|nch6c0,15,11,0\",\"Africa/Casablanca|,0,18,0|-tblt9g,17,1,0|-fte5c1,17,1,0|-fte5c0,18,10,1|-fpwas1,18,10,1|-fpwas0,17,1,0|-fkuqo1,17,1,0|-fkuqo0,18,10,1|-cl6w41,18,10,1|-cl6w40,17,1,0|-a7hmo1,17,1,0|-a7hmo0,18,10,1|-a0ag41,18,10,1|-a0ag40,17,1,0|-1chdc1,17,1,0|-1chdc0,18,10,1|-16c5g1,18,10,1|-16c5g0,17,1,0|2c3rzz,17,1,0|2c3s00,18,10,1|2fnh7z,18,10,1|2fnh80,17,1,0|3axhbz,17,1,0|3axhc0,18,10,1|3fnrvz,18,10,1|3fnrw0,17,1,0|3tpenz,17,1,0|3tpeo0,18,10,1|41f3vz,18,10,1|41f3w0,17,1,0|4e2qnz,17,1,0|4e2qo0,18,10,1|4hd6jz,18,10,1|4hd6k0,17,1,0|7evenz,17,1,0|7eveo0,18,10,0|8cm57z,18,10,0|8cm580,17,1,0|k1rbzz,17,1,0|k1rc00,18,10,1|k6hmjz,18,10,1|k6hmk0,17,1,0|kkj9bz,17,1,0|kkj9c0,18,10,1|kop6jz,18,10,1|kop6k0,17,1,0|l1rmnz,17,1,0|l1rmo0,18,10,1|l6t17z,18,10,1|l6t180,17,1,0|lj1unz,17,1,0|lj1uo0,18,10,1|lp657z,18,10,1|lp6580,17,1,0|m37xjz,17,1,0|m37xk0,18,10,1|m7fs7z,18,10,1|m7fs80,17,1,0|m916vz,17,1,0|m916w0,18,10,1|mb547z,18,10,1|mb5480,17,1,0|mly07z,17,1,0|mly080,18,10,1|mpjmvz,18,10,1|mpjmw0,17,1,0|mraljz,17,1,0|mralk0,18,10,1|mvb1jz,18,10,1|mvb1k0,17,1,0|n3887z,17,1,0|n38880,18,10,1|n7uw7z,18,10,1|n7uw80,17,1,0|n9npjz,17,1,0|n9npk0,18,10,1|ne147z,18,10,1|ne1480,17,1,0|nlyavz,17,1,0|nlyaw0,18,10,1|npww7z,18,10,1|npww80,17,1,0|nrppjz,17,1,0|nrppk0,18,10,1|nwr6vz,18,10,1|nwr6w0,17,1,0|o4odjz,17,1,0|o4odk0,18,10,1|o8a07z,18,10,1|o8a080,17,1,0|oa2tjz,17,1,0|oa2tk0,18,10,1|ofu87z,18,10,1|ofu880,17,1,0|oneg7z,17,1,0|oneg80,18,10,1|oqa5jz,18,10,1|oqa5k0,17,1,0|osfxjz,17,1,0|osfxk0,18,10,1|oykavz,18,10,1|oykaw0,17,1,0|p64ivz,17,1,0|p64iw0,18,10,1|p8n9jz,18,10,1|p8n9k0,17,1,0|pag2vz,17,1,0|pag2w0,18,10,1|phadjz,18,10,1|phadk0,18,10,0|pr0djz,18,10,0|pr0dk0,17,1,1|pst6vz,17,1,1|pst6w0,18,10,0|q90ivz,18,10,0|q90iw0,17,1,1|qb6avz,17,1,1|qb6aw0,18,10,0|qrdmvz,18,10,0|qrdmw0,17,1,1|qt6g7z,17,1,1|qt6g80,18,10,0|r9ds7z,18,10,0|r9ds80,17,1,1|rbjk7z,17,1,1|rbjk80,18,10,0|rrqw7z,18,10,0|rrqw80,17,1,1|rtwo7z,17,1,1|rtwo80,18,10,0|sa407z,18,10,0|sa4080,17,1,1|sbwtjz,17,1,1|sbwtk0,18,10,0|ss45jz,18,10,0|ss45k0,17,1,1|su9xjz,17,1,1|su9xk0,18,10,0|tah9jz,18,10,0|tah9k0,17,1,1|tca2vz,17,1,1|tca2w0,18,10,0|tsudjz,18,10,0|tsudk0,17,1,1|tun6vz,17,1,1|tun6w0,18,10,0|uauivz,18,10,0|uauiw0,17,1,1|ud0avz,17,1,1|ud0aw0,18,10,0|ut7mvz,18,10,0|ut7mw0,17,1,1|uv0g7z,17,1,1|uv0g80,18,10,0|vb7s7z,18,10,0|vb7s80,17,1,1|vddk7z,17,1,1|vddk80,18,10,0|vtkw7z,18,10,0|vtkw80,17,1,1|vvqo7z,17,1,1|vvqo80,18,10,0|wby07z,18,10,0|wby080,17,1,1|wdqtjz,17,1,1|wdqtk0,18,10,0|wty5jz,18,10,0|wty5k0,17,1,1|ww3xjz,17,1,1|ww3xk0,18,10,0|xcb9jz,18,10,0|xcb9k0,17,1,1|xe42vz,17,1,1|xe42w0,18,10,0|xubevz,18,10,0|xubew0,17,1,1|xwh6vz,17,1,1|xwh6w0,18,10,0|ycoivz,18,10,0|ycoiw0,17,1,1|yeuavz,17,1,1|yeuaw0,18,10,0|yv1mvz,18,10,0|yv1mw0,17,1,1|ywug7z,17,1,1|ywug80,18,10,0|zd1s7z,18,10,0|zd1s80,17,1,1|zf7k7z,17,1,1|zf7k80,18,10,0\",\"Africa/Ceuta|,0,19,0|-100edc0,8,1,0|-qyiys1,8,1,0|-qyiys0,9,10,1|-qqluw1,9,10,1|-qqluw0,8,1,0|-nusqs1,8,1,0|-nusqs0,9,10,1|-nm0001,9,10,1|-nm0000,8,1,0|-mt71g1,8,1,0|-mt71g0,9,10,1|-mkjuo1,9,10,1|-mkjuo0,8,1,0|-matxg1,8,1,0|-matxg0,9,10,1|-m1ts01,9,10,1|-m1ts00,8,1,0|-lrqtc1,8,1,0|-lrqtc0,9,10,1|-liqqo1,9,10,1|-liqqo0,8,1,0|-1chdc1,8,1,0|-1chdc0,9,10,1|-16c5g1,9,10,1|-16c5g0,8,1,0|2c3rzz,8,1,0|2c3s00,9,10,1|2fnh7z,9,10,1|2fnh80,8,1,0|3axhbz,8,1,0|3axhc0,9,10,1|3fnrvz,9,10,1|3fnrw0,8,1,0|3tpenz,8,1,0|3tpeo0,9,10,1|41f3vz,9,10,1|41f3w0,8,1,0|4e2qnz,8,1,0|4e2qo0,9,10,1|4hd6jz,9,10,1|4hd6k0,8,1,0|7evenz,8,1,0|7eveo0,10,10,0|8h59fz,10,10,0|8h59g0,11,11,1|8qiarz,11,11,1|8qias0,10,10,0|8zvc3z,10,10,0|8zvc40,11,11,1|998dfz,11,11,1|998dg0,10,10,0|9ilerz,10,10,0|9iles0,11,11,1|9ryg3z,11,11,1|9ryg40,10,10,0|a1bhfz,10,10,0|a1bhg0,11,11,1|aaoirz,11,11,1|aaois0,10,10,0|ak1k3z,10,10,0|ak1k40,11,11,1|atrk3z,11,11,1|atrk40,10,10,0|b34lfz,10,10,0|b34lg0,11,11,1|bchmrz,11,11,1|bchms0,10,10,0|bluo3z,10,10,0|bluo40,11,11,1|bv7pfz,11,11,1|bv7pg0,10,10,0|c4kqrz,10,10,0|c4kqs0,11,11,1|cdxs3z,11,11,1|cdxs40,10,10,0|cnatfz,10,10,0|cnatg0,11,11,1|cwnurz,11,11,1|cwnus0,10,10,0|d60w3z,10,10,0|d60w40,11,11,1|dfdxfz,11,11,1|dfdxg0,10,10,0|dp3xfz,10,10,0|dp3xg0,11,11,1|dzwtfz,11,11,1|dzwtg0,10,10,0|e7u03z,10,10,0|e7u040,11,11,1|eimw3z,11,11,1|eimw40,10,10,0|eqk2rz,10,10,0|eqk2s0,11,11,1|f1cyrz,11,11,1|f1cys0,10,10,0|f9a5fz,10,10,0|f9a5g0,11,11,1|fkg03z,11,11,1|fkg040,10,10,0|fs083z,10,10,0|fs0840,11,11,1|g362rz,11,11,1|g362s0,10,10,0|gaqarz,10,10,0|gaqas0,11,11,1|glw5fz,11,11,1|glw5g0,10,10,0|gttc3z,10,10,0|gttc40,11,11,1|h4m83z,11,11,1|h4m840,10,10,0|hcjerz,10,10,0|hcjes0,11,11,1|hncarz,11,11,1|hncas0,10,10,0|hv9hfz,10,10,0|hv9hg0,11,11,1|i6fc3z,11,11,1|i6fc40,10,10,0|idzk3z,10,10,0|idzk40,11,11,1|ip5erz,11,11,1|ip5es0,10,10,0|iwpmrz,10,10,0|iwpms0,11,11,1|j7vhfz,11,11,1|j7vhg0,10,10,0|jffpfz,10,10,0|jffpg0,11,11,1|jqlk3z,11,11,1|jqlk40,10,10,0|jyiqrz,10,10,0|jyiqs0,11,11,1|k9bmrz,11,11,1|k9bms0,10,10,0|kh8tfz,10,10,0|kh8tg0,11,11,1|ks1pfz,11,11,1|ks1pg0,10,10,0|kzyw3z,10,10,0|kzyw40,11,11,1|lb4qrz,11,11,1|lb4qs0,10,10,0|lioyrz,10,10,0|lioys0,11,11,1|ltutfz,11,11,1|ltutg0,10,10,0|m1f1fz,10,10,0|m1f1g0,11,11,1|mckw3z,11,11,1|mckw40,10,10,0|mki2rz,10,10,0|mki2s0,11,11,1|mvayrz,11,11,1|mvays0,10,10,0|n385fz,10,10,0|n385g0,11,11,1|ne11fz,11,11,1|ne11g0,10,10,0|nly83z,10,10,0|nly840,11,11,1|nwr43z,11,11,1|nwr440,10,10,0|o4oarz,10,10,0|o4oas0,11,11,1|ofu5fz,11,11,1|ofu5g0,10,10,0|onedfz,10,10,0|onedg0,11,11,1|oyk83z,11,11,1|oyk840,10,10,0|p64g3z,10,10,0|p64g40,11,11,1|phaarz,11,11,1|phaas0,10,10,0|pp7hfz,10,10,0|pp7hg0,11,11,1|q00dfz,11,11,1|q00dg0,10,10,0|q7xk3z,10,10,0|q7xk40,11,11,1|qiqg3z,11,11,1|qiqg40,10,10,0|qqnmrz,10,10,0|qqnms0,11,11,1|r1thfz,11,11,1|r1thg0,10,10,0|r9dpfz,10,10,0|r9dpg0,11,11,1|rkjk3z,11,11,1|rkjk40,10,10,0|rs3s3z,10,10,0|rs3s40,11,11,1|s39mrz,11,11,1|s39ms0,10,10,0|sb6tfz,10,10,0|sb6tg0,11,11,1|slzpfz,11,11,1|slzpg0,10,10,0|stww3z,10,10,0|stww40,11,11,1|t4ps3z,11,11,1|t4ps40,10,10,0|tcmyrz,10,10,0|tcmys0,11,11,1|tnfurz,11,11,1|tnfus0,10,10,0|tvd1fz,10,10,0|tvd1g0,11,11,1|u6iw3z,11,11,1|u6iw40,10,10,0|ue343z,10,10,0|ue3440,11,11,1|up8yrz,11,11,1|up8ys0,10,10,0|uwt6rz,10,10,0|uwt6s0,11,11,1|v7z1fz,11,11,1|v7z1g0,10,10,0|vfw83z,10,10,0|vfw840,11,11,1|vqp43z,11,11,1|vqp440,10,10,0|vymarz,10,10,0|vymas0,11,11,1|w9f6rz,11,11,1|w9f6s0,10,10,0|whcdfz,10,10,0|whcdg0,11,11,1|wsi83z,11,11,1|wsi840,10,10,0|x02g3z,10,10,0|x02g40,11,11,1|xb8arz,11,11,1|xb8as0,10,10,0|xisirz,10,10,0|xisis0,11,11,1|xtydfz,11,11,1|xtydg0,10,10,0|y1ilfz,10,10,0|y1ilg0,11,11,1|ycog3z,11,11,1|ycog40,10,10,0|yklmrz,10,10,0|yklms0,11,11,1|yveirz,11,11,1|yveis0,10,10,0|z3bpfz,10,10,0|z3bpg0,11,11,1|ze4lfz,11,11,1|ze4lg0,10,10,0\",\"Africa/Conakry|,0,12,0|-u9rgl4,1,1,0\",\"Africa/Dakar|,0,12,0|-u9rgl4,1,1,0\",\"Africa/Dar_es_Salaam|,0,4,0|-w6p5hg,4,5,0|-lnsey1,4,5,0|-lnsey0,5,6,0|-kvcdo1,5,6,0|-kvcdo0,4,5,0|-h80ka1,4,5,0|-h80ka0,6,7,0|-eb6ib1,6,7,0|-eb6ib0,5,6,0\",\"Africa/Djibouti|,0,4,0|-w6p5hg,4,5,0|-lnsey1,4,5,0|-lnsey0,5,6,0|-kvcdo1,5,6,0|-kvcdo0,4,5,0|-h80ka1,4,5,0|-h80ka0,6,7,0|-eb6ib1,6,7,0|-eb6ib0,5,6,0\",\"Africa/Douala|,0,13,0|-xnxnan,1,1,0|-w3k001,1,1,0|-w3k000,0,13,0|-t85smo,0,13,0|-t85smn,3,3,0|-q9qc21,3,3,0|-q9qc20,12,10,0\",\"Africa/El_Aaiun|,0,20,0|-isdxk0,13,15,0|3a22rz,13,15,0|3a22s0,17,1,0|3axhbz,17,1,0|3axhc0,18,10,1|3fnrvz,18,10,1|3fnrw0,17,1,0|3tpenz,17,1,0|3tpeo0,18,10,1|41f3vz,18,10,1|41f3w0,17,1,0|4e2qnz,17,1,0|4e2qo0,18,10,1|4hd6jz,18,10,1|4hd6k0,17,1,0|k1rbzz,17,1,0|k1rc00,18,10,1|k6hmjz,18,10,1|k6hmk0,17,1,0|kkj9bz,17,1,0|kkj9c0,18,10,1|kop6jz,18,10,1|kop6k0,17,1,0|l1rmnz,17,1,0|l1rmo0,18,10,1|l6t17z,18,10,1|l6t180,17,1,0|lj1unz,17,1,0|lj1uo0,18,10,1|lp657z,18,10,1|lp6580,17,1,0|m37xjz,17,1,0|m37xk0,18,10,1|m7fs7z,18,10,1|m7fs80,17,1,0|m916vz,17,1,0|m916w0,18,10,1|mb547z,18,10,1|mb5480,17,1,0|mly07z,17,1,0|mly080,18,10,1|mpjmvz,18,10,1|mpjmw0,17,1,0|mraljz,17,1,0|mralk0,18,10,1|mvb1jz,18,10,1|mvb1k0,17,1,0|n3887z,17,1,0|n38880,18,10,1|n7uw7z,18,10,1|n7uw80,17,1,0|n9npjz,17,1,0|n9npk0,18,10,1|ne147z,18,10,1|ne1480,17,1,0|nlyavz,17,1,0|nlyaw0,18,10,1|npww7z,18,10,1|npww80,17,1,0|nrppjz,17,1,0|nrppk0,18,10,1|nwr6vz,18,10,1|nwr6w0,17,1,0|o4odjz,17,1,0|o4odk0,18,10,1|o8a07z,18,10,1|o8a080,17,1,0|oa2tjz,17,1,0|oa2tk0,18,10,1|ofu87z,18,10,1|ofu880,17,1,0|oneg7z,17,1,0|oneg80,18,10,1|oqa5jz,18,10,1|oqa5k0,17,1,0|osfxjz,17,1,0|osfxk0,18,10,1|oykavz,18,10,1|oykaw0,17,1,0|p64ivz,17,1,0|p64iw0,18,10,1|p8n9jz,18,10,1|p8n9k0,17,1,0|pag2vz,17,1,0|pag2w0,18,10,1|phadjz,18,10,1|phadk0,18,10,0|pr0djz,18,10,0|pr0dk0,17,1,1|pst6vz,17,1,1|pst6w0,18,10,0|q90ivz,18,10,0|q90iw0,17,1,1|qb6avz,17,1,1|qb6aw0,18,10,0|qrdmvz,18,10,0|qrdmw0,17,1,1|qt6g7z,17,1,1|qt6g80,18,10,0|r9ds7z,18,10,0|r9ds80,17,1,1|rbjk7z,17,1,1|rbjk80,18,10,0|rrqw7z,18,10,0|rrqw80,17,1,1|rtwo7z,17,1,1|rtwo80,18,10,0|sa407z,18,10,0|sa4080,17,1,1|sbwtjz,17,1,1|sbwtk0,18,10,0|ss45jz,18,10,0|ss45k0,17,1,1|su9xjz,17,1,1|su9xk0,18,10,0|tah9jz,18,10,0|tah9k0,17,1,1|tca2vz,17,1,1|tca2w0,18,10,0|tsudjz,18,10,0|tsudk0,17,1,1|tun6vz,17,1,1|tun6w0,18,10,0|uauivz,18,10,0|uauiw0,17,1,1|ud0avz,17,1,1|ud0aw0,18,10,0|ut7mvz,18,10,0|ut7mw0,17,1,1|uv0g7z,17,1,1|uv0g80,18,10,0|vb7s7z,18,10,0|vb7s80,17,1,1|vddk7z,17,1,1|vddk80,18,10,0|vtkw7z,18,10,0|vtkw80,17,1,1|vvqo7z,17,1,1|vvqo80,18,10,0|wby07z,18,10,0|wby080,17,1,1|wdqtjz,17,1,1|wdqtk0,18,10,0|wty5jz,18,10,0|wty5k0,17,1,1|ww3xjz,17,1,1|ww3xk0,18,10,0|xcb9jz,18,10,0|xcb9k0,17,1,1|xe42vz,17,1,1|xe42w0,18,10,0|xubevz,18,10,0|xubew0,17,1,1|xwh6vz,17,1,1|xwh6w0,18,10,0|ycoivz,18,10,0|ycoiw0,17,1,1|yeuavz,17,1,1|yeuaw0,18,10,0|yv1mvz,18,10,0|yv1mw0,17,1,1|ywug7z,17,1,1|ywug80,18,10,0|zd1s7z,18,10,0|zd1s80,17,1,1|zf7k7z,17,1,1|zf7k80,18,10,0\",\"Africa/Freetown|,0,12,0|-u9rgl4,1,1,0\",\"Africa/Gaborone|,0,16,0|-yvtfd8,14,11,0\",\"Africa/Harare|,0,16,0|-yvtfd8,14,11,0\",\"Africa/Johannesburg|,0,21,0|-14nj6io,19,22,0|-yvtdi1,19,22,0|-yvtdi0,19,11,0|-e8lpc1,19,11,0|-e8lpc0,19,6,1|-dz8qs1,19,6,1|-dz8qs0,19,11,0|-dpvmo1,19,11,0|-dpvmo0,19,6,1|-dgio41,19,6,1|-dgio40,19,11,0\",\"Africa/Juba|,0,23,0|-kcrsis,14,11,0|662fz,14,11,0|662g0,20,6,1|er8zz,20,6,1|er900,14,11,0|ow53z,14,11,0|ow540,20,6,1|xj6bz,20,6,1|xj6c0,14,11,0|17px3z,14,11,0|17px40,20,6,1|1gcybz,20,6,1|1gcyc0,14,11,0|1qfzrz,14,11,0|1qfzs0,20,6,1|1z4vnz,20,6,1|1z4vo0,14,11,0|2962fz,14,11,0|2962g0,20,6,1|2hwszz,20,6,1|2hwt00,14,11,0|2rw53z,14,11,0|2rw540,20,6,1|30oqbz,20,6,1|30oqc0,14,11,0|3am7rz,14,11,0|3am7s0,20,6,1|3jiibz,20,6,1|3jiic0,14,11,0|3tcafz,14,11,0|3tcag0,20,6,1|42afnz,20,6,1|42afo0,14,11,0|4cfbrz,14,11,0|4cfbs0,20,6,1|4l2czz,20,6,1|4l2d00,14,11,0|4v5efz,14,11,0|4v5eg0,20,6,1|53uabz,20,6,1|53uac0,14,11,0|5dvh3z,14,11,0|5dvh40,20,6,1|5mo2bz,20,6,1|5mo2c0,14,11,0|5wljrz,14,11,0|5wljs0,20,6,1|65fznz,20,6,1|65fzo0,14,11,0|6fbmfz,14,11,0|6fbmg0,20,6,1|6o7wzz,20,6,1|6o7x00,14,11,0|6y1p3z,14,11,0|6y1p40,20,6,1|76zubz,20,6,1|76zuc0,14,11,0|7h4qfz,14,11,0|7h4qg0,20,6,1|7ptmbz,20,6,1|7ptmc0,14,11,0|7zut3z,14,11,0|7zut40,20,6,1|88ljnz,20,6,1|88ljo0,14,11,0|fodfrz,14,11,0|fodfs0,5,6,0|qntgzz,5,6,0|qnth00,14,11,0\",\"Africa/Kampala|,0,4,0|-w6p5hg,4,5,0|-lnsey1,4,5,0|-lnsey0,5,6,0|-kvcdo1,5,6,0|-kvcdo0,4,5,0|-h80ka1,4,5,0|-h80ka0,6,7,0|-eb6ib1,6,7,0|-eb6ib0,5,6,0\",\"Africa/Khartoum|,0,24,0|-kcrsow,14,11,0|662fz,14,11,0|662g0,20,6,1|er8zz,20,6,1|er900,14,11,0|ow53z,14,11,0|ow540,20,6,1|xj6bz,20,6,1|xj6c0,14,11,0|17px3z,14,11,0|17px40,20,6,1|1gcybz,20,6,1|1gcyc0,14,11,0|1qfzrz,14,11,0|1qfzs0,20,6,1|1z4vnz,20,6,1|1z4vo0,14,11,0|2962fz,14,11,0|2962g0,20,6,1|2hwszz,20,6,1|2hwt00,14,11,0|2rw53z,14,11,0|2rw540,20,6,1|30oqbz,20,6,1|30oqc0,14,11,0|3am7rz,14,11,0|3am7s0,20,6,1|3jiibz,20,6,1|3jiic0,14,11,0|3tcafz,14,11,0|3tcag0,20,6,1|42afnz,20,6,1|42afo0,14,11,0|4cfbrz,14,11,0|4cfbs0,20,6,1|4l2czz,20,6,1|4l2d00,14,11,0|4v5efz,14,11,0|4v5eg0,20,6,1|53uabz,20,6,1|53uac0,14,11,0|5dvh3z,14,11,0|5dvh40,20,6,1|5mo2bz,20,6,1|5mo2c0,14,11,0|5wljrz,14,11,0|5wljs0,20,6,1|65fznz,20,6,1|65fzo0,14,11,0|6fbmfz,14,11,0|6fbmg0,20,6,1|6o7wzz,20,6,1|6o7x00,14,11,0|6y1p3z,14,11,0|6y1p40,20,6,1|76zubz,20,6,1|76zuc0,14,11,0|7h4qfz,14,11,0|7h4qg0,20,6,1|7ptmbz,20,6,1|7ptmc0,14,11,0|7zut3z,14,11,0|7zut40,20,6,1|88ljnz,20,6,1|88ljo0,14,11,0|fodfrz,14,11,0|fodfs0,5,6,0|oypgzz,5,6,0|oyph00,14,11,0\",\"Africa/Kigali|,0,16,0|-yvtfd8,14,11,0\",\"Africa/Kinshasa|,0,13,0|-xnxnan,1,1,0|-w3k001,1,1,0|-w3k000,0,13,0|-t85smo,0,13,0|-t85smn,3,3,0|-q9qc21,3,3,0|-q9qc20,12,10,0\",\"Africa/Lagos|,0,13,0|-xnxnan,1,1,0|-w3k001,1,1,0|-w3k000,0,13,0|-t85smo,0,13,0|-t85smn,3,3,0|-q9qc21,3,3,0|-q9qc20,12,10,0\",\"Africa/Libreville|,0,13,0|-xnxnan,1,1,0|-w3k001,1,1,0|-w3k000,0,13,0|-t85smo,0,13,0|-t85smn,3,3,0|-q9qc21,3,3,0|-q9qc20,12,10,0\",\"Africa/Lome|,0,12,0|-u9rgl4,1,1,0\",\"Africa/Luanda|,0,13,0|-xnxnan,1,1,0|-w3k001,1,1,0|-w3k000,0,13,0|-t85smo,0,13,0|-t85smn,3,3,0|-q9qc21,3,3,0|-q9qc20,12,10,0\",\"Africa/Lubumbashi|,0,16,0|-yvtfd8,14,11,0\",\"Africa/Lusaka|,0,16,0|-yvtfd8,14,11,0\",\"Africa/Malabo|,0,13,0|-xnxnan,1,1,0|-w3k001,1,1,0|-w3k000,0,13,0|-t85smo,0,13,0|-t85smn,3,3,0|-q9qc21,3,3,0|-q9qc20,12,10,0\",\"Africa/Maputo|,0,16,0|-yvtfd8,14,11,0\",\"Africa/Maseru|,0,21,0|-14nj6io,19,22,0|-yvtdi1,19,22,0|-yvtdi0,19,11,0|-e8lpc1,19,11,0|-e8lpc0,19,6,1|-dz8qs1,19,6,1|-dz8qs0,19,11,0|-dpvmo1,19,11,0|-dpvmo0,19,6,1|-dgio41,19,6,1|-dgio40,19,11,0\",\"Africa/Mbabane|,0,21,0|-14nj6io,19,22,0|-yvtdi1,19,22,0|-yvtdi0,19,11,0|-e8lpc1,19,11,0|-e8lpc0,19,6,1|-dz8qs1,19,6,1|-dz8qs0,19,11,0|-dpvmo1,19,11,0|-dpvmo0,19,6,1|-dgio41,19,6,1|-dgio40,19,11,0\",\"Africa/Mogadishu|,0,4,0|-w6p5hg,4,5,0|-lnsey1,4,5,0|-lnsey0,5,6,0|-kvcdo1,5,6,0|-kvcdo0,4,5,0|-h80ka1,4,5,0|-h80ka0,6,7,0|-eb6ib1,6,7,0|-eb6ib0,5,6,0\",\"Africa/Monrovia|,0,25,0|-19xcbc4,21,25,0|-qj6zc5,21,25,0|-qj6zc4,21,26,0|11v0q5,21,26,0|11v0q6,1,1,0\",\"Africa/Nairobi|,0,4,0|-w6p5hg,4,5,0|-lnsey1,4,5,0|-lnsey0,5,6,0|-kvcdo1,5,6,0|-kvcdo0,4,5,0|-h80ka1,4,5,0|-h80ka0,6,7,0|-eb6ib1,6,7,0|-eb6ib0,5,6,0\",\"Africa/Ndjamena|,0,27,0|-u9rk4c,12,10,0|53sl7z,12,10,0|53sl80,22,11,1|5bavrz,22,11,1|5bavs0,12,10,0\",\"Africa/Niamey|,0,13,0|-xnxnan,1,1,0|-w3k001,1,1,0|-w3k000,0,13,0|-t85smo,0,13,0|-t85smn,3,3,0|-q9qc21,3,3,0|-q9qc20,12,10,0\",\"Africa/Nouakchott|,0,12,0|-u9rgl4,1,1,0\",\"Africa/Ouagadougou|,0,12,0|-u9rgl4,1,1,0\",\"Africa/Porto-Novo|,0,13,0|-xnxnan,1,1,0|-w3k001,1,1,0|-w3k000,0,13,0|-t85smo,0,13,0|-t85smn,3,3,0|-q9qc21,3,3,0|-q9qc20,12,10,0\",\"Africa/Sao_Tome|,0,28,0|-18vsjww,0,29,0|-u9rhc1,0,29,0|-u9rhc0,1,1,0|p1uqrz,1,1,0|p1uqs0,12,10,0|pkmo3z,12,10,0|pkmo40,1,1,0\",\"Africa/Tripoli|,0,30,0|-q3gfrw,10,10,0|-9ia581,10,10,0|-9ia580,11,11,1|-9e82w1,11,11,1|-9e82w0,10,10,0|-8gxp81,10,10,0|-8gxp80,11,11,1|-8cmdk1,11,11,1|-8cmdk0,10,10,0|-7fuo41,10,10,0|-7fuo40,11,11,1|-7b2iw1,11,11,1|-7b2iw0,10,10,0|-5qotg1,10,10,0|-5qotg0,15,11,0|69gifz,15,11,0|69gig0,10,10,0|6e397z,10,10,0|6e3980,11,11,1|6ni2fz,11,11,1|6ni2g0,10,10,0|6wv6jz,10,10,0|6wv6k0,11,11,1|769zrz,11,11,1|769zs0,10,10,0|7foyjz,10,10,0|7foyk0,11,11,1|7p3rrz,11,11,1|7p3rs0,10,10,0|7yq57z,10,10,0|7yq580,11,11,1|87vp3z,11,11,1|87vp40,10,10,0|8hed7z,10,10,0|8hed80,11,11,1|8qrbrz,11,11,1|8qrbs0,10,10,0|900qjz,10,10,0|900qk0,11,11,1|99fjrz,11,11,1|99fjs0,10,10,0|9iuijz,10,10,0|9iuik0,11,11,1|9s9brz,11,11,1|9s9bs0,10,10,0|a1mfvz,10,10,0|a1mfw0,11,11,1|ab193z,11,11,1|ab1940,10,10,0|am3h7z,10,10,0|am3h80,15,11,0|dyil3z,15,11,0|dyil40,10,10,0|e833vz,10,10,0|e833w0,11,11,1|ehhx3z,11,11,1|ehhx40,15,11,0|md8vzz,15,11,0|md8w00,10,10,0|mkeanz,10,10,0|mkeao0,11,11,1|mv76nz,11,11,1|mv76o0,15,11,0\",\"Africa/Tunis|,0,31,0|-1a9dr7w,7,9,0|-uozn3m,7,9,0|-uozn3l,10,10,0|-g12881,10,10,0|-g12880,11,11,1|-fpwdk1,11,11,1|-fpwdk0,10,10,0|-fkt1k1,10,10,0|-fkt1k0,11,11,1|-eqk5k1,11,11,1|-eqk5k0,10,10,0|-eimw41,10,10,0|-eimw40,11,11,1|-e6dzw1,11,11,1|-e6dzw0,10,10,0|-dytrw1,10,10,0|-dytrw0,11,11,1|-dxuo01,11,11,1|-dxuo00,10,10,0|-dxfrw1,10,10,0|-dxfrw0,11,11,1|-dp3uo1,11,11,1|-dp3uo0,10,10,0|-dfqqk1,10,10,0|-dfqqk0,11,11,1|-d62tk1,11,11,1|-d62tk0,10,10,0|-cx0nw1,10,10,0|-cx0nw0,11,11,1|-cofmw1,11,11,1|-cofmw0,10,10,0|3tnh7z,10,10,0|3tnh80,11,11,1|417p7z,11,11,1|417p80,10,10,0|4ch97z,10,10,0|4ch980,11,11,1|4kcl7z,11,11,1|4kcl80,10,10,0|9lzh7z,10,10,0|9lzh80,11,11,1|9ryajz,11,11,1|9ryak0,10,10,0|a1bbvz,10,10,0|a1bbw0,11,11,1|aaod7z,11,11,1|aaod80,10,10,0|alxx7z,10,10,0|alxx80,11,11,1|atrejz,11,11,1|atrek0,10,10,0|ifs7vz,10,10,0|ifs7w0,11,11,1|inlrzz,11,11,1|inls00,10,10,0|iwpmrz,10,10,0|iwpms0,11,11,1|j7vhfz,11,11,1|j7vhg0,10,10,0|jffpfz,10,10,0|jffpg0,11,11,1|jqlk3z,11,11,1|jqlk40,10,10,0|jyiqrz,10,10,0|jyiqs0,11,11,1|k9bmrz,11,11,1|k9bms0,10,10,0\",\"Africa/Windhoek|,0,32,0|-14nj4i0,23,22,0|-yvtdi1,23,22,0|-yvtdi0,19,11,0|-e8lpc1,19,11,0|-e8lpc0,19,6,1|-dz8qs1,19,6,1|-dz8qs0,19,11,0|ajtx3z,19,11,0|ajtx40,14,11,0|cmzh3z,14,11,0|cmzh40,12,10,1|cvkyrz,12,10,1|cvkys0,14,11,0|d6drzz,14,11,0|d6ds00,12,10,1|deb1fz,12,10,1|deb1g0,14,11,0|dpgtbz,14,11,0|dpgtc0,12,10,1|dx143z,12,10,1|dx1440,14,11,0|e86vzz,14,11,0|e86w00,12,10,1|eg45fz,12,10,1|eg45g0,14,11,0|eqwynz,14,11,0|eqwyo0,12,10,1|eyu83z,12,10,1|eyu840,14,11,0|f9n1bz,14,11,0|f9n1c0,12,10,1|fhkarz,12,10,1|fhkas0,14,11,0|fsd3zz,14,11,0|fsd400,12,10,1|g0adfz,12,10,1|g0adg0,14,11,0|gb36nz,14,11,0|gb36o0,12,10,1|gj0g3z,12,10,1|gj0g40,14,11,0|gu67zz,14,11,0|gu6800,12,10,1|h1qirz,12,10,1|h1qis0,14,11,0|hcwanz,14,11,0|hcwao0,12,10,1|hktk3z,12,10,1|hktk40,14,11,0|hvmdbz,14,11,0|hvmdc0,12,10,1|i3jmrz,12,10,1|i3jms0,14,11,0|iecfzz,14,11,0|iecg00,12,10,1|im9pfz,12,10,1|im9pg0,14,11,0|ix2inz,14,11,0|ix2io0,12,10,1|j4zs3z,12,10,1|j4zs40,14,11,0|jfslbz,14,11,0|jfslc0,12,10,1|jnpurz,12,10,1|jnpus0,14,11,0|jyvmnz,14,11,0|jyvmo0,12,10,1|k6sw3z,12,10,1|k6sw40,14,11,0|khlpbz,14,11,0|khlpc0,12,10,1|kpiyrz,12,10,1|kpiys0,14,11,0|l0brzz,14,11,0|l0bs00,12,10,1|l891fz,12,10,1|l891g0,14,11,0|lj1unz,14,11,0|lj1uo0,12,10,1|lqz43z,12,10,1|lqz440,14,11,0|m1rxbz,14,11,0|m1rxc0,12,10,1|m9p6rz,12,10,1|m9p6s0,14,11,0|mkuynz,14,11,0|mkuyo0,12,10,1|msf9fz,12,10,1|msf9g0,14,11,0|n3l1bz,14,11,0|n3l1c0,12,10,1|nbiarz,12,10,1|nbias0,14,11,0|nmb3zz,14,11,0|nmb400,12,10,1|nu8dfz,12,10,1|nu8dg0,14,11,0|o516nz,14,11,0|o516o0,12,10,1|ocyg3z,12,10,1|ocyg40,14,11,0|onr9bz,14,11,0|onr9c0,12,10,1|ovoirz,12,10,1|ovois0,14,11,0\",\"America/Adak|,0,33,0|-1hc7qjz,0,34,0|-1078omb,0,34,0|-1078oma,24,35,0|-ek1nw1,24,35,0|-ek1nw0,25,36,1|-cq2tg1,25,36,1|-cq2tg0,26,36,1|-cnomo1,26,36,1|-cnomo0,24,35,0|-1fq441,24,35,0|-1fq440,27,35,0|-cs3w1,27,35,0|-cs3w0,28,36,1|-3f5c1,28,36,1|-3f5c0,27,35,0|5xyrz,27,35,0|5xys0,28,36,1|faxbz,28,36,1|faxc0,27,35,0|oo1fz,27,35,0|oo1g0,28,36,1|ydynz,28,36,1|ydyo0,27,35,0|17r2rz,27,35,0|17r2s0,28,36,1|1h41bz,28,36,1|1h41c0,27,35,0|1qh5fz,27,35,0|1qh5g0,28,36,1|1zu3zz,28,36,1|1zu400,27,35,0|23ftfz,27,35,0|23ftg0,28,36,1|2ik6nz,28,36,1|2ik6o0,27,35,0|2oomrz,27,35,0|2ooms0,28,36,1|31a9bz,28,36,1|31a9c0,27,35,0|3andfz,27,35,0|3andg0,28,36,1|3kdanz,28,36,1|3kdao0,27,35,0|3tdg3z,27,35,0|3tdg40,28,36,1|433dbz,28,36,1|433dc0,27,35,0|4cghfz,27,35,0|4cghg0,28,36,1|4ltfzz,28,36,1|4ltg00,27,35,0|4v6k3z,27,35,0|4v6k40,28,36,1|54jinz,28,36,1|54jio0,27,35,0|5dwmrz,27,35,0|5dwms0,28,36,1|5n9lbz,28,36,1|5n9lc0,27,35,0|5wmpfz,27,35,0|5wmpg0,28,36,1|65znzz,28,36,1|65zo00,27,35,0|6fcs3z,27,35,0|6fcs40,28,36,1|6p2pbz,28,36,1|6p2pc0,27,35,0|6y2urz,27,35,0|6y2us0,28,36,1|77srzz,28,36,1|77ss00,29,36,0|79e13z,29,36,0|79e140,30,36,0|7h5tbz,30,36,0|7h5tc0,31,37,1|7qirvz,31,37,1|7qirw0,30,36,0|7zvvzz,30,36,0|7zvw00,31,37,1|898ujz,31,37,1|898uk0,30,36,0|8ilynz,30,36,0|8ilyo0,31,37,1|8ryx7z,31,37,1|8ryx80,30,36,0|9095bz,30,36,0|9095c0,31,37,1|9aozvz,31,37,1|9aozw0,30,36,0|9iz7zz,30,36,0|9iz800,31,37,1|9ts17z,31,37,1|9ts180,30,36,0|a1panz,30,36,0|a1pao0,31,37,1|aci3vz,31,37,1|aci3w0,30,36,0|akfdbz,30,36,0|akfdc0,31,37,1|av86jz,31,37,1|av86k0,30,36,0|b3ienz,30,36,0|b3ieo0,31,37,1|bdy97z,31,37,1|bdy980,30,36,0|bm8hbz,30,36,0|bm8hc0,31,37,1|bwobvz,31,37,1|bwobw0,30,36,0|c4yjzz,30,36,0|c4yk00,31,37,1|cfrd7z,31,37,1|cfrd80,30,36,0|cnomnz,30,36,0|cnomo0,31,37,1|cyhfvz,31,37,1|cyhfw0,30,36,0|d6epbz,30,36,0|d6epc0,31,37,1|dh7ijz,31,37,1|dh7ik0,30,36,0|dphqnz,30,36,0|dphqo0,31,37,1|dzxl7z,31,37,1|dzxl80,30,36,0|e87tbz,30,36,0|e87tc0,31,37,1|einnvz,31,37,1|einnw0,30,36,0|eqxvzz,30,36,0|eqxw00,31,37,1|f1dqjz,31,37,1|f1dqk0,30,36,0|f9nynz,30,36,0|f9nyo0,31,37,1|fkgrvz,31,37,1|fkgrw0,30,36,0|fse1bz,30,36,0|fse1c0,31,37,1|g36ujz,31,37,1|g36uk0,30,36,0|gb43zz,30,36,0|gb4400,31,37,1|glwx7z,31,37,1|glwx80,30,36,0|gu75bz,30,36,0|gu75c0,31,37,1|h4mzvz,31,37,1|h4mzw0,30,36,0|hcx7zz,30,36,0|hcx800,31,37,1|hnd2jz,31,37,1|hnd2k0,30,36,0|hvnanz,30,36,0|hvnao0,31,37,1|i6g3vz,31,37,1|i6g3w0,30,36,0|ieddbz,30,36,0|ieddc0,31,37,1|ip66jz,31,37,1|ip66k0,30,36,0|ix3fzz,30,36,0|ix3g00,31,37,1|j7w97z,31,37,1|j7w980,30,36,0|jeqmnz,30,36,0|jeqmo0,31,37,1|jqzajz,31,37,1|jqzak0,30,36,0|jxgpbz,30,36,0|jxgpc0,31,37,1|k9pd7z,31,37,1|k9pd80,30,36,0|kg6rzz,30,36,0|kg6s00,31,37,1|ksffvz,31,37,1|ksffw0,30,36,0|kz9tbz,30,36,0|kz9tc0,31,37,1|lbih7z,31,37,1|lbih80,30,36,0|lhzvzz,30,36,0|lhzw00,31,37,1|lu8jvz,31,37,1|lu8jw0,30,36,0|m0pynz,30,36,0|m0pyo0,31,37,1|mcymjz,31,37,1|mcymk0,30,36,0|mjg1bz,30,36,0|mjg1c0,31,37,1|mvop7z,31,37,1|mvop80,30,36,0|n263zz,30,36,0|n26400,31,37,1|neervz,31,37,1|neerw0,30,36,0|nkw6nz,30,36,0|nkw6o0,31,37,1|nx4ujz,31,37,1|nx4uk0,30,36,0|o3z7zz,30,36,0|o3z800,31,37,1|og7vvz,31,37,1|og7vw0,30,36,0|ompanz,30,36,0|ompao0,31,37,1|oyxyjz,31,37,1|oyxyk0,30,36,0|p5fdbz,30,36,0|p5fdc0,31,37,1|pho17z,31,37,1|pho180,30,36,0|po5fzz,30,36,0|po5g00,31,37,1|q0e3vz,31,37,1|q0e3w0,30,36,0|q6vinz,30,36,0|q6vio0,31,37,1|qj46jz,31,37,1|qj46k0,30,36,0|qpyjzz,30,36,0|qpyk00,31,37,1|r277vz,31,37,1|r277w0,30,36,0|r8omnz,30,36,0|r8omo0,31,37,1|rkxajz,31,37,1|rkxak0,30,36,0|rrepbz,30,36,0|rrepc0,31,37,1|s3nd7z,31,37,1|s3nd80,30,36,0|sa4rzz,30,36,0|sa4s00,31,37,1|smdfvz,31,37,1|smdfw0,30,36,0|ssuunz,30,36,0|ssuuo0,31,37,1|t53ijz,31,37,1|t53ik0,30,36,0|tbkxbz,30,36,0|tbkxc0,31,37,1|tntl7z,31,37,1|tntl80,30,36,0|tunynz,30,36,0|tunyo0,31,37,1|u6wmjz,31,37,1|u6wmk0,30,36,0|ude1bz,30,36,0|ude1c0,31,37,1|upmp7z,31,37,1|upmp80,30,36,0|uw43zz,30,36,0|uw4400,31,37,1|v8crvz,31,37,1|v8crw0,30,36,0|veu6nz,30,36,0|veu6o0,31,37,1|vr2ujz,31,37,1|vr2uk0,30,36,0|vxk9bz,30,36,0|vxk9c0,31,37,1|w9sx7z,31,37,1|w9sx80,30,36,0|wgnanz,30,36,0|wgnao0,31,37,1|wsvyjz,31,37,1|wsvyk0,30,36,0|wzddbz,30,36,0|wzddc0,31,37,1|xbm17z,31,37,1|xbm180,30,36,0|xi3fzz,30,36,0|xi3g00,31,37,1|xuc3vz,31,37,1|xuc3w0,30,36,0|y0tinz,30,36,0|y0tio0,31,37,1|yd26jz,31,37,1|yd26k0,30,36,0|yjjlbz,30,36,0|yjjlc0,31,37,1|yvs97z,31,37,1|yvs980,30,36,0|z29nzz,30,36,0|z29o00,31,37,1|zeibvz,31,37,1|zeibw0,30,36,0\",\"America/Anchorage|,0,38,0|-1hc7qjz,0,39,0|-1078tkp,0,39,0|-1078tko,32,36,0|-ek1qo1,32,36,0|-ek1qo0,33,37,1|-cq2tg1,33,37,1|-cq2tg0,34,37,1|-cnopg1,34,37,1|-cnopg0,32,36,0|-1fq6w1,32,36,0|-1fq6w0,29,36,0|-cs6o1,29,36,0|-cs6o0,35,37,1|-3f841,35,37,1|-3f840,29,36,0|5xvzz,29,36,0|5xw00,35,37,1|faujz,35,37,1|fauk0,29,36,0|onynz,29,36,0|onyo0,35,37,1|ydvvz,35,37,1|ydvw0,29,36,0|17qzzz,29,36,0|17r000,35,37,1|1h3yjz,35,37,1|1h3yk0,29,36,0|1qh2nz,29,36,0|1qh2o0,35,37,1|1zu17z,35,37,1|1zu180,29,36,0|23fqnz,29,36,0|23fqo0,35,37,1|2ik3vz,35,37,1|2ik3w0,29,36,0|2oojzz,29,36,0|2ook00,35,37,1|31a6jz,35,37,1|31a6k0,29,36,0|3ananz,29,36,0|3anao0,35,37,1|3kd7vz,35,37,1|3kd7w0,29,36,0|3tddbz,29,36,0|3tddc0,35,37,1|433ajz,35,37,1|433ak0,29,36,0|4cgenz,29,36,0|4cgeo0,35,37,1|4ltd7z,35,37,1|4ltd80,29,36,0|4v6hbz,29,36,0|4v6hc0,35,37,1|54jfvz,35,37,1|54jfw0,29,36,0|5dwjzz,29,36,0|5dwk00,35,37,1|5n9ijz,35,37,1|5n9ik0,29,36,0|5wmmnz,29,36,0|5wmmo0,35,37,1|65zl7z,35,37,1|65zl80,29,36,0|6fcpbz,29,36,0|6fcpc0,35,37,1|6p2mjz,35,37,1|6p2mk0,29,36,0|6y2rzz,29,36,0|6y2s00,35,37,1|77sp7z,35,37,1|77sp80,36,37,0|79dybz,36,37,0|79dyc0,37,37,0|7h5qjz,37,37,0|7h5qk0,38,40,1|7qip3z,38,40,1|7qip40,37,37,0|7zvt7z,37,37,0|7zvt80,38,40,1|898rrz,38,40,1|898rs0,37,37,0|8ilvvz,37,37,0|8ilvw0,38,40,1|8ryufz,38,40,1|8ryug0,37,37,0|9092jz,37,37,0|9092k0,38,40,1|9aox3z,38,40,1|9aox40,37,37,0|9iz57z,37,37,0|9iz580,38,40,1|9tryfz,38,40,1|9tryg0,37,37,0|a1p7vz,37,37,0|a1p7w0,38,40,1|aci13z,38,40,1|aci140,37,37,0|akfajz,37,37,0|akfak0,38,40,1|av83rz,38,40,1|av83s0,37,37,0|b3ibvz,37,37,0|b3ibw0,38,40,1|bdy6fz,38,40,1|bdy6g0,37,37,0|bm8ejz,37,37,0|bm8ek0,38,40,1|bwo93z,38,40,1|bwo940,37,37,0|c4yh7z,37,37,0|c4yh80,38,40,1|cfrafz,38,40,1|cfrag0,37,37,0|cnojvz,37,37,0|cnojw0,38,40,1|cyhd3z,38,40,1|cyhd40,37,37,0|d6emjz,37,37,0|d6emk0,38,40,1|dh7frz,38,40,1|dh7fs0,37,37,0|dphnvz,37,37,0|dphnw0,38,40,1|dzxifz,38,40,1|dzxig0,37,37,0|e87qjz,37,37,0|e87qk0,38,40,1|einl3z,38,40,1|einl40,37,37,0|eqxt7z,37,37,0|eqxt80,38,40,1|f1dnrz,38,40,1|f1dns0,37,37,0|f9nvvz,37,37,0|f9nvw0,38,40,1|fkgp3z,38,40,1|fkgp40,37,37,0|fsdyjz,37,37,0|fsdyk0,38,40,1|g36rrz,38,40,1|g36rs0,37,37,0|gb417z,37,37,0|gb4180,38,40,1|glwufz,38,40,1|glwug0,37,37,0|gu72jz,37,37,0|gu72k0,38,40,1|h4mx3z,38,40,1|h4mx40,37,37,0|hcx57z,37,37,0|hcx580,38,40,1|hnczrz,38,40,1|hnczs0,37,37,0|hvn7vz,37,37,0|hvn7w0,38,40,1|i6g13z,38,40,1|i6g140,37,37,0|iedajz,37,37,0|iedak0,38,40,1|ip63rz,38,40,1|ip63s0,37,37,0|ix3d7z,37,37,0|ix3d80,38,40,1|j7w6fz,38,40,1|j7w6g0,37,37,0|jeqjvz,37,37,0|jeqjw0,38,40,1|jqz7rz,38,40,1|jqz7s0,37,37,0|jxgmjz,37,37,0|jxgmk0,38,40,1|k9pafz,38,40,1|k9pag0,37,37,0|kg6p7z,37,37,0|kg6p80,38,40,1|ksfd3z,38,40,1|ksfd40,37,37,0|kz9qjz,37,37,0|kz9qk0,38,40,1|lbiefz,38,40,1|lbieg0,37,37,0|lhzt7z,37,37,0|lhzt80,38,40,1|lu8h3z,38,40,1|lu8h40,37,37,0|m0pvvz,37,37,0|m0pvw0,38,40,1|mcyjrz,38,40,1|mcyjs0,37,37,0|mjfyjz,37,37,0|mjfyk0,38,40,1|mvomfz,38,40,1|mvomg0,37,37,0|n2617z,37,37,0|n26180,38,40,1|neep3z,38,40,1|neep40,37,37,0|nkw3vz,37,37,0|nkw3w0,38,40,1|nx4rrz,38,40,1|nx4rs0,37,37,0|o3z57z,37,37,0|o3z580,38,40,1|og7t3z,38,40,1|og7t40,37,37,0|omp7vz,37,37,0|omp7w0,38,40,1|oyxvrz,38,40,1|oyxvs0,37,37,0|p5fajz,37,37,0|p5fak0,38,40,1|phnyfz,38,40,1|phnyg0,37,37,0|po5d7z,37,37,0|po5d80,38,40,1|q0e13z,38,40,1|q0e140,37,37,0|q6vfvz,37,37,0|q6vfw0,38,40,1|qj43rz,38,40,1|qj43s0,37,37,0|qpyh7z,37,37,0|qpyh80,38,40,1|r2753z,38,40,1|r27540,37,37,0|r8ojvz,37,37,0|r8ojw0,38,40,1|rkx7rz,38,40,1|rkx7s0,37,37,0|rremjz,37,37,0|rremk0,38,40,1|s3nafz,38,40,1|s3nag0,37,37,0|sa4p7z,37,37,0|sa4p80,38,40,1|smdd3z,38,40,1|smdd40,37,37,0|ssurvz,37,37,0|ssurw0,38,40,1|t53frz,38,40,1|t53fs0,37,37,0|tbkujz,37,37,0|tbkuk0,38,40,1|tntifz,38,40,1|tntig0,37,37,0|tunvvz,37,37,0|tunvw0,38,40,1|u6wjrz,38,40,1|u6wjs0,37,37,0|uddyjz,37,37,0|uddyk0,38,40,1|upmmfz,38,40,1|upmmg0,37,37,0|uw417z,37,37,0|uw4180,38,40,1|v8cp3z,38,40,1|v8cp40,37,37,0|veu3vz,37,37,0|veu3w0,38,40,1|vr2rrz,38,40,1|vr2rs0,37,37,0|vxk6jz,37,37,0|vxk6k0,38,40,1|w9sufz,38,40,1|w9sug0,37,37,0|wgn7vz,37,37,0|wgn7w0,38,40,1|wsvvrz,38,40,1|wsvvs0,37,37,0|wzdajz,37,37,0|wzdak0,38,40,1|xblyfz,38,40,1|xblyg0,37,37,0|xi3d7z,37,37,0|xi3d80,38,40,1|xuc13z,38,40,1|xuc140,37,37,0|y0tfvz,37,37,0|y0tfw0,38,40,1|yd23rz,38,40,1|yd23s0,37,37,0|yjjijz,37,37,0|yjjik0,38,40,1|yvs6fz,38,40,1|yvs6g0,37,37,0|z29l7z,37,37,0|z29l80,38,40,1|zei93z,38,40,1|zei940,37,37,0\",\"America/Anguilla|,0,41,0|-u6m79w,32,42,0\",\"America/Antigua|,0,41,0|-u6m79w,32,42,0\",\"America/Araguaina|,0,43,0|-t85j2o,39,44,0|-jylag1,39,44,0|-jylag0,40,45,1|-jpb141,40,45,1|-jpb140,39,44,0|-jfsd01,39,44,0|-jfsd00,40,45,1|-j6j3s1,40,45,1|-j6j3s0,39,44,0|-ahcyc1,39,44,0|-ahcyc0,40,45,1|-aad3o1,40,45,1|-aad3o0,39,44,0|-9yl101,39,44,0|-9yl100,40,45,1|-9sd141,40,45,1|-9sd140,39,44,0|-9ft3o1,39,44,0|-9ft3o0,40,45,1|-99j941,40,45,1|-99j940,39,44,0|-8wzbo1,39,44,0|-8wzbo0,40,45,1|-8scqg1,40,45,1|-8scqg0,39,44,0|-35xmc1,39,44,0|-35xmc0,40,45,1|-31nzs1,40,45,1|-31nzs0,39,44,0|-2kdp01,39,44,0|-2kdp00,40,45,1|-2hcig1,40,45,1|-2hcig0,39,44,0|-24qqc1,39,44,0|-24qqc0,40,45,1|-204541,40,45,1|-204540,39,44,0|-1nid01,39,44,0|-1nid00,40,45,1|-1hc7s1,40,45,1|-1hc7s0,39,44,0|-14qfo1,39,44,0|-14qfo0,40,45,1|-yifs1,40,45,1|-yifs0,39,44,0|89jcbz,39,44,0|89jcc0,40,45,1|8gdk7z,40,45,1|8gdk80,39,44,0|8rwgbz,39,44,0|8rwgc0,40,45,1|8xns7z,40,45,1|8xns80,39,44,0|9aodnz,39,44,0|9aodo0,40,45,1|9g2qvz,40,45,1|9g2qw0,39,44,0|9t1hnz,39,44,0|9t1ho0,40,45,1|9yfuvz,40,45,1|9yfuw0,39,44,0|abrkbz,39,44,0|abrkc0,40,45,1|ahvuvz,40,45,1|ahvuw0,39,44,0|dggyzz,39,44,0|dggz00,40,45,1|dml9jz,40,45,1|dml9k0,39,44,0|dyu2zz,39,44,0|dyu300,40,45,1|e5oavz,40,45,1|e5oaw0,39,44,0|ehm0bz,39,44,0|ehm0c0,40,45,1|ep4avz,40,45,1|ep4aw0,39,44,0|f0n6zz,39,44,0|f0n700,40,45,1|f7hevz,40,45,1|f7hew0,39,44,0|fj0azz,39,44,0|fj0b00,40,45,1|fqkg7z,40,45,1|fqkg80,39,44,0|g23cbz,39,44,0|g23cc0,40,45,1|g8xk7z,40,45,1|g8xk80,39,44,0|gl6dnz,39,44,0|gl6do0,40,45,1|grnmvz,40,45,1|grnmw0,39,44,0|h4zcbz,39,44,0|h4zcc0,40,45,1|hadpjz,40,45,1|hadpk0,39,44,0|mc82zz,39,44,0|mc8300,40,45,1|micdjz,40,45,1|micdk0,39,44,0\",\"America/Argentina/Buenos_Aires|,0,46,0|-138aaic,41,47,0|-px7ys1,41,47,0|-px7ys0,42,42,0|-kecq81,42,42,0|-kecq80,39,44,1|-k84qc1,39,44,1|-k84qc0,42,42,0|-jxzu81,42,42,0|-jxzu80,39,44,1|-jqwd01,39,44,1|-jqwd00,42,42,0|-jeakw1,42,42,0|-jeakw0,39,44,1|-j84fo1,39,44,1|-j84fo0,42,42,0|-ivink1,42,42,0|-ivink0,39,44,1|-ipcic1,39,44,1|-ipcic0,42,42,0|-icqq81,42,42,0|-icqq80,39,44,1|-i6kl01,39,44,1|-i6kl00,42,42,0|-htysw1,42,42,0|-htysw0,39,44,1|-hnqt01,39,44,1|-hnqt00,42,42,0|-hb50w1,42,42,0|-hb50w0,39,44,1|-h4yvo1,39,44,1|-h4yvo0,42,42,0|-gsd3k1,42,42,0|-gsd3k0,39,44,1|-gm6yc1,39,44,1|-gm6yc0,42,42,0|-g9l681,42,42,0|-g9l680,39,44,1|-g3f101,39,44,1|-g3f100,42,42,0|-fqt8w1,42,42,0|-fqt8w0,39,44,1|-fkl901,39,44,1|-fkl900,42,42,0|-feb8w1,42,42,0|-feb8w0,39,44,1|-ewd101,39,44,1|-ewd100,42,42,0|-eq30w1,42,42,0|-eq30w0,39,44,1|-dse501,39,44,1|-dse500,42,42,0|-doj681,42,42,0|-doj680,39,44,1|-cfvuc1,39,44,1|-cfvuc0,42,42,0|-c4vgw1,42,42,0|-c4vgw0,39,44,1|-39hec1,39,44,1|-39hec0,42,42,0|-35mfk1,42,42,0|-35mfk0,39,44,1|-31nx01,39,44,1|-31nx00,42,42,0|-2pxm81,42,42,0|-2pxm80,39,44,1|-2ivzo1,39,44,1|-2ivzo0,42,42,0|-275ow1,42,42,0|-275ow0,39,44,1|-2042c1,39,44,1|-2042c0,42,42,0|-1odrk1,42,42,0|-1odrk0,39,44,1|-1fovo1,39,44,1|-1fovo0,42,42,0|-16brk1,42,42,0|-16brk0,39,44,1|-wluc1,39,44,1|-wluc0,42,42,0|-n8q81,42,42,0|-n8q80,39,44,1|-dvro1,39,44,1|-dvro0,42,42,0|-4ink1,42,42,0|-4ink0,39,44,0|24aizz,39,44,0|24aj00,40,45,1|29bxjz,40,45,1|29bxk0,39,44,0|9veobz,39,44,0|9veoc0,40,45,1|a08o7z,40,45,1|a08o80,39,44,0|abrkbz,39,44,0|abrkc0,40,45,1|aiyqvz,40,45,1|aiyqw0,39,44,0|auulnz,39,44,0|auulo0,40,45,1|b1otjz,40,45,1|b1otk0,39,44,0|bdkobz,39,44,0|bdkoc0,40,45,1|bkew7z,40,45,1|bkew80,39,44,0|bwaqzz,39,44,0|bwar00,40,45,1|c3hxjz,40,45,1|c3hxk0,39,44,0|fj0azz,39,44,0|fj0b00,39,44,1|fqtsbz,39,44,1|fqtsc0,39,44,0|jtudnz,39,44,0|jtudo0,40,45,1|jxsw7z,40,45,1|jxsw80,39,44,0|k8ytnz,39,44,0|k8yto0,40,45,1|kgiyvz,40,45,1|kgiyw0,39,44,0\",\"America/Argentina/Catamarca|,0,48,0|-138a95g,41,47,0|-px7ys1,41,47,0|-px7ys0,42,42,0|-kecq81,42,42,0|-kecq80,39,44,1|-k84qc1,39,44,1|-k84qc0,42,42,0|-jxzu81,42,42,0|-jxzu80,39,44,1|-jqwd01,39,44,1|-jqwd00,42,42,0|-jeakw1,42,42,0|-jeakw0,39,44,1|-j84fo1,39,44,1|-j84fo0,42,42,0|-ivink1,42,42,0|-ivink0,39,44,1|-ipcic1,39,44,1|-ipcic0,42,42,0|-icqq81,42,42,0|-icqq80,39,44,1|-i6kl01,39,44,1|-i6kl00,42,42,0|-htysw1,42,42,0|-htysw0,39,44,1|-hnqt01,39,44,1|-hnqt00,42,42,0|-hb50w1,42,42,0|-hb50w0,39,44,1|-h4yvo1,39,44,1|-h4yvo0,42,42,0|-gsd3k1,42,42,0|-gsd3k0,39,44,1|-gm6yc1,39,44,1|-gm6yc0,42,42,0|-g9l681,42,42,0|-g9l680,39,44,1|-g3f101,39,44,1|-g3f100,42,42,0|-fqt8w1,42,42,0|-fqt8w0,39,44,1|-fkl901,39,44,1|-fkl900,42,42,0|-feb8w1,42,42,0|-feb8w0,39,44,1|-ewd101,39,44,1|-ewd100,42,42,0|-eq30w1,42,42,0|-eq30w0,39,44,1|-dse501,39,44,1|-dse500,42,42,0|-doj681,42,42,0|-doj680,39,44,1|-cfvuc1,39,44,1|-cfvuc0,42,42,0|-c4vgw1,42,42,0|-c4vgw0,39,44,1|-39hec1,39,44,1|-39hec0,42,42,0|-35mfk1,42,42,0|-35mfk0,39,44,1|-31nx01,39,44,1|-31nx00,42,42,0|-2pxm81,42,42,0|-2pxm80,39,44,1|-2ivzo1,39,44,1|-2ivzo0,42,42,0|-275ow1,42,42,0|-275ow0,39,44,1|-2042c1,39,44,1|-2042c0,42,42,0|-1odrk1,42,42,0|-1odrk0,39,44,1|-1fovo1,39,44,1|-1fovo0,42,42,0|-16brk1,42,42,0|-16brk0,39,44,1|-wluc1,39,44,1|-wluc0,42,42,0|-n8q81,42,42,0|-n8q80,39,44,1|-dvro1,39,44,1|-dvro0,42,42,0|-4ink1,42,42,0|-4ink0,39,44,0|24aizz,39,44,0|24aj00,40,45,1|29bxjz,40,45,1|29bxk0,39,44,0|9veobz,39,44,0|9veoc0,40,45,1|a08o7z,40,45,1|a08o80,39,44,0|abrkbz,39,44,0|abrkc0,40,45,1|aiyqvz,40,45,1|aiyqw0,39,44,0|auulnz,39,44,0|auulo0,40,45,1|b1otjz,40,45,1|b1otk0,42,42,0|bdkr3z,42,42,0|bdkr40,40,45,1|bkew7z,40,45,1|bkew80,39,44,0|bwaqzz,39,44,0|bwar00,40,45,1|c3hxjz,40,45,1|c3hxk0,39,44,0|fj0azz,39,44,0|fj0b00,39,44,1|fqtsbz,39,44,1|fqtsc0,39,44,0|hym0bz,39,44,0|hym0c0,42,42,0|hzl9rz,42,42,0|hzl9s0,39,44,0|jtudnz,39,44,0|jtudo0,40,45,1|jxsw7z,40,45,1|jxsw80,39,44,0\",\"America/Argentina/Cordoba|,0,47,0|-138a9g0,41,47,0|-px7ys1,41,47,0|-px7ys0,42,42,0|-kecq81,42,42,0|-kecq80,39,44,1|-k84qc1,39,44,1|-k84qc0,42,42,0|-jxzu81,42,42,0|-jxzu80,39,44,1|-jqwd01,39,44,1|-jqwd00,42,42,0|-jeakw1,42,42,0|-jeakw0,39,44,1|-j84fo1,39,44,1|-j84fo0,42,42,0|-ivink1,42,42,0|-ivink0,39,44,1|-ipcic1,39,44,1|-ipcic0,42,42,0|-icqq81,42,42,0|-icqq80,39,44,1|-i6kl01,39,44,1|-i6kl00,42,42,0|-htysw1,42,42,0|-htysw0,39,44,1|-hnqt01,39,44,1|-hnqt00,42,42,0|-hb50w1,42,42,0|-hb50w0,39,44,1|-h4yvo1,39,44,1|-h4yvo0,42,42,0|-gsd3k1,42,42,0|-gsd3k0,39,44,1|-gm6yc1,39,44,1|-gm6yc0,42,42,0|-g9l681,42,42,0|-g9l680,39,44,1|-g3f101,39,44,1|-g3f100,42,42,0|-fqt8w1,42,42,0|-fqt8w0,39,44,1|-fkl901,39,44,1|-fkl900,42,42,0|-feb8w1,42,42,0|-feb8w0,39,44,1|-ewd101,39,44,1|-ewd100,42,42,0|-eq30w1,42,42,0|-eq30w0,39,44,1|-dse501,39,44,1|-dse500,42,42,0|-doj681,42,42,0|-doj680,39,44,1|-cfvuc1,39,44,1|-cfvuc0,42,42,0|-c4vgw1,42,42,0|-c4vgw0,39,44,1|-39hec1,39,44,1|-39hec0,42,42,0|-35mfk1,42,42,0|-35mfk0,39,44,1|-31nx01,39,44,1|-31nx00,42,42,0|-2pxm81,42,42,0|-2pxm80,39,44,1|-2ivzo1,39,44,1|-2ivzo0,42,42,0|-275ow1,42,42,0|-275ow0,39,44,1|-2042c1,39,44,1|-2042c0,42,42,0|-1odrk1,42,42,0|-1odrk0,39,44,1|-1fovo1,39,44,1|-1fovo0,42,42,0|-16brk1,42,42,0|-16brk0,39,44,1|-wluc1,39,44,1|-wluc0,42,42,0|-n8q81,42,42,0|-n8q80,39,44,1|-dvro1,39,44,1|-dvro0,42,42,0|-4ink1,42,42,0|-4ink0,39,44,0|24aizz,39,44,0|24aj00,40,45,1|29bxjz,40,45,1|29bxk0,39,44,0|9veobz,39,44,0|9veoc0,40,45,1|a08o7z,40,45,1|a08o80,39,44,0|abrkbz,39,44,0|abrkc0,40,45,1|aiyqvz,40,45,1|aiyqw0,39,44,0|auulnz,39,44,0|auulo0,40,45,1|b1otjz,40,45,1|b1otk0,42,42,0|bdkr3z,42,42,0|bdkr40,40,45,1|bkew7z,40,45,1|bkew80,39,44,0|bwaqzz,39,44,0|bwar00,40,45,1|c3hxjz,40,45,1|c3hxk0,39,44,0|fj0azz,39,44,0|fj0b00,39,44,1|fqtsbz,39,44,1|fqtsc0,39,44,0|jtudnz,39,44,0|jtudo0,40,45,1|jxsw7z,40,45,1|jxsw80,39,44,0|k8ytnz,39,44,0|k8yto0,40,45,1|kgiyvz,40,45,1|kgiyw0,39,44,0\",\"America/Argentina/Jujuy|,0,49,0|-138a98o,41,47,0|-px7ys1,41,47,0|-px7ys0,42,42,0|-kecq81,42,42,0|-kecq80,39,44,1|-k84qc1,39,44,1|-k84qc0,42,42,0|-jxzu81,42,42,0|-jxzu80,39,44,1|-jqwd01,39,44,1|-jqwd00,42,42,0|-jeakw1,42,42,0|-jeakw0,39,44,1|-j84fo1,39,44,1|-j84fo0,42,42,0|-ivink1,42,42,0|-ivink0,39,44,1|-ipcic1,39,44,1|-ipcic0,42,42,0|-icqq81,42,42,0|-icqq80,39,44,1|-i6kl01,39,44,1|-i6kl00,42,42,0|-htysw1,42,42,0|-htysw0,39,44,1|-hnqt01,39,44,1|-hnqt00,42,42,0|-hb50w1,42,42,0|-hb50w0,39,44,1|-h4yvo1,39,44,1|-h4yvo0,42,42,0|-gsd3k1,42,42,0|-gsd3k0,39,44,1|-gm6yc1,39,44,1|-gm6yc0,42,42,0|-g9l681,42,42,0|-g9l680,39,44,1|-g3f101,39,44,1|-g3f100,42,42,0|-fqt8w1,42,42,0|-fqt8w0,39,44,1|-fkl901,39,44,1|-fkl900,42,42,0|-feb8w1,42,42,0|-feb8w0,39,44,1|-ewd101,39,44,1|-ewd100,42,42,0|-eq30w1,42,42,0|-eq30w0,39,44,1|-dse501,39,44,1|-dse500,42,42,0|-doj681,42,42,0|-doj680,39,44,1|-cfvuc1,39,44,1|-cfvuc0,42,42,0|-c4vgw1,42,42,0|-c4vgw0,39,44,1|-39hec1,39,44,1|-39hec0,42,42,0|-35mfk1,42,42,0|-35mfk0,39,44,1|-31nx01,39,44,1|-31nx00,42,42,0|-2pxm81,42,42,0|-2pxm80,39,44,1|-2ivzo1,39,44,1|-2ivzo0,42,42,0|-275ow1,42,42,0|-275ow0,39,44,1|-2042c1,39,44,1|-2042c0,42,42,0|-1odrk1,42,42,0|-1odrk0,39,44,1|-1fovo1,39,44,1|-1fovo0,42,42,0|-16brk1,42,42,0|-16brk0,39,44,1|-wluc1,39,44,1|-wluc0,42,42,0|-n8q81,42,42,0|-n8q80,39,44,1|-dvro1,39,44,1|-dvro0,42,42,0|-4ink1,42,42,0|-4ink0,39,44,0|24aizz,39,44,0|24aj00,40,45,1|29bxjz,40,45,1|29bxk0,39,44,0|9veobz,39,44,0|9veoc0,40,45,1|a08o7z,40,45,1|a08o80,39,44,0|abrkbz,39,44,0|abrkc0,40,45,1|aiyqvz,40,45,1|aiyqw0,42,42,0|av7n3z,42,42,0|av7n40,39,44,1|b2etnz,39,44,1|b2eto0,42,42,0|bcutrz,42,42,0|bcuts0,40,45,1|bkew7z,40,45,1|bkew80,39,44,0|bwaqzz,39,44,0|bwar00,40,45,1|c3hxjz,40,45,1|c3hxk0,39,44,0|fj0azz,39,44,0|fj0b00,39,44,1|fqtsbz,39,44,1|fqtsc0,39,44,0|jtudnz,39,44,0|jtudo0,40,45,1|jxsw7z,40,45,1|jxsw80,39,44,0\",\"America/Argentina/La_Rioja|,0,50,0|-138a8yc,41,47,0|-px7ys1,41,47,0|-px7ys0,42,42,0|-kecq81,42,42,0|-kecq80,39,44,1|-k84qc1,39,44,1|-k84qc0,42,42,0|-jxzu81,42,42,0|-jxzu80,39,44,1|-jqwd01,39,44,1|-jqwd00,42,42,0|-jeakw1,42,42,0|-jeakw0,39,44,1|-j84fo1,39,44,1|-j84fo0,42,42,0|-ivink1,42,42,0|-ivink0,39,44,1|-ipcic1,39,44,1|-ipcic0,42,42,0|-icqq81,42,42,0|-icqq80,39,44,1|-i6kl01,39,44,1|-i6kl00,42,42,0|-htysw1,42,42,0|-htysw0,39,44,1|-hnqt01,39,44,1|-hnqt00,42,42,0|-hb50w1,42,42,0|-hb50w0,39,44,1|-h4yvo1,39,44,1|-h4yvo0,42,42,0|-gsd3k1,42,42,0|-gsd3k0,39,44,1|-gm6yc1,39,44,1|-gm6yc0,42,42,0|-g9l681,42,42,0|-g9l680,39,44,1|-g3f101,39,44,1|-g3f100,42,42,0|-fqt8w1,42,42,0|-fqt8w0,39,44,1|-fkl901,39,44,1|-fkl900,42,42,0|-feb8w1,42,42,0|-feb8w0,39,44,1|-ewd101,39,44,1|-ewd100,42,42,0|-eq30w1,42,42,0|-eq30w0,39,44,1|-dse501,39,44,1|-dse500,42,42,0|-doj681,42,42,0|-doj680,39,44,1|-cfvuc1,39,44,1|-cfvuc0,42,42,0|-c4vgw1,42,42,0|-c4vgw0,39,44,1|-39hec1,39,44,1|-39hec0,42,42,0|-35mfk1,42,42,0|-35mfk0,39,44,1|-31nx01,39,44,1|-31nx00,42,42,0|-2pxm81,42,42,0|-2pxm80,39,44,1|-2ivzo1,39,44,1|-2ivzo0,42,42,0|-275ow1,42,42,0|-275ow0,39,44,1|-2042c1,39,44,1|-2042c0,42,42,0|-1odrk1,42,42,0|-1odrk0,39,44,1|-1fovo1,39,44,1|-1fovo0,42,42,0|-16brk1,42,42,0|-16brk0,39,44,1|-wluc1,39,44,1|-wluc0,42,42,0|-n8q81,42,42,0|-n8q80,39,44,1|-dvro1,39,44,1|-dvro0,42,42,0|-4ink1,42,42,0|-4ink0,39,44,0|24aizz,39,44,0|24aj00,40,45,1|29bxjz,40,45,1|29bxk0,39,44,0|9veobz,39,44,0|9veoc0,40,45,1|a08o7z,40,45,1|a08o80,39,44,0|abrkbz,39,44,0|abrkc0,40,45,1|aiyqvz,40,45,1|aiyqw0,39,44,0|auulnz,39,44,0|auulo0,40,45,1|b1l47z,40,45,1|b1l480,42,42,0|b51cfz,42,42,0|b51cg0,39,44,0|bdkobz,39,44,0|bdkoc0,40,45,1|bkew7z,40,45,1|bkew80,39,44,0|bwaqzz,39,44,0|bwar00,40,45,1|c3hxjz,40,45,1|c3hxk0,39,44,0|fj0azz,39,44,0|fj0b00,39,44,1|fqtsbz,39,44,1|fqtsc0,39,44,0|hym0bz,39,44,0|hym0c0,42,42,0|hzl9rz,42,42,0|hzl9s0,39,44,0|jtudnz,39,44,0|jtudo0,40,45,1|jxsw7z,40,45,1|jxsw80,39,44,0\",\"America/Argentina/Mendoza|,0,51,0|-138a8l8,41,47,0|-px7ys1,41,47,0|-px7ys0,42,42,0|-kecq81,42,42,0|-kecq80,39,44,1|-k84qc1,39,44,1|-k84qc0,42,42,0|-jxzu81,42,42,0|-jxzu80,39,44,1|-jqwd01,39,44,1|-jqwd00,42,42,0|-jeakw1,42,42,0|-jeakw0,39,44,1|-j84fo1,39,44,1|-j84fo0,42,42,0|-ivink1,42,42,0|-ivink0,39,44,1|-ipcic1,39,44,1|-ipcic0,42,42,0|-icqq81,42,42,0|-icqq80,39,44,1|-i6kl01,39,44,1|-i6kl00,42,42,0|-htysw1,42,42,0|-htysw0,39,44,1|-hnqt01,39,44,1|-hnqt00,42,42,0|-hb50w1,42,42,0|-hb50w0,39,44,1|-h4yvo1,39,44,1|-h4yvo0,42,42,0|-gsd3k1,42,42,0|-gsd3k0,39,44,1|-gm6yc1,39,44,1|-gm6yc0,42,42,0|-g9l681,42,42,0|-g9l680,39,44,1|-g3f101,39,44,1|-g3f100,42,42,0|-fqt8w1,42,42,0|-fqt8w0,39,44,1|-fkl901,39,44,1|-fkl900,42,42,0|-feb8w1,42,42,0|-feb8w0,39,44,1|-ewd101,39,44,1|-ewd100,42,42,0|-eq30w1,42,42,0|-eq30w0,39,44,1|-dse501,39,44,1|-dse500,42,42,0|-doj681,42,42,0|-doj680,39,44,1|-cfvuc1,39,44,1|-cfvuc0,42,42,0|-c4vgw1,42,42,0|-c4vgw0,39,44,1|-39hec1,39,44,1|-39hec0,42,42,0|-35mfk1,42,42,0|-35mfk0,39,44,1|-31nx01,39,44,1|-31nx00,42,42,0|-2pxm81,42,42,0|-2pxm80,39,44,1|-2ivzo1,39,44,1|-2ivzo0,42,42,0|-275ow1,42,42,0|-275ow0,39,44,1|-2042c1,39,44,1|-2042c0,42,42,0|-1odrk1,42,42,0|-1odrk0,39,44,1|-1fovo1,39,44,1|-1fovo0,42,42,0|-16brk1,42,42,0|-16brk0,39,44,1|-wluc1,39,44,1|-wluc0,42,42,0|-n8q81,42,42,0|-n8q80,39,44,1|-dvro1,39,44,1|-dvro0,42,42,0|-4ink1,42,42,0|-4ink0,39,44,0|24aizz,39,44,0|24aj00,40,45,1|29bxjz,40,45,1|29bxk0,39,44,0|9veobz,39,44,0|9veoc0,40,45,1|a08o7z,40,45,1|a08o80,39,44,0|abrkbz,39,44,0|abrkc0,40,45,1|aiyqvz,40,45,1|aiyqw0,42,42,0|aujkfz,42,42,0|aujkg0,39,44,1|b1l6zz,39,44,1|b1l700,42,42,0|bdbhrz,42,42,0|bdbhs0,39,44,1|bkeyzz,39,44,1|bkez00,42,42,0|bwatrz,42,42,0|bwats0,40,45,1|c3hxjz,40,45,1|c3hxk0,39,44,0|fj0azz,39,44,0|fj0b00,39,44,1|fqtsbz,39,44,1|fqtsc0,39,44,0|hy5cbz,39,44,0|hy5cc0,42,42,0|i4mr3z,42,42,0|i4mr40,39,44,0|jtudnz,39,44,0|jtudo0,40,45,1|jxsw7z,40,45,1|jxsw80,39,44,0\",\"America/Argentina/Rio_Gallegos|,0,52,0|-138a8ik,41,47,0|-px7ys1,41,47,0|-px7ys0,42,42,0|-kecq81,42,42,0|-kecq80,39,44,1|-k84qc1,39,44,1|-k84qc0,42,42,0|-jxzu81,42,42,0|-jxzu80,39,44,1|-jqwd01,39,44,1|-jqwd00,42,42,0|-jeakw1,42,42,0|-jeakw0,39,44,1|-j84fo1,39,44,1|-j84fo0,42,42,0|-ivink1,42,42,0|-ivink0,39,44,1|-ipcic1,39,44,1|-ipcic0,42,42,0|-icqq81,42,42,0|-icqq80,39,44,1|-i6kl01,39,44,1|-i6kl00,42,42,0|-htysw1,42,42,0|-htysw0,39,44,1|-hnqt01,39,44,1|-hnqt00,42,42,0|-hb50w1,42,42,0|-hb50w0,39,44,1|-h4yvo1,39,44,1|-h4yvo0,42,42,0|-gsd3k1,42,42,0|-gsd3k0,39,44,1|-gm6yc1,39,44,1|-gm6yc0,42,42,0|-g9l681,42,42,0|-g9l680,39,44,1|-g3f101,39,44,1|-g3f100,42,42,0|-fqt8w1,42,42,0|-fqt8w0,39,44,1|-fkl901,39,44,1|-fkl900,42,42,0|-feb8w1,42,42,0|-feb8w0,39,44,1|-ewd101,39,44,1|-ewd100,42,42,0|-eq30w1,42,42,0|-eq30w0,39,44,1|-dse501,39,44,1|-dse500,42,42,0|-doj681,42,42,0|-doj680,39,44,1|-cfvuc1,39,44,1|-cfvuc0,42,42,0|-c4vgw1,42,42,0|-c4vgw0,39,44,1|-39hec1,39,44,1|-39hec0,42,42,0|-35mfk1,42,42,0|-35mfk0,39,44,1|-31nx01,39,44,1|-31nx00,42,42,0|-2pxm81,42,42,0|-2pxm80,39,44,1|-2ivzo1,39,44,1|-2ivzo0,42,42,0|-275ow1,42,42,0|-275ow0,39,44,1|-2042c1,39,44,1|-2042c0,42,42,0|-1odrk1,42,42,0|-1odrk0,39,44,1|-1fovo1,39,44,1|-1fovo0,42,42,0|-16brk1,42,42,0|-16brk0,39,44,1|-wluc1,39,44,1|-wluc0,42,42,0|-n8q81,42,42,0|-n8q80,39,44,1|-dvro1,39,44,1|-dvro0,42,42,0|-4ink1,42,42,0|-4ink0,39,44,0|24aizz,39,44,0|24aj00,40,45,1|29bxjz,40,45,1|29bxk0,39,44,0|9veobz,39,44,0|9veoc0,40,45,1|a08o7z,40,45,1|a08o80,39,44,0|abrkbz,39,44,0|abrkc0,40,45,1|aiyqvz,40,45,1|aiyqw0,39,44,0|auulnz,39,44,0|auulo0,40,45,1|b1otjz,40,45,1|b1otk0,39,44,0|bdkobz,39,44,0|bdkoc0,40,45,1|bkew7z,40,45,1|bkew80,39,44,0|bwaqzz,39,44,0|bwar00,40,45,1|c3hxjz,40,45,1|c3hxk0,39,44,0|fj0azz,39,44,0|fj0b00,39,44,1|fqtsbz,39,44,1|fqtsc0,39,44,0|hym0bz,39,44,0|hym0c0,42,42,0|hzl9rz,42,42,0|hzl9s0,39,44,0|jtudnz,39,44,0|jtudo0,40,45,1|jxsw7z,40,45,1|jxsw80,39,44,0\",\"America/Argentina/Salta|,0,53,0|-138a97w,41,47,0|-px7ys1,41,47,0|-px7ys0,42,42,0|-kecq81,42,42,0|-kecq80,39,44,1|-k84qc1,39,44,1|-k84qc0,42,42,0|-jxzu81,42,42,0|-jxzu80,39,44,1|-jqwd01,39,44,1|-jqwd00,42,42,0|-jeakw1,42,42,0|-jeakw0,39,44,1|-j84fo1,39,44,1|-j84fo0,42,42,0|-ivink1,42,42,0|-ivink0,39,44,1|-ipcic1,39,44,1|-ipcic0,42,42,0|-icqq81,42,42,0|-icqq80,39,44,1|-i6kl01,39,44,1|-i6kl00,42,42,0|-htysw1,42,42,0|-htysw0,39,44,1|-hnqt01,39,44,1|-hnqt00,42,42,0|-hb50w1,42,42,0|-hb50w0,39,44,1|-h4yvo1,39,44,1|-h4yvo0,42,42,0|-gsd3k1,42,42,0|-gsd3k0,39,44,1|-gm6yc1,39,44,1|-gm6yc0,42,42,0|-g9l681,42,42,0|-g9l680,39,44,1|-g3f101,39,44,1|-g3f100,42,42,0|-fqt8w1,42,42,0|-fqt8w0,39,44,1|-fkl901,39,44,1|-fkl900,42,42,0|-feb8w1,42,42,0|-feb8w0,39,44,1|-ewd101,39,44,1|-ewd100,42,42,0|-eq30w1,42,42,0|-eq30w0,39,44,1|-dse501,39,44,1|-dse500,42,42,0|-doj681,42,42,0|-doj680,39,44,1|-cfvuc1,39,44,1|-cfvuc0,42,42,0|-c4vgw1,42,42,0|-c4vgw0,39,44,1|-39hec1,39,44,1|-39hec0,42,42,0|-35mfk1,42,42,0|-35mfk0,39,44,1|-31nx01,39,44,1|-31nx00,42,42,0|-2pxm81,42,42,0|-2pxm80,39,44,1|-2ivzo1,39,44,1|-2ivzo0,42,42,0|-275ow1,42,42,0|-275ow0,39,44,1|-2042c1,39,44,1|-2042c0,42,42,0|-1odrk1,42,42,0|-1odrk0,39,44,1|-1fovo1,39,44,1|-1fovo0,42,42,0|-16brk1,42,42,0|-16brk0,39,44,1|-wluc1,39,44,1|-wluc0,42,42,0|-n8q81,42,42,0|-n8q80,39,44,1|-dvro1,39,44,1|-dvro0,42,42,0|-4ink1,42,42,0|-4ink0,39,44,0|24aizz,39,44,0|24aj00,40,45,1|29bxjz,40,45,1|29bxk0,39,44,0|9veobz,39,44,0|9veoc0,40,45,1|a08o7z,40,45,1|a08o80,39,44,0|abrkbz,39,44,0|abrkc0,40,45,1|aiyqvz,40,45,1|aiyqw0,39,44,0|auulnz,39,44,0|auulo0,40,45,1|b1otjz,40,45,1|b1otk0,42,42,0|bdkr3z,42,42,0|bdkr40,40,45,1|bkew7z,40,45,1|bkew80,39,44,0|bwaqzz,39,44,0|bwar00,40,45,1|c3hxjz,40,45,1|c3hxk0,39,44,0|fj0azz,39,44,0|fj0b00,39,44,1|fqtsbz,39,44,1|fqtsc0,39,44,0|jtudnz,39,44,0|jtudo0,40,45,1|jxsw7z,40,45,1|jxsw80,39,44,0\",\"America/Argentina/San_Juan|,0,54,0|-138a8n8,41,47,0|-px7ys1,41,47,0|-px7ys0,42,42,0|-kecq81,42,42,0|-kecq80,39,44,1|-k84qc1,39,44,1|-k84qc0,42,42,0|-jxzu81,42,42,0|-jxzu80,39,44,1|-jqwd01,39,44,1|-jqwd00,42,42,0|-jeakw1,42,42,0|-jeakw0,39,44,1|-j84fo1,39,44,1|-j84fo0,42,42,0|-ivink1,42,42,0|-ivink0,39,44,1|-ipcic1,39,44,1|-ipcic0,42,42,0|-icqq81,42,42,0|-icqq80,39,44,1|-i6kl01,39,44,1|-i6kl00,42,42,0|-htysw1,42,42,0|-htysw0,39,44,1|-hnqt01,39,44,1|-hnqt00,42,42,0|-hb50w1,42,42,0|-hb50w0,39,44,1|-h4yvo1,39,44,1|-h4yvo0,42,42,0|-gsd3k1,42,42,0|-gsd3k0,39,44,1|-gm6yc1,39,44,1|-gm6yc0,42,42,0|-g9l681,42,42,0|-g9l680,39,44,1|-g3f101,39,44,1|-g3f100,42,42,0|-fqt8w1,42,42,0|-fqt8w0,39,44,1|-fkl901,39,44,1|-fkl900,42,42,0|-feb8w1,42,42,0|-feb8w0,39,44,1|-ewd101,39,44,1|-ewd100,42,42,0|-eq30w1,42,42,0|-eq30w0,39,44,1|-dse501,39,44,1|-dse500,42,42,0|-doj681,42,42,0|-doj680,39,44,1|-cfvuc1,39,44,1|-cfvuc0,42,42,0|-c4vgw1,42,42,0|-c4vgw0,39,44,1|-39hec1,39,44,1|-39hec0,42,42,0|-35mfk1,42,42,0|-35mfk0,39,44,1|-31nx01,39,44,1|-31nx00,42,42,0|-2pxm81,42,42,0|-2pxm80,39,44,1|-2ivzo1,39,44,1|-2ivzo0,42,42,0|-275ow1,42,42,0|-275ow0,39,44,1|-2042c1,39,44,1|-2042c0,42,42,0|-1odrk1,42,42,0|-1odrk0,39,44,1|-1fovo1,39,44,1|-1fovo0,42,42,0|-16brk1,42,42,0|-16brk0,39,44,1|-wluc1,39,44,1|-wluc0,42,42,0|-n8q81,42,42,0|-n8q80,39,44,1|-dvro1,39,44,1|-dvro0,42,42,0|-4ink1,42,42,0|-4ink0,39,44,0|24aizz,39,44,0|24aj00,40,45,1|29bxjz,40,45,1|29bxk0,39,44,0|9veobz,39,44,0|9veoc0,40,45,1|a08o7z,40,45,1|a08o80,39,44,0|abrkbz,39,44,0|abrkc0,40,45,1|aiyqvz,40,45,1|aiyqw0,39,44,0|auulnz,39,44,0|auulo0,40,45,1|b1l47z,40,45,1|b1l480,42,42,0|b51cfz,42,42,0|b51cg0,39,44,0|bdkobz,39,44,0|bdkoc0,40,45,1|bkew7z,40,45,1|bkew80,39,44,0|bwaqzz,39,44,0|bwar00,40,45,1|c3hxjz,40,45,1|c3hxk0,39,44,0|fj0azz,39,44,0|fj0b00,39,44,1|fqtsbz,39,44,1|fqtsc0,39,44,0|hyk5nz,39,44,0|hyk5o0,42,42,0|i1e33z,42,42,0|i1e340,39,44,0|jtudnz,39,44,0|jtudo0,40,45,1|jxsw7z,40,45,1|jxsw80,39,44,0\",\"America/Argentina/San_Luis|,0,55,0|-138a91o,41,47,0|-px7ys1,41,47,0|-px7ys0,42,42,0|-kecq81,42,42,0|-kecq80,39,44,1|-k84qc1,39,44,1|-k84qc0,42,42,0|-jxzu81,42,42,0|-jxzu80,39,44,1|-jqwd01,39,44,1|-jqwd00,42,42,0|-jeakw1,42,42,0|-jeakw0,39,44,1|-j84fo1,39,44,1|-j84fo0,42,42,0|-ivink1,42,42,0|-ivink0,39,44,1|-ipcic1,39,44,1|-ipcic0,42,42,0|-icqq81,42,42,0|-icqq80,39,44,1|-i6kl01,39,44,1|-i6kl00,42,42,0|-htysw1,42,42,0|-htysw0,39,44,1|-hnqt01,39,44,1|-hnqt00,42,42,0|-hb50w1,42,42,0|-hb50w0,39,44,1|-h4yvo1,39,44,1|-h4yvo0,42,42,0|-gsd3k1,42,42,0|-gsd3k0,39,44,1|-gm6yc1,39,44,1|-gm6yc0,42,42,0|-g9l681,42,42,0|-g9l680,39,44,1|-g3f101,39,44,1|-g3f100,42,42,0|-fqt8w1,42,42,0|-fqt8w0,39,44,1|-fkl901,39,44,1|-fkl900,42,42,0|-feb8w1,42,42,0|-feb8w0,39,44,1|-ewd101,39,44,1|-ewd100,42,42,0|-eq30w1,42,42,0|-eq30w0,39,44,1|-dse501,39,44,1|-dse500,42,42,0|-doj681,42,42,0|-doj680,39,44,1|-cfvuc1,39,44,1|-cfvuc0,42,42,0|-c4vgw1,42,42,0|-c4vgw0,39,44,1|-39hec1,39,44,1|-39hec0,42,42,0|-35mfk1,42,42,0|-35mfk0,39,44,1|-31nx01,39,44,1|-31nx00,42,42,0|-2pxm81,42,42,0|-2pxm80,39,44,1|-2ivzo1,39,44,1|-2ivzo0,42,42,0|-275ow1,42,42,0|-275ow0,39,44,1|-2042c1,39,44,1|-2042c0,42,42,0|-1odrk1,42,42,0|-1odrk0,39,44,1|-1fovo1,39,44,1|-1fovo0,42,42,0|-16brk1,42,42,0|-16brk0,39,44,1|-wluc1,39,44,1|-wluc0,42,42,0|-n8q81,42,42,0|-n8q80,39,44,1|-dvro1,39,44,1|-dvro0,42,42,0|-4ink1,42,42,0|-4ink0,39,44,0|24aizz,39,44,0|24aj00,40,45,1|29bxjz,40,45,1|29bxk0,39,44,0|9veobz,39,44,0|9veoc0,40,45,1|a08o7z,40,45,1|a08o80,39,44,0|abrkbz,39,44,0|abrkc0,40,45,1|ajh9jz,40,45,1|ajh9k0,42,42,0|aujkfz,42,42,0|aujkg0,39,44,1|b1l6zz,39,44,1|b1l700,42,42,0|b6bn3z,42,42,0|b6bn40,39,44,0|fj0azz,39,44,0|fj0b00,39,44,1|fqtsbz,39,44,1|fqtsc0,39,44,0|hyk5nz,39,44,0|hyk5o0,42,42,0|i1e33z,42,42,0|i1e340,39,44,0|jtudnz,39,44,0|jtudo0,40,45,1|juz1jz,40,45,1|juz1k0,39,44,1|jxg0bz,39,44,1|jxg0c0,42,42,0|k8lxrz,42,42,0|k8lxs0,39,44,1|kg62zz,39,44,1|kg6300,42,42,0|krc0fz,42,42,0|krc0g0,39,44,0\",\"America/Argentina/Tucuman|,0,56,0|-138a998,41,47,0|-px7ys1,41,47,0|-px7ys0,42,42,0|-kecq81,42,42,0|-kecq80,39,44,1|-k84qc1,39,44,1|-k84qc0,42,42,0|-jxzu81,42,42,0|-jxzu80,39,44,1|-jqwd01,39,44,1|-jqwd00,42,42,0|-jeakw1,42,42,0|-jeakw0,39,44,1|-j84fo1,39,44,1|-j84fo0,42,42,0|-ivink1,42,42,0|-ivink0,39,44,1|-ipcic1,39,44,1|-ipcic0,42,42,0|-icqq81,42,42,0|-icqq80,39,44,1|-i6kl01,39,44,1|-i6kl00,42,42,0|-htysw1,42,42,0|-htysw0,39,44,1|-hnqt01,39,44,1|-hnqt00,42,42,0|-hb50w1,42,42,0|-hb50w0,39,44,1|-h4yvo1,39,44,1|-h4yvo0,42,42,0|-gsd3k1,42,42,0|-gsd3k0,39,44,1|-gm6yc1,39,44,1|-gm6yc0,42,42,0|-g9l681,42,42,0|-g9l680,39,44,1|-g3f101,39,44,1|-g3f100,42,42,0|-fqt8w1,42,42,0|-fqt8w0,39,44,1|-fkl901,39,44,1|-fkl900,42,42,0|-feb8w1,42,42,0|-feb8w0,39,44,1|-ewd101,39,44,1|-ewd100,42,42,0|-eq30w1,42,42,0|-eq30w0,39,44,1|-dse501,39,44,1|-dse500,42,42,0|-doj681,42,42,0|-doj680,39,44,1|-cfvuc1,39,44,1|-cfvuc0,42,42,0|-c4vgw1,42,42,0|-c4vgw0,39,44,1|-39hec1,39,44,1|-39hec0,42,42,0|-35mfk1,42,42,0|-35mfk0,39,44,1|-31nx01,39,44,1|-31nx00,42,42,0|-2pxm81,42,42,0|-2pxm80,39,44,1|-2ivzo1,39,44,1|-2ivzo0,42,42,0|-275ow1,42,42,0|-275ow0,39,44,1|-2042c1,39,44,1|-2042c0,42,42,0|-1odrk1,42,42,0|-1odrk0,39,44,1|-1fovo1,39,44,1|-1fovo0,42,42,0|-16brk1,42,42,0|-16brk0,39,44,1|-wluc1,39,44,1|-wluc0,42,42,0|-n8q81,42,42,0|-n8q80,39,44,1|-dvro1,39,44,1|-dvro0,42,42,0|-4ink1,42,42,0|-4ink0,39,44,0|24aizz,39,44,0|24aj00,40,45,1|29bxjz,40,45,1|29bxk0,39,44,0|9veobz,39,44,0|9veoc0,40,45,1|a08o7z,40,45,1|a08o80,39,44,0|abrkbz,39,44,0|abrkc0,40,45,1|aiyqvz,40,45,1|aiyqw0,39,44,0|auulnz,39,44,0|auulo0,40,45,1|b1otjz,40,45,1|b1otk0,42,42,0|bdkr3z,42,42,0|bdkr40,40,45,1|bkew7z,40,45,1|bkew80,39,44,0|bwaqzz,39,44,0|bwar00,40,45,1|c3hxjz,40,45,1|c3hxk0,39,44,0|fj0azz,39,44,0|fj0b00,39,44,1|fqtsbz,39,44,1|fqtsc0,39,44,0|hym0bz,39,44,0|hym0c0,42,42,0|hz8b3z,42,42,0|hz8b40,39,44,0|jtudnz,39,44,0|jtudo0,40,45,1|jxsw7z,40,45,1|jxsw80,39,44,0|k8ytnz,39,44,0|k8yto0,40,45,1|kgiyvz,40,45,1|kgiyw0,39,44,0\",\"America/Argentina/Ushuaia|,0,57,0|-138a8oo,41,47,0|-px7ys1,41,47,0|-px7ys0,42,42,0|-kecq81,42,42,0|-kecq80,39,44,1|-k84qc1,39,44,1|-k84qc0,42,42,0|-jxzu81,42,42,0|-jxzu80,39,44,1|-jqwd01,39,44,1|-jqwd00,42,42,0|-jeakw1,42,42,0|-jeakw0,39,44,1|-j84fo1,39,44,1|-j84fo0,42,42,0|-ivink1,42,42,0|-ivink0,39,44,1|-ipcic1,39,44,1|-ipcic0,42,42,0|-icqq81,42,42,0|-icqq80,39,44,1|-i6kl01,39,44,1|-i6kl00,42,42,0|-htysw1,42,42,0|-htysw0,39,44,1|-hnqt01,39,44,1|-hnqt00,42,42,0|-hb50w1,42,42,0|-hb50w0,39,44,1|-h4yvo1,39,44,1|-h4yvo0,42,42,0|-gsd3k1,42,42,0|-gsd3k0,39,44,1|-gm6yc1,39,44,1|-gm6yc0,42,42,0|-g9l681,42,42,0|-g9l680,39,44,1|-g3f101,39,44,1|-g3f100,42,42,0|-fqt8w1,42,42,0|-fqt8w0,39,44,1|-fkl901,39,44,1|-fkl900,42,42,0|-feb8w1,42,42,0|-feb8w0,39,44,1|-ewd101,39,44,1|-ewd100,42,42,0|-eq30w1,42,42,0|-eq30w0,39,44,1|-dse501,39,44,1|-dse500,42,42,0|-doj681,42,42,0|-doj680,39,44,1|-cfvuc1,39,44,1|-cfvuc0,42,42,0|-c4vgw1,42,42,0|-c4vgw0,39,44,1|-39hec1,39,44,1|-39hec0,42,42,0|-35mfk1,42,42,0|-35mfk0,39,44,1|-31nx01,39,44,1|-31nx00,42,42,0|-2pxm81,42,42,0|-2pxm80,39,44,1|-2ivzo1,39,44,1|-2ivzo0,42,42,0|-275ow1,42,42,0|-275ow0,39,44,1|-2042c1,39,44,1|-2042c0,42,42,0|-1odrk1,42,42,0|-1odrk0,39,44,1|-1fovo1,39,44,1|-1fovo0,42,42,0|-16brk1,42,42,0|-16brk0,39,44,1|-wluc1,39,44,1|-wluc0,42,42,0|-n8q81,42,42,0|-n8q80,39,44,1|-dvro1,39,44,1|-dvro0,42,42,0|-4ink1,42,42,0|-4ink0,39,44,0|24aizz,39,44,0|24aj00,40,45,1|29bxjz,40,45,1|29bxk0,39,44,0|9veobz,39,44,0|9veoc0,40,45,1|a08o7z,40,45,1|a08o80,39,44,0|abrkbz,39,44,0|abrkc0,40,45,1|aiyqvz,40,45,1|aiyqw0,39,44,0|auulnz,39,44,0|auulo0,40,45,1|b1otjz,40,45,1|b1otk0,39,44,0|bdkobz,39,44,0|bdkoc0,40,45,1|bkew7z,40,45,1|bkew80,39,44,0|bwaqzz,39,44,0|bwar00,40,45,1|c3hxjz,40,45,1|c3hxk0,39,44,0|fj0azz,39,44,0|fj0b00,39,44,1|fqtsbz,39,44,1|fqtsc0,39,44,0|hyiazz,39,44,0|hyib00,42,42,0|hzl9rz,42,42,0|hzl9s0,39,44,0|jtudnz,39,44,0|jtudo0,40,45,1|jxsw7z,40,45,1|jxsw80,39,44,0\",\"America/Aruba|,0,58,0|-u7lckd,43,59,0|-2lx4u1,43,59,0|-2lx4u0,32,42,0\",\"America/Asuncion|,0,60,0|-15r0ynk,44,60,0|-jy93zl,44,60,0|-jy93zk,42,42,0|1fnkfz,42,42,0|1fnkg0,39,44,0|27sgbz,39,44,0|27sgc0,42,42,0|2zzcfz,42,42,0|2zzcg0,39,44,1|37sqzz,39,44,1|37sr00,42,42,0|3it4fz,42,42,0|3it4g0,39,44,1|3qkobz,39,44,1|3qkoc0,42,42,0|41l1rz,42,42,0|41l1s0,39,44,1|49clnz,39,44,1|49clo0,42,42,0|4kcz3z,42,42,0|4kcz40,39,44,1|4tpxnz,39,44,1|4tpxo0,42,42,0|534wfz,42,42,0|534wg0,39,44,1|5cjpnz,39,44,1|5cjpo0,42,42,0|5lyofz,42,42,0|5lyog0,39,44,1|5vbmzz,39,44,1|5vbn00,42,42,0|64qlrz,42,42,0|64qls0,39,44,1|6e3kbz,39,44,1|6e3kc0,42,42,0|6nij3z,42,42,0|6nij40,39,44,1|6wvhnz,39,44,1|6wvho0,42,42,0|76agfz,42,42,0|76agg0,39,44,1|7fp9nz,39,44,1|7fp9o0,42,42,0|7p48fz,42,42,0|7p48g0,39,44,1|7yh6zz,39,44,1|7yh700,42,42,0|87w5rz,42,42,0|87w5s0,39,44,1|8h94bz,39,44,1|8h94c0,42,42,0|8qo33z,42,42,0|8qo340,39,44,1|9011nz,39,44,1|9011o0,42,42,0|99g0fz,42,42,0|99g0g0,39,44,1|9iutnz,39,44,1|9iuto0,42,42,0|9s9sfz,42,42,0|9s9sg0,39,44,1|a1mqzz,39,44,1|a1mr00,42,42,0|ac4lrz,42,42,0|ac4ls0,39,44,1|akeobz,39,44,1|akeoc0,42,42,0|attn3z,42,42,0|attn40,39,44,1|b36lnz,39,44,1|b36lo0,42,42,0|bcutrz,42,42,0|bcuts0,39,44,1|bkeyzz,39,44,1|bkez00,42,42,0|bvmr3z,42,42,0|bvmr40,39,44,1|c4qgbz,39,44,1|c4qgc0,42,42,0|ce79rz,42,42,0|ce79s0,39,44,1|clv4bz,39,44,1|clv4c0,42,42,0|cwz73z,42,42,0|cwz740,39,44,1|d4l6zz,39,44,1|d4l700,42,42,0|dfr4fz,42,42,0|dfr4g0,39,44,1|dnkizz,39,44,1|dnkj00,42,42,0|dyu5rz,42,42,0|dyu5s0,39,44,1|e61cbz,39,44,1|e61cc0,42,42,0|ehk8fz,42,42,0|ehk8g0,39,44,1|ep4dnz,39,44,1|ep4do0,42,42,0|f0ab3z,42,42,0|f0ab40,39,44,1|f87ezz,39,44,1|f87f00,42,42,0|fj0drz,42,42,0|fj0ds0,39,44,1|fqxhnz,39,44,1|fqxho0,42,42,0|g1qgfz,42,42,0|g1qgg0,39,44,1|g9nkbz,39,44,1|g9nkc0,42,42,0|gkthrz,42,42,0|gkths0,39,44,1|gu6gbz,39,44,1|gu6gc0,42,42,0|h1qr3z,42,42,0|h1qr40,39,44,1|hcwizz,39,44,1|hcwj00,42,42,0|hktsfz,42,42,0|hktsg0,39,44,1|hvmlnz,39,44,1|hvmlo0,42,42,0|i5pn3z,42,42,0|i5pn40,39,44,1|id9sbz,39,44,1|id9sc0,42,42,0|iofprz,42,42,0|iofps0,39,44,1|ivzuzz,39,44,1|ivzv00,42,42,0|j75sfz,42,42,0|j75sg0,39,44,1|jepxnz,39,44,1|jepxo0,42,42,0|jq8trz,42,42,0|jq8ts0,39,44,1|jxg0bz,39,44,1|jxg0c0,42,42,0|k8ywfz,42,42,0|k8ywg0,39,44,1|kg62zz,39,44,1|kg6300,42,42,0|kroz3z,42,42,0|kroz40,39,44,1|l0oyzz,39,44,1|l0oz00,42,42,0|l9p4fz,42,42,0|l9p4g0,39,44,1|ljf1nz,39,44,1|ljf1o0,42,42,0|lsf73z,42,42,0|lsf740,39,44,1|m254bz,39,44,1|m254c0,42,42,0|mbi8fz,42,42,0|mbi8g0,39,44,1|mk59nz,39,44,1|mk59o0,42,42,0|mu8b3z,42,42,0|mu8b40,39,44,1|n2vcbz,39,44,1|n2vcc0,42,42,0|ncydrz,42,42,0|ncyds0,39,44,1|nllezz,39,44,1|nllf00,42,42,0|nvogfz,42,42,0|nvogg0,39,44,1|o4ogbz,39,44,1|o4ogc0,42,42,0|oeej3z,42,42,0|oeej40,39,44,1|oneizz,39,44,1|onej00,42,42,0|ox4lrz,42,42,0|ox4ls0,39,44,1|p64lnz,39,44,1|p64lo0,42,42,0|pg7n3z,42,42,0|pg7n40,39,44,1|pouobz,39,44,1|pouoc0,42,42,0|pyxprz,42,42,0|pyxps0,39,44,1|q7kqzz,39,44,1|q7kr00,42,42,0|qhnsfz,42,42,0|qhnsg0,39,44,1|qqnsbz,39,44,1|qqnsc0,42,42,0|r0dv3z,42,42,0|r0dv40,39,44,1|r9duzz,39,44,1|r9dv00,42,42,0|rj3xrz,42,42,0|rj3xs0,39,44,1|rs3xnz,39,44,1|rs3xo0,42,42,0|s1u0fz,42,42,0|s1u0g0,39,44,1|sau0bz,39,44,1|sau0c0,42,42,0|skx1rz,42,42,0|skx1s0,39,44,1|stk2zz,39,44,1|stk300,42,42,0|t3n4fz,42,42,0|t3n4g0,39,44,1|tca5nz,39,44,1|tca5o0,42,42,0|tmd73z,42,42,0|tmd740,39,44,1|tvd6zz,39,44,1|tvd700,42,42,0|u539rz,42,42,0|u539s0,39,44,1|ue39nz,39,44,1|ue39o0,42,42,0|untcfz,42,42,0|untcg0,39,44,1|uwtcbz,39,44,1|uwtcc0,42,42,0|v6wdrz,42,42,0|v6wds0,39,44,1|vfjezz,39,44,1|vfjf00,42,42,0|vpmgfz,42,42,0|vpmgg0,39,44,1|vy9hnz,39,44,1|vy9ho0,42,42,0|w8cj3z,42,42,0|w8cj40,39,44,1|whcizz,39,44,1|whcj00,42,42,0|wr2lrz,42,42,0|wr2ls0,39,44,1|x02lnz,39,44,1|x02lo0,42,42,0|x9sofz,42,42,0|x9sog0,39,44,1|xisobz,39,44,1|xisoc0,42,42,0|xsir3z,42,42,0|xsir40,39,44,1|y1iqzz,39,44,1|y1ir00,42,42,0|yblsfz,42,42,0|yblsg0,39,44,1|yk8tnz,39,44,1|yk8to0,42,42,0|yubv3z,42,42,0|yubv40,39,44,1|z2ywbz,39,44,1|z2ywc0,42,42,0|zd1xrz,42,42,0|zd1xs0,39,44,1\",\"America/Atikokan|,0,61,0|-1353b18,45,62,0|-qzov41,45,62,0|-qzov40,46,63,1|-qplz81,46,63,1|-qplz80,45,62,0|-f9ofc1,45,62,0|-f9ofc0,46,63,1|-ek21s1,46,63,1|-ek21s0,47,63,1|-cq2tg1,47,63,1|-cq2tg0,48,63,1|-cnp0k1,48,63,1|-cnp0k0,49,63,0\",\"America/Bahia|,0,64,0|-t85kv8,39,44,0|-jylag1,39,44,0|-jylag0,40,45,1|-jpb141,40,45,1|-jpb140,39,44,0|-jfsd01,39,44,0|-jfsd00,40,45,1|-j6j3s1,40,45,1|-j6j3s0,39,44,0|-ahcyc1,39,44,0|-ahcyc0,40,45,1|-aad3o1,40,45,1|-aad3o0,39,44,0|-9yl101,39,44,0|-9yl100,40,45,1|-9sd141,40,45,1|-9sd140,39,44,0|-9ft3o1,39,44,0|-9ft3o0,40,45,1|-99j941,40,45,1|-99j940,39,44,0|-8wzbo1,39,44,0|-8wzbo0,40,45,1|-8scqg1,40,45,1|-8scqg0,39,44,0|-35xmc1,39,44,0|-35xmc0,40,45,1|-31nzs1,40,45,1|-31nzs0,39,44,0|-2kdp01,39,44,0|-2kdp00,40,45,1|-2hcig1,40,45,1|-2hcig0,39,44,0|-24qqc1,39,44,0|-24qqc0,40,45,1|-204541,40,45,1|-204540,39,44,0|-1nid01,39,44,0|-1nid00,40,45,1|-1hc7s1,40,45,1|-1hc7s0,39,44,0|-14qfo1,39,44,0|-14qfo0,40,45,1|-yifs1,40,45,1|-yifs0,39,44,0|89jcbz,39,44,0|89jcc0,40,45,1|8gdk7z,40,45,1|8gdk80,39,44,0|8rwgbz,39,44,0|8rwgc0,40,45,1|8xns7z,40,45,1|8xns80,39,44,0|9aodnz,39,44,0|9aodo0,40,45,1|9g2qvz,40,45,1|9g2qw0,39,44,0|9t1hnz,39,44,0|9t1ho0,40,45,1|9yfuvz,40,45,1|9yfuw0,39,44,0|abrkbz,39,44,0|abrkc0,40,45,1|ahvuvz,40,45,1|ahvuw0,39,44,0|auulnz,39,44,0|auulo0,40,45,1|b0yw7z,40,45,1|b0yw80,39,44,0|bdkobz,39,44,0|bdkoc0,40,45,1|bjc07z,40,45,1|bjc080,39,44,0|bwnpnz,39,44,0|bwnpo0,40,45,1|c1p47z,40,45,1|c1p480,39,44,0|cf0tnz,39,44,0|cf0to0,40,45,1|cli2vz,40,45,1|cli2w0,39,44,0|cxqwbz,39,44,0|cxqwc0,40,45,1|d485jz,40,45,1|d485k0,39,44,0|dggyzz,39,44,0|dggz00,40,45,1|dml9jz,40,45,1|dml9k0,39,44,0|dyu2zz,39,44,0|dyu300,40,45,1|e5oavz,40,45,1|e5oaw0,39,44,0|ehm0bz,39,44,0|ehm0c0,40,45,1|ep4avz,40,45,1|ep4aw0,39,44,0|f0n6zz,39,44,0|f0n700,40,45,1|f7hevz,40,45,1|f7hew0,39,44,0|fj0azz,39,44,0|fj0b00,40,45,1|fqkg7z,40,45,1|fqkg80,39,44,0|g23cbz,39,44,0|g23cc0,40,45,1|g8xk7z,40,45,1|g8xk80,39,44,0|gl6dnz,39,44,0|gl6do0,40,45,1|grnmvz,40,45,1|grnmw0,39,44,0|h4zcbz,39,44,0|h4zcc0,40,45,1|hadpjz,40,45,1|hadpk0,39,44,0|lt51nz,39,44,0|lt51o0,40,45,1|lzz9jz,40,45,1|lzz9k0,39,44,0\",\"America/Bahia_Banderas|,0,65,0|-p1u4k0,50,66,0|-m7mko1,50,66,0|-m7mko0,45,62,0|-kf67c1,45,62,0|-kf67c0,50,66,0|-k6j3c1,50,66,0|-k6j3c0,45,62,0|-jypm01,45,62,0|-jypm00,50,66,0|-jpan81,50,66,0|-jpan80,45,62,0|-eg9601,45,62,0|-eg9600,50,66,0|-axv381,50,66,0|-axv380,51,40,0|m7z,51,40,0|m80,50,66,0|dphibz,50,66,0|dphic0,52,62,1|dzxcvz,52,62,1|dzxcw0,50,66,0|e87kzz,50,66,0|e87l00,52,62,1|einfjz,52,62,1|einfk0,50,66,0|eqxnnz,50,66,0|eqxno0,52,62,1|f1di7z,52,62,1|f1di80,50,66,0|f9nqbz,50,66,0|f9nqc0,52,62,1|fkgjjz,52,62,1|fkgjk0,50,66,0|fsdszz,50,66,0|fsdt00,52,62,1|g36m7z,52,62,1|g36m80,50,66,0|gcwozz,50,66,0|gcwp00,52,62,1|gkgu7z,52,62,1|gkgu80,50,66,0|gu6wzz,50,66,0|gu6x00,52,62,1|h4mrjz,52,62,1|h4mrk0,50,66,0|hcwznz,50,66,0|hcwzo0,52,62,1|hncu7z,52,62,1|hncu80,50,66,0|hvn2bz,50,66,0|hvn2c0,52,62,1|i6fvjz,52,62,1|i6fvk0,50,66,0|ied4zz,50,66,0|ied500,52,62,1|ip5y7z,52,62,1|ip5y80,50,66,0|ix37nz,50,66,0|ix37o0,52,62,1|j7w0vz,52,62,1|j7w0w0,50,66,0|jftabz,50,66,0|jftac0,52,62,1|jqm3jz,52,62,1|jqm3k0,50,66,0|jywbnz,50,66,0|jywbo0,52,62,1|k9c67z,52,62,1|k9c680,50,66,0|khmebz,50,66,0|khmec0,52,62,1|ks28vz,52,62,1|ks28w0,50,66,0|l0cgzz,50,66,0|l0ch00,46,63,1|lb57fz,46,63,1|lb57g0,45,62,0|lj2gvz,45,62,0|lj2gw0,46,63,1|ltva3z,46,63,1|ltva40,45,62,0|m1sjjz,45,62,0|m1sjk0,46,63,1|mclcrz,46,63,1|mclcs0,45,62,0|mkvkvz,45,62,0|mkvkw0,46,63,1|mvbffz,46,63,1|mvbfg0,45,62,0|n3lnjz,45,62,0|n3lnk0,46,63,1|ne1i3z,46,63,1|ne1i40,45,62,0|nmbq7z,45,62,0|nmbq80,46,63,1|nwrkrz,46,63,1|nwrks0,45,62,0|o51svz,45,62,0|o51sw0,46,63,1|ofum3z,46,63,1|ofum40,45,62,0|onrvjz,45,62,0|onrvk0,46,63,1|oykorz,46,63,1|oykos0,45,62,0|p6hy7z,45,62,0|p6hy80,46,63,1|pharfz,46,63,1|pharg0,45,62,0|ppkzjz,45,62,0|ppkzk0,46,63,1|q00u3z,46,63,1|q00u40,45,62,0|q8b27z,45,62,0|q8b280,46,63,1|qiqwrz,46,63,1|qiqws0,45,62,0|qr14vz,45,62,0|qr14w0,46,63,1|r1ty3z,46,63,1|r1ty40,45,62,0|r9r7jz,45,62,0|r9r7k0,46,63,1|rkk0rz,46,63,1|rkk0s0,45,62,0|rsha7z,45,62,0|rsha80,46,63,1|s3a3fz,46,63,1|s3a3g0,45,62,0|sbkbjz,45,62,0|sbkbk0,46,63,1|sm063z,46,63,1|sm0640,45,62,0|suae7z,45,62,0|suae80,46,63,1|t4q8rz,46,63,1|t4q8s0,45,62,0|td0gvz,45,62,0|td0gw0,46,63,1|tngbfz,46,63,1|tngbg0,45,62,0|tvqjjz,45,62,0|tvqjk0,46,63,1|u6jcrz,46,63,1|u6jcs0,45,62,0|uegm7z,45,62,0|uegm80,46,63,1|up9ffz,46,63,1|up9fg0,45,62,0|ux6ovz,45,62,0|ux6ow0,46,63,1|v7zi3z,46,63,1|v7zi40,45,62,0|vg9q7z,45,62,0|vg9q80,46,63,1|vqpkrz,46,63,1|vqpks0,45,62,0|vyzsvz,45,62,0|vyzsw0,46,63,1|w9fnfz,46,63,1|w9fng0,45,62,0|whpvjz,45,62,0|whpvk0,46,63,1|wsiorz,46,63,1|wsios0,45,62,0|x0fy7z,45,62,0|x0fy80,46,63,1|xb8rfz,46,63,1|xb8rg0,45,62,0|xj60vz,45,62,0|xj60w0,46,63,1|xtyu3z,46,63,1|xtyu40,45,62,0|y1w3jz,45,62,0|y1w3k0,46,63,1|ycowrz,46,63,1|ycows0,45,62,0|ykz4vz,45,62,0|ykz4w0,46,63,1|yvezfz,46,63,1|yvezg0,45,62,0|z3p7jz,45,62,0|z3p7k0,46,63,1|ze523z,46,63,1|ze5240,45,62,0\",\"America/Barbados|,0,67,0|-o0aiaj,53,67,0|-jtzeak,53,67,0|-jtzeaj,32,42,0|3vvnbz,32,42,0|3vvnc0,54,44,1|41mz7z,54,44,1|41mz80,32,42,0|4bq0nz,32,42,0|4bq0o0,54,44,1|4kd1vz,54,44,1|4kd1w0,32,42,0|4ug3bz,32,42,0|4ug3c0,54,44,1|5334jz,54,44,1|5334k0,32,42,0|5dj4nz,32,42,0|5dj4o0,54,44,1|5lnn7z,54,44,1|5lnn80,32,42,0\",\"America/Belem|,0,68,0|-t85j0s,39,44,0|-jylag1,39,44,0|-jylag0,40,45,1|-jpb141,40,45,1|-jpb140,39,44,0|-jfsd01,39,44,0|-jfsd00,40,45,1|-j6j3s1,40,45,1|-j6j3s0,39,44,0|-ahcyc1,39,44,0|-ahcyc0,40,45,1|-aad3o1,40,45,1|-aad3o0,39,44,0|-9yl101,39,44,0|-9yl100,40,45,1|-9sd141,40,45,1|-9sd140,39,44,0|-9ft3o1,39,44,0|-9ft3o0,40,45,1|-99j941,40,45,1|-99j940,39,44,0|-8wzbo1,39,44,0|-8wzbo0,40,45,1|-8scqg1,40,45,1|-8scqg0,39,44,0|-35xmc1,39,44,0|-35xmc0,40,45,1|-31nzs1,40,45,1|-31nzs0,39,44,0|-2kdp01,39,44,0|-2kdp00,40,45,1|-2hcig1,40,45,1|-2hcig0,39,44,0|-24qqc1,39,44,0|-24qqc0,40,45,1|-204541,40,45,1|-204540,39,44,0|-1nid01,39,44,0|-1nid00,40,45,1|-1hc7s1,40,45,1|-1hc7s0,39,44,0|-14qfo1,39,44,0|-14qfo0,40,45,1|-yifs1,40,45,1|-yifs0,39,44,0|89jcbz,39,44,0|89jcc0,40,45,1|8gdk7z,40,45,1|8gdk80,39,44,0|8rwgbz,39,44,0|8rwgc0,40,45,1|8xns7z,40,45,1|8xns80,39,44,0|9aodnz,39,44,0|9aodo0,40,45,1|9g2qvz,40,45,1|9g2qw0,39,44,0\",\"America/Belize|,0,69,0|-u52ic0,45,62,0|-qqoy01,45,62,0|-qqoy00,55,70,1|-qk7ne1,55,70,1|-qk7ne0,45,62,0|-q7yvc1,45,62,0|-q7yvc0,55,70,1|-q14m21,55,70,1|-q14m20,45,62,0|-pp8so1,45,62,0|-pp8so0,55,70,1|-pieje1,55,70,1|-pieje0,45,62,0|-p6iq01,45,62,0|-p6iq00,55,70,1|-ozogq1,55,70,1|-ozogq0,45,62,0|-onfoo1,45,62,0|-onfoo0,55,70,1|-ogye21,55,70,1|-ogye20,45,62,0|-o4pm01,45,62,0|-o4pm00,55,70,1|-ny8be1,55,70,1|-ny8be0,45,62,0|-nlzjc1,45,62,0|-nlzjc0,55,70,1|-nf5a21,55,70,1|-nf5a20,45,62,0|-n39go1,45,62,0|-n39go0,55,70,1|-mwf7e1,55,70,1|-mwf7e0,45,62,0|-mkje01,45,62,0|-mkje00,55,70,1|-mdp4q1,55,70,1|-mdp4q0,45,62,0|-m1tbc1,45,62,0|-m1tbc0,55,70,1|-luz221,55,70,1|-luz220,45,62,0|-liqa01,45,62,0|-liqa00,55,70,1|-lc8ze1,55,70,1|-lc8ze0,45,62,0|-l007c1,45,62,0|-l007c0,55,70,1|-ktiwq1,55,70,1|-ktiwq0,45,62,0|-kha4o1,45,62,0|-kha4o0,55,70,1|-kafve1,55,70,1|-kafve0,45,62,0|-jyk201,45,62,0|-jyk200,55,70,1|-jrpsq1,55,70,1|-jrpsq0,45,62,0|-jftzc1,45,62,0|-jftzc0,55,70,1|-j8zq21,55,70,1|-j8zq20,45,62,0|-iwqy01,45,62,0|-iwqy00,55,70,1|-iq9ne1,55,70,1|-iq9ne0,45,62,0|-ie0vc1,45,62,0|-ie0vc0,55,70,1|-i7jkq1,55,70,1|-i7jkq0,45,62,0|-hvaso1,45,62,0|-hvaso0,55,70,1|-hoti21,55,70,1|-hoti20,45,62,0|-hckq01,45,62,0|-hckq00,55,70,1|-h5qgq1,55,70,1|-h5qgq0,45,62,0|-gtunc1,45,62,0|-gtunc0,55,70,1|-gn0e21,55,70,1|-gn0e20,45,62,0|-gb4ko1,45,62,0|-gb4ko0,55,70,1|-g4abe1,55,70,1|-g4abe0,45,62,0|-fs1jc1,45,62,0|-fs1jc0,55,70,1|-flk8q1,55,70,1|-flk8q0,45,62,0|-f9bgo1,45,62,0|-f9bgo0,55,70,1|-f2u621,55,70,1|-f2u620,45,62,0|-eqle01,45,62,0|-eqle00,55,70,1|-ejr4q1,55,70,1|-ejr4q0,45,62,0|-ecwso1,45,62,0|-ecwso0,47,63,1|-cq2tg1,47,63,1|-cq2tg0,48,63,1|-cjqks1,48,63,1|-cjqks0,45,62,0|-blvzc1,45,62,0|-blvzc0,55,70,1|-bf1q21,55,70,1|-bf1q20,45,62,0|-b35wo1,45,62,0|-b35wo0,55,70,1|-awbne1,55,70,1|-awbne0,45,62,0|-akfu01,45,62,0|-akfu00,55,70,1|-adlkq1,55,70,1|-adlkq0,45,62,0|-a1cso1,45,62,0|-a1cso0,55,70,1|-9uvi21,55,70,1|-9uvi20,45,62,0|-9imq01,45,62,0|-9imq00,55,70,1|-9c5fe1,55,70,1|-9c5fe0,45,62,0|-8zwnc1,45,62,0|-8zwnc0,55,70,1|-8t2e21,55,70,1|-8t2e20,45,62,0|-8h6ko1,45,62,0|-8h6ko0,55,70,1|-8acbe1,55,70,1|-8acbe0,45,62,0|-7ygi01,45,62,0|-7ygi00,55,70,1|-7rm8q1,55,70,1|-7rm8q0,45,62,0|-7fqfc1,45,62,0|-7fqfc0,55,70,1|-78w621,55,70,1|-78w620,45,62,0|-6wne01,45,62,0|-6wne00,55,70,1|-6q63e1,55,70,1|-6q63e0,45,62,0|-6dxbc1,45,62,0|-6dxbc0,55,70,1|-67g0q1,55,70,1|-67g0q0,45,62,0|-5v78o1,45,62,0|-5v78o0,55,70,1|-5ocze1,55,70,1|-5ocze0,45,62,0|-5ch601,45,62,0|-5ch600,55,70,1|-55mwq1,55,70,1|-55mwq0,45,62,0|-4tr3c1,45,62,0|-4tr3c0,55,70,1|-4mwu21,55,70,1|-4mwu20,45,62,0|-4ao201,45,62,0|-4ao200,55,70,1|-446re1,55,70,1|-446re0,45,62,0|-3rxzc1,45,62,0|-3rxzc0,55,70,1|-3lgoq1,55,70,1|-3lgoq0,45,62,0|-397wo1,45,62,0|-397wo0,55,70,1|-32qm21,55,70,1|-32qm20,45,62,0|-2qhu01,45,62,0|-2qhu00,55,70,1|-2jnkq1,55,70,1|-2jnkq0,45,62,0|-27rrc1,45,62,0|-27rrc0,55,70,1|-20xi21,55,70,1|-20xi20,45,62,0|-1p1oo1,45,62,0|-1p1oo0,55,70,1|-1i7fe1,55,70,1|-1i7fe0,45,62,0|-15ync1,45,62,0|-15ync0,55,70,1|-zhcq1,55,70,1|-zhcq0,45,62,0|21s0nz,45,62,0|21s0o0,46,63,1|2565vz,46,63,1|2565w0,45,62,0|6rj4nz,45,62,0|6rj4o0,46,63,1|6uer7z,46,63,1|6uer80,45,62,0\",\"America/Blanc-Sablon|,0,71,0|-18vs838,32,42,0|-qzp0o1,32,42,0|-qzp0o0,54,44,1|-qpm4s1,54,44,1|-qpm4s0,32,42,0|-ek27c1,32,42,0|-ek27c0,33,44,1|-cq2tg1,33,44,1|-cq2tg0,34,44,1|-cnp641,34,44,1|-cnp640,32,42,0\",\"America/Boa_Vista|,0,72,0|-t85grk,42,42,0|-jyl7o1,42,42,0|-jyl7o0,39,44,1|-jpayc1,39,44,1|-jpayc0,42,42,0|-jfsa81,42,42,0|-jfsa80,39,44,1|-j6j101,39,44,1|-j6j100,42,42,0|-ahcvk1,42,42,0|-ahcvk0,39,44,1|-aad0w1,39,44,1|-aad0w0,42,42,0|-9yky81,42,42,0|-9yky80,39,44,1|-9scyc1,39,44,1|-9scyc0,42,42,0|-9ft0w1,42,42,0|-9ft0w0,39,44,1|-99j6c1,39,44,1|-99j6c0,42,42,0|-8wz8w1,42,42,0|-8wz8w0,39,44,1|-8scno1,39,44,1|-8scno0,42,42,0|-35xjk1,42,42,0|-35xjk0,39,44,1|-31nx01,39,44,1|-31nx00,42,42,0|-2kdm81,42,42,0|-2kdm80,39,44,1|-2hcfo1,39,44,1|-2hcfo0,42,42,0|-24qnk1,42,42,0|-24qnk0,39,44,1|-2042c1,39,44,1|-2042c0,42,42,0|-1nia81,42,42,0|-1nia80,39,44,1|-1hc501,39,44,1|-1hc500,42,42,0|-14qcw1,42,42,0|-14qcw0,39,44,1|-yid01,39,44,1|-yid00,42,42,0|89jf3z,42,42,0|89jf40,39,44,1|8gdmzz,39,44,1|8gdn00,42,42,0|8rwj3z,42,42,0|8rwj40,39,44,1|8xnuzz,39,44,1|8xnv00,42,42,0|9aogfz,42,42,0|9aogg0,39,44,1|9g2tnz,39,44,1|9g2to0,42,42,0|fj0drz,42,42,0|fj0ds0,39,44,1|fqkizz,39,44,1|fqkj00,42,42,0|g23f3z,42,42,0|g23f40,39,44,1|g2gazz,39,44,1|g2gb00,42,42,0\",\"America/Bogota|,0,73,0|-18s2sy8,53,73,0|-srdoy9,53,73,0|-srdoy8,56,63,0|bnnsjz,56,63,0|bnnsk0,42,42,1|c4xxrz,42,42,1|c4xxs0,56,63,0\",\"America/Boise|,0,74,0|-18y0gg0,51,40,0|-r0emw1,51,40,0|-r0emw0,57,66,1|-qplto1,57,66,1|-qplto0,51,40,0|-qhok81,51,40,0|-qhok80,57,66,1|-q6vr01,57,66,1|-q6vr00,51,40,0|-oc9iw1,51,40,0|-oc9iw0,50,66,0|-ek1z01,50,66,0|-ek1z00,58,62,1|-cq2tg1,58,62,1|-cq2tg0,59,62,1|-cnoxs1,59,62,1|-cnoxs0,50,66,0|-1e8kc1,50,66,0|-1e8kc0,52,62,1|-14vls1,52,62,1|-14vls0,50,66,0|-viho1,50,66,0|-viho0,52,62,1|-m5j41,52,62,1|-m5j40,50,66,0|-csf01,50,66,0|-csf00,52,62,1|-3fgg1,52,62,1|-3fgg0,50,66,0|5xnnz,50,66,0|5xno0,52,62,1|fam7z,52,62,1|fam80,50,66,0|onqbz,50,66,0|onqc0,52,62,1|ydnjz,52,62,1|ydnk0,50,66,0|17qrnz,50,66,0|17qro0,52,62,1|1h3q7z,52,62,1|1h3q80,50,66,0|1qgubz,50,66,0|1qguc0,52,62,1|1ztsvz,52,62,1|1ztsw0,50,66,0|24vczz,50,66,0|24vd00,52,62,1|2ijvjz,52,62,1|2ijvk0,50,66,0|2oobnz,50,66,0|2oobo0,52,62,1|319y7z,52,62,1|319y80,50,66,0|3an2bz,50,66,0|3an2c0,52,62,1|3kczjz,52,62,1|3kczk0,50,66,0|3td4zz,50,66,0|3td500,52,62,1|43327z,52,62,1|433280,50,66,0|4cg6bz,50,66,0|4cg6c0,52,62,1|4lt4vz,52,62,1|4lt4w0,50,66,0|4v68zz,50,66,0|4v6900,52,62,1|54j7jz,52,62,1|54j7k0,50,66,0|5dwbnz,50,66,0|5dwbo0,52,62,1|5n9a7z,52,62,1|5n9a80,50,66,0|5wmebz,50,66,0|5wmec0,52,62,1|65zcvz,52,62,1|65zcw0,50,66,0|6fcgzz,50,66,0|6fch00,52,62,1|6p2e7z,52,62,1|6p2e80,50,66,0|6y2jnz,50,66,0|6y2jo0,52,62,1|77sgvz,52,62,1|77sgw0,50,66,0|7h5kzz,50,66,0|7h5l00,52,62,1|7qijjz,52,62,1|7qijk0,50,66,0|7zvnnz,50,66,0|7zvno0,52,62,1|898m7z,52,62,1|898m80,50,66,0|8ilqbz,50,66,0|8ilqc0,52,62,1|8ryovz,52,62,1|8ryow0,50,66,0|908wzz,50,66,0|908x00,52,62,1|9aorjz,52,62,1|9aork0,50,66,0|9iyznz,50,66,0|9iyzo0,52,62,1|9trsvz,52,62,1|9trsw0,50,66,0|a1p2bz,50,66,0|a1p2c0,52,62,1|achvjz,52,62,1|achvk0,50,66,0|akf4zz,50,66,0|akf500,52,62,1|av7y7z,52,62,1|av7y80,50,66,0|b3i6bz,50,66,0|b3i6c0,52,62,1|bdy0vz,52,62,1|bdy0w0,50,66,0|bm88zz,50,66,0|bm8900,52,62,1|bwo3jz,52,62,1|bwo3k0,50,66,0|c4ybnz,50,66,0|c4ybo0,52,62,1|cfr4vz,52,62,1|cfr4w0,50,66,0|cnoebz,50,66,0|cnoec0,52,62,1|cyh7jz,52,62,1|cyh7k0,50,66,0|d6egzz,50,66,0|d6eh00,52,62,1|dh7a7z,52,62,1|dh7a80,50,66,0|dphibz,50,66,0|dphic0,52,62,1|dzxcvz,52,62,1|dzxcw0,50,66,0|e87kzz,50,66,0|e87l00,52,62,1|einfjz,52,62,1|einfk0,50,66,0|eqxnnz,50,66,0|eqxno0,52,62,1|f1di7z,52,62,1|f1di80,50,66,0|f9nqbz,50,66,0|f9nqc0,52,62,1|fkgjjz,52,62,1|fkgjk0,50,66,0|fsdszz,50,66,0|fsdt00,52,62,1|g36m7z,52,62,1|g36m80,50,66,0|gb3vnz,50,66,0|gb3vo0,52,62,1|glwovz,52,62,1|glwow0,50,66,0|gu6wzz,50,66,0|gu6x00,52,62,1|h4mrjz,52,62,1|h4mrk0,50,66,0|hcwznz,50,66,0|hcwzo0,52,62,1|hncu7z,52,62,1|hncu80,50,66,0|hvn2bz,50,66,0|hvn2c0,52,62,1|i6fvjz,52,62,1|i6fvk0,50,66,0|ied4zz,50,66,0|ied500,52,62,1|ip5y7z,52,62,1|ip5y80,50,66,0|ix37nz,50,66,0|ix37o0,52,62,1|j7w0vz,52,62,1|j7w0w0,50,66,0|jeqebz,50,66,0|jeqec0,52,62,1|jqz27z,52,62,1|jqz280,50,66,0|jxggzz,50,66,0|jxgh00,52,62,1|k9p4vz,52,62,1|k9p4w0,50,66,0|kg6jnz,50,66,0|kg6jo0,52,62,1|ksf7jz,52,62,1|ksf7k0,50,66,0|kz9kzz,50,66,0|kz9l00,52,62,1|lbi8vz,52,62,1|lbi8w0,50,66,0|lhznnz,50,66,0|lhzno0,52,62,1|lu8bjz,52,62,1|lu8bk0,50,66,0|m0pqbz,50,66,0|m0pqc0,52,62,1|mcye7z,52,62,1|mcye80,50,66,0|mjfszz,50,66,0|mjft00,52,62,1|mvogvz,52,62,1|mvogw0,50,66,0|n25vnz,50,66,0|n25vo0,52,62,1|neejjz,52,62,1|neejk0,50,66,0|nkvybz,50,66,0|nkvyc0,52,62,1|nx4m7z,52,62,1|nx4m80,50,66,0|o3yznz,50,66,0|o3yzo0,52,62,1|og7njz,52,62,1|og7nk0,50,66,0|omp2bz,50,66,0|omp2c0,52,62,1|oyxq7z,52,62,1|oyxq80,50,66,0|p5f4zz,50,66,0|p5f500,52,62,1|phnsvz,52,62,1|phnsw0,50,66,0|po57nz,50,66,0|po57o0,52,62,1|q0dvjz,52,62,1|q0dvk0,50,66,0|q6vabz,50,66,0|q6vac0,52,62,1|qj3y7z,52,62,1|qj3y80,50,66,0|qpybnz,50,66,0|qpybo0,52,62,1|r26zjz,52,62,1|r26zk0,50,66,0|r8oebz,50,66,0|r8oec0,52,62,1|rkx27z,52,62,1|rkx280,50,66,0|rregzz,50,66,0|rreh00,52,62,1|s3n4vz,52,62,1|s3n4w0,50,66,0|sa4jnz,50,66,0|sa4jo0,52,62,1|smd7jz,52,62,1|smd7k0,50,66,0|ssumbz,50,66,0|ssumc0,52,62,1|t53a7z,52,62,1|t53a80,50,66,0|tbkozz,50,66,0|tbkp00,52,62,1|tntcvz,52,62,1|tntcw0,50,66,0|tunqbz,50,66,0|tunqc0,52,62,1|u6we7z,52,62,1|u6we80,50,66,0|uddszz,50,66,0|uddt00,52,62,1|upmgvz,52,62,1|upmgw0,50,66,0|uw3vnz,50,66,0|uw3vo0,52,62,1|v8cjjz,52,62,1|v8cjk0,50,66,0|vetybz,50,66,0|vetyc0,52,62,1|vr2m7z,52,62,1|vr2m80,50,66,0|vxk0zz,50,66,0|vxk100,52,62,1|w9sovz,52,62,1|w9sow0,50,66,0|wgn2bz,50,66,0|wgn2c0,52,62,1|wsvq7z,52,62,1|wsvq80,50,66,0|wzd4zz,50,66,0|wzd500,52,62,1|xblsvz,52,62,1|xblsw0,50,66,0|xi37nz,50,66,0|xi37o0,52,62,1|xubvjz,52,62,1|xubvk0,50,66,0|y0tabz,50,66,0|y0tac0,52,62,1|yd1y7z,52,62,1|yd1y80,50,66,0|yjjczz,50,66,0|yjjd00,52,62,1|yvs0vz,52,62,1|yvs0w0,50,66,0|z29fnz,50,66,0|z29fo0,52,62,1|zei3jz,52,62,1|zei3k0,50,66,0\",\"America/Cambridge_Bay|,60,1,0|-q3gdc0,50,66,0|-ek1z01,50,66,0|-ek1z00,58,62,1|-cq2tg1,58,62,1|-cq2tg0,59,62,1|-cnoxs1,59,62,1|-cnoxs0,50,66,0|-2g1tw1,50,66,0|-2g1tw0,61,63,1|-26btw1,61,63,1|-26btw0,50,66,0|5dwbnz,50,66,0|5dwbo0,52,62,1|5n9a7z,52,62,1|5n9a80,50,66,0|5wmebz,50,66,0|5wmec0,52,62,1|65zcvz,52,62,1|65zcw0,50,66,0|6fcgzz,50,66,0|6fch00,52,62,1|6p2e7z,52,62,1|6p2e80,50,66,0|6y2jnz,50,66,0|6y2jo0,52,62,1|77sgvz,52,62,1|77sgw0,50,66,0|7h5kzz,50,66,0|7h5l00,52,62,1|7qijjz,52,62,1|7qijk0,50,66,0|7zvnnz,50,66,0|7zvno0,52,62,1|898m7z,52,62,1|898m80,50,66,0|8ilqbz,50,66,0|8ilqc0,52,62,1|8ryovz,52,62,1|8ryow0,50,66,0|908wzz,50,66,0|908x00,52,62,1|9aorjz,52,62,1|9aork0,50,66,0|9iyznz,50,66,0|9iyzo0,52,62,1|9trsvz,52,62,1|9trsw0,50,66,0|a1p2bz,50,66,0|a1p2c0,52,62,1|achvjz,52,62,1|achvk0,50,66,0|akf4zz,50,66,0|akf500,52,62,1|av7y7z,52,62,1|av7y80,50,66,0|b3i6bz,50,66,0|b3i6c0,52,62,1|bdy0vz,52,62,1|bdy0w0,50,66,0|bm88zz,50,66,0|bm8900,52,62,1|bwo3jz,52,62,1|bwo3k0,50,66,0|c4ybnz,50,66,0|c4ybo0,52,62,1|cfr4vz,52,62,1|cfr4w0,50,66,0|cnoebz,50,66,0|cnoec0,52,62,1|cyh7jz,52,62,1|cyh7k0,50,66,0|d6egzz,50,66,0|d6eh00,52,62,1|dh7a7z,52,62,1|dh7a80,50,66,0|dphibz,50,66,0|dphic0,52,62,1|dzxcvz,52,62,1|dzxcw0,50,66,0|e87kzz,50,66,0|e87l00,52,62,1|einfjz,52,62,1|einfk0,50,66,0|eqxnnz,50,66,0|eqxno0,52,62,1|f1di7z,52,62,1|f1di80,50,66,0|f9nqbz,50,66,0|f9nqc0,52,62,1|fkgjjz,52,62,1|fkgjk0,45,62,0|fsdq7z,45,62,0|fsdq80,46,63,1|g36jfz,46,63,1|g36jg0,49,63,0|g3jcjz,49,63,0|g3jck0,45,62,0|gb3vnz,45,62,0|gb3vo0,52,62,1|glwovz,52,62,1|glwow0,50,66,0|gu6wzz,50,66,0|gu6x00,52,62,1|h4mrjz,52,62,1|h4mrk0,50,66,0|hcwznz,50,66,0|hcwzo0,52,62,1|hncu7z,52,62,1|hncu80,50,66,0|hvn2bz,50,66,0|hvn2c0,52,62,1|i6fvjz,52,62,1|i6fvk0,50,66,0|ied4zz,50,66,0|ied500,52,62,1|ip5y7z,52,62,1|ip5y80,50,66,0|ix37nz,50,66,0|ix37o0,52,62,1|j7w0vz,52,62,1|j7w0w0,50,66,0|jeqebz,50,66,0|jeqec0,52,62,1|jqz27z,52,62,1|jqz280,50,66,0|jxggzz,50,66,0|jxgh00,52,62,1|k9p4vz,52,62,1|k9p4w0,50,66,0|kg6jnz,50,66,0|kg6jo0,52,62,1|ksf7jz,52,62,1|ksf7k0,50,66,0|kz9kzz,50,66,0|kz9l00,52,62,1|lbi8vz,52,62,1|lbi8w0,50,66,0|lhznnz,50,66,0|lhzno0,52,62,1|lu8bjz,52,62,1|lu8bk0,50,66,0|m0pqbz,50,66,0|m0pqc0,52,62,1|mcye7z,52,62,1|mcye80,50,66,0|mjfszz,50,66,0|mjft00,52,62,1|mvogvz,52,62,1|mvogw0,50,66,0|n25vnz,50,66,0|n25vo0,52,62,1|neejjz,52,62,1|neejk0,50,66,0|nkvybz,50,66,0|nkvyc0,52,62,1|nx4m7z,52,62,1|nx4m80,50,66,0|o3yznz,50,66,0|o3yzo0,52,62,1|og7njz,52,62,1|og7nk0,50,66,0|omp2bz,50,66,0|omp2c0,52,62,1|oyxq7z,52,62,1|oyxq80,50,66,0|p5f4zz,50,66,0|p5f500,52,62,1|phnsvz,52,62,1|phnsw0,50,66,0|po57nz,50,66,0|po57o0,52,62,1|q0dvjz,52,62,1|q0dvk0,50,66,0|q6vabz,50,66,0|q6vac0,52,62,1|qj3y7z,52,62,1|qj3y80,50,66,0|qpybnz,50,66,0|qpybo0,52,62,1|r26zjz,52,62,1|r26zk0,50,66,0|r8oebz,50,66,0|r8oec0,52,62,1|rkx27z,52,62,1|rkx280,50,66,0|rregzz,50,66,0|rreh00,52,62,1|s3n4vz,52,62,1|s3n4w0,50,66,0|sa4jnz,50,66,0|sa4jo0,52,62,1|smd7jz,52,62,1|smd7k0,50,66,0|ssumbz,50,66,0|ssumc0,52,62,1|t53a7z,52,62,1|t53a80,50,66,0|tbkozz,50,66,0|tbkp00,52,62,1|tntcvz,52,62,1|tntcw0,50,66,0|tunqbz,50,66,0|tunqc0,52,62,1|u6we7z,52,62,1|u6we80,50,66,0|uddszz,50,66,0|uddt00,52,62,1|upmgvz,52,62,1|upmgw0,50,66,0|uw3vnz,50,66,0|uw3vo0,52,62,1|v8cjjz,52,62,1|v8cjk0,50,66,0|vetybz,50,66,0|vetyc0,52,62,1|vr2m7z,52,62,1|vr2m80,50,66,0|vxk0zz,50,66,0|vxk100,52,62,1|w9sovz,52,62,1|w9sow0,50,66,0|wgn2bz,50,66,0|wgn2c0,52,62,1|wsvq7z,52,62,1|wsvq80,50,66,0|wzd4zz,50,66,0|wzd500,52,62,1|xblsvz,52,62,1|xblsw0,50,66,0|xi37nz,50,66,0|xi37o0,52,62,1|xubvjz,52,62,1|xubvk0,50,66,0|y0tabz,50,66,0|y0tac0,52,62,1|yd1y7z,52,62,1|yd1y80,50,66,0|yjjczz,50,66,0|yjjd00,52,62,1|yvs0vz,52,62,1|yvs0w0,50,66,0|z29fnz,50,66,0|z29fo0,52,62,1|zei3jz,52,62,1|zei3k0,50,66,0\",\"America/Campo_Grande|,0,75,0|-t85hvw,42,42,0|-jyl7o1,42,42,0|-jyl7o0,39,44,1|-jpayc1,39,44,1|-jpayc0,42,42,0|-jfsa81,42,42,0|-jfsa80,39,44,1|-j6j101,39,44,1|-j6j100,42,42,0|-ahcvk1,42,42,0|-ahcvk0,39,44,1|-aad0w1,39,44,1|-aad0w0,42,42,0|-9yky81,42,42,0|-9yky80,39,44,1|-9scyc1,39,44,1|-9scyc0,42,42,0|-9ft0w1,42,42,0|-9ft0w0,39,44,1|-99j6c1,39,44,1|-99j6c0,42,42,0|-8wz8w1,42,42,0|-8wz8w0,39,44,1|-8scno1,39,44,1|-8scno0,42,42,0|-35xjk1,42,42,0|-35xjk0,39,44,1|-31nx01,39,44,1|-31nx00,42,42,0|-2kdm81,42,42,0|-2kdm80,39,44,1|-2hcfo1,39,44,1|-2hcfo0,42,42,0|-24qnk1,42,42,0|-24qnk0,39,44,1|-2042c1,39,44,1|-2042c0,42,42,0|-1nia81,42,42,0|-1nia80,39,44,1|-1hc501,39,44,1|-1hc500,42,42,0|-14qcw1,42,42,0|-14qcw0,39,44,1|-yid01,39,44,1|-yid00,42,42,0|89jf3z,42,42,0|89jf40,39,44,1|8gdmzz,39,44,1|8gdn00,42,42,0|8rwj3z,42,42,0|8rwj40,39,44,1|8xnuzz,39,44,1|8xnv00,42,42,0|9aogfz,42,42,0|9aogg0,39,44,1|9g2tnz,39,44,1|9g2to0,42,42,0|9t1kfz,42,42,0|9t1kg0,39,44,1|9yfxnz,39,44,1|9yfxo0,42,42,0|abrn3z,42,42,0|abrn40,39,44,1|ahvxnz,39,44,1|ahvxo0,42,42,0|auuofz,42,42,0|auuog0,39,44,1|b0yyzz,39,44,1|b0yz00,42,42,0|bdkr3z,42,42,0|bdkr40,39,44,1|bjc2zz,39,44,1|bjc300,42,42,0|bwnsfz,42,42,0|bwnsg0,39,44,1|c1p6zz,39,44,1|c1p700,42,42,0|cf0wfz,42,42,0|cf0wg0,39,44,1|cli5nz,39,44,1|cli5o0,42,42,0|cxqz3z,42,42,0|cxqz40,39,44,1|d488bz,39,44,1|d488c0,42,42,0|dgh1rz,42,42,0|dgh1s0,39,44,1|dmlcbz,39,44,1|dmlcc0,42,42,0|dyu5rz,42,42,0|dyu5s0,39,44,1|e5odnz,39,44,1|e5odo0,42,42,0|ehm33z,42,42,0|ehm340,39,44,1|ep4dnz,39,44,1|ep4do0,42,42,0|f0n9rz,42,42,0|f0n9s0,39,44,1|f7hhnz,39,44,1|f7hho0,42,42,0|fj0drz,42,42,0|fj0ds0,39,44,1|fqkizz,39,44,1|fqkj00,42,42,0|g23f3z,42,42,0|g23f40,39,44,1|g8xmzz,39,44,1|g8xn00,42,42,0|gl6gfz,42,42,0|gl6gg0,39,44,1|grnpnz,39,44,1|grnpo0,42,42,0|h4zf3z,42,42,0|h4zf40,39,44,1|hadsbz,39,44,1|hadsc0,42,42,0|hmzkfz,42,42,0|hmzkg0,39,44,1|ht3uzz,39,44,1|ht3v00,42,42,0|i6j9rz,42,42,0|i6j9s0,39,44,1|ic6wbz,39,44,1|ic6wc0,42,42,0|iofprz,42,42,0|iofps0,39,44,1|iuwyzz,39,44,1|iuwz00,42,42,0|j88ofz,42,42,0|j88og0,39,44,1|je00bz,39,44,1|je00c0,42,42,0|jpvv3z,42,42,0|jpvv40,39,44,1|jwd4bz,39,44,1|jwd4c0,42,42,0|k8ywfz,42,42,0|k8ywg0,39,44,1|kf36zz,39,44,1|kf3700,42,42,0|kroz3z,42,42,0|kroz40,39,44,1|ky68bz,39,44,1|ky68c0,42,42,0|laf1rz,42,42,0|laf1s0,39,44,1|lgwazz,39,44,1|lgwb00,42,42,0|lt54fz,42,42,0|lt54g0,39,44,1|lzzcbz,39,44,1|lzzcc0,42,42,0|mc85rz,42,42,0|mc85s0,39,44,1|micgbz,39,44,1|micgc0,42,42,0|muy8fz,42,42,0|muy8g0,39,44,1|n12izz,39,44,1|n12j00,42,42,0|ndob3z,42,42,0|ndob40,39,44,1|nk5kbz,39,44,1|nk5kc0,42,42,0|nwedrz,42,42,0|nweds0,39,44,1|o2vmzz,39,44,1|o2vn00,42,42,0|of4gfz,42,42,0|of4gg0,39,44,1|ollpnz,39,44,1|ollpo0,42,42,0|oxuj3z,42,42,0|oxuj40,39,44,1|p4bsbz,39,44,1|p4bsc0,42,42,0|phnhrz,42,42,0|phnhs0,39,44,1|pn1uzz,39,44,1|pn1v00,42,42,0\",\"America/Cancun|,0,76,0|-p1u7c0,45,62,0|690gnz,45,62,0|690go0,49,63,0|dphcrz,49,63,0|dphcs0,62,42,1|dzx7bz,62,42,1|dzx7c0,49,63,0|e87ffz,49,63,0|e87fg0,62,42,1|ein9zz,62,42,1|eina00,49,63,0|eqxi3z,49,63,0|eqxi40,62,42,1|ex1snz,62,42,1|ex1so0,46,63,1|f1dffz,46,63,1|f1dfg0,45,62,0|f9nnjz,45,62,0|f9nnk0,46,63,1|fkggrz,46,63,1|fkggs0,45,62,0|fsdq7z,45,62,0|fsdq80,46,63,1|g36jfz,46,63,1|g36jg0,45,62,0|gcwm7z,45,62,0|gcwm80,46,63,1|gkgrfz,46,63,1|gkgrg0,45,62,0|gu6u7z,45,62,0|gu6u80,46,63,1|h4morz,46,63,1|h4mos0,45,62,0|hcwwvz,45,62,0|hcwww0,46,63,1|hncrfz,46,63,1|hncrg0,45,62,0|hvmzjz,45,62,0|hvmzk0,46,63,1|i6fsrz,46,63,1|i6fss0,45,62,0|ied27z,45,62,0|ied280,46,63,1|ip5vfz,46,63,1|ip5vg0,45,62,0|ix34vz,45,62,0|ix34w0,46,63,1|j7vy3z,46,63,1|j7vy40,45,62,0|jft7jz,45,62,0|jft7k0,46,63,1|jqm0rz,46,63,1|jqm0s0,45,62,0|jyw8vz,45,62,0|jyw8w0,46,63,1|k9c3fz,46,63,1|k9c3g0,45,62,0|khmbjz,45,62,0|khmbk0,46,63,1|ks263z,46,63,1|ks2640,45,62,0|l0ce7z,45,62,0|l0ce80,46,63,1|lb57fz,46,63,1|lb57g0,45,62,0|lj2gvz,45,62,0|lj2gw0,46,63,1|ltva3z,46,63,1|ltva40,45,62,0|m1sjjz,45,62,0|m1sjk0,46,63,1|mclcrz,46,63,1|mclcs0,45,62,0|mkvkvz,45,62,0|mkvkw0,46,63,1|mvbffz,46,63,1|mvbfg0,45,62,0|n3lnjz,45,62,0|n3lnk0,46,63,1|ne1i3z,46,63,1|ne1i40,45,62,0|nj327z,45,62,0|nj3280,49,63,0\",\"America/Caracas|,0,77,0|-15r0wxs,41,78,0|-u7lcxx,41,78,0|-u7lcxw,43,59,0|-2lx4u1,43,59,0|-2lx4u0,42,42,0|jsrsrz,42,42,0|jsrss0,43,59,0|o6hkrz,43,59,0|o6hks0,42,42,0\",\"America/Cayenne|,0,79,0|-uj7yb4,42,42,0|-16brk1,42,42,0|-16brk0,39,44,0\",\"America/Cayman|,0,80,0|-15r0uls,41,81,0|-w757vd,41,81,0|-w757vc,49,63,0\",\"America/Chicago|,0,82,0|-18y0m00,45,62,0|-r0esg1,45,62,0|-r0esg0,46,63,1|-qplz81,46,63,1|-qplz80,45,62,0|-qhops1,45,62,0|-qhops0,46,63,1|-q6vwk1,46,63,1|-q6vwk0,45,62,0|-pv01s1,45,62,0|-pv01s0,46,63,1|-pnsv81,46,63,1|-pnsv80,45,62,0|-pg8kg1,45,62,0|-pg8kg0,46,63,1|-p52sk1,46,63,1|-p52sk0,45,62,0|-ovpog1,45,62,0|-ovpog0,46,63,1|-oo5j81,46,63,1|-oo5j80,45,62,0|-oczls1,45,62,0|-oczls0,46,63,1|-o52hw1,46,63,1|-o52hw0,45,62,0|-nu9j41,45,62,0|-nu9j40,46,63,1|-nmcf81,46,63,1|-nmcf80,45,62,0|-nbjgg1,45,62,0|-nbjgg0,46,63,1|-n3mck1,46,63,1|-n3mck0,45,62,0|-mstds1,45,62,0|-mstds0,46,63,1|-mkw9w1,46,63,1|-mkw9w0,45,62,0|-ma3b41,45,62,0|-ma3b40,46,63,1|-m26781,46,63,1|-m26780,45,62,0|-lr09s1,45,62,0|-lr09s0,46,63,1|-lj35w1,46,63,1|-lj35w0,45,62,0|-l8a741,45,62,0|-l8a740,46,63,1|-l0d381,46,63,1|-l0d380,45,62,0|-kpk4g1,45,62,0|-kpk4g0,46,63,1|-khn0k1,46,63,1|-khn0k0,45,62,0|-k6u1s1,45,62,0|-k6u1s0,46,63,1|-jywxw1,46,63,1|-jywxw0,45,62,0|-jo3z41,45,62,0|-jo3z40,46,63,1|-jg6v81,46,63,1|-jg6v80,45,62,0|-j50xs1,45,62,0|-j50xs0,46,63,1|-ixgsk1,46,63,1|-ixgsk0,45,62,0|-imav41,45,62,0|-imav40,46,63,1|-iedr81,46,63,1|-iedr80,45,62,0|-i3ksg1,45,62,0|-i3ksg0,46,63,1|-hvnok1,46,63,1|-hvnok0,45,62,0|-hnqf41,45,62,0|-hnqf40,49,63,0|-haev81,49,63,0|-haev80,45,62,0|-h24n41,45,62,0|-h24n40,46,63,1|-gu7j81,46,63,1|-gu7j80,45,62,0|-gjekg1,45,62,0|-gjekg0,46,63,1|-gbhgk1,46,63,1|-gbhgk0,45,62,0|-g0bj41,45,62,0|-g0bj40,46,63,1|-fsrdw1,46,63,1|-fsrdw0,45,62,0|-fhlgg1,45,62,0|-fhlgg0,46,63,1|-f9ock1,46,63,1|-f9ock0,45,62,0|-eyvds1,45,62,0|-eyvds0,46,63,1|-eqy9w1,46,63,1|-eqy9w0,45,62,0|-ek21s1,45,62,0|-ek21s0,47,63,1|-cq2tg1,47,63,1|-cq2tg0,48,63,1|-cnp0k1,48,63,1|-cnp0k0,45,62,0|-ccw1s1,45,62,0|-ccw1s0,46,63,1|-c4yxw1,46,63,1|-c4yxw0,45,62,0|-bu5z41,45,62,0|-bu5z40,46,63,1|-bm8v81,46,63,1|-bm8v80,45,62,0|-bbfwg1,45,62,0|-bbfwg0,46,63,1|-b3isk1,46,63,1|-b3isk0,45,62,0|-aspts1,45,62,0|-aspts0,46,63,1|-akspw1,46,63,1|-akspw0,45,62,0|-a9msg1,45,62,0|-a9msg0,46,63,1|-a22n81,46,63,1|-a22n80,45,62,0|-9qwps1,45,62,0|-9qwps0,46,63,1|-9izlw1,46,63,1|-9izlw0,45,62,0|-986n41,45,62,0|-986n40,46,63,1|-909j81,46,63,1|-909j80,45,62,0|-8pgkg1,45,62,0|-8pgkg0,46,63,1|-8hjgk1,46,63,1|-8hjgk0,45,62,0|-86qhs1,45,62,0|-86qhs0,46,63,1|-7ytdw1,46,63,1|-7ytdw0,45,62,0|-7o0f41,45,62,0|-7o0f40,46,63,1|-7eahw1,46,63,1|-7eahw0,45,62,0|-74xds1,45,62,0|-74xds0,46,63,1|-6vkf81,46,63,1|-6vkf80,45,62,0|-6m7b41,45,62,0|-6m7b40,46,63,1|-6cuck1,46,63,1|-6cuck0,45,62,0|-63h8g1,45,62,0|-63h8g0,46,63,1|-5u49w1,46,63,1|-5u49w0,45,62,0|-5kr5s1,45,62,0|-5kr5s0,46,63,1|-5be781,46,63,1|-5be780,45,62,0|-521341,45,62,0|-521340,46,63,1|-4sb5w1,46,63,1|-4sb5w0,45,62,0|-4iy1s1,45,62,0|-4iy1s0,46,63,1|-49l381,46,63,1|-49l380,45,62,0|-407z41,45,62,0|-407z40,46,63,1|-3qv0k1,46,63,1|-3qv0k0,45,62,0|-3hhwg1,45,62,0|-3hhwg0,46,63,1|-384xw1,46,63,1|-384xw0,45,62,0|-2yrts1,45,62,0|-2yrts0,46,63,1|-2pev81,46,63,1|-2pev80,45,62,0|-2g1r41,45,62,0|-2g1r40,46,63,1|-26btw1,46,63,1|-26btw0,45,62,0|-1xbog1,45,62,0|-1xbog0,46,63,1|-1nlr81,46,63,1|-1nlr80,45,62,0|-1e8n41,45,62,0|-1e8n40,46,63,1|-14vok1,46,63,1|-14vok0,45,62,0|-vikg1,45,62,0|-vikg0,46,63,1|-m5lw1,46,63,1|-m5lw0,45,62,0|-cshs1,45,62,0|-cshs0,46,63,1|-3fj81,46,63,1|-3fj80,45,62,0|5xkvz,45,62,0|5xkw0,46,63,1|fajfz,46,63,1|fajg0,45,62,0|onnjz,45,62,0|onnk0,46,63,1|ydkrz,46,63,1|ydks0,45,62,0|17qovz,45,62,0|17qow0,46,63,1|1h3nfz,46,63,1|1h3ng0,45,62,0|1qgrjz,45,62,0|1qgrk0,46,63,1|1ztq3z,46,63,1|1ztq40,45,62,0|23ffjz,45,62,0|23ffk0,46,63,1|2ijsrz,46,63,1|2ijss0,45,62,0|2oo8vz,45,62,0|2oo8w0,46,63,1|319vfz,46,63,1|319vg0,45,62,0|3amzjz,45,62,0|3amzk0,46,63,1|3kcwrz,46,63,1|3kcws0,45,62,0|3td27z,45,62,0|3td280,46,63,1|432zfz,46,63,1|432zg0,45,62,0|4cg3jz,45,62,0|4cg3k0,46,63,1|4lt23z,46,63,1|4lt240,45,62,0|4v667z,45,62,0|4v6680,46,63,1|54j4rz,46,63,1|54j4s0,45,62,0|5dw8vz,45,62,0|5dw8w0,46,63,1|5n97fz,46,63,1|5n97g0,45,62,0|5wmbjz,45,62,0|5wmbk0,46,63,1|65za3z,46,63,1|65za40,45,62,0|6fce7z,45,62,0|6fce80,46,63,1|6p2bfz,46,63,1|6p2bg0,45,62,0|6y2gvz,45,62,0|6y2gw0,46,63,1|77se3z,46,63,1|77se40,45,62,0|7h5i7z,45,62,0|7h5i80,46,63,1|7qigrz,46,63,1|7qigs0,45,62,0|7zvkvz,45,62,0|7zvkw0,46,63,1|898jfz,46,63,1|898jg0,45,62,0|8ilnjz,45,62,0|8ilnk0,46,63,1|8rym3z,46,63,1|8rym40,45,62,0|908u7z,45,62,0|908u80,46,63,1|9aoorz,46,63,1|9aoos0,45,62,0|9iywvz,45,62,0|9iyww0,46,63,1|9trq3z,46,63,1|9trq40,45,62,0|a1ozjz,45,62,0|a1ozk0,46,63,1|achsrz,46,63,1|achss0,45,62,0|akf27z,45,62,0|akf280,46,63,1|av7vfz,46,63,1|av7vg0,45,62,0|b3i3jz,45,62,0|b3i3k0,46,63,1|bdxy3z,46,63,1|bdxy40,45,62,0|bm867z,45,62,0|bm8680,46,63,1|bwo0rz,46,63,1|bwo0s0,45,62,0|c4y8vz,45,62,0|c4y8w0,46,63,1|cfr23z,46,63,1|cfr240,45,62,0|cnobjz,45,62,0|cnobk0,46,63,1|cyh4rz,46,63,1|cyh4s0,45,62,0|d6ee7z,45,62,0|d6ee80,46,63,1|dh77fz,46,63,1|dh77g0,45,62,0|dphfjz,45,62,0|dphfk0,46,63,1|dzxa3z,46,63,1|dzxa40,45,62,0|e87i7z,45,62,0|e87i80,46,63,1|eincrz,46,63,1|eincs0,45,62,0|eqxkvz,45,62,0|eqxkw0,46,63,1|f1dffz,46,63,1|f1dfg0,45,62,0|f9nnjz,45,62,0|f9nnk0,46,63,1|fkggrz,46,63,1|fkggs0,45,62,0|fsdq7z,45,62,0|fsdq80,46,63,1|g36jfz,46,63,1|g36jg0,45,62,0|gb3svz,45,62,0|gb3sw0,46,63,1|glwm3z,46,63,1|glwm40,45,62,0|gu6u7z,45,62,0|gu6u80,46,63,1|h4morz,46,63,1|h4mos0,45,62,0|hcwwvz,45,62,0|hcwww0,46,63,1|hncrfz,46,63,1|hncrg0,45,62,0|hvmzjz,45,62,0|hvmzk0,46,63,1|i6fsrz,46,63,1|i6fss0,45,62,0|ied27z,45,62,0|ied280,46,63,1|ip5vfz,46,63,1|ip5vg0,45,62,0|ix34vz,45,62,0|ix34w0,46,63,1|j7vy3z,46,63,1|j7vy40,45,62,0|jeqbjz,45,62,0|jeqbk0,46,63,1|jqyzfz,46,63,1|jqyzg0,45,62,0|jxge7z,45,62,0|jxge80,46,63,1|k9p23z,46,63,1|k9p240,45,62,0|kg6gvz,45,62,0|kg6gw0,46,63,1|ksf4rz,46,63,1|ksf4s0,45,62,0|kz9i7z,45,62,0|kz9i80,46,63,1|lbi63z,46,63,1|lbi640,45,62,0|lhzkvz,45,62,0|lhzkw0,46,63,1|lu88rz,46,63,1|lu88s0,45,62,0|m0pnjz,45,62,0|m0pnk0,46,63,1|mcybfz,46,63,1|mcybg0,45,62,0|mjfq7z,45,62,0|mjfq80,46,63,1|mvoe3z,46,63,1|mvoe40,45,62,0|n25svz,45,62,0|n25sw0,46,63,1|neegrz,46,63,1|neegs0,45,62,0|nkvvjz,45,62,0|nkvvk0,46,63,1|nx4jfz,46,63,1|nx4jg0,45,62,0|o3ywvz,45,62,0|o3yww0,46,63,1|og7krz,46,63,1|og7ks0,45,62,0|omozjz,45,62,0|omozk0,46,63,1|oyxnfz,46,63,1|oyxng0,45,62,0|p5f27z,45,62,0|p5f280,46,63,1|phnq3z,46,63,1|phnq40,45,62,0|po54vz,45,62,0|po54w0,46,63,1|q0dsrz,46,63,1|q0dss0,45,62,0|q6v7jz,45,62,0|q6v7k0,46,63,1|qj3vfz,46,63,1|qj3vg0,45,62,0|qpy8vz,45,62,0|qpy8w0,46,63,1|r26wrz,46,63,1|r26ws0,45,62,0|r8objz,45,62,0|r8obk0,46,63,1|rkwzfz,46,63,1|rkwzg0,45,62,0|rree7z,45,62,0|rree80,46,63,1|s3n23z,46,63,1|s3n240,45,62,0|sa4gvz,45,62,0|sa4gw0,46,63,1|smd4rz,46,63,1|smd4s0,45,62,0|ssujjz,45,62,0|ssujk0,46,63,1|t537fz,46,63,1|t537g0,45,62,0|tbkm7z,45,62,0|tbkm80,46,63,1|tnta3z,46,63,1|tnta40,45,62,0|tunnjz,45,62,0|tunnk0,46,63,1|u6wbfz,46,63,1|u6wbg0,45,62,0|uddq7z,45,62,0|uddq80,46,63,1|upme3z,46,63,1|upme40,45,62,0|uw3svz,45,62,0|uw3sw0,46,63,1|v8cgrz,46,63,1|v8cgs0,45,62,0|vetvjz,45,62,0|vetvk0,46,63,1|vr2jfz,46,63,1|vr2jg0,45,62,0|vxjy7z,45,62,0|vxjy80,46,63,1|w9sm3z,46,63,1|w9sm40,45,62,0|wgmzjz,45,62,0|wgmzk0,46,63,1|wsvnfz,46,63,1|wsvng0,45,62,0|wzd27z,45,62,0|wzd280,46,63,1|xblq3z,46,63,1|xblq40,45,62,0|xi34vz,45,62,0|xi34w0,46,63,1|xubsrz,46,63,1|xubss0,45,62,0|y0t7jz,45,62,0|y0t7k0,46,63,1|yd1vfz,46,63,1|yd1vg0,45,62,0|yjja7z,45,62,0|yjja80,46,63,1|yvry3z,46,63,1|yvry40,45,62,0|z29cvz,45,62,0|z29cw0,46,63,1|zei0rz,46,63,1|zei0s0,45,62,0\",\"America/Chihuahua|,0,83,0|-p1u4k0,50,66,0|-m7mko1,50,66,0|-m7mko0,45,62,0|-kf67c1,45,62,0|-kf67c0,50,66,0|-k6j3c1,50,66,0|-k6j3c0,45,62,0|-jypm01,45,62,0|-jypm00,50,66,0|-jpan81,50,66,0|-jpan80,45,62,0|dphfjz,45,62,0|dphfk0,46,63,1|dzxa3z,46,63,1|dzxa40,45,62,0|e87i7z,45,62,0|e87i80,46,63,1|eincrz,46,63,1|eincs0,45,62,0|eqxnnz,45,62,0|eqxno0,52,62,1|f1di7z,52,62,1|f1di80,50,66,0|f9nqbz,50,66,0|f9nqc0,52,62,1|fkgjjz,52,62,1|fkgjk0,50,66,0|fsdszz,50,66,0|fsdt00,52,62,1|g36m7z,52,62,1|g36m80,50,66,0|gcwozz,50,66,0|gcwp00,52,62,1|gkgu7z,52,62,1|gkgu80,50,66,0|gu6wzz,50,66,0|gu6x00,52,62,1|h4mrjz,52,62,1|h4mrk0,50,66,0|hcwznz,50,66,0|hcwzo0,52,62,1|hncu7z,52,62,1|hncu80,50,66,0|hvn2bz,50,66,0|hvn2c0,52,62,1|i6fvjz,52,62,1|i6fvk0,50,66,0|ied4zz,50,66,0|ied500,52,62,1|ip5y7z,52,62,1|ip5y80,50,66,0|ix37nz,50,66,0|ix37o0,52,62,1|j7w0vz,52,62,1|j7w0w0,50,66,0|jftabz,50,66,0|jftac0,52,62,1|jqm3jz,52,62,1|jqm3k0,50,66,0|jywbnz,50,66,0|jywbo0,52,62,1|k9c67z,52,62,1|k9c680,50,66,0|khmebz,50,66,0|khmec0,52,62,1|ks28vz,52,62,1|ks28w0,50,66,0|l0cgzz,50,66,0|l0ch00,52,62,1|lb5a7z,52,62,1|lb5a80,50,66,0|lj2jnz,50,66,0|lj2jo0,52,62,1|ltvcvz,52,62,1|ltvcw0,50,66,0|m1smbz,50,66,0|m1smc0,52,62,1|mclfjz,52,62,1|mclfk0,50,66,0|mkvnnz,50,66,0|mkvno0,52,62,1|mvbi7z,52,62,1|mvbi80,50,66,0|n3lqbz,50,66,0|n3lqc0,52,62,1|ne1kvz,52,62,1|ne1kw0,50,66,0|nmbszz,50,66,0|nmbt00,52,62,1|nwrnjz,52,62,1|nwrnk0,50,66,0|o51vnz,50,66,0|o51vo0,52,62,1|ofuovz,52,62,1|ofuow0,50,66,0|onrybz,50,66,0|onryc0,52,62,1|oykrjz,52,62,1|oykrk0,50,66,0|p6i0zz,50,66,0|p6i100,52,62,1|phau7z,52,62,1|phau80,50,66,0|ppl2bz,50,66,0|ppl2c0,52,62,1|q00wvz,52,62,1|q00ww0,50,66,0|q8b4zz,50,66,0|q8b500,52,62,1|qiqzjz,52,62,1|qiqzk0,50,66,0|qr17nz,50,66,0|qr17o0,52,62,1|r1u0vz,52,62,1|r1u0w0,50,66,0|r9rabz,50,66,0|r9rac0,52,62,1|rkk3jz,52,62,1|rkk3k0,50,66,0|rshczz,50,66,0|rshd00,52,62,1|s3a67z,52,62,1|s3a680,50,66,0|sbkebz,50,66,0|sbkec0,52,62,1|sm08vz,52,62,1|sm08w0,50,66,0|suagzz,50,66,0|suah00,52,62,1|t4qbjz,52,62,1|t4qbk0,50,66,0|td0jnz,50,66,0|td0jo0,52,62,1|tnge7z,52,62,1|tnge80,50,66,0|tvqmbz,50,66,0|tvqmc0,52,62,1|u6jfjz,52,62,1|u6jfk0,50,66,0|uegozz,50,66,0|uegp00,52,62,1|up9i7z,52,62,1|up9i80,50,66,0|ux6rnz,50,66,0|ux6ro0,52,62,1|v7zkvz,52,62,1|v7zkw0,50,66,0|vg9szz,50,66,0|vg9t00,52,62,1|vqpnjz,52,62,1|vqpnk0,50,66,0|vyzvnz,50,66,0|vyzvo0,52,62,1|w9fq7z,52,62,1|w9fq80,50,66,0|whpybz,50,66,0|whpyc0,52,62,1|wsirjz,52,62,1|wsirk0,50,66,0|x0g0zz,50,66,0|x0g100,52,62,1|xb8u7z,52,62,1|xb8u80,50,66,0|xj63nz,50,66,0|xj63o0,52,62,1|xtywvz,52,62,1|xtyww0,50,66,0|y1w6bz,50,66,0|y1w6c0,52,62,1|ycozjz,52,62,1|ycozk0,50,66,0|ykz7nz,50,66,0|ykz7o0,52,62,1|yvf27z,52,62,1|yvf280,50,66,0|z3pabz,50,66,0|z3pac0,52,62,1|ze54vz,52,62,1|ze54w0,50,66,0\",\"America/Costa_Rica|,0,84,0|-15r0trn,63,84,0|-pjw8fo,63,84,0|-pjw8fn,45,62,0|4rxcnz,45,62,0|4rxco0,46,63,1|4wyr7z,46,63,1|4wyr80,45,62,0|5anfbz,45,62,0|5anfc0,46,63,1|5fotvz,46,63,1|5fotw0,45,62,0|azhhzz,45,62,0|azhi00,46,63,1|b7v9vz,46,63,1|b7v9w0,45,62,0|bi7knz,45,62,0|bi7ko0,46,63,1|bl51vz,46,63,1|bl51w0,45,62,0\",\"America/Creston|,0,85,0|-18vrx38,50,66,0|-rshz81,50,66,0|-rshz80,51,40,0|-qx64g1,51,40,0|-qx64g0,50,66,0\",\"America/Cuiaba|,0,86,0|-t85hm4,42,42,0|-jyl7o1,42,42,0|-jyl7o0,39,44,1|-jpayc1,39,44,1|-jpayc0,42,42,0|-jfsa81,42,42,0|-jfsa80,39,44,1|-j6j101,39,44,1|-j6j100,42,42,0|-ahcvk1,42,42,0|-ahcvk0,39,44,1|-aad0w1,39,44,1|-aad0w0,42,42,0|-9yky81,42,42,0|-9yky80,39,44,1|-9scyc1,39,44,1|-9scyc0,42,42,0|-9ft0w1,42,42,0|-9ft0w0,39,44,1|-99j6c1,39,44,1|-99j6c0,42,42,0|-8wz8w1,42,42,0|-8wz8w0,39,44,1|-8scno1,39,44,1|-8scno0,42,42,0|-35xjk1,42,42,0|-35xjk0,39,44,1|-31nx01,39,44,1|-31nx00,42,42,0|-2kdm81,42,42,0|-2kdm80,39,44,1|-2hcfo1,39,44,1|-2hcfo0,42,42,0|-24qnk1,42,42,0|-24qnk0,39,44,1|-2042c1,39,44,1|-2042c0,42,42,0|-1nia81,42,42,0|-1nia80,39,44,1|-1hc501,39,44,1|-1hc500,42,42,0|-14qcw1,42,42,0|-14qcw0,39,44,1|-yid01,39,44,1|-yid00,42,42,0|89jf3z,42,42,0|89jf40,39,44,1|8gdmzz,39,44,1|8gdn00,42,42,0|8rwj3z,42,42,0|8rwj40,39,44,1|8xnuzz,39,44,1|8xnv00,42,42,0|9aogfz,42,42,0|9aogg0,39,44,1|9g2tnz,39,44,1|9g2to0,42,42,0|9t1kfz,42,42,0|9t1kg0,39,44,1|9yfxnz,39,44,1|9yfxo0,42,42,0|abrn3z,42,42,0|abrn40,39,44,1|ahvxnz,39,44,1|ahvxo0,42,42,0|auuofz,42,42,0|auuog0,39,44,1|b0yyzz,39,44,1|b0yz00,42,42,0|bdkr3z,42,42,0|bdkr40,39,44,1|bjc2zz,39,44,1|bjc300,42,42,0|bwnsfz,42,42,0|bwnsg0,39,44,1|c1p6zz,39,44,1|c1p700,42,42,0|cf0wfz,42,42,0|cf0wg0,39,44,1|cli5nz,39,44,1|cli5o0,42,42,0|cxqz3z,42,42,0|cxqz40,39,44,1|d488bz,39,44,1|d488c0,42,42,0|dgh1rz,42,42,0|dgh1s0,39,44,1|dmlcbz,39,44,1|dmlcc0,42,42,0|dyu5rz,42,42,0|dyu5s0,39,44,1|e5odnz,39,44,1|e5odo0,42,42,0|ehm33z,42,42,0|ehm340,39,44,1|ep4dnz,39,44,1|ep4do0,42,42,0|f0n9rz,42,42,0|f0n9s0,39,44,1|f7hhnz,39,44,1|f7hho0,42,42,0|fj0drz,42,42,0|fj0ds0,39,44,1|fqkizz,39,44,1|fqkj00,42,42,0|g23f3z,42,42,0|g23f40,39,44,1|g8xmzz,39,44,1|g8xn00,42,42,0|gl6gfz,42,42,0|gl6gg0,39,44,1|grnpnz,39,44,1|grnpo0,42,42,0|h4zf3z,42,42,0|h4zf40,39,44,1|hadsbz,39,44,1|hadsc0,42,42,0|i6j9rz,42,42,0|i6j9s0,39,44,1|ic6wbz,39,44,1|ic6wc0,42,42,0|iofprz,42,42,0|iofps0,39,44,1|iuwyzz,39,44,1|iuwz00,42,42,0|j88ofz,42,42,0|j88og0,39,44,1|je00bz,39,44,1|je00c0,42,42,0|jpvv3z,42,42,0|jpvv40,39,44,1|jwd4bz,39,44,1|jwd4c0,42,42,0|k8ywfz,42,42,0|k8ywg0,39,44,1|kf36zz,39,44,1|kf3700,42,42,0|kroz3z,42,42,0|kroz40,39,44,1|ky68bz,39,44,1|ky68c0,42,42,0|laf1rz,42,42,0|laf1s0,39,44,1|lgwazz,39,44,1|lgwb00,42,42,0|lt54fz,42,42,0|lt54g0,39,44,1|lzzcbz,39,44,1|lzzcc0,42,42,0|mc85rz,42,42,0|mc85s0,39,44,1|micgbz,39,44,1|micgc0,42,42,0|muy8fz,42,42,0|muy8g0,39,44,1|n12izz,39,44,1|n12j00,42,42,0|ndob3z,42,42,0|ndob40,39,44,1|nk5kbz,39,44,1|nk5kc0,42,42,0|nwedrz,42,42,0|nweds0,39,44,1|o2vmzz,39,44,1|o2vn00,42,42,0|of4gfz,42,42,0|of4gg0,39,44,1|ollpnz,39,44,1|ollpo0,42,42,0|oxuj3z,42,42,0|oxuj40,39,44,1|p4bsbz,39,44,1|p4bsc0,42,42,0|phnhrz,42,42,0|phnhs0,39,44,1|pn1uzz,39,44,1|pn1v00,42,42,0\",\"America/Curacao|,0,58,0|-u7lckd,43,59,0|-2lx4u1,43,59,0|-2lx4u0,32,42,0\",\"America/Danmarkshavn|,0,87,0|-rvusjk,39,44,0|5ct4jz,39,44,0|5ct4k0,40,45,1|5lsw3z,40,45,1|5lsw40,39,44,0|5v5xfz,39,44,0|5v5xg0,40,45,1|64iyrz,40,45,1|64iys0,39,44,0|6dw03z,39,44,0|6dw040,40,45,1|6n91fz,40,45,1|6n91g0,39,44,0|6wm2rz,39,44,0|6wm2s0,40,45,1|75z43z,40,45,1|75z440,39,44,0|7fc5fz,39,44,0|7fc5g0,40,45,1|7p25fz,40,45,1|7p25g0,39,44,0|7yf6rz,39,44,0|7yf6s0,40,45,1|87s83z,40,45,1|87s840,39,44,0|8h59fz,39,44,0|8h59g0,40,45,1|8qiarz,40,45,1|8qias0,39,44,0|8zvc3z,39,44,0|8zvc40,40,45,1|998dfz,40,45,1|998dg0,39,44,0|9ilerz,39,44,0|9iles0,40,45,1|9ryg3z,40,45,1|9ryg40,39,44,0|a1bhfz,39,44,0|a1bhg0,40,45,1|aaoirz,40,45,1|aaois0,39,44,0|ak1k3z,39,44,0|ak1k40,40,45,1|atrk3z,40,45,1|atrk40,39,44,0|b34lfz,39,44,0|b34lg0,40,45,1|bchmrz,40,45,1|bchms0,39,44,0|bluo3z,39,44,0|bluo40,40,45,1|bv7pfz,40,45,1|bv7pg0,39,44,0|c4kqrz,39,44,0|c4kqs0,40,45,1|cdxs3z,40,45,1|cdxs40,39,44,0|cnatfz,39,44,0|cnatg0,40,45,1|cwnurz,40,45,1|cwnus0,39,44,0|d60w3z,39,44,0|d60w40,40,45,1|dfdxfz,40,45,1|dfdxg0,39,44,0|dkhezz,39,44,0|dkhf00,1,1,0\",\"America/Dawson|,0,88,0|-1079suk,36,37,0|-qzoms1,36,37,0|-qzoms0,64,40,1|-qplqw1,64,40,1|-qplqw0,36,37,0|-qess41,36,37,0|-qess40,64,40,1|-q6kps1,64,40,1|-q6kps0,36,37,0|-ek1tg1,36,37,0|-ek1tg0,65,40,1|-cq2tg1,65,40,1|-cq2tg0,66,40,1|-cnos81,66,40,1|-cnos80,36,37,0|-2g1oc1,36,37,0|-2g1oc0,67,66,1|-26boc1,67,66,1|-26boc0,36,37,0|1ztvnz,36,37,0|1ztvo0,51,40,0|5dwefz,51,40,0|5dweg0,57,66,1|5n9czz,57,66,1|5n9d00,51,40,0|5wmh3z,51,40,0|5wmh40,57,66,1|65zfnz,57,66,1|65zfo0,51,40,0|6fcjrz,51,40,0|6fcjs0,57,66,1|6p2gzz,57,66,1|6p2h00,51,40,0|6y2mfz,51,40,0|6y2mg0,57,66,1|77sjnz,57,66,1|77sjo0,51,40,0|7h5nrz,51,40,0|7h5ns0,57,66,1|7qimbz,57,66,1|7qimc0,51,40,0|7zvqfz,51,40,0|7zvqg0,57,66,1|898ozz,57,66,1|898p00,51,40,0|8ilt3z,51,40,0|8ilt40,57,66,1|8ryrnz,57,66,1|8ryro0,51,40,0|908zrz,51,40,0|908zs0,57,66,1|9aoubz,57,66,1|9aouc0,51,40,0|9iz2fz,51,40,0|9iz2g0,57,66,1|9trvnz,57,66,1|9trvo0,51,40,0|a1p53z,51,40,0|a1p540,57,66,1|achybz,57,66,1|achyc0,51,40,0|akf7rz,51,40,0|akf7s0,57,66,1|av80zz,57,66,1|av8100,51,40,0|b3i93z,51,40,0|b3i940,57,66,1|bdy3nz,57,66,1|bdy3o0,51,40,0|bm8brz,51,40,0|bm8bs0,57,66,1|bwo6bz,57,66,1|bwo6c0,51,40,0|c4yefz,51,40,0|c4yeg0,57,66,1|cfr7nz,57,66,1|cfr7o0,51,40,0|cnoh3z,51,40,0|cnoh40,57,66,1|cyhabz,57,66,1|cyhac0,51,40,0|d6ejrz,51,40,0|d6ejs0,57,66,1|dh7czz,57,66,1|dh7d00,51,40,0|dphl3z,51,40,0|dphl40,57,66,1|dzxfnz,57,66,1|dzxfo0,51,40,0|e87nrz,51,40,0|e87ns0,57,66,1|einibz,57,66,1|einic0,51,40,0|eqxqfz,51,40,0|eqxqg0,57,66,1|f1dkzz,57,66,1|f1dl00,51,40,0|f9nt3z,51,40,0|f9nt40,57,66,1|fkgmbz,57,66,1|fkgmc0,51,40,0|fsdvrz,51,40,0|fsdvs0,57,66,1|g36ozz,57,66,1|g36p00,51,40,0|gb3yfz,51,40,0|gb3yg0,57,66,1|glwrnz,57,66,1|glwro0,51,40,0|gu6zrz,51,40,0|gu6zs0,57,66,1|h4mubz,57,66,1|h4muc0,51,40,0|hcx2fz,51,40,0|hcx2g0,57,66,1|hncwzz,57,66,1|hncx00,51,40,0|hvn53z,51,40,0|hvn540,57,66,1|i6fybz,57,66,1|i6fyc0,51,40,0|ied7rz,51,40,0|ied7s0,57,66,1|ip60zz,57,66,1|ip6100,51,40,0|ix3afz,51,40,0|ix3ag0,57,66,1|j7w3nz,57,66,1|j7w3o0,51,40,0|jeqh3z,51,40,0|jeqh40,57,66,1|jqz4zz,57,66,1|jqz500,51,40,0|jxgjrz,51,40,0|jxgjs0,57,66,1|k9p7nz,57,66,1|k9p7o0,51,40,0|kg6mfz,51,40,0|kg6mg0,57,66,1|ksfabz,57,66,1|ksfac0,51,40,0|kz9nrz,51,40,0|kz9ns0,57,66,1|lbibnz,57,66,1|lbibo0,51,40,0|lhzqfz,51,40,0|lhzqg0,57,66,1|lu8ebz,57,66,1|lu8ec0,51,40,0|m0pt3z,51,40,0|m0pt40,57,66,1|mcygzz,57,66,1|mcyh00,51,40,0|mjfvrz,51,40,0|mjfvs0,57,66,1|mvojnz,57,66,1|mvojo0,51,40,0|n25yfz,51,40,0|n25yg0,57,66,1|neembz,57,66,1|neemc0,51,40,0|nkw13z,51,40,0|nkw140,57,66,1|nx4ozz,57,66,1|nx4p00,51,40,0|o3z2fz,51,40,0|o3z2g0,57,66,1|og7qbz,57,66,1|og7qc0,51,40,0|omp53z,51,40,0|omp540,57,66,1|oyxszz,57,66,1|oyxt00,51,40,0|p5f7rz,51,40,0|p5f7s0,57,66,1|phnvnz,57,66,1|phnvo0,51,40,0|po5afz,51,40,0|po5ag0,57,66,1|q0dybz,57,66,1|q0dyc0,51,40,0|q6vd3z,51,40,0|q6vd40,57,66,1|qj3vfz,57,66,1|qj3vg0,50,66,0\",\"America/Dawson_Creek|,0,89,0|-18vrweg,51,40,0|-qzopk1,51,40,0|-qzopk0,57,66,1|-qplto1,57,66,1|-qplto0,51,40,0|-ek1w81,51,40,0|-ek1w80,68,66,1|-cq2tg1,68,66,1|-cq2tg0,69,66,1|-cnov01,69,66,1|-cnov00,51,40,0|-bu5tk1,51,40,0|-bu5tk0,57,66,1|-bm8po1,57,66,1|-bm8po0,51,40,0|-bbfqw1,51,40,0|-bbfqw0,57,66,1|-b3in01,57,66,1|-b3in00,51,40,0|-aspo81,51,40,0|-aspo80,57,66,1|-akskc1,57,66,1|-akskc0,51,40,0|-a9mmw1,51,40,0|-a9mmw0,57,66,1|-a22ho1,57,66,1|-a22ho0,51,40,0|-9qwk81,51,40,0|-9qwk80,57,66,1|-9izgc1,57,66,1|-9izgc0,51,40,0|-986hk1,51,40,0|-986hk0,57,66,1|-909do1,57,66,1|-909do0,51,40,0|-8pgew1,51,40,0|-8pgew0,57,66,1|-8hjb01,57,66,1|-8hjb00,51,40,0|-86qc81,51,40,0|-86qc80,57,66,1|-7yt8c1,57,66,1|-7yt8c0,51,40,0|-7o09k1,51,40,0|-7o09k0,57,66,1|-7g35o1,57,66,1|-7g35o0,51,40,0|-74x881,51,40,0|-74x880,57,66,1|-6x04c1,57,66,1|-6x04c0,51,40,0|-6m75k1,51,40,0|-6m75k0,57,66,1|-6ea1o1,57,66,1|-6ea1o0,51,40,0|-63h2w1,51,40,0|-63h2w0,57,66,1|-5vjz01,57,66,1|-5vjz00,51,40,0|-5kr081,51,40,0|-5kr080,57,66,1|-5ctwc1,57,66,1|-5ctwc0,51,40,0|-520xk1,51,40,0|-520xk0,57,66,1|-4u3to1,57,66,1|-4u3to0,51,40,0|-4ixw81,51,40,0|-4ixw80,57,66,1|-4bdr01,57,66,1|-4bdr00,51,40,0|-407tk1,51,40,0|-407tk0,57,66,1|-3quv01,57,66,1|-3quv00,51,40,0|-3hhqw1,51,40,0|-3hhqw0,57,66,1|-384sc1,57,66,1|-384sc0,51,40,0|-2yro81,51,40,0|-2yro80,57,66,1|-2pepo1,57,66,1|-2pepo0,51,40,0|-2g1lk1,51,40,0|-2g1lk0,57,66,1|-26boc1,57,66,1|-26boc0,51,40,0|-1xbiw1,51,40,0|-1xbiw0,57,66,1|-1nllo1,57,66,1|-1nllo0,51,40,0|-1e8hk1,51,40,0|-1e8hk0,57,66,1|-14vj01,57,66,1|-14vj00,51,40,0|-view1,51,40,0|-view0,57,66,1|-m5gc1,57,66,1|-m5gc0,51,40,0|-csc81,51,40,0|-csc80,57,66,1|-3fdo1,57,66,1|-3fdo0,51,40,0|5xqfz,51,40,0|5xqg0,57,66,1|faozz,57,66,1|fap00,51,40,0|ont3z,51,40,0|ont40,57,66,1|ydqbz,57,66,1|ydqc0,51,40,0|17qufz,51,40,0|17qug0,57,66,1|1e0ozz,57,66,1|1e0p00,50,66,0\",\"America/Denver|,0,90,0|-18y0j80,50,66,0|-r0epo1,50,66,0|-r0epo0,52,62,1|-qplwg1,52,62,1|-qplwg0,50,66,0|-qhon01,50,66,0|-qhon00,52,62,1|-q6vts1,52,62,1|-q6vts0,50,66,0|-pyykc1,50,66,0|-pyykc0,52,62,1|-pnssg1,52,62,1|-pnssg0,50,66,0|-pg8ho1,50,66,0|-pg8ho0,52,62,1|-pdcv41,52,62,1|-pdcv40,50,66,0|-ek1z01,50,66,0|-ek1z00,58,62,1|-cq2tg1,58,62,1|-cq2tg0,59,62,1|-cnoxs1,59,62,1|-cnoxs0,50,66,0|-2g1oc1,50,66,0|-2g1oc0,52,62,1|-26br41,52,62,1|-26br40,50,66,0|-1xblo1,50,66,0|-1xblo0,52,62,1|-1nlog1,52,62,1|-1nlog0,50,66,0|-1e8kc1,50,66,0|-1e8kc0,52,62,1|-14vls1,52,62,1|-14vls0,50,66,0|-viho1,50,66,0|-viho0,52,62,1|-m5j41,52,62,1|-m5j40,50,66,0|-csf01,50,66,0|-csf00,52,62,1|-3fgg1,52,62,1|-3fgg0,50,66,0|5xnnz,50,66,0|5xno0,52,62,1|fam7z,52,62,1|fam80,50,66,0|onqbz,50,66,0|onqc0,52,62,1|ydnjz,52,62,1|ydnk0,50,66,0|17qrnz,50,66,0|17qro0,52,62,1|1h3q7z,52,62,1|1h3q80,50,66,0|1qgubz,50,66,0|1qguc0,52,62,1|1ztsvz,52,62,1|1ztsw0,50,66,0|23fibz,50,66,0|23fic0,52,62,1|2ijvjz,52,62,1|2ijvk0,50,66,0|2oobnz,50,66,0|2oobo0,52,62,1|319y7z,52,62,1|319y80,50,66,0|3an2bz,50,66,0|3an2c0,52,62,1|3kczjz,52,62,1|3kczk0,50,66,0|3td4zz,50,66,0|3td500,52,62,1|43327z,52,62,1|433280,50,66,0|4cg6bz,50,66,0|4cg6c0,52,62,1|4lt4vz,52,62,1|4lt4w0,50,66,0|4v68zz,50,66,0|4v6900,52,62,1|54j7jz,52,62,1|54j7k0,50,66,0|5dwbnz,50,66,0|5dwbo0,52,62,1|5n9a7z,52,62,1|5n9a80,50,66,0|5wmebz,50,66,0|5wmec0,52,62,1|65zcvz,52,62,1|65zcw0,50,66,0|6fcgzz,50,66,0|6fch00,52,62,1|6p2e7z,52,62,1|6p2e80,50,66,0|6y2jnz,50,66,0|6y2jo0,52,62,1|77sgvz,52,62,1|77sgw0,50,66,0|7h5kzz,50,66,0|7h5l00,52,62,1|7qijjz,52,62,1|7qijk0,50,66,0|7zvnnz,50,66,0|7zvno0,52,62,1|898m7z,52,62,1|898m80,50,66,0|8ilqbz,50,66,0|8ilqc0,52,62,1|8ryovz,52,62,1|8ryow0,50,66,0|908wzz,50,66,0|908x00,52,62,1|9aorjz,52,62,1|9aork0,50,66,0|9iyznz,50,66,0|9iyzo0,52,62,1|9trsvz,52,62,1|9trsw0,50,66,0|a1p2bz,50,66,0|a1p2c0,52,62,1|achvjz,52,62,1|achvk0,50,66,0|akf4zz,50,66,0|akf500,52,62,1|av7y7z,52,62,1|av7y80,50,66,0|b3i6bz,50,66,0|b3i6c0,52,62,1|bdy0vz,52,62,1|bdy0w0,50,66,0|bm88zz,50,66,0|bm8900,52,62,1|bwo3jz,52,62,1|bwo3k0,50,66,0|c4ybnz,50,66,0|c4ybo0,52,62,1|cfr4vz,52,62,1|cfr4w0,50,66,0|cnoebz,50,66,0|cnoec0,52,62,1|cyh7jz,52,62,1|cyh7k0,50,66,0|d6egzz,50,66,0|d6eh00,52,62,1|dh7a7z,52,62,1|dh7a80,50,66,0|dphibz,50,66,0|dphic0,52,62,1|dzxcvz,52,62,1|dzxcw0,50,66,0|e87kzz,50,66,0|e87l00,52,62,1|einfjz,52,62,1|einfk0,50,66,0|eqxnnz,50,66,0|eqxno0,52,62,1|f1di7z,52,62,1|f1di80,50,66,0|f9nqbz,50,66,0|f9nqc0,52,62,1|fkgjjz,52,62,1|fkgjk0,50,66,0|fsdszz,50,66,0|fsdt00,52,62,1|g36m7z,52,62,1|g36m80,50,66,0|gb3vnz,50,66,0|gb3vo0,52,62,1|glwovz,52,62,1|glwow0,50,66,0|gu6wzz,50,66,0|gu6x00,52,62,1|h4mrjz,52,62,1|h4mrk0,50,66,0|hcwznz,50,66,0|hcwzo0,52,62,1|hncu7z,52,62,1|hncu80,50,66,0|hvn2bz,50,66,0|hvn2c0,52,62,1|i6fvjz,52,62,1|i6fvk0,50,66,0|ied4zz,50,66,0|ied500,52,62,1|ip5y7z,52,62,1|ip5y80,50,66,0|ix37nz,50,66,0|ix37o0,52,62,1|j7w0vz,52,62,1|j7w0w0,50,66,0|jeqebz,50,66,0|jeqec0,52,62,1|jqz27z,52,62,1|jqz280,50,66,0|jxggzz,50,66,0|jxgh00,52,62,1|k9p4vz,52,62,1|k9p4w0,50,66,0|kg6jnz,50,66,0|kg6jo0,52,62,1|ksf7jz,52,62,1|ksf7k0,50,66,0|kz9kzz,50,66,0|kz9l00,52,62,1|lbi8vz,52,62,1|lbi8w0,50,66,0|lhznnz,50,66,0|lhzno0,52,62,1|lu8bjz,52,62,1|lu8bk0,50,66,0|m0pqbz,50,66,0|m0pqc0,52,62,1|mcye7z,52,62,1|mcye80,50,66,0|mjfszz,50,66,0|mjft00,52,62,1|mvogvz,52,62,1|mvogw0,50,66,0|n25vnz,50,66,0|n25vo0,52,62,1|neejjz,52,62,1|neejk0,50,66,0|nkvybz,50,66,0|nkvyc0,52,62,1|nx4m7z,52,62,1|nx4m80,50,66,0|o3yznz,50,66,0|o3yzo0,52,62,1|og7njz,52,62,1|og7nk0,50,66,0|omp2bz,50,66,0|omp2c0,52,62,1|oyxq7z,52,62,1|oyxq80,50,66,0|p5f4zz,50,66,0|p5f500,52,62,1|phnsvz,52,62,1|phnsw0,50,66,0|po57nz,50,66,0|po57o0,52,62,1|q0dvjz,52,62,1|q0dvk0,50,66,0|q6vabz,50,66,0|q6vac0,52,62,1|qj3y7z,52,62,1|qj3y80,50,66,0|qpybnz,50,66,0|qpybo0,52,62,1|r26zjz,52,62,1|r26zk0,50,66,0|r8oebz,50,66,0|r8oec0,52,62,1|rkx27z,52,62,1|rkx280,50,66,0|rregzz,50,66,0|rreh00,52,62,1|s3n4vz,52,62,1|s3n4w0,50,66,0|sa4jnz,50,66,0|sa4jo0,52,62,1|smd7jz,52,62,1|smd7k0,50,66,0|ssumbz,50,66,0|ssumc0,52,62,1|t53a7z,52,62,1|t53a80,50,66,0|tbkozz,50,66,0|tbkp00,52,62,1|tntcvz,52,62,1|tntcw0,50,66,0|tunqbz,50,66,0|tunqc0,52,62,1|u6we7z,52,62,1|u6we80,50,66,0|uddszz,50,66,0|uddt00,52,62,1|upmgvz,52,62,1|upmgw0,50,66,0|uw3vnz,50,66,0|uw3vo0,52,62,1|v8cjjz,52,62,1|v8cjk0,50,66,0|vetybz,50,66,0|vetyc0,52,62,1|vr2m7z,52,62,1|vr2m80,50,66,0|vxk0zz,50,66,0|vxk100,52,62,1|w9sovz,52,62,1|w9sow0,50,66,0|wgn2bz,50,66,0|wgn2c0,52,62,1|wsvq7z,52,62,1|wsvq80,50,66,0|wzd4zz,50,66,0|wzd500,52,62,1|xblsvz,52,62,1|xblsw0,50,66,0|xi37nz,50,66,0|xi37o0,52,62,1|xubvjz,52,62,1|xubvk0,50,66,0|y0tabz,50,66,0|y0tac0,52,62,1|yd1y7z,52,62,1|yd1y80,50,66,0|yjjczz,50,66,0|yjjd00,52,62,1|yvs0vz,52,62,1|yvs0w0,50,66,0|z29fnz,50,66,0|z29fo0,52,62,1|zei3jz,52,62,1|zei3k0,50,66,0\",\"America/Detroit|,0,91,0|-xx8dyd,45,62,0|-sih341,45,62,0|-sih340,49,63,0|-ek24k1,49,63,0|-ek24k0,70,42,1|-cq2tg1,70,42,1|-cq2tg0,71,42,1|-cnp3c1,71,42,1|-cnp3c0,49,63,0|-bbfz81,49,63,0|-bbfz80,62,42,1|-b3ivc1,62,42,1|-b3ivc0,49,63,0|-1bxjed,49,63,0|-1bxjec,62,42,1|-14vrc1,62,42,1|-14vrc0,49,63,0|-vin81,49,63,0|-vin80,62,42,1|-m5oo1,62,42,1|-m5oo0,49,63,0|1qgorz,49,63,0|1qgos0,62,42,1|1ztnbz,62,42,1|1ztnc0,49,63,0|23fcrz,49,63,0|23fcs0,62,42,1|2ijpzz,62,42,1|2ijq00,49,63,0|2rwu3z,49,63,0|2rwu40,62,42,1|319snz,62,42,1|319so0,49,63,0|3amwrz,49,63,0|3amws0,62,42,1|3kctzz,62,42,1|3kcu00,49,63,0|3tczfz,49,63,0|3tczg0,62,42,1|432wnz,62,42,1|432wo0,49,63,0|4cg0rz,49,63,0|4cg0s0,62,42,1|4lszbz,62,42,1|4lszc0,49,63,0|4v63fz,49,63,0|4v63g0,62,42,1|54j1zz,62,42,1|54j200,49,63,0|5dw63z,49,63,0|5dw640,62,42,1|5n94nz,62,42,1|5n94o0,49,63,0|5wm8rz,49,63,0|5wm8s0,62,42,1|65z7bz,62,42,1|65z7c0,49,63,0|6fcbfz,49,63,0|6fcbg0,62,42,1|6p28nz,62,42,1|6p28o0,49,63,0|6y2e3z,49,63,0|6y2e40,62,42,1|77sbbz,62,42,1|77sbc0,49,63,0|7h5ffz,49,63,0|7h5fg0,62,42,1|7qidzz,62,42,1|7qie00,49,63,0|7zvi3z,49,63,0|7zvi40,62,42,1|898gnz,62,42,1|898go0,49,63,0|8ilkrz,49,63,0|8ilks0,62,42,1|8ryjbz,62,42,1|8ryjc0,49,63,0|908rfz,49,63,0|908rg0,62,42,1|9aolzz,62,42,1|9aom00,49,63,0|9iyu3z,49,63,0|9iyu40,62,42,1|9trnbz,62,42,1|9trnc0,49,63,0|a1owrz,49,63,0|a1ows0,62,42,1|achpzz,62,42,1|achq00,49,63,0|akezfz,49,63,0|akezg0,62,42,1|av7snz,62,42,1|av7so0,49,63,0|b3i0rz,49,63,0|b3i0s0,62,42,1|bdxvbz,62,42,1|bdxvc0,49,63,0|bm83fz,49,63,0|bm83g0,62,42,1|bwnxzz,62,42,1|bwny00,49,63,0|c4y63z,49,63,0|c4y640,62,42,1|cfqzbz,62,42,1|cfqzc0,49,63,0|cno8rz,49,63,0|cno8s0,62,42,1|cyh1zz,62,42,1|cyh200,49,63,0|d6ebfz,49,63,0|d6ebg0,62,42,1|dh74nz,62,42,1|dh74o0,49,63,0|dphcrz,49,63,0|dphcs0,62,42,1|dzx7bz,62,42,1|dzx7c0,49,63,0|e87ffz,49,63,0|e87fg0,62,42,1|ein9zz,62,42,1|eina00,49,63,0|eqxi3z,49,63,0|eqxi40,62,42,1|f1dcnz,62,42,1|f1dco0,49,63,0|f9nkrz,49,63,0|f9nks0,62,42,1|fkgdzz,62,42,1|fkge00,49,63,0|fsdnfz,49,63,0|fsdng0,62,42,1|g36gnz,62,42,1|g36go0,49,63,0|gb3q3z,49,63,0|gb3q40,62,42,1|glwjbz,62,42,1|glwjc0,49,63,0|gu6rfz,49,63,0|gu6rg0,62,42,1|h4mlzz,62,42,1|h4mm00,49,63,0|hcwu3z,49,63,0|hcwu40,62,42,1|hnconz,62,42,1|hncoo0,49,63,0|hvmwrz,49,63,0|hvmws0,62,42,1|i6fpzz,62,42,1|i6fq00,49,63,0|ieczfz,49,63,0|ieczg0,62,42,1|ip5snz,62,42,1|ip5so0,49,63,0|ix323z,49,63,0|ix3240,62,42,1|j7vvbz,62,42,1|j7vvc0,49,63,0|jeq8rz,49,63,0|jeq8s0,62,42,1|jqywnz,62,42,1|jqywo0,49,63,0|jxgbfz,49,63,0|jxgbg0,62,42,1|k9ozbz,62,42,1|k9ozc0,49,63,0|kg6e3z,49,63,0|kg6e40,62,42,1|ksf1zz,62,42,1|ksf200,49,63,0|kz9ffz,49,63,0|kz9fg0,62,42,1|lbi3bz,62,42,1|lbi3c0,49,63,0|lhzi3z,49,63,0|lhzi40,62,42,1|lu85zz,62,42,1|lu8600,49,63,0|m0pkrz,49,63,0|m0pks0,62,42,1|mcy8nz,62,42,1|mcy8o0,49,63,0|mjfnfz,49,63,0|mjfng0,62,42,1|mvobbz,62,42,1|mvobc0,49,63,0|n25q3z,49,63,0|n25q40,62,42,1|needzz,62,42,1|neee00,49,63,0|nkvsrz,49,63,0|nkvss0,62,42,1|nx4gnz,62,42,1|nx4go0,49,63,0|o3yu3z,49,63,0|o3yu40,62,42,1|og7hzz,62,42,1|og7i00,49,63,0|omowrz,49,63,0|omows0,62,42,1|oyxknz,62,42,1|oyxko0,49,63,0|p5ezfz,49,63,0|p5ezg0,62,42,1|phnnbz,62,42,1|phnnc0,49,63,0|po523z,49,63,0|po5240,62,42,1|q0dpzz,62,42,1|q0dq00,49,63,0|q6v4rz,49,63,0|q6v4s0,62,42,1|qj3snz,62,42,1|qj3so0,49,63,0|qpy63z,49,63,0|qpy640,62,42,1|r26tzz,62,42,1|r26u00,49,63,0|r8o8rz,49,63,0|r8o8s0,62,42,1|rkwwnz,62,42,1|rkwwo0,49,63,0|rrebfz,49,63,0|rrebg0,62,42,1|s3mzbz,62,42,1|s3mzc0,49,63,0|sa4e3z,49,63,0|sa4e40,62,42,1|smd1zz,62,42,1|smd200,49,63,0|ssugrz,49,63,0|ssugs0,62,42,1|t534nz,62,42,1|t534o0,49,63,0|tbkjfz,49,63,0|tbkjg0,62,42,1|tnt7bz,62,42,1|tnt7c0,49,63,0|tunkrz,49,63,0|tunks0,62,42,1|u6w8nz,62,42,1|u6w8o0,49,63,0|uddnfz,49,63,0|uddng0,62,42,1|upmbbz,62,42,1|upmbc0,49,63,0|uw3q3z,49,63,0|uw3q40,62,42,1|v8cdzz,62,42,1|v8ce00,49,63,0|vetsrz,49,63,0|vetss0,62,42,1|vr2gnz,62,42,1|vr2go0,49,63,0|vxjvfz,49,63,0|vxjvg0,62,42,1|w9sjbz,62,42,1|w9sjc0,49,63,0|wgmwrz,49,63,0|wgmws0,62,42,1|wsvknz,62,42,1|wsvko0,49,63,0|wzczfz,49,63,0|wzczg0,62,42,1|xblnbz,62,42,1|xblnc0,49,63,0|xi323z,49,63,0|xi3240,62,42,1|xubpzz,62,42,1|xubq00,49,63,0|y0t4rz,49,63,0|y0t4s0,62,42,1|yd1snz,62,42,1|yd1so0,49,63,0|yjj7fz,49,63,0|yjj7g0,62,42,1|yvrvbz,62,42,1|yvrvc0,49,63,0|z29a3z,49,63,0|z29a40,62,42,1|zehxzz,62,42,1|zehy00,49,63,0\",\"America/Dominica|,0,41,0|-u6m79w,32,42,0\",\"America/Edmonton|,0,92,0|-x1yazk,50,66,0|-qzosc1,50,66,0|-qzosc0,52,62,1|-qplwg1,52,62,1|-qplwg0,50,66,0|-qgypo1,50,66,0|-qgypo0,52,62,1|-qepb41,52,62,1|-qepb40,50,66,0|-pxipo1,50,66,0|-pxipo0,52,62,1|-pnssg1,52,62,1|-pnssg0,50,66,0|-pesn01,50,66,0|-pesn00,52,62,1|-p6vj41,52,62,1|-p6vj40,50,66,0|-ovplo1,50,66,0|-ovplo0,52,62,1|-oo5gg1,52,62,1|-oo5gg0,50,66,0|-oczj01,50,66,0|-oczj00,52,62,1|-o52f41,52,62,1|-o52f40,50,66,0|-ek1z01,50,66,0|-ek1z00,58,62,1|-cq2tg1,58,62,1|-cq2tg0,59,62,1|-cnoxs1,59,62,1|-cnoxs0,50,66,0|-bu5wc1,50,66,0|-bu5wc0,52,62,1|-bm8sg1,52,62,1|-bm8sg0,50,66,0|17qrnz,50,66,0|17qro0,52,62,1|1h3q7z,52,62,1|1h3q80,50,66,0|1qgubz,50,66,0|1qguc0,52,62,1|1ztsvz,52,62,1|1ztsw0,50,66,0|296wzz,50,66,0|296x00,52,62,1|2ijvjz,52,62,1|2ijvk0,50,66,0|2rwznz,50,66,0|2rwzo0,52,62,1|319y7z,52,62,1|319y80,50,66,0|3an2bz,50,66,0|3an2c0,52,62,1|3kczjz,52,62,1|3kczk0,50,66,0|3td4zz,50,66,0|3td500,52,62,1|43327z,52,62,1|433280,50,66,0|4cg6bz,50,66,0|4cg6c0,52,62,1|4lt4vz,52,62,1|4lt4w0,50,66,0|4v68zz,50,66,0|4v6900,52,62,1|54j7jz,52,62,1|54j7k0,50,66,0|5dwbnz,50,66,0|5dwbo0,52,62,1|5n9a7z,52,62,1|5n9a80,50,66,0|5wmebz,50,66,0|5wmec0,52,62,1|65zcvz,52,62,1|65zcw0,50,66,0|6fcgzz,50,66,0|6fch00,52,62,1|6p2e7z,52,62,1|6p2e80,50,66,0|6y2jnz,50,66,0|6y2jo0,52,62,1|77sgvz,52,62,1|77sgw0,50,66,0|7h5kzz,50,66,0|7h5l00,52,62,1|7qijjz,52,62,1|7qijk0,50,66,0|7zvnnz,50,66,0|7zvno0,52,62,1|898m7z,52,62,1|898m80,50,66,0|8ilqbz,50,66,0|8ilqc0,52,62,1|8ryovz,52,62,1|8ryow0,50,66,0|908wzz,50,66,0|908x00,52,62,1|9aorjz,52,62,1|9aork0,50,66,0|9iyznz,50,66,0|9iyzo0,52,62,1|9trsvz,52,62,1|9trsw0,50,66,0|a1p2bz,50,66,0|a1p2c0,52,62,1|achvjz,52,62,1|achvk0,50,66,0|akf4zz,50,66,0|akf500,52,62,1|av7y7z,52,62,1|av7y80,50,66,0|b3i6bz,50,66,0|b3i6c0,52,62,1|bdy0vz,52,62,1|bdy0w0,50,66,0|bm88zz,50,66,0|bm8900,52,62,1|bwo3jz,52,62,1|bwo3k0,50,66,0|c4ybnz,50,66,0|c4ybo0,52,62,1|cfr4vz,52,62,1|cfr4w0,50,66,0|cnoebz,50,66,0|cnoec0,52,62,1|cyh7jz,52,62,1|cyh7k0,50,66,0|d6egzz,50,66,0|d6eh00,52,62,1|dh7a7z,52,62,1|dh7a80,50,66,0|dphibz,50,66,0|dphic0,52,62,1|dzxcvz,52,62,1|dzxcw0,50,66,0|e87kzz,50,66,0|e87l00,52,62,1|einfjz,52,62,1|einfk0,50,66,0|eqxnnz,50,66,0|eqxno0,52,62,1|f1di7z,52,62,1|f1di80,50,66,0|f9nqbz,50,66,0|f9nqc0,52,62,1|fkgjjz,52,62,1|fkgjk0,50,66,0|fsdszz,50,66,0|fsdt00,52,62,1|g36m7z,52,62,1|g36m80,50,66,0|gb3vnz,50,66,0|gb3vo0,52,62,1|glwovz,52,62,1|glwow0,50,66,0|gu6wzz,50,66,0|gu6x00,52,62,1|h4mrjz,52,62,1|h4mrk0,50,66,0|hcwznz,50,66,0|hcwzo0,52,62,1|hncu7z,52,62,1|hncu80,50,66,0|hvn2bz,50,66,0|hvn2c0,52,62,1|i6fvjz,52,62,1|i6fvk0,50,66,0|ied4zz,50,66,0|ied500,52,62,1|ip5y7z,52,62,1|ip5y80,50,66,0|ix37nz,50,66,0|ix37o0,52,62,1|j7w0vz,52,62,1|j7w0w0,50,66,0|jeqebz,50,66,0|jeqec0,52,62,1|jqz27z,52,62,1|jqz280,50,66,0|jxggzz,50,66,0|jxgh00,52,62,1|k9p4vz,52,62,1|k9p4w0,50,66,0|kg6jnz,50,66,0|kg6jo0,52,62,1|ksf7jz,52,62,1|ksf7k0,50,66,0|kz9kzz,50,66,0|kz9l00,52,62,1|lbi8vz,52,62,1|lbi8w0,50,66,0|lhznnz,50,66,0|lhzno0,52,62,1|lu8bjz,52,62,1|lu8bk0,50,66,0|m0pqbz,50,66,0|m0pqc0,52,62,1|mcye7z,52,62,1|mcye80,50,66,0|mjfszz,50,66,0|mjft00,52,62,1|mvogvz,52,62,1|mvogw0,50,66,0|n25vnz,50,66,0|n25vo0,52,62,1|neejjz,52,62,1|neejk0,50,66,0|nkvybz,50,66,0|nkvyc0,52,62,1|nx4m7z,52,62,1|nx4m80,50,66,0|o3yznz,50,66,0|o3yzo0,52,62,1|og7njz,52,62,1|og7nk0,50,66,0|omp2bz,50,66,0|omp2c0,52,62,1|oyxq7z,52,62,1|oyxq80,50,66,0|p5f4zz,50,66,0|p5f500,52,62,1|phnsvz,52,62,1|phnsw0,50,66,0|po57nz,50,66,0|po57o0,52,62,1|q0dvjz,52,62,1|q0dvk0,50,66,0|q6vabz,50,66,0|q6vac0,52,62,1|qj3y7z,52,62,1|qj3y80,50,66,0|qpybnz,50,66,0|qpybo0,52,62,1|r26zjz,52,62,1|r26zk0,50,66,0|r8oebz,50,66,0|r8oec0,52,62,1|rkx27z,52,62,1|rkx280,50,66,0|rregzz,50,66,0|rreh00,52,62,1|s3n4vz,52,62,1|s3n4w0,50,66,0|sa4jnz,50,66,0|sa4jo0,52,62,1|smd7jz,52,62,1|smd7k0,50,66,0|ssumbz,50,66,0|ssumc0,52,62,1|t53a7z,52,62,1|t53a80,50,66,0|tbkozz,50,66,0|tbkp00,52,62,1|tntcvz,52,62,1|tntcw0,50,66,0|tunqbz,50,66,0|tunqc0,52,62,1|u6we7z,52,62,1|u6we80,50,66,0|uddszz,50,66,0|uddt00,52,62,1|upmgvz,52,62,1|upmgw0,50,66,0|uw3vnz,50,66,0|uw3vo0,52,62,1|v8cjjz,52,62,1|v8cjk0,50,66,0|vetybz,50,66,0|vetyc0,52,62,1|vr2m7z,52,62,1|vr2m80,50,66,0|vxk0zz,50,66,0|vxk100,52,62,1|w9sovz,52,62,1|w9sow0,50,66,0|wgn2bz,50,66,0|wgn2c0,52,62,1|wsvq7z,52,62,1|wsvq80,50,66,0|wzd4zz,50,66,0|wzd500,52,62,1|xblsvz,52,62,1|xblsw0,50,66,0|xi37nz,50,66,0|xi37o0,52,62,1|xubvjz,52,62,1|xubvk0,50,66,0|y0tabz,50,66,0|y0tac0,52,62,1|yd1y7z,52,62,1|yd1y80,50,66,0|yjjczz,50,66,0|yjjd00,52,62,1|yvs0vz,52,62,1|yvs0w0,50,66,0|z29fnz,50,66,0|z29fo0,52,62,1|zei3jz,52,62,1|zei3k0,50,66,0\",\"America/Eirunepe|,0,93,0|-t85f28,56,63,0|-jyl4w1,56,63,0|-jyl4w0,42,42,1|-jpavk1,42,42,1|-jpavk0,56,63,0|-jfs7g1,56,63,0|-jfs7g0,42,42,1|-j6iy81,42,42,1|-j6iy80,56,63,0|-ahcss1,56,63,0|-ahcss0,42,42,1|-aacy41,42,42,1|-aacy40,56,63,0|-9ykvg1,56,63,0|-9ykvg0,42,42,1|-9scvk1,42,42,1|-9scvk0,56,63,0|-9fsy41,56,63,0|-9fsy40,42,42,1|-99j3k1,42,42,1|-99j3k0,56,63,0|-8wz641,56,63,0|-8wz640,42,42,1|-8sckw1,42,42,1|-8sckw0,56,63,0|-35xgs1,56,63,0|-35xgs0,42,42,1|-31nu81,42,42,1|-31nu80,56,63,0|-2kdjg1,56,63,0|-2kdjg0,42,42,1|-2hccw1,42,42,1|-2hccw0,56,63,0|-24qks1,56,63,0|-24qks0,42,42,1|-203zk1,42,42,1|-203zk0,56,63,0|-1ni7g1,56,63,0|-1ni7g0,42,42,1|-1hc281,42,42,1|-1hc280,56,63,0|-14qa41,56,63,0|-14qa40,42,42,1|-yia81,42,42,1|-yia80,56,63,0|89jhvz,56,63,0|89jhw0,42,42,1|8gdprz,42,42,1|8gdps0,56,63,0|8rwlvz,56,63,0|8rwlw0,42,42,1|8xnxrz,42,42,1|8xnxs0,56,63,0|9aoj7z,56,63,0|9aoj80,42,42,1|9g2wfz,42,42,1|9g2wg0,56,63,0|cf0z7z,56,63,0|cf0z80,42,42,1|cli8fz,42,42,1|cli8g0,56,63,0|k2yb7z,56,63,0|k2yb80,42,42,0|mw14fz,42,42,0|mw14g0,56,63,0\",\"America/El_Salvador|,0,94,0|-pkm4tc,45,62,0|91ojbz,45,62,0|91ojc0,46,63,1|998ojz,46,63,1|998ok0,45,62,0|9kelzz,45,62,0|9kem00,46,63,1|9ryr7z,46,63,1|9ryr80,45,62,0\",\"America/Fort_Nelson|,0,95,0|-18vrvy1,51,40,0|-qzopk1,51,40,0|-qzopk0,57,66,1|-qplto1,57,66,1|-qplto0,51,40,0|-ek1w81,51,40,0|-ek1w80,68,66,1|-cq2tg1,68,66,1|-cq2tg0,69,66,1|-cnov01,69,66,1|-cnov00,51,40,0|-bu5tk1,51,40,0|-bu5tk0,57,66,1|-bm8po1,57,66,1|-bm8po0,51,40,0|-bbfqw1,51,40,0|-bbfqw0,57,66,1|-b3in01,57,66,1|-b3in00,51,40,0|-aspo81,51,40,0|-aspo80,57,66,1|-akskc1,57,66,1|-akskc0,51,40,0|-a9mmw1,51,40,0|-a9mmw0,57,66,1|-a22ho1,57,66,1|-a22ho0,51,40,0|-9qwk81,51,40,0|-9qwk80,57,66,1|-9izgc1,57,66,1|-9izgc0,51,40,0|-986hk1,51,40,0|-986hk0,57,66,1|-909do1,57,66,1|-909do0,51,40,0|-8pgew1,51,40,0|-8pgew0,57,66,1|-8hjb01,57,66,1|-8hjb00,51,40,0|-86qc81,51,40,0|-86qc80,57,66,1|-7yt8c1,57,66,1|-7yt8c0,51,40,0|-7o09k1,51,40,0|-7o09k0,57,66,1|-7g35o1,57,66,1|-7g35o0,51,40,0|-74x881,51,40,0|-74x880,57,66,1|-6x04c1,57,66,1|-6x04c0,51,40,0|-6m75k1,51,40,0|-6m75k0,57,66,1|-6ea1o1,57,66,1|-6ea1o0,51,40,0|-63h2w1,51,40,0|-63h2w0,57,66,1|-5vjz01,57,66,1|-5vjz00,51,40,0|-5kr081,51,40,0|-5kr080,57,66,1|-5ctwc1,57,66,1|-5ctwc0,51,40,0|-520xk1,51,40,0|-520xk0,57,66,1|-4u3to1,57,66,1|-4u3to0,51,40,0|-4ixw81,51,40,0|-4ixw80,57,66,1|-4bdr01,57,66,1|-4bdr00,51,40,0|-407tk1,51,40,0|-407tk0,57,66,1|-3quv01,57,66,1|-3quv00,51,40,0|-3hhqw1,51,40,0|-3hhqw0,57,66,1|-384sc1,57,66,1|-384sc0,51,40,0|-2yro81,51,40,0|-2yro80,57,66,1|-2pepo1,57,66,1|-2pepo0,51,40,0|-2g1lk1,51,40,0|-2g1lk0,57,66,1|-26boc1,57,66,1|-26boc0,51,40,0|-1xbiw1,51,40,0|-1xbiw0,57,66,1|-1nllo1,57,66,1|-1nllo0,51,40,0|-1e8hk1,51,40,0|-1e8hk0,57,66,1|-14vj01,57,66,1|-14vj00,51,40,0|-view1,51,40,0|-view0,57,66,1|-m5gc1,57,66,1|-m5gc0,51,40,0|-csc81,51,40,0|-csc80,57,66,1|-3fdo1,57,66,1|-3fdo0,51,40,0|5xqfz,51,40,0|5xqg0,57,66,1|faozz,57,66,1|fap00,51,40,0|ont3z,51,40,0|ont40,57,66,1|ydqbz,57,66,1|ydqc0,51,40,0|17qufz,51,40,0|17qug0,57,66,1|1h3szz,57,66,1|1h3t00,51,40,0|1qgx3z,51,40,0|1qgx40,57,66,1|1ztvnz,57,66,1|1ztvo0,51,40,0|296zrz,51,40,0|296zs0,57,66,1|2ijybz,57,66,1|2ijyc0,51,40,0|2rx2fz,51,40,0|2rx2g0,57,66,1|31a0zz,57,66,1|31a100,51,40,0|3an53z,51,40,0|3an540,57,66,1|3kd2bz,57,66,1|3kd2c0,51,40,0|3td7rz,51,40,0|3td7s0,57,66,1|4334zz,57,66,1|433500,51,40,0|4cg93z,51,40,0|4cg940,57,66,1|4lt7nz,57,66,1|4lt7o0,51,40,0|4v6brz,51,40,0|4v6bs0,57,66,1|54jabz,57,66,1|54jac0,51,40,0|5dwefz,51,40,0|5dweg0,57,66,1|5n9czz,57,66,1|5n9d00,51,40,0|5wmh3z,51,40,0|5wmh40,57,66,1|65zfnz,57,66,1|65zfo0,51,40,0|6fcjrz,51,40,0|6fcjs0,57,66,1|6p2gzz,57,66,1|6p2h00,51,40,0|6y2mfz,51,40,0|6y2mg0,57,66,1|77sjnz,57,66,1|77sjo0,51,40,0|7h5nrz,51,40,0|7h5ns0,57,66,1|7qimbz,57,66,1|7qimc0,51,40,0|7zvqfz,51,40,0|7zvqg0,57,66,1|898ozz,57,66,1|898p00,51,40,0|8ilt3z,51,40,0|8ilt40,57,66,1|8ryrnz,57,66,1|8ryro0,51,40,0|908zrz,51,40,0|908zs0,57,66,1|9aoubz,57,66,1|9aouc0,51,40,0|9iz2fz,51,40,0|9iz2g0,57,66,1|9trvnz,57,66,1|9trvo0,51,40,0|a1p53z,51,40,0|a1p540,57,66,1|achybz,57,66,1|achyc0,51,40,0|akf7rz,51,40,0|akf7s0,57,66,1|av80zz,57,66,1|av8100,51,40,0|b3i93z,51,40,0|b3i940,57,66,1|bdy3nz,57,66,1|bdy3o0,51,40,0|bm8brz,51,40,0|bm8bs0,57,66,1|bwo6bz,57,66,1|bwo6c0,51,40,0|c4yefz,51,40,0|c4yeg0,57,66,1|cfr7nz,57,66,1|cfr7o0,51,40,0|cnoh3z,51,40,0|cnoh40,57,66,1|cyhabz,57,66,1|cyhac0,51,40,0|d6ejrz,51,40,0|d6ejs0,57,66,1|dh7czz,57,66,1|dh7d00,51,40,0|dphl3z,51,40,0|dphl40,57,66,1|dzxfnz,57,66,1|dzxfo0,51,40,0|e87nrz,51,40,0|e87ns0,57,66,1|einibz,57,66,1|einic0,51,40,0|eqxqfz,51,40,0|eqxqg0,57,66,1|f1dkzz,57,66,1|f1dl00,51,40,0|f9nt3z,51,40,0|f9nt40,57,66,1|fkgmbz,57,66,1|fkgmc0,51,40,0|fsdvrz,51,40,0|fsdvs0,57,66,1|g36ozz,57,66,1|g36p00,51,40,0|gb3yfz,51,40,0|gb3yg0,57,66,1|glwrnz,57,66,1|glwro0,51,40,0|gu6zrz,51,40,0|gu6zs0,57,66,1|h4mubz,57,66,1|h4muc0,51,40,0|hcx2fz,51,40,0|hcx2g0,57,66,1|hncwzz,57,66,1|hncx00,51,40,0|hvn53z,51,40,0|hvn540,57,66,1|i6fybz,57,66,1|i6fyc0,51,40,0|ied7rz,51,40,0|ied7s0,57,66,1|ip60zz,57,66,1|ip6100,51,40,0|ix3afz,51,40,0|ix3ag0,57,66,1|j7w3nz,57,66,1|j7w3o0,51,40,0|jeqh3z,51,40,0|jeqh40,57,66,1|jqz4zz,57,66,1|jqz500,51,40,0|jxgjrz,51,40,0|jxgjs0,57,66,1|k9p7nz,57,66,1|k9p7o0,51,40,0|kg6mfz,51,40,0|kg6mg0,57,66,1|ksfabz,57,66,1|ksfac0,51,40,0|kz9nrz,51,40,0|kz9ns0,57,66,1|lbibnz,57,66,1|lbibo0,51,40,0|lhzqfz,51,40,0|lhzqg0,57,66,1|lu8ebz,57,66,1|lu8ec0,51,40,0|m0pt3z,51,40,0|m0pt40,57,66,1|mcygzz,57,66,1|mcyh00,51,40,0|mjfvrz,51,40,0|mjfvs0,57,66,1|mvojnz,57,66,1|mvojo0,51,40,0|n25yfz,51,40,0|n25yg0,57,66,1|neembz,57,66,1|neemc0,51,40,0|nkw13z,51,40,0|nkw140,50,66,0\",\"America/Fortaleza|,0,96,0|-t85kvc,39,44,0|-jylag1,39,44,0|-jylag0,40,45,1|-jpb141,40,45,1|-jpb140,39,44,0|-jfsd01,39,44,0|-jfsd00,40,45,1|-j6j3s1,40,45,1|-j6j3s0,39,44,0|-ahcyc1,39,44,0|-ahcyc0,40,45,1|-aad3o1,40,45,1|-aad3o0,39,44,0|-9yl101,39,44,0|-9yl100,40,45,1|-9sd141,40,45,1|-9sd140,39,44,0|-9ft3o1,39,44,0|-9ft3o0,40,45,1|-99j941,40,45,1|-99j940,39,44,0|-8wzbo1,39,44,0|-8wzbo0,40,45,1|-8scqg1,40,45,1|-8scqg0,39,44,0|-35xmc1,39,44,0|-35xmc0,40,45,1|-31nzs1,40,45,1|-31nzs0,39,44,0|-2kdp01,39,44,0|-2kdp00,40,45,1|-2hcig1,40,45,1|-2hcig0,39,44,0|-24qqc1,39,44,0|-24qqc0,40,45,1|-204541,40,45,1|-204540,39,44,0|-1nid01,39,44,0|-1nid00,40,45,1|-1hc7s1,40,45,1|-1hc7s0,39,44,0|-14qfo1,39,44,0|-14qfo0,40,45,1|-yifs1,40,45,1|-yifs0,39,44,0|89jcbz,39,44,0|89jcc0,40,45,1|8gdk7z,40,45,1|8gdk80,39,44,0|8rwgbz,39,44,0|8rwgc0,40,45,1|8xns7z,40,45,1|8xns80,39,44,0|9aodnz,39,44,0|9aodo0,40,45,1|9g2qvz,40,45,1|9g2qw0,39,44,0|9t1hnz,39,44,0|9t1ho0,40,45,1|9yfuvz,40,45,1|9yfuw0,39,44,0|abrkbz,39,44,0|abrkc0,40,45,1|ahvuvz,40,45,1|ahvuw0,39,44,0|fj0azz,39,44,0|fj0b00,40,45,1|fqkg7z,40,45,1|fqkg80,39,44,0|g23cbz,39,44,0|g23cc0,40,45,1|g2t6vz,40,45,1|g2t6w0,39,44,0|gl6dnz,39,44,0|gl6do0,40,45,1|grnmvz,40,45,1|grnmw0,39,44,0\",\"America/Glace_Bay|,0,97,0|-z94kwc,32,42,0|-qzp0o1,32,42,0|-qzp0o0,54,44,1|-qpm4s1,54,44,1|-qpm4s0,32,42,0|-ek27c1,32,42,0|-ek27c0,33,44,1|-cq2tg1,33,44,1|-cq2tg0,34,44,1|-cnp641,34,44,1|-cnp640,32,42,0|-8pgq01,32,42,0|-8pgq00,54,44,1|-8hjm41,54,44,1|-8hjm40,32,42,0|17qjbz,32,42,0|17qjc0,54,44,1|1h3hvz,54,44,1|1h3hw0,32,42,0|1qglzz,32,42,0|1qgm00,54,44,1|1ztkjz,54,44,1|1ztkk0,32,42,0|296onz,32,42,0|296oo0,54,44,1|2ijn7z,54,44,1|2ijn80,32,42,0|2rwrbz,32,42,0|2rwrc0,54,44,1|319pvz,54,44,1|319pw0,32,42,0|3amtzz,32,42,0|3amu00,54,44,1|3kcr7z,54,44,1|3kcr80,32,42,0|3tcwnz,32,42,0|3tcwo0,54,44,1|432tvz,54,44,1|432tw0,32,42,0|4cfxzz,32,42,0|4cfy00,54,44,1|4lswjz,54,44,1|4lswk0,32,42,0|4v60nz,32,42,0|4v60o0,54,44,1|54iz7z,54,44,1|54iz80,32,42,0|5dw3bz,32,42,0|5dw3c0,54,44,1|5n91vz,54,44,1|5n91w0,32,42,0|5wm5zz,32,42,0|5wm600,54,44,1|65z4jz,54,44,1|65z4k0,32,42,0|6fc8nz,32,42,0|6fc8o0,54,44,1|6p25vz,54,44,1|6p25w0,32,42,0|6y2bbz,32,42,0|6y2bc0,54,44,1|77s8jz,54,44,1|77s8k0,32,42,0|7h5cnz,32,42,0|7h5co0,54,44,1|7qib7z,54,44,1|7qib80,32,42,0|7zvfbz,32,42,0|7zvfc0,54,44,1|898dvz,54,44,1|898dw0,32,42,0|8ilhzz,32,42,0|8ili00,54,44,1|8rygjz,54,44,1|8rygk0,32,42,0|908onz,32,42,0|908oo0,54,44,1|9aoj7z,54,44,1|9aoj80,32,42,0|9iyrbz,32,42,0|9iyrc0,54,44,1|9trkjz,54,44,1|9trkk0,32,42,0|a1otzz,32,42,0|a1ou00,54,44,1|achn7z,54,44,1|achn80,32,42,0|akewnz,32,42,0|akewo0,54,44,1|av7pvz,54,44,1|av7pw0,32,42,0|b3hxzz,32,42,0|b3hy00,54,44,1|bdxsjz,54,44,1|bdxsk0,32,42,0|bm80nz,32,42,0|bm80o0,54,44,1|bwnv7z,54,44,1|bwnv80,32,42,0|c4y3bz,32,42,0|c4y3c0,54,44,1|cfqwjz,54,44,1|cfqwk0,32,42,0|cno5zz,32,42,0|cno600,54,44,1|cygz7z,54,44,1|cygz80,32,42,0|d6e8nz,32,42,0|d6e8o0,54,44,1|dh71vz,54,44,1|dh71w0,32,42,0|dph9zz,32,42,0|dpha00,54,44,1|dzx4jz,54,44,1|dzx4k0,32,42,0|e87cnz,32,42,0|e87co0,54,44,1|ein77z,54,44,1|ein780,32,42,0|eqxfbz,32,42,0|eqxfc0,54,44,1|f1d9vz,54,44,1|f1d9w0,32,42,0|f9nhzz,32,42,0|f9ni00,54,44,1|fkgb7z,54,44,1|fkgb80,32,42,0|fsdknz,32,42,0|fsdko0,54,44,1|g36dvz,54,44,1|g36dw0,32,42,0|gb3nbz,32,42,0|gb3nc0,54,44,1|glwgjz,54,44,1|glwgk0,32,42,0|gu6onz,32,42,0|gu6oo0,54,44,1|h4mj7z,54,44,1|h4mj80,32,42,0|hcwrbz,32,42,0|hcwrc0,54,44,1|hnclvz,54,44,1|hnclw0,32,42,0|hvmtzz,32,42,0|hvmu00,54,44,1|i6fn7z,54,44,1|i6fn80,32,42,0|iecwnz,32,42,0|iecwo0,54,44,1|ip5pvz,54,44,1|ip5pw0,32,42,0|ix2zbz,32,42,0|ix2zc0,54,44,1|j7vsjz,54,44,1|j7vsk0,32,42,0|jeq5zz,32,42,0|jeq600,54,44,1|jqytvz,54,44,1|jqytw0,32,42,0|jxg8nz,32,42,0|jxg8o0,54,44,1|k9owjz,54,44,1|k9owk0,32,42,0|kg6bbz,32,42,0|kg6bc0,54,44,1|ksez7z,54,44,1|ksez80,32,42,0|kz9cnz,32,42,0|kz9co0,54,44,1|lbi0jz,54,44,1|lbi0k0,32,42,0|lhzfbz,32,42,0|lhzfc0,54,44,1|lu837z,54,44,1|lu8380,32,42,0|m0phzz,32,42,0|m0pi00,54,44,1|mcy5vz,54,44,1|mcy5w0,32,42,0|mjfknz,32,42,0|mjfko0,54,44,1|mvo8jz,54,44,1|mvo8k0,32,42,0|n25nbz,32,42,0|n25nc0,54,44,1|neeb7z,54,44,1|neeb80,32,42,0|nkvpzz,32,42,0|nkvq00,54,44,1|nx4dvz,54,44,1|nx4dw0,32,42,0|o3yrbz,32,42,0|o3yrc0,54,44,1|og7f7z,54,44,1|og7f80,32,42,0|omotzz,32,42,0|omou00,54,44,1|oyxhvz,54,44,1|oyxhw0,32,42,0|p5ewnz,32,42,0|p5ewo0,54,44,1|phnkjz,54,44,1|phnkk0,32,42,0|po4zbz,32,42,0|po4zc0,54,44,1|q0dn7z,54,44,1|q0dn80,32,42,0|q6v1zz,32,42,0|q6v200,54,44,1|qj3pvz,54,44,1|qj3pw0,32,42,0|qpy3bz,32,42,0|qpy3c0,54,44,1|r26r7z,54,44,1|r26r80,32,42,0|r8o5zz,32,42,0|r8o600,54,44,1|rkwtvz,54,44,1|rkwtw0,32,42,0|rre8nz,32,42,0|rre8o0,54,44,1|s3mwjz,54,44,1|s3mwk0,32,42,0|sa4bbz,32,42,0|sa4bc0,54,44,1|smcz7z,54,44,1|smcz80,32,42,0|ssudzz,32,42,0|ssue00,54,44,1|t531vz,54,44,1|t531w0,32,42,0|tbkgnz,32,42,0|tbkgo0,54,44,1|tnt4jz,54,44,1|tnt4k0,32,42,0|tunhzz,32,42,0|tuni00,54,44,1|u6w5vz,54,44,1|u6w5w0,32,42,0|uddknz,32,42,0|uddko0,54,44,1|upm8jz,54,44,1|upm8k0,32,42,0|uw3nbz,32,42,0|uw3nc0,54,44,1|v8cb7z,54,44,1|v8cb80,32,42,0|vetpzz,32,42,0|vetq00,54,44,1|vr2dvz,54,44,1|vr2dw0,32,42,0|vxjsnz,32,42,0|vxjso0,54,44,1|w9sgjz,54,44,1|w9sgk0,32,42,0|wgmtzz,32,42,0|wgmu00,54,44,1|wsvhvz,54,44,1|wsvhw0,32,42,0|wzcwnz,32,42,0|wzcwo0,54,44,1|xblkjz,54,44,1|xblkk0,32,42,0|xi2zbz,32,42,0|xi2zc0,54,44,1|xubn7z,54,44,1|xubn80,32,42,0|y0t1zz,32,42,0|y0t200,54,44,1|yd1pvz,54,44,1|yd1pw0,32,42,0|yjj4nz,32,42,0|yjj4o0,54,44,1|yvrsjz,54,44,1|yvrsk0,32,42,0|z297bz,32,42,0|z297c0,54,44,1|zehv7z,54,44,1|zehv80,32,42,0\",\"America/Goose_Bay|,0,98,0|-18vs7h8,24,99,0|-qzp20l,24,99,0|-qzp20k,72,100,1|-qpm64l,72,100,1|-qpm64k,24,99,0|-i52u8l,24,99,0|-i52u8k,24,101,0|-hk3aa1,24,101,0|-hk3aa0,72,102,1|-hcj521,72,102,1|-hcj520,24,101,0|-h1d7m1,24,101,0|-h1d7m0,72,102,1|-gtt2e1,72,102,1|-gtt2e0,24,101,0|-gin4y1,24,101,0|-gin4y0,72,102,1|-gb2zq1,72,102,1|-gb2zq0,24,101,0|-fzk3m1,24,101,0|-fzk3m0,72,102,1|-fscx21,72,102,1|-fscx20,24,101,0|-fgu0y1,24,101,0|-fgu0y0,72,102,1|-f99vq1,72,102,1|-f99vq0,24,101,0|-ey3ya1,24,101,0|-ey3ya0,72,102,1|-eqjt21,72,102,1|-eqjt20,24,101,0|-efdvm1,24,101,0|-efdvm0,25,102,1|-cq2tg1,25,102,1|-cq2tg0,26,102,1|-cnp7i1,26,102,1|-cnp7i0,24,101,0|-cc6be1,24,101,0|-cc6be0,72,102,1|-c4m661,72,102,1|-c4m660,24,101,0|-btg8q1,24,101,0|-btg8q0,72,102,1|-blw3i1,72,102,1|-blw3i0,24,101,0|-baq621,24,101,0|-baq620,72,102,1|-b360u1,72,102,1|-b360u0,24,101,0|-as03e1,24,101,0|-as03e0,72,102,1|-akfy61,72,102,1|-akfy60,24,101,0|-a8x221,24,101,0|-a8x220,72,102,1|-a1cwu1,72,102,1|-a1cwu0,24,101,0|-9qwwq1,24,101,0|-9qwwq0,72,102,1|-9izsu1,72,102,1|-9izsu0,24,101,0|-986u21,24,101,0|-986u20,72,102,1|-909q61,72,102,1|-909q60,24,101,0|-8pgre1,24,101,0|-8pgre0,72,102,1|-8hjni1,72,102,1|-8hjni0,24,101,0|-86qoq1,24,101,0|-86qoq0,72,102,1|-7ytku1,72,102,1|-7ytku0,24,101,0|-7o0m21,24,101,0|-7o0m20,72,102,1|-7g3i61,72,102,1|-7g3i60,24,101,0|-74xkq1,24,101,0|-74xkq0,72,102,1|-6x0gu1,72,102,1|-6x0gu0,24,101,0|-6m7i21,24,101,0|-6m7i20,72,102,1|-6eae61,72,102,1|-6eae60,24,101,0|-63hfe1,24,101,0|-63hfe0,72,102,1|-5vkbi1,72,102,1|-5vkbi0,24,101,0|-5krcq1,24,101,0|-5krcq0,72,102,1|-5cu8u1,72,102,1|-5cu8u0,24,101,0|-521a21,24,101,0|-521a20,72,102,1|-4sbcu1,72,102,1|-4sbcu0,24,101,0|-4iy8q1,24,101,0|-4iy8q0,72,102,1|-49la61,72,102,1|-49la60,24,101,0|-408621,24,101,0|-408620,72,102,1|-3qv7i1,72,102,1|-3qv7i0,24,101,0|-3hi3e1,24,101,0|-3hi3e0,72,102,1|-3854u1,72,102,1|-3854u0,24,101,0|-2ys0q1,24,101,0|-2ys0q0,72,102,1|-2pf261,72,102,1|-2pf260,24,101,0|-2g1y21,24,101,0|-2g1y20,72,102,1|-26c0u1,72,102,1|-26c0u0,24,101,0|-1zdy21,24,101,0|-1zdy20,32,42,0|-1xbu01,32,42,0|-1xbu00,54,44,1|-1nlws1,54,44,1|-1nlws0,32,42,0|-1e8so1,32,42,0|-1e8so0,54,44,1|-14vu41,54,44,1|-14vu40,32,42,0|-viq01,32,42,0|-viq00,54,44,1|-m5rg1,54,44,1|-m5rg0,32,42,0|-csnc1,32,42,0|-csnc0,54,44,1|-3fos1,54,44,1|-3fos0,32,42,0|5xfbz,32,42,0|5xfc0,54,44,1|fadvz,54,44,1|fadw0,32,42,0|onhzz,32,42,0|oni00,54,44,1|ydf7z,54,44,1|ydf80,32,42,0|17qjbz,32,42,0|17qjc0,54,44,1|1h3hvz,54,44,1|1h3hw0,32,42,0|1qglzz,32,42,0|1qgm00,54,44,1|1ztkjz,54,44,1|1ztkk0,32,42,0|296onz,32,42,0|296oo0,54,44,1|2ijn7z,54,44,1|2ijn80,32,42,0|2rwrbz,32,42,0|2rwrc0,54,44,1|319pvz,54,44,1|319pw0,32,42,0|3amtzz,32,42,0|3amu00,54,44,1|3kcr7z,54,44,1|3kcr80,32,42,0|3tcwnz,32,42,0|3tcwo0,54,44,1|432tvz,54,44,1|432tw0,32,42,0|4cfxzz,32,42,0|4cfy00,54,44,1|4lswjz,54,44,1|4lswk0,32,42,0|4v60nz,32,42,0|4v60o0,54,44,1|54iz7z,54,44,1|54iz80,32,42,0|5dw3bz,32,42,0|5dw3c0,54,44,1|5n91vz,54,44,1|5n91w0,32,42,0|5wm5zz,32,42,0|5wm600,54,44,1|65z4jz,54,44,1|65z4k0,32,42,0|6fc8nz,32,42,0|6fc8o0,54,44,1|6p25vz,54,44,1|6p25w0,32,42,0|6y2bbz,32,42,0|6y2bc0,54,44,1|77s8jz,54,44,1|77s8k0,32,42,0|7h5cnz,32,42,0|7h5co0,54,44,1|7qib7z,54,44,1|7qib80,32,42,0|7zvfbz,32,42,0|7zvfc0,54,44,1|898dvz,54,44,1|898dw0,32,42,0|8ilhzz,32,42,0|8ili00,54,44,1|8rygjz,54,44,1|8rygk0,32,42,0|908j5n,32,42,0|908j5o,54,44,1|9aodpn,54,44,1|9aodpo,32,42,0|9iyltn,32,42,0|9iylto,73,45,1|9trc9n,73,45,1|9trc9o,32,42,0|a1oohn,32,42,0|a1ooho,54,44,1|achhpn,54,44,1|achhpo,32,42,0|aker5n,32,42,0|aker5o,54,44,1|av7kdn,54,44,1|av7kdo,32,42,0|b3hshn,32,42,0|b3hsho,54,44,1|bdxn1n,54,44,1|bdxn1o,32,42,0|bm7v5n,32,42,0|bm7v5o,54,44,1|bwnppn,54,44,1|bwnppo,32,42,0|c4xxtn,32,42,0|c4xxto,54,44,1|cfqr1n,54,44,1|cfqr1o,32,42,0|cno0hn,32,42,0|cno0ho,54,44,1|cygtpn,54,44,1|cygtpo,32,42,0|d6e35n,32,42,0|d6e35o,54,44,1|dh6wdn,54,44,1|dh6wdo,32,42,0|dph4hn,32,42,0|dph4ho,54,44,1|dzwz1n,54,44,1|dzwz1o,32,42,0|e8775n,32,42,0|e8775o,54,44,1|ein1pn,54,44,1|ein1po,32,42,0|eqx9tn,32,42,0|eqx9to,54,44,1|f1d4dn,54,44,1|f1d4do,32,42,0|f9nchn,32,42,0|f9ncho,54,44,1|fkg5pn,54,44,1|fkg5po,32,42,0|fsdf5n,32,42,0|fsdf5o,54,44,1|g368dn,54,44,1|g368do,32,42,0|gb3htn,32,42,0|gb3hto,54,44,1|glwb1n,54,44,1|glwb1o,32,42,0|gu6j5n,32,42,0|gu6j5o,54,44,1|h4mdpn,54,44,1|h4mdpo,32,42,0|hcwltn,32,42,0|hcwlto,54,44,1|hncgdn,54,44,1|hncgdo,32,42,0|hvmohn,32,42,0|hvmoho,54,44,1|i6fhpn,54,44,1|i6fhpo,32,42,0|iecr5n,32,42,0|iecr5o,54,44,1|ip5kdn,54,44,1|ip5kdo,32,42,0|ix2ttn,32,42,0|ix2tto,54,44,1|j7vn1n,54,44,1|j7vn1o,32,42,0|jeq0hn,32,42,0|jeq0ho,54,44,1|jqyodn,54,44,1|jqyodo,32,42,0|jxg35n,32,42,0|jxg35o,54,44,1|k9or1n,54,44,1|k9or1o,32,42,0|kg65tn,32,42,0|kg65to,54,44,1|ksetpn,54,44,1|ksetpo,32,42,0|kz975n,32,42,0|kz975o,54,44,1|lbhv1n,54,44,1|lbhv1o,32,42,0|lhz9tn,32,42,0|lhz9to,54,44,1|lu837z,54,44,1|lu8380,32,42,0|m0phzz,32,42,0|m0pi00,54,44,1|mcy5vz,54,44,1|mcy5w0,32,42,0|mjfknz,32,42,0|mjfko0,54,44,1|mvo8jz,54,44,1|mvo8k0,32,42,0|n25nbz,32,42,0|n25nc0,54,44,1|neeb7z,54,44,1|neeb80,32,42,0|nkvpzz,32,42,0|nkvq00,54,44,1|nx4dvz,54,44,1|nx4dw0,32,42,0|o3yrbz,32,42,0|o3yrc0,54,44,1|og7f7z,54,44,1|og7f80,32,42,0|omotzz,32,42,0|omou00,54,44,1|oyxhvz,54,44,1|oyxhw0,32,42,0|p5ewnz,32,42,0|p5ewo0,54,44,1|phnkjz,54,44,1|phnkk0,32,42,0|po4zbz,32,42,0|po4zc0,54,44,1|q0dn7z,54,44,1|q0dn80,32,42,0|q6v1zz,32,42,0|q6v200,54,44,1|qj3pvz,54,44,1|qj3pw0,32,42,0|qpy3bz,32,42,0|qpy3c0,54,44,1|r26r7z,54,44,1|r26r80,32,42,0|r8o5zz,32,42,0|r8o600,54,44,1|rkwtvz,54,44,1|rkwtw0,32,42,0|rre8nz,32,42,0|rre8o0,54,44,1|s3mwjz,54,44,1|s3mwk0,32,42,0|sa4bbz,32,42,0|sa4bc0,54,44,1|smcz7z,54,44,1|smcz80,32,42,0|ssudzz,32,42,0|ssue00,54,44,1|t531vz,54,44,1|t531w0,32,42,0|tbkgnz,32,42,0|tbkgo0,54,44,1|tnt4jz,54,44,1|tnt4k0,32,42,0|tunhzz,32,42,0|tuni00,54,44,1|u6w5vz,54,44,1|u6w5w0,32,42,0|uddknz,32,42,0|uddko0,54,44,1|upm8jz,54,44,1|upm8k0,32,42,0|uw3nbz,32,42,0|uw3nc0,54,44,1|v8cb7z,54,44,1|v8cb80,32,42,0|vetpzz,32,42,0|vetq00,54,44,1|vr2dvz,54,44,1|vr2dw0,32,42,0|vxjsnz,32,42,0|vxjso0,54,44,1|w9sgjz,54,44,1|w9sgk0,32,42,0|wgmtzz,32,42,0|wgmu00,54,44,1|wsvhvz,54,44,1|wsvhw0,32,42,0|wzcwnz,32,42,0|wzcwo0,54,44,1|xblkjz,54,44,1|xblkk0,32,42,0|xi2zbz,32,42,0|xi2zc0,54,44,1|xubn7z,54,44,1|xubn80,32,42,0|y0t1zz,32,42,0|y0t200,54,44,1|yd1pvz,54,44,1|yd1pw0,32,42,0|yjj4nz,32,42,0|yjj4o0,54,44,1|yvrsjz,54,44,1|yvrsk0,32,42,0|z297bz,32,42,0|z297c0,54,44,1|zehv7z,54,44,1|zehv80,32,42,0\",\"America/Grand_Turk|,0,103,0|-15r0w5s,74,104,0|-u85og3,74,104,0|-u85og2,49,63,0|4v63fz,49,63,0|4v63g0,62,42,1|54j1zz,62,42,1|54j200,49,63,0|5dw63z,49,63,0|5dw640,62,42,1|5n94nz,62,42,1|5n94o0,49,63,0|5wm8rz,49,63,0|5wm8s0,62,42,1|65z7bz,62,42,1|65z7c0,49,63,0|6fcbfz,49,63,0|6fcbg0,62,42,1|6p28nz,62,42,1|6p28o0,49,63,0|6y2e3z,49,63,0|6y2e40,62,42,1|77sbbz,62,42,1|77sbc0,49,63,0|7h5ffz,49,63,0|7h5fg0,62,42,1|7qidzz,62,42,1|7qie00,49,63,0|7zvi3z,49,63,0|7zvi40,62,42,1|898gnz,62,42,1|898go0,49,63,0|8ilkrz,49,63,0|8ilks0,62,42,1|8ryjbz,62,42,1|8ryjc0,49,63,0|908rfz,49,63,0|908rg0,62,42,1|9aolzz,62,42,1|9aom00,49,63,0|9iyu3z,49,63,0|9iyu40,62,42,1|9trnbz,62,42,1|9trnc0,49,63,0|a1owrz,49,63,0|a1ows0,62,42,1|achpzz,62,42,1|achq00,49,63,0|akezfz,49,63,0|akezg0,62,42,1|av7snz,62,42,1|av7so0,49,63,0|b3i0rz,49,63,0|b3i0s0,62,42,1|bdxvbz,62,42,1|bdxvc0,49,63,0|bm83fz,49,63,0|bm83g0,62,42,1|bwnxzz,62,42,1|bwny00,49,63,0|c4y63z,49,63,0|c4y640,62,42,1|cfqzbz,62,42,1|cfqzc0,49,63,0|cno8rz,49,63,0|cno8s0,62,42,1|cyh1zz,62,42,1|cyh200,49,63,0|d6ebfz,49,63,0|d6ebg0,62,42,1|dh74nz,62,42,1|dh74o0,49,63,0|dphcrz,49,63,0|dphcs0,62,42,1|dzx7bz,62,42,1|dzx7c0,49,63,0|e87ffz,49,63,0|e87fg0,62,42,1|ein9zz,62,42,1|eina00,49,63,0|eqxi3z,49,63,0|eqxi40,62,42,1|f1dcnz,62,42,1|f1dco0,49,63,0|f9nkrz,49,63,0|f9nks0,62,42,1|fkgdzz,62,42,1|fkge00,49,63,0|fsdnfz,49,63,0|fsdng0,62,42,1|g36gnz,62,42,1|g36go0,49,63,0|gb3q3z,49,63,0|gb3q40,62,42,1|glwjbz,62,42,1|glwjc0,49,63,0|gu6rfz,49,63,0|gu6rg0,62,42,1|h4mlzz,62,42,1|h4mm00,49,63,0|hcwu3z,49,63,0|hcwu40,62,42,1|hnconz,62,42,1|hncoo0,49,63,0|hvmwrz,49,63,0|hvmws0,62,42,1|i6fpzz,62,42,1|i6fq00,49,63,0|ieczfz,49,63,0|ieczg0,62,42,1|ip5snz,62,42,1|ip5so0,49,63,0|ix323z,49,63,0|ix3240,62,42,1|j7vvbz,62,42,1|j7vvc0,49,63,0|jeq8rz,49,63,0|jeq8s0,62,42,1|jqywnz,62,42,1|jqywo0,49,63,0|jxgbfz,49,63,0|jxgbg0,62,42,1|k9ozbz,62,42,1|k9ozc0,49,63,0|kg6e3z,49,63,0|kg6e40,62,42,1|ksf1zz,62,42,1|ksf200,49,63,0|kz9ffz,49,63,0|kz9fg0,62,42,1|lbi3bz,62,42,1|lbi3c0,49,63,0|lhzi3z,49,63,0|lhzi40,62,42,1|lu85zz,62,42,1|lu8600,49,63,0|m0pkrz,49,63,0|m0pks0,62,42,1|mcy8nz,62,42,1|mcy8o0,49,63,0|mjfnfz,49,63,0|mjfng0,62,42,1|mvobbz,62,42,1|mvobc0,49,63,0|n25q3z,49,63,0|n25q40,62,42,1|needzz,62,42,1|neee00,49,63,0|nkvsrz,49,63,0|nkvss0,32,42,0|p5ezfz,32,42,0|p5ezg0,62,42,1|phnnbz,62,42,1|phnnc0,49,63,0|po523z,49,63,0|po5240,62,42,1|q0dpzz,62,42,1|q0dq00,49,63,0|q6v4rz,49,63,0|q6v4s0,62,42,1|qj3snz,62,42,1|qj3so0,49,63,0|qpy63z,49,63,0|qpy640,62,42,1|r26tzz,62,42,1|r26u00,49,63,0|r8o8rz,49,63,0|r8o8s0,62,42,1|rkwwnz,62,42,1|rkwwo0,49,63,0|rrebfz,49,63,0|rrebg0,62,42,1|s3mzbz,62,42,1|s3mzc0,49,63,0|sa4e3z,49,63,0|sa4e40,62,42,1|smd1zz,62,42,1|smd200,49,63,0|ssugrz,49,63,0|ssugs0,62,42,1|t534nz,62,42,1|t534o0,49,63,0|tbkjfz,49,63,0|tbkjg0,62,42,1|tnt7bz,62,42,1|tnt7c0,49,63,0|tunkrz,49,63,0|tunks0,62,42,1|u6w8nz,62,42,1|u6w8o0,49,63,0|uddnfz,49,63,0|uddng0,62,42,1|upmbbz,62,42,1|upmbc0,49,63,0|uw3q3z,49,63,0|uw3q40,62,42,1|v8cdzz,62,42,1|v8ce00,49,63,0|vetsrz,49,63,0|vetss0,62,42,1|vr2gnz,62,42,1|vr2go0,49,63,0|vxjvfz,49,63,0|vxjvg0,62,42,1|w9sjbz,62,42,1|w9sjc0,49,63,0|wgmwrz,49,63,0|wgmws0,62,42,1|wsvknz,62,42,1|wsvko0,49,63,0|wzczfz,49,63,0|wzczg0,62,42,1|xblnbz,62,42,1|xblnc0,49,63,0|xi323z,49,63,0|xi3240,62,42,1|xubpzz,62,42,1|xubq00,49,63,0|y0t4rz,49,63,0|y0t4s0,62,42,1|yd1snz,62,42,1|yd1so0,49,63,0|yjj7fz,49,63,0|yjj7g0,62,42,1|yvrvbz,62,42,1|yvrvc0,49,63,0|z29a3z,49,63,0|z29a40,62,42,1|zehxzz,62,42,1|zehy00,49,63,0\",\"America/Grenada|,0,41,0|-u6m79w,32,42,0\",\"America/Guadeloupe|,0,41,0|-u6m79w,32,42,0\",\"America/Guatemala|,0,105,0|-qqqskk,45,62,0|219hzz,45,62,0|219i00,46,63,1|25xxvz,46,63,1|25xxw0,45,62,0|6zgbbz,45,62,0|6zgbc0,46,63,1|75tv7z,46,63,1|75tv80,45,62,0|b2q5zz,45,62,0|b2q600,46,63,1|bbd77z,46,63,1|bbd780,45,62,0|iyitzz,45,62,0|iyiu00,46,63,1|j6fxvz,46,63,1|j6fxw0,45,62,0\",\"America/Guayaquil|,0,106,0|-15r0ujs,75,107,0|-kcr84p,75,107,0|-kcr84o,56,63,0|byetvz,56,63,0|byetw0,42,42,1|c1yj3z,42,42,1|c1yj40,56,63,0\",\"America/Guyana|,0,108,0|-smcak8,76,109,0|2wsiez,76,109,0|2wsif0,39,44,0|ayjxnz,39,44,0|ayjxo0,42,42,0\",\"America/Halifax|,0,110,0|-z94k80,32,42,0|-s1x3k1,32,42,0|-s1x3k0,54,44,1|-rsiac1,54,44,1|-rsiac0,32,42,0|-qzp0o1,32,42,0|-qzp0o0,54,44,1|-qpm4s1,54,44,1|-qpm4s0,32,42,0|-pwt681,32,42,0|-pwt680,54,44,1|-pr1uc1,54,44,1|-pr1uc0,32,42,0|-pe6sw1,32,42,0|-pe6sw0,54,44,1|-p7wyc1,54,44,1|-p7wyc0,32,42,0|-ovpzk1,32,42,0|-ovpzk0,54,44,1|-op5101,54,44,1|-op5100,32,42,0|-ocmy81,32,42,0|-ocmy80,54,44,1|-o6eyc1,54,44,1|-o6eyc0,32,42,0|-ntwvk1,32,42,0|-ntwvk0,54,44,1|-nn0t01,54,44,1|-nn0t00,32,42,0|-nb6sw1,32,42,0|-nb6sw0,54,44,1|-n3kt01,54,44,1|-n3kt00,32,42,0|-mrqsw1,32,42,0|-mrqsw0,54,44,1|-mlkno1,54,44,1|-mlkno0,32,42,0|-m9qnk1,32,42,0|-m9qnk0,54,44,1|-m24no1,54,44,1|-m24no0,32,42,0|-lqank1,32,42,0|-lqank0,54,44,1|-lk6d01,54,44,1|-lk6d00,32,42,0|-l7kkw1,32,42,0|-l7kkw0,54,44,1|-l1pjo1,54,44,1|-l1pjo0,32,42,0|-koui81,32,42,0|-koui80,54,44,1|-kibec1,54,44,1|-kibec0,32,42,0|-k64fk1,32,42,0|-k64fk0,54,44,1|-jyvec1,54,44,1|-jyvec0,32,42,0|-jnrbk1,32,42,0|-jnrbk0,54,44,1|-jg5bo1,54,44,1|-jg5bo0,32,42,0|-j518w1,32,42,0|-j518w0,54,44,1|-ix2ac1,54,44,1|-ix2ac0,32,42,0|-il8a81,32,42,0|-il8a80,54,44,1|-if3zo1,54,44,1|-if3zo0,32,42,0|-i1sa81,32,42,0|-i1sa80,54,44,1|-hvm501,54,44,1|-hvm500,32,42,0|-hj0cw1,32,42,0|-hj0cw0,54,44,1|-hdlzo1,54,44,1|-hdlzo0,32,42,0|-h1rzk1,32,42,0|-h1rzk0,54,44,1|-gu5zo1,54,44,1|-gu5zo0,32,42,0|-gj1ww1,32,42,0|-gj1ww0,54,44,1|-gbfx01,54,44,1|-gbfx00,32,42,0|-fyvzk1,32,42,0|-fyvzk0,54,44,1|-fspuc1,54,44,1|-fspuc0,32,42,0|-fh8sw1,32,42,0|-fh8sw0,54,44,1|-f9mt01,54,44,1|-f9mt00,32,42,0|-eyiq81,32,42,0|-eyiq80,54,44,1|-eqwqc1,54,44,1|-eqwqc0,32,42,0|-ek27c1,32,42,0|-ek27c0,33,44,1|-cq2tg1,33,44,1|-cq2tg0,34,44,1|-cnp641,34,44,1|-cnp640,32,42,0|-ccw7c1,32,42,0|-ccw7c0,54,44,1|-c4z3g1,54,44,1|-c4z3g0,32,42,0|-bu64o1,32,42,0|-bu64o0,54,44,1|-bm90s1,54,44,1|-bm90s0,32,42,0|-bbg201,32,42,0|-bbg200,54,44,1|-b3iy41,54,44,1|-b3iy40,32,42,0|-aspzc1,32,42,0|-aspzc0,54,44,1|-aksvg1,54,44,1|-aksvg0,32,42,0|-9qwvc1,32,42,0|-9qwvc0,54,44,1|-9izrg1,54,44,1|-9izrg0,32,42,0|-986so1,32,42,0|-986so0,54,44,1|-909os1,54,44,1|-909os0,32,42,0|-8pgq01,32,42,0|-8pgq00,54,44,1|-8hjm41,54,44,1|-8hjm40,32,42,0|-86qnc1,32,42,0|-86qnc0,54,44,1|-7ytjg1,54,44,1|-7ytjg0,32,42,0|-74xjc1,32,42,0|-74xjc0,54,44,1|-6x0fg1,54,44,1|-6x0fg0,32,42,0|-6m7go1,32,42,0|-6m7go0,54,44,1|-6eacs1,54,44,1|-6eacs0,32,42,0|-63he01,32,42,0|-63he00,54,44,1|-5vka41,54,44,1|-5vka40,32,42,0|-5krbc1,32,42,0|-5krbc0,54,44,1|-5cu7g1,54,44,1|-5cu7g0,32,42,0|-4084o1,32,42,0|-4084o0,54,44,1|-3qv641,54,44,1|-3qv640,32,42,0|-3hi201,32,42,0|-3hi200,54,44,1|-3853g1,54,44,1|-3853g0,32,42,0|-2yrzc1,32,42,0|-2yrzc0,54,44,1|-2pf0s1,54,44,1|-2pf0s0,32,42,0|-2g1wo1,32,42,0|-2g1wo0,54,44,1|-26bzg1,54,44,1|-26bzg0,32,42,0|-1xbu01,32,42,0|-1xbu00,54,44,1|-1nlws1,54,44,1|-1nlws0,32,42,0|-1e8so1,32,42,0|-1e8so0,54,44,1|-14vu41,54,44,1|-14vu40,32,42,0|-viq01,32,42,0|-viq00,54,44,1|-m5rg1,54,44,1|-m5rg0,32,42,0|-csnc1,32,42,0|-csnc0,54,44,1|-3fos1,54,44,1|-3fos0,32,42,0|5xfbz,32,42,0|5xfc0,54,44,1|fadvz,54,44,1|fadw0,32,42,0|onhzz,32,42,0|oni00,54,44,1|ydf7z,54,44,1|ydf80,32,42,0|17qjbz,32,42,0|17qjc0,54,44,1|1h3hvz,54,44,1|1h3hw0,32,42,0|1qglzz,32,42,0|1qgm00,54,44,1|1ztkjz,54,44,1|1ztkk0,32,42,0|296onz,32,42,0|296oo0,54,44,1|2ijn7z,54,44,1|2ijn80,32,42,0|2rwrbz,32,42,0|2rwrc0,54,44,1|319pvz,54,44,1|319pw0,32,42,0|3amtzz,32,42,0|3amu00,54,44,1|3kcr7z,54,44,1|3kcr80,32,42,0|3tcwnz,32,42,0|3tcwo0,54,44,1|432tvz,54,44,1|432tw0,32,42,0|4cfxzz,32,42,0|4cfy00,54,44,1|4lswjz,54,44,1|4lswk0,32,42,0|4v60nz,32,42,0|4v60o0,54,44,1|54iz7z,54,44,1|54iz80,32,42,0|5dw3bz,32,42,0|5dw3c0,54,44,1|5n91vz,54,44,1|5n91w0,32,42,0|5wm5zz,32,42,0|5wm600,54,44,1|65z4jz,54,44,1|65z4k0,32,42,0|6fc8nz,32,42,0|6fc8o0,54,44,1|6p25vz,54,44,1|6p25w0,32,42,0|6y2bbz,32,42,0|6y2bc0,54,44,1|77s8jz,54,44,1|77s8k0,32,42,0|7h5cnz,32,42,0|7h5co0,54,44,1|7qib7z,54,44,1|7qib80,32,42,0|7zvfbz,32,42,0|7zvfc0,54,44,1|898dvz,54,44,1|898dw0,32,42,0|8ilhzz,32,42,0|8ili00,54,44,1|8rygjz,54,44,1|8rygk0,32,42,0|908onz,32,42,0|908oo0,54,44,1|9aoj7z,54,44,1|9aoj80,32,42,0|9iyrbz,32,42,0|9iyrc0,54,44,1|9trkjz,54,44,1|9trkk0,32,42,0|a1otzz,32,42,0|a1ou00,54,44,1|achn7z,54,44,1|achn80,32,42,0|akewnz,32,42,0|akewo0,54,44,1|av7pvz,54,44,1|av7pw0,32,42,0|b3hxzz,32,42,0|b3hy00,54,44,1|bdxsjz,54,44,1|bdxsk0,32,42,0|bm80nz,32,42,0|bm80o0,54,44,1|bwnv7z,54,44,1|bwnv80,32,42,0|c4y3bz,32,42,0|c4y3c0,54,44,1|cfqwjz,54,44,1|cfqwk0,32,42,0|cno5zz,32,42,0|cno600,54,44,1|cygz7z,54,44,1|cygz80,32,42,0|d6e8nz,32,42,0|d6e8o0,54,44,1|dh71vz,54,44,1|dh71w0,32,42,0|dph9zz,32,42,0|dpha00,54,44,1|dzx4jz,54,44,1|dzx4k0,32,42,0|e87cnz,32,42,0|e87co0,54,44,1|ein77z,54,44,1|ein780,32,42,0|eqxfbz,32,42,0|eqxfc0,54,44,1|f1d9vz,54,44,1|f1d9w0,32,42,0|f9nhzz,32,42,0|f9ni00,54,44,1|fkgb7z,54,44,1|fkgb80,32,42,0|fsdknz,32,42,0|fsdko0,54,44,1|g36dvz,54,44,1|g36dw0,32,42,0|gb3nbz,32,42,0|gb3nc0,54,44,1|glwgjz,54,44,1|glwgk0,32,42,0|gu6onz,32,42,0|gu6oo0,54,44,1|h4mj7z,54,44,1|h4mj80,32,42,0|hcwrbz,32,42,0|hcwrc0,54,44,1|hnclvz,54,44,1|hnclw0,32,42,0|hvmtzz,32,42,0|hvmu00,54,44,1|i6fn7z,54,44,1|i6fn80,32,42,0|iecwnz,32,42,0|iecwo0,54,44,1|ip5pvz,54,44,1|ip5pw0,32,42,0|ix2zbz,32,42,0|ix2zc0,54,44,1|j7vsjz,54,44,1|j7vsk0,32,42,0|jeq5zz,32,42,0|jeq600,54,44,1|jqytvz,54,44,1|jqytw0,32,42,0|jxg8nz,32,42,0|jxg8o0,54,44,1|k9owjz,54,44,1|k9owk0,32,42,0|kg6bbz,32,42,0|kg6bc0,54,44,1|ksez7z,54,44,1|ksez80,32,42,0|kz9cnz,32,42,0|kz9co0,54,44,1|lbi0jz,54,44,1|lbi0k0,32,42,0|lhzfbz,32,42,0|lhzfc0,54,44,1|lu837z,54,44,1|lu8380,32,42,0|m0phzz,32,42,0|m0pi00,54,44,1|mcy5vz,54,44,1|mcy5w0,32,42,0|mjfknz,32,42,0|mjfko0,54,44,1|mvo8jz,54,44,1|mvo8k0,32,42,0|n25nbz,32,42,0|n25nc0,54,44,1|neeb7z,54,44,1|neeb80,32,42,0|nkvpzz,32,42,0|nkvq00,54,44,1|nx4dvz,54,44,1|nx4dw0,32,42,0|o3yrbz,32,42,0|o3yrc0,54,44,1|og7f7z,54,44,1|og7f80,32,42,0|omotzz,32,42,0|omou00,54,44,1|oyxhvz,54,44,1|oyxhw0,32,42,0|p5ewnz,32,42,0|p5ewo0,54,44,1|phnkjz,54,44,1|phnkk0,32,42,0|po4zbz,32,42,0|po4zc0,54,44,1|q0dn7z,54,44,1|q0dn80,32,42,0|q6v1zz,32,42,0|q6v200,54,44,1|qj3pvz,54,44,1|qj3pw0,32,42,0|qpy3bz,32,42,0|qpy3c0,54,44,1|r26r7z,54,44,1|r26r80,32,42,0|r8o5zz,32,42,0|r8o600,54,44,1|rkwtvz,54,44,1|rkwtw0,32,42,0|rre8nz,32,42,0|rre8o0,54,44,1|s3mwjz,54,44,1|s3mwk0,32,42,0|sa4bbz,32,42,0|sa4bc0,54,44,1|smcz7z,54,44,1|smcz80,32,42,0|ssudzz,32,42,0|ssue00,54,44,1|t531vz,54,44,1|t531w0,32,42,0|tbkgnz,32,42,0|tbkgo0,54,44,1|tnt4jz,54,44,1|tnt4k0,32,42,0|tunhzz,32,42,0|tuni00,54,44,1|u6w5vz,54,44,1|u6w5w0,32,42,0|uddknz,32,42,0|uddko0,54,44,1|upm8jz,54,44,1|upm8k0,32,42,0|uw3nbz,32,42,0|uw3nc0,54,44,1|v8cb7z,54,44,1|v8cb80,32,42,0|vetpzz,32,42,0|vetq00,54,44,1|vr2dvz,54,44,1|vr2dw0,32,42,0|vxjsnz,32,42,0|vxjso0,54,44,1|w9sgjz,54,44,1|w9sgk0,32,42,0|wgmtzz,32,42,0|wgmu00,54,44,1|wsvhvz,54,44,1|wsvhw0,32,42,0|wzcwnz,32,42,0|wzcwo0,54,44,1|xblkjz,54,44,1|xblkk0,32,42,0|xi2zbz,32,42,0|xi2zc0,54,44,1|xubn7z,54,44,1|xubn80,32,42,0|y0t1zz,32,42,0|y0t200,54,44,1|yd1pvz,54,44,1|yd1pw0,32,42,0|yjj4nz,32,42,0|yjj4o0,54,44,1|yvrsjz,54,44,1|yvrsk0,32,42,0|z297bz,32,42,0|z297c0,54,44,1|zehv7z,54,44,1|zehv80,32,42,0\",\"America/Havana|,0,111,0|-15r0u2w,77,112,0|-n7762p,77,112,0|-n7762o,45,63,0|-louq41,45,63,0|-louq40,46,42,1|-likvk1,46,42,1|-likvk0,45,63,0|-ffsvg1,45,63,0|-ffsvg0,46,42,1|-fb4fk1,46,42,1|-fb4fk0,45,63,0|-ex2ss1,45,63,0|-ex2ss0,46,42,1|-es1e81,46,42,1|-es1e80,45,63,0|-edzrg1,45,63,0|-edzrg0,46,42,1|-e9bbk1,46,42,1|-e9bbk0,45,63,0|-cttjg1,45,63,0|-cttjg0,46,42,1|-cp53k1,46,42,1|-cp53k0,45,63,0|-cb3gs1,45,63,0|-cb3gs0,46,42,1|-c6f0w1,46,42,1|-c6f0w0,45,63,0|-2e5gs1,45,63,0|-2e5gs0,46,42,1|-27xgw1,46,42,1|-27xgw0,45,63,0|-1vj3g1,45,63,0|-1vj3g0,46,42,1|-1p1u81,46,42,1|-1p1u80,45,63,0|-1fdm41,45,63,0|-1fdm40,46,42,1|-17enk1,46,42,1|-17enk0,45,63,0|-w8q41,45,63,0|-w8q40,46,42,1|-ookw1,46,42,1|-ookw0,45,63,0|-csq41,45,63,0|-csq40,46,42,1|-3frk1,46,42,1|-3frk0,45,63,0|5xcjz,45,63,0|5xck0,46,42,1|fab3z,46,42,1|fab40,45,63,0|onf7z,45,63,0|onf80,46,42,1|ydcfz,46,42,1|ydcg0,45,63,0|17qgjz,45,63,0|17qgk0,46,42,1|1g0j3z,46,42,1|1g0j40,45,63,0|1qgj7z,45,63,0|1qgj80,46,42,1|1ysgfz,46,42,1|1ysgg0,45,63,0|296lvz,45,63,0|296lw0,46,42,1|2hkdrz,46,42,1|2hkds0,45,63,0|2rwojz,45,63,0|2rwok0,46,42,1|319n3z,46,42,1|319n40,45,63,0|3amr7z,45,63,0|3amr80,46,42,1|3kcofz,46,42,1|3kcog0,45,63,0|3tctvz,45,63,0|3tctw0,46,42,1|432r3z,46,42,1|432r40,45,63,0|4cstvz,45,63,0|4cstw0,46,42,1|4kpxrz,46,42,1|4kpxs0,45,63,0|4t05vz,45,63,0|4t05w0,46,42,1|53sz3z,46,42,1|53sz40,45,63,0|5bq8jz,45,63,0|5bq8k0,46,42,1|5mj1rz,46,42,1|5mj1s0,45,63,0|5xc0jz,45,63,0|5xc0k0,46,42,1|6594fz,46,42,1|6594g0,45,63,0|6g237z,45,63,0|6g2380,46,42,1|6nz73z,46,42,1|6nz740,45,63,0|6ys5vz,45,63,0|6ys5w0,46,42,1|76p9rz,46,42,1|76p9s0,45,63,0|7hi8jz,45,63,0|7hi8k0,46,42,1|7psb3z,46,42,1|7psb40,45,63,0|808b7z,45,63,0|808b80,46,42,1|88idrz,46,42,1|88ids0,45,63,0|8gfn7z,45,63,0|8gfn80,46,42,1|8r8gfz,46,42,1|8r8gg0,45,63,0|8z5pvz,45,63,0|8z5pw0,46,42,1|99yj3z,46,42,1|99yj40,45,63,0|9i8r7z,45,63,0|9i8r80,46,42,1|9solrz,46,42,1|9sols0,45,63,0|a0ytvz,45,63,0|a0ytw0,46,42,1|abeofz,46,42,1|abeog0,45,63,0|aketvz,45,63,0|aketw0,46,42,1|auhprz,46,42,1|auhps0,45,63,0|b3hv7z,45,63,0|b3hv80,46,42,1|bd7v7z,46,42,1|bd7v80,45,63,0|bm7xvz,45,63,0|bm7xw0,46,42,1|bvxxvz,46,42,1|bvxxw0,45,63,0|c4y0jz,45,63,0|c4y0k0,46,42,1|ceo0jz,46,42,1|ceo0k0,45,63,0|cno37z,45,63,0|cno380,46,42,1|cxe37z,46,42,1|cxe380,45,63,0|d6e5vz,45,63,0|d6e5w0,46,42,1|dg45vz,46,42,1|dg45w0,45,63,0|dph77z,45,63,0|dph780,46,42,1|dyu8jz,46,42,1|dyu8k0,45,63,0|e879vz,45,63,0|e879w0,46,42,1|ehx9vz,46,42,1|ehx9w0,45,63,0|eqkdvz,45,63,0|eqkdw0,46,42,1|f1d9vz,46,42,1|f1d9w0,45,63,0|f9agjz,45,63,0|f9agk0,46,42,1|fkgb7z,46,42,1|fkgb80,45,63,0|fsdhvz,45,63,0|fsdhw0,46,42,1|g36dvz,46,42,1|g36dw0,45,63,0|gb3kjz,45,63,0|gb3kk0,46,42,1|glwgjz,46,42,1|glwgk0,45,63,0|gu6lvz,45,63,0|gu6lw0,46,42,1|h4mj7z,46,42,1|h4mj80,45,63,0|hcwojz,45,63,0|hcwok0,46,42,1|hnclvz,46,42,1|hnclw0,45,63,0|hv9sjz,45,63,0|hv9sk0,46,42,1|j7vsjz,46,42,1|j7vsk0,45,63,0|jeq37z,45,63,0|jeq380,46,42,1|jqlv7z,46,42,1|jqlv80,45,63,0|jxt4jz,45,63,0|jxt4k0,46,42,1|k9bxvz,46,42,1|k9bxw0,45,63,0|kg68jz,45,63,0|kg68k0,46,42,1|ks20jz,46,42,1|ks20k0,45,63,0|kz99vz,45,63,0|kz99w0,46,42,1|lb51vz,46,42,1|lb51w0,45,63,0|licb7z,45,63,0|licb80,46,42,1|lul1vz,46,42,1|lul1w0,45,63,0|m1sb7z,45,63,0|m1sb80,46,42,1|mcy5vz,46,42,1|mcy5w0,45,63,0|mjfhvz,45,63,0|mjfhw0,46,42,1|mvo8jz,46,42,1|mvo8k0,45,63,0|n25kjz,45,63,0|n25kk0,46,42,1|neeb7z,46,42,1|neeb80,45,63,0|nkvn7z,45,63,0|nkvn80,46,42,1|nx4dvz,46,42,1|nx4dw0,45,63,0|o3yojz,45,63,0|o3yok0,46,42,1|og7f7z,46,42,1|og7f80,45,63,0|omor7z,45,63,0|omor80,46,42,1|oyxhvz,46,42,1|oyxhw0,45,63,0|p5etvz,45,63,0|p5etw0,46,42,1|phnkjz,46,42,1|phnkk0,45,63,0|po4wjz,45,63,0|po4wk0,46,42,1|q0dn7z,46,42,1|q0dn80,45,63,0|q6uz7z,45,63,0|q6uz80,46,42,1|qj3pvz,46,42,1|qj3pw0,45,63,0|qpy0jz,45,63,0|qpy0k0,46,42,1|r26r7z,46,42,1|r26r80,45,63,0|r8o37z,45,63,0|r8o380,46,42,1|rkwtvz,46,42,1|rkwtw0,45,63,0|rre5vz,45,63,0|rre5w0,46,42,1|s3mwjz,46,42,1|s3mwk0,45,63,0|sa48jz,45,63,0|sa48k0,46,42,1|smcz7z,46,42,1|smcz80,45,63,0|ssub7z,45,63,0|ssub80,46,42,1|t531vz,46,42,1|t531w0,45,63,0|tbkdvz,45,63,0|tbkdw0,46,42,1|tnt4jz,46,42,1|tnt4k0,45,63,0|tunf7z,45,63,0|tunf80,46,42,1|u6w5vz,46,42,1|u6w5w0,45,63,0|uddhvz,45,63,0|uddhw0,46,42,1|upm8jz,46,42,1|upm8k0,45,63,0|uw3kjz,45,63,0|uw3kk0,46,42,1|v8cb7z,46,42,1|v8cb80,45,63,0|vetn7z,45,63,0|vetn80,46,42,1|vr2dvz,46,42,1|vr2dw0,45,63,0|vxjpvz,45,63,0|vxjpw0,46,42,1|w9sgjz,46,42,1|w9sgk0,45,63,0|wgmr7z,45,63,0|wgmr80,46,42,1|wsvhvz,46,42,1|wsvhw0,45,63,0|wzctvz,45,63,0|wzctw0,46,42,1|xblkjz,46,42,1|xblkk0,45,63,0|xi2wjz,45,63,0|xi2wk0,46,42,1|xubn7z,46,42,1|xubn80,45,63,0|y0sz7z,45,63,0|y0sz80,46,42,1|yd1pvz,46,42,1|yd1pw0,45,63,0|yjj1vz,45,63,0|yjj1w0,46,42,1|yvrsjz,46,42,1|yvrsk0,45,63,0|z294jz,45,63,0|z294k0,46,42,1|zehv7z,46,42,1|zehv80,45,63,0\",\"America/Hermosillo|,0,113,0|-p1u4k0,50,66,0|-m7mko1,50,66,0|-m7mko0,45,62,0|-kf67c1,45,62,0|-kf67c0,50,66,0|-k6j3c1,50,66,0|-k6j3c0,45,62,0|-jypm01,45,62,0|-jypm00,50,66,0|-jpan81,50,66,0|-jpan80,45,62,0|-eg9601,45,62,0|-eg9600,50,66,0|-axv381,50,66,0|-axv380,51,40,0|m7z,51,40,0|m80,50,66,0|dphibz,50,66,0|dphic0,52,62,1|dzxcvz,52,62,1|dzxcw0,50,66,0|e87kzz,50,66,0|e87l00,52,62,1|einfjz,52,62,1|einfk0,50,66,0|eqxnnz,50,66,0|eqxno0,52,62,1|f1di7z,52,62,1|f1di80,50,66,0\",\"America/Indiana/Indianapolis|,0,114,0|-18y0m00,45,62,0|-r0esg1,45,62,0|-r0esg0,46,63,1|-qplz81,46,63,1|-qplz80,45,62,0|-qhops1,45,62,0|-qhops0,46,63,1|-q6vwk1,46,63,1|-q6vwk0,45,62,0|-evzog1,45,62,0|-evzog0,46,63,1|-eqy9w1,46,63,1|-eqy9w0,45,62,0|-ek21s1,45,62,0|-ek21s0,47,63,1|-cq2tg1,47,63,1|-cq2tg0,48,63,1|-cnp0k1,48,63,1|-cnp0k0,45,62,0|-ccw1s1,45,62,0|-ccw1s0,46,63,1|-c4yxw1,46,63,1|-c4yxw0,45,62,0|-bu5z41,45,62,0|-bu5z40,46,63,1|-bm8v81,46,63,1|-bm8v80,45,62,0|-bbfwg1,45,62,0|-bbfwg0,46,63,1|-b3isk1,46,63,1|-b3isk0,45,62,0|-aspts1,45,62,0|-aspts0,46,63,1|-akspw1,46,63,1|-akspw0,45,62,0|-a9msg1,45,62,0|-a9msg0,46,63,1|-a22n81,46,63,1|-a22n80,45,62,0|-9qwps1,45,62,0|-9qwps0,46,63,1|-9izlw1,46,63,1|-9izlw0,45,62,0|-986n41,45,62,0|-986n40,46,63,1|-909j81,46,63,1|-909j80,45,62,0|-8pgkg1,45,62,0|-8pgkg0,46,63,1|-8hjgk1,46,63,1|-8hjgk0,45,62,0|-86qhs1,45,62,0|-86qhs0,46,63,1|-7ytdw1,46,63,1|-7ytdw0,45,62,0|-7o0f41,45,62,0|-7o0f40,49,63,0|-6ea781,49,63,0|-6ea780,45,62,0|-63h8g1,45,62,0|-63h8g0,49,63,0|-cskk1,49,63,0|-cskk0,62,42,1|-3fm01,62,42,1|-3fm00,49,63,0|5xi3z,49,63,0|5xi40,62,42,1|fagnz,62,42,1|fago0,49,63,0|ix323z,49,63,0|ix3240,62,42,1|j7vvbz,62,42,1|j7vvc0,49,63,0|jeq8rz,49,63,0|jeq8s0,62,42,1|jqywnz,62,42,1|jqywo0,49,63,0|jxgbfz,49,63,0|jxgbg0,62,42,1|k9ozbz,62,42,1|k9ozc0,49,63,0|kg6e3z,49,63,0|kg6e40,62,42,1|ksf1zz,62,42,1|ksf200,49,63,0|kz9ffz,49,63,0|kz9fg0,62,42,1|lbi3bz,62,42,1|lbi3c0,49,63,0|lhzi3z,49,63,0|lhzi40,62,42,1|lu85zz,62,42,1|lu8600,49,63,0|m0pkrz,49,63,0|m0pks0,62,42,1|mcy8nz,62,42,1|mcy8o0,49,63,0|mjfnfz,49,63,0|mjfng0,62,42,1|mvobbz,62,42,1|mvobc0,49,63,0|n25q3z,49,63,0|n25q40,62,42,1|needzz,62,42,1|neee00,49,63,0|nkvsrz,49,63,0|nkvss0,62,42,1|nx4gnz,62,42,1|nx4go0,49,63,0|o3yu3z,49,63,0|o3yu40,62,42,1|og7hzz,62,42,1|og7i00,49,63,0|omowrz,49,63,0|omows0,62,42,1|oyxknz,62,42,1|oyxko0,49,63,0|p5ezfz,49,63,0|p5ezg0,62,42,1|phnnbz,62,42,1|phnnc0,49,63,0|po523z,49,63,0|po5240,62,42,1|q0dpzz,62,42,1|q0dq00,49,63,0|q6v4rz,49,63,0|q6v4s0,62,42,1|qj3snz,62,42,1|qj3so0,49,63,0|qpy63z,49,63,0|qpy640,62,42,1|r26tzz,62,42,1|r26u00,49,63,0|r8o8rz,49,63,0|r8o8s0,62,42,1|rkwwnz,62,42,1|rkwwo0,49,63,0|rrebfz,49,63,0|rrebg0,62,42,1|s3mzbz,62,42,1|s3mzc0,49,63,0|sa4e3z,49,63,0|sa4e40,62,42,1|smd1zz,62,42,1|smd200,49,63,0|ssugrz,49,63,0|ssugs0,62,42,1|t534nz,62,42,1|t534o0,49,63,0|tbkjfz,49,63,0|tbkjg0,62,42,1|tnt7bz,62,42,1|tnt7c0,49,63,0|tunkrz,49,63,0|tunks0,62,42,1|u6w8nz,62,42,1|u6w8o0,49,63,0|uddnfz,49,63,0|uddng0,62,42,1|upmbbz,62,42,1|upmbc0,49,63,0|uw3q3z,49,63,0|uw3q40,62,42,1|v8cdzz,62,42,1|v8ce00,49,63,0|vetsrz,49,63,0|vetss0,62,42,1|vr2gnz,62,42,1|vr2go0,49,63,0|vxjvfz,49,63,0|vxjvg0,62,42,1|w9sjbz,62,42,1|w9sjc0,49,63,0|wgmwrz,49,63,0|wgmws0,62,42,1|wsvknz,62,42,1|wsvko0,49,63,0|wzczfz,49,63,0|wzczg0,62,42,1|xblnbz,62,42,1|xblnc0,49,63,0|xi323z,49,63,0|xi3240,62,42,1|xubpzz,62,42,1|xubq00,49,63,0|y0t4rz,49,63,0|y0t4s0,62,42,1|yd1snz,62,42,1|yd1so0,49,63,0|yjj7fz,49,63,0|yjj7g0,62,42,1|yvrvbz,62,42,1|yvrvc0,49,63,0|z29a3z,49,63,0|z29a40,62,42,1|zehxzz,62,42,1|zehy00,49,63,0\",\"America/Indiana/Knox|,0,115,0|-18y0m00,45,62,0|-r0esg1,45,62,0|-r0esg0,46,63,1|-qplz81,46,63,1|-qplz80,45,62,0|-qhops1,45,62,0|-qhops0,46,63,1|-q6vwk1,46,63,1|-q6vwk0,45,62,0|-ek21s1,45,62,0|-ek21s0,47,63,1|-cq2tg1,47,63,1|-cq2tg0,48,63,1|-cnp0k1,48,63,1|-cnp0k0,45,62,0|-bu5z41,45,62,0|-bu5z40,46,63,1|-bm8v81,46,63,1|-bm8v80,45,62,0|-bbfwg1,45,62,0|-bbfwg0,46,63,1|-b3isk1,46,63,1|-b3isk0,45,62,0|-aspts1,45,62,0|-aspts0,46,63,1|-akspw1,46,63,1|-akspw0,45,62,0|-a9msg1,45,62,0|-a9msg0,46,63,1|-a22n81,46,63,1|-a22n80,45,62,0|-9qwps1,45,62,0|-9qwps0,46,63,1|-9izlw1,46,63,1|-9izlw0,45,62,0|-986n41,45,62,0|-986n40,46,63,1|-909j81,46,63,1|-909j80,45,62,0|-8pgkg1,45,62,0|-8pgkg0,46,63,1|-8hjgk1,46,63,1|-8hjgk0,45,62,0|-86qhs1,45,62,0|-86qhs0,46,63,1|-7ytdw1,46,63,1|-7ytdw0,45,62,0|-7o0f41,45,62,0|-7o0f40,46,63,1|-7eahw1,46,63,1|-7eahw0,45,62,0|-74xds1,45,62,0|-74xds0,46,63,1|-6vkf81,46,63,1|-6vkf80,45,62,0|-6m7b41,45,62,0|-6m7b40,46,63,1|-6ea781,46,63,1|-6ea780,45,62,0|-63h8g1,45,62,0|-63h8g0,46,63,1|-5vk4k1,46,63,1|-5vk4k0,45,62,0|-5kr5s1,45,62,0|-5kr5s0,46,63,1|-5be781,46,63,1|-5be780,45,62,0|-521341,45,62,0|-521340,46,63,1|-4sb5w1,46,63,1|-4sb5w0,45,62,0|-4iy1s1,45,62,0|-4iy1s0,46,63,1|-49l381,46,63,1|-49l380,45,62,0|-407z41,45,62,0|-407z40,49,63,0|-384xw1,49,63,0|-384xw0,45,62,0|-1e8n41,45,62,0|-1e8n40,46,63,1|-14vok1,46,63,1|-14vok0,45,62,0|-vikg1,45,62,0|-vikg0,46,63,1|-m5lw1,46,63,1|-m5lw0,45,62,0|-cshs1,45,62,0|-cshs0,46,63,1|-3fj81,46,63,1|-3fj80,45,62,0|5xkvz,45,62,0|5xkw0,46,63,1|fajfz,46,63,1|fajg0,45,62,0|onnjz,45,62,0|onnk0,46,63,1|ydkrz,46,63,1|ydks0,45,62,0|17qovz,45,62,0|17qow0,46,63,1|1h3nfz,46,63,1|1h3ng0,45,62,0|1qgrjz,45,62,0|1qgrk0,46,63,1|1ztq3z,46,63,1|1ztq40,45,62,0|23ffjz,45,62,0|23ffk0,46,63,1|2ijsrz,46,63,1|2ijss0,45,62,0|2oo8vz,45,62,0|2oo8w0,46,63,1|319vfz,46,63,1|319vg0,45,62,0|3amzjz,45,62,0|3amzk0,46,63,1|3kcwrz,46,63,1|3kcws0,45,62,0|3td27z,45,62,0|3td280,46,63,1|432zfz,46,63,1|432zg0,45,62,0|4cg3jz,45,62,0|4cg3k0,46,63,1|4lt23z,46,63,1|4lt240,45,62,0|4v667z,45,62,0|4v6680,46,63,1|54j4rz,46,63,1|54j4s0,45,62,0|5dw8vz,45,62,0|5dw8w0,46,63,1|5n97fz,46,63,1|5n97g0,45,62,0|5wmbjz,45,62,0|5wmbk0,46,63,1|65za3z,46,63,1|65za40,45,62,0|6fce7z,45,62,0|6fce80,46,63,1|6p2bfz,46,63,1|6p2bg0,45,62,0|6y2gvz,45,62,0|6y2gw0,46,63,1|77se3z,46,63,1|77se40,45,62,0|7h5i7z,45,62,0|7h5i80,46,63,1|7qigrz,46,63,1|7qigs0,45,62,0|7zvkvz,45,62,0|7zvkw0,46,63,1|898jfz,46,63,1|898jg0,45,62,0|8ilnjz,45,62,0|8ilnk0,46,63,1|8rym3z,46,63,1|8rym40,45,62,0|908u7z,45,62,0|908u80,46,63,1|9aoorz,46,63,1|9aoos0,45,62,0|9iywvz,45,62,0|9iyww0,46,63,1|9trq3z,46,63,1|9trq40,45,62,0|a1ozjz,45,62,0|a1ozk0,46,63,1|achsrz,46,63,1|achss0,45,62,0|akf27z,45,62,0|akf280,46,63,1|av7vfz,46,63,1|av7vg0,45,62,0|b3i3jz,45,62,0|b3i3k0,46,63,1|bdxy3z,46,63,1|bdxy40,49,63,0|ix323z,49,63,0|ix3240,46,63,1|j7vy3z,46,63,1|j7vy40,45,62,0|jeqbjz,45,62,0|jeqbk0,46,63,1|jqyzfz,46,63,1|jqyzg0,45,62,0|jxge7z,45,62,0|jxge80,46,63,1|k9p23z,46,63,1|k9p240,45,62,0|kg6gvz,45,62,0|kg6gw0,46,63,1|ksf4rz,46,63,1|ksf4s0,45,62,0|kz9i7z,45,62,0|kz9i80,46,63,1|lbi63z,46,63,1|lbi640,45,62,0|lhzkvz,45,62,0|lhzkw0,46,63,1|lu88rz,46,63,1|lu88s0,45,62,0|m0pnjz,45,62,0|m0pnk0,46,63,1|mcybfz,46,63,1|mcybg0,45,62,0|mjfq7z,45,62,0|mjfq80,46,63,1|mvoe3z,46,63,1|mvoe40,45,62,0|n25svz,45,62,0|n25sw0,46,63,1|neegrz,46,63,1|neegs0,45,62,0|nkvvjz,45,62,0|nkvvk0,46,63,1|nx4jfz,46,63,1|nx4jg0,45,62,0|o3ywvz,45,62,0|o3yww0,46,63,1|og7krz,46,63,1|og7ks0,45,62,0|omozjz,45,62,0|omozk0,46,63,1|oyxnfz,46,63,1|oyxng0,45,62,0|p5f27z,45,62,0|p5f280,46,63,1|phnq3z,46,63,1|phnq40,45,62,0|po54vz,45,62,0|po54w0,46,63,1|q0dsrz,46,63,1|q0dss0,45,62,0|q6v7jz,45,62,0|q6v7k0,46,63,1|qj3vfz,46,63,1|qj3vg0,45,62,0|qpy8vz,45,62,0|qpy8w0,46,63,1|r26wrz,46,63,1|r26ws0,45,62,0|r8objz,45,62,0|r8obk0,46,63,1|rkwzfz,46,63,1|rkwzg0,45,62,0|rree7z,45,62,0|rree80,46,63,1|s3n23z,46,63,1|s3n240,45,62,0|sa4gvz,45,62,0|sa4gw0,46,63,1|smd4rz,46,63,1|smd4s0,45,62,0|ssujjz,45,62,0|ssujk0,46,63,1|t537fz,46,63,1|t537g0,45,62,0|tbkm7z,45,62,0|tbkm80,46,63,1|tnta3z,46,63,1|tnta40,45,62,0|tunnjz,45,62,0|tunnk0,46,63,1|u6wbfz,46,63,1|u6wbg0,45,62,0|uddq7z,45,62,0|uddq80,46,63,1|upme3z,46,63,1|upme40,45,62,0|uw3svz,45,62,0|uw3sw0,46,63,1|v8cgrz,46,63,1|v8cgs0,45,62,0|vetvjz,45,62,0|vetvk0,46,63,1|vr2jfz,46,63,1|vr2jg0,45,62,0|vxjy7z,45,62,0|vxjy80,46,63,1|w9sm3z,46,63,1|w9sm40,45,62,0|wgmzjz,45,62,0|wgmzk0,46,63,1|wsvnfz,46,63,1|wsvng0,45,62,0|wzd27z,45,62,0|wzd280,46,63,1|xblq3z,46,63,1|xblq40,45,62,0|xi34vz,45,62,0|xi34w0,46,63,1|xubsrz,46,63,1|xubss0,45,62,0|y0t7jz,45,62,0|y0t7k0,46,63,1|yd1vfz,46,63,1|yd1vg0,45,62,0|yjja7z,45,62,0|yjja80,46,63,1|yvry3z,46,63,1|yvry40,45,62,0|z29cvz,45,62,0|z29cw0,46,63,1|zei0rz,46,63,1|zei0s0,45,62,0\",\"America/Indiana/Marengo|,0,116,0|-18y0m00,45,62,0|-r0esg1,45,62,0|-r0esg0,46,63,1|-qplz81,46,63,1|-qplz80,45,62,0|-qhops1,45,62,0|-qhops0,46,63,1|-q6vwk1,46,63,1|-q6vwk0,45,62,0|-ek21s1,45,62,0|-ek21s0,47,63,1|-cq2tg1,47,63,1|-cq2tg0,48,63,1|-cnp0k1,48,63,1|-cnp0k0,45,62,0|-9qwps1,45,62,0|-9qwps0,46,63,1|-9izlw1,46,63,1|-9izlw0,45,62,0|-86qhs1,45,62,0|-86qhs0,46,63,1|-7ytdw1,46,63,1|-7ytdw0,45,62,0|-7o0f41,45,62,0|-7o0f40,46,63,1|-7g3b81,46,63,1|-7g3b80,45,62,0|-74xds1,45,62,0|-74xds0,46,63,1|-6x09w1,46,63,1|-6x09w0,45,62,0|-6m7b41,45,62,0|-6m7b40,46,63,1|-6ea781,46,63,1|-6ea780,45,62,0|-63h8g1,45,62,0|-63h8g0,46,63,1|-5vk4k1,46,63,1|-5vk4k0,45,62,0|-5kr5s1,45,62,0|-5kr5s0,46,63,1|-5cu1w1,46,63,1|-5cu1w0,45,62,0|-521341,45,62,0|-521340,46,63,1|-4u3z81,46,63,1|-4u3z80,45,62,0|-4iy1s1,45,62,0|-4iy1s0,49,63,0|-cskk1,49,63,0|-cskk0,62,42,1|-3fm01,62,42,1|-3fm00,49,63,0|5xi3z,49,63,0|5xi40,62,42,1|fagnz,62,42,1|fago0,49,63,0|onkrz,49,63,0|onks0,62,42,1|ydhzz,62,42,1|ydi00,49,63,0|17qm3z,49,63,0|17qm40,62,42,1|1h3knz,62,42,1|1h3ko0,49,63,0|1qgorz,49,63,0|1qgos0,62,42,1|1ztnbz,62,42,1|1ztnc0,49,63,0|23fcrz,49,63,0|23fcs0,46,63,1|2ijsrz,46,63,1|2ijss0,49,63,0|2oo63z,49,63,0|2oo640,62,42,1|319snz,62,42,1|319so0,49,63,0|ix323z,49,63,0|ix3240,62,42,1|j7vvbz,62,42,1|j7vvc0,49,63,0|jeq8rz,49,63,0|jeq8s0,62,42,1|jqywnz,62,42,1|jqywo0,49,63,0|jxgbfz,49,63,0|jxgbg0,62,42,1|k9ozbz,62,42,1|k9ozc0,49,63,0|kg6e3z,49,63,0|kg6e40,62,42,1|ksf1zz,62,42,1|ksf200,49,63,0|kz9ffz,49,63,0|kz9fg0,62,42,1|lbi3bz,62,42,1|lbi3c0,49,63,0|lhzi3z,49,63,0|lhzi40,62,42,1|lu85zz,62,42,1|lu8600,49,63,0|m0pkrz,49,63,0|m0pks0,62,42,1|mcy8nz,62,42,1|mcy8o0,49,63,0|mjfnfz,49,63,0|mjfng0,62,42,1|mvobbz,62,42,1|mvobc0,49,63,0|n25q3z,49,63,0|n25q40,62,42,1|needzz,62,42,1|neee00,49,63,0|nkvsrz,49,63,0|nkvss0,62,42,1|nx4gnz,62,42,1|nx4go0,49,63,0|o3yu3z,49,63,0|o3yu40,62,42,1|og7hzz,62,42,1|og7i00,49,63,0|omowrz,49,63,0|omows0,62,42,1|oyxknz,62,42,1|oyxko0,49,63,0|p5ezfz,49,63,0|p5ezg0,62,42,1|phnnbz,62,42,1|phnnc0,49,63,0|po523z,49,63,0|po5240,62,42,1|q0dpzz,62,42,1|q0dq00,49,63,0|q6v4rz,49,63,0|q6v4s0,62,42,1|qj3snz,62,42,1|qj3so0,49,63,0|qpy63z,49,63,0|qpy640,62,42,1|r26tzz,62,42,1|r26u00,49,63,0|r8o8rz,49,63,0|r8o8s0,62,42,1|rkwwnz,62,42,1|rkwwo0,49,63,0|rrebfz,49,63,0|rrebg0,62,42,1|s3mzbz,62,42,1|s3mzc0,49,63,0|sa4e3z,49,63,0|sa4e40,62,42,1|smd1zz,62,42,1|smd200,49,63,0|ssugrz,49,63,0|ssugs0,62,42,1|t534nz,62,42,1|t534o0,49,63,0|tbkjfz,49,63,0|tbkjg0,62,42,1|tnt7bz,62,42,1|tnt7c0,49,63,0|tunkrz,49,63,0|tunks0,62,42,1|u6w8nz,62,42,1|u6w8o0,49,63,0|uddnfz,49,63,0|uddng0,62,42,1|upmbbz,62,42,1|upmbc0,49,63,0|uw3q3z,49,63,0|uw3q40,62,42,1|v8cdzz,62,42,1|v8ce00,49,63,0|vetsrz,49,63,0|vetss0,62,42,1|vr2gnz,62,42,1|vr2go0,49,63,0|vxjvfz,49,63,0|vxjvg0,62,42,1|w9sjbz,62,42,1|w9sjc0,49,63,0|wgmwrz,49,63,0|wgmws0,62,42,1|wsvknz,62,42,1|wsvko0,49,63,0|wzczfz,49,63,0|wzczg0,62,42,1|xblnbz,62,42,1|xblnc0,49,63,0|xi323z,49,63,0|xi3240,62,42,1|xubpzz,62,42,1|xubq00,49,63,0|y0t4rz,49,63,0|y0t4s0,62,42,1|yd1snz,62,42,1|yd1so0,49,63,0|yjj7fz,49,63,0|yjj7g0,62,42,1|yvrvbz,62,42,1|yvrvc0,49,63,0|z29a3z,49,63,0|z29a40,62,42,1|zehxzz,62,42,1|zehy00,49,63,0\",\"America/Indiana/Petersburg|,0,117,0|-18y0m00,45,62,0|-r0esg1,45,62,0|-r0esg0,46,63,1|-qplz81,46,63,1|-qplz80,45,62,0|-qhops1,45,62,0|-qhops0,46,63,1|-q6vwk1,46,63,1|-q6vwk0,45,62,0|-ek21s1,45,62,0|-ek21s0,47,63,1|-cq2tg1,47,63,1|-cq2tg0,48,63,1|-cnp0k1,48,63,1|-cnp0k0,45,62,0|-7nnm01,45,62,0|-7nnm00,46,63,1|-7g3b81,46,63,1|-7g3b80,45,62,0|-74xds1,45,62,0|-74xds0,46,63,1|-6x09w1,46,63,1|-6x09w0,45,62,0|-6m7b41,45,62,0|-6m7b40,46,63,1|-6ea781,46,63,1|-6ea780,45,62,0|-63h8g1,45,62,0|-63h8g0,46,63,1|-5vk4k1,46,63,1|-5vk4k0,45,62,0|-5kr5s1,45,62,0|-5kr5s0,46,63,1|-5cu1w1,46,63,1|-5cu1w0,45,62,0|-521341,45,62,0|-521340,46,63,1|-4u3z81,46,63,1|-4u3z80,45,62,0|-4iy1s1,45,62,0|-4iy1s0,46,63,1|-49l381,46,63,1|-49l380,45,62,0|-407z41,45,62,0|-407z40,46,63,1|-3qv0k1,46,63,1|-3qv0k0,45,62,0|-3hhwg1,45,62,0|-3hhwg0,46,63,1|-384xw1,46,63,1|-384xw0,45,62,0|-2yrts1,45,62,0|-2yrts0,46,63,1|-2pev81,46,63,1|-2pev80,45,62,0|-2g1r41,45,62,0|-2g1r40,49,63,0|-1nlr81,49,63,0|-1nlr80,45,62,0|-1e8n41,45,62,0|-1e8n40,46,63,1|-14vok1,46,63,1|-14vok0,45,62,0|-vikg1,45,62,0|-vikg0,46,63,1|-m5lw1,46,63,1|-m5lw0,45,62,0|-cshs1,45,62,0|-cshs0,46,63,1|-3fj81,46,63,1|-3fj80,45,62,0|5xkvz,45,62,0|5xkw0,46,63,1|fajfz,46,63,1|fajg0,45,62,0|onnjz,45,62,0|onnk0,46,63,1|ydkrz,46,63,1|ydks0,45,62,0|17qovz,45,62,0|17qow0,46,63,1|1h3nfz,46,63,1|1h3ng0,45,62,0|1qgrjz,45,62,0|1qgrk0,46,63,1|1ztq3z,46,63,1|1ztq40,45,62,0|23ffjz,45,62,0|23ffk0,46,63,1|2ijsrz,46,63,1|2ijss0,45,62,0|2oo8vz,45,62,0|2oo8w0,46,63,1|319vfz,46,63,1|319vg0,45,62,0|3amzjz,45,62,0|3amzk0,46,63,1|3kcwrz,46,63,1|3kcws0,45,62,0|3td27z,45,62,0|3td280,46,63,1|432zfz,46,63,1|432zg0,49,63,0|ix323z,49,63,0|ix3240,46,63,1|j7vy3z,46,63,1|j7vy40,45,62,0|jeqbjz,45,62,0|jeqbk0,46,63,1|jqyzfz,46,63,1|jqyzg0,49,63,0|jxgbfz,49,63,0|jxgbg0,62,42,1|k9ozbz,62,42,1|k9ozc0,49,63,0|kg6e3z,49,63,0|kg6e40,62,42,1|ksf1zz,62,42,1|ksf200,49,63,0|kz9ffz,49,63,0|kz9fg0,62,42,1|lbi3bz,62,42,1|lbi3c0,49,63,0|lhzi3z,49,63,0|lhzi40,62,42,1|lu85zz,62,42,1|lu8600,49,63,0|m0pkrz,49,63,0|m0pks0,62,42,1|mcy8nz,62,42,1|mcy8o0,49,63,0|mjfnfz,49,63,0|mjfng0,62,42,1|mvobbz,62,42,1|mvobc0,49,63,0|n25q3z,49,63,0|n25q40,62,42,1|needzz,62,42,1|neee00,49,63,0|nkvsrz,49,63,0|nkvss0,62,42,1|nx4gnz,62,42,1|nx4go0,49,63,0|o3yu3z,49,63,0|o3yu40,62,42,1|og7hzz,62,42,1|og7i00,49,63,0|omowrz,49,63,0|omows0,62,42,1|oyxknz,62,42,1|oyxko0,49,63,0|p5ezfz,49,63,0|p5ezg0,62,42,1|phnnbz,62,42,1|phnnc0,49,63,0|po523z,49,63,0|po5240,62,42,1|q0dpzz,62,42,1|q0dq00,49,63,0|q6v4rz,49,63,0|q6v4s0,62,42,1|qj3snz,62,42,1|qj3so0,49,63,0|qpy63z,49,63,0|qpy640,62,42,1|r26tzz,62,42,1|r26u00,49,63,0|r8o8rz,49,63,0|r8o8s0,62,42,1|rkwwnz,62,42,1|rkwwo0,49,63,0|rrebfz,49,63,0|rrebg0,62,42,1|s3mzbz,62,42,1|s3mzc0,49,63,0|sa4e3z,49,63,0|sa4e40,62,42,1|smd1zz,62,42,1|smd200,49,63,0|ssugrz,49,63,0|ssugs0,62,42,1|t534nz,62,42,1|t534o0,49,63,0|tbkjfz,49,63,0|tbkjg0,62,42,1|tnt7bz,62,42,1|tnt7c0,49,63,0|tunkrz,49,63,0|tunks0,62,42,1|u6w8nz,62,42,1|u6w8o0,49,63,0|uddnfz,49,63,0|uddng0,62,42,1|upmbbz,62,42,1|upmbc0,49,63,0|uw3q3z,49,63,0|uw3q40,62,42,1|v8cdzz,62,42,1|v8ce00,49,63,0|vetsrz,49,63,0|vetss0,62,42,1|vr2gnz,62,42,1|vr2go0,49,63,0|vxjvfz,49,63,0|vxjvg0,62,42,1|w9sjbz,62,42,1|w9sjc0,49,63,0|wgmwrz,49,63,0|wgmws0,62,42,1|wsvknz,62,42,1|wsvko0,49,63,0|wzczfz,49,63,0|wzczg0,62,42,1|xblnbz,62,42,1|xblnc0,49,63,0|xi323z,49,63,0|xi3240,62,42,1|xubpzz,62,42,1|xubq00,49,63,0|y0t4rz,49,63,0|y0t4s0,62,42,1|yd1snz,62,42,1|yd1so0,49,63,0|yjj7fz,49,63,0|yjj7g0,62,42,1|yvrvbz,62,42,1|yvrvc0,49,63,0|z29a3z,49,63,0|z29a40,62,42,1|zehxzz,62,42,1|zehy00,49,63,0\",\"America/Indiana/Tell_City|,0,118,0|-18y0m00,45,62,0|-r0esg1,45,62,0|-r0esg0,46,63,1|-qplz81,46,63,1|-qplz80,45,62,0|-qhops1,45,62,0|-qhops0,46,63,1|-q6vwk1,46,63,1|-q6vwk0,45,62,0|-ek21s1,45,62,0|-ek21s0,47,63,1|-cq2tg1,47,63,1|-cq2tg0,48,63,1|-cnp0k1,48,63,1|-cnp0k0,45,62,0|-7nnm01,45,62,0|-7nnm00,46,63,1|-7g3b81,46,63,1|-7g3b80,45,62,0|-74xds1,45,62,0|-74xds0,46,63,1|-6x09w1,46,63,1|-6x09w0,45,62,0|-6m7b41,45,62,0|-6m7b40,46,63,1|-6ea781,46,63,1|-6ea780,45,62,0|-63h8g1,45,62,0|-63h8g0,46,63,1|-5vk4k1,46,63,1|-5vk4k0,45,62,0|-5kr5s1,45,62,0|-5kr5s0,46,63,1|-5cu1w1,46,63,1|-5cu1w0,45,62,0|-521341,45,62,0|-521340,46,63,1|-4u3z81,46,63,1|-4u3z80,45,62,0|-4iy1s1,45,62,0|-4iy1s0,46,63,1|-49l381,46,63,1|-49l380,45,62,0|-407z41,45,62,0|-407z40,46,63,1|-3qv0k1,46,63,1|-3qv0k0,45,62,0|-3hhwg1,45,62,0|-3hhwg0,46,63,1|-384xw1,46,63,1|-384xw0,45,62,0|-2yrts1,45,62,0|-2yrts0,49,63,0|-14vok1,49,63,0|-14vok0,45,62,0|-vikg1,45,62,0|-vikg0,46,63,1|-m5lw1,46,63,1|-m5lw0,45,62,0|-cshs1,45,62,0|-cshs0,62,42,1|-3fm01,62,42,1|-3fm00,49,63,0|5xi3z,49,63,0|5xi40,62,42,1|fagnz,62,42,1|fago0,49,63,0|ix323z,49,63,0|ix3240,46,63,1|j7vy3z,46,63,1|j7vy40,45,62,0|jeqbjz,45,62,0|jeqbk0,46,63,1|jqyzfz,46,63,1|jqyzg0,45,62,0|jxge7z,45,62,0|jxge80,46,63,1|k9p23z,46,63,1|k9p240,45,62,0|kg6gvz,45,62,0|kg6gw0,46,63,1|ksf4rz,46,63,1|ksf4s0,45,62,0|kz9i7z,45,62,0|kz9i80,46,63,1|lbi63z,46,63,1|lbi640,45,62,0|lhzkvz,45,62,0|lhzkw0,46,63,1|lu88rz,46,63,1|lu88s0,45,62,0|m0pnjz,45,62,0|m0pnk0,46,63,1|mcybfz,46,63,1|mcybg0,45,62,0|mjfq7z,45,62,0|mjfq80,46,63,1|mvoe3z,46,63,1|mvoe40,45,62,0|n25svz,45,62,0|n25sw0,46,63,1|neegrz,46,63,1|neegs0,45,62,0|nkvvjz,45,62,0|nkvvk0,46,63,1|nx4jfz,46,63,1|nx4jg0,45,62,0|o3ywvz,45,62,0|o3yww0,46,63,1|og7krz,46,63,1|og7ks0,45,62,0|omozjz,45,62,0|omozk0,46,63,1|oyxnfz,46,63,1|oyxng0,45,62,0|p5f27z,45,62,0|p5f280,46,63,1|phnq3z,46,63,1|phnq40,45,62,0|po54vz,45,62,0|po54w0,46,63,1|q0dsrz,46,63,1|q0dss0,45,62,0|q6v7jz,45,62,0|q6v7k0,46,63,1|qj3vfz,46,63,1|qj3vg0,45,62,0|qpy8vz,45,62,0|qpy8w0,46,63,1|r26wrz,46,63,1|r26ws0,45,62,0|r8objz,45,62,0|r8obk0,46,63,1|rkwzfz,46,63,1|rkwzg0,45,62,0|rree7z,45,62,0|rree80,46,63,1|s3n23z,46,63,1|s3n240,45,62,0|sa4gvz,45,62,0|sa4gw0,46,63,1|smd4rz,46,63,1|smd4s0,45,62,0|ssujjz,45,62,0|ssujk0,46,63,1|t537fz,46,63,1|t537g0,45,62,0|tbkm7z,45,62,0|tbkm80,46,63,1|tnta3z,46,63,1|tnta40,45,62,0|tunnjz,45,62,0|tunnk0,46,63,1|u6wbfz,46,63,1|u6wbg0,45,62,0|uddq7z,45,62,0|uddq80,46,63,1|upme3z,46,63,1|upme40,45,62,0|uw3svz,45,62,0|uw3sw0,46,63,1|v8cgrz,46,63,1|v8cgs0,45,62,0|vetvjz,45,62,0|vetvk0,46,63,1|vr2jfz,46,63,1|vr2jg0,45,62,0|vxjy7z,45,62,0|vxjy80,46,63,1|w9sm3z,46,63,1|w9sm40,45,62,0|wgmzjz,45,62,0|wgmzk0,46,63,1|wsvnfz,46,63,1|wsvng0,45,62,0|wzd27z,45,62,0|wzd280,46,63,1|xblq3z,46,63,1|xblq40,45,62,0|xi34vz,45,62,0|xi34w0,46,63,1|xubsrz,46,63,1|xubss0,45,62,0|y0t7jz,45,62,0|y0t7k0,46,63,1|yd1vfz,46,63,1|yd1vg0,45,62,0|yjja7z,45,62,0|yjja80,46,63,1|yvry3z,46,63,1|yvry40,45,62,0|z29cvz,45,62,0|z29cw0,46,63,1|zei0rz,46,63,1|zei0s0,45,62,0\",\"America/Indiana/Vevay|,0,119,0|-18y0m00,45,62,0|-r0esg1,45,62,0|-r0esg0,46,63,1|-qplz81,46,63,1|-qplz80,45,62,0|-qhops1,45,62,0|-qhops0,46,63,1|-q6vwk1,46,63,1|-q6vwk0,45,62,0|-ek21s1,45,62,0|-ek21s0,47,63,1|-cq2tg1,47,63,1|-cq2tg0,48,63,1|-cnp0k1,48,63,1|-cnp0k0,45,62,0|-86qhs1,45,62,0|-86qhs0,49,63,0|-cskk1,49,63,0|-cskk0,62,42,1|-3fm01,62,42,1|-3fm00,49,63,0|5xi3z,49,63,0|5xi40,62,42,1|fagnz,62,42,1|fago0,49,63,0|onkrz,49,63,0|onks0,62,42,1|ydhzz,62,42,1|ydi00,49,63,0|17qm3z,49,63,0|17qm40,62,42,1|1h3knz,62,42,1|1h3ko0,49,63,0|ix323z,49,63,0|ix3240,62,42,1|j7vvbz,62,42,1|j7vvc0,49,63,0|jeq8rz,49,63,0|jeq8s0,62,42,1|jqywnz,62,42,1|jqywo0,49,63,0|jxgbfz,49,63,0|jxgbg0,62,42,1|k9ozbz,62,42,1|k9ozc0,49,63,0|kg6e3z,49,63,0|kg6e40,62,42,1|ksf1zz,62,42,1|ksf200,49,63,0|kz9ffz,49,63,0|kz9fg0,62,42,1|lbi3bz,62,42,1|lbi3c0,49,63,0|lhzi3z,49,63,0|lhzi40,62,42,1|lu85zz,62,42,1|lu8600,49,63,0|m0pkrz,49,63,0|m0pks0,62,42,1|mcy8nz,62,42,1|mcy8o0,49,63,0|mjfnfz,49,63,0|mjfng0,62,42,1|mvobbz,62,42,1|mvobc0,49,63,0|n25q3z,49,63,0|n25q40,62,42,1|needzz,62,42,1|neee00,49,63,0|nkvsrz,49,63,0|nkvss0,62,42,1|nx4gnz,62,42,1|nx4go0,49,63,0|o3yu3z,49,63,0|o3yu40,62,42,1|og7hzz,62,42,1|og7i00,49,63,0|omowrz,49,63,0|omows0,62,42,1|oyxknz,62,42,1|oyxko0,49,63,0|p5ezfz,49,63,0|p5ezg0,62,42,1|phnnbz,62,42,1|phnnc0,49,63,0|po523z,49,63,0|po5240,62,42,1|q0dpzz,62,42,1|q0dq00,49,63,0|q6v4rz,49,63,0|q6v4s0,62,42,1|qj3snz,62,42,1|qj3so0,49,63,0|qpy63z,49,63,0|qpy640,62,42,1|r26tzz,62,42,1|r26u00,49,63,0|r8o8rz,49,63,0|r8o8s0,62,42,1|rkwwnz,62,42,1|rkwwo0,49,63,0|rrebfz,49,63,0|rrebg0,62,42,1|s3mzbz,62,42,1|s3mzc0,49,63,0|sa4e3z,49,63,0|sa4e40,62,42,1|smd1zz,62,42,1|smd200,49,63,0|ssugrz,49,63,0|ssugs0,62,42,1|t534nz,62,42,1|t534o0,49,63,0|tbkjfz,49,63,0|tbkjg0,62,42,1|tnt7bz,62,42,1|tnt7c0,49,63,0|tunkrz,49,63,0|tunks0,62,42,1|u6w8nz,62,42,1|u6w8o0,49,63,0|uddnfz,49,63,0|uddng0,62,42,1|upmbbz,62,42,1|upmbc0,49,63,0|uw3q3z,49,63,0|uw3q40,62,42,1|v8cdzz,62,42,1|v8ce00,49,63,0|vetsrz,49,63,0|vetss0,62,42,1|vr2gnz,62,42,1|vr2go0,49,63,0|vxjvfz,49,63,0|vxjvg0,62,42,1|w9sjbz,62,42,1|w9sjc0,49,63,0|wgmwrz,49,63,0|wgmws0,62,42,1|wsvknz,62,42,1|wsvko0,49,63,0|wzczfz,49,63,0|wzczg0,62,42,1|xblnbz,62,42,1|xblnc0,49,63,0|xi323z,49,63,0|xi3240,62,42,1|xubpzz,62,42,1|xubq00,49,63,0|y0t4rz,49,63,0|y0t4s0,62,42,1|yd1snz,62,42,1|yd1so0,49,63,0|yjj7fz,49,63,0|yjj7g0,62,42,1|yvrvbz,62,42,1|yvrvc0,49,63,0|z29a3z,49,63,0|z29a40,62,42,1|zehxzz,62,42,1|zehy00,49,63,0\",\"America/Indiana/Vincennes|,0,120,0|-18y0m00,45,62,0|-r0esg1,45,62,0|-r0esg0,46,63,1|-qplz81,46,63,1|-qplz80,45,62,0|-qhops1,45,62,0|-qhops0,46,63,1|-q6vwk1,46,63,1|-q6vwk0,45,62,0|-ek21s1,45,62,0|-ek21s0,47,63,1|-cq2tg1,47,63,1|-cq2tg0,48,63,1|-cnp0k1,48,63,1|-cnp0k0,45,62,0|-ccw1s1,45,62,0|-ccw1s0,46,63,1|-c4yxw1,46,63,1|-c4yxw0,45,62,0|-8pgkg1,45,62,0|-8pgkg0,46,63,1|-8hjgk1,46,63,1|-8hjgk0,45,62,0|-86qhs1,45,62,0|-86qhs0,46,63,1|-7ytdw1,46,63,1|-7ytdw0,45,62,0|-7nnm01,45,62,0|-7nnm00,46,63,1|-7g3b81,46,63,1|-7g3b80,45,62,0|-74xds1,45,62,0|-74xds0,46,63,1|-6x09w1,46,63,1|-6x09w0,45,62,0|-6m7b41,45,62,0|-6m7b40,46,63,1|-6ea781,46,63,1|-6ea780,45,62,0|-63h8g1,45,62,0|-63h8g0,46,63,1|-5vk4k1,46,63,1|-5vk4k0,45,62,0|-5kr5s1,45,62,0|-5kr5s0,46,63,1|-5cu1w1,46,63,1|-5cu1w0,45,62,0|-521341,45,62,0|-521340,46,63,1|-4sb5w1,46,63,1|-4sb5w0,45,62,0|-4iy1s1,45,62,0|-4iy1s0,46,63,1|-4bdwk1,46,63,1|-4bdwk0,45,62,0|-407z41,45,62,0|-407z40,46,63,1|-3qv0k1,46,63,1|-3qv0k0,45,62,0|-3hhwg1,45,62,0|-3hhwg0,46,63,1|-384xw1,46,63,1|-384xw0,45,62,0|-2yrts1,45,62,0|-2yrts0,49,63,0|-cskk1,49,63,0|-cskk0,62,42,1|-3fm01,62,42,1|-3fm00,49,63,0|5xi3z,49,63,0|5xi40,62,42,1|fagnz,62,42,1|fago0,49,63,0|ix323z,49,63,0|ix3240,46,63,1|j7vy3z,46,63,1|j7vy40,45,62,0|jeqbjz,45,62,0|jeqbk0,46,63,1|jqyzfz,46,63,1|jqyzg0,49,63,0|jxgbfz,49,63,0|jxgbg0,62,42,1|k9ozbz,62,42,1|k9ozc0,49,63,0|kg6e3z,49,63,0|kg6e40,62,42,1|ksf1zz,62,42,1|ksf200,49,63,0|kz9ffz,49,63,0|kz9fg0,62,42,1|lbi3bz,62,42,1|lbi3c0,49,63,0|lhzi3z,49,63,0|lhzi40,62,42,1|lu85zz,62,42,1|lu8600,49,63,0|m0pkrz,49,63,0|m0pks0,62,42,1|mcy8nz,62,42,1|mcy8o0,49,63,0|mjfnfz,49,63,0|mjfng0,62,42,1|mvobbz,62,42,1|mvobc0,49,63,0|n25q3z,49,63,0|n25q40,62,42,1|needzz,62,42,1|neee00,49,63,0|nkvsrz,49,63,0|nkvss0,62,42,1|nx4gnz,62,42,1|nx4go0,49,63,0|o3yu3z,49,63,0|o3yu40,62,42,1|og7hzz,62,42,1|og7i00,49,63,0|omowrz,49,63,0|omows0,62,42,1|oyxknz,62,42,1|oyxko0,49,63,0|p5ezfz,49,63,0|p5ezg0,62,42,1|phnnbz,62,42,1|phnnc0,49,63,0|po523z,49,63,0|po5240,62,42,1|q0dpzz,62,42,1|q0dq00,49,63,0|q6v4rz,49,63,0|q6v4s0,62,42,1|qj3snz,62,42,1|qj3so0,49,63,0|qpy63z,49,63,0|qpy640,62,42,1|r26tzz,62,42,1|r26u00,49,63,0|r8o8rz,49,63,0|r8o8s0,62,42,1|rkwwnz,62,42,1|rkwwo0,49,63,0|rrebfz,49,63,0|rrebg0,62,42,1|s3mzbz,62,42,1|s3mzc0,49,63,0|sa4e3z,49,63,0|sa4e40,62,42,1|smd1zz,62,42,1|smd200,49,63,0|ssugrz,49,63,0|ssugs0,62,42,1|t534nz,62,42,1|t534o0,49,63,0|tbkjfz,49,63,0|tbkjg0,62,42,1|tnt7bz,62,42,1|tnt7c0,49,63,0|tunkrz,49,63,0|tunks0,62,42,1|u6w8nz,62,42,1|u6w8o0,49,63,0|uddnfz,49,63,0|uddng0,62,42,1|upmbbz,62,42,1|upmbc0,49,63,0|uw3q3z,49,63,0|uw3q40,62,42,1|v8cdzz,62,42,1|v8ce00,49,63,0|vetsrz,49,63,0|vetss0,62,42,1|vr2gnz,62,42,1|vr2go0,49,63,0|vxjvfz,49,63,0|vxjvg0,62,42,1|w9sjbz,62,42,1|w9sjc0,49,63,0|wgmwrz,49,63,0|wgmws0,62,42,1|wsvknz,62,42,1|wsvko0,49,63,0|wzczfz,49,63,0|wzczg0,62,42,1|xblnbz,62,42,1|xblnc0,49,63,0|xi323z,49,63,0|xi3240,62,42,1|xubpzz,62,42,1|xubq00,49,63,0|y0t4rz,49,63,0|y0t4s0,62,42,1|yd1snz,62,42,1|yd1so0,49,63,0|yjj7fz,49,63,0|yjj7g0,62,42,1|yvrvbz,62,42,1|yvrvc0,49,63,0|z29a3z,49,63,0|z29a40,62,42,1|zehxzz,62,42,1|zehy00,49,63,0\",\"America/Indiana/Winamac|,0,121,0|-18y0m00,45,62,0|-r0esg1,45,62,0|-r0esg0,46,63,1|-qplz81,46,63,1|-qplz80,45,62,0|-qhops1,45,62,0|-qhops0,46,63,1|-q6vwk1,46,63,1|-q6vwk0,45,62,0|-ek21s1,45,62,0|-ek21s0,47,63,1|-cq2tg1,47,63,1|-cq2tg0,48,63,1|-cnp0k1,48,63,1|-cnp0k0,45,62,0|-ccw1s1,45,62,0|-ccw1s0,46,63,1|-c4yxw1,46,63,1|-c4yxw0,45,62,0|-bu5z41,45,62,0|-bu5z40,46,63,1|-bm8v81,46,63,1|-bm8v80,45,62,0|-bbfwg1,45,62,0|-bbfwg0,46,63,1|-b3isk1,46,63,1|-b3isk0,45,62,0|-aspts1,45,62,0|-aspts0,46,63,1|-akspw1,46,63,1|-akspw0,45,62,0|-a9msg1,45,62,0|-a9msg0,46,63,1|-a22n81,46,63,1|-a22n80,45,62,0|-9qwps1,45,62,0|-9qwps0,46,63,1|-9izlw1,46,63,1|-9izlw0,45,62,0|-986n41,45,62,0|-986n40,46,63,1|-909j81,46,63,1|-909j80,45,62,0|-8pgkg1,45,62,0|-8pgkg0,46,63,1|-8hjgk1,46,63,1|-8hjgk0,45,62,0|-86qhs1,45,62,0|-86qhs0,46,63,1|-7ytdw1,46,63,1|-7ytdw0,45,62,0|-7o0f41,45,62,0|-7o0f40,46,63,1|-7eahw1,46,63,1|-7eahw0,45,62,0|-74xds1,45,62,0|-74xds0,46,63,1|-6vkf81,46,63,1|-6vkf80,45,62,0|-6m7b41,45,62,0|-6m7b40,46,63,1|-6ea781,46,63,1|-6ea780,45,62,0|-63h8g1,45,62,0|-63h8g0,46,63,1|-5vk4k1,46,63,1|-5vk4k0,45,62,0|-5kr5s1,45,62,0|-5kr5s0,46,63,1|-5cu1w1,46,63,1|-5cu1w0,45,62,0|-521341,45,62,0|-521340,46,63,1|-4u3z81,46,63,1|-4u3z80,45,62,0|-4iy1s1,45,62,0|-4iy1s0,49,63,0|-cskk1,49,63,0|-cskk0,62,42,1|-3fm01,62,42,1|-3fm00,49,63,0|5xi3z,49,63,0|5xi40,62,42,1|fagnz,62,42,1|fago0,49,63,0|ix323z,49,63,0|ix3240,46,63,1|j7vy3z,46,63,1|j7vy40,45,62,0|jeqbjz,45,62,0|jeqbk0,62,42,1|jqywnz,62,42,1|jqywo0,49,63,0|jxgbfz,49,63,0|jxgbg0,62,42,1|k9ozbz,62,42,1|k9ozc0,49,63,0|kg6e3z,49,63,0|kg6e40,62,42,1|ksf1zz,62,42,1|ksf200,49,63,0|kz9ffz,49,63,0|kz9fg0,62,42,1|lbi3bz,62,42,1|lbi3c0,49,63,0|lhzi3z,49,63,0|lhzi40,62,42,1|lu85zz,62,42,1|lu8600,49,63,0|m0pkrz,49,63,0|m0pks0,62,42,1|mcy8nz,62,42,1|mcy8o0,49,63,0|mjfnfz,49,63,0|mjfng0,62,42,1|mvobbz,62,42,1|mvobc0,49,63,0|n25q3z,49,63,0|n25q40,62,42,1|needzz,62,42,1|neee00,49,63,0|nkvsrz,49,63,0|nkvss0,62,42,1|nx4gnz,62,42,1|nx4go0,49,63,0|o3yu3z,49,63,0|o3yu40,62,42,1|og7hzz,62,42,1|og7i00,49,63,0|omowrz,49,63,0|omows0,62,42,1|oyxknz,62,42,1|oyxko0,49,63,0|p5ezfz,49,63,0|p5ezg0,62,42,1|phnnbz,62,42,1|phnnc0,49,63,0|po523z,49,63,0|po5240,62,42,1|q0dpzz,62,42,1|q0dq00,49,63,0|q6v4rz,49,63,0|q6v4s0,62,42,1|qj3snz,62,42,1|qj3so0,49,63,0|qpy63z,49,63,0|qpy640,62,42,1|r26tzz,62,42,1|r26u00,49,63,0|r8o8rz,49,63,0|r8o8s0,62,42,1|rkwwnz,62,42,1|rkwwo0,49,63,0|rrebfz,49,63,0|rrebg0,62,42,1|s3mzbz,62,42,1|s3mzc0,49,63,0|sa4e3z,49,63,0|sa4e40,62,42,1|smd1zz,62,42,1|smd200,49,63,0|ssugrz,49,63,0|ssugs0,62,42,1|t534nz,62,42,1|t534o0,49,63,0|tbkjfz,49,63,0|tbkjg0,62,42,1|tnt7bz,62,42,1|tnt7c0,49,63,0|tunkrz,49,63,0|tunks0,62,42,1|u6w8nz,62,42,1|u6w8o0,49,63,0|uddnfz,49,63,0|uddng0,62,42,1|upmbbz,62,42,1|upmbc0,49,63,0|uw3q3z,49,63,0|uw3q40,62,42,1|v8cdzz,62,42,1|v8ce00,49,63,0|vetsrz,49,63,0|vetss0,62,42,1|vr2gnz,62,42,1|vr2go0,49,63,0|vxjvfz,49,63,0|vxjvg0,62,42,1|w9sjbz,62,42,1|w9sjc0,49,63,0|wgmwrz,49,63,0|wgmws0,62,42,1|wsvknz,62,42,1|wsvko0,49,63,0|wzczfz,49,63,0|wzczg0,62,42,1|xblnbz,62,42,1|xblnc0,49,63,0|xi323z,49,63,0|xi3240,62,42,1|xubpzz,62,42,1|xubq00,49,63,0|y0t4rz,49,63,0|y0t4s0,62,42,1|yd1snz,62,42,1|yd1so0,49,63,0|yjj7fz,49,63,0|yjj7g0,62,42,1|yvrvbz,62,42,1|yvrvc0,49,63,0|z29a3z,49,63,0|z29a40,62,42,1|zehxzz,62,42,1|zehy00,49,63,0\",\"America/Inuvik|,60,1,0|-8ve5c0,51,40,0|-2g1r41,51,40,0|-2g1r40,78,62,1|-26br41,78,62,1|-26br40,51,40,0|4v6brz,51,40,0|4v6bs0,50,66,0|5dwbnz,50,66,0|5dwbo0,52,62,1|5n9a7z,52,62,1|5n9a80,50,66,0|5wmebz,50,66,0|5wmec0,52,62,1|65zcvz,52,62,1|65zcw0,50,66,0|6fcgzz,50,66,0|6fch00,52,62,1|6p2e7z,52,62,1|6p2e80,50,66,0|6y2jnz,50,66,0|6y2jo0,52,62,1|77sgvz,52,62,1|77sgw0,50,66,0|7h5kzz,50,66,0|7h5l00,52,62,1|7qijjz,52,62,1|7qijk0,50,66,0|7zvnnz,50,66,0|7zvno0,52,62,1|898m7z,52,62,1|898m80,50,66,0|8ilqbz,50,66,0|8ilqc0,52,62,1|8ryovz,52,62,1|8ryow0,50,66,0|908wzz,50,66,0|908x00,52,62,1|9aorjz,52,62,1|9aork0,50,66,0|9iyznz,50,66,0|9iyzo0,52,62,1|9trsvz,52,62,1|9trsw0,50,66,0|a1p2bz,50,66,0|a1p2c0,52,62,1|achvjz,52,62,1|achvk0,50,66,0|akf4zz,50,66,0|akf500,52,62,1|av7y7z,52,62,1|av7y80,50,66,0|b3i6bz,50,66,0|b3i6c0,52,62,1|bdy0vz,52,62,1|bdy0w0,50,66,0|bm88zz,50,66,0|bm8900,52,62,1|bwo3jz,52,62,1|bwo3k0,50,66,0|c4ybnz,50,66,0|c4ybo0,52,62,1|cfr4vz,52,62,1|cfr4w0,50,66,0|cnoebz,50,66,0|cnoec0,52,62,1|cyh7jz,52,62,1|cyh7k0,50,66,0|d6egzz,50,66,0|d6eh00,52,62,1|dh7a7z,52,62,1|dh7a80,50,66,0|dphibz,50,66,0|dphic0,52,62,1|dzxcvz,52,62,1|dzxcw0,50,66,0|e87kzz,50,66,0|e87l00,52,62,1|einfjz,52,62,1|einfk0,50,66,0|eqxnnz,50,66,0|eqxno0,52,62,1|f1di7z,52,62,1|f1di80,50,66,0|f9nqbz,50,66,0|f9nqc0,52,62,1|fkgjjz,52,62,1|fkgjk0,50,66,0|fsdszz,50,66,0|fsdt00,52,62,1|g36m7z,52,62,1|g36m80,50,66,0|gb3vnz,50,66,0|gb3vo0,52,62,1|glwovz,52,62,1|glwow0,50,66,0|gu6wzz,50,66,0|gu6x00,52,62,1|h4mrjz,52,62,1|h4mrk0,50,66,0|hcwznz,50,66,0|hcwzo0,52,62,1|hncu7z,52,62,1|hncu80,50,66,0|hvn2bz,50,66,0|hvn2c0,52,62,1|i6fvjz,52,62,1|i6fvk0,50,66,0|ied4zz,50,66,0|ied500,52,62,1|ip5y7z,52,62,1|ip5y80,50,66,0|ix37nz,50,66,0|ix37o0,52,62,1|j7w0vz,52,62,1|j7w0w0,50,66,0|jeqebz,50,66,0|jeqec0,52,62,1|jqz27z,52,62,1|jqz280,50,66,0|jxggzz,50,66,0|jxgh00,52,62,1|k9p4vz,52,62,1|k9p4w0,50,66,0|kg6jnz,50,66,0|kg6jo0,52,62,1|ksf7jz,52,62,1|ksf7k0,50,66,0|kz9kzz,50,66,0|kz9l00,52,62,1|lbi8vz,52,62,1|lbi8w0,50,66,0|lhznnz,50,66,0|lhzno0,52,62,1|lu8bjz,52,62,1|lu8bk0,50,66,0|m0pqbz,50,66,0|m0pqc0,52,62,1|mcye7z,52,62,1|mcye80,50,66,0|mjfszz,50,66,0|mjft00,52,62,1|mvogvz,52,62,1|mvogw0,50,66,0|n25vnz,50,66,0|n25vo0,52,62,1|neejjz,52,62,1|neejk0,50,66,0|nkvybz,50,66,0|nkvyc0,52,62,1|nx4m7z,52,62,1|nx4m80,50,66,0|o3yznz,50,66,0|o3yzo0,52,62,1|og7njz,52,62,1|og7nk0,50,66,0|omp2bz,50,66,0|omp2c0,52,62,1|oyxq7z,52,62,1|oyxq80,50,66,0|p5f4zz,50,66,0|p5f500,52,62,1|phnsvz,52,62,1|phnsw0,50,66,0|po57nz,50,66,0|po57o0,52,62,1|q0dvjz,52,62,1|q0dvk0,50,66,0|q6vabz,50,66,0|q6vac0,52,62,1|qj3y7z,52,62,1|qj3y80,50,66,0|qpybnz,50,66,0|qpybo0,52,62,1|r26zjz,52,62,1|r26zk0,50,66,0|r8oebz,50,66,0|r8oec0,52,62,1|rkx27z,52,62,1|rkx280,50,66,0|rregzz,50,66,0|rreh00,52,62,1|s3n4vz,52,62,1|s3n4w0,50,66,0|sa4jnz,50,66,0|sa4jo0,52,62,1|smd7jz,52,62,1|smd7k0,50,66,0|ssumbz,50,66,0|ssumc0,52,62,1|t53a7z,52,62,1|t53a80,50,66,0|tbkozz,50,66,0|tbkp00,52,62,1|tntcvz,52,62,1|tntcw0,50,66,0|tunqbz,50,66,0|tunqc0,52,62,1|u6we7z,52,62,1|u6we80,50,66,0|uddszz,50,66,0|uddt00,52,62,1|upmgvz,52,62,1|upmgw0,50,66,0|uw3vnz,50,66,0|uw3vo0,52,62,1|v8cjjz,52,62,1|v8cjk0,50,66,0|vetybz,50,66,0|vetyc0,52,62,1|vr2m7z,52,62,1|vr2m80,50,66,0|vxk0zz,50,66,0|vxk100,52,62,1|w9sovz,52,62,1|w9sow0,50,66,0|wgn2bz,50,66,0|wgn2c0,52,62,1|wsvq7z,52,62,1|wsvq80,50,66,0|wzd4zz,50,66,0|wzd500,52,62,1|xblsvz,52,62,1|xblsw0,50,66,0|xi37nz,50,66,0|xi37o0,52,62,1|xubvjz,52,62,1|xubvk0,50,66,0|y0tabz,50,66,0|y0tac0,52,62,1|yd1y7z,52,62,1|yd1y80,50,66,0|yjjczz,50,66,0|yjjd00,52,62,1|yvs0vz,52,62,1|yvs0w0,50,66,0|z29fnz,50,66,0|z29fo0,52,62,1|zei3jz,52,62,1|zei3k0,50,66,0\",\"America/Iqaluit|,60,1,0|-eb6ao0,70,42,1|-cq2tg1,70,42,1|-cq2tg0,71,42,1|-cnp3c1,71,42,1|-cnp3c0,49,63,0|-2g1zg1,49,63,0|-2g1zg0,79,44,1|-26bzg1,79,44,1|-26bzg0,49,63,0|5dw63z,49,63,0|5dw640,62,42,1|5n94nz,62,42,1|5n94o0,49,63,0|5wm8rz,49,63,0|5wm8s0,62,42,1|65z7bz,62,42,1|65z7c0,49,63,0|6fcbfz,49,63,0|6fcbg0,62,42,1|6p28nz,62,42,1|6p28o0,49,63,0|6y2e3z,49,63,0|6y2e40,62,42,1|77sbbz,62,42,1|77sbc0,49,63,0|7h5ffz,49,63,0|7h5fg0,62,42,1|7qidzz,62,42,1|7qie00,49,63,0|7zvi3z,49,63,0|7zvi40,62,42,1|898gnz,62,42,1|898go0,49,63,0|8ilkrz,49,63,0|8ilks0,62,42,1|8ryjbz,62,42,1|8ryjc0,49,63,0|908rfz,49,63,0|908rg0,62,42,1|9aolzz,62,42,1|9aom00,49,63,0|9iyu3z,49,63,0|9iyu40,62,42,1|9trnbz,62,42,1|9trnc0,49,63,0|a1owrz,49,63,0|a1ows0,62,42,1|achpzz,62,42,1|achq00,49,63,0|akezfz,49,63,0|akezg0,62,42,1|av7snz,62,42,1|av7so0,49,63,0|b3i0rz,49,63,0|b3i0s0,62,42,1|bdxvbz,62,42,1|bdxvc0,49,63,0|bm83fz,49,63,0|bm83g0,62,42,1|bwnxzz,62,42,1|bwny00,49,63,0|c4y63z,49,63,0|c4y640,62,42,1|cfqzbz,62,42,1|cfqzc0,49,63,0|cno8rz,49,63,0|cno8s0,62,42,1|cyh1zz,62,42,1|cyh200,49,63,0|d6ebfz,49,63,0|d6ebg0,62,42,1|dh74nz,62,42,1|dh74o0,49,63,0|dphcrz,49,63,0|dphcs0,62,42,1|dzx7bz,62,42,1|dzx7c0,49,63,0|e87ffz,49,63,0|e87fg0,62,42,1|ein9zz,62,42,1|eina00,49,63,0|eqxi3z,49,63,0|eqxi40,62,42,1|f1dcnz,62,42,1|f1dco0,49,63,0|f9nkrz,49,63,0|f9nks0,62,42,1|fkgdzz,62,42,1|fkge00,45,62,0|fsdq7z,45,62,0|fsdq80,46,63,1|g36jfz,46,63,1|g36jg0,49,63,0|gb3q3z,49,63,0|gb3q40,62,42,1|glwjbz,62,42,1|glwjc0,49,63,0|gu6rfz,49,63,0|gu6rg0,62,42,1|h4mlzz,62,42,1|h4mm00,49,63,0|hcwu3z,49,63,0|hcwu40,62,42,1|hnconz,62,42,1|hncoo0,49,63,0|hvmwrz,49,63,0|hvmws0,62,42,1|i6fpzz,62,42,1|i6fq00,49,63,0|ieczfz,49,63,0|ieczg0,62,42,1|ip5snz,62,42,1|ip5so0,49,63,0|ix323z,49,63,0|ix3240,62,42,1|j7vvbz,62,42,1|j7vvc0,49,63,0|jeq8rz,49,63,0|jeq8s0,62,42,1|jqywnz,62,42,1|jqywo0,49,63,0|jxgbfz,49,63,0|jxgbg0,62,42,1|k9ozbz,62,42,1|k9ozc0,49,63,0|kg6e3z,49,63,0|kg6e40,62,42,1|ksf1zz,62,42,1|ksf200,49,63,0|kz9ffz,49,63,0|kz9fg0,62,42,1|lbi3bz,62,42,1|lbi3c0,49,63,0|lhzi3z,49,63,0|lhzi40,62,42,1|lu85zz,62,42,1|lu8600,49,63,0|m0pkrz,49,63,0|m0pks0,62,42,1|mcy8nz,62,42,1|mcy8o0,49,63,0|mjfnfz,49,63,0|mjfng0,62,42,1|mvobbz,62,42,1|mvobc0,49,63,0|n25q3z,49,63,0|n25q40,62,42,1|needzz,62,42,1|neee00,49,63,0|nkvsrz,49,63,0|nkvss0,62,42,1|nx4gnz,62,42,1|nx4go0,49,63,0|o3yu3z,49,63,0|o3yu40,62,42,1|og7hzz,62,42,1|og7i00,49,63,0|omowrz,49,63,0|omows0,62,42,1|oyxknz,62,42,1|oyxko0,49,63,0|p5ezfz,49,63,0|p5ezg0,62,42,1|phnnbz,62,42,1|phnnc0,49,63,0|po523z,49,63,0|po5240,62,42,1|q0dpzz,62,42,1|q0dq00,49,63,0|q6v4rz,49,63,0|q6v4s0,62,42,1|qj3snz,62,42,1|qj3so0,49,63,0|qpy63z,49,63,0|qpy640,62,42,1|r26tzz,62,42,1|r26u00,49,63,0|r8o8rz,49,63,0|r8o8s0,62,42,1|rkwwnz,62,42,1|rkwwo0,49,63,0|rrebfz,49,63,0|rrebg0,62,42,1|s3mzbz,62,42,1|s3mzc0,49,63,0|sa4e3z,49,63,0|sa4e40,62,42,1|smd1zz,62,42,1|smd200,49,63,0|ssugrz,49,63,0|ssugs0,62,42,1|t534nz,62,42,1|t534o0,49,63,0|tbkjfz,49,63,0|tbkjg0,62,42,1|tnt7bz,62,42,1|tnt7c0,49,63,0|tunkrz,49,63,0|tunks0,62,42,1|u6w8nz,62,42,1|u6w8o0,49,63,0|uddnfz,49,63,0|uddng0,62,42,1|upmbbz,62,42,1|upmbc0,49,63,0|uw3q3z,49,63,0|uw3q40,62,42,1|v8cdzz,62,42,1|v8ce00,49,63,0|vetsrz,49,63,0|vetss0,62,42,1|vr2gnz,62,42,1|vr2go0,49,63,0|vxjvfz,49,63,0|vxjvg0,62,42,1|w9sjbz,62,42,1|w9sjc0,49,63,0|wgmwrz,49,63,0|wgmws0,62,42,1|wsvknz,62,42,1|wsvko0,49,63,0|wzczfz,49,63,0|wzczg0,62,42,1|xblnbz,62,42,1|xblnc0,49,63,0|xi323z,49,63,0|xi3240,62,42,1|xubpzz,62,42,1|xubq00,49,63,0|y0t4rz,49,63,0|y0t4s0,62,42,1|yd1snz,62,42,1|yd1so0,49,63,0|yjj7fz,49,63,0|yjj7g0,62,42,1|yvrvbz,62,42,1|yvrvc0,49,63,0|z29a3z,49,63,0|z29a40,62,42,1|zehxzz,62,42,1|zehy00,49,63,0\",\"America/Jamaica|,0,104,0|-15r0v42,74,104,0|-u85og3,74,104,0|-u85og2,49,63,0|23fcrz,49,63,0|23fcs0,62,42,1|2ijpzz,62,42,1|2ijq00,49,63,0|2oo63z,49,63,0|2oo640,62,42,1|319snz,62,42,1|319so0,49,63,0|3amwrz,49,63,0|3amws0,62,42,1|3kctzz,62,42,1|3kcu00,49,63,0|3tczfz,49,63,0|3tczg0,62,42,1|432wnz,62,42,1|432wo0,49,63,0|4cg0rz,49,63,0|4cg0s0,62,42,1|4lszbz,62,42,1|4lszc0,49,63,0|4v63fz,49,63,0|4v63g0,62,42,1|54j1zz,62,42,1|54j200,49,63,0|5dw63z,49,63,0|5dw640,62,42,1|5n94nz,62,42,1|5n94o0,49,63,0|5wm8rz,49,63,0|5wm8s0,62,42,1|65z7bz,62,42,1|65z7c0,49,63,0|6fcbfz,49,63,0|6fcbg0,62,42,1|6p28nz,62,42,1|6p28o0,49,63,0|6y2e3z,49,63,0|6y2e40,62,42,1|77sbbz,62,42,1|77sbc0,49,63,0\",\"America/Juneau|,0,122,0|-1hc7qjz,0,123,0|-1078wfw,0,123,0|-1078wfv,51,40,0|-ek1w81,51,40,0|-ek1w80,68,66,1|-cq2tg1,68,66,1|-cq2tg0,69,66,1|-cnov01,69,66,1|-cnov00,51,40,0|-csc81,51,40,0|-csc80,57,66,1|-3fdo1,57,66,1|-3fdo0,51,40,0|5xqfz,51,40,0|5xqg0,57,66,1|faozz,57,66,1|fap00,51,40,0|ont3z,51,40,0|ont40,57,66,1|ydqbz,57,66,1|ydqc0,51,40,0|17qufz,51,40,0|17qug0,57,66,1|1h3szz,57,66,1|1h3t00,51,40,0|1qgx3z,51,40,0|1qgx40,57,66,1|1ztvnz,57,66,1|1ztvo0,51,40,0|23fl3z,51,40,0|23fl40,57,66,1|2ijybz,57,66,1|2ijyc0,51,40,0|2ooefz,51,40,0|2ooeg0,57,66,1|31a0zz,57,66,1|31a100,51,40,0|3an53z,51,40,0|3an540,57,66,1|3kd2bz,57,66,1|3kd2c0,51,40,0|3td7rz,51,40,0|3td7s0,57,66,1|4334zz,57,66,1|433500,51,40,0|4cg93z,51,40,0|4cg940,57,66,1|4lt7nz,57,66,1|4lt7o0,51,40,0|4v6brz,51,40,0|4v6bs0,57,66,1|54jabz,57,66,1|54jac0,51,40,0|5dwefz,51,40,0|5dweg0,64,40,1|5n9frz,64,40,1|5n9fs0,51,40,0|5wmh3z,51,40,0|5wmh40,57,66,1|65zfnz,57,66,1|65zfo0,51,40,0|6fcjrz,51,40,0|6fcjs0,57,66,1|6p2gzz,57,66,1|6p2h00,51,40,0|6y2mfz,51,40,0|6y2mg0,57,66,1|77sjnz,57,66,1|77sjo0,36,37,0|79dybz,36,37,0|79dyc0,37,37,0|7h5qjz,37,37,0|7h5qk0,38,40,1|7qip3z,38,40,1|7qip40,37,37,0|7zvt7z,37,37,0|7zvt80,38,40,1|898rrz,38,40,1|898rs0,37,37,0|8ilvvz,37,37,0|8ilvw0,38,40,1|8ryufz,38,40,1|8ryug0,37,37,0|9092jz,37,37,0|9092k0,38,40,1|9aox3z,38,40,1|9aox40,37,37,0|9iz57z,37,37,0|9iz580,38,40,1|9tryfz,38,40,1|9tryg0,37,37,0|a1p7vz,37,37,0|a1p7w0,38,40,1|aci13z,38,40,1|aci140,37,37,0|akfajz,37,37,0|akfak0,38,40,1|av83rz,38,40,1|av83s0,37,37,0|b3ibvz,37,37,0|b3ibw0,38,40,1|bdy6fz,38,40,1|bdy6g0,37,37,0|bm8ejz,37,37,0|bm8ek0,38,40,1|bwo93z,38,40,1|bwo940,37,37,0|c4yh7z,37,37,0|c4yh80,38,40,1|cfrafz,38,40,1|cfrag0,37,37,0|cnojvz,37,37,0|cnojw0,38,40,1|cyhd3z,38,40,1|cyhd40,37,37,0|d6emjz,37,37,0|d6emk0,38,40,1|dh7frz,38,40,1|dh7fs0,37,37,0|dphnvz,37,37,0|dphnw0,38,40,1|dzxifz,38,40,1|dzxig0,37,37,0|e87qjz,37,37,0|e87qk0,38,40,1|einl3z,38,40,1|einl40,37,37,0|eqxt7z,37,37,0|eqxt80,38,40,1|f1dnrz,38,40,1|f1dns0,37,37,0|f9nvvz,37,37,0|f9nvw0,38,40,1|fkgp3z,38,40,1|fkgp40,37,37,0|fsdyjz,37,37,0|fsdyk0,38,40,1|g36rrz,38,40,1|g36rs0,37,37,0|gb417z,37,37,0|gb4180,38,40,1|glwufz,38,40,1|glwug0,37,37,0|gu72jz,37,37,0|gu72k0,38,40,1|h4mx3z,38,40,1|h4mx40,37,37,0|hcx57z,37,37,0|hcx580,38,40,1|hnczrz,38,40,1|hnczs0,37,37,0|hvn7vz,37,37,0|hvn7w0,38,40,1|i6g13z,38,40,1|i6g140,37,37,0|iedajz,37,37,0|iedak0,38,40,1|ip63rz,38,40,1|ip63s0,37,37,0|ix3d7z,37,37,0|ix3d80,38,40,1|j7w6fz,38,40,1|j7w6g0,37,37,0|jeqjvz,37,37,0|jeqjw0,38,40,1|jqz7rz,38,40,1|jqz7s0,37,37,0|jxgmjz,37,37,0|jxgmk0,38,40,1|k9pafz,38,40,1|k9pag0,37,37,0|kg6p7z,37,37,0|kg6p80,38,40,1|ksfd3z,38,40,1|ksfd40,37,37,0|kz9qjz,37,37,0|kz9qk0,38,40,1|lbiefz,38,40,1|lbieg0,37,37,0|lhzt7z,37,37,0|lhzt80,38,40,1|lu8h3z,38,40,1|lu8h40,37,37,0|m0pvvz,37,37,0|m0pvw0,38,40,1|mcyjrz,38,40,1|mcyjs0,37,37,0|mjfyjz,37,37,0|mjfyk0,38,40,1|mvomfz,38,40,1|mvomg0,37,37,0|n2617z,37,37,0|n26180,38,40,1|neep3z,38,40,1|neep40,37,37,0|nkw3vz,37,37,0|nkw3w0,38,40,1|nx4rrz,38,40,1|nx4rs0,37,37,0|o3z57z,37,37,0|o3z580,38,40,1|og7t3z,38,40,1|og7t40,37,37,0|omp7vz,37,37,0|omp7w0,38,40,1|oyxvrz,38,40,1|oyxvs0,37,37,0|p5fajz,37,37,0|p5fak0,38,40,1|phnyfz,38,40,1|phnyg0,37,37,0|po5d7z,37,37,0|po5d80,38,40,1|q0e13z,38,40,1|q0e140,37,37,0|q6vfvz,37,37,0|q6vfw0,38,40,1|qj43rz,38,40,1|qj43s0,37,37,0|qpyh7z,37,37,0|qpyh80,38,40,1|r2753z,38,40,1|r27540,37,37,0|r8ojvz,37,37,0|r8ojw0,38,40,1|rkx7rz,38,40,1|rkx7s0,37,37,0|rremjz,37,37,0|rremk0,38,40,1|s3nafz,38,40,1|s3nag0,37,37,0|sa4p7z,37,37,0|sa4p80,38,40,1|smdd3z,38,40,1|smdd40,37,37,0|ssurvz,37,37,0|ssurw0,38,40,1|t53frz,38,40,1|t53fs0,37,37,0|tbkujz,37,37,0|tbkuk0,38,40,1|tntifz,38,40,1|tntig0,37,37,0|tunvvz,37,37,0|tunvw0,38,40,1|u6wjrz,38,40,1|u6wjs0,37,37,0|uddyjz,37,37,0|uddyk0,38,40,1|upmmfz,38,40,1|upmmg0,37,37,0|uw417z,37,37,0|uw4180,38,40,1|v8cp3z,38,40,1|v8cp40,37,37,0|veu3vz,37,37,0|veu3w0,38,40,1|vr2rrz,38,40,1|vr2rs0,37,37,0|vxk6jz,37,37,0|vxk6k0,38,40,1|w9sufz,38,40,1|w9sug0,37,37,0|wgn7vz,37,37,0|wgn7w0,38,40,1|wsvvrz,38,40,1|wsvvs0,37,37,0|wzdajz,37,37,0|wzdak0,38,40,1|xblyfz,38,40,1|xblyg0,37,37,0|xi3d7z,37,37,0|xi3d80,38,40,1|xuc13z,38,40,1|xuc140,37,37,0|y0tfvz,37,37,0|y0tfw0,38,40,1|yd23rz,38,40,1|yd23s0,37,37,0|yjjijz,37,37,0|yjjik0,38,40,1|yvs6fz,38,40,1|yvs6g0,37,37,0|z29l7z,37,37,0|z29l80,38,40,1|zei93z,38,40,1|zei940,37,37,0\",\"America/Kentucky/Louisville|,0,124,0|-18y0m00,45,62,0|-r0esg1,45,62,0|-r0esg0,46,63,1|-qplz81,46,63,1|-qplz80,45,62,0|-qhops1,45,62,0|-qhops0,46,63,1|-q6vwk1,46,63,1|-q6vwk0,45,62,0|-pefr41,45,62,0|-pefr40,46,63,1|-p841w1,46,63,1|-p841w0,45,62,0|-eyvds1,45,62,0|-eyvds0,46,63,1|-eqy9w1,46,63,1|-eqy9w0,45,62,0|-ek21s1,45,62,0|-ek21s0,47,63,1|-cq2tg1,47,63,1|-cq2tg0,48,63,1|-cnp0k1,48,63,1|-cnp0k0,45,62,0|-ccw7ad,45,62,0|-ccw7ac,46,63,1|-cb3b81,46,63,1|-cb3b80,45,62,0|-a9msg1,45,62,0|-a9msg0,46,63,1|-a22n81,46,63,1|-a22n80,45,62,0|-9qwps1,45,62,0|-9qwps0,46,63,1|-9izlw1,46,63,1|-9izlw0,45,62,0|-986n41,45,62,0|-986n40,46,63,1|-909j81,46,63,1|-909j80,45,62,0|-8pgkg1,45,62,0|-8pgkg0,46,63,1|-8hjgk1,46,63,1|-8hjgk0,45,62,0|-86qhs1,45,62,0|-86qhs0,46,63,1|-7ytdw1,46,63,1|-7ytdw0,45,62,0|-7o0f41,45,62,0|-7o0f40,46,63,1|-7g3b81,46,63,1|-7g3b80,45,62,0|-74xds1,45,62,0|-74xds0,46,63,1|-6vkf81,46,63,1|-6vkf80,45,62,0|-6m7b41,45,62,0|-6m7b40,46,63,1|-6cuck1,46,63,1|-6cuck0,45,62,0|-63h8g1,45,62,0|-63h8g0,46,63,1|-5u49w1,46,63,1|-5u49w0,45,62,0|-5kr5s1,45,62,0|-5kr5s0,46,63,1|-5be781,46,63,1|-5be780,45,62,0|-521341,45,62,0|-521340,46,63,1|-4sb5w1,46,63,1|-4sb5w0,45,62,0|-4iy1s1,45,62,0|-4iy1s0,46,63,1|-4emkk1,46,63,1|-4emkk0,49,63,0|-vin81,49,63,0|-vin80,62,42,1|-m5oo1,62,42,1|-m5oo0,49,63,0|-cskk1,49,63,0|-cskk0,62,42,1|-3fm01,62,42,1|-3fm00,49,63,0|5xi3z,49,63,0|5xi40,62,42,1|fagnz,62,42,1|fago0,49,63,0|onkrz,49,63,0|onks0,62,42,1|ydhzz,62,42,1|ydi00,49,63,0|17qm3z,49,63,0|17qm40,62,42,1|1h3knz,62,42,1|1h3ko0,49,63,0|1qgorz,49,63,0|1qgos0,62,42,1|1ztnbz,62,42,1|1ztnc0,49,63,0|23fcrz,49,63,0|23fcs0,46,63,1|2ijsrz,46,63,1|2ijss0,49,63,0|2oo63z,49,63,0|2oo640,62,42,1|319snz,62,42,1|319so0,49,63,0|3amwrz,49,63,0|3amws0,62,42,1|3kctzz,62,42,1|3kcu00,49,63,0|3tczfz,49,63,0|3tczg0,62,42,1|432wnz,62,42,1|432wo0,49,63,0|4cg0rz,49,63,0|4cg0s0,62,42,1|4lszbz,62,42,1|4lszc0,49,63,0|4v63fz,49,63,0|4v63g0,62,42,1|54j1zz,62,42,1|54j200,49,63,0|5dw63z,49,63,0|5dw640,62,42,1|5n94nz,62,42,1|5n94o0,49,63,0|5wm8rz,49,63,0|5wm8s0,62,42,1|65z7bz,62,42,1|65z7c0,49,63,0|6fcbfz,49,63,0|6fcbg0,62,42,1|6p28nz,62,42,1|6p28o0,49,63,0|6y2e3z,49,63,0|6y2e40,62,42,1|77sbbz,62,42,1|77sbc0,49,63,0|7h5ffz,49,63,0|7h5fg0,62,42,1|7qidzz,62,42,1|7qie00,49,63,0|7zvi3z,49,63,0|7zvi40,62,42,1|898gnz,62,42,1|898go0,49,63,0|8ilkrz,49,63,0|8ilks0,62,42,1|8ryjbz,62,42,1|8ryjc0,49,63,0|908rfz,49,63,0|908rg0,62,42,1|9aolzz,62,42,1|9aom00,49,63,0|9iyu3z,49,63,0|9iyu40,62,42,1|9trnbz,62,42,1|9trnc0,49,63,0|a1owrz,49,63,0|a1ows0,62,42,1|achpzz,62,42,1|achq00,49,63,0|akezfz,49,63,0|akezg0,62,42,1|av7snz,62,42,1|av7so0,49,63,0|b3i0rz,49,63,0|b3i0s0,62,42,1|bdxvbz,62,42,1|bdxvc0,49,63,0|bm83fz,49,63,0|bm83g0,62,42,1|bwnxzz,62,42,1|bwny00,49,63,0|c4y63z,49,63,0|c4y640,62,42,1|cfqzbz,62,42,1|cfqzc0,49,63,0|cno8rz,49,63,0|cno8s0,62,42,1|cyh1zz,62,42,1|cyh200,49,63,0|d6ebfz,49,63,0|d6ebg0,62,42,1|dh74nz,62,42,1|dh74o0,49,63,0|dphcrz,49,63,0|dphcs0,62,42,1|dzx7bz,62,42,1|dzx7c0,49,63,0|e87ffz,49,63,0|e87fg0,62,42,1|ein9zz,62,42,1|eina00,49,63,0|eqxi3z,49,63,0|eqxi40,62,42,1|f1dcnz,62,42,1|f1dco0,49,63,0|f9nkrz,49,63,0|f9nks0,62,42,1|fkgdzz,62,42,1|fkge00,49,63,0|fsdnfz,49,63,0|fsdng0,62,42,1|g36gnz,62,42,1|g36go0,49,63,0|gb3q3z,49,63,0|gb3q40,62,42,1|glwjbz,62,42,1|glwjc0,49,63,0|gu6rfz,49,63,0|gu6rg0,62,42,1|h4mlzz,62,42,1|h4mm00,49,63,0|hcwu3z,49,63,0|hcwu40,62,42,1|hnconz,62,42,1|hncoo0,49,63,0|hvmwrz,49,63,0|hvmws0,62,42,1|i6fpzz,62,42,1|i6fq00,49,63,0|ieczfz,49,63,0|ieczg0,62,42,1|ip5snz,62,42,1|ip5so0,49,63,0|ix323z,49,63,0|ix3240,62,42,1|j7vvbz,62,42,1|j7vvc0,49,63,0|jeq8rz,49,63,0|jeq8s0,62,42,1|jqywnz,62,42,1|jqywo0,49,63,0|jxgbfz,49,63,0|jxgbg0,62,42,1|k9ozbz,62,42,1|k9ozc0,49,63,0|kg6e3z,49,63,0|kg6e40,62,42,1|ksf1zz,62,42,1|ksf200,49,63,0|kz9ffz,49,63,0|kz9fg0,62,42,1|lbi3bz,62,42,1|lbi3c0,49,63,0|lhzi3z,49,63,0|lhzi40,62,42,1|lu85zz,62,42,1|lu8600,49,63,0|m0pkrz,49,63,0|m0pks0,62,42,1|mcy8nz,62,42,1|mcy8o0,49,63,0|mjfnfz,49,63,0|mjfng0,62,42,1|mvobbz,62,42,1|mvobc0,49,63,0|n25q3z,49,63,0|n25q40,62,42,1|needzz,62,42,1|neee00,49,63,0|nkvsrz,49,63,0|nkvss0,62,42,1|nx4gnz,62,42,1|nx4go0,49,63,0|o3yu3z,49,63,0|o3yu40,62,42,1|og7hzz,62,42,1|og7i00,49,63,0|omowrz,49,63,0|omows0,62,42,1|oyxknz,62,42,1|oyxko0,49,63,0|p5ezfz,49,63,0|p5ezg0,62,42,1|phnnbz,62,42,1|phnnc0,49,63,0|po523z,49,63,0|po5240,62,42,1|q0dpzz,62,42,1|q0dq00,49,63,0|q6v4rz,49,63,0|q6v4s0,62,42,1|qj3snz,62,42,1|qj3so0,49,63,0|qpy63z,49,63,0|qpy640,62,42,1|r26tzz,62,42,1|r26u00,49,63,0|r8o8rz,49,63,0|r8o8s0,62,42,1|rkwwnz,62,42,1|rkwwo0,49,63,0|rrebfz,49,63,0|rrebg0,62,42,1|s3mzbz,62,42,1|s3mzc0,49,63,0|sa4e3z,49,63,0|sa4e40,62,42,1|smd1zz,62,42,1|smd200,49,63,0|ssugrz,49,63,0|ssugs0,62,42,1|t534nz,62,42,1|t534o0,49,63,0|tbkjfz,49,63,0|tbkjg0,62,42,1|tnt7bz,62,42,1|tnt7c0,49,63,0|tunkrz,49,63,0|tunks0,62,42,1|u6w8nz,62,42,1|u6w8o0,49,63,0|uddnfz,49,63,0|uddng0,62,42,1|upmbbz,62,42,1|upmbc0,49,63,0|uw3q3z,49,63,0|uw3q40,62,42,1|v8cdzz,62,42,1|v8ce00,49,63,0|vetsrz,49,63,0|vetss0,62,42,1|vr2gnz,62,42,1|vr2go0,49,63,0|vxjvfz,49,63,0|vxjvg0,62,42,1|w9sjbz,62,42,1|w9sjc0,49,63,0|wgmwrz,49,63,0|wgmws0,62,42,1|wsvknz,62,42,1|wsvko0,49,63,0|wzczfz,49,63,0|wzczg0,62,42,1|xblnbz,62,42,1|xblnc0,49,63,0|xi323z,49,63,0|xi3240,62,42,1|xubpzz,62,42,1|xubq00,49,63,0|y0t4rz,49,63,0|y0t4s0,62,42,1|yd1snz,62,42,1|yd1so0,49,63,0|yjj7fz,49,63,0|yjj7g0,62,42,1|yvrvbz,62,42,1|yvrvc0,49,63,0|z29a3z,49,63,0|z29a40,62,42,1|zehxzz,62,42,1|zehy00,49,63,0\",\"America/Kentucky/Monticello|,0,125,0|-18y0m00,45,62,0|-r0esg1,45,62,0|-r0esg0,46,63,1|-qplz81,46,63,1|-qplz80,45,62,0|-qhops1,45,62,0|-qhops0,46,63,1|-q6vwk1,46,63,1|-q6vwk0,45,62,0|-ek21s1,45,62,0|-ek21s0,47,63,1|-cq2tg1,47,63,1|-cq2tg0,48,63,1|-cnp0k1,48,63,1|-cnp0k0,45,62,0|-vikg1,45,62,0|-vikg0,46,63,1|-m5lw1,46,63,1|-m5lw0,45,62,0|-cshs1,45,62,0|-cshs0,46,63,1|-3fj81,46,63,1|-3fj80,45,62,0|5xkvz,45,62,0|5xkw0,46,63,1|fajfz,46,63,1|fajg0,45,62,0|onnjz,45,62,0|onnk0,46,63,1|ydkrz,46,63,1|ydks0,45,62,0|17qovz,45,62,0|17qow0,46,63,1|1h3nfz,46,63,1|1h3ng0,45,62,0|1qgrjz,45,62,0|1qgrk0,46,63,1|1ztq3z,46,63,1|1ztq40,45,62,0|23ffjz,45,62,0|23ffk0,46,63,1|2ijsrz,46,63,1|2ijss0,45,62,0|2oo8vz,45,62,0|2oo8w0,46,63,1|319vfz,46,63,1|319vg0,45,62,0|3amzjz,45,62,0|3amzk0,46,63,1|3kcwrz,46,63,1|3kcws0,45,62,0|3td27z,45,62,0|3td280,46,63,1|432zfz,46,63,1|432zg0,45,62,0|4cg3jz,45,62,0|4cg3k0,46,63,1|4lt23z,46,63,1|4lt240,45,62,0|4v667z,45,62,0|4v6680,46,63,1|54j4rz,46,63,1|54j4s0,45,62,0|5dw8vz,45,62,0|5dw8w0,46,63,1|5n97fz,46,63,1|5n97g0,45,62,0|5wmbjz,45,62,0|5wmbk0,46,63,1|65za3z,46,63,1|65za40,45,62,0|6fce7z,45,62,0|6fce80,46,63,1|6p2bfz,46,63,1|6p2bg0,45,62,0|6y2gvz,45,62,0|6y2gw0,46,63,1|77se3z,46,63,1|77se40,45,62,0|7h5i7z,45,62,0|7h5i80,46,63,1|7qigrz,46,63,1|7qigs0,45,62,0|7zvkvz,45,62,0|7zvkw0,46,63,1|898jfz,46,63,1|898jg0,45,62,0|8ilnjz,45,62,0|8ilnk0,46,63,1|8rym3z,46,63,1|8rym40,45,62,0|908u7z,45,62,0|908u80,46,63,1|9aoorz,46,63,1|9aoos0,45,62,0|9iywvz,45,62,0|9iyww0,46,63,1|9trq3z,46,63,1|9trq40,45,62,0|a1ozjz,45,62,0|a1ozk0,46,63,1|achsrz,46,63,1|achss0,45,62,0|akf27z,45,62,0|akf280,46,63,1|av7vfz,46,63,1|av7vg0,45,62,0|b3i3jz,45,62,0|b3i3k0,46,63,1|bdxy3z,46,63,1|bdxy40,45,62,0|bm867z,45,62,0|bm8680,46,63,1|bwo0rz,46,63,1|bwo0s0,45,62,0|c4y8vz,45,62,0|c4y8w0,46,63,1|cfr23z,46,63,1|cfr240,45,62,0|cnobjz,45,62,0|cnobk0,46,63,1|cyh4rz,46,63,1|cyh4s0,45,62,0|d6ee7z,45,62,0|d6ee80,46,63,1|dh77fz,46,63,1|dh77g0,45,62,0|dphfjz,45,62,0|dphfk0,46,63,1|dzxa3z,46,63,1|dzxa40,45,62,0|e87i7z,45,62,0|e87i80,46,63,1|eincrz,46,63,1|eincs0,45,62,0|eqxkvz,45,62,0|eqxkw0,46,63,1|f1dffz,46,63,1|f1dfg0,45,62,0|f9nnjz,45,62,0|f9nnk0,46,63,1|fkggrz,46,63,1|fkggs0,45,62,0|fsdq7z,45,62,0|fsdq80,46,63,1|g36jfz,46,63,1|g36jg0,49,63,0|gb3q3z,49,63,0|gb3q40,62,42,1|glwjbz,62,42,1|glwjc0,49,63,0|gu6rfz,49,63,0|gu6rg0,62,42,1|h4mlzz,62,42,1|h4mm00,49,63,0|hcwu3z,49,63,0|hcwu40,62,42,1|hnconz,62,42,1|hncoo0,49,63,0|hvmwrz,49,63,0|hvmws0,62,42,1|i6fpzz,62,42,1|i6fq00,49,63,0|ieczfz,49,63,0|ieczg0,62,42,1|ip5snz,62,42,1|ip5so0,49,63,0|ix323z,49,63,0|ix3240,62,42,1|j7vvbz,62,42,1|j7vvc0,49,63,0|jeq8rz,49,63,0|jeq8s0,62,42,1|jqywnz,62,42,1|jqywo0,49,63,0|jxgbfz,49,63,0|jxgbg0,62,42,1|k9ozbz,62,42,1|k9ozc0,49,63,0|kg6e3z,49,63,0|kg6e40,62,42,1|ksf1zz,62,42,1|ksf200,49,63,0|kz9ffz,49,63,0|kz9fg0,62,42,1|lbi3bz,62,42,1|lbi3c0,49,63,0|lhzi3z,49,63,0|lhzi40,62,42,1|lu85zz,62,42,1|lu8600,49,63,0|m0pkrz,49,63,0|m0pks0,62,42,1|mcy8nz,62,42,1|mcy8o0,49,63,0|mjfnfz,49,63,0|mjfng0,62,42,1|mvobbz,62,42,1|mvobc0,49,63,0|n25q3z,49,63,0|n25q40,62,42,1|needzz,62,42,1|neee00,49,63,0|nkvsrz,49,63,0|nkvss0,62,42,1|nx4gnz,62,42,1|nx4go0,49,63,0|o3yu3z,49,63,0|o3yu40,62,42,1|og7hzz,62,42,1|og7i00,49,63,0|omowrz,49,63,0|omows0,62,42,1|oyxknz,62,42,1|oyxko0,49,63,0|p5ezfz,49,63,0|p5ezg0,62,42,1|phnnbz,62,42,1|phnnc0,49,63,0|po523z,49,63,0|po5240,62,42,1|q0dpzz,62,42,1|q0dq00,49,63,0|q6v4rz,49,63,0|q6v4s0,62,42,1|qj3snz,62,42,1|qj3so0,49,63,0|qpy63z,49,63,0|qpy640,62,42,1|r26tzz,62,42,1|r26u00,49,63,0|r8o8rz,49,63,0|r8o8s0,62,42,1|rkwwnz,62,42,1|rkwwo0,49,63,0|rrebfz,49,63,0|rrebg0,62,42,1|s3mzbz,62,42,1|s3mzc0,49,63,0|sa4e3z,49,63,0|sa4e40,62,42,1|smd1zz,62,42,1|smd200,49,63,0|ssugrz,49,63,0|ssugs0,62,42,1|t534nz,62,42,1|t534o0,49,63,0|tbkjfz,49,63,0|tbkjg0,62,42,1|tnt7bz,62,42,1|tnt7c0,49,63,0|tunkrz,49,63,0|tunks0,62,42,1|u6w8nz,62,42,1|u6w8o0,49,63,0|uddnfz,49,63,0|uddng0,62,42,1|upmbbz,62,42,1|upmbc0,49,63,0|uw3q3z,49,63,0|uw3q40,62,42,1|v8cdzz,62,42,1|v8ce00,49,63,0|vetsrz,49,63,0|vetss0,62,42,1|vr2gnz,62,42,1|vr2go0,49,63,0|vxjvfz,49,63,0|vxjvg0,62,42,1|w9sjbz,62,42,1|w9sjc0,49,63,0|wgmwrz,49,63,0|wgmws0,62,42,1|wsvknz,62,42,1|wsvko0,49,63,0|wzczfz,49,63,0|wzczg0,62,42,1|xblnbz,62,42,1|xblnc0,49,63,0|xi323z,49,63,0|xi3240,62,42,1|xubpzz,62,42,1|xubq00,49,63,0|y0t4rz,49,63,0|y0t4s0,62,42,1|yd1snz,62,42,1|yd1so0,49,63,0|yjj7fz,49,63,0|yjj7g0,62,42,1|yvrvbz,62,42,1|yvrvc0,49,63,0|z29a3z,49,63,0|z29a40,62,42,1|zehxzz,62,42,1|zehy00,49,63,0\",\"America/Kralendijk|,0,58,0|-u7lckd,43,59,0|-2lx4u1,43,59,0|-2lx4u0,32,42,0\",\"America/La_Paz|,0,126,0|-15r0wpo,41,126,0|-jxzspp,41,126,0|-jxzspo,27,127,1|-jpva5p,27,127,1|-jpva5o,42,42,0\",\"America/Lima|,0,128,0|-15r0v2c,0,129,0|-w25lpp,0,129,0|-w25lpo,56,63,0|-gp8241,56,63,0|-gp8240,42,42,1|-gklgw1,42,42,1|-gklgw0,56,63,0|-gbhm41,56,63,0|-gbhm40,42,42,1|-g24nk1,42,42,1|-g24nk0,56,63,0|-fsrjg1,56,63,0|-fsrjg0,42,42,1|-fjekw1,42,42,1|-fjekw0,56,63,0|8cmlvz,56,63,0|8cmlw0,42,42,1|8h973z,42,42,1|8h9740,56,63,0|8vej7z,56,63,0|8vej80,42,42,1|9014fz,42,42,1|9014g0,56,63,0|afs5vz,56,63,0|afs5w0,42,42,1|aker3z,42,42,1|aker40,56,63,0|cixpvz,56,63,0|cixpw0,42,42,1|cnkb3z,42,42,1|cnkb40,56,63,0\",\"America/Los_Angeles|,0,130,0|-18y0gg0,51,40,0|-r0emw1,51,40,0|-r0emw0,57,66,1|-qplto1,57,66,1|-qplto0,51,40,0|-qhok81,51,40,0|-qhok80,57,66,1|-q6vr01,57,66,1|-q6vr00,51,40,0|-ek1w81,51,40,0|-ek1w80,68,66,1|-cq2tg1,68,66,1|-cq2tg0,69,66,1|-cnov01,69,66,1|-cnov00,51,40,0|-bdliud,51,40,0|-bdliuc,57,66,1|-ayj0c1,57,66,1|-ayj0c0,51,40,0|-a9mpo1,51,40,0|-a9mpo0,57,66,1|-a22ho1,57,66,1|-a22ho0,51,40,0|-9qwn01,51,40,0|-9qwn00,57,66,1|-9izgc1,57,66,1|-9izgc0,51,40,0|-986kc1,51,40,0|-986kc0,57,66,1|-909do1,57,66,1|-909do0,51,40,0|-8pgho1,51,40,0|-8pgho0,57,66,1|-8hjb01,57,66,1|-8hjb00,51,40,0|-86qf01,51,40,0|-86qf00,57,66,1|-7yt8c1,57,66,1|-7yt8c0,51,40,0|-7o0cc1,51,40,0|-7o0cc0,57,66,1|-7g35o1,57,66,1|-7g35o0,51,40,0|-74xb01,51,40,0|-74xb00,57,66,1|-6x04c1,57,66,1|-6x04c0,51,40,0|-6m78c1,51,40,0|-6m78c0,57,66,1|-6ea1o1,57,66,1|-6ea1o0,51,40,0|-63h5o1,51,40,0|-63h5o0,57,66,1|-5vjz01,57,66,1|-5vjz00,51,40,0|-5kr301,51,40,0|-5kr300,57,66,1|-5ctwc1,57,66,1|-5ctwc0,51,40,0|-5210c1,51,40,0|-5210c0,57,66,1|-4u3to1,57,66,1|-4u3to0,51,40,0|-4ixz01,51,40,0|-4ixz00,57,66,1|-4bdr01,57,66,1|-4bdr00,51,40,0|-407wc1,51,40,0|-407wc0,57,66,1|-3quv01,57,66,1|-3quv00,51,40,0|-3hhto1,51,40,0|-3hhto0,57,66,1|-384sc1,57,66,1|-384sc0,51,40,0|-2yrr01,51,40,0|-2yrr00,57,66,1|-2pepo1,57,66,1|-2pepo0,51,40,0|-2g1oc1,51,40,0|-2g1oc0,57,66,1|-26boc1,57,66,1|-26boc0,51,40,0|-1xblo1,51,40,0|-1xblo0,57,66,1|-1nllo1,57,66,1|-1nllo0,51,40,0|-1e8hk1,51,40,0|-1e8hk0,57,66,1|-14vj01,57,66,1|-14vj00,51,40,0|-view1,51,40,0|-view0,57,66,1|-m5gc1,57,66,1|-m5gc0,51,40,0|-csc81,51,40,0|-csc80,57,66,1|-3fdo1,57,66,1|-3fdo0,51,40,0|5xqfz,51,40,0|5xqg0,57,66,1|faozz,57,66,1|fap00,51,40,0|ont3z,51,40,0|ont40,57,66,1|ydqbz,57,66,1|ydqc0,51,40,0|17qufz,51,40,0|17qug0,57,66,1|1h3szz,57,66,1|1h3t00,51,40,0|1qgx3z,51,40,0|1qgx40,57,66,1|1ztvnz,57,66,1|1ztvo0,51,40,0|23fl3z,51,40,0|23fl40,57,66,1|2ijybz,57,66,1|2ijyc0,51,40,0|2ooefz,51,40,0|2ooeg0,57,66,1|31a0zz,57,66,1|31a100,51,40,0|3an53z,51,40,0|3an540,57,66,1|3kd2bz,57,66,1|3kd2c0,51,40,0|3td7rz,51,40,0|3td7s0,57,66,1|4334zz,57,66,1|433500,51,40,0|4cg93z,51,40,0|4cg940,57,66,1|4lt7nz,57,66,1|4lt7o0,51,40,0|4v6brz,51,40,0|4v6bs0,57,66,1|54jabz,57,66,1|54jac0,51,40,0|5dwefz,51,40,0|5dweg0,57,66,1|5n9czz,57,66,1|5n9d00,51,40,0|5wmh3z,51,40,0|5wmh40,57,66,1|65zfnz,57,66,1|65zfo0,51,40,0|6fcjrz,51,40,0|6fcjs0,57,66,1|6p2gzz,57,66,1|6p2h00,51,40,0|6y2mfz,51,40,0|6y2mg0,57,66,1|77sjnz,57,66,1|77sjo0,51,40,0|7h5nrz,51,40,0|7h5ns0,57,66,1|7qimbz,57,66,1|7qimc0,51,40,0|7zvqfz,51,40,0|7zvqg0,57,66,1|898ozz,57,66,1|898p00,51,40,0|8ilt3z,51,40,0|8ilt40,57,66,1|8ryrnz,57,66,1|8ryro0,51,40,0|908zrz,51,40,0|908zs0,57,66,1|9aoubz,57,66,1|9aouc0,51,40,0|9iz2fz,51,40,0|9iz2g0,57,66,1|9trvnz,57,66,1|9trvo0,51,40,0|a1p53z,51,40,0|a1p540,57,66,1|achybz,57,66,1|achyc0,51,40,0|akf7rz,51,40,0|akf7s0,57,66,1|av80zz,57,66,1|av8100,51,40,0|b3i93z,51,40,0|b3i940,57,66,1|bdy3nz,57,66,1|bdy3o0,51,40,0|bm8brz,51,40,0|bm8bs0,57,66,1|bwo6bz,57,66,1|bwo6c0,51,40,0|c4yefz,51,40,0|c4yeg0,57,66,1|cfr7nz,57,66,1|cfr7o0,51,40,0|cnoh3z,51,40,0|cnoh40,57,66,1|cyhabz,57,66,1|cyhac0,51,40,0|d6ejrz,51,40,0|d6ejs0,57,66,1|dh7czz,57,66,1|dh7d00,51,40,0|dphl3z,51,40,0|dphl40,57,66,1|dzxfnz,57,66,1|dzxfo0,51,40,0|e87nrz,51,40,0|e87ns0,57,66,1|einibz,57,66,1|einic0,51,40,0|eqxqfz,51,40,0|eqxqg0,57,66,1|f1dkzz,57,66,1|f1dl00,51,40,0|f9nt3z,51,40,0|f9nt40,57,66,1|fkgmbz,57,66,1|fkgmc0,51,40,0|fsdvrz,51,40,0|fsdvs0,57,66,1|g36ozz,57,66,1|g36p00,51,40,0|gb3yfz,51,40,0|gb3yg0,57,66,1|glwrnz,57,66,1|glwro0,51,40,0|gu6zrz,51,40,0|gu6zs0,57,66,1|h4mubz,57,66,1|h4muc0,51,40,0|hcx2fz,51,40,0|hcx2g0,57,66,1|hncwzz,57,66,1|hncx00,51,40,0|hvn53z,51,40,0|hvn540,57,66,1|i6fybz,57,66,1|i6fyc0,51,40,0|ied7rz,51,40,0|ied7s0,57,66,1|ip60zz,57,66,1|ip6100,51,40,0|ix3afz,51,40,0|ix3ag0,57,66,1|j7w3nz,57,66,1|j7w3o0,51,40,0|jeqh3z,51,40,0|jeqh40,57,66,1|jqz4zz,57,66,1|jqz500,51,40,0|jxgjrz,51,40,0|jxgjs0,57,66,1|k9p7nz,57,66,1|k9p7o0,51,40,0|kg6mfz,51,40,0|kg6mg0,57,66,1|ksfabz,57,66,1|ksfac0,51,40,0|kz9nrz,51,40,0|kz9ns0,57,66,1|lbibnz,57,66,1|lbibo0,51,40,0|lhzqfz,51,40,0|lhzqg0,57,66,1|lu8ebz,57,66,1|lu8ec0,51,40,0|m0pt3z,51,40,0|m0pt40,57,66,1|mcygzz,57,66,1|mcyh00,51,40,0|mjfvrz,51,40,0|mjfvs0,57,66,1|mvojnz,57,66,1|mvojo0,51,40,0|n25yfz,51,40,0|n25yg0,57,66,1|neembz,57,66,1|neemc0,51,40,0|nkw13z,51,40,0|nkw140,57,66,1|nx4ozz,57,66,1|nx4p00,51,40,0|o3z2fz,51,40,0|o3z2g0,57,66,1|og7qbz,57,66,1|og7qc0,51,40,0|omp53z,51,40,0|omp540,57,66,1|oyxszz,57,66,1|oyxt00,51,40,0|p5f7rz,51,40,0|p5f7s0,57,66,1|phnvnz,57,66,1|phnvo0,51,40,0|po5afz,51,40,0|po5ag0,57,66,1|q0dybz,57,66,1|q0dyc0,51,40,0|q6vd3z,51,40,0|q6vd40,57,66,1|qj40zz,57,66,1|qj4100,51,40,0|qpyefz,51,40,0|qpyeg0,57,66,1|r272bz,57,66,1|r272c0,51,40,0|r8oh3z,51,40,0|r8oh40,57,66,1|rkx4zz,57,66,1|rkx500,51,40,0|rrejrz,51,40,0|rrejs0,57,66,1|s3n7nz,57,66,1|s3n7o0,51,40,0|sa4mfz,51,40,0|sa4mg0,57,66,1|smdabz,57,66,1|smdac0,51,40,0|ssup3z,51,40,0|ssup40,57,66,1|t53czz,57,66,1|t53d00,51,40,0|tbkrrz,51,40,0|tbkrs0,57,66,1|tntfnz,57,66,1|tntfo0,51,40,0|tunt3z,51,40,0|tunt40,57,66,1|u6wgzz,57,66,1|u6wh00,51,40,0|uddvrz,51,40,0|uddvs0,57,66,1|upmjnz,57,66,1|upmjo0,51,40,0|uw3yfz,51,40,0|uw3yg0,57,66,1|v8cmbz,57,66,1|v8cmc0,51,40,0|veu13z,51,40,0|veu140,57,66,1|vr2ozz,57,66,1|vr2p00,51,40,0|vxk3rz,51,40,0|vxk3s0,57,66,1|w9srnz,57,66,1|w9sro0,51,40,0|wgn53z,51,40,0|wgn540,57,66,1|wsvszz,57,66,1|wsvt00,51,40,0|wzd7rz,51,40,0|wzd7s0,57,66,1|xblvnz,57,66,1|xblvo0,51,40,0|xi3afz,51,40,0|xi3ag0,57,66,1|xubybz,57,66,1|xubyc0,51,40,0|y0td3z,51,40,0|y0td40,57,66,1|yd20zz,57,66,1|yd2100,51,40,0|yjjfrz,51,40,0|yjjfs0,57,66,1|yvs3nz,57,66,1|yvs3o0,51,40,0|z29ifz,51,40,0|z29ig0,57,66,1|zei6bz,57,66,1|zei6c0,51,40,0\",\"America/Lower_Princes|,0,58,0|-u7lckd,43,59,0|-2lx4u1,43,59,0|-2lx4u0,32,42,0\",\"America/Maceio|,0,131,0|-t85ldw,39,44,0|-jylag1,39,44,0|-jylag0,40,45,1|-jpb141,40,45,1|-jpb140,39,44,0|-jfsd01,39,44,0|-jfsd00,40,45,1|-j6j3s1,40,45,1|-j6j3s0,39,44,0|-ahcyc1,39,44,0|-ahcyc0,40,45,1|-aad3o1,40,45,1|-aad3o0,39,44,0|-9yl101,39,44,0|-9yl100,40,45,1|-9sd141,40,45,1|-9sd140,39,44,0|-9ft3o1,39,44,0|-9ft3o0,40,45,1|-99j941,40,45,1|-99j940,39,44,0|-8wzbo1,39,44,0|-8wzbo0,40,45,1|-8scqg1,40,45,1|-8scqg0,39,44,0|-35xmc1,39,44,0|-35xmc0,40,45,1|-31nzs1,40,45,1|-31nzs0,39,44,0|-2kdp01,39,44,0|-2kdp00,40,45,1|-2hcig1,40,45,1|-2hcig0,39,44,0|-24qqc1,39,44,0|-24qqc0,40,45,1|-204541,40,45,1|-204540,39,44,0|-1nid01,39,44,0|-1nid00,40,45,1|-1hc7s1,40,45,1|-1hc7s0,39,44,0|-14qfo1,39,44,0|-14qfo0,40,45,1|-yifs1,40,45,1|-yifs0,39,44,0|89jcbz,39,44,0|89jcc0,40,45,1|8gdk7z,40,45,1|8gdk80,39,44,0|8rwgbz,39,44,0|8rwgc0,40,45,1|8xns7z,40,45,1|8xns80,39,44,0|9aodnz,39,44,0|9aodo0,40,45,1|9g2qvz,40,45,1|9g2qw0,39,44,0|9t1hnz,39,44,0|9t1ho0,40,45,1|9yfuvz,40,45,1|9yfuw0,39,44,0|abrkbz,39,44,0|abrkc0,40,45,1|ahvuvz,40,45,1|ahvuw0,39,44,0|dggyzz,39,44,0|dggz00,40,45,1|dml9jz,40,45,1|dml9k0,39,44,0|fj0azz,39,44,0|fj0b00,40,45,1|fqkg7z,40,45,1|fqkg80,39,44,0|g23cbz,39,44,0|g23cc0,40,45,1|g2t6vz,40,45,1|g2t6w0,39,44,0|gl6dnz,39,44,0|gl6do0,40,45,1|grnmvz,40,45,1|grnmw0,39,44,0\",\"America/Managua|,0,132,0|-15r0tcs,21,133,0|-ijh6op,21,133,0|-ijh6oo,45,62,0|1qkbbz,45,62,0|1qkbc0,49,63,0|2ob1vz,49,63,0|2ob1w0,45,62,0|4t08nz,45,62,0|4t08o0,46,63,1|4y3hvz,46,63,1|4y3hw0,45,62,0|5bqbbz,45,62,0|5bqbc0,46,63,1|5gtkjz,46,63,1|5gtkk0,45,62,0|bhcefz,45,62,0|bhceg0,49,63,0|bv2gjz,49,63,0|bv2gk0,45,62,0|c05vbz,45,62,0|c05vc0,49,63,0|e3bcjz,49,63,0|e3bck0,45,62,0|iepvbz,45,62,0|iepvc0,46,63,1|inpv7z,46,63,1|inpv80,45,62,0|iyizjz,45,62,0|iyizk0,46,63,1|j6g0nz,46,63,1|j6g0o0,45,62,0\",\"America/Manaus|,0,134,0|-t85gvw,42,42,0|-jyl7o1,42,42,0|-jyl7o0,39,44,1|-jpayc1,39,44,1|-jpayc0,42,42,0|-jfsa81,42,42,0|-jfsa80,39,44,1|-j6j101,39,44,1|-j6j100,42,42,0|-ahcvk1,42,42,0|-ahcvk0,39,44,1|-aad0w1,39,44,1|-aad0w0,42,42,0|-9yky81,42,42,0|-9yky80,39,44,1|-9scyc1,39,44,1|-9scyc0,42,42,0|-9ft0w1,42,42,0|-9ft0w0,39,44,1|-99j6c1,39,44,1|-99j6c0,42,42,0|-8wz8w1,42,42,0|-8wz8w0,39,44,1|-8scno1,39,44,1|-8scno0,42,42,0|-35xjk1,42,42,0|-35xjk0,39,44,1|-31nx01,39,44,1|-31nx00,42,42,0|-2kdm81,42,42,0|-2kdm80,39,44,1|-2hcfo1,39,44,1|-2hcfo0,42,42,0|-24qnk1,42,42,0|-24qnk0,39,44,1|-2042c1,39,44,1|-2042c0,42,42,0|-1nia81,42,42,0|-1nia80,39,44,1|-1hc501,39,44,1|-1hc500,42,42,0|-14qcw1,42,42,0|-14qcw0,39,44,1|-yid01,39,44,1|-yid00,42,42,0|89jf3z,42,42,0|89jf40,39,44,1|8gdmzz,39,44,1|8gdn00,42,42,0|8rwj3z,42,42,0|8rwj40,39,44,1|8xnuzz,39,44,1|8xnv00,42,42,0|9aogfz,42,42,0|9aogg0,39,44,1|9g2tnz,39,44,1|9g2to0,42,42,0|cf0wfz,42,42,0|cf0wg0,39,44,1|cli5nz,39,44,1|cli5o0,42,42,0\",\"America/Marigot|,0,41,0|-u6m79w,32,42,0\",\"America/Martinique|,0,135,0|-15r0y0s,80,135,0|-umcvct,80,135,0|-umcvcs,32,42,0|5ct1rz,32,42,0|5ct1s0,54,44,1|5lt1nz,54,44,1|5lt1o0,32,42,0\",\"America/Matamoros|,0,136,0|-p1u7c0,45,62,0|9iywvz,45,62,0|9iyww0,46,63,1|9trq3z,46,63,1|9trq40,45,62,0|dphfjz,45,62,0|dphfk0,46,63,1|dzxa3z,46,63,1|dzxa40,45,62,0|e87i7z,45,62,0|e87i80,46,63,1|eincrz,46,63,1|eincs0,45,62,0|eqxkvz,45,62,0|eqxkw0,46,63,1|f1dffz,46,63,1|f1dfg0,45,62,0|f9nnjz,45,62,0|f9nnk0,46,63,1|fkggrz,46,63,1|fkggs0,45,62,0|fsdq7z,45,62,0|fsdq80,46,63,1|g36jfz,46,63,1|g36jg0,45,62,0|gcwm7z,45,62,0|gcwm80,46,63,1|gkgrfz,46,63,1|gkgrg0,45,62,0|gu6u7z,45,62,0|gu6u80,46,63,1|h4morz,46,63,1|h4mos0,45,62,0|hcwwvz,45,62,0|hcwww0,46,63,1|hncrfz,46,63,1|hncrg0,45,62,0|hvmzjz,45,62,0|hvmzk0,46,63,1|i6fsrz,46,63,1|i6fss0,45,62,0|ied27z,45,62,0|ied280,46,63,1|ip5vfz,46,63,1|ip5vg0,45,62,0|ix34vz,45,62,0|ix34w0,46,63,1|j7vy3z,46,63,1|j7vy40,45,62,0|jft7jz,45,62,0|jft7k0,46,63,1|jqm0rz,46,63,1|jqm0s0,45,62,0|jyw8vz,45,62,0|jyw8w0,46,63,1|k9c3fz,46,63,1|k9c3g0,45,62,0|khmbjz,45,62,0|khmbk0,46,63,1|ks263z,46,63,1|ks2640,45,62,0|kz9i7z,45,62,0|kz9i80,46,63,1|lbi63z,46,63,1|lbi640,45,62,0|lhzkvz,45,62,0|lhzkw0,46,63,1|lu88rz,46,63,1|lu88s0,45,62,0|m0pnjz,45,62,0|m0pnk0,46,63,1|mcybfz,46,63,1|mcybg0,45,62,0|mjfq7z,45,62,0|mjfq80,46,63,1|mvoe3z,46,63,1|mvoe40,45,62,0|n25svz,45,62,0|n25sw0,46,63,1|neegrz,46,63,1|neegs0,45,62,0|nkvvjz,45,62,0|nkvvk0,46,63,1|nx4jfz,46,63,1|nx4jg0,45,62,0|o3ywvz,45,62,0|o3yww0,46,63,1|og7krz,46,63,1|og7ks0,45,62,0|omozjz,45,62,0|omozk0,46,63,1|oyxnfz,46,63,1|oyxng0,45,62,0|p5f27z,45,62,0|p5f280,46,63,1|phnq3z,46,63,1|phnq40,45,62,0|po54vz,45,62,0|po54w0,46,63,1|q0dsrz,46,63,1|q0dss0,45,62,0|q6v7jz,45,62,0|q6v7k0,46,63,1|qj3vfz,46,63,1|qj3vg0,45,62,0|qpy8vz,45,62,0|qpy8w0,46,63,1|r26wrz,46,63,1|r26ws0,45,62,0|r8objz,45,62,0|r8obk0,46,63,1|rkwzfz,46,63,1|rkwzg0,45,62,0|rree7z,45,62,0|rree80,46,63,1|s3n23z,46,63,1|s3n240,45,62,0|sa4gvz,45,62,0|sa4gw0,46,63,1|smd4rz,46,63,1|smd4s0,45,62,0|ssujjz,45,62,0|ssujk0,46,63,1|t537fz,46,63,1|t537g0,45,62,0|tbkm7z,45,62,0|tbkm80,46,63,1|tnta3z,46,63,1|tnta40,45,62,0|tunnjz,45,62,0|tunnk0,46,63,1|u6wbfz,46,63,1|u6wbg0,45,62,0|uddq7z,45,62,0|uddq80,46,63,1|upme3z,46,63,1|upme40,45,62,0|uw3svz,45,62,0|uw3sw0,46,63,1|v8cgrz,46,63,1|v8cgs0,45,62,0|vetvjz,45,62,0|vetvk0,46,63,1|vr2jfz,46,63,1|vr2jg0,45,62,0|vxjy7z,45,62,0|vxjy80,46,63,1|w9sm3z,46,63,1|w9sm40,45,62,0|wgmzjz,45,62,0|wgmzk0,46,63,1|wsvnfz,46,63,1|wsvng0,45,62,0|wzd27z,45,62,0|wzd280,46,63,1|xblq3z,46,63,1|xblq40,45,62,0|xi34vz,45,62,0|xi34w0,46,63,1|xubsrz,46,63,1|xubss0,45,62,0|y0t7jz,45,62,0|y0t7k0,46,63,1|yd1vfz,46,63,1|yd1vg0,45,62,0|yjja7z,45,62,0|yjja80,46,63,1|yvry3z,46,63,1|yvry40,45,62,0|z29cvz,45,62,0|z29cw0,46,63,1|zei0rz,46,63,1|zei0s0,45,62,0\",\"America/Mazatlan|,0,137,0|-p1u4k0,50,66,0|-m7mko1,50,66,0|-m7mko0,45,62,0|-kf67c1,45,62,0|-kf67c0,50,66,0|-k6j3c1,50,66,0|-k6j3c0,45,62,0|-jypm01,45,62,0|-jypm00,50,66,0|-jpan81,50,66,0|-jpan80,45,62,0|-eg9601,45,62,0|-eg9600,50,66,0|-axv381,50,66,0|-axv380,51,40,0|m7z,51,40,0|m80,50,66,0|dphibz,50,66,0|dphic0,52,62,1|dzxcvz,52,62,1|dzxcw0,50,66,0|e87kzz,50,66,0|e87l00,52,62,1|einfjz,52,62,1|einfk0,50,66,0|eqxnnz,50,66,0|eqxno0,52,62,1|f1di7z,52,62,1|f1di80,50,66,0|f9nqbz,50,66,0|f9nqc0,52,62,1|fkgjjz,52,62,1|fkgjk0,50,66,0|fsdszz,50,66,0|fsdt00,52,62,1|g36m7z,52,62,1|g36m80,50,66,0|gcwozz,50,66,0|gcwp00,52,62,1|gkgu7z,52,62,1|gkgu80,50,66,0|gu6wzz,50,66,0|gu6x00,52,62,1|h4mrjz,52,62,1|h4mrk0,50,66,0|hcwznz,50,66,0|hcwzo0,52,62,1|hncu7z,52,62,1|hncu80,50,66,0|hvn2bz,50,66,0|hvn2c0,52,62,1|i6fvjz,52,62,1|i6fvk0,50,66,0|ied4zz,50,66,0|ied500,52,62,1|ip5y7z,52,62,1|ip5y80,50,66,0|ix37nz,50,66,0|ix37o0,52,62,1|j7w0vz,52,62,1|j7w0w0,50,66,0|jftabz,50,66,0|jftac0,52,62,1|jqm3jz,52,62,1|jqm3k0,50,66,0|jywbnz,50,66,0|jywbo0,52,62,1|k9c67z,52,62,1|k9c680,50,66,0|khmebz,50,66,0|khmec0,52,62,1|ks28vz,52,62,1|ks28w0,50,66,0|l0cgzz,50,66,0|l0ch00,52,62,1|lb5a7z,52,62,1|lb5a80,50,66,0|lj2jnz,50,66,0|lj2jo0,52,62,1|ltvcvz,52,62,1|ltvcw0,50,66,0|m1smbz,50,66,0|m1smc0,52,62,1|mclfjz,52,62,1|mclfk0,50,66,0|mkvnnz,50,66,0|mkvno0,52,62,1|mvbi7z,52,62,1|mvbi80,50,66,0|n3lqbz,50,66,0|n3lqc0,52,62,1|ne1kvz,52,62,1|ne1kw0,50,66,0|nmbszz,50,66,0|nmbt00,52,62,1|nwrnjz,52,62,1|nwrnk0,50,66,0|o51vnz,50,66,0|o51vo0,52,62,1|ofuovz,52,62,1|ofuow0,50,66,0|onrybz,50,66,0|onryc0,52,62,1|oykrjz,52,62,1|oykrk0,50,66,0|p6i0zz,50,66,0|p6i100,52,62,1|phau7z,52,62,1|phau80,50,66,0|ppl2bz,50,66,0|ppl2c0,52,62,1|q00wvz,52,62,1|q00ww0,50,66,0|q8b4zz,50,66,0|q8b500,52,62,1|qiqzjz,52,62,1|qiqzk0,50,66,0|qr17nz,50,66,0|qr17o0,52,62,1|r1u0vz,52,62,1|r1u0w0,50,66,0|r9rabz,50,66,0|r9rac0,52,62,1|rkk3jz,52,62,1|rkk3k0,50,66,0|rshczz,50,66,0|rshd00,52,62,1|s3a67z,52,62,1|s3a680,50,66,0|sbkebz,50,66,0|sbkec0,52,62,1|sm08vz,52,62,1|sm08w0,50,66,0|suagzz,50,66,0|suah00,52,62,1|t4qbjz,52,62,1|t4qbk0,50,66,0|td0jnz,50,66,0|td0jo0,52,62,1|tnge7z,52,62,1|tnge80,50,66,0|tvqmbz,50,66,0|tvqmc0,52,62,1|u6jfjz,52,62,1|u6jfk0,50,66,0|uegozz,50,66,0|uegp00,52,62,1|up9i7z,52,62,1|up9i80,50,66,0|ux6rnz,50,66,0|ux6ro0,52,62,1|v7zkvz,52,62,1|v7zkw0,50,66,0|vg9szz,50,66,0|vg9t00,52,62,1|vqpnjz,52,62,1|vqpnk0,50,66,0|vyzvnz,50,66,0|vyzvo0,52,62,1|w9fq7z,52,62,1|w9fq80,50,66,0|whpybz,50,66,0|whpyc0,52,62,1|wsirjz,52,62,1|wsirk0,50,66,0|x0g0zz,50,66,0|x0g100,52,62,1|xb8u7z,52,62,1|xb8u80,50,66,0|xj63nz,50,66,0|xj63o0,52,62,1|xtywvz,52,62,1|xtyww0,50,66,0|y1w6bz,50,66,0|y1w6c0,52,62,1|ycozjz,52,62,1|ycozk0,50,66,0|ykz7nz,50,66,0|ykz7o0,52,62,1|yvf27z,52,62,1|yvf280,50,66,0|z3pabz,50,66,0|z3pac0,52,62,1|ze54vz,52,62,1|ze54w0,50,66,0\",\"America/Menominee|,0,138,0|-17zjvrx,45,62,0|-r0esg1,45,62,0|-r0esg0,46,63,1|-qplz81,46,63,1|-qplz80,45,62,0|-qhops1,45,62,0|-qhops0,46,63,1|-q6vwk1,46,63,1|-q6vwk0,45,62,0|-ek21s1,45,62,0|-ek21s0,47,63,1|-cq2tg1,47,63,1|-cq2tg0,48,63,1|-cnp0k1,48,63,1|-cnp0k0,45,62,0|-ccw1s1,45,62,0|-ccw1s0,46,63,1|-c4yxw1,46,63,1|-c4yxw0,45,62,0|-1xbog1,45,62,0|-1xbog0,46,63,1|-1nlr81,46,63,1|-1nlr80,45,62,0|-cshs1,45,62,0|-cshs0,49,63,0|1qgorz,49,63,0|1qgos0,46,63,1|1ztq3z,46,63,1|1ztq40,45,62,0|23ffjz,45,62,0|23ffk0,46,63,1|2ijsrz,46,63,1|2ijss0,45,62,0|2oo8vz,45,62,0|2oo8w0,46,63,1|319vfz,46,63,1|319vg0,45,62,0|3amzjz,45,62,0|3amzk0,46,63,1|3kcwrz,46,63,1|3kcws0,45,62,0|3td27z,45,62,0|3td280,46,63,1|432zfz,46,63,1|432zg0,45,62,0|4cg3jz,45,62,0|4cg3k0,46,63,1|4lt23z,46,63,1|4lt240,45,62,0|4v667z,45,62,0|4v6680,46,63,1|54j4rz,46,63,1|54j4s0,45,62,0|5dw8vz,45,62,0|5dw8w0,46,63,1|5n97fz,46,63,1|5n97g0,45,62,0|5wmbjz,45,62,0|5wmbk0,46,63,1|65za3z,46,63,1|65za40,45,62,0|6fce7z,45,62,0|6fce80,46,63,1|6p2bfz,46,63,1|6p2bg0,45,62,0|6y2gvz,45,62,0|6y2gw0,46,63,1|77se3z,46,63,1|77se40,45,62,0|7h5i7z,45,62,0|7h5i80,46,63,1|7qigrz,46,63,1|7qigs0,45,62,0|7zvkvz,45,62,0|7zvkw0,46,63,1|898jfz,46,63,1|898jg0,45,62,0|8ilnjz,45,62,0|8ilnk0,46,63,1|8rym3z,46,63,1|8rym40,45,62,0|908u7z,45,62,0|908u80,46,63,1|9aoorz,46,63,1|9aoos0,45,62,0|9iywvz,45,62,0|9iyww0,46,63,1|9trq3z,46,63,1|9trq40,45,62,0|a1ozjz,45,62,0|a1ozk0,46,63,1|achsrz,46,63,1|achss0,45,62,0|akf27z,45,62,0|akf280,46,63,1|av7vfz,46,63,1|av7vg0,45,62,0|b3i3jz,45,62,0|b3i3k0,46,63,1|bdxy3z,46,63,1|bdxy40,45,62,0|bm867z,45,62,0|bm8680,46,63,1|bwo0rz,46,63,1|bwo0s0,45,62,0|c4y8vz,45,62,0|c4y8w0,46,63,1|cfr23z,46,63,1|cfr240,45,62,0|cnobjz,45,62,0|cnobk0,46,63,1|cyh4rz,46,63,1|cyh4s0,45,62,0|d6ee7z,45,62,0|d6ee80,46,63,1|dh77fz,46,63,1|dh77g0,45,62,0|dphfjz,45,62,0|dphfk0,46,63,1|dzxa3z,46,63,1|dzxa40,45,62,0|e87i7z,45,62,0|e87i80,46,63,1|eincrz,46,63,1|eincs0,45,62,0|eqxkvz,45,62,0|eqxkw0,46,63,1|f1dffz,46,63,1|f1dfg0,45,62,0|f9nnjz,45,62,0|f9nnk0,46,63,1|fkggrz,46,63,1|fkggs0,45,62,0|fsdq7z,45,62,0|fsdq80,46,63,1|g36jfz,46,63,1|g36jg0,45,62,0|gb3svz,45,62,0|gb3sw0,46,63,1|glwm3z,46,63,1|glwm40,45,62,0|gu6u7z,45,62,0|gu6u80,46,63,1|h4morz,46,63,1|h4mos0,45,62,0|hcwwvz,45,62,0|hcwww0,46,63,1|hncrfz,46,63,1|hncrg0,45,62,0|hvmzjz,45,62,0|hvmzk0,46,63,1|i6fsrz,46,63,1|i6fss0,45,62,0|ied27z,45,62,0|ied280,46,63,1|ip5vfz,46,63,1|ip5vg0,45,62,0|ix34vz,45,62,0|ix34w0,46,63,1|j7vy3z,46,63,1|j7vy40,45,62,0|jeqbjz,45,62,0|jeqbk0,46,63,1|jqyzfz,46,63,1|jqyzg0,45,62,0|jxge7z,45,62,0|jxge80,46,63,1|k9p23z,46,63,1|k9p240,45,62,0|kg6gvz,45,62,0|kg6gw0,46,63,1|ksf4rz,46,63,1|ksf4s0,45,62,0|kz9i7z,45,62,0|kz9i80,46,63,1|lbi63z,46,63,1|lbi640,45,62,0|lhzkvz,45,62,0|lhzkw0,46,63,1|lu88rz,46,63,1|lu88s0,45,62,0|m0pnjz,45,62,0|m0pnk0,46,63,1|mcybfz,46,63,1|mcybg0,45,62,0|mjfq7z,45,62,0|mjfq80,46,63,1|mvoe3z,46,63,1|mvoe40,45,62,0|n25svz,45,62,0|n25sw0,46,63,1|neegrz,46,63,1|neegs0,45,62,0|nkvvjz,45,62,0|nkvvk0,46,63,1|nx4jfz,46,63,1|nx4jg0,45,62,0|o3ywvz,45,62,0|o3yww0,46,63,1|og7krz,46,63,1|og7ks0,45,62,0|omozjz,45,62,0|omozk0,46,63,1|oyxnfz,46,63,1|oyxng0,45,62,0|p5f27z,45,62,0|p5f280,46,63,1|phnq3z,46,63,1|phnq40,45,62,0|po54vz,45,62,0|po54w0,46,63,1|q0dsrz,46,63,1|q0dss0,45,62,0|q6v7jz,45,62,0|q6v7k0,46,63,1|qj3vfz,46,63,1|qj3vg0,45,62,0|qpy8vz,45,62,0|qpy8w0,46,63,1|r26wrz,46,63,1|r26ws0,45,62,0|r8objz,45,62,0|r8obk0,46,63,1|rkwzfz,46,63,1|rkwzg0,45,62,0|rree7z,45,62,0|rree80,46,63,1|s3n23z,46,63,1|s3n240,45,62,0|sa4gvz,45,62,0|sa4gw0,46,63,1|smd4rz,46,63,1|smd4s0,45,62,0|ssujjz,45,62,0|ssujk0,46,63,1|t537fz,46,63,1|t537g0,45,62,0|tbkm7z,45,62,0|tbkm80,46,63,1|tnta3z,46,63,1|tnta40,45,62,0|tunnjz,45,62,0|tunnk0,46,63,1|u6wbfz,46,63,1|u6wbg0,45,62,0|uddq7z,45,62,0|uddq80,46,63,1|upme3z,46,63,1|upme40,45,62,0|uw3svz,45,62,0|uw3sw0,46,63,1|v8cgrz,46,63,1|v8cgs0,45,62,0|vetvjz,45,62,0|vetvk0,46,63,1|vr2jfz,46,63,1|vr2jg0,45,62,0|vxjy7z,45,62,0|vxjy80,46,63,1|w9sm3z,46,63,1|w9sm40,45,62,0|wgmzjz,45,62,0|wgmzk0,46,63,1|wsvnfz,46,63,1|wsvng0,45,62,0|wzd27z,45,62,0|wzd280,46,63,1|xblq3z,46,63,1|xblq40,45,62,0|xi34vz,45,62,0|xi34w0,46,63,1|xubsrz,46,63,1|xubss0,45,62,0|y0t7jz,45,62,0|y0t7k0,46,63,1|yd1vfz,46,63,1|yd1vg0,45,62,0|yjja7z,45,62,0|yjja80,46,63,1|yvry3z,46,63,1|yvry40,45,62,0|z29cvz,45,62,0|z29cw0,46,63,1|zei0rz,46,63,1|zei0s0,45,62,0\",\"America/Merida|,0,139,0|-p1u7c0,45,62,0|690gnz,45,62,0|690go0,49,63,0|6qpf7z,49,63,0|6qpf80,45,62,0|dphfjz,45,62,0|dphfk0,46,63,1|dzxa3z,46,63,1|dzxa40,45,62,0|e87i7z,45,62,0|e87i80,46,63,1|eincrz,46,63,1|eincs0,45,62,0|eqxkvz,45,62,0|eqxkw0,46,63,1|f1dffz,46,63,1|f1dfg0,45,62,0|f9nnjz,45,62,0|f9nnk0,46,63,1|fkggrz,46,63,1|fkggs0,45,62,0|fsdq7z,45,62,0|fsdq80,46,63,1|g36jfz,46,63,1|g36jg0,45,62,0|gcwm7z,45,62,0|gcwm80,46,63,1|gkgrfz,46,63,1|gkgrg0,45,62,0|gu6u7z,45,62,0|gu6u80,46,63,1|h4morz,46,63,1|h4mos0,45,62,0|hcwwvz,45,62,0|hcwww0,46,63,1|hncrfz,46,63,1|hncrg0,45,62,0|hvmzjz,45,62,0|hvmzk0,46,63,1|i6fsrz,46,63,1|i6fss0,45,62,0|ied27z,45,62,0|ied280,46,63,1|ip5vfz,46,63,1|ip5vg0,45,62,0|ix34vz,45,62,0|ix34w0,46,63,1|j7vy3z,46,63,1|j7vy40,45,62,0|jft7jz,45,62,0|jft7k0,46,63,1|jqm0rz,46,63,1|jqm0s0,45,62,0|jyw8vz,45,62,0|jyw8w0,46,63,1|k9c3fz,46,63,1|k9c3g0,45,62,0|khmbjz,45,62,0|khmbk0,46,63,1|ks263z,46,63,1|ks2640,45,62,0|l0ce7z,45,62,0|l0ce80,46,63,1|lb57fz,46,63,1|lb57g0,45,62,0|lj2gvz,45,62,0|lj2gw0,46,63,1|ltva3z,46,63,1|ltva40,45,62,0|m1sjjz,45,62,0|m1sjk0,46,63,1|mclcrz,46,63,1|mclcs0,45,62,0|mkvkvz,45,62,0|mkvkw0,46,63,1|mvbffz,46,63,1|mvbfg0,45,62,0|n3lnjz,45,62,0|n3lnk0,46,63,1|ne1i3z,46,63,1|ne1i40,45,62,0|nmbq7z,45,62,0|nmbq80,46,63,1|nwrkrz,46,63,1|nwrks0,45,62,0|o51svz,45,62,0|o51sw0,46,63,1|ofum3z,46,63,1|ofum40,45,62,0|onrvjz,45,62,0|onrvk0,46,63,1|oykorz,46,63,1|oykos0,45,62,0|p6hy7z,45,62,0|p6hy80,46,63,1|pharfz,46,63,1|pharg0,45,62,0|ppkzjz,45,62,0|ppkzk0,46,63,1|q00u3z,46,63,1|q00u40,45,62,0|q8b27z,45,62,0|q8b280,46,63,1|qiqwrz,46,63,1|qiqws0,45,62,0|qr14vz,45,62,0|qr14w0,46,63,1|r1ty3z,46,63,1|r1ty40,45,62,0|r9r7jz,45,62,0|r9r7k0,46,63,1|rkk0rz,46,63,1|rkk0s0,45,62,0|rsha7z,45,62,0|rsha80,46,63,1|s3a3fz,46,63,1|s3a3g0,45,62,0|sbkbjz,45,62,0|sbkbk0,46,63,1|sm063z,46,63,1|sm0640,45,62,0|suae7z,45,62,0|suae80,46,63,1|t4q8rz,46,63,1|t4q8s0,45,62,0|td0gvz,45,62,0|td0gw0,46,63,1|tngbfz,46,63,1|tngbg0,45,62,0|tvqjjz,45,62,0|tvqjk0,46,63,1|u6jcrz,46,63,1|u6jcs0,45,62,0|uegm7z,45,62,0|uegm80,46,63,1|up9ffz,46,63,1|up9fg0,45,62,0|ux6ovz,45,62,0|ux6ow0,46,63,1|v7zi3z,46,63,1|v7zi40,45,62,0|vg9q7z,45,62,0|vg9q80,46,63,1|vqpkrz,46,63,1|vqpks0,45,62,0|vyzsvz,45,62,0|vyzsw0,46,63,1|w9fnfz,46,63,1|w9fng0,45,62,0|whpvjz,45,62,0|whpvk0,46,63,1|wsiorz,46,63,1|wsios0,45,62,0|x0fy7z,45,62,0|x0fy80,46,63,1|xb8rfz,46,63,1|xb8rg0,45,62,0|xj60vz,45,62,0|xj60w0,46,63,1|xtyu3z,46,63,1|xtyu40,45,62,0|y1w3jz,45,62,0|y1w3k0,46,63,1|ycowrz,46,63,1|ycows0,45,62,0|ykz4vz,45,62,0|ykz4w0,46,63,1|yvezfz,46,63,1|yvezg0,45,62,0|z3p7jz,45,62,0|z3p7k0,46,63,1|ze523z,46,63,1|ze5240,45,62,0\",\"America/Metlakatla|,0,140,0|-1hc7qjz,0,141,0|-1078wyv,0,141,0|-1078wyu,51,40,0|-ek1w81,51,40,0|-ek1w80,68,66,1|-cq2tg1,68,66,1|-cq2tg0,69,66,1|-cnov01,69,66,1|-cnov00,51,40,0|-csc81,51,40,0|-csc80,57,66,1|-3fdo1,57,66,1|-3fdo0,51,40,0|5xqfz,51,40,0|5xqg0,57,66,1|faozz,57,66,1|fap00,51,40,0|ont3z,51,40,0|ont40,57,66,1|ydqbz,57,66,1|ydqc0,51,40,0|17qufz,51,40,0|17qug0,57,66,1|1h3szz,57,66,1|1h3t00,51,40,0|1qgx3z,51,40,0|1qgx40,57,66,1|1ztvnz,57,66,1|1ztvo0,51,40,0|23fl3z,51,40,0|23fl40,57,66,1|2ijybz,57,66,1|2ijyc0,51,40,0|2ooefz,51,40,0|2ooeg0,57,66,1|31a0zz,57,66,1|31a100,51,40,0|3an53z,51,40,0|3an540,57,66,1|3kd2bz,57,66,1|3kd2c0,51,40,0|3td7rz,51,40,0|3td7s0,57,66,1|4334zz,57,66,1|433500,51,40,0|4cg93z,51,40,0|4cg940,57,66,1|4lt7nz,57,66,1|4lt7o0,51,40,0|4v6brz,51,40,0|4v6bs0,57,66,1|54jabz,57,66,1|54jac0,51,40,0|5dwefz,51,40,0|5dweg0,57,66,1|5n9czz,57,66,1|5n9d00,51,40,0|5wmh3z,51,40,0|5wmh40,57,66,1|65zfnz,57,66,1|65zfo0,51,40,0|6fcjrz,51,40,0|6fcjs0,57,66,1|6p2gzz,57,66,1|6p2h00,51,40,0|6y2mfz,51,40,0|6y2mg0,57,66,1|77sjnz,57,66,1|77sjo0,51,40,0|nx4rrz,51,40,0|nx4rs0,37,37,0|o3z57z,37,37,0|o3z580,38,40,1|og7t3z,38,40,1|og7t40,37,37,0|omp7vz,37,37,0|omp7w0,38,40,1|oyxvrz,38,40,1|oyxvs0,37,37,0|p5fajz,37,37,0|p5fak0,38,40,1|phnyfz,38,40,1|phnyg0,51,40,0|plmjrz,51,40,0|plmjs0,37,37,0|po5d7z,37,37,0|po5d80,38,40,1|q0e13z,38,40,1|q0e140,37,37,0|q6vfvz,37,37,0|q6vfw0,38,40,1|qj43rz,38,40,1|qj43s0,37,37,0|qpyh7z,37,37,0|qpyh80,38,40,1|r2753z,38,40,1|r27540,37,37,0|r8ojvz,37,37,0|r8ojw0,38,40,1|rkx7rz,38,40,1|rkx7s0,37,37,0|rremjz,37,37,0|rremk0,38,40,1|s3nafz,38,40,1|s3nag0,37,37,0|sa4p7z,37,37,0|sa4p80,38,40,1|smdd3z,38,40,1|smdd40,37,37,0|ssurvz,37,37,0|ssurw0,38,40,1|t53frz,38,40,1|t53fs0,37,37,0|tbkujz,37,37,0|tbkuk0,38,40,1|tntifz,38,40,1|tntig0,37,37,0|tunvvz,37,37,0|tunvw0,38,40,1|u6wjrz,38,40,1|u6wjs0,37,37,0|uddyjz,37,37,0|uddyk0,38,40,1|upmmfz,38,40,1|upmmg0,37,37,0|uw417z,37,37,0|uw4180,38,40,1|v8cp3z,38,40,1|v8cp40,37,37,0|veu3vz,37,37,0|veu3w0,38,40,1|vr2rrz,38,40,1|vr2rs0,37,37,0|vxk6jz,37,37,0|vxk6k0,38,40,1|w9sufz,38,40,1|w9sug0,37,37,0|wgn7vz,37,37,0|wgn7w0,38,40,1|wsvvrz,38,40,1|wsvvs0,37,37,0|wzdajz,37,37,0|wzdak0,38,40,1|xblyfz,38,40,1|xblyg0,37,37,0|xi3d7z,37,37,0|xi3d80,38,40,1|xuc13z,38,40,1|xuc140,37,37,0|y0tfvz,37,37,0|y0tfw0,38,40,1|yd23rz,38,40,1|yd23s0,37,37,0|yjjijz,37,37,0|yjjik0,38,40,1|yvs6fz,38,40,1|yvs6g0,37,37,0|z29l7z,37,37,0|z29l80,38,40,1|zei93z,38,40,1|zei940,37,37,0\",\"America/Mexico_City|,0,142,0|-p1u4k0,50,66,0|-m7mko1,50,66,0|-m7mko0,45,62,0|-kf67c1,45,62,0|-kf67c0,50,66,0|-k6j3c1,50,66,0|-k6j3c0,45,62,0|-jypm01,45,62,0|-jypm00,50,66,0|-jpan81,50,66,0|-jpan80,45,62,0|-g4n8o1,45,62,0|-g4n8o0,46,63,1|-fxg241,46,63,1|-fxg240,45,62,0|-f60y01,45,62,0|-f60y00,46,63,1|-f07rg1,46,63,1|-f07rg0,45,62,0|-dlc7c1,45,62,0|-dlc7c0,47,63,1|-deaks1,47,63,1|-deaks0,45,62,0|-adljc1,45,62,0|-adljc0,46,63,1|-a4yi41,46,63,1|-a4yi40,45,62,0|dphfjz,45,62,0|dphfk0,46,63,1|dzxa3z,46,63,1|dzxa40,45,62,0|e87i7z,45,62,0|e87i80,46,63,1|eincrz,46,63,1|eincs0,45,62,0|eqxkvz,45,62,0|eqxkw0,46,63,1|f1dffz,46,63,1|f1dfg0,45,62,0|f9nnjz,45,62,0|f9nnk0,46,63,1|fkggrz,46,63,1|fkggs0,45,62,0|fsdq7z,45,62,0|fsdq80,46,63,1|g36jfz,46,63,1|g36jg0,45,62,0|gcwm7z,45,62,0|gcwm80,46,63,1|gkgrfz,46,63,1|gkgrg0,45,62,0|gu6u7z,45,62,0|gu6u80,46,63,1|h4morz,46,63,1|h4mos0,45,62,0|hcwwvz,45,62,0|hcwww0,46,63,1|hncrfz,46,63,1|hncrg0,45,62,0|hvmzjz,45,62,0|hvmzk0,46,63,1|i6fsrz,46,63,1|i6fss0,45,62,0|ied27z,45,62,0|ied280,46,63,1|ip5vfz,46,63,1|ip5vg0,45,62,0|ix34vz,45,62,0|ix34w0,46,63,1|j7vy3z,46,63,1|j7vy40,45,62,0|jft7jz,45,62,0|jft7k0,46,63,1|jqm0rz,46,63,1|jqm0s0,45,62,0|jyw8vz,45,62,0|jyw8w0,46,63,1|k9c3fz,46,63,1|k9c3g0,45,62,0|khmbjz,45,62,0|khmbk0,46,63,1|ks263z,46,63,1|ks2640,45,62,0|l0ce7z,45,62,0|l0ce80,46,63,1|lb57fz,46,63,1|lb57g0,45,62,0|lj2gvz,45,62,0|lj2gw0,46,63,1|ltva3z,46,63,1|ltva40,45,62,0|m1sjjz,45,62,0|m1sjk0,46,63,1|mclcrz,46,63,1|mclcs0,45,62,0|mkvkvz,45,62,0|mkvkw0,46,63,1|mvbffz,46,63,1|mvbfg0,45,62,0|n3lnjz,45,62,0|n3lnk0,46,63,1|ne1i3z,46,63,1|ne1i40,45,62,0|nmbq7z,45,62,0|nmbq80,46,63,1|nwrkrz,46,63,1|nwrks0,45,62,0|o51svz,45,62,0|o51sw0,46,63,1|ofum3z,46,63,1|ofum40,45,62,0|onrvjz,45,62,0|onrvk0,46,63,1|oykorz,46,63,1|oykos0,45,62,0|p6hy7z,45,62,0|p6hy80,46,63,1|pharfz,46,63,1|pharg0,45,62,0|ppkzjz,45,62,0|ppkzk0,46,63,1|q00u3z,46,63,1|q00u40,45,62,0|q8b27z,45,62,0|q8b280,46,63,1|qiqwrz,46,63,1|qiqws0,45,62,0|qr14vz,45,62,0|qr14w0,46,63,1|r1ty3z,46,63,1|r1ty40,45,62,0|r9r7jz,45,62,0|r9r7k0,46,63,1|rkk0rz,46,63,1|rkk0s0,45,62,0|rsha7z,45,62,0|rsha80,46,63,1|s3a3fz,46,63,1|s3a3g0,45,62,0|sbkbjz,45,62,0|sbkbk0,46,63,1|sm063z,46,63,1|sm0640,45,62,0|suae7z,45,62,0|suae80,46,63,1|t4q8rz,46,63,1|t4q8s0,45,62,0|td0gvz,45,62,0|td0gw0,46,63,1|tngbfz,46,63,1|tngbg0,45,62,0|tvqjjz,45,62,0|tvqjk0,46,63,1|u6jcrz,46,63,1|u6jcs0,45,62,0|uegm7z,45,62,0|uegm80,46,63,1|up9ffz,46,63,1|up9fg0,45,62,0|ux6ovz,45,62,0|ux6ow0,46,63,1|v7zi3z,46,63,1|v7zi40,45,62,0|vg9q7z,45,62,0|vg9q80,46,63,1|vqpkrz,46,63,1|vqpks0,45,62,0|vyzsvz,45,62,0|vyzsw0,46,63,1|w9fnfz,46,63,1|w9fng0,45,62,0|whpvjz,45,62,0|whpvk0,46,63,1|wsiorz,46,63,1|wsios0,45,62,0|x0fy7z,45,62,0|x0fy80,46,63,1|xb8rfz,46,63,1|xb8rg0,45,62,0|xj60vz,45,62,0|xj60w0,46,63,1|xtyu3z,46,63,1|xtyu40,45,62,0|y1w3jz,45,62,0|y1w3k0,46,63,1|ycowrz,46,63,1|ycows0,45,62,0|ykz4vz,45,62,0|ykz4w0,46,63,1|yvezfz,46,63,1|yvezg0,45,62,0|z3p7jz,45,62,0|z3p7k0,46,63,1|ze523z,46,63,1|ze5240,45,62,0\",\"America/Miquelon|,0,143,0|-ulmyxk,32,42,0|5e3cfz,32,42,0|5e3cg0,39,44,0|908lvz,39,44,0|908lw0,40,45,1|9aogfz,40,45,1|9aogg0,39,44,0|9iyojz,39,44,0|9iyok0,40,45,1|9trhrz,40,45,1|9trhs0,39,44,0|a1or7z,39,44,0|a1or80,40,45,1|achkfz,40,45,1|achkg0,39,44,0|aketvz,39,44,0|aketw0,40,45,1|av7n3z,40,45,1|av7n40,39,44,0|b3hv7z,39,44,0|b3hv80,40,45,1|bdxprz,40,45,1|bdxps0,39,44,0|bm7xvz,39,44,0|bm7xw0,40,45,1|bwnsfz,40,45,1|bwnsg0,39,44,0|c4y0jz,39,44,0|c4y0k0,40,45,1|cfqtrz,40,45,1|cfqts0,39,44,0|cno37z,39,44,0|cno380,40,45,1|cygwfz,40,45,1|cygwg0,39,44,0|d6e5vz,39,44,0|d6e5w0,40,45,1|dh6z3z,40,45,1|dh6z40,39,44,0|dph77z,39,44,0|dph780,40,45,1|dzx1rz,40,45,1|dzx1s0,39,44,0|e879vz,39,44,0|e879w0,40,45,1|ein4fz,40,45,1|ein4g0,39,44,0|eqxcjz,39,44,0|eqxck0,40,45,1|f1d73z,40,45,1|f1d740,39,44,0|f9nf7z,39,44,0|f9nf80,40,45,1|fkg8fz,40,45,1|fkg8g0,39,44,0|fsdhvz,39,44,0|fsdhw0,40,45,1|g36b3z,40,45,1|g36b40,39,44,0|gb3kjz,39,44,0|gb3kk0,40,45,1|glwdrz,40,45,1|glwds0,39,44,0|gu6lvz,39,44,0|gu6lw0,40,45,1|h4mgfz,40,45,1|h4mgg0,39,44,0|hcwojz,39,44,0|hcwok0,40,45,1|hncj3z,40,45,1|hncj40,39,44,0|hvmr7z,39,44,0|hvmr80,40,45,1|i6fkfz,40,45,1|i6fkg0,39,44,0|iectvz,39,44,0|iectw0,40,45,1|ip5n3z,40,45,1|ip5n40,39,44,0|ix2wjz,39,44,0|ix2wk0,40,45,1|j7vprz,40,45,1|j7vps0,39,44,0|jeq37z,39,44,0|jeq380,40,45,1|jqyr3z,40,45,1|jqyr40,39,44,0|jxg5vz,39,44,0|jxg5w0,40,45,1|k9otrz,40,45,1|k9ots0,39,44,0|kg68jz,39,44,0|kg68k0,40,45,1|ksewfz,40,45,1|ksewg0,39,44,0|kz99vz,39,44,0|kz99w0,40,45,1|lbhxrz,40,45,1|lbhxs0,39,44,0|lhzcjz,39,44,0|lhzck0,40,45,1|lu80fz,40,45,1|lu80g0,39,44,0|m0pf7z,39,44,0|m0pf80,40,45,1|mcy33z,40,45,1|mcy340,39,44,0|mjfhvz,39,44,0|mjfhw0,40,45,1|mvo5rz,40,45,1|mvo5s0,39,44,0|n25kjz,39,44,0|n25kk0,40,45,1|nee8fz,40,45,1|nee8g0,39,44,0|nkvn7z,39,44,0|nkvn80,40,45,1|nx4b3z,40,45,1|nx4b40,39,44,0|o3yojz,39,44,0|o3yok0,40,45,1|og7cfz,40,45,1|og7cg0,39,44,0|omor7z,39,44,0|omor80,40,45,1|oyxf3z,40,45,1|oyxf40,39,44,0|p5etvz,39,44,0|p5etw0,40,45,1|phnhrz,40,45,1|phnhs0,39,44,0|po4wjz,39,44,0|po4wk0,40,45,1|q0dkfz,40,45,1|q0dkg0,39,44,0|q6uz7z,39,44,0|q6uz80,40,45,1|qj3n3z,40,45,1|qj3n40,39,44,0|qpy0jz,39,44,0|qpy0k0,40,45,1|r26ofz,40,45,1|r26og0,39,44,0|r8o37z,39,44,0|r8o380,40,45,1|rkwr3z,40,45,1|rkwr40,39,44,0|rre5vz,39,44,0|rre5w0,40,45,1|s3mtrz,40,45,1|s3mts0,39,44,0|sa48jz,39,44,0|sa48k0,40,45,1|smcwfz,40,45,1|smcwg0,39,44,0|ssub7z,39,44,0|ssub80,40,45,1|t52z3z,40,45,1|t52z40,39,44,0|tbkdvz,39,44,0|tbkdw0,40,45,1|tnt1rz,40,45,1|tnt1s0,39,44,0|tunf7z,39,44,0|tunf80,40,45,1|u6w33z,40,45,1|u6w340,39,44,0|uddhvz,39,44,0|uddhw0,40,45,1|upm5rz,40,45,1|upm5s0,39,44,0|uw3kjz,39,44,0|uw3kk0,40,45,1|v8c8fz,40,45,1|v8c8g0,39,44,0|vetn7z,39,44,0|vetn80,40,45,1|vr2b3z,40,45,1|vr2b40,39,44,0|vxjpvz,39,44,0|vxjpw0,40,45,1|w9sdrz,40,45,1|w9sds0,39,44,0|wgmr7z,39,44,0|wgmr80,40,45,1|wsvf3z,40,45,1|wsvf40,39,44,0|wzctvz,39,44,0|wzctw0,40,45,1|xblhrz,40,45,1|xblhs0,39,44,0|xi2wjz,39,44,0|xi2wk0,40,45,1|xubkfz,40,45,1|xubkg0,39,44,0|y0sz7z,39,44,0|y0sz80,40,45,1|yd1n3z,40,45,1|yd1n40,39,44,0|yjj1vz,39,44,0|yjj1w0,40,45,1|yvrprz,40,45,1|yvrps0,39,44,0|z294jz,39,44,0|z294k0,40,45,1|zehsfz,40,45,1|zehsg0,39,44,0\",\"America/Moncton|,0,144,0|-18wys04,49,63,0|-z94i41,49,63,0|-z94i40,32,42,0|-qzp0o1,32,42,0|-qzp0o0,54,44,1|-qpm4s1,54,44,1|-qpm4s0,32,42,0|-j2ve41,32,42,0|-j2ve40,54,44,1|-iy6y81,54,44,1|-iy6y80,32,42,0|-ik5bg1,32,42,0|-ik5bg0,54,44,1|-ifgvk1,54,44,1|-ifgvk0,32,42,0|-i1f8s1,32,42,0|-i1f8s0,54,44,1|-hwqsw1,54,44,1|-hwqsw0,32,42,0|-hip641,32,42,0|-hip640,54,44,1|-he0q81,54,44,1|-he0q80,32,42,0|-gzz3g1,32,42,0|-gzz3g0,54,44,1|-gvank1,54,44,1|-gvank0,32,42,0|-gh90s1,32,42,0|-gh90s0,54,44,1|-gckkw1,54,44,1|-gckkw0,32,42,0|-fyxrg1,32,42,0|-fyxrg0,54,44,1|-fstgw1,54,44,1|-fstgw0,32,42,0|-fgiss1,32,42,0|-fgiss0,54,44,1|-fa3e81,54,44,1|-fa3e80,32,42,0|-eying1,32,42,0|-eying0,54,44,1|-er0cw1,54,44,1|-er0cw0,32,42,0|-ek27c1,32,42,0|-ek27c0,33,44,1|-cq2tg1,33,44,1|-cq2tg0,34,44,1|-cnp641,34,44,1|-cnp640,32,42,0|-ccw7c1,32,42,0|-ccw7c0,54,44,1|-c4z3g1,54,44,1|-c4z3g0,32,42,0|-bu64o1,32,42,0|-bu64o0,54,44,1|-bm90s1,54,44,1|-bm90s0,32,42,0|-bbg201,32,42,0|-bbg200,54,44,1|-b3iy41,54,44,1|-b3iy40,32,42,0|-aspzc1,32,42,0|-aspzc0,54,44,1|-aksvg1,54,44,1|-aksvg0,32,42,0|-a9my01,32,42,0|-a9my00,54,44,1|-a22ss1,54,44,1|-a22ss0,32,42,0|-9qwvc1,32,42,0|-9qwvc0,54,44,1|-9izrg1,54,44,1|-9izrg0,32,42,0|-986so1,32,42,0|-986so0,54,44,1|-909os1,54,44,1|-909os0,32,42,0|-8pgq01,32,42,0|-8pgq00,54,44,1|-8hjm41,54,44,1|-8hjm40,32,42,0|-86qnc1,32,42,0|-86qnc0,54,44,1|-7ytjg1,54,44,1|-7ytjg0,32,42,0|-7o0ko1,32,42,0|-7o0ko0,54,44,1|-7g3gs1,54,44,1|-7g3gs0,32,42,0|-74xjc1,32,42,0|-74xjc0,54,44,1|-6x0fg1,54,44,1|-6x0fg0,32,42,0|-6m7go1,32,42,0|-6m7go0,54,44,1|-6cui41,54,44,1|-6cui40,32,42,0|-63he01,32,42,0|-63he00,54,44,1|-5u4fg1,54,44,1|-5u4fg0,32,42,0|-5krbc1,32,42,0|-5krbc0,54,44,1|-5becs1,54,44,1|-5becs0,32,42,0|-5218o1,32,42,0|-5218o0,54,44,1|-4sbbg1,54,44,1|-4sbbg0,32,42,0|-4iy7c1,32,42,0|-4iy7c0,54,44,1|-49l8s1,54,44,1|-49l8s0,32,42,0|-4084o1,32,42,0|-4084o0,54,44,1|-3qv641,54,44,1|-3qv640,32,42,0|-3hi201,32,42,0|-3hi200,54,44,1|-3853g1,54,44,1|-3853g0,32,42,0|-2yrzc1,32,42,0|-2yrzc0,54,44,1|-2pf0s1,54,44,1|-2pf0s0,32,42,0|-2g1wo1,32,42,0|-2g1wo0,54,44,1|-26bzg1,54,44,1|-26bzg0,32,42,0|-1xbu01,32,42,0|-1xbu00,54,44,1|-1nlws1,54,44,1|-1nlws0,32,42,0|-1e8so1,32,42,0|-1e8so0,54,44,1|-14vu41,54,44,1|-14vu40,32,42,0|-viq01,32,42,0|-viq00,54,44,1|-m5rg1,54,44,1|-m5rg0,32,42,0|-csnc1,32,42,0|-csnc0,54,44,1|-3fos1,54,44,1|-3fos0,32,42,0|5xfbz,32,42,0|5xfc0,54,44,1|fadvz,54,44,1|fadw0,32,42,0|onhzz,32,42,0|oni00,54,44,1|ydf7z,54,44,1|ydf80,32,42,0|17qjbz,32,42,0|17qjc0,54,44,1|1h3hvz,54,44,1|1h3hw0,32,42,0|296onz,32,42,0|296oo0,54,44,1|2ijn7z,54,44,1|2ijn80,32,42,0|2rwrbz,32,42,0|2rwrc0,54,44,1|319pvz,54,44,1|319pw0,32,42,0|3amtzz,32,42,0|3amu00,54,44,1|3kcr7z,54,44,1|3kcr80,32,42,0|3tcwnz,32,42,0|3tcwo0,54,44,1|432tvz,54,44,1|432tw0,32,42,0|4cfxzz,32,42,0|4cfy00,54,44,1|4lswjz,54,44,1|4lswk0,32,42,0|4v60nz,32,42,0|4v60o0,54,44,1|54iz7z,54,44,1|54iz80,32,42,0|5dw3bz,32,42,0|5dw3c0,54,44,1|5n91vz,54,44,1|5n91w0,32,42,0|5wm5zz,32,42,0|5wm600,54,44,1|65z4jz,54,44,1|65z4k0,32,42,0|6fc8nz,32,42,0|6fc8o0,54,44,1|6p25vz,54,44,1|6p25w0,32,42,0|6y2bbz,32,42,0|6y2bc0,54,44,1|77s8jz,54,44,1|77s8k0,32,42,0|7h5cnz,32,42,0|7h5co0,54,44,1|7qib7z,54,44,1|7qib80,32,42,0|7zvfbz,32,42,0|7zvfc0,54,44,1|898dvz,54,44,1|898dw0,32,42,0|8ilhzz,32,42,0|8ili00,54,44,1|8rygjz,54,44,1|8rygk0,32,42,0|908onz,32,42,0|908oo0,54,44,1|9aoj7z,54,44,1|9aoj80,32,42,0|9iyrbz,32,42,0|9iyrc0,54,44,1|9trkjz,54,44,1|9trkk0,32,42,0|a1otzz,32,42,0|a1ou00,54,44,1|achn7z,54,44,1|achn80,32,42,0|akewnz,32,42,0|akewo0,54,44,1|av7pvz,54,44,1|av7pw0,32,42,0|b3hxzz,32,42,0|b3hy00,54,44,1|bdxsjz,54,44,1|bdxsk0,32,42,0|bm80nz,32,42,0|bm80o0,54,44,1|bwnv7z,54,44,1|bwnv80,32,42,0|c4xxtn,32,42,0|c4xxto,54,44,1|cfqr1n,54,44,1|cfqr1o,32,42,0|cno0hn,32,42,0|cno0ho,54,44,1|cygtpn,54,44,1|cygtpo,32,42,0|d6e35n,32,42,0|d6e35o,54,44,1|dh6wdn,54,44,1|dh6wdo,32,42,0|dph4hn,32,42,0|dph4ho,54,44,1|dzwz1n,54,44,1|dzwz1o,32,42,0|e8775n,32,42,0|e8775o,54,44,1|ein1pn,54,44,1|ein1po,32,42,0|eqx9tn,32,42,0|eqx9to,54,44,1|f1d4dn,54,44,1|f1d4do,32,42,0|f9nchn,32,42,0|f9ncho,54,44,1|fkg5pn,54,44,1|fkg5po,32,42,0|fsdf5n,32,42,0|fsdf5o,54,44,1|g368dn,54,44,1|g368do,32,42,0|gb3htn,32,42,0|gb3hto,54,44,1|glwb1n,54,44,1|glwb1o,32,42,0|gu6j5n,32,42,0|gu6j5o,54,44,1|h4mdpn,54,44,1|h4mdpo,32,42,0|hcwltn,32,42,0|hcwlto,54,44,1|hncgdn,54,44,1|hncgdo,32,42,0|hvmohn,32,42,0|hvmoho,54,44,1|i6fhpn,54,44,1|i6fhpo,32,42,0|iecr5n,32,42,0|iecr5o,54,44,1|ip5kdn,54,44,1|ip5kdo,32,42,0|ix2ttn,32,42,0|ix2tto,54,44,1|j7vn1n,54,44,1|j7vn1o,32,42,0|jeq5zz,32,42,0|jeq600,54,44,1|jqytvz,54,44,1|jqytw0,32,42,0|jxg8nz,32,42,0|jxg8o0,54,44,1|k9owjz,54,44,1|k9owk0,32,42,0|kg6bbz,32,42,0|kg6bc0,54,44,1|ksez7z,54,44,1|ksez80,32,42,0|kz9cnz,32,42,0|kz9co0,54,44,1|lbi0jz,54,44,1|lbi0k0,32,42,0|lhzfbz,32,42,0|lhzfc0,54,44,1|lu837z,54,44,1|lu8380,32,42,0|m0phzz,32,42,0|m0pi00,54,44,1|mcy5vz,54,44,1|mcy5w0,32,42,0|mjfknz,32,42,0|mjfko0,54,44,1|mvo8jz,54,44,1|mvo8k0,32,42,0|n25nbz,32,42,0|n25nc0,54,44,1|neeb7z,54,44,1|neeb80,32,42,0|nkvpzz,32,42,0|nkvq00,54,44,1|nx4dvz,54,44,1|nx4dw0,32,42,0|o3yrbz,32,42,0|o3yrc0,54,44,1|og7f7z,54,44,1|og7f80,32,42,0|omotzz,32,42,0|omou00,54,44,1|oyxhvz,54,44,1|oyxhw0,32,42,0|p5ewnz,32,42,0|p5ewo0,54,44,1|phnkjz,54,44,1|phnkk0,32,42,0|po4zbz,32,42,0|po4zc0,54,44,1|q0dn7z,54,44,1|q0dn80,32,42,0|q6v1zz,32,42,0|q6v200,54,44,1|qj3pvz,54,44,1|qj3pw0,32,42,0|qpy3bz,32,42,0|qpy3c0,54,44,1|r26r7z,54,44,1|r26r80,32,42,0|r8o5zz,32,42,0|r8o600,54,44,1|rkwtvz,54,44,1|rkwtw0,32,42,0|rre8nz,32,42,0|rre8o0,54,44,1|s3mwjz,54,44,1|s3mwk0,32,42,0|sa4bbz,32,42,0|sa4bc0,54,44,1|smcz7z,54,44,1|smcz80,32,42,0|ssudzz,32,42,0|ssue00,54,44,1|t531vz,54,44,1|t531w0,32,42,0|tbkgnz,32,42,0|tbkgo0,54,44,1|tnt4jz,54,44,1|tnt4k0,32,42,0|tunhzz,32,42,0|tuni00,54,44,1|u6w5vz,54,44,1|u6w5w0,32,42,0|uddknz,32,42,0|uddko0,54,44,1|upm8jz,54,44,1|upm8k0,32,42,0|uw3nbz,32,42,0|uw3nc0,54,44,1|v8cb7z,54,44,1|v8cb80,32,42,0|vetpzz,32,42,0|vetq00,54,44,1|vr2dvz,54,44,1|vr2dw0,32,42,0|vxjsnz,32,42,0|vxjso0,54,44,1|w9sgjz,54,44,1|w9sgk0,32,42,0|wgmtzz,32,42,0|wgmu00,54,44,1|wsvhvz,54,44,1|wsvhw0,32,42,0|wzcwnz,32,42,0|wzcwo0,54,44,1|xblkjz,54,44,1|xblkk0,32,42,0|xi2zbz,32,42,0|xi2zc0,54,44,1|xubn7z,54,44,1|xubn80,32,42,0|y0t1zz,32,42,0|y0t200,54,44,1|yd1pvz,54,44,1|yd1pw0,32,42,0|yjj4nz,32,42,0|yjj4o0,54,44,1|yvrsjz,54,44,1|yvrsk0,32,42,0|z297bz,32,42,0|z297c0,54,44,1|zehv7z,54,44,1|zehv80,32,42,0\",\"America/Monterrey|,0,145,0|-p1u7c0,45,62,0|9iywvz,45,62,0|9iyww0,46,63,1|9trq3z,46,63,1|9trq40,45,62,0|dphfjz,45,62,0|dphfk0,46,63,1|dzxa3z,46,63,1|dzxa40,45,62,0|e87i7z,45,62,0|e87i80,46,63,1|eincrz,46,63,1|eincs0,45,62,0|eqxkvz,45,62,0|eqxkw0,46,63,1|f1dffz,46,63,1|f1dfg0,45,62,0|f9nnjz,45,62,0|f9nnk0,46,63,1|fkggrz,46,63,1|fkggs0,45,62,0|fsdq7z,45,62,0|fsdq80,46,63,1|g36jfz,46,63,1|g36jg0,45,62,0|gcwm7z,45,62,0|gcwm80,46,63,1|gkgrfz,46,63,1|gkgrg0,45,62,0|gu6u7z,45,62,0|gu6u80,46,63,1|h4morz,46,63,1|h4mos0,45,62,0|hcwwvz,45,62,0|hcwww0,46,63,1|hncrfz,46,63,1|hncrg0,45,62,0|hvmzjz,45,62,0|hvmzk0,46,63,1|i6fsrz,46,63,1|i6fss0,45,62,0|ied27z,45,62,0|ied280,46,63,1|ip5vfz,46,63,1|ip5vg0,45,62,0|ix34vz,45,62,0|ix34w0,46,63,1|j7vy3z,46,63,1|j7vy40,45,62,0|jft7jz,45,62,0|jft7k0,46,63,1|jqm0rz,46,63,1|jqm0s0,45,62,0|jyw8vz,45,62,0|jyw8w0,46,63,1|k9c3fz,46,63,1|k9c3g0,45,62,0|khmbjz,45,62,0|khmbk0,46,63,1|ks263z,46,63,1|ks2640,45,62,0|l0ce7z,45,62,0|l0ce80,46,63,1|lb57fz,46,63,1|lb57g0,45,62,0|lj2gvz,45,62,0|lj2gw0,46,63,1|ltva3z,46,63,1|ltva40,45,62,0|m1sjjz,45,62,0|m1sjk0,46,63,1|mclcrz,46,63,1|mclcs0,45,62,0|mkvkvz,45,62,0|mkvkw0,46,63,1|mvbffz,46,63,1|mvbfg0,45,62,0|n3lnjz,45,62,0|n3lnk0,46,63,1|ne1i3z,46,63,1|ne1i40,45,62,0|nmbq7z,45,62,0|nmbq80,46,63,1|nwrkrz,46,63,1|nwrks0,45,62,0|o51svz,45,62,0|o51sw0,46,63,1|ofum3z,46,63,1|ofum40,45,62,0|onrvjz,45,62,0|onrvk0,46,63,1|oykorz,46,63,1|oykos0,45,62,0|p6hy7z,45,62,0|p6hy80,46,63,1|pharfz,46,63,1|pharg0,45,62,0|ppkzjz,45,62,0|ppkzk0,46,63,1|q00u3z,46,63,1|q00u40,45,62,0|q8b27z,45,62,0|q8b280,46,63,1|qiqwrz,46,63,1|qiqws0,45,62,0|qr14vz,45,62,0|qr14w0,46,63,1|r1ty3z,46,63,1|r1ty40,45,62,0|r9r7jz,45,62,0|r9r7k0,46,63,1|rkk0rz,46,63,1|rkk0s0,45,62,0|rsha7z,45,62,0|rsha80,46,63,1|s3a3fz,46,63,1|s3a3g0,45,62,0|sbkbjz,45,62,0|sbkbk0,46,63,1|sm063z,46,63,1|sm0640,45,62,0|suae7z,45,62,0|suae80,46,63,1|t4q8rz,46,63,1|t4q8s0,45,62,0|td0gvz,45,62,0|td0gw0,46,63,1|tngbfz,46,63,1|tngbg0,45,62,0|tvqjjz,45,62,0|tvqjk0,46,63,1|u6jcrz,46,63,1|u6jcs0,45,62,0|uegm7z,45,62,0|uegm80,46,63,1|up9ffz,46,63,1|up9fg0,45,62,0|ux6ovz,45,62,0|ux6ow0,46,63,1|v7zi3z,46,63,1|v7zi40,45,62,0|vg9q7z,45,62,0|vg9q80,46,63,1|vqpkrz,46,63,1|vqpks0,45,62,0|vyzsvz,45,62,0|vyzsw0,46,63,1|w9fnfz,46,63,1|w9fng0,45,62,0|whpvjz,45,62,0|whpvk0,46,63,1|wsiorz,46,63,1|wsios0,45,62,0|x0fy7z,45,62,0|x0fy80,46,63,1|xb8rfz,46,63,1|xb8rg0,45,62,0|xj60vz,45,62,0|xj60w0,46,63,1|xtyu3z,46,63,1|xtyu40,45,62,0|y1w3jz,45,62,0|y1w3k0,46,63,1|ycowrz,46,63,1|ycows0,45,62,0|ykz4vz,45,62,0|ykz4w0,46,63,1|yvezfz,46,63,1|yvezg0,45,62,0|z3p7jz,45,62,0|z3p7k0,46,63,1|ze523z,46,63,1|ze5240,45,62,0\",\"America/Montevideo|,0,146,0|-w4mll9,21,146,0|-px809a,21,146,0|-px8099,42,42,0|-o50vk1,42,42,0|-o50vk0,39,44,1|-nvm2c1,39,44,1|-nvm2c0,81,101,0|-nm74y1,81,101,0|-nm74y0,39,44,1|-ncu501,39,44,1|-ncu500,81,101,0|-n3f7m1,81,101,0|-n3f7m0,39,44,1|-mu27o1,39,44,1|-mu27o0,81,101,0|-ivo8y1,81,101,0|-ivo8y0,39,44,1|-inr3o1,39,44,1|-inr3o0,81,101,0|-icy6a1,81,101,0|-icy6a0,39,44,1|-i51101,39,44,1|-i51100,81,101,0|-hu83m1,81,101,0|-hu83m0,39,44,1|-hmayc1,39,44,1|-hmayc0,81,101,0|-hbi0y1,81,101,0|-hbi0y0,39,44,1|-h3kvo1,39,44,1|-h3kvo0,81,101,0|-gsezm1,81,101,0|-gsezm0,39,44,1|-gkut01,39,44,1|-gkut00,81,101,0|-g9owy1,81,101,0|-g9owy0,39,44,1|-g24qc1,39,44,1|-g24qc0,81,101,0|-fseoy1,81,101,0|-fseoy0,39,44,1|-fj1p01,39,44,1|-fj1p00,81,101,0|-f88rm1,81,101,0|-f88rm0,39,44,1|-f0bmc1,39,44,1|-f0bmc0,81,101,0|-etxya1,81,101,0|-etxya0,39,44,1|-e482c1,39,44,1|-e482c0,82,102,1|-dzlfq1,82,102,1|-dzlfq0,39,44,0|-5jbp01,39,44,0|-5jbp00,82,102,1|-5abnq1,82,102,1|-5abnq0,39,44,0|-572yc1,39,44,0|-572yc0,40,45,1|-54kag1,40,45,1|-54kag0,39,44,0|-2h5101,39,44,0|-2h5100,40,45,1|-285141,40,45,1|-285140,39,44,0|-u1901,39,44,0|-u1900,82,102,1|-kd521,82,102,1|-kd520,39,44,0|5vcbz,39,44,0|5vcc0,40,45,1|8fuvz,40,45,1|8fuw0,39,44,0|17dcbz,39,44,0|17dcc0,40,45,1|1botjz,40,45,1|1botk0,39,44,0|23s0bz,39,44,0|23s0c0,83,147,1|26nlhz,83,147,1|26nli0,82,102,1|2fnqxz,82,102,1|2fnqy0,39,44,0|2lf6zz,39,44,0|2lf700,40,45,1|2qgljz,40,45,1|2qglk0,39,44,0|3mvcbz,39,44,0|3mvcc0,40,45,1|3qtuvz,40,45,1|3qtuw0,39,44,0|44vhnz,39,44,0|44vho0,40,45,1|49jxjz,40,45,1|49jxk0,39,44,0|4obhnz,39,44,0|4obho0,40,45,1|4sa07z,40,45,1|4sa080,39,44,0|4v5sbz,39,44,0|4v5sc0,40,45,1|5bq07z,40,45,1|5bq080,39,44,0|9d8yzz,39,44,0|9d8z00,40,45,1|9h5mvz,40,45,1|9h5mw0,39,44,0|9vx6zz,39,44,0|9vx700,40,45,1|a08o7z,40,45,1|a08o80,39,44,0|achhnz,39,44,0|achho0,40,45,1|ails7z,40,45,1|ails80,39,44,0|auulnz,39,44,0|auulo0,40,45,1|b1otjz,40,45,1|b1otk0,39,44,0|bdxmzz,39,44,0|bdxn00,40,45,1|bkew7z,40,45,1|bkew80,39,44,0|bwaqzz,39,44,0|bwar00,40,45,1|c34yvz,40,45,1|c34yw0,39,44,0|i49pnz,39,44,0|i49po0,40,45,1|idzsfz,40,45,1|idzsg0,39,44,0|io2tvz,39,44,0|io2tw0,40,45,1|ivzxrz,40,45,1|ivzxs0,39,44,0|j6fxvz,39,44,0|j6fxw0,40,45,1|jeq0fz,40,45,1|jeq0g0,39,44,0|jpiz7z,39,44,0|jpiz80,40,45,1|jxg33z,40,45,1|jxg340,39,44,0|k891vz,39,44,0|k891w0,40,45,1|kg65rz,40,45,1|kg65s0,39,44,0|kqz4jz,39,44,0|kqz4k0,40,45,1|kz973z,40,45,1|kz9740,39,44,0|l9p77z,39,44,0|l9p780,40,45,1|lhz9rz,40,45,1|lhz9s0,39,44,0|lsf9vz,39,44,0|lsf9w0,40,45,1|m0pcfz,40,45,1|m0pcg0,39,44,0|mbib7z,39,44,0|mbib80,40,45,1|mjff3z,40,45,1|mjff40,39,44,0|mu8dvz,39,44,0|mu8dw0,40,45,1|n25hrz,40,45,1|n25hs0,39,44,0|ncygjz,39,44,0|ncygk0,40,45,1|nkvkfz,40,45,1|nkvkg0,39,44,0\",\"America/Montserrat|,0,41,0|-u6m79w,32,42,0\",\"America/Nassau|,0,148,0|-u6m4c6,49,63,0|-efufg1,49,63,0|-efufg0,70,42,1|-d1oy81,70,42,1|-d1oy80,49,63,0|-d03gs1,49,63,0|-d03gs0,70,42,1|-cq2tg1,70,42,1|-cq2tg0,71,42,1|-cmrww1,71,42,1|-cmrww0,49,63,0|-2yrwk1,49,63,0|-2yrwk0,62,42,1|-2pey01,62,42,1|-2pey00,49,63,0|-2g1tw1,49,63,0|-2g1tw0,62,42,1|-26bwo1,62,42,1|-26bwo0,49,63,0|-1xbr81,49,63,0|-1xbr80,62,42,1|-1nlu01,62,42,1|-1nlu00,49,63,0|-1e8pw1,49,63,0|-1e8pw0,62,42,1|-14vrc1,62,42,1|-14vrc0,49,63,0|-vin81,49,63,0|-vin80,62,42,1|-m5oo1,62,42,1|-m5oo0,49,63,0|-cskk1,49,63,0|-cskk0,62,42,1|-3fm01,62,42,1|-3fm00,49,63,0|5xi3z,49,63,0|5xi40,62,42,1|fagnz,62,42,1|fago0,49,63,0|onkrz,49,63,0|onks0,62,42,1|ydhzz,62,42,1|ydi00,49,63,0|17qm3z,49,63,0|17qm40,62,42,1|1h3knz,62,42,1|1h3ko0,49,63,0|1qgorz,49,63,0|1qgos0,62,42,1|1ztnbz,62,42,1|1ztnc0,49,63,0|296rfz,49,63,0|296rg0,62,42,1|2ijpzz,62,42,1|2ijq00,49,63,0|2rwu3z,49,63,0|2rwu40,62,42,1|319snz,62,42,1|319so0,49,63,0|3amwrz,49,63,0|3amws0,62,42,1|3kctzz,62,42,1|3kcu00,49,63,0|3tczfz,49,63,0|3tczg0,62,42,1|432wnz,62,42,1|432wo0,49,63,0|4cg0rz,49,63,0|4cg0s0,62,42,1|4lszbz,62,42,1|4lszc0,49,63,0|4v63fz,49,63,0|4v63g0,62,42,1|54j1zz,62,42,1|54j200,49,63,0|5dw63z,49,63,0|5dw640,62,42,1|5n94nz,62,42,1|5n94o0,49,63,0|5wm8rz,49,63,0|5wm8s0,62,42,1|65z7bz,62,42,1|65z7c0,49,63,0|6fcbfz,49,63,0|6fcbg0,62,42,1|6p28nz,62,42,1|6p28o0,49,63,0|6y2e3z,49,63,0|6y2e40,62,42,1|77sbbz,62,42,1|77sbc0,49,63,0|7h5ffz,49,63,0|7h5fg0,62,42,1|7qidzz,62,42,1|7qie00,49,63,0|7zvi3z,49,63,0|7zvi40,62,42,1|898gnz,62,42,1|898go0,49,63,0|8ilkrz,49,63,0|8ilks0,62,42,1|8ryjbz,62,42,1|8ryjc0,49,63,0|908rfz,49,63,0|908rg0,62,42,1|9aolzz,62,42,1|9aom00,49,63,0|9iyu3z,49,63,0|9iyu40,62,42,1|9trnbz,62,42,1|9trnc0,49,63,0|a1owrz,49,63,0|a1ows0,62,42,1|achpzz,62,42,1|achq00,49,63,0|akezfz,49,63,0|akezg0,62,42,1|av7snz,62,42,1|av7so0,49,63,0|b3i0rz,49,63,0|b3i0s0,62,42,1|bdxvbz,62,42,1|bdxvc0,49,63,0|bm83fz,49,63,0|bm83g0,62,42,1|bwnxzz,62,42,1|bwny00,49,63,0|c4y63z,49,63,0|c4y640,62,42,1|cfqzbz,62,42,1|cfqzc0,49,63,0|cno8rz,49,63,0|cno8s0,62,42,1|cyh1zz,62,42,1|cyh200,49,63,0|d6ebfz,49,63,0|d6ebg0,62,42,1|dh74nz,62,42,1|dh74o0,49,63,0|dphcrz,49,63,0|dphcs0,62,42,1|dzx7bz,62,42,1|dzx7c0,49,63,0|e87ffz,49,63,0|e87fg0,62,42,1|ein9zz,62,42,1|eina00,49,63,0|eqxi3z,49,63,0|eqxi40,62,42,1|f1dcnz,62,42,1|f1dco0,49,63,0|f9nkrz,49,63,0|f9nks0,62,42,1|fkgdzz,62,42,1|fkge00,49,63,0|fsdnfz,49,63,0|fsdng0,62,42,1|g36gnz,62,42,1|g36go0,49,63,0|gb3q3z,49,63,0|gb3q40,62,42,1|glwjbz,62,42,1|glwjc0,49,63,0|gu6rfz,49,63,0|gu6rg0,62,42,1|h4mlzz,62,42,1|h4mm00,49,63,0|hcwu3z,49,63,0|hcwu40,62,42,1|hnconz,62,42,1|hncoo0,49,63,0|hvmwrz,49,63,0|hvmws0,62,42,1|i6fpzz,62,42,1|i6fq00,49,63,0|ieczfz,49,63,0|ieczg0,62,42,1|ip5snz,62,42,1|ip5so0,49,63,0|ix323z,49,63,0|ix3240,62,42,1|j7vvbz,62,42,1|j7vvc0,49,63,0|jeq8rz,49,63,0|jeq8s0,62,42,1|jqywnz,62,42,1|jqywo0,49,63,0|jxgbfz,49,63,0|jxgbg0,62,42,1|k9ozbz,62,42,1|k9ozc0,49,63,0|kg6e3z,49,63,0|kg6e40,62,42,1|ksf1zz,62,42,1|ksf200,49,63,0|kz9ffz,49,63,0|kz9fg0,62,42,1|lbi3bz,62,42,1|lbi3c0,49,63,0|lhzi3z,49,63,0|lhzi40,62,42,1|lu85zz,62,42,1|lu8600,49,63,0|m0pkrz,49,63,0|m0pks0,62,42,1|mcy8nz,62,42,1|mcy8o0,49,63,0|mjfnfz,49,63,0|mjfng0,62,42,1|mvobbz,62,42,1|mvobc0,49,63,0|n25q3z,49,63,0|n25q40,62,42,1|needzz,62,42,1|neee00,49,63,0|nkvsrz,49,63,0|nkvss0,62,42,1|nx4gnz,62,42,1|nx4go0,49,63,0|o3yu3z,49,63,0|o3yu40,62,42,1|og7hzz,62,42,1|og7i00,49,63,0|omowrz,49,63,0|omows0,62,42,1|oyxknz,62,42,1|oyxko0,49,63,0|p5ezfz,49,63,0|p5ezg0,62,42,1|phnnbz,62,42,1|phnnc0,49,63,0|po523z,49,63,0|po5240,62,42,1|q0dpzz,62,42,1|q0dq00,49,63,0|q6v4rz,49,63,0|q6v4s0,62,42,1|qj3snz,62,42,1|qj3so0,49,63,0|qpy63z,49,63,0|qpy640,62,42,1|r26tzz,62,42,1|r26u00,49,63,0|r8o8rz,49,63,0|r8o8s0,62,42,1|rkwwnz,62,42,1|rkwwo0,49,63,0|rrebfz,49,63,0|rrebg0,62,42,1|s3mzbz,62,42,1|s3mzc0,49,63,0|sa4e3z,49,63,0|sa4e40,62,42,1|smd1zz,62,42,1|smd200,49,63,0|ssugrz,49,63,0|ssugs0,62,42,1|t534nz,62,42,1|t534o0,49,63,0|tbkjfz,49,63,0|tbkjg0,62,42,1|tnt7bz,62,42,1|tnt7c0,49,63,0|tunkrz,49,63,0|tunks0,62,42,1|u6w8nz,62,42,1|u6w8o0,49,63,0|uddnfz,49,63,0|uddng0,62,42,1|upmbbz,62,42,1|upmbc0,49,63,0|uw3q3z,49,63,0|uw3q40,62,42,1|v8cdzz,62,42,1|v8ce00,49,63,0|vetsrz,49,63,0|vetss0,62,42,1|vr2gnz,62,42,1|vr2go0,49,63,0|vxjvfz,49,63,0|vxjvg0,62,42,1|w9sjbz,62,42,1|w9sjc0,49,63,0|wgmwrz,49,63,0|wgmws0,62,42,1|wsvknz,62,42,1|wsvko0,49,63,0|wzczfz,49,63,0|wzczg0,62,42,1|xblnbz,62,42,1|xblnc0,49,63,0|xi323z,49,63,0|xi3240,62,42,1|xubpzz,62,42,1|xubq00,49,63,0|y0t4rz,49,63,0|y0t4s0,62,42,1|yd1snz,62,42,1|yd1so0,49,63,0|yjj7fz,49,63,0|yjj7g0,62,42,1|yvrvbz,62,42,1|yvrvc0,49,63,0|z29a3z,49,63,0|z29a40,62,42,1|zehxzz,62,42,1|zehy00,49,63,0\",\"America/New_York|,0,149,0|-18y0os0,49,63,0|-r0ev81,49,63,0|-r0ev80,62,42,1|-qpm201,62,42,1|-qpm200,49,63,0|-qhosk1,49,63,0|-qhosk0,62,42,1|-q6vzc1,62,42,1|-q6vzc0,49,63,0|-pyypw1,49,63,0|-pyypw0,62,42,1|-pnsy01,62,42,1|-pnsy00,49,63,0|-pessk1,49,63,0|-pessk0,62,42,1|-p6voo1,62,42,1|-p6voo0,49,63,0|-ovpr81,49,63,0|-ovpr80,62,42,1|-oo5m01,62,42,1|-oo5m00,49,63,0|-oczok1,49,63,0|-oczok0,62,42,1|-o52ko1,62,42,1|-o52ko0,49,63,0|-nu9lw1,49,63,0|-nu9lw0,62,42,1|-nmci01,62,42,1|-nmci00,49,63,0|-nbjj81,49,63,0|-nbjj80,62,42,1|-n3mfc1,62,42,1|-n3mfc0,49,63,0|-mstgk1,49,63,0|-mstgk0,62,42,1|-mkwco1,62,42,1|-mkwco0,49,63,0|-ma3dw1,49,63,0|-ma3dw0,62,42,1|-m26a01,62,42,1|-m26a00,49,63,0|-lr0ck1,49,63,0|-lr0ck0,62,42,1|-lj38o1,62,42,1|-lj38o0,49,63,0|-l8a9w1,49,63,0|-l8a9w0,62,42,1|-l0d601,62,42,1|-l0d600,49,63,0|-kpk781,49,63,0|-kpk780,62,42,1|-khn3c1,62,42,1|-khn3c0,49,63,0|-k6u4k1,49,63,0|-k6u4k0,62,42,1|-jyx0o1,62,42,1|-jyx0o0,49,63,0|-jo41w1,49,63,0|-jo41w0,62,42,1|-jg6y01,62,42,1|-jg6y00,49,63,0|-j510k1,49,63,0|-j510k0,62,42,1|-ixgvc1,62,42,1|-ixgvc0,49,63,0|-imaxw1,49,63,0|-imaxw0,62,42,1|-iedu01,62,42,1|-iedu00,49,63,0|-i3kv81,49,63,0|-i3kv80,62,42,1|-hvnrc1,62,42,1|-hvnrc0,49,63,0|-hkusk1,49,63,0|-hkusk0,62,42,1|-hcxoo1,62,42,1|-hcxoo0,49,63,0|-h24pw1,49,63,0|-h24pw0,62,42,1|-gu7m01,62,42,1|-gu7m00,49,63,0|-gjen81,49,63,0|-gjen80,62,42,1|-gbhjc1,62,42,1|-gbhjc0,49,63,0|-g0blw1,49,63,0|-g0blw0,62,42,1|-fsrgo1,62,42,1|-fsrgo0,49,63,0|-fhlj81,49,63,0|-fhlj80,62,42,1|-f9ofc1,62,42,1|-f9ofc0,49,63,0|-eyvgk1,49,63,0|-eyvgk0,62,42,1|-eqyco1,62,42,1|-eqyco0,49,63,0|-ek24k1,49,63,0|-ek24k0,70,42,1|-cq2tg1,70,42,1|-cq2tg0,71,42,1|-cnp3c1,71,42,1|-cnp3c0,49,63,0|-ccw4k1,49,63,0|-ccw4k0,62,42,1|-c4z0o1,62,42,1|-c4z0o0,49,63,0|-bu61w1,49,63,0|-bu61w0,62,42,1|-bm8y01,62,42,1|-bm8y00,49,63,0|-bbfz81,49,63,0|-bbfz80,62,42,1|-b3ivc1,62,42,1|-b3ivc0,49,63,0|-aspwk1,49,63,0|-aspwk0,62,42,1|-aksso1,62,42,1|-aksso0,49,63,0|-a9mv81,49,63,0|-a9mv80,62,42,1|-a22q01,62,42,1|-a22q00,49,63,0|-9qwsk1,49,63,0|-9qwsk0,62,42,1|-9izoo1,62,42,1|-9izoo0,49,63,0|-986pw1,49,63,0|-986pw0,62,42,1|-909m01,62,42,1|-909m00,49,63,0|-8pgn81,49,63,0|-8pgn80,62,42,1|-8hjjc1,62,42,1|-8hjjc0,49,63,0|-86qkk1,49,63,0|-86qkk0,62,42,1|-7ytgo1,62,42,1|-7ytgo0,49,63,0|-7o0hw1,49,63,0|-7o0hw0,62,42,1|-7eako1,62,42,1|-7eako0,49,63,0|-74xgk1,49,63,0|-74xgk0,62,42,1|-6vki01,62,42,1|-6vki00,49,63,0|-6m7dw1,49,63,0|-6m7dw0,62,42,1|-6cufc1,62,42,1|-6cufc0,49,63,0|-63hb81,49,63,0|-63hb80,62,42,1|-5u4co1,62,42,1|-5u4co0,49,63,0|-5kr8k1,49,63,0|-5kr8k0,62,42,1|-5bea01,62,42,1|-5bea00,49,63,0|-5215w1,49,63,0|-5215w0,62,42,1|-4sb8o1,62,42,1|-4sb8o0,49,63,0|-4iy4k1,49,63,0|-4iy4k0,62,42,1|-49l601,62,42,1|-49l600,49,63,0|-4081w1,49,63,0|-4081w0,62,42,1|-3qv3c1,62,42,1|-3qv3c0,49,63,0|-3hhz81,49,63,0|-3hhz80,62,42,1|-3850o1,62,42,1|-3850o0,49,63,0|-2yrwk1,49,63,0|-2yrwk0,62,42,1|-2pey01,62,42,1|-2pey00,49,63,0|-2g1tw1,49,63,0|-2g1tw0,62,42,1|-26bwo1,62,42,1|-26bwo0,49,63,0|-1xbr81,49,63,0|-1xbr80,62,42,1|-1nlu01,62,42,1|-1nlu00,49,63,0|-1e8pw1,49,63,0|-1e8pw0,62,42,1|-14vrc1,62,42,1|-14vrc0,49,63,0|-vin81,49,63,0|-vin80,62,42,1|-m5oo1,62,42,1|-m5oo0,49,63,0|-cskk1,49,63,0|-cskk0,62,42,1|-3fm01,62,42,1|-3fm00,49,63,0|5xi3z,49,63,0|5xi40,62,42,1|fagnz,62,42,1|fago0,49,63,0|onkrz,49,63,0|onks0,62,42,1|ydhzz,62,42,1|ydi00,49,63,0|17qm3z,49,63,0|17qm40,62,42,1|1h3knz,62,42,1|1h3ko0,49,63,0|1qgorz,49,63,0|1qgos0,62,42,1|1ztnbz,62,42,1|1ztnc0,49,63,0|23fcrz,49,63,0|23fcs0,62,42,1|2ijpzz,62,42,1|2ijq00,49,63,0|2oo63z,49,63,0|2oo640,62,42,1|319snz,62,42,1|319so0,49,63,0|3amwrz,49,63,0|3amws0,62,42,1|3kctzz,62,42,1|3kcu00,49,63,0|3tczfz,49,63,0|3tczg0,62,42,1|432wnz,62,42,1|432wo0,49,63,0|4cg0rz,49,63,0|4cg0s0,62,42,1|4lszbz,62,42,1|4lszc0,49,63,0|4v63fz,49,63,0|4v63g0,62,42,1|54j1zz,62,42,1|54j200,49,63,0|5dw63z,49,63,0|5dw640,62,42,1|5n94nz,62,42,1|5n94o0,49,63,0|5wm8rz,49,63,0|5wm8s0,62,42,1|65z7bz,62,42,1|65z7c0,49,63,0|6fcbfz,49,63,0|6fcbg0,62,42,1|6p28nz,62,42,1|6p28o0,49,63,0|6y2e3z,49,63,0|6y2e40,62,42,1|77sbbz,62,42,1|77sbc0,49,63,0|7h5ffz,49,63,0|7h5fg0,62,42,1|7qidzz,62,42,1|7qie00,49,63,0|7zvi3z,49,63,0|7zvi40,62,42,1|898gnz,62,42,1|898go0,49,63,0|8ilkrz,49,63,0|8ilks0,62,42,1|8ryjbz,62,42,1|8ryjc0,49,63,0|908rfz,49,63,0|908rg0,62,42,1|9aolzz,62,42,1|9aom00,49,63,0|9iyu3z,49,63,0|9iyu40,62,42,1|9trnbz,62,42,1|9trnc0,49,63,0|a1owrz,49,63,0|a1ows0,62,42,1|achpzz,62,42,1|achq00,49,63,0|akezfz,49,63,0|akezg0,62,42,1|av7snz,62,42,1|av7so0,49,63,0|b3i0rz,49,63,0|b3i0s0,62,42,1|bdxvbz,62,42,1|bdxvc0,49,63,0|bm83fz,49,63,0|bm83g0,62,42,1|bwnxzz,62,42,1|bwny00,49,63,0|c4y63z,49,63,0|c4y640,62,42,1|cfqzbz,62,42,1|cfqzc0,49,63,0|cno8rz,49,63,0|cno8s0,62,42,1|cyh1zz,62,42,1|cyh200,49,63,0|d6ebfz,49,63,0|d6ebg0,62,42,1|dh74nz,62,42,1|dh74o0,49,63,0|dphcrz,49,63,0|dphcs0,62,42,1|dzx7bz,62,42,1|dzx7c0,49,63,0|e87ffz,49,63,0|e87fg0,62,42,1|ein9zz,62,42,1|eina00,49,63,0|eqxi3z,49,63,0|eqxi40,62,42,1|f1dcnz,62,42,1|f1dco0,49,63,0|f9nkrz,49,63,0|f9nks0,62,42,1|fkgdzz,62,42,1|fkge00,49,63,0|fsdnfz,49,63,0|fsdng0,62,42,1|g36gnz,62,42,1|g36go0,49,63,0|gb3q3z,49,63,0|gb3q40,62,42,1|glwjbz,62,42,1|glwjc0,49,63,0|gu6rfz,49,63,0|gu6rg0,62,42,1|h4mlzz,62,42,1|h4mm00,49,63,0|hcwu3z,49,63,0|hcwu40,62,42,1|hnconz,62,42,1|hncoo0,49,63,0|hvmwrz,49,63,0|hvmws0,62,42,1|i6fpzz,62,42,1|i6fq00,49,63,0|ieczfz,49,63,0|ieczg0,62,42,1|ip5snz,62,42,1|ip5so0,49,63,0|ix323z,49,63,0|ix3240,62,42,1|j7vvbz,62,42,1|j7vvc0,49,63,0|jeq8rz,49,63,0|jeq8s0,62,42,1|jqywnz,62,42,1|jqywo0,49,63,0|jxgbfz,49,63,0|jxgbg0,62,42,1|k9ozbz,62,42,1|k9ozc0,49,63,0|kg6e3z,49,63,0|kg6e40,62,42,1|ksf1zz,62,42,1|ksf200,49,63,0|kz9ffz,49,63,0|kz9fg0,62,42,1|lbi3bz,62,42,1|lbi3c0,49,63,0|lhzi3z,49,63,0|lhzi40,62,42,1|lu85zz,62,42,1|lu8600,49,63,0|m0pkrz,49,63,0|m0pks0,62,42,1|mcy8nz,62,42,1|mcy8o0,49,63,0|mjfnfz,49,63,0|mjfng0,62,42,1|mvobbz,62,42,1|mvobc0,49,63,0|n25q3z,49,63,0|n25q40,62,42,1|needzz,62,42,1|neee00,49,63,0|nkvsrz,49,63,0|nkvss0,62,42,1|nx4gnz,62,42,1|nx4go0,49,63,0|o3yu3z,49,63,0|o3yu40,62,42,1|og7hzz,62,42,1|og7i00,49,63,0|omowrz,49,63,0|omows0,62,42,1|oyxknz,62,42,1|oyxko0,49,63,0|p5ezfz,49,63,0|p5ezg0,62,42,1|phnnbz,62,42,1|phnnc0,49,63,0|po523z,49,63,0|po5240,62,42,1|q0dpzz,62,42,1|q0dq00,49,63,0|q6v4rz,49,63,0|q6v4s0,62,42,1|qj3snz,62,42,1|qj3so0,49,63,0|qpy63z,49,63,0|qpy640,62,42,1|r26tzz,62,42,1|r26u00,49,63,0|r8o8rz,49,63,0|r8o8s0,62,42,1|rkwwnz,62,42,1|rkwwo0,49,63,0|rrebfz,49,63,0|rrebg0,62,42,1|s3mzbz,62,42,1|s3mzc0,49,63,0|sa4e3z,49,63,0|sa4e40,62,42,1|smd1zz,62,42,1|smd200,49,63,0|ssugrz,49,63,0|ssugs0,62,42,1|t534nz,62,42,1|t534o0,49,63,0|tbkjfz,49,63,0|tbkjg0,62,42,1|tnt7bz,62,42,1|tnt7c0,49,63,0|tunkrz,49,63,0|tunks0,62,42,1|u6w8nz,62,42,1|u6w8o0,49,63,0|uddnfz,49,63,0|uddng0,62,42,1|upmbbz,62,42,1|upmbc0,49,63,0|uw3q3z,49,63,0|uw3q40,62,42,1|v8cdzz,62,42,1|v8ce00,49,63,0|vetsrz,49,63,0|vetss0,62,42,1|vr2gnz,62,42,1|vr2go0,49,63,0|vxjvfz,49,63,0|vxjvg0,62,42,1|w9sjbz,62,42,1|w9sjc0,49,63,0|wgmwrz,49,63,0|wgmws0,62,42,1|wsvknz,62,42,1|wsvko0,49,63,0|wzczfz,49,63,0|wzczg0,62,42,1|xblnbz,62,42,1|xblnc0,49,63,0|xi323z,49,63,0|xi3240,62,42,1|xubpzz,62,42,1|xubq00,49,63,0|y0t4rz,49,63,0|y0t4s0,62,42,1|yd1snz,62,42,1|yd1so0,49,63,0|yjj7fz,49,63,0|yjj7g0,62,42,1|yvrvbz,62,42,1|yvrvc0,49,63,0|z29a3z,49,63,0|z29a40,62,42,1|zehxzz,62,42,1|zehy00,49,63,0\",\"America/Nipigon|,0,150,0|-1353bnk,49,63,0|-qzoxw1,49,63,0|-qzoxw0,62,42,1|-qpm201,62,42,1|-qpm200,49,63,0|-f9oi41,49,63,0|-f9oi40,62,42,1|-ek24k1,62,42,1|-ek24k0,70,42,1|-cq2tg1,70,42,1|-cq2tg0,71,42,1|-cnp3c1,71,42,1|-cnp3c0,49,63,0|296rfz,49,63,0|296rg0,62,42,1|2ijpzz,62,42,1|2ijq00,49,63,0|2rwu3z,49,63,0|2rwu40,62,42,1|319snz,62,42,1|319so0,49,63,0|3amwrz,49,63,0|3amws0,62,42,1|3kctzz,62,42,1|3kcu00,49,63,0|3tczfz,49,63,0|3tczg0,62,42,1|432wnz,62,42,1|432wo0,49,63,0|4cg0rz,49,63,0|4cg0s0,62,42,1|4lszbz,62,42,1|4lszc0,49,63,0|4v63fz,49,63,0|4v63g0,62,42,1|54j1zz,62,42,1|54j200,49,63,0|5dw63z,49,63,0|5dw640,62,42,1|5n94nz,62,42,1|5n94o0,49,63,0|5wm8rz,49,63,0|5wm8s0,62,42,1|65z7bz,62,42,1|65z7c0,49,63,0|6fcbfz,49,63,0|6fcbg0,62,42,1|6p28nz,62,42,1|6p28o0,49,63,0|6y2e3z,49,63,0|6y2e40,62,42,1|77sbbz,62,42,1|77sbc0,49,63,0|7h5ffz,49,63,0|7h5fg0,62,42,1|7qidzz,62,42,1|7qie00,49,63,0|7zvi3z,49,63,0|7zvi40,62,42,1|898gnz,62,42,1|898go0,49,63,0|8ilkrz,49,63,0|8ilks0,62,42,1|8ryjbz,62,42,1|8ryjc0,49,63,0|908rfz,49,63,0|908rg0,62,42,1|9aolzz,62,42,1|9aom00,49,63,0|9iyu3z,49,63,0|9iyu40,62,42,1|9trnbz,62,42,1|9trnc0,49,63,0|a1owrz,49,63,0|a1ows0,62,42,1|achpzz,62,42,1|achq00,49,63,0|akezfz,49,63,0|akezg0,62,42,1|av7snz,62,42,1|av7so0,49,63,0|b3i0rz,49,63,0|b3i0s0,62,42,1|bdxvbz,62,42,1|bdxvc0,49,63,0|bm83fz,49,63,0|bm83g0,62,42,1|bwnxzz,62,42,1|bwny00,49,63,0|c4y63z,49,63,0|c4y640,62,42,1|cfqzbz,62,42,1|cfqzc0,49,63,0|cno8rz,49,63,0|cno8s0,62,42,1|cyh1zz,62,42,1|cyh200,49,63,0|d6ebfz,49,63,0|d6ebg0,62,42,1|dh74nz,62,42,1|dh74o0,49,63,0|dphcrz,49,63,0|dphcs0,62,42,1|dzx7bz,62,42,1|dzx7c0,49,63,0|e87ffz,49,63,0|e87fg0,62,42,1|ein9zz,62,42,1|eina00,49,63,0|eqxi3z,49,63,0|eqxi40,62,42,1|f1dcnz,62,42,1|f1dco0,49,63,0|f9nkrz,49,63,0|f9nks0,62,42,1|fkgdzz,62,42,1|fkge00,49,63,0|fsdnfz,49,63,0|fsdng0,62,42,1|g36gnz,62,42,1|g36go0,49,63,0|gb3q3z,49,63,0|gb3q40,62,42,1|glwjbz,62,42,1|glwjc0,49,63,0|gu6rfz,49,63,0|gu6rg0,62,42,1|h4mlzz,62,42,1|h4mm00,49,63,0|hcwu3z,49,63,0|hcwu40,62,42,1|hnconz,62,42,1|hncoo0,49,63,0|hvmwrz,49,63,0|hvmws0,62,42,1|i6fpzz,62,42,1|i6fq00,49,63,0|ieczfz,49,63,0|ieczg0,62,42,1|ip5snz,62,42,1|ip5so0,49,63,0|ix323z,49,63,0|ix3240,62,42,1|j7vvbz,62,42,1|j7vvc0,49,63,0|jeq8rz,49,63,0|jeq8s0,62,42,1|jqywnz,62,42,1|jqywo0,49,63,0|jxgbfz,49,63,0|jxgbg0,62,42,1|k9ozbz,62,42,1|k9ozc0,49,63,0|kg6e3z,49,63,0|kg6e40,62,42,1|ksf1zz,62,42,1|ksf200,49,63,0|kz9ffz,49,63,0|kz9fg0,62,42,1|lbi3bz,62,42,1|lbi3c0,49,63,0|lhzi3z,49,63,0|lhzi40,62,42,1|lu85zz,62,42,1|lu8600,49,63,0|m0pkrz,49,63,0|m0pks0,62,42,1|mcy8nz,62,42,1|mcy8o0,49,63,0|mjfnfz,49,63,0|mjfng0,62,42,1|mvobbz,62,42,1|mvobc0,49,63,0|n25q3z,49,63,0|n25q40,62,42,1|needzz,62,42,1|neee00,49,63,0|nkvsrz,49,63,0|nkvss0,62,42,1|nx4gnz,62,42,1|nx4go0,49,63,0|o3yu3z,49,63,0|o3yu40,62,42,1|og7hzz,62,42,1|og7i00,49,63,0|omowrz,49,63,0|omows0,62,42,1|oyxknz,62,42,1|oyxko0,49,63,0|p5ezfz,49,63,0|p5ezg0,62,42,1|phnnbz,62,42,1|phnnc0,49,63,0|po523z,49,63,0|po5240,62,42,1|q0dpzz,62,42,1|q0dq00,49,63,0|q6v4rz,49,63,0|q6v4s0,62,42,1|qj3snz,62,42,1|qj3so0,49,63,0|qpy63z,49,63,0|qpy640,62,42,1|r26tzz,62,42,1|r26u00,49,63,0|r8o8rz,49,63,0|r8o8s0,62,42,1|rkwwnz,62,42,1|rkwwo0,49,63,0|rrebfz,49,63,0|rrebg0,62,42,1|s3mzbz,62,42,1|s3mzc0,49,63,0|sa4e3z,49,63,0|sa4e40,62,42,1|smd1zz,62,42,1|smd200,49,63,0|ssugrz,49,63,0|ssugs0,62,42,1|t534nz,62,42,1|t534o0,49,63,0|tbkjfz,49,63,0|tbkjg0,62,42,1|tnt7bz,62,42,1|tnt7c0,49,63,0|tunkrz,49,63,0|tunks0,62,42,1|u6w8nz,62,42,1|u6w8o0,49,63,0|uddnfz,49,63,0|uddng0,62,42,1|upmbbz,62,42,1|upmbc0,49,63,0|uw3q3z,49,63,0|uw3q40,62,42,1|v8cdzz,62,42,1|v8ce00,49,63,0|vetsrz,49,63,0|vetss0,62,42,1|vr2gnz,62,42,1|vr2go0,49,63,0|vxjvfz,49,63,0|vxjvg0,62,42,1|w9sjbz,62,42,1|w9sjc0,49,63,0|wgmwrz,49,63,0|wgmws0,62,42,1|wsvknz,62,42,1|wsvko0,49,63,0|wzczfz,49,63,0|wzczg0,62,42,1|xblnbz,62,42,1|xblnc0,49,63,0|xi323z,49,63,0|xi3240,62,42,1|xubpzz,62,42,1|xubq00,49,63,0|y0t4rz,49,63,0|y0t4s0,62,42,1|yd1snz,62,42,1|yd1so0,49,63,0|yjj7fz,49,63,0|yjj7g0,62,42,1|yvrvbz,62,42,1|yvrvc0,49,63,0|z29a3z,49,63,0|z29a40,62,42,1|zehxzz,62,42,1|zehy00,49,63,0\",\"America/Nome|,0,151,0|-1hc7qjz,0,152,0|-1078qpb,0,152,0|-1078qpa,24,35,0|-ek1nw1,24,35,0|-ek1nw0,25,36,1|-cq2tg1,25,36,1|-cq2tg0,26,36,1|-cnomo1,26,36,1|-cnomo0,24,35,0|-1fq441,24,35,0|-1fq440,27,35,0|-cs3w1,27,35,0|-cs3w0,28,36,1|-3f5c1,28,36,1|-3f5c0,27,35,0|5xyrz,27,35,0|5xys0,28,36,1|faxbz,28,36,1|faxc0,27,35,0|oo1fz,27,35,0|oo1g0,28,36,1|ydynz,28,36,1|ydyo0,27,35,0|17r2rz,27,35,0|17r2s0,28,36,1|1h41bz,28,36,1|1h41c0,27,35,0|1qh5fz,27,35,0|1qh5g0,28,36,1|1zu3zz,28,36,1|1zu400,27,35,0|23ftfz,27,35,0|23ftg0,28,36,1|2ik6nz,28,36,1|2ik6o0,27,35,0|2oomrz,27,35,0|2ooms0,28,36,1|31a9bz,28,36,1|31a9c0,27,35,0|3andfz,27,35,0|3andg0,28,36,1|3kdanz,28,36,1|3kdao0,27,35,0|3tdg3z,27,35,0|3tdg40,28,36,1|433dbz,28,36,1|433dc0,27,35,0|4cghfz,27,35,0|4cghg0,28,36,1|4ltfzz,28,36,1|4ltg00,27,35,0|4v6k3z,27,35,0|4v6k40,28,36,1|54jinz,28,36,1|54jio0,27,35,0|5dwmrz,27,35,0|5dwms0,28,36,1|5n9lbz,28,36,1|5n9lc0,27,35,0|5wmpfz,27,35,0|5wmpg0,28,36,1|65znzz,28,36,1|65zo00,27,35,0|6fcs3z,27,35,0|6fcs40,28,36,1|6p2pbz,28,36,1|6p2pc0,27,35,0|6y2urz,27,35,0|6y2us0,28,36,1|77srzz,28,36,1|77ss00,36,37,0|79dybz,36,37,0|79dyc0,37,37,0|7h5qjz,37,37,0|7h5qk0,38,40,1|7qip3z,38,40,1|7qip40,37,37,0|7zvt7z,37,37,0|7zvt80,38,40,1|898rrz,38,40,1|898rs0,37,37,0|8ilvvz,37,37,0|8ilvw0,38,40,1|8ryufz,38,40,1|8ryug0,37,37,0|9092jz,37,37,0|9092k0,38,40,1|9aox3z,38,40,1|9aox40,37,37,0|9iz57z,37,37,0|9iz580,38,40,1|9tryfz,38,40,1|9tryg0,37,37,0|a1p7vz,37,37,0|a1p7w0,38,40,1|aci13z,38,40,1|aci140,37,37,0|akfajz,37,37,0|akfak0,38,40,1|av83rz,38,40,1|av83s0,37,37,0|b3ibvz,37,37,0|b3ibw0,38,40,1|bdy6fz,38,40,1|bdy6g0,37,37,0|bm8ejz,37,37,0|bm8ek0,38,40,1|bwo93z,38,40,1|bwo940,37,37,0|c4yh7z,37,37,0|c4yh80,38,40,1|cfrafz,38,40,1|cfrag0,37,37,0|cnojvz,37,37,0|cnojw0,38,40,1|cyhd3z,38,40,1|cyhd40,37,37,0|d6emjz,37,37,0|d6emk0,38,40,1|dh7frz,38,40,1|dh7fs0,37,37,0|dphnvz,37,37,0|dphnw0,38,40,1|dzxifz,38,40,1|dzxig0,37,37,0|e87qjz,37,37,0|e87qk0,38,40,1|einl3z,38,40,1|einl40,37,37,0|eqxt7z,37,37,0|eqxt80,38,40,1|f1dnrz,38,40,1|f1dns0,37,37,0|f9nvvz,37,37,0|f9nvw0,38,40,1|fkgp3z,38,40,1|fkgp40,37,37,0|fsdyjz,37,37,0|fsdyk0,38,40,1|g36rrz,38,40,1|g36rs0,37,37,0|gb417z,37,37,0|gb4180,38,40,1|glwufz,38,40,1|glwug0,37,37,0|gu72jz,37,37,0|gu72k0,38,40,1|h4mx3z,38,40,1|h4mx40,37,37,0|hcx57z,37,37,0|hcx580,38,40,1|hnczrz,38,40,1|hnczs0,37,37,0|hvn7vz,37,37,0|hvn7w0,38,40,1|i6g13z,38,40,1|i6g140,37,37,0|iedajz,37,37,0|iedak0,38,40,1|ip63rz,38,40,1|ip63s0,37,37,0|ix3d7z,37,37,0|ix3d80,38,40,1|j7w6fz,38,40,1|j7w6g0,37,37,0|jeqjvz,37,37,0|jeqjw0,38,40,1|jqz7rz,38,40,1|jqz7s0,37,37,0|jxgmjz,37,37,0|jxgmk0,38,40,1|k9pafz,38,40,1|k9pag0,37,37,0|kg6p7z,37,37,0|kg6p80,38,40,1|ksfd3z,38,40,1|ksfd40,37,37,0|kz9qjz,37,37,0|kz9qk0,38,40,1|lbiefz,38,40,1|lbieg0,37,37,0|lhzt7z,37,37,0|lhzt80,38,40,1|lu8h3z,38,40,1|lu8h40,37,37,0|m0pvvz,37,37,0|m0pvw0,38,40,1|mcyjrz,38,40,1|mcyjs0,37,37,0|mjfyjz,37,37,0|mjfyk0,38,40,1|mvomfz,38,40,1|mvomg0,37,37,0|n2617z,37,37,0|n26180,38,40,1|neep3z,38,40,1|neep40,37,37,0|nkw3vz,37,37,0|nkw3w0,38,40,1|nx4rrz,38,40,1|nx4rs0,37,37,0|o3z57z,37,37,0|o3z580,38,40,1|og7t3z,38,40,1|og7t40,37,37,0|omp7vz,37,37,0|omp7w0,38,40,1|oyxvrz,38,40,1|oyxvs0,37,37,0|p5fajz,37,37,0|p5fak0,38,40,1|phnyfz,38,40,1|phnyg0,37,37,0|po5d7z,37,37,0|po5d80,38,40,1|q0e13z,38,40,1|q0e140,37,37,0|q6vfvz,37,37,0|q6vfw0,38,40,1|qj43rz,38,40,1|qj43s0,37,37,0|qpyh7z,37,37,0|qpyh80,38,40,1|r2753z,38,40,1|r27540,37,37,0|r8ojvz,37,37,0|r8ojw0,38,40,1|rkx7rz,38,40,1|rkx7s0,37,37,0|rremjz,37,37,0|rremk0,38,40,1|s3nafz,38,40,1|s3nag0,37,37,0|sa4p7z,37,37,0|sa4p80,38,40,1|smdd3z,38,40,1|smdd40,37,37,0|ssurvz,37,37,0|ssurw0,38,40,1|t53frz,38,40,1|t53fs0,37,37,0|tbkujz,37,37,0|tbkuk0,38,40,1|tntifz,38,40,1|tntig0,37,37,0|tunvvz,37,37,0|tunvw0,38,40,1|u6wjrz,38,40,1|u6wjs0,37,37,0|uddyjz,37,37,0|uddyk0,38,40,1|upmmfz,38,40,1|upmmg0,37,37,0|uw417z,37,37,0|uw4180,38,40,1|v8cp3z,38,40,1|v8cp40,37,37,0|veu3vz,37,37,0|veu3w0,38,40,1|vr2rrz,38,40,1|vr2rs0,37,37,0|vxk6jz,37,37,0|vxk6k0,38,40,1|w9sufz,38,40,1|w9sug0,37,37,0|wgn7vz,37,37,0|wgn7w0,38,40,1|wsvvrz,38,40,1|wsvvs0,37,37,0|wzdajz,37,37,0|wzdak0,38,40,1|xblyfz,38,40,1|xblyg0,37,37,0|xi3d7z,37,37,0|xi3d80,38,40,1|xuc13z,38,40,1|xuc140,37,37,0|y0tfvz,37,37,0|y0tfw0,38,40,1|yd23rz,38,40,1|yd23s0,37,37,0|yjjijz,37,37,0|yjjik0,38,40,1|yvs6fz,38,40,1|yvs6g0,37,37,0|z29l7z,37,37,0|z29l80,38,40,1|zei93z,38,40,1|zei940,37,37,0\",\"America/Noronha|,0,153,0|-t85lzw,40,45,0|-jyld81,40,45,0|-jyld80,13,15,1|-jpb3w1,13,15,1|-jpb3w0,40,45,0|-jfsfs1,40,45,0|-jfsfs0,13,15,1|-j6j6k1,13,15,1|-j6j6k0,40,45,0|-ahd141,40,45,0|-ahd140,13,15,1|-aad6g1,13,15,1|-aad6g0,40,45,0|-9yl3s1,40,45,0|-9yl3s0,13,15,1|-9sd3w1,13,15,1|-9sd3w0,40,45,0|-9ft6g1,40,45,0|-9ft6g0,13,15,1|-99jbw1,13,15,1|-99jbw0,40,45,0|-8wzeg1,40,45,0|-8wzeg0,13,15,1|-8sct81,13,15,1|-8sct80,40,45,0|-35xp41,40,45,0|-35xp40,13,15,1|-31o2k1,13,15,1|-31o2k0,40,45,0|-2kdrs1,40,45,0|-2kdrs0,13,15,1|-2hcl81,13,15,1|-2hcl80,40,45,0|-24qt41,40,45,0|-24qt40,13,15,1|-2047w1,13,15,1|-2047w0,40,45,0|-1nifs1,40,45,0|-1nifs0,13,15,1|-1hcak1,13,15,1|-1hcak0,40,45,0|-14qig1,40,45,0|-14qig0,13,15,1|-yiik1,13,15,1|-yiik0,40,45,0|89j9jz,40,45,0|89j9k0,13,15,1|8gdhfz,13,15,1|8gdhg0,40,45,0|8rwdjz,40,45,0|8rwdk0,13,15,1|8xnpfz,13,15,1|8xnpg0,40,45,0|9aoavz,40,45,0|9aoaw0,13,15,1|9g2o3z,13,15,1|9g2o40,40,45,0|9t1evz,40,45,0|9t1ew0,13,15,1|9yfs3z,13,15,1|9yfs40,40,45,0|abrhjz,40,45,0|abrhk0,13,15,1|ahvs3z,13,15,1|ahvs40,40,45,0|fj087z,40,45,0|fj0880,13,15,1|fqkdfz,13,15,1|fqkdg0,40,45,0|g239jz,40,45,0|g239k0,13,15,1|g2g5fz,13,15,1|g2g5g0,40,45,0|gl6avz,40,45,0|gl6aw0,13,15,1|grnk3z,13,15,1|grnk40,40,45,0\",\"America/North_Dakota/Beulah|,0,154,0|-18y0j80,50,66,0|-r0epo1,50,66,0|-r0epo0,52,62,1|-qplwg1,52,62,1|-qplwg0,50,66,0|-qhon01,50,66,0|-qhon00,52,62,1|-q6vts1,52,62,1|-q6vts0,50,66,0|-ek1z01,50,66,0|-ek1z00,58,62,1|-cq2tg1,58,62,1|-cq2tg0,59,62,1|-cnoxs1,59,62,1|-cnoxs0,50,66,0|-1e8kc1,50,66,0|-1e8kc0,52,62,1|-14vls1,52,62,1|-14vls0,50,66,0|-viho1,50,66,0|-viho0,52,62,1|-m5j41,52,62,1|-m5j40,50,66,0|-csf01,50,66,0|-csf00,52,62,1|-3fgg1,52,62,1|-3fgg0,50,66,0|5xnnz,50,66,0|5xno0,52,62,1|fam7z,52,62,1|fam80,50,66,0|onqbz,50,66,0|onqc0,52,62,1|ydnjz,52,62,1|ydnk0,50,66,0|17qrnz,50,66,0|17qro0,52,62,1|1h3q7z,52,62,1|1h3q80,50,66,0|1qgubz,50,66,0|1qguc0,52,62,1|1ztsvz,52,62,1|1ztsw0,50,66,0|23fibz,50,66,0|23fic0,52,62,1|2ijvjz,52,62,1|2ijvk0,50,66,0|2oobnz,50,66,0|2oobo0,52,62,1|319y7z,52,62,1|319y80,50,66,0|3an2bz,50,66,0|3an2c0,52,62,1|3kczjz,52,62,1|3kczk0,50,66,0|3td4zz,50,66,0|3td500,52,62,1|43327z,52,62,1|433280,50,66,0|4cg6bz,50,66,0|4cg6c0,52,62,1|4lt4vz,52,62,1|4lt4w0,50,66,0|4v68zz,50,66,0|4v6900,52,62,1|54j7jz,52,62,1|54j7k0,50,66,0|5dwbnz,50,66,0|5dwbo0,52,62,1|5n9a7z,52,62,1|5n9a80,50,66,0|5wmebz,50,66,0|5wmec0,52,62,1|65zcvz,52,62,1|65zcw0,50,66,0|6fcgzz,50,66,0|6fch00,52,62,1|6p2e7z,52,62,1|6p2e80,50,66,0|6y2jnz,50,66,0|6y2jo0,52,62,1|77sgvz,52,62,1|77sgw0,50,66,0|7h5kzz,50,66,0|7h5l00,52,62,1|7qijjz,52,62,1|7qijk0,50,66,0|7zvnnz,50,66,0|7zvno0,52,62,1|898m7z,52,62,1|898m80,50,66,0|8ilqbz,50,66,0|8ilqc0,52,62,1|8ryovz,52,62,1|8ryow0,50,66,0|908wzz,50,66,0|908x00,52,62,1|9aorjz,52,62,1|9aork0,50,66,0|9iyznz,50,66,0|9iyzo0,52,62,1|9trsvz,52,62,1|9trsw0,50,66,0|a1p2bz,50,66,0|a1p2c0,52,62,1|achvjz,52,62,1|achvk0,50,66,0|akf4zz,50,66,0|akf500,52,62,1|av7y7z,52,62,1|av7y80,50,66,0|b3i6bz,50,66,0|b3i6c0,52,62,1|bdy0vz,52,62,1|bdy0w0,50,66,0|bm88zz,50,66,0|bm8900,52,62,1|bwo3jz,52,62,1|bwo3k0,50,66,0|c4ybnz,50,66,0|c4ybo0,52,62,1|cfr4vz,52,62,1|cfr4w0,50,66,0|cnoebz,50,66,0|cnoec0,52,62,1|cyh7jz,52,62,1|cyh7k0,50,66,0|d6egzz,50,66,0|d6eh00,52,62,1|dh7a7z,52,62,1|dh7a80,50,66,0|dphibz,50,66,0|dphic0,52,62,1|dzxcvz,52,62,1|dzxcw0,50,66,0|e87kzz,50,66,0|e87l00,52,62,1|einfjz,52,62,1|einfk0,50,66,0|eqxnnz,50,66,0|eqxno0,52,62,1|f1di7z,52,62,1|f1di80,50,66,0|f9nqbz,50,66,0|f9nqc0,52,62,1|fkgjjz,52,62,1|fkgjk0,50,66,0|fsdszz,50,66,0|fsdt00,52,62,1|g36m7z,52,62,1|g36m80,50,66,0|gb3vnz,50,66,0|gb3vo0,52,62,1|glwovz,52,62,1|glwow0,50,66,0|gu6wzz,50,66,0|gu6x00,52,62,1|h4mrjz,52,62,1|h4mrk0,50,66,0|hcwznz,50,66,0|hcwzo0,52,62,1|hncu7z,52,62,1|hncu80,50,66,0|hvn2bz,50,66,0|hvn2c0,52,62,1|i6fvjz,52,62,1|i6fvk0,50,66,0|ied4zz,50,66,0|ied500,52,62,1|ip5y7z,52,62,1|ip5y80,50,66,0|ix37nz,50,66,0|ix37o0,52,62,1|j7w0vz,52,62,1|j7w0w0,50,66,0|jeqebz,50,66,0|jeqec0,52,62,1|jqz27z,52,62,1|jqz280,50,66,0|jxggzz,50,66,0|jxgh00,52,62,1|k9p4vz,52,62,1|k9p4w0,50,66,0|kg6jnz,50,66,0|kg6jo0,52,62,1|ksf7jz,52,62,1|ksf7k0,50,66,0|kz9kzz,50,66,0|kz9l00,52,62,1|lbi8vz,52,62,1|lbi8w0,45,62,0|lhzkvz,45,62,0|lhzkw0,46,63,1|lu88rz,46,63,1|lu88s0,45,62,0|m0pnjz,45,62,0|m0pnk0,46,63,1|mcybfz,46,63,1|mcybg0,45,62,0|mjfq7z,45,62,0|mjfq80,46,63,1|mvoe3z,46,63,1|mvoe40,45,62,0|n25svz,45,62,0|n25sw0,46,63,1|neegrz,46,63,1|neegs0,45,62,0|nkvvjz,45,62,0|nkvvk0,46,63,1|nx4jfz,46,63,1|nx4jg0,45,62,0|o3ywvz,45,62,0|o3yww0,46,63,1|og7krz,46,63,1|og7ks0,45,62,0|omozjz,45,62,0|omozk0,46,63,1|oyxnfz,46,63,1|oyxng0,45,62,0|p5f27z,45,62,0|p5f280,46,63,1|phnq3z,46,63,1|phnq40,45,62,0|po54vz,45,62,0|po54w0,46,63,1|q0dsrz,46,63,1|q0dss0,45,62,0|q6v7jz,45,62,0|q6v7k0,46,63,1|qj3vfz,46,63,1|qj3vg0,45,62,0|qpy8vz,45,62,0|qpy8w0,46,63,1|r26wrz,46,63,1|r26ws0,45,62,0|r8objz,45,62,0|r8obk0,46,63,1|rkwzfz,46,63,1|rkwzg0,45,62,0|rree7z,45,62,0|rree80,46,63,1|s3n23z,46,63,1|s3n240,45,62,0|sa4gvz,45,62,0|sa4gw0,46,63,1|smd4rz,46,63,1|smd4s0,45,62,0|ssujjz,45,62,0|ssujk0,46,63,1|t537fz,46,63,1|t537g0,45,62,0|tbkm7z,45,62,0|tbkm80,46,63,1|tnta3z,46,63,1|tnta40,45,62,0|tunnjz,45,62,0|tunnk0,46,63,1|u6wbfz,46,63,1|u6wbg0,45,62,0|uddq7z,45,62,0|uddq80,46,63,1|upme3z,46,63,1|upme40,45,62,0|uw3svz,45,62,0|uw3sw0,46,63,1|v8cgrz,46,63,1|v8cgs0,45,62,0|vetvjz,45,62,0|vetvk0,46,63,1|vr2jfz,46,63,1|vr2jg0,45,62,0|vxjy7z,45,62,0|vxjy80,46,63,1|w9sm3z,46,63,1|w9sm40,45,62,0|wgmzjz,45,62,0|wgmzk0,46,63,1|wsvnfz,46,63,1|wsvng0,45,62,0|wzd27z,45,62,0|wzd280,46,63,1|xblq3z,46,63,1|xblq40,45,62,0|xi34vz,45,62,0|xi34w0,46,63,1|xubsrz,46,63,1|xubss0,45,62,0|y0t7jz,45,62,0|y0t7k0,46,63,1|yd1vfz,46,63,1|yd1vg0,45,62,0|yjja7z,45,62,0|yjja80,46,63,1|yvry3z,46,63,1|yvry40,45,62,0|z29cvz,45,62,0|z29cw0,46,63,1|zei0rz,46,63,1|zei0s0,45,62,0\",\"America/North_Dakota/Center|,0,155,0|-18y0j80,50,66,0|-r0epo1,50,66,0|-r0epo0,52,62,1|-qplwg1,52,62,1|-qplwg0,50,66,0|-qhon01,50,66,0|-qhon00,52,62,1|-q6vts1,52,62,1|-q6vts0,50,66,0|-ek1z01,50,66,0|-ek1z00,58,62,1|-cq2tg1,58,62,1|-cq2tg0,59,62,1|-cnoxs1,59,62,1|-cnoxs0,50,66,0|-1e8kc1,50,66,0|-1e8kc0,52,62,1|-14vls1,52,62,1|-14vls0,50,66,0|-viho1,50,66,0|-viho0,52,62,1|-m5j41,52,62,1|-m5j40,50,66,0|-csf01,50,66,0|-csf00,52,62,1|-3fgg1,52,62,1|-3fgg0,50,66,0|5xnnz,50,66,0|5xno0,52,62,1|fam7z,52,62,1|fam80,50,66,0|onqbz,50,66,0|onqc0,52,62,1|ydnjz,52,62,1|ydnk0,50,66,0|17qrnz,50,66,0|17qro0,52,62,1|1h3q7z,52,62,1|1h3q80,50,66,0|1qgubz,50,66,0|1qguc0,52,62,1|1ztsvz,52,62,1|1ztsw0,50,66,0|23fibz,50,66,0|23fic0,52,62,1|2ijvjz,52,62,1|2ijvk0,50,66,0|2oobnz,50,66,0|2oobo0,52,62,1|319y7z,52,62,1|319y80,50,66,0|3an2bz,50,66,0|3an2c0,52,62,1|3kczjz,52,62,1|3kczk0,50,66,0|3td4zz,50,66,0|3td500,52,62,1|43327z,52,62,1|433280,50,66,0|4cg6bz,50,66,0|4cg6c0,52,62,1|4lt4vz,52,62,1|4lt4w0,50,66,0|4v68zz,50,66,0|4v6900,52,62,1|54j7jz,52,62,1|54j7k0,50,66,0|5dwbnz,50,66,0|5dwbo0,52,62,1|5n9a7z,52,62,1|5n9a80,50,66,0|5wmebz,50,66,0|5wmec0,52,62,1|65zcvz,52,62,1|65zcw0,50,66,0|6fcgzz,50,66,0|6fch00,52,62,1|6p2e7z,52,62,1|6p2e80,50,66,0|6y2jnz,50,66,0|6y2jo0,52,62,1|77sgvz,52,62,1|77sgw0,50,66,0|7h5kzz,50,66,0|7h5l00,52,62,1|7qijjz,52,62,1|7qijk0,50,66,0|7zvnnz,50,66,0|7zvno0,52,62,1|898m7z,52,62,1|898m80,50,66,0|8ilqbz,50,66,0|8ilqc0,52,62,1|8ryovz,52,62,1|8ryow0,50,66,0|908wzz,50,66,0|908x00,52,62,1|9aorjz,52,62,1|9aork0,50,66,0|9iyznz,50,66,0|9iyzo0,52,62,1|9trsvz,52,62,1|9trsw0,50,66,0|a1p2bz,50,66,0|a1p2c0,52,62,1|achvjz,52,62,1|achvk0,50,66,0|akf4zz,50,66,0|akf500,52,62,1|av7y7z,52,62,1|av7y80,50,66,0|b3i6bz,50,66,0|b3i6c0,52,62,1|bdy0vz,52,62,1|bdy0w0,50,66,0|bm88zz,50,66,0|bm8900,52,62,1|bwo3jz,52,62,1|bwo3k0,45,62,0|c4y8vz,45,62,0|c4y8w0,46,63,1|cfr23z,46,63,1|cfr240,45,62,0|cnobjz,45,62,0|cnobk0,46,63,1|cyh4rz,46,63,1|cyh4s0,45,62,0|d6ee7z,45,62,0|d6ee80,46,63,1|dh77fz,46,63,1|dh77g0,45,62,0|dphfjz,45,62,0|dphfk0,46,63,1|dzxa3z,46,63,1|dzxa40,45,62,0|e87i7z,45,62,0|e87i80,46,63,1|eincrz,46,63,1|eincs0,45,62,0|eqxkvz,45,62,0|eqxkw0,46,63,1|f1dffz,46,63,1|f1dfg0,45,62,0|f9nnjz,45,62,0|f9nnk0,46,63,1|fkggrz,46,63,1|fkggs0,45,62,0|fsdq7z,45,62,0|fsdq80,46,63,1|g36jfz,46,63,1|g36jg0,45,62,0|gb3svz,45,62,0|gb3sw0,46,63,1|glwm3z,46,63,1|glwm40,45,62,0|gu6u7z,45,62,0|gu6u80,46,63,1|h4morz,46,63,1|h4mos0,45,62,0|hcwwvz,45,62,0|hcwww0,46,63,1|hncrfz,46,63,1|hncrg0,45,62,0|hvmzjz,45,62,0|hvmzk0,46,63,1|i6fsrz,46,63,1|i6fss0,45,62,0|ied27z,45,62,0|ied280,46,63,1|ip5vfz,46,63,1|ip5vg0,45,62,0|ix34vz,45,62,0|ix34w0,46,63,1|j7vy3z,46,63,1|j7vy40,45,62,0|jeqbjz,45,62,0|jeqbk0,46,63,1|jqyzfz,46,63,1|jqyzg0,45,62,0|jxge7z,45,62,0|jxge80,46,63,1|k9p23z,46,63,1|k9p240,45,62,0|kg6gvz,45,62,0|kg6gw0,46,63,1|ksf4rz,46,63,1|ksf4s0,45,62,0|kz9i7z,45,62,0|kz9i80,46,63,1|lbi63z,46,63,1|lbi640,45,62,0|lhzkvz,45,62,0|lhzkw0,46,63,1|lu88rz,46,63,1|lu88s0,45,62,0|m0pnjz,45,62,0|m0pnk0,46,63,1|mcybfz,46,63,1|mcybg0,45,62,0|mjfq7z,45,62,0|mjfq80,46,63,1|mvoe3z,46,63,1|mvoe40,45,62,0|n25svz,45,62,0|n25sw0,46,63,1|neegrz,46,63,1|neegs0,45,62,0|nkvvjz,45,62,0|nkvvk0,46,63,1|nx4jfz,46,63,1|nx4jg0,45,62,0|o3ywvz,45,62,0|o3yww0,46,63,1|og7krz,46,63,1|og7ks0,45,62,0|omozjz,45,62,0|omozk0,46,63,1|oyxnfz,46,63,1|oyxng0,45,62,0|p5f27z,45,62,0|p5f280,46,63,1|phnq3z,46,63,1|phnq40,45,62,0|po54vz,45,62,0|po54w0,46,63,1|q0dsrz,46,63,1|q0dss0,45,62,0|q6v7jz,45,62,0|q6v7k0,46,63,1|qj3vfz,46,63,1|qj3vg0,45,62,0|qpy8vz,45,62,0|qpy8w0,46,63,1|r26wrz,46,63,1|r26ws0,45,62,0|r8objz,45,62,0|r8obk0,46,63,1|rkwzfz,46,63,1|rkwzg0,45,62,0|rree7z,45,62,0|rree80,46,63,1|s3n23z,46,63,1|s3n240,45,62,0|sa4gvz,45,62,0|sa4gw0,46,63,1|smd4rz,46,63,1|smd4s0,45,62,0|ssujjz,45,62,0|ssujk0,46,63,1|t537fz,46,63,1|t537g0,45,62,0|tbkm7z,45,62,0|tbkm80,46,63,1|tnta3z,46,63,1|tnta40,45,62,0|tunnjz,45,62,0|tunnk0,46,63,1|u6wbfz,46,63,1|u6wbg0,45,62,0|uddq7z,45,62,0|uddq80,46,63,1|upme3z,46,63,1|upme40,45,62,0|uw3svz,45,62,0|uw3sw0,46,63,1|v8cgrz,46,63,1|v8cgs0,45,62,0|vetvjz,45,62,0|vetvk0,46,63,1|vr2jfz,46,63,1|vr2jg0,45,62,0|vxjy7z,45,62,0|vxjy80,46,63,1|w9sm3z,46,63,1|w9sm40,45,62,0|wgmzjz,45,62,0|wgmzk0,46,63,1|wsvnfz,46,63,1|wsvng0,45,62,0|wzd27z,45,62,0|wzd280,46,63,1|xblq3z,46,63,1|xblq40,45,62,0|xi34vz,45,62,0|xi34w0,46,63,1|xubsrz,46,63,1|xubss0,45,62,0|y0t7jz,45,62,0|y0t7k0,46,63,1|yd1vfz,46,63,1|yd1vg0,45,62,0|yjja7z,45,62,0|yjja80,46,63,1|yvry3z,46,63,1|yvry40,45,62,0|z29cvz,45,62,0|z29cw0,46,63,1|zei0rz,46,63,1|zei0s0,45,62,0\",\"America/North_Dakota/New_Salem|,0,156,0|-18y0j80,50,66,0|-r0epo1,50,66,0|-r0epo0,52,62,1|-qplwg1,52,62,1|-qplwg0,50,66,0|-qhon01,50,66,0|-qhon00,52,62,1|-q6vts1,52,62,1|-q6vts0,50,66,0|-ek1z01,50,66,0|-ek1z00,58,62,1|-cq2tg1,58,62,1|-cq2tg0,59,62,1|-cnoxs1,59,62,1|-cnoxs0,50,66,0|-1e8kc1,50,66,0|-1e8kc0,52,62,1|-14vls1,52,62,1|-14vls0,50,66,0|-viho1,50,66,0|-viho0,52,62,1|-m5j41,52,62,1|-m5j40,50,66,0|-csf01,50,66,0|-csf00,52,62,1|-3fgg1,52,62,1|-3fgg0,50,66,0|5xnnz,50,66,0|5xno0,52,62,1|fam7z,52,62,1|fam80,50,66,0|onqbz,50,66,0|onqc0,52,62,1|ydnjz,52,62,1|ydnk0,50,66,0|17qrnz,50,66,0|17qro0,52,62,1|1h3q7z,52,62,1|1h3q80,50,66,0|1qgubz,50,66,0|1qguc0,52,62,1|1ztsvz,52,62,1|1ztsw0,50,66,0|23fibz,50,66,0|23fic0,52,62,1|2ijvjz,52,62,1|2ijvk0,50,66,0|2oobnz,50,66,0|2oobo0,52,62,1|319y7z,52,62,1|319y80,50,66,0|3an2bz,50,66,0|3an2c0,52,62,1|3kczjz,52,62,1|3kczk0,50,66,0|3td4zz,50,66,0|3td500,52,62,1|43327z,52,62,1|433280,50,66,0|4cg6bz,50,66,0|4cg6c0,52,62,1|4lt4vz,52,62,1|4lt4w0,50,66,0|4v68zz,50,66,0|4v6900,52,62,1|54j7jz,52,62,1|54j7k0,50,66,0|5dwbnz,50,66,0|5dwbo0,52,62,1|5n9a7z,52,62,1|5n9a80,50,66,0|5wmebz,50,66,0|5wmec0,52,62,1|65zcvz,52,62,1|65zcw0,50,66,0|6fcgzz,50,66,0|6fch00,52,62,1|6p2e7z,52,62,1|6p2e80,50,66,0|6y2jnz,50,66,0|6y2jo0,52,62,1|77sgvz,52,62,1|77sgw0,50,66,0|7h5kzz,50,66,0|7h5l00,52,62,1|7qijjz,52,62,1|7qijk0,50,66,0|7zvnnz,50,66,0|7zvno0,52,62,1|898m7z,52,62,1|898m80,50,66,0|8ilqbz,50,66,0|8ilqc0,52,62,1|8ryovz,52,62,1|8ryow0,50,66,0|908wzz,50,66,0|908x00,52,62,1|9aorjz,52,62,1|9aork0,50,66,0|9iyznz,50,66,0|9iyzo0,52,62,1|9trsvz,52,62,1|9trsw0,50,66,0|a1p2bz,50,66,0|a1p2c0,52,62,1|achvjz,52,62,1|achvk0,50,66,0|akf4zz,50,66,0|akf500,52,62,1|av7y7z,52,62,1|av7y80,50,66,0|b3i6bz,50,66,0|b3i6c0,52,62,1|bdy0vz,52,62,1|bdy0w0,50,66,0|bm88zz,50,66,0|bm8900,52,62,1|bwo3jz,52,62,1|bwo3k0,50,66,0|c4ybnz,50,66,0|c4ybo0,52,62,1|cfr4vz,52,62,1|cfr4w0,50,66,0|cnoebz,50,66,0|cnoec0,52,62,1|cyh7jz,52,62,1|cyh7k0,50,66,0|d6egzz,50,66,0|d6eh00,52,62,1|dh7a7z,52,62,1|dh7a80,50,66,0|dphibz,50,66,0|dphic0,52,62,1|dzxcvz,52,62,1|dzxcw0,50,66,0|e87kzz,50,66,0|e87l00,52,62,1|einfjz,52,62,1|einfk0,50,66,0|eqxnnz,50,66,0|eqxno0,52,62,1|f1di7z,52,62,1|f1di80,50,66,0|f9nqbz,50,66,0|f9nqc0,52,62,1|fkgjjz,52,62,1|fkgjk0,50,66,0|fsdszz,50,66,0|fsdt00,52,62,1|g36m7z,52,62,1|g36m80,50,66,0|gb3vnz,50,66,0|gb3vo0,52,62,1|glwovz,52,62,1|glwow0,50,66,0|gu6wzz,50,66,0|gu6x00,52,62,1|h4mrjz,52,62,1|h4mrk0,50,66,0|hcwznz,50,66,0|hcwzo0,52,62,1|hncu7z,52,62,1|hncu80,45,62,0|hvmzjz,45,62,0|hvmzk0,46,63,1|i6fsrz,46,63,1|i6fss0,45,62,0|ied27z,45,62,0|ied280,46,63,1|ip5vfz,46,63,1|ip5vg0,45,62,0|ix34vz,45,62,0|ix34w0,46,63,1|j7vy3z,46,63,1|j7vy40,45,62,0|jeqbjz,45,62,0|jeqbk0,46,63,1|jqyzfz,46,63,1|jqyzg0,45,62,0|jxge7z,45,62,0|jxge80,46,63,1|k9p23z,46,63,1|k9p240,45,62,0|kg6gvz,45,62,0|kg6gw0,46,63,1|ksf4rz,46,63,1|ksf4s0,45,62,0|kz9i7z,45,62,0|kz9i80,46,63,1|lbi63z,46,63,1|lbi640,45,62,0|lhzkvz,45,62,0|lhzkw0,46,63,1|lu88rz,46,63,1|lu88s0,45,62,0|m0pnjz,45,62,0|m0pnk0,46,63,1|mcybfz,46,63,1|mcybg0,45,62,0|mjfq7z,45,62,0|mjfq80,46,63,1|mvoe3z,46,63,1|mvoe40,45,62,0|n25svz,45,62,0|n25sw0,46,63,1|neegrz,46,63,1|neegs0,45,62,0|nkvvjz,45,62,0|nkvvk0,46,63,1|nx4jfz,46,63,1|nx4jg0,45,62,0|o3ywvz,45,62,0|o3yww0,46,63,1|og7krz,46,63,1|og7ks0,45,62,0|omozjz,45,62,0|omozk0,46,63,1|oyxnfz,46,63,1|oyxng0,45,62,0|p5f27z,45,62,0|p5f280,46,63,1|phnq3z,46,63,1|phnq40,45,62,0|po54vz,45,62,0|po54w0,46,63,1|q0dsrz,46,63,1|q0dss0,45,62,0|q6v7jz,45,62,0|q6v7k0,46,63,1|qj3vfz,46,63,1|qj3vg0,45,62,0|qpy8vz,45,62,0|qpy8w0,46,63,1|r26wrz,46,63,1|r26ws0,45,62,0|r8objz,45,62,0|r8obk0,46,63,1|rkwzfz,46,63,1|rkwzg0,45,62,0|rree7z,45,62,0|rree80,46,63,1|s3n23z,46,63,1|s3n240,45,62,0|sa4gvz,45,62,0|sa4gw0,46,63,1|smd4rz,46,63,1|smd4s0,45,62,0|ssujjz,45,62,0|ssujk0,46,63,1|t537fz,46,63,1|t537g0,45,62,0|tbkm7z,45,62,0|tbkm80,46,63,1|tnta3z,46,63,1|tnta40,45,62,0|tunnjz,45,62,0|tunnk0,46,63,1|u6wbfz,46,63,1|u6wbg0,45,62,0|uddq7z,45,62,0|uddq80,46,63,1|upme3z,46,63,1|upme40,45,62,0|uw3svz,45,62,0|uw3sw0,46,63,1|v8cgrz,46,63,1|v8cgs0,45,62,0|vetvjz,45,62,0|vetvk0,46,63,1|vr2jfz,46,63,1|vr2jg0,45,62,0|vxjy7z,45,62,0|vxjy80,46,63,1|w9sm3z,46,63,1|w9sm40,45,62,0|wgmzjz,45,62,0|wgmzk0,46,63,1|wsvnfz,46,63,1|wsvng0,45,62,0|wzd27z,45,62,0|wzd280,46,63,1|xblq3z,46,63,1|xblq40,45,62,0|xi34vz,45,62,0|xi34w0,46,63,1|xubsrz,46,63,1|xubss0,45,62,0|y0t7jz,45,62,0|y0t7k0,46,63,1|yd1vfz,46,63,1|yd1vg0,45,62,0|yjja7z,45,62,0|yjja80,46,63,1|yvry3z,46,63,1|yvry40,45,62,0|z29cvz,45,62,0|z29cw0,46,63,1|zei0rz,46,63,1|zei0s0,45,62,0\",\"America/Nuuk|,0,157,0|-rvumf4,39,44,0|5ct4jz,39,44,0|5ct4k0,40,45,1|5lsw3z,40,45,1|5lsw40,39,44,0|5v5xfz,39,44,0|5v5xg0,40,45,1|64iyrz,40,45,1|64iys0,39,44,0|6dw03z,39,44,0|6dw040,40,45,1|6n91fz,40,45,1|6n91g0,39,44,0|6wm2rz,39,44,0|6wm2s0,40,45,1|75z43z,40,45,1|75z440,39,44,0|7fc5fz,39,44,0|7fc5g0,40,45,1|7p25fz,40,45,1|7p25g0,39,44,0|7yf6rz,39,44,0|7yf6s0,40,45,1|87s83z,40,45,1|87s840,39,44,0|8h59fz,39,44,0|8h59g0,40,45,1|8qiarz,40,45,1|8qias0,39,44,0|8zvc3z,39,44,0|8zvc40,40,45,1|998dfz,40,45,1|998dg0,39,44,0|9ilerz,39,44,0|9iles0,40,45,1|9ryg3z,40,45,1|9ryg40,39,44,0|a1bhfz,39,44,0|a1bhg0,40,45,1|aaoirz,40,45,1|aaois0,39,44,0|ak1k3z,39,44,0|ak1k40,40,45,1|atrk3z,40,45,1|atrk40,39,44,0|b34lfz,39,44,0|b34lg0,40,45,1|bchmrz,40,45,1|bchms0,39,44,0|bluo3z,39,44,0|bluo40,40,45,1|bv7pfz,40,45,1|bv7pg0,39,44,0|c4kqrz,39,44,0|c4kqs0,40,45,1|cdxs3z,40,45,1|cdxs40,39,44,0|cnatfz,39,44,0|cnatg0,40,45,1|cwnurz,40,45,1|cwnus0,39,44,0|d60w3z,39,44,0|d60w40,40,45,1|dfdxfz,40,45,1|dfdxg0,39,44,0|dp3xfz,39,44,0|dp3xg0,40,45,1|dzwtfz,40,45,1|dzwtg0,39,44,0|e7u03z,39,44,0|e7u040,40,45,1|eimw3z,40,45,1|eimw40,39,44,0|eqk2rz,39,44,0|eqk2s0,40,45,1|f1cyrz,40,45,1|f1cys0,39,44,0|f9a5fz,39,44,0|f9a5g0,40,45,1|fkg03z,40,45,1|fkg040,39,44,0|fs083z,39,44,0|fs0840,40,45,1|g362rz,40,45,1|g362s0,39,44,0|gaqarz,39,44,0|gaqas0,40,45,1|glw5fz,40,45,1|glw5g0,39,44,0|gttc3z,39,44,0|gttc40,40,45,1|h4m83z,40,45,1|h4m840,39,44,0|hcjerz,39,44,0|hcjes0,40,45,1|hncarz,40,45,1|hncas0,39,44,0|hv9hfz,39,44,0|hv9hg0,40,45,1|i6fc3z,40,45,1|i6fc40,39,44,0|idzk3z,39,44,0|idzk40,40,45,1|ip5erz,40,45,1|ip5es0,39,44,0|iwpmrz,39,44,0|iwpms0,40,45,1|j7vhfz,40,45,1|j7vhg0,39,44,0|jffpfz,39,44,0|jffpg0,40,45,1|jqlk3z,40,45,1|jqlk40,39,44,0|jyiqrz,39,44,0|jyiqs0,40,45,1|k9bmrz,40,45,1|k9bms0,39,44,0|kh8tfz,39,44,0|kh8tg0,40,45,1|ks1pfz,40,45,1|ks1pg0,39,44,0|kzyw3z,39,44,0|kzyw40,40,45,1|lb4qrz,40,45,1|lb4qs0,39,44,0|lioyrz,39,44,0|lioys0,40,45,1|ltutfz,40,45,1|ltutg0,39,44,0|m1f1fz,39,44,0|m1f1g0,40,45,1|mckw3z,40,45,1|mckw40,39,44,0|mki2rz,39,44,0|mki2s0,40,45,1|mvayrz,40,45,1|mvays0,39,44,0|n385fz,39,44,0|n385g0,40,45,1|ne11fz,40,45,1|ne11g0,39,44,0|nly83z,39,44,0|nly840,40,45,1|nwr43z,40,45,1|nwr440,39,44,0|o4oarz,39,44,0|o4oas0,40,45,1|ofu5fz,40,45,1|ofu5g0,39,44,0|onedfz,39,44,0|onedg0,40,45,1|oyk83z,40,45,1|oyk840,39,44,0|p64g3z,39,44,0|p64g40,40,45,1|phaarz,40,45,1|phaas0,39,44,0|pp7hfz,39,44,0|pp7hg0,40,45,1|q00dfz,40,45,1|q00dg0,39,44,0|q7xk3z,39,44,0|q7xk40,40,45,1|qiqg3z,40,45,1|qiqg40,39,44,0|qqnmrz,39,44,0|qqnms0,40,45,1|r1thfz,40,45,1|r1thg0,39,44,0|r9dpfz,39,44,0|r9dpg0,40,45,1|rkjk3z,40,45,1|rkjk40,39,44,0|rs3s3z,39,44,0|rs3s40,40,45,1|s39mrz,40,45,1|s39ms0,39,44,0|sb6tfz,39,44,0|sb6tg0,40,45,1|slzpfz,40,45,1|slzpg0,39,44,0|stww3z,39,44,0|stww40,40,45,1|t4ps3z,40,45,1|t4ps40,39,44,0|tcmyrz,39,44,0|tcmys0,40,45,1|tnfurz,40,45,1|tnfus0,39,44,0|tvd1fz,39,44,0|tvd1g0,40,45,1|u6iw3z,40,45,1|u6iw40,39,44,0|ue343z,39,44,0|ue3440,40,45,1|up8yrz,40,45,1|up8ys0,39,44,0|uwt6rz,39,44,0|uwt6s0,40,45,1|v7z1fz,40,45,1|v7z1g0,39,44,0|vfw83z,39,44,0|vfw840,40,45,1|vqp43z,40,45,1|vqp440,39,44,0|vymarz,39,44,0|vymas0,40,45,1|w9f6rz,40,45,1|w9f6s0,39,44,0|whcdfz,39,44,0|whcdg0,40,45,1|wsi83z,40,45,1|wsi840,39,44,0|x02g3z,39,44,0|x02g40,40,45,1|xb8arz,40,45,1|xb8as0,39,44,0|xisirz,39,44,0|xisis0,40,45,1|xtydfz,40,45,1|xtydg0,39,44,0|y1ilfz,39,44,0|y1ilg0,40,45,1|ycog3z,40,45,1|ycog40,39,44,0|yklmrz,39,44,0|yklms0,40,45,1|yveirz,40,45,1|yveis0,39,44,0|z3bpfz,39,44,0|z3bpg0,40,45,1|ze4lfz,40,45,1|ze4lg0,39,44,0\",\"America/Ojinaga|,0,158,0|-p1u4k0,50,66,0|-m7mko1,50,66,0|-m7mko0,45,62,0|-kf67c1,45,62,0|-kf67c0,50,66,0|-k6j3c1,50,66,0|-k6j3c0,45,62,0|-jypm01,45,62,0|-jypm00,50,66,0|-jpan81,50,66,0|-jpan80,45,62,0|dphfjz,45,62,0|dphfk0,46,63,1|dzxa3z,46,63,1|dzxa40,45,62,0|e87i7z,45,62,0|e87i80,46,63,1|eincrz,46,63,1|eincs0,45,62,0|eqxnnz,45,62,0|eqxno0,52,62,1|f1di7z,52,62,1|f1di80,50,66,0|f9nqbz,50,66,0|f9nqc0,52,62,1|fkgjjz,52,62,1|fkgjk0,50,66,0|fsdszz,50,66,0|fsdt00,52,62,1|g36m7z,52,62,1|g36m80,50,66,0|gcwozz,50,66,0|gcwp00,52,62,1|gkgu7z,52,62,1|gkgu80,50,66,0|gu6wzz,50,66,0|gu6x00,52,62,1|h4mrjz,52,62,1|h4mrk0,50,66,0|hcwznz,50,66,0|hcwzo0,52,62,1|hncu7z,52,62,1|hncu80,50,66,0|hvn2bz,50,66,0|hvn2c0,52,62,1|i6fvjz,52,62,1|i6fvk0,50,66,0|ied4zz,50,66,0|ied500,52,62,1|ip5y7z,52,62,1|ip5y80,50,66,0|ix37nz,50,66,0|ix37o0,52,62,1|j7w0vz,52,62,1|j7w0w0,50,66,0|jftabz,50,66,0|jftac0,52,62,1|jqm3jz,52,62,1|jqm3k0,50,66,0|jywbnz,50,66,0|jywbo0,52,62,1|k9c67z,52,62,1|k9c680,50,66,0|khmebz,50,66,0|khmec0,52,62,1|ks28vz,52,62,1|ks28w0,50,66,0|kz9kzz,50,66,0|kz9l00,52,62,1|lbi8vz,52,62,1|lbi8w0,50,66,0|lhznnz,50,66,0|lhzno0,52,62,1|lu8bjz,52,62,1|lu8bk0,50,66,0|m0pqbz,50,66,0|m0pqc0,52,62,1|mcye7z,52,62,1|mcye80,50,66,0|mjfszz,50,66,0|mjft00,52,62,1|mvogvz,52,62,1|mvogw0,50,66,0|n25vnz,50,66,0|n25vo0,52,62,1|neejjz,52,62,1|neejk0,50,66,0|nkvybz,50,66,0|nkvyc0,52,62,1|nx4m7z,52,62,1|nx4m80,50,66,0|o3yznz,50,66,0|o3yzo0,52,62,1|og7njz,52,62,1|og7nk0,50,66,0|omp2bz,50,66,0|omp2c0,52,62,1|oyxq7z,52,62,1|oyxq80,50,66,0|p5f4zz,50,66,0|p5f500,52,62,1|phnsvz,52,62,1|phnsw0,50,66,0|po57nz,50,66,0|po57o0,52,62,1|q0dvjz,52,62,1|q0dvk0,50,66,0|q6vabz,50,66,0|q6vac0,52,62,1|qj3y7z,52,62,1|qj3y80,50,66,0|qpybnz,50,66,0|qpybo0,52,62,1|r26zjz,52,62,1|r26zk0,50,66,0|r8oebz,50,66,0|r8oec0,52,62,1|rkx27z,52,62,1|rkx280,50,66,0|rregzz,50,66,0|rreh00,52,62,1|s3n4vz,52,62,1|s3n4w0,50,66,0|sa4jnz,50,66,0|sa4jo0,52,62,1|smd7jz,52,62,1|smd7k0,50,66,0|ssumbz,50,66,0|ssumc0,52,62,1|t53a7z,52,62,1|t53a80,50,66,0|tbkozz,50,66,0|tbkp00,52,62,1|tntcvz,52,62,1|tntcw0,50,66,0|tunqbz,50,66,0|tunqc0,52,62,1|u6we7z,52,62,1|u6we80,50,66,0|uddszz,50,66,0|uddt00,52,62,1|upmgvz,52,62,1|upmgw0,50,66,0|uw3vnz,50,66,0|uw3vo0,52,62,1|v8cjjz,52,62,1|v8cjk0,50,66,0|vetybz,50,66,0|vetyc0,52,62,1|vr2m7z,52,62,1|vr2m80,50,66,0|vxk0zz,50,66,0|vxk100,52,62,1|w9sovz,52,62,1|w9sow0,50,66,0|wgn2bz,50,66,0|wgn2c0,52,62,1|wsvq7z,52,62,1|wsvq80,50,66,0|wzd4zz,50,66,0|wzd500,52,62,1|xblsvz,52,62,1|xblsw0,50,66,0|xi37nz,50,66,0|xi37o0,52,62,1|xubvjz,52,62,1|xubvk0,50,66,0|y0tabz,50,66,0|y0tac0,52,62,1|yd1y7z,52,62,1|yd1y80,50,66,0|yjjczz,50,66,0|yjjd00,52,62,1|yvs0vz,52,62,1|yvs0w0,50,66,0|z29fnz,50,66,0|z29fo0,52,62,1|zei3jz,52,62,1|zei3k0,50,66,0\",\"America/Panama|,0,80,0|-15r0uls,41,81,0|-w757vd,41,81,0|-w757vc,49,63,0\",\"America/Pangnirtung|,60,1,0|-pkmlc0,32,42,0|-ek27c1,32,42,0|-ek27c0,33,44,1|-cq2tg1,33,44,1|-cq2tg0,34,44,1|-cnp641,34,44,1|-cnp640,32,42,0|-2g2281,32,42,0|-2g2280,73,45,1|-26c281,73,45,1|-26c280,32,42,0|5dw3bz,32,42,0|5dw3c0,54,44,1|5n91vz,54,44,1|5n91w0,32,42,0|5wm5zz,32,42,0|5wm600,54,44,1|65z4jz,54,44,1|65z4k0,32,42,0|6fc8nz,32,42,0|6fc8o0,54,44,1|6p25vz,54,44,1|6p25w0,32,42,0|6y2bbz,32,42,0|6y2bc0,54,44,1|77s8jz,54,44,1|77s8k0,32,42,0|7h5cnz,32,42,0|7h5co0,54,44,1|7qib7z,54,44,1|7qib80,32,42,0|7zvfbz,32,42,0|7zvfc0,54,44,1|898dvz,54,44,1|898dw0,32,42,0|8ilhzz,32,42,0|8ili00,54,44,1|8rygjz,54,44,1|8rygk0,32,42,0|908onz,32,42,0|908oo0,54,44,1|9aoj7z,54,44,1|9aoj80,32,42,0|9iyrbz,32,42,0|9iyrc0,54,44,1|9trkjz,54,44,1|9trkk0,32,42,0|a1otzz,32,42,0|a1ou00,54,44,1|achn7z,54,44,1|achn80,32,42,0|akewnz,32,42,0|akewo0,54,44,1|av7pvz,54,44,1|av7pw0,32,42,0|b3hxzz,32,42,0|b3hy00,54,44,1|bdxsjz,54,44,1|bdxsk0,32,42,0|bm80nz,32,42,0|bm80o0,54,44,1|bwnv7z,54,44,1|bwnv80,32,42,0|c4y3bz,32,42,0|c4y3c0,54,44,1|cfqwjz,54,44,1|cfqwk0,32,42,0|cno5zz,32,42,0|cno600,54,44,1|cygz7z,54,44,1|cygz80,32,42,0|d6e8nz,32,42,0|d6e8o0,62,42,1|dh74nz,62,42,1|dh74o0,49,63,0|dphcrz,49,63,0|dphcs0,62,42,1|dzx7bz,62,42,1|dzx7c0,49,63,0|e87ffz,49,63,0|e87fg0,62,42,1|ein9zz,62,42,1|eina00,49,63,0|eqxi3z,49,63,0|eqxi40,62,42,1|f1dcnz,62,42,1|f1dco0,49,63,0|f9nkrz,49,63,0|f9nks0,62,42,1|fkgdzz,62,42,1|fkge00,45,62,0|fsdq7z,45,62,0|fsdq80,46,63,1|g36jfz,46,63,1|g36jg0,49,63,0|gb3q3z,49,63,0|gb3q40,62,42,1|glwjbz,62,42,1|glwjc0,49,63,0|gu6rfz,49,63,0|gu6rg0,62,42,1|h4mlzz,62,42,1|h4mm00,49,63,0|hcwu3z,49,63,0|hcwu40,62,42,1|hnconz,62,42,1|hncoo0,49,63,0|hvmwrz,49,63,0|hvmws0,62,42,1|i6fpzz,62,42,1|i6fq00,49,63,0|ieczfz,49,63,0|ieczg0,62,42,1|ip5snz,62,42,1|ip5so0,49,63,0|ix323z,49,63,0|ix3240,62,42,1|j7vvbz,62,42,1|j7vvc0,49,63,0|jeq8rz,49,63,0|jeq8s0,62,42,1|jqywnz,62,42,1|jqywo0,49,63,0|jxgbfz,49,63,0|jxgbg0,62,42,1|k9ozbz,62,42,1|k9ozc0,49,63,0|kg6e3z,49,63,0|kg6e40,62,42,1|ksf1zz,62,42,1|ksf200,49,63,0|kz9ffz,49,63,0|kz9fg0,62,42,1|lbi3bz,62,42,1|lbi3c0,49,63,0|lhzi3z,49,63,0|lhzi40,62,42,1|lu85zz,62,42,1|lu8600,49,63,0|m0pkrz,49,63,0|m0pks0,62,42,1|mcy8nz,62,42,1|mcy8o0,49,63,0|mjfnfz,49,63,0|mjfng0,62,42,1|mvobbz,62,42,1|mvobc0,49,63,0|n25q3z,49,63,0|n25q40,62,42,1|needzz,62,42,1|neee00,49,63,0|nkvsrz,49,63,0|nkvss0,62,42,1|nx4gnz,62,42,1|nx4go0,49,63,0|o3yu3z,49,63,0|o3yu40,62,42,1|og7hzz,62,42,1|og7i00,49,63,0|omowrz,49,63,0|omows0,62,42,1|oyxknz,62,42,1|oyxko0,49,63,0|p5ezfz,49,63,0|p5ezg0,62,42,1|phnnbz,62,42,1|phnnc0,49,63,0|po523z,49,63,0|po5240,62,42,1|q0dpzz,62,42,1|q0dq00,49,63,0|q6v4rz,49,63,0|q6v4s0,62,42,1|qj3snz,62,42,1|qj3so0,49,63,0|qpy63z,49,63,0|qpy640,62,42,1|r26tzz,62,42,1|r26u00,49,63,0|r8o8rz,49,63,0|r8o8s0,62,42,1|rkwwnz,62,42,1|rkwwo0,49,63,0|rrebfz,49,63,0|rrebg0,62,42,1|s3mzbz,62,42,1|s3mzc0,49,63,0|sa4e3z,49,63,0|sa4e40,62,42,1|smd1zz,62,42,1|smd200,49,63,0|ssugrz,49,63,0|ssugs0,62,42,1|t534nz,62,42,1|t534o0,49,63,0|tbkjfz,49,63,0|tbkjg0,62,42,1|tnt7bz,62,42,1|tnt7c0,49,63,0|tunkrz,49,63,0|tunks0,62,42,1|u6w8nz,62,42,1|u6w8o0,49,63,0|uddnfz,49,63,0|uddng0,62,42,1|upmbbz,62,42,1|upmbc0,49,63,0|uw3q3z,49,63,0|uw3q40,62,42,1|v8cdzz,62,42,1|v8ce00,49,63,0|vetsrz,49,63,0|vetss0,62,42,1|vr2gnz,62,42,1|vr2go0,49,63,0|vxjvfz,49,63,0|vxjvg0,62,42,1|w9sjbz,62,42,1|w9sjc0,49,63,0|wgmwrz,49,63,0|wgmws0,62,42,1|wsvknz,62,42,1|wsvko0,49,63,0|wzczfz,49,63,0|wzczg0,62,42,1|xblnbz,62,42,1|xblnc0,49,63,0|xi323z,49,63,0|xi3240,62,42,1|xubpzz,62,42,1|xubq00,49,63,0|y0t4rz,49,63,0|y0t4s0,62,42,1|yd1snz,62,42,1|yd1so0,49,63,0|yjj7fz,49,63,0|yjj7g0,62,42,1|yvrvbz,62,42,1|yvrvc0,49,63,0|z29a3z,49,63,0|z29a40,62,42,1|zehxzz,62,42,1|zehy00,49,63,0\",\"America/Paramaribo|,0,159,0|-usj4g8,7,160,0|-i9lsfx,7,160,0|-i9lsfw,7,161,0|-cnnf4d,7,161,0|-cnnf4c,81,101,0|7p471z,81,101,0|7p4720,39,44,0\",\"America/Phoenix|,0,162,0|-18y0j80,50,66,0|-r0epo1,50,66,0|-r0epo0,52,62,1|-qplwg1,52,62,1|-qplwg0,50,66,0|-qhon01,50,66,0|-qhon00,52,62,1|-q6vts1,52,62,1|-q6vts0,50,66,0|-ek1z01,50,66,0|-ek1z00,58,62,1|-dkikmd,58,62,1|-dkikmc,50,66,0|-dftz6d,50,66,0|-dftz6c,58,62,1|-d6f5yd,58,62,1|-d6f5yc,50,66,0|-1e8kc1,50,66,0|-1e8kc0,52,62,1|-14vls1,52,62,1|-14vls0,50,66,0\",\"America/Port-au-Prince|,0,163,0|-15r0vxs,84,164,0|-rmk9ad,84,164,0|-rmk9ac,49,63,0|6ys5vz,49,63,0|6ys5w0,62,42,1|77s5rz,62,42,1|77s5s0,49,63,0|7h59vz,49,63,0|7h59w0,62,42,1|7qi8fz,62,42,1|7qi8g0,49,63,0|7zvcjz,49,63,0|7zvck0,62,42,1|898b3z,62,42,1|898b40,49,63,0|8ilf7z,49,63,0|8ilf80,62,42,1|8rydrz,62,42,1|8ryds0,49,63,0|91bhvz,49,63,0|91bhw0,62,42,1|9aogfz,62,42,1|9aogg0,49,63,0|9iyrbz,49,63,0|9iyrc0,62,42,1|9trnbz,62,42,1|9trnc0,49,63,0|a1otzz,49,63,0|a1ou00,62,42,1|achpzz,62,42,1|achq00,49,63,0|akewnz,49,63,0|akewo0,62,42,1|av7snz,62,42,1|av7so0,49,63,0|b3hxzz,49,63,0|b3hy00,62,42,1|bdxvbz,62,42,1|bdxvc0,49,63,0|bm80nz,49,63,0|bm80o0,62,42,1|bwnxzz,62,42,1|bwny00,49,63,0|c4y3bz,49,63,0|c4y3c0,62,42,1|cfqzbz,62,42,1|cfqzc0,49,63,0|cno5zz,49,63,0|cno600,62,42,1|cyh1zz,62,42,1|cyh200,49,63,0|d6e8nz,49,63,0|d6e8o0,62,42,1|dh74nz,62,42,1|dh74o0,49,63,0|dph9zz,49,63,0|dpha00,62,42,1|dzx7bz,62,42,1|dzx7c0,49,63,0|e87cnz,49,63,0|e87co0,62,42,1|ein9zz,62,42,1|eina00,49,63,0|iectvz,49,63,0|iectw0,62,42,1|ip5n3z,62,42,1|ip5n40,49,63,0|ix2wjz,49,63,0|ix2wk0,62,42,1|j7vprz,62,42,1|j7vps0,49,63,0|m0pkrz,49,63,0|m0pks0,62,42,1|mcy8nz,62,42,1|mcy8o0,49,63,0|mjfnfz,49,63,0|mjfng0,62,42,1|mvobbz,62,42,1|mvobc0,49,63,0|n25q3z,49,63,0|n25q40,62,42,1|needzz,62,42,1|neee00,49,63,0|nkvsrz,49,63,0|nkvss0,62,42,1|nx4gnz,62,42,1|nx4go0,49,63,0|omowrz,49,63,0|omows0,62,42,1|oyxknz,62,42,1|oyxko0,49,63,0|p5ezfz,49,63,0|p5ezg0,62,42,1|phnnbz,62,42,1|phnnc0,49,63,0|po523z,49,63,0|po5240,62,42,1|q0dpzz,62,42,1|q0dq00,49,63,0|q6v4rz,49,63,0|q6v4s0,62,42,1|qj3snz,62,42,1|qj3so0,49,63,0|qpy63z,49,63,0|qpy640,62,42,1|r26tzz,62,42,1|r26u00,49,63,0|r8o8rz,49,63,0|r8o8s0,62,42,1|rkwwnz,62,42,1|rkwwo0,49,63,0|rrebfz,49,63,0|rrebg0,62,42,1|s3mzbz,62,42,1|s3mzc0,49,63,0|sa4e3z,49,63,0|sa4e40,62,42,1|smd1zz,62,42,1|smd200,49,63,0|ssugrz,49,63,0|ssugs0,62,42,1|t534nz,62,42,1|t534o0,49,63,0|tbkjfz,49,63,0|tbkjg0,62,42,1|tnt7bz,62,42,1|tnt7c0,49,63,0|tunkrz,49,63,0|tunks0,62,42,1|u6w8nz,62,42,1|u6w8o0,49,63,0|uddnfz,49,63,0|uddng0,62,42,1|upmbbz,62,42,1|upmbc0,49,63,0|uw3q3z,49,63,0|uw3q40,62,42,1|v8cdzz,62,42,1|v8ce00,49,63,0|vetsrz,49,63,0|vetss0,62,42,1|vr2gnz,62,42,1|vr2go0,49,63,0|vxjvfz,49,63,0|vxjvg0,62,42,1|w9sjbz,62,42,1|w9sjc0,49,63,0|wgmwrz,49,63,0|wgmws0,62,42,1|wsvknz,62,42,1|wsvko0,49,63,0|wzczfz,49,63,0|wzczg0,62,42,1|xblnbz,62,42,1|xblnc0,49,63,0|xi323z,49,63,0|xi3240,62,42,1|xubpzz,62,42,1|xubq00,49,63,0|y0t4rz,49,63,0|y0t4s0,62,42,1|yd1snz,62,42,1|yd1so0,49,63,0|yjj7fz,49,63,0|yjj7g0,62,42,1|yvrvbz,62,42,1|yvrvc0,49,63,0|z29a3z,49,63,0|z29a40,62,42,1|zehxzz,62,42,1|zehy00,49,63,0\",\"America/Port_of_Spain|,0,41,0|-u6m79w,32,42,0\",\"America/Porto_Velho|,0,165,0|-t85g60,42,42,0|-jyl7o1,42,42,0|-jyl7o0,39,44,1|-jpayc1,39,44,1|-jpayc0,42,42,0|-jfsa81,42,42,0|-jfsa80,39,44,1|-j6j101,39,44,1|-j6j100,42,42,0|-ahcvk1,42,42,0|-ahcvk0,39,44,1|-aad0w1,39,44,1|-aad0w0,42,42,0|-9yky81,42,42,0|-9yky80,39,44,1|-9scyc1,39,44,1|-9scyc0,42,42,0|-9ft0w1,42,42,0|-9ft0w0,39,44,1|-99j6c1,39,44,1|-99j6c0,42,42,0|-8wz8w1,42,42,0|-8wz8w0,39,44,1|-8scno1,39,44,1|-8scno0,42,42,0|-35xjk1,42,42,0|-35xjk0,39,44,1|-31nx01,39,44,1|-31nx00,42,42,0|-2kdm81,42,42,0|-2kdm80,39,44,1|-2hcfo1,39,44,1|-2hcfo0,42,42,0|-24qnk1,42,42,0|-24qnk0,39,44,1|-2042c1,39,44,1|-2042c0,42,42,0|-1nia81,42,42,0|-1nia80,39,44,1|-1hc501,39,44,1|-1hc500,42,42,0|-14qcw1,42,42,0|-14qcw0,39,44,1|-yid01,39,44,1|-yid00,42,42,0|89jf3z,42,42,0|89jf40,39,44,1|8gdmzz,39,44,1|8gdn00,42,42,0|8rwj3z,42,42,0|8rwj40,39,44,1|8xnuzz,39,44,1|8xnv00,42,42,0|9aogfz,42,42,0|9aogg0,39,44,1|9g2tnz,39,44,1|9g2to0,42,42,0\",\"America/Puerto_Rico|,0,166,0|-10xhp3b,32,42,0|-efsnk1,32,42,0|-efsnk0,33,44,1|-cq2tg1,33,44,1|-cq2tg0,34,44,1|-cnp641,34,44,1|-cnp640,32,42,0\",\"America/Punta_Arenas|,0,167,0|-15r0w78,85,168,0|-vauawr,85,168,0|-vauawq,56,63,0|-rx8i41,56,63,0|-rx8i40,85,168,0|-qs16wr,85,168,0|-qs16wq,42,42,0|-qcwsw1,42,42,0|-qcwsw0,85,168,0|-m3etkr,85,168,0|-m3etkq,42,42,1|-lsgfk1,42,42,1|-lsgfk0,56,63,0|-lkl0s1,56,63,0|-lkl0s0,42,42,1|-l9oi81,42,42,1|-l9oi80,56,63,0|-l1t3g1,56,63,0|-l1t3g0,42,42,1|-kqwkw1,42,42,1|-kqwkw0,56,63,0|-kj1641,56,63,0|-kj1640,42,42,1|-k84nk1,42,42,1|-k84nk0,56,63,0|-k098s1,56,63,0|-k098s0,42,42,1|-jpavk1,42,42,1|-jpavk0,56,63,0|-jhfgs1,56,63,0|-jhfgs0,42,42,0|-eeay81,42,42,0|-eeay80,56,63,0|-eb5ws1,56,63,0|-eb5ws0,42,42,0|-bvifk1,42,42,0|-bvifk0,56,63,0|-bsvzk1,56,63,0|-bsvzk0,42,42,0|-lsvk1,42,42,0|-lsvk0,39,44,1|-e8qc1,39,44,1|-e8qc0,42,42,0|-1zww1,42,42,0|-1zww0,39,44,1|4hcbz,39,44,1|4hcc0,42,42,0|ekdrz,42,42,0|ekds0,39,44,1|mhhnz,39,44,1|mhho0,42,42,0|xagfz,42,42,0|xagg0,39,44,1|157kbz,39,44,1|157kc0,42,42,0|1gdhrz,42,42,0|1gdhs0,39,44,1|1nxmzz,39,44,1|1nxn00,42,42,0|1ydn3z,42,42,0|1ydn40,39,44,1|26npnz,39,44,1|26npo0,42,42,0|2htn3z,42,42,0|2htn40,39,44,1|2pdsbz,39,44,1|2pdsc0,42,42,0|30jprz,42,42,0|30jps0,39,44,1|38gtnz,39,44,1|38gto0,42,42,0|3j9sfz,42,42,0|3j9sg0,39,44,1|3r6wbz,39,44,1|3r6wc0,42,42,0|41zv3z,42,42,0|41zv40,39,44,1|49wyzz,39,44,1|49wz00,42,42,0|4l2wfz,42,42,0|4l2wg0,39,44,1|4sn1nz,39,44,1|4sn1o0,42,42,0|53sz3z,42,42,0|53sz40,39,44,1|5bd4bz,39,44,1|5bd4c0,42,42,0|5mj1rz,42,42,0|5mj1s0,39,44,1|5ug5nz,39,44,1|5ug5o0,42,42,0|6594fz,42,42,0|6594g0,39,44,1|6d68bz,39,44,1|6d68c0,42,42,0|6nz73z,42,42,0|6nz740,39,44,1|6vwazz,39,44,1|6vwb00,42,42,0|76p9rz,42,42,0|76p9s0,39,44,1|7emdnz,39,44,1|7emdo0,42,42,0|7psb3z,42,42,0|7psb40,39,44,1|7xcgbz,39,44,1|7xcgc0,42,42,0|88idrz,42,42,0|88ids0,39,44,1|8g2izz,39,44,1|8g2j00,42,42,0|8r8gfz,42,42,0|8r8gg0,39,44,1|90lezz,39,44,1|90lf00,42,42,0|99yj3z,42,42,0|99yj40,39,44,1|9hvmzz,39,44,1|9hvn00,42,42,0|9solrz,42,42,0|9sols0,39,44,1|a0lpnz,39,44,1|a0lpo0,42,42,0|abrn3z,42,42,0|abrn40,39,44,1|ajbsbz,39,44,1|ajbsc0,42,42,0|at1v3z,42,42,0|at1v40,39,44,1|b21uzz,39,44,1|b21v00,42,42,0|bd7sfz,42,42,0|bd7sg0,39,44,1|bl4wbz,39,44,1|bl4wc0,42,42,0|bvxv3z,42,42,0|bvxv40,39,44,1|c3uyzz,39,44,1|c3uz00,42,42,0|cenxrz,42,42,0|cenxs0,39,44,1|cml1nz,39,44,1|cml1o0,42,42,0|cxe0fz,42,42,0|cxe0g0,39,44,1|d5b4bz,39,44,1|d5b4c0,42,42,0|dgh1rz,42,42,0|dgh1s0,39,44,1|do16zz,39,44,1|do1700,42,42,0|dz74fz,42,42,0|dz74g0,39,44,1|e7u5nz,39,44,1|e7u5o0,42,42,0|ehx73z,42,42,0|ehx740,39,44,1|epuazz,39,44,1|epub00,42,42,0|ezxcfz,42,42,0|ezxcg0,39,44,1|f9n9nz,39,44,1|f9n9o0,42,42,0|fjdcfz,42,42,0|fjdcg0,39,44,1|fragbz,39,44,1|fragc0,42,42,0|g2gdrz,42,42,0|g2gds0,39,44,1|ga0izz,39,44,1|ga0j00,42,42,0|gl6gfz,42,42,0|gl6gg0,39,44,1|gsqlnz,39,44,1|gsqlo0,42,42,0|h3wj3z,42,42,0|h3wj40,39,44,1|hbgobz,39,44,1|hbgoc0,42,42,0|hmmlrz,42,42,0|hmmls0,39,44,1|hujpnz,39,44,1|hujpo0,42,42,0|i5cofz,42,42,0|i5cog0,39,44,1|id9sbz,39,44,1|id9sc0,42,42,0|io2r3z,42,42,0|io2r40,39,44,1|ivzuzz,39,44,1|ivzv00,42,42,0|j75sfz,42,42,0|j75sg0,39,44,1|jepxnz,39,44,1|jepxo0,42,42,0|jpvv3z,42,42,0|jpvv40,39,44,1|jyiwbz,39,44,1|jyiwc0,42,42,0|k8lxrz,42,42,0|k8lxs0,39,44,1|kgj1nz,39,44,1|kgj1o0,42,42,0|krc0fz,42,42,0|krc0g0,39,44,1|l0c0bz,39,44,1|l0c0c0,42,42,0|la233z,42,42,0|la2340,39,44,1|lkuwbz,39,44,1|lkuwc0,42,42,0|lq9f3z,42,42,0|lq9f40,39,44,1|m380bz,39,44,1|m380c0,42,42,0|m9pf3z,42,42,0|m9pf40,39,44,1|mly2zz,39,44,1|mly300,42,42,0|mssgfz,42,42,0|mssgg0,39,44,1|n4o5nz,39,44,1|n4o5o0,42,42,0|nbij3z,42,42,0|nbij40,39,44,1|o776zz,39,44,1|o77700,42,42,0|obvsfz,42,42,0|obvsg0,39,44,1|ohn4bz,39,44,1|ohn4c0,39,44,0\",\"America/Rainy_River|,0,169,0|-1353ahk,45,62,0|-qzov41,45,62,0|-qzov40,46,63,1|-qplz81,46,63,1|-qplz80,45,62,0|-f9ofc1,45,62,0|-f9ofc0,46,63,1|-ek21s1,46,63,1|-ek21s0,47,63,1|-cq2tg1,47,63,1|-cq2tg0,48,63,1|-cnp0k1,48,63,1|-cnp0k0,45,62,0|296u7z,45,62,0|296u80,46,63,1|2ijsrz,46,63,1|2ijss0,45,62,0|2rwwvz,45,62,0|2rwww0,46,63,1|319vfz,46,63,1|319vg0,45,62,0|3amzjz,45,62,0|3amzk0,46,63,1|3kcwrz,46,63,1|3kcws0,45,62,0|3td27z,45,62,0|3td280,46,63,1|432zfz,46,63,1|432zg0,45,62,0|4cg3jz,45,62,0|4cg3k0,46,63,1|4lt23z,46,63,1|4lt240,45,62,0|4v667z,45,62,0|4v6680,46,63,1|54j4rz,46,63,1|54j4s0,45,62,0|5dw8vz,45,62,0|5dw8w0,46,63,1|5n97fz,46,63,1|5n97g0,45,62,0|5wmbjz,45,62,0|5wmbk0,46,63,1|65za3z,46,63,1|65za40,45,62,0|6fce7z,45,62,0|6fce80,46,63,1|6p2bfz,46,63,1|6p2bg0,45,62,0|6y2gvz,45,62,0|6y2gw0,46,63,1|77se3z,46,63,1|77se40,45,62,0|7h5i7z,45,62,0|7h5i80,46,63,1|7qigrz,46,63,1|7qigs0,45,62,0|7zvkvz,45,62,0|7zvkw0,46,63,1|898jfz,46,63,1|898jg0,45,62,0|8ilnjz,45,62,0|8ilnk0,46,63,1|8rym3z,46,63,1|8rym40,45,62,0|908u7z,45,62,0|908u80,46,63,1|9aoorz,46,63,1|9aoos0,45,62,0|9iywvz,45,62,0|9iyww0,46,63,1|9trq3z,46,63,1|9trq40,45,62,0|a1ozjz,45,62,0|a1ozk0,46,63,1|achsrz,46,63,1|achss0,45,62,0|akf27z,45,62,0|akf280,46,63,1|av7vfz,46,63,1|av7vg0,45,62,0|b3i3jz,45,62,0|b3i3k0,46,63,1|bdxy3z,46,63,1|bdxy40,45,62,0|bm867z,45,62,0|bm8680,46,63,1|bwo0rz,46,63,1|bwo0s0,45,62,0|c4y8vz,45,62,0|c4y8w0,46,63,1|cfr23z,46,63,1|cfr240,45,62,0|cnobjz,45,62,0|cnobk0,46,63,1|cyh4rz,46,63,1|cyh4s0,45,62,0|d6ee7z,45,62,0|d6ee80,46,63,1|dh77fz,46,63,1|dh77g0,45,62,0|dphfjz,45,62,0|dphfk0,46,63,1|dzxa3z,46,63,1|dzxa40,45,62,0|e87i7z,45,62,0|e87i80,46,63,1|eincrz,46,63,1|eincs0,45,62,0|eqxkvz,45,62,0|eqxkw0,46,63,1|f1dffz,46,63,1|f1dfg0,45,62,0|f9nnjz,45,62,0|f9nnk0,46,63,1|fkggrz,46,63,1|fkggs0,45,62,0|fsdq7z,45,62,0|fsdq80,46,63,1|g36jfz,46,63,1|g36jg0,45,62,0|gb3svz,45,62,0|gb3sw0,46,63,1|glwm3z,46,63,1|glwm40,45,62,0|gu6u7z,45,62,0|gu6u80,46,63,1|h4morz,46,63,1|h4mos0,45,62,0|hcwwvz,45,62,0|hcwww0,46,63,1|hncrfz,46,63,1|hncrg0,45,62,0|hvmzjz,45,62,0|hvmzk0,46,63,1|i6fsrz,46,63,1|i6fss0,45,62,0|ied27z,45,62,0|ied280,46,63,1|ip5vfz,46,63,1|ip5vg0,45,62,0|ix34vz,45,62,0|ix34w0,46,63,1|j7vy3z,46,63,1|j7vy40,45,62,0|jeqbjz,45,62,0|jeqbk0,46,63,1|jqyzfz,46,63,1|jqyzg0,45,62,0|jxge7z,45,62,0|jxge80,46,63,1|k9p23z,46,63,1|k9p240,45,62,0|kg6gvz,45,62,0|kg6gw0,46,63,1|ksf4rz,46,63,1|ksf4s0,45,62,0|kz9i7z,45,62,0|kz9i80,46,63,1|lbi63z,46,63,1|lbi640,45,62,0|lhzkvz,45,62,0|lhzkw0,46,63,1|lu88rz,46,63,1|lu88s0,45,62,0|m0pnjz,45,62,0|m0pnk0,46,63,1|mcybfz,46,63,1|mcybg0,45,62,0|mjfq7z,45,62,0|mjfq80,46,63,1|mvoe3z,46,63,1|mvoe40,45,62,0|n25svz,45,62,0|n25sw0,46,63,1|neegrz,46,63,1|neegs0,45,62,0|nkvvjz,45,62,0|nkvvk0,46,63,1|nx4jfz,46,63,1|nx4jg0,45,62,0|o3ywvz,45,62,0|o3yww0,46,63,1|og7krz,46,63,1|og7ks0,45,62,0|omozjz,45,62,0|omozk0,46,63,1|oyxnfz,46,63,1|oyxng0,45,62,0|p5f27z,45,62,0|p5f280,46,63,1|phnq3z,46,63,1|phnq40,45,62,0|po54vz,45,62,0|po54w0,46,63,1|q0dsrz,46,63,1|q0dss0,45,62,0|q6v7jz,45,62,0|q6v7k0,46,63,1|qj3vfz,46,63,1|qj3vg0,45,62,0|qpy8vz,45,62,0|qpy8w0,46,63,1|r26wrz,46,63,1|r26ws0,45,62,0|r8objz,45,62,0|r8obk0,46,63,1|rkwzfz,46,63,1|rkwzg0,45,62,0|rree7z,45,62,0|rree80,46,63,1|s3n23z,46,63,1|s3n240,45,62,0|sa4gvz,45,62,0|sa4gw0,46,63,1|smd4rz,46,63,1|smd4s0,45,62,0|ssujjz,45,62,0|ssujk0,46,63,1|t537fz,46,63,1|t537g0,45,62,0|tbkm7z,45,62,0|tbkm80,46,63,1|tnta3z,46,63,1|tnta40,45,62,0|tunnjz,45,62,0|tunnk0,46,63,1|u6wbfz,46,63,1|u6wbg0,45,62,0|uddq7z,45,62,0|uddq80,46,63,1|upme3z,46,63,1|upme40,45,62,0|uw3svz,45,62,0|uw3sw0,46,63,1|v8cgrz,46,63,1|v8cgs0,45,62,0|vetvjz,45,62,0|vetvk0,46,63,1|vr2jfz,46,63,1|vr2jg0,45,62,0|vxjy7z,45,62,0|vxjy80,46,63,1|w9sm3z,46,63,1|w9sm40,45,62,0|wgmzjz,45,62,0|wgmzk0,46,63,1|wsvnfz,46,63,1|wsvng0,45,62,0|wzd27z,45,62,0|wzd280,46,63,1|xblq3z,46,63,1|xblq40,45,62,0|xi34vz,45,62,0|xi34w0,46,63,1|xubsrz,46,63,1|xubss0,45,62,0|y0t7jz,45,62,0|y0t7k0,46,63,1|yd1vfz,46,63,1|yd1vg0,45,62,0|yjja7z,45,62,0|yjja80,46,63,1|yvry3z,46,63,1|yvry40,45,62,0|z29cvz,45,62,0|z29cw0,46,63,1|zei0rz,46,63,1|zei0s0,45,62,0\",\"America/Rankin_Inlet|,60,1,0|-6s8lc0,45,62,0|-2g1wo1,45,62,0|-2g1wo0,86,42,1|-26bwo1,86,42,1|-26bwo0,45,62,0|5dw8vz,45,62,0|5dw8w0,46,63,1|5n97fz,46,63,1|5n97g0,45,62,0|5wmbjz,45,62,0|5wmbk0,46,63,1|65za3z,46,63,1|65za40,45,62,0|6fce7z,45,62,0|6fce80,46,63,1|6p2bfz,46,63,1|6p2bg0,45,62,0|6y2gvz,45,62,0|6y2gw0,46,63,1|77se3z,46,63,1|77se40,45,62,0|7h5i7z,45,62,0|7h5i80,46,63,1|7qigrz,46,63,1|7qigs0,45,62,0|7zvkvz,45,62,0|7zvkw0,46,63,1|898jfz,46,63,1|898jg0,45,62,0|8ilnjz,45,62,0|8ilnk0,46,63,1|8rym3z,46,63,1|8rym40,45,62,0|908u7z,45,62,0|908u80,46,63,1|9aoorz,46,63,1|9aoos0,45,62,0|9iywvz,45,62,0|9iyww0,46,63,1|9trq3z,46,63,1|9trq40,45,62,0|a1ozjz,45,62,0|a1ozk0,46,63,1|achsrz,46,63,1|achss0,45,62,0|akf27z,45,62,0|akf280,46,63,1|av7vfz,46,63,1|av7vg0,45,62,0|b3i3jz,45,62,0|b3i3k0,46,63,1|bdxy3z,46,63,1|bdxy40,45,62,0|bm867z,45,62,0|bm8680,46,63,1|bwo0rz,46,63,1|bwo0s0,45,62,0|c4y8vz,45,62,0|c4y8w0,46,63,1|cfr23z,46,63,1|cfr240,45,62,0|cnobjz,45,62,0|cnobk0,46,63,1|cyh4rz,46,63,1|cyh4s0,45,62,0|d6ee7z,45,62,0|d6ee80,46,63,1|dh77fz,46,63,1|dh77g0,45,62,0|dphfjz,45,62,0|dphfk0,46,63,1|dzxa3z,46,63,1|dzxa40,45,62,0|e87i7z,45,62,0|e87i80,46,63,1|eincrz,46,63,1|eincs0,45,62,0|eqxkvz,45,62,0|eqxkw0,46,63,1|f1dffz,46,63,1|f1dfg0,45,62,0|f9nnjz,45,62,0|f9nnk0,46,63,1|fkggrz,46,63,1|fkggs0,45,62,0|fsdq7z,45,62,0|fsdq80,46,63,1|g36jfz,46,63,1|g36jg0,49,63,0|gb3svz,49,63,0|gb3sw0,46,63,1|glwm3z,46,63,1|glwm40,45,62,0|gu6u7z,45,62,0|gu6u80,46,63,1|h4morz,46,63,1|h4mos0,45,62,0|hcwwvz,45,62,0|hcwww0,46,63,1|hncrfz,46,63,1|hncrg0,45,62,0|hvmzjz,45,62,0|hvmzk0,46,63,1|i6fsrz,46,63,1|i6fss0,45,62,0|ied27z,45,62,0|ied280,46,63,1|ip5vfz,46,63,1|ip5vg0,45,62,0|ix34vz,45,62,0|ix34w0,46,63,1|j7vy3z,46,63,1|j7vy40,45,62,0|jeqbjz,45,62,0|jeqbk0,46,63,1|jqyzfz,46,63,1|jqyzg0,45,62,0|jxge7z,45,62,0|jxge80,46,63,1|k9p23z,46,63,1|k9p240,45,62,0|kg6gvz,45,62,0|kg6gw0,46,63,1|ksf4rz,46,63,1|ksf4s0,45,62,0|kz9i7z,45,62,0|kz9i80,46,63,1|lbi63z,46,63,1|lbi640,45,62,0|lhzkvz,45,62,0|lhzkw0,46,63,1|lu88rz,46,63,1|lu88s0,45,62,0|m0pnjz,45,62,0|m0pnk0,46,63,1|mcybfz,46,63,1|mcybg0,45,62,0|mjfq7z,45,62,0|mjfq80,46,63,1|mvoe3z,46,63,1|mvoe40,45,62,0|n25svz,45,62,0|n25sw0,46,63,1|neegrz,46,63,1|neegs0,45,62,0|nkvvjz,45,62,0|nkvvk0,46,63,1|nx4jfz,46,63,1|nx4jg0,45,62,0|o3ywvz,45,62,0|o3yww0,46,63,1|og7krz,46,63,1|og7ks0,45,62,0|omozjz,45,62,0|omozk0,46,63,1|oyxnfz,46,63,1|oyxng0,45,62,0|p5f27z,45,62,0|p5f280,46,63,1|phnq3z,46,63,1|phnq40,45,62,0|po54vz,45,62,0|po54w0,46,63,1|q0dsrz,46,63,1|q0dss0,45,62,0|q6v7jz,45,62,0|q6v7k0,46,63,1|qj3vfz,46,63,1|qj3vg0,45,62,0|qpy8vz,45,62,0|qpy8w0,46,63,1|r26wrz,46,63,1|r26ws0,45,62,0|r8objz,45,62,0|r8obk0,46,63,1|rkwzfz,46,63,1|rkwzg0,45,62,0|rree7z,45,62,0|rree80,46,63,1|s3n23z,46,63,1|s3n240,45,62,0|sa4gvz,45,62,0|sa4gw0,46,63,1|smd4rz,46,63,1|smd4s0,45,62,0|ssujjz,45,62,0|ssujk0,46,63,1|t537fz,46,63,1|t537g0,45,62,0|tbkm7z,45,62,0|tbkm80,46,63,1|tnta3z,46,63,1|tnta40,45,62,0|tunnjz,45,62,0|tunnk0,46,63,1|u6wbfz,46,63,1|u6wbg0,45,62,0|uddq7z,45,62,0|uddq80,46,63,1|upme3z,46,63,1|upme40,45,62,0|uw3svz,45,62,0|uw3sw0,46,63,1|v8cgrz,46,63,1|v8cgs0,45,62,0|vetvjz,45,62,0|vetvk0,46,63,1|vr2jfz,46,63,1|vr2jg0,45,62,0|vxjy7z,45,62,0|vxjy80,46,63,1|w9sm3z,46,63,1|w9sm40,45,62,0|wgmzjz,45,62,0|wgmzk0,46,63,1|wsvnfz,46,63,1|wsvng0,45,62,0|wzd27z,45,62,0|wzd280,46,63,1|xblq3z,46,63,1|xblq40,45,62,0|xi34vz,45,62,0|xi34w0,46,63,1|xubsrz,46,63,1|xubss0,45,62,0|y0t7jz,45,62,0|y0t7k0,46,63,1|yd1vfz,46,63,1|yd1vg0,45,62,0|yjja7z,45,62,0|yjja80,46,63,1|yvry3z,46,63,1|yvry40,45,62,0|z29cvz,45,62,0|z29cw0,46,63,1|zei0rz,46,63,1|zei0s0,45,62,0\",\"America/Recife|,0,170,0|-t85ljc,39,44,0|-jylag1,39,44,0|-jylag0,40,45,1|-jpb141,40,45,1|-jpb140,39,44,0|-jfsd01,39,44,0|-jfsd00,40,45,1|-j6j3s1,40,45,1|-j6j3s0,39,44,0|-ahcyc1,39,44,0|-ahcyc0,40,45,1|-aad3o1,40,45,1|-aad3o0,39,44,0|-9yl101,39,44,0|-9yl100,40,45,1|-9sd141,40,45,1|-9sd140,39,44,0|-9ft3o1,39,44,0|-9ft3o0,40,45,1|-99j941,40,45,1|-99j940,39,44,0|-8wzbo1,39,44,0|-8wzbo0,40,45,1|-8scqg1,40,45,1|-8scqg0,39,44,0|-35xmc1,39,44,0|-35xmc0,40,45,1|-31nzs1,40,45,1|-31nzs0,39,44,0|-2kdp01,39,44,0|-2kdp00,40,45,1|-2hcig1,40,45,1|-2hcig0,39,44,0|-24qqc1,39,44,0|-24qqc0,40,45,1|-204541,40,45,1|-204540,39,44,0|-1nid01,39,44,0|-1nid00,40,45,1|-1hc7s1,40,45,1|-1hc7s0,39,44,0|-14qfo1,39,44,0|-14qfo0,40,45,1|-yifs1,40,45,1|-yifs0,39,44,0|89jcbz,39,44,0|89jcc0,40,45,1|8gdk7z,40,45,1|8gdk80,39,44,0|8rwgbz,39,44,0|8rwgc0,40,45,1|8xns7z,40,45,1|8xns80,39,44,0|9aodnz,39,44,0|9aodo0,40,45,1|9g2qvz,40,45,1|9g2qw0,39,44,0|9t1hnz,39,44,0|9t1ho0,40,45,1|9yfuvz,40,45,1|9yfuw0,39,44,0|abrkbz,39,44,0|abrkc0,40,45,1|ahvuvz,40,45,1|ahvuw0,39,44,0|fj0azz,39,44,0|fj0b00,40,45,1|fqkg7z,40,45,1|fqkg80,39,44,0|g23cbz,39,44,0|g23cc0,40,45,1|g2g87z,40,45,1|g2g880,39,44,0|gl6dnz,39,44,0|gl6do0,40,45,1|grnmvz,40,45,1|grnmw0,39,44,0\",\"America/Regina|,0,171,0|-xkq9yc,50,66,0|-qzosc1,50,66,0|-qzosc0,52,62,1|-qplwg1,52,62,1|-qplwg0,50,66,0|-kp78k1,50,66,0|-kp78k0,52,62,1|-kha4o1,52,62,1|-kha4o0,50,66,0|-k6h5w1,50,66,0|-k6h5w0,52,62,1|-jyk201,52,62,1|-jyk200,50,66,0|-jnr381,50,66,0|-jnr380,52,62,1|-jftzc1,52,62,1|-jftzc0,50,66,0|-j4o1w1,50,66,0|-j4o1w0,52,62,1|-ix3wo1,52,62,1|-ix3wo0,50,66,0|-ilxz81,50,66,0|-ilxz80,52,62,1|-ie0vc1,52,62,1|-ie0vc0,50,66,0|-h2un81,50,66,0|-h2un80,52,62,1|-gthoo1,52,62,1|-gthoo0,50,66,0|-gk4kk1,50,66,0|-gk4kk0,52,62,1|-gb4ko1,52,62,1|-gb4ko0,50,66,0|-g1ehw1,50,66,0|-g1ehw0,52,62,1|-fs1jc1,52,62,1|-fs1jc0,50,66,0|-fibgk1,50,66,0|-fibgk0,52,62,1|-f8yi01,52,62,1|-f8yi00,50,66,0|-ezldw1,50,66,0|-ezldw0,52,62,1|-eq8fc1,52,62,1|-eq8fc0,50,66,0|-ek1z01,50,66,0|-ek1z00,58,62,1|-cq2tg1,58,62,1|-cq2tg0,59,62,1|-cnoxs1,59,62,1|-cnoxs0,50,66,0|-cdlwc1,50,66,0|-cdlwc0,52,62,1|-c48xs1,52,62,1|-c48xs0,50,66,0|-bu5wc1,50,66,0|-bu5wc0,52,62,1|-bm8sg1,52,62,1|-bm8sg0,50,66,0|-bbfto1,50,66,0|-bbfto0,52,62,1|-b3ips1,52,62,1|-b3ips0,50,66,0|-aspr01,50,66,0|-aspr00,52,62,1|-aksn41,52,62,1|-aksn40,50,66,0|-a9mpo1,50,66,0|-a9mpo0,52,62,1|-a22kg1,52,62,1|-a22kg0,50,66,0|-9qwn01,50,66,0|-9qwn00,52,62,1|-9izj41,52,62,1|-9izj40,50,66,0|-986kc1,50,66,0|-986kc0,52,62,1|-909gg1,52,62,1|-909gg0,50,66,0|-8pgho1,50,66,0|-8pgho0,52,62,1|-8hjds1,52,62,1|-8hjds0,50,66,0|-86qf01,50,66,0|-86qf00,52,62,1|-7ytb41,52,62,1|-7ytb40,50,66,0|-7o0cc1,50,66,0|-7o0cc0,52,62,1|-7g38g1,52,62,1|-7g38g0,50,66,0|-74xb01,50,66,0|-74xb00,52,62,1|-6x0741,52,62,1|-6x0740,50,66,0|-6m78c1,50,66,0|-6m78c0,52,62,1|-6ea4g1,52,62,1|-6ea4g0,50,66,0|-5kr301,50,66,0|-5kr300,52,62,1|-5be4g1,52,62,1|-5be4g0,50,66,0|-5210c1,50,66,0|-5210c0,45,62,0\",\"America/Resolute|,60,1,0|-bnp9c0,45,62,0|-2g1wo1,45,62,0|-2g1wo0,86,42,1|-26bwo1,86,42,1|-26bwo0,45,62,0|5dw8vz,45,62,0|5dw8w0,46,63,1|5n97fz,46,63,1|5n97g0,45,62,0|5wmbjz,45,62,0|5wmbk0,46,63,1|65za3z,46,63,1|65za40,45,62,0|6fce7z,45,62,0|6fce80,46,63,1|6p2bfz,46,63,1|6p2bg0,45,62,0|6y2gvz,45,62,0|6y2gw0,46,63,1|77se3z,46,63,1|77se40,45,62,0|7h5i7z,45,62,0|7h5i80,46,63,1|7qigrz,46,63,1|7qigs0,45,62,0|7zvkvz,45,62,0|7zvkw0,46,63,1|898jfz,46,63,1|898jg0,45,62,0|8ilnjz,45,62,0|8ilnk0,46,63,1|8rym3z,46,63,1|8rym40,45,62,0|908u7z,45,62,0|908u80,46,63,1|9aoorz,46,63,1|9aoos0,45,62,0|9iywvz,45,62,0|9iyww0,46,63,1|9trq3z,46,63,1|9trq40,45,62,0|a1ozjz,45,62,0|a1ozk0,46,63,1|achsrz,46,63,1|achss0,45,62,0|akf27z,45,62,0|akf280,46,63,1|av7vfz,46,63,1|av7vg0,45,62,0|b3i3jz,45,62,0|b3i3k0,46,63,1|bdxy3z,46,63,1|bdxy40,45,62,0|bm867z,45,62,0|bm8680,46,63,1|bwo0rz,46,63,1|bwo0s0,45,62,0|c4y8vz,45,62,0|c4y8w0,46,63,1|cfr23z,46,63,1|cfr240,45,62,0|cnobjz,45,62,0|cnobk0,46,63,1|cyh4rz,46,63,1|cyh4s0,45,62,0|d6ee7z,45,62,0|d6ee80,46,63,1|dh77fz,46,63,1|dh77g0,45,62,0|dphfjz,45,62,0|dphfk0,46,63,1|dzxa3z,46,63,1|dzxa40,45,62,0|e87i7z,45,62,0|e87i80,46,63,1|eincrz,46,63,1|eincs0,45,62,0|eqxkvz,45,62,0|eqxkw0,46,63,1|f1dffz,46,63,1|f1dfg0,45,62,0|f9nnjz,45,62,0|f9nnk0,46,63,1|fkggrz,46,63,1|fkggs0,45,62,0|fsdq7z,45,62,0|fsdq80,46,63,1|g36jfz,46,63,1|g36jg0,49,63,0|gb3svz,49,63,0|gb3sw0,46,63,1|glwm3z,46,63,1|glwm40,45,62,0|gu6u7z,45,62,0|gu6u80,46,63,1|h4morz,46,63,1|h4mos0,45,62,0|hcwwvz,45,62,0|hcwww0,46,63,1|hncrfz,46,63,1|hncrg0,45,62,0|hvmzjz,45,62,0|hvmzk0,46,63,1|i6fsrz,46,63,1|i6fss0,45,62,0|ied27z,45,62,0|ied280,46,63,1|ip5vfz,46,63,1|ip5vg0,45,62,0|ix34vz,45,62,0|ix34w0,46,63,1|j7vy3z,46,63,1|j7vy40,49,63,0|jeqbjz,49,63,0|jeqbk0,46,63,1|jqyzfz,46,63,1|jqyzg0,45,62,0|jxge7z,45,62,0|jxge80,46,63,1|k9p23z,46,63,1|k9p240,45,62,0|kg6gvz,45,62,0|kg6gw0,46,63,1|ksf4rz,46,63,1|ksf4s0,45,62,0|kz9i7z,45,62,0|kz9i80,46,63,1|lbi63z,46,63,1|lbi640,45,62,0|lhzkvz,45,62,0|lhzkw0,46,63,1|lu88rz,46,63,1|lu88s0,45,62,0|m0pnjz,45,62,0|m0pnk0,46,63,1|mcybfz,46,63,1|mcybg0,45,62,0|mjfq7z,45,62,0|mjfq80,46,63,1|mvoe3z,46,63,1|mvoe40,45,62,0|n25svz,45,62,0|n25sw0,46,63,1|neegrz,46,63,1|neegs0,45,62,0|nkvvjz,45,62,0|nkvvk0,46,63,1|nx4jfz,46,63,1|nx4jg0,45,62,0|o3ywvz,45,62,0|o3yww0,46,63,1|og7krz,46,63,1|og7ks0,45,62,0|omozjz,45,62,0|omozk0,46,63,1|oyxnfz,46,63,1|oyxng0,45,62,0|p5f27z,45,62,0|p5f280,46,63,1|phnq3z,46,63,1|phnq40,45,62,0|po54vz,45,62,0|po54w0,46,63,1|q0dsrz,46,63,1|q0dss0,45,62,0|q6v7jz,45,62,0|q6v7k0,46,63,1|qj3vfz,46,63,1|qj3vg0,45,62,0|qpy8vz,45,62,0|qpy8w0,46,63,1|r26wrz,46,63,1|r26ws0,45,62,0|r8objz,45,62,0|r8obk0,46,63,1|rkwzfz,46,63,1|rkwzg0,45,62,0|rree7z,45,62,0|rree80,46,63,1|s3n23z,46,63,1|s3n240,45,62,0|sa4gvz,45,62,0|sa4gw0,46,63,1|smd4rz,46,63,1|smd4s0,45,62,0|ssujjz,45,62,0|ssujk0,46,63,1|t537fz,46,63,1|t537g0,45,62,0|tbkm7z,45,62,0|tbkm80,46,63,1|tnta3z,46,63,1|tnta40,45,62,0|tunnjz,45,62,0|tunnk0,46,63,1|u6wbfz,46,63,1|u6wbg0,45,62,0|uddq7z,45,62,0|uddq80,46,63,1|upme3z,46,63,1|upme40,45,62,0|uw3svz,45,62,0|uw3sw0,46,63,1|v8cgrz,46,63,1|v8cgs0,45,62,0|vetvjz,45,62,0|vetvk0,46,63,1|vr2jfz,46,63,1|vr2jg0,45,62,0|vxjy7z,45,62,0|vxjy80,46,63,1|w9sm3z,46,63,1|w9sm40,45,62,0|wgmzjz,45,62,0|wgmzk0,46,63,1|wsvnfz,46,63,1|wsvng0,45,62,0|wzd27z,45,62,0|wzd280,46,63,1|xblq3z,46,63,1|xblq40,45,62,0|xi34vz,45,62,0|xi34w0,46,63,1|xubsrz,46,63,1|xubss0,45,62,0|y0t7jz,45,62,0|y0t7k0,46,63,1|yd1vfz,46,63,1|yd1vg0,45,62,0|yjja7z,45,62,0|yjja80,46,63,1|yvry3z,46,63,1|yvry40,45,62,0|z29cvz,45,62,0|z29cw0,46,63,1|zei0rz,46,63,1|zei0s0,45,62,0\",\"America/Rio_Branco|,0,172,0|-t85fg0,56,63,0|-jyl4w1,56,63,0|-jyl4w0,42,42,1|-jpavk1,42,42,1|-jpavk0,56,63,0|-jfs7g1,56,63,0|-jfs7g0,42,42,1|-j6iy81,42,42,1|-j6iy80,56,63,0|-ahcss1,56,63,0|-ahcss0,42,42,1|-aacy41,42,42,1|-aacy40,56,63,0|-9ykvg1,56,63,0|-9ykvg0,42,42,1|-9scvk1,42,42,1|-9scvk0,56,63,0|-9fsy41,56,63,0|-9fsy40,42,42,1|-99j3k1,42,42,1|-99j3k0,56,63,0|-8wz641,56,63,0|-8wz640,42,42,1|-8sckw1,42,42,1|-8sckw0,56,63,0|-35xgs1,56,63,0|-35xgs0,42,42,1|-31nu81,42,42,1|-31nu80,56,63,0|-2kdjg1,56,63,0|-2kdjg0,42,42,1|-2hccw1,42,42,1|-2hccw0,56,63,0|-24qks1,56,63,0|-24qks0,42,42,1|-203zk1,42,42,1|-203zk0,56,63,0|-1ni7g1,56,63,0|-1ni7g0,42,42,1|-1hc281,42,42,1|-1hc280,56,63,0|-14qa41,56,63,0|-14qa40,42,42,1|-yia81,42,42,1|-yia80,56,63,0|89jhvz,56,63,0|89jhw0,42,42,1|8gdprz,42,42,1|8gdps0,56,63,0|8rwlvz,56,63,0|8rwlw0,42,42,1|8xnxrz,42,42,1|8xnxs0,56,63,0|9aoj7z,56,63,0|9aoj80,42,42,1|9g2wfz,42,42,1|9g2wg0,56,63,0|k2yb7z,56,63,0|k2yb80,42,42,0|mw14fz,42,42,0|mw14g0,56,63,0\",\"America/Santarem|,0,173,0|-t85hvc,42,42,0|-jyl7o1,42,42,0|-jyl7o0,39,44,1|-jpayc1,39,44,1|-jpayc0,42,42,0|-jfsa81,42,42,0|-jfsa80,39,44,1|-j6j101,39,44,1|-j6j100,42,42,0|-ahcvk1,42,42,0|-ahcvk0,39,44,1|-aad0w1,39,44,1|-aad0w0,42,42,0|-9yky81,42,42,0|-9yky80,39,44,1|-9scyc1,39,44,1|-9scyc0,42,42,0|-9ft0w1,42,42,0|-9ft0w0,39,44,1|-99j6c1,39,44,1|-99j6c0,42,42,0|-8wz8w1,42,42,0|-8wz8w0,39,44,1|-8scno1,39,44,1|-8scno0,42,42,0|-35xjk1,42,42,0|-35xjk0,39,44,1|-31nx01,39,44,1|-31nx00,42,42,0|-2kdm81,42,42,0|-2kdm80,39,44,1|-2hcfo1,39,44,1|-2hcfo0,42,42,0|-24qnk1,42,42,0|-24qnk0,39,44,1|-2042c1,39,44,1|-2042c0,42,42,0|-1nia81,42,42,0|-1nia80,39,44,1|-1hc501,39,44,1|-1hc500,42,42,0|-14qcw1,42,42,0|-14qcw0,39,44,1|-yid01,39,44,1|-yid00,42,42,0|89jf3z,42,42,0|89jf40,39,44,1|8gdmzz,39,44,1|8gdn00,42,42,0|8rwj3z,42,42,0|8rwj40,39,44,1|8xnuzz,39,44,1|8xnv00,42,42,0|9aogfz,42,42,0|9aogg0,39,44,1|9g2tnz,39,44,1|9g2to0,42,42,0|k2y8fz,42,42,0|k2y8g0,39,44,0\",\"America/Santiago|,0,168,0|-15r0w8q,85,168,0|-vauawr,85,168,0|-vauawq,56,63,0|-rx8i41,56,63,0|-rx8i40,85,168,0|-qs16wr,85,168,0|-qs16wq,42,42,0|-qcwsw1,42,42,0|-qcwsw0,85,168,0|-m3etkr,85,168,0|-m3etkq,42,42,1|-lsgfk1,42,42,1|-lsgfk0,56,63,0|-lkl0s1,56,63,0|-lkl0s0,42,42,1|-l9oi81,42,42,1|-l9oi80,56,63,0|-l1t3g1,56,63,0|-l1t3g0,42,42,1|-kqwkw1,42,42,1|-kqwkw0,56,63,0|-kj1641,56,63,0|-kj1640,42,42,1|-k84nk1,42,42,1|-k84nk0,56,63,0|-k098s1,56,63,0|-k098s0,42,42,1|-jpavk1,42,42,1|-jpavk0,56,63,0|-jhfgs1,56,63,0|-jhfgs0,42,42,0|-eeay81,42,42,0|-eeay80,56,63,0|-eb5ws1,56,63,0|-eb5ws0,42,42,0|-c8vww1,42,42,0|-c8vww0,39,44,1|-c6f3o1,39,44,1|-c6f3o0,42,42,0|-bvifk1,42,42,0|-bvifk0,56,63,0|-bsvzk1,56,63,0|-bsvzk0,42,42,0|-lsvk1,42,42,0|-lsvk0,39,44,1|-e8qc1,39,44,1|-e8qc0,42,42,0|-1zww1,42,42,0|-1zww0,39,44,1|4hcbz,39,44,1|4hcc0,42,42,0|ekdrz,42,42,0|ekds0,39,44,1|mhhnz,39,44,1|mhho0,42,42,0|xagfz,42,42,0|xagg0,39,44,1|157kbz,39,44,1|157kc0,42,42,0|1gdhrz,42,42,0|1gdhs0,39,44,1|1nxmzz,39,44,1|1nxn00,42,42,0|1ydn3z,42,42,0|1ydn40,39,44,1|26npnz,39,44,1|26npo0,42,42,0|2htn3z,42,42,0|2htn40,39,44,1|2pdsbz,39,44,1|2pdsc0,42,42,0|30jprz,42,42,0|30jps0,39,44,1|38gtnz,39,44,1|38gto0,42,42,0|3j9sfz,42,42,0|3j9sg0,39,44,1|3r6wbz,39,44,1|3r6wc0,42,42,0|41zv3z,42,42,0|41zv40,39,44,1|49wyzz,39,44,1|49wz00,42,42,0|4l2wfz,42,42,0|4l2wg0,39,44,1|4sn1nz,39,44,1|4sn1o0,42,42,0|53sz3z,42,42,0|53sz40,39,44,1|5bd4bz,39,44,1|5bd4c0,42,42,0|5mj1rz,42,42,0|5mj1s0,39,44,1|5ug5nz,39,44,1|5ug5o0,42,42,0|6594fz,42,42,0|6594g0,39,44,1|6d68bz,39,44,1|6d68c0,42,42,0|6nz73z,42,42,0|6nz740,39,44,1|6vwazz,39,44,1|6vwb00,42,42,0|76p9rz,42,42,0|76p9s0,39,44,1|7emdnz,39,44,1|7emdo0,42,42,0|7psb3z,42,42,0|7psb40,39,44,1|7xcgbz,39,44,1|7xcgc0,42,42,0|88idrz,42,42,0|88ids0,39,44,1|8g2izz,39,44,1|8g2j00,42,42,0|8r8gfz,42,42,0|8r8gg0,39,44,1|90lezz,39,44,1|90lf00,42,42,0|99yj3z,42,42,0|99yj40,39,44,1|9hvmzz,39,44,1|9hvn00,42,42,0|9solrz,42,42,0|9sols0,39,44,1|a0lpnz,39,44,1|a0lpo0,42,42,0|abrn3z,42,42,0|abrn40,39,44,1|ajbsbz,39,44,1|ajbsc0,42,42,0|at1v3z,42,42,0|at1v40,39,44,1|b21uzz,39,44,1|b21v00,42,42,0|bd7sfz,42,42,0|bd7sg0,39,44,1|bl4wbz,39,44,1|bl4wc0,42,42,0|bvxv3z,42,42,0|bvxv40,39,44,1|c3uyzz,39,44,1|c3uz00,42,42,0|cenxrz,42,42,0|cenxs0,39,44,1|cml1nz,39,44,1|cml1o0,42,42,0|cxe0fz,42,42,0|cxe0g0,39,44,1|d5b4bz,39,44,1|d5b4c0,42,42,0|dgh1rz,42,42,0|dgh1s0,39,44,1|do16zz,39,44,1|do1700,42,42,0|dz74fz,42,42,0|dz74g0,39,44,1|e7u5nz,39,44,1|e7u5o0,42,42,0|ehx73z,42,42,0|ehx740,39,44,1|epuazz,39,44,1|epub00,42,42,0|ezxcfz,42,42,0|ezxcg0,39,44,1|f9n9nz,39,44,1|f9n9o0,42,42,0|fjdcfz,42,42,0|fjdcg0,39,44,1|fragbz,39,44,1|fragc0,42,42,0|g2gdrz,42,42,0|g2gds0,39,44,1|ga0izz,39,44,1|ga0j00,42,42,0|gl6gfz,42,42,0|gl6gg0,39,44,1|gsqlnz,39,44,1|gsqlo0,42,42,0|h3wj3z,42,42,0|h3wj40,39,44,1|hbgobz,39,44,1|hbgoc0,42,42,0|hmmlrz,42,42,0|hmmls0,39,44,1|hujpnz,39,44,1|hujpo0,42,42,0|i5cofz,42,42,0|i5cog0,39,44,1|id9sbz,39,44,1|id9sc0,42,42,0|io2r3z,42,42,0|io2r40,39,44,1|ivzuzz,39,44,1|ivzv00,42,42,0|j75sfz,42,42,0|j75sg0,39,44,1|jepxnz,39,44,1|jepxo0,42,42,0|jpvv3z,42,42,0|jpvv40,39,44,1|jyiwbz,39,44,1|jyiwc0,42,42,0|k8lxrz,42,42,0|k8lxs0,39,44,1|kgj1nz,39,44,1|kgj1o0,42,42,0|krc0fz,42,42,0|krc0g0,39,44,1|l0c0bz,39,44,1|l0c0c0,42,42,0|la233z,42,42,0|la2340,39,44,1|lkuwbz,39,44,1|lkuwc0,42,42,0|lq9f3z,42,42,0|lq9f40,39,44,1|m380bz,39,44,1|m380c0,42,42,0|m9pf3z,42,42,0|m9pf40,39,44,1|mly2zz,39,44,1|mly300,42,42,0|mssgfz,42,42,0|mssgg0,39,44,1|n4o5nz,39,44,1|n4o5o0,42,42,0|nbij3z,42,42,0|nbij40,39,44,1|o776zz,39,44,1|o77700,42,42,0|obvsfz,42,42,0|obvsg0,39,44,1|opx9nz,39,44,1|opx9o0,42,42,0|oulv3z,42,42,0|oulv40,39,44,1|p8ncbz,39,44,1|p8ncc0,42,42,0|pdbxrz,42,42,0|pdbxs0,39,44,1|ppklnz,39,44,1|ppklo0,42,42,0|pxhv3z,42,42,0|pxhv40,39,44,1|q8aobz,39,44,1|q8aoc0,42,42,0|qg7xrz,42,42,0|qg7xs0,39,44,1|qr0qzz,39,44,1|qr0r00,42,42,0|qyy0fz,42,42,0|qyy0g0,39,44,1|r9qtnz,39,44,1|r9qto0,42,42,0|rho33z,42,42,0|rho340,39,44,1|rsgwbz,39,44,1|rsgwc0,42,42,0|s0e5rz,42,42,0|s0e5s0,39,44,1|sbjxnz,39,44,1|sbjxo0,42,42,0|sjh73z,42,42,0|sjh740,39,44,1|sua0bz,39,44,1|sua0c0,42,42,0|t279rz,42,42,0|t279s0,39,44,1|td02zz,39,44,1|td0300,42,42,0|tkxcfz,42,42,0|tkxcg0,39,44,1|tvq5nz,39,44,1|tvq5o0,42,42,0|u3nf3z,42,42,0|u3nf40,39,44,1|ueg8bz,39,44,1|ueg8c0,42,42,0|umdhrz,42,42,0|umdhs0,39,44,1|uxj9nz,39,44,1|uxj9o0,42,42,0|v53kfz,42,42,0|v53kg0,39,44,1|vg9cbz,39,44,1|vg9cc0,42,42,0|vo6lrz,42,42,0|vo6ls0,39,44,1|vyzezz,39,44,1|vyzf00,42,42,0|w6wofz,42,42,0|w6wog0,39,44,1|whphnz,39,44,1|whpho0,42,42,0|wpmr3z,42,42,0|wpmr40,39,44,1|x0fkbz,39,44,1|x0fkc0,42,42,0|x8ctrz,42,42,0|x8cts0,39,44,1|xj5mzz,39,44,1|xj5n00,42,42,0|xr2wfz,42,42,0|xr2wg0,39,44,1|y28obz,39,44,1|y28oc0,42,42,0|y9sz3z,42,42,0|y9sz40,39,44,1|ykyqzz,39,44,1|ykyr00,42,42,0|ysw0fz,42,42,0|ysw0g0,39,44,1|z3otnz,39,44,1|z3oto0,42,42,0|zbm33z,42,42,0|zbm340,39,44,1\",\"America/Santo_Domingo|,0,174,0|-15r0we0,87,175,0|-j6hz1d,87,175,0|-j6hz1c,49,63,0|-1nlws1,49,63,0|-1nlws0,62,42,1|-1hdww1,62,42,1|-1hdww0,49,63,0|-3fos1,49,63,0|-3fos0,43,59,1|2mshz,43,59,1|2msi0,49,63,0|fadvz,49,63,0|fadw0,43,59,1|jrghz,43,59,1|jrgi0,49,63,0|ydf7z,49,63,0|ydf80,43,59,1|12l8hz,43,59,1|12l8i0,49,63,0|1h3hvz,49,63,0|1h3hw0,43,59,1|1lf0hz,43,59,1|1lf0i0,49,63,0|1ztkjz,49,63,0|1ztkk0,43,59,1|246xtz,43,59,1|246xu0,49,63,0|2ijn7z,49,63,0|2ijn80,32,42,0|g36gnz,32,42,0|g36go0,49,63,0|g4z9zz,49,63,0|g4za00,32,42,0\",\"America/Sao_Paulo|,0,176,0|-t85jd8,39,44,0|-jylag1,39,44,0|-jylag0,40,45,1|-jpb141,40,45,1|-jpb140,39,44,0|-jfsd01,39,44,0|-jfsd00,40,45,1|-j6j3s1,40,45,1|-j6j3s0,39,44,0|-ahcyc1,39,44,0|-ahcyc0,40,45,1|-aad3o1,40,45,1|-aad3o0,39,44,0|-9yl101,39,44,0|-9yl100,40,45,1|-9sd141,40,45,1|-9sd140,39,44,0|-9ft3o1,39,44,0|-9ft3o0,40,45,1|-99j941,40,45,1|-99j940,39,44,0|-8wzbo1,39,44,0|-8wzbo0,40,45,1|-8scqg1,40,45,1|-8scqg0,39,44,0|-38cno1,39,44,0|-38cno0,40,45,1|-31nzs1,40,45,1|-31nzs0,39,44,0|-2kdp01,39,44,0|-2kdp00,40,45,1|-2hcig1,40,45,1|-2hcig0,39,44,0|-24qqc1,39,44,0|-24qqc0,40,45,1|-204541,40,45,1|-204540,39,44,0|-1nid01,39,44,0|-1nid00,40,45,1|-1hc7s1,40,45,1|-1hc7s0,39,44,0|-14qfo1,39,44,0|-14qfo0,40,45,1|-yifs1,40,45,1|-yifs0,39,44,0|89jcbz,39,44,0|89jcc0,40,45,1|8gdk7z,40,45,1|8gdk80,39,44,0|8rwgbz,39,44,0|8rwgc0,40,45,1|8xns7z,40,45,1|8xns80,39,44,0|9aodnz,39,44,0|9aodo0,40,45,1|9g2qvz,40,45,1|9g2qw0,39,44,0|9t1hnz,39,44,0|9t1ho0,40,45,1|9yfuvz,40,45,1|9yfuw0,39,44,0|abrkbz,39,44,0|abrkc0,40,45,1|ahvuvz,40,45,1|ahvuw0,39,44,0|auulnz,39,44,0|auulo0,40,45,1|b0yw7z,40,45,1|b0yw80,39,44,0|bdkobz,39,44,0|bdkoc0,40,45,1|bjc07z,40,45,1|bjc080,39,44,0|bwnpnz,39,44,0|bwnpo0,40,45,1|c1p47z,40,45,1|c1p480,39,44,0|cf0tnz,39,44,0|cf0to0,40,45,1|cli2vz,40,45,1|cli2w0,39,44,0|cxqwbz,39,44,0|cxqwc0,40,45,1|d485jz,40,45,1|d485k0,39,44,0|dggyzz,39,44,0|dggz00,40,45,1|dml9jz,40,45,1|dml9k0,39,44,0|dyu2zz,39,44,0|dyu300,40,45,1|e5oavz,40,45,1|e5oaw0,39,44,0|ehm0bz,39,44,0|ehm0c0,40,45,1|ep4avz,40,45,1|ep4aw0,39,44,0|f0n6zz,39,44,0|f0n700,40,45,1|f7hevz,40,45,1|f7hew0,39,44,0|fj0azz,39,44,0|fj0b00,40,45,1|fqkg7z,40,45,1|fqkg80,39,44,0|g23cbz,39,44,0|g23cc0,40,45,1|g8xk7z,40,45,1|g8xk80,39,44,0|gl6dnz,39,44,0|gl6do0,40,45,1|grnmvz,40,45,1|grnmw0,39,44,0|h4zcbz,39,44,0|h4zcc0,40,45,1|hadpjz,40,45,1|hadpk0,39,44,0|hmzhnz,39,44,0|hmzho0,40,45,1|ht3s7z,40,45,1|ht3s80,39,44,0|i6j6zz,39,44,0|i6j700,40,45,1|ic6tjz,40,45,1|ic6tk0,39,44,0|iofmzz,39,44,0|iofn00,40,45,1|iuww7z,40,45,1|iuww80,39,44,0|j88lnz,39,44,0|j88lo0,40,45,1|jdzxjz,40,45,1|jdzxk0,39,44,0|jpvsbz,39,44,0|jpvsc0,40,45,1|jwd1jz,40,45,1|jwd1k0,39,44,0|k8ytnz,39,44,0|k8yto0,40,45,1|kf347z,40,45,1|kf3480,39,44,0|krowbz,39,44,0|krowc0,40,45,1|ky65jz,40,45,1|ky65k0,39,44,0|laeyzz,39,44,0|laez00,40,45,1|lgw87z,40,45,1|lgw880,39,44,0|lt51nz,39,44,0|lt51o0,40,45,1|lzz9jz,40,45,1|lzz9k0,39,44,0|mc82zz,39,44,0|mc8300,40,45,1|micdjz,40,45,1|micdk0,39,44,0|muy5nz,39,44,0|muy5o0,40,45,1|n12g7z,40,45,1|n12g80,39,44,0|ndo8bz,39,44,0|ndo8c0,40,45,1|nk5hjz,40,45,1|nk5hk0,39,44,0|nweazz,39,44,0|nweb00,40,45,1|o2vk7z,40,45,1|o2vk80,39,44,0|of4dnz,39,44,0|of4do0,40,45,1|ollmvz,40,45,1|ollmw0,39,44,0|oxugbz,39,44,0|oxugc0,40,45,1|p4bpjz,40,45,1|p4bpk0,39,44,0|phnezz,39,44,0|phnf00,40,45,1|pn1s7z,40,45,1|pn1s80,39,44,0\",\"America/Scoresbysund|,0,177,0|-rvurxk,40,45,0|5ct1rz,40,45,0|5ct1s0,13,15,1|5lt4fz,13,15,1|5lt4g0,40,45,0|5v607z,40,45,0|5v6080,17,1,1|64iyrz,17,1,1|64iys0,13,15,0|6dw03z,13,15,0|6dw040,17,1,1|6n91fz,17,1,1|6n91g0,13,15,0|6wm2rz,13,15,0|6wm2s0,17,1,1|75z43z,17,1,1|75z440,13,15,0|7fc5fz,13,15,0|7fc5g0,17,1,1|7p25fz,17,1,1|7p25g0,13,15,0|7yf6rz,13,15,0|7yf6s0,17,1,1|87s83z,17,1,1|87s840,13,15,0|8h59fz,13,15,0|8h59g0,17,1,1|8qiarz,17,1,1|8qias0,13,15,0|8zvc3z,13,15,0|8zvc40,17,1,1|998dfz,17,1,1|998dg0,13,15,0|9ilerz,13,15,0|9iles0,17,1,1|9ryg3z,17,1,1|9ryg40,13,15,0|a1bhfz,13,15,0|a1bhg0,17,1,1|aaoirz,17,1,1|aaois0,13,15,0|ak1k3z,13,15,0|ak1k40,17,1,1|atrk3z,17,1,1|atrk40,13,15,0|b34lfz,13,15,0|b34lg0,17,1,1|bchmrz,17,1,1|bchms0,13,15,0|bluo3z,13,15,0|bluo40,17,1,1|bv7pfz,17,1,1|bv7pg0,13,15,0|c4kqrz,13,15,0|c4kqs0,17,1,1|cdxs3z,17,1,1|cdxs40,13,15,0|cnatfz,13,15,0|cnatg0,17,1,1|cwnurz,17,1,1|cwnus0,13,15,0|d60w3z,13,15,0|d60w40,17,1,1|dfdxfz,17,1,1|dfdxg0,13,15,0|dp3xfz,13,15,0|dp3xg0,17,1,1|dzwtfz,17,1,1|dzwtg0,13,15,0|e7u03z,13,15,0|e7u040,17,1,1|eimw3z,17,1,1|eimw40,13,15,0|eqk2rz,13,15,0|eqk2s0,17,1,1|f1cyrz,17,1,1|f1cys0,13,15,0|f9a5fz,13,15,0|f9a5g0,17,1,1|fkg03z,17,1,1|fkg040,13,15,0|fs083z,13,15,0|fs0840,17,1,1|g362rz,17,1,1|g362s0,13,15,0|gaqarz,13,15,0|gaqas0,17,1,1|glw5fz,17,1,1|glw5g0,13,15,0|gttc3z,13,15,0|gttc40,17,1,1|h4m83z,17,1,1|h4m840,13,15,0|hcjerz,13,15,0|hcjes0,17,1,1|hncarz,17,1,1|hncas0,13,15,0|hv9hfz,13,15,0|hv9hg0,17,1,1|i6fc3z,17,1,1|i6fc40,13,15,0|idzk3z,13,15,0|idzk40,17,1,1|ip5erz,17,1,1|ip5es0,13,15,0|iwpmrz,13,15,0|iwpms0,17,1,1|j7vhfz,17,1,1|j7vhg0,13,15,0|jffpfz,13,15,0|jffpg0,17,1,1|jqlk3z,17,1,1|jqlk40,13,15,0|jyiqrz,13,15,0|jyiqs0,17,1,1|k9bmrz,17,1,1|k9bms0,13,15,0|kh8tfz,13,15,0|kh8tg0,17,1,1|ks1pfz,17,1,1|ks1pg0,13,15,0|kzyw3z,13,15,0|kzyw40,17,1,1|lb4qrz,17,1,1|lb4qs0,13,15,0|lioyrz,13,15,0|lioys0,17,1,1|ltutfz,17,1,1|ltutg0,13,15,0|m1f1fz,13,15,0|m1f1g0,17,1,1|mckw3z,17,1,1|mckw40,13,15,0|mki2rz,13,15,0|mki2s0,17,1,1|mvayrz,17,1,1|mvays0,13,15,0|n385fz,13,15,0|n385g0,17,1,1|ne11fz,17,1,1|ne11g0,13,15,0|nly83z,13,15,0|nly840,17,1,1|nwr43z,17,1,1|nwr440,13,15,0|o4oarz,13,15,0|o4oas0,17,1,1|ofu5fz,17,1,1|ofu5g0,13,15,0|onedfz,13,15,0|onedg0,17,1,1|oyk83z,17,1,1|oyk840,13,15,0|p64g3z,13,15,0|p64g40,17,1,1|phaarz,17,1,1|phaas0,13,15,0|pp7hfz,13,15,0|pp7hg0,17,1,1|q00dfz,17,1,1|q00dg0,13,15,0|q7xk3z,13,15,0|q7xk40,17,1,1|qiqg3z,17,1,1|qiqg40,13,15,0|qqnmrz,13,15,0|qqnms0,17,1,1|r1thfz,17,1,1|r1thg0,13,15,0|r9dpfz,13,15,0|r9dpg0,17,1,1|rkjk3z,17,1,1|rkjk40,13,15,0|rs3s3z,13,15,0|rs3s40,17,1,1|s39mrz,17,1,1|s39ms0,13,15,0|sb6tfz,13,15,0|sb6tg0,17,1,1|slzpfz,17,1,1|slzpg0,13,15,0|stww3z,13,15,0|stww40,17,1,1|t4ps3z,17,1,1|t4ps40,13,15,0|tcmyrz,13,15,0|tcmys0,17,1,1|tnfurz,17,1,1|tnfus0,13,15,0|tvd1fz,13,15,0|tvd1g0,17,1,1|u6iw3z,17,1,1|u6iw40,13,15,0|ue343z,13,15,0|ue3440,17,1,1|up8yrz,17,1,1|up8ys0,13,15,0|uwt6rz,13,15,0|uwt6s0,17,1,1|v7z1fz,17,1,1|v7z1g0,13,15,0|vfw83z,13,15,0|vfw840,17,1,1|vqp43z,17,1,1|vqp440,13,15,0|vymarz,13,15,0|vymas0,17,1,1|w9f6rz,17,1,1|w9f6s0,13,15,0|whcdfz,13,15,0|whcdg0,17,1,1|wsi83z,17,1,1|wsi840,13,15,0|x02g3z,13,15,0|x02g40,17,1,1|xb8arz,17,1,1|xb8as0,13,15,0|xisirz,13,15,0|xisis0,17,1,1|xtydfz,17,1,1|xtydg0,13,15,0|y1ilfz,13,15,0|y1ilg0,17,1,1|ycog3z,17,1,1|ycog40,13,15,0|yklmrz,13,15,0|yklms0,17,1,1|yveirz,17,1,1|yveis0,13,15,0|z3bpfz,13,15,0|z3bpg0,17,1,1|ze4lfz,17,1,1|ze4lg0,13,15,0\",\"America/Sitka|,0,178,0|-1hc7qjz,0,179,0|-1078wa0,0,179,0|-1078w9z,51,40,0|-ek1w81,51,40,0|-ek1w80,68,66,1|-cq2tg1,68,66,1|-cq2tg0,69,66,1|-cnov01,69,66,1|-cnov00,51,40,0|-csc81,51,40,0|-csc80,57,66,1|-3fdo1,57,66,1|-3fdo0,51,40,0|5xqfz,51,40,0|5xqg0,57,66,1|faozz,57,66,1|fap00,51,40,0|ont3z,51,40,0|ont40,57,66,1|ydqbz,57,66,1|ydqc0,51,40,0|17qufz,51,40,0|17qug0,57,66,1|1h3szz,57,66,1|1h3t00,51,40,0|1qgx3z,51,40,0|1qgx40,57,66,1|1ztvnz,57,66,1|1ztvo0,51,40,0|23fl3z,51,40,0|23fl40,57,66,1|2ijybz,57,66,1|2ijyc0,51,40,0|2ooefz,51,40,0|2ooeg0,57,66,1|31a0zz,57,66,1|31a100,51,40,0|3an53z,51,40,0|3an540,57,66,1|3kd2bz,57,66,1|3kd2c0,51,40,0|3td7rz,51,40,0|3td7s0,57,66,1|4334zz,57,66,1|433500,51,40,0|4cg93z,51,40,0|4cg940,57,66,1|4lt7nz,57,66,1|4lt7o0,51,40,0|4v6brz,51,40,0|4v6bs0,57,66,1|54jabz,57,66,1|54jac0,51,40,0|5dwefz,51,40,0|5dweg0,57,66,1|5n9czz,57,66,1|5n9d00,51,40,0|5wmh3z,51,40,0|5wmh40,57,66,1|65zfnz,57,66,1|65zfo0,51,40,0|6fcjrz,51,40,0|6fcjs0,57,66,1|6p2gzz,57,66,1|6p2h00,51,40,0|6y2mfz,51,40,0|6y2mg0,57,66,1|77sjnz,57,66,1|77sjo0,36,37,0|79dybz,36,37,0|79dyc0,37,37,0|7h5qjz,37,37,0|7h5qk0,38,40,1|7qip3z,38,40,1|7qip40,37,37,0|7zvt7z,37,37,0|7zvt80,38,40,1|898rrz,38,40,1|898rs0,37,37,0|8ilvvz,37,37,0|8ilvw0,38,40,1|8ryufz,38,40,1|8ryug0,37,37,0|9092jz,37,37,0|9092k0,38,40,1|9aox3z,38,40,1|9aox40,37,37,0|9iz57z,37,37,0|9iz580,38,40,1|9tryfz,38,40,1|9tryg0,37,37,0|a1p7vz,37,37,0|a1p7w0,38,40,1|aci13z,38,40,1|aci140,37,37,0|akfajz,37,37,0|akfak0,38,40,1|av83rz,38,40,1|av83s0,37,37,0|b3ibvz,37,37,0|b3ibw0,38,40,1|bdy6fz,38,40,1|bdy6g0,37,37,0|bm8ejz,37,37,0|bm8ek0,38,40,1|bwo93z,38,40,1|bwo940,37,37,0|c4yh7z,37,37,0|c4yh80,38,40,1|cfrafz,38,40,1|cfrag0,37,37,0|cnojvz,37,37,0|cnojw0,38,40,1|cyhd3z,38,40,1|cyhd40,37,37,0|d6emjz,37,37,0|d6emk0,38,40,1|dh7frz,38,40,1|dh7fs0,37,37,0|dphnvz,37,37,0|dphnw0,38,40,1|dzxifz,38,40,1|dzxig0,37,37,0|e87qjz,37,37,0|e87qk0,38,40,1|einl3z,38,40,1|einl40,37,37,0|eqxt7z,37,37,0|eqxt80,38,40,1|f1dnrz,38,40,1|f1dns0,37,37,0|f9nvvz,37,37,0|f9nvw0,38,40,1|fkgp3z,38,40,1|fkgp40,37,37,0|fsdyjz,37,37,0|fsdyk0,38,40,1|g36rrz,38,40,1|g36rs0,37,37,0|gb417z,37,37,0|gb4180,38,40,1|glwufz,38,40,1|glwug0,37,37,0|gu72jz,37,37,0|gu72k0,38,40,1|h4mx3z,38,40,1|h4mx40,37,37,0|hcx57z,37,37,0|hcx580,38,40,1|hnczrz,38,40,1|hnczs0,37,37,0|hvn7vz,37,37,0|hvn7w0,38,40,1|i6g13z,38,40,1|i6g140,37,37,0|iedajz,37,37,0|iedak0,38,40,1|ip63rz,38,40,1|ip63s0,37,37,0|ix3d7z,37,37,0|ix3d80,38,40,1|j7w6fz,38,40,1|j7w6g0,37,37,0|jeqjvz,37,37,0|jeqjw0,38,40,1|jqz7rz,38,40,1|jqz7s0,37,37,0|jxgmjz,37,37,0|jxgmk0,38,40,1|k9pafz,38,40,1|k9pag0,37,37,0|kg6p7z,37,37,0|kg6p80,38,40,1|ksfd3z,38,40,1|ksfd40,37,37,0|kz9qjz,37,37,0|kz9qk0,38,40,1|lbiefz,38,40,1|lbieg0,37,37,0|lhzt7z,37,37,0|lhzt80,38,40,1|lu8h3z,38,40,1|lu8h40,37,37,0|m0pvvz,37,37,0|m0pvw0,38,40,1|mcyjrz,38,40,1|mcyjs0,37,37,0|mjfyjz,37,37,0|mjfyk0,38,40,1|mvomfz,38,40,1|mvomg0,37,37,0|n2617z,37,37,0|n26180,38,40,1|neep3z,38,40,1|neep40,37,37,0|nkw3vz,37,37,0|nkw3w0,38,40,1|nx4rrz,38,40,1|nx4rs0,37,37,0|o3z57z,37,37,0|o3z580,38,40,1|og7t3z,38,40,1|og7t40,37,37,0|omp7vz,37,37,0|omp7w0,38,40,1|oyxvrz,38,40,1|oyxvs0,37,37,0|p5fajz,37,37,0|p5fak0,38,40,1|phnyfz,38,40,1|phnyg0,37,37,0|po5d7z,37,37,0|po5d80,38,40,1|q0e13z,38,40,1|q0e140,37,37,0|q6vfvz,37,37,0|q6vfw0,38,40,1|qj43rz,38,40,1|qj43s0,37,37,0|qpyh7z,37,37,0|qpyh80,38,40,1|r2753z,38,40,1|r27540,37,37,0|r8ojvz,37,37,0|r8ojw0,38,40,1|rkx7rz,38,40,1|rkx7s0,37,37,0|rremjz,37,37,0|rremk0,38,40,1|s3nafz,38,40,1|s3nag0,37,37,0|sa4p7z,37,37,0|sa4p80,38,40,1|smdd3z,38,40,1|smdd40,37,37,0|ssurvz,37,37,0|ssurw0,38,40,1|t53frz,38,40,1|t53fs0,37,37,0|tbkujz,37,37,0|tbkuk0,38,40,1|tntifz,38,40,1|tntig0,37,37,0|tunvvz,37,37,0|tunvw0,38,40,1|u6wjrz,38,40,1|u6wjs0,37,37,0|uddyjz,37,37,0|uddyk0,38,40,1|upmmfz,38,40,1|upmmg0,37,37,0|uw417z,37,37,0|uw4180,38,40,1|v8cp3z,38,40,1|v8cp40,37,37,0|veu3vz,37,37,0|veu3w0,38,40,1|vr2rrz,38,40,1|vr2rs0,37,37,0|vxk6jz,37,37,0|vxk6k0,38,40,1|w9sufz,38,40,1|w9sug0,37,37,0|wgn7vz,37,37,0|wgn7w0,38,40,1|wsvvrz,38,40,1|wsvvs0,37,37,0|wzdajz,37,37,0|wzdak0,38,40,1|xblyfz,38,40,1|xblyg0,37,37,0|xi3d7z,37,37,0|xi3d80,38,40,1|xuc13z,38,40,1|xuc140,37,37,0|y0tfvz,37,37,0|y0tfw0,38,40,1|yd23rz,38,40,1|yd23s0,37,37,0|yjjijz,37,37,0|yjjik0,38,40,1|yvs6fz,38,40,1|yvs6g0,37,37,0|z29l7z,37,37,0|z29l80,38,40,1|zei93z,38,40,1|zei940,37,37,0\",\"America/St_Barthelemy|,0,41,0|-u6m79w,32,42,0\",\"America/St_Johns|,0,99,0|-18vs8wk,24,99,0|-ris3cl,24,99,0|-ris3ck,72,100,1|-rag64l,72,100,1|-rag64k,24,99,0|-qzp20l,24,99,0|-qzp20k,72,100,1|-qpm64l,72,100,1|-qpm64k,24,99,0|-qfsmcl,24,99,0|-qfsmck,72,100,1|-qapd4l,72,100,1|-qapd4k,24,99,0|-px4ecl,24,99,0|-px4eck,72,100,1|-pnrfsl,72,100,1|-pnrfsk,24,99,0|-peebol,24,99,0|-peebok,72,100,1|-p51d4l,72,100,1|-p51d4k,24,99,0|-ovbacl,24,99,0|-ovback,72,100,1|-ombagl,72,100,1|-ombagk,24,99,0|-ocl7ol,24,99,0|-ocl7ok,72,100,1|-o3l7sl,72,100,1|-o3l7sk,24,99,0|-ntv50l,24,99,0|-ntv50k,72,100,1|-nkv54l,72,100,1|-nkv54k,24,99,0|-nb52cl,24,99,0|-nb52ck,72,100,1|-n252gl,72,100,1|-n252gk,24,99,0|-msezol,24,99,0|-msezok,72,100,1|-mj214l,72,100,1|-mj214k,24,99,0|-m9ox0l,24,99,0|-m9ox0k,72,100,1|-m0bygl,72,100,1|-m0bygk,24,99,0|-lqlvol,24,99,0|-lqlvok,72,100,1|-lhlvsl,72,100,1|-lhlvsk,24,99,0|-l7vt0l,24,99,0|-l7vt0k,72,100,1|-kyvt4l,72,100,1|-kyvt4k,24,99,0|-kp5qcl,24,99,0|-kp5qck,72,100,1|-kg5qgl,72,100,1|-kg5qgk,24,99,0|-k6fnol,24,99,0|-k6fnok,72,100,1|-jxfnsl,72,100,1|-jxfnsk,24,99,0|-jnpl0l,24,99,0|-jnpl0k,72,100,1|-jecmgl,72,100,1|-jecmgk,24,99,0|-j4mjol,24,99,0|-j4mjok,72,100,1|-ivmjsl,72,100,1|-ivmjsk,24,99,0|-ilwh0l,24,99,0|-ilwh0k,72,100,1|-icwh4l,72,100,1|-icwh4k,24,99,0|-i52u8l,24,99,0|-i52u8k,24,101,0|-i36ee1,24,101,0|-i36ee0,72,102,1|-hu6ei1,72,102,1|-hu6ei0,24,101,0|-hk3aa1,24,101,0|-hk3aa0,72,102,1|-hcj521,72,102,1|-hcj520,24,101,0|-h1d7m1,24,101,0|-h1d7m0,72,102,1|-gtt2e1,72,102,1|-gtt2e0,24,101,0|-gin4y1,24,101,0|-gin4y0,72,102,1|-gb2zq1,72,102,1|-gb2zq0,24,101,0|-fzk3m1,24,101,0|-fzk3m0,72,102,1|-fscx21,72,102,1|-fscx20,24,101,0|-fgu0y1,24,101,0|-fgu0y0,72,102,1|-f99vq1,72,102,1|-f99vq0,24,101,0|-ey3ya1,24,101,0|-ey3ya0,72,102,1|-eqjt21,72,102,1|-eqjt20,24,101,0|-efdvm1,24,101,0|-efdvm0,25,102,1|-cq2tg1,25,102,1|-cq2tg0,26,102,1|-cnp7i1,26,102,1|-cnp7i0,24,101,0|-cc6be1,24,101,0|-cc6be0,72,102,1|-c4m661,72,102,1|-c4m660,24,101,0|-btg8q1,24,101,0|-btg8q0,72,102,1|-blw3i1,72,102,1|-blw3i0,24,101,0|-baq621,24,101,0|-baq620,72,102,1|-b360u1,72,102,1|-b360u0,24,101,0|-as03e1,24,101,0|-as03e0,72,102,1|-akfy61,72,102,1|-akfy60,24,101,0|-a8x221,24,101,0|-a8x220,72,102,1|-a1cwu1,72,102,1|-a1cwu0,24,101,0|-9qwwq1,24,101,0|-9qwwq0,72,102,1|-9izsu1,72,102,1|-9izsu0,24,101,0|-986u21,24,101,0|-986u20,72,102,1|-909q61,72,102,1|-909q60,24,101,0|-8pgre1,24,101,0|-8pgre0,72,102,1|-8hjni1,72,102,1|-8hjni0,24,101,0|-86qoq1,24,101,0|-86qoq0,72,102,1|-7ytku1,72,102,1|-7ytku0,24,101,0|-7o0m21,24,101,0|-7o0m20,72,102,1|-7g3i61,72,102,1|-7g3i60,24,101,0|-74xkq1,24,101,0|-74xkq0,72,102,1|-6x0gu1,72,102,1|-6x0gu0,24,101,0|-6m7i21,24,101,0|-6m7i20,72,102,1|-6eae61,72,102,1|-6eae60,24,101,0|-63hfe1,24,101,0|-63hfe0,72,102,1|-5vkbi1,72,102,1|-5vkbi0,24,101,0|-5krcq1,24,101,0|-5krcq0,72,102,1|-5cu8u1,72,102,1|-5cu8u0,24,101,0|-521a21,24,101,0|-521a20,72,102,1|-4sbcu1,72,102,1|-4sbcu0,24,101,0|-4iy8q1,24,101,0|-4iy8q0,72,102,1|-49la61,72,102,1|-49la60,24,101,0|-408621,24,101,0|-408620,72,102,1|-3qv7i1,72,102,1|-3qv7i0,24,101,0|-3hi3e1,24,101,0|-3hi3e0,72,102,1|-3854u1,72,102,1|-3854u0,24,101,0|-2ys0q1,24,101,0|-2ys0q0,72,102,1|-2pf261,72,102,1|-2pf260,24,101,0|-2g1y21,24,101,0|-2g1y20,72,102,1|-26c0u1,72,102,1|-26c0u0,24,101,0|-1xbve1,24,101,0|-1xbve0,72,102,1|-1nly61,72,102,1|-1nly60,24,101,0|-1e8u21,24,101,0|-1e8u20,72,102,1|-14vvi1,72,102,1|-14vvi0,24,101,0|-vire1,24,101,0|-vire0,72,102,1|-m5su1,72,102,1|-m5su0,24,101,0|-csoq1,24,101,0|-csoq0,72,102,1|-3fq61,72,102,1|-3fq60,24,101,0|5xdxz,24,101,0|5xdy0,72,102,1|fachz,72,102,1|faci0,24,101,0|onglz,24,101,0|ongm0,72,102,1|yddtz,72,102,1|yddu0,24,101,0|17qhxz,24,101,0|17qhy0,72,102,1|1h3ghz,72,102,1|1h3gi0,24,101,0|1qgklz,24,101,0|1qgkm0,72,102,1|1ztj5z,72,102,1|1ztj60,24,101,0|296n9z,24,101,0|296na0,72,102,1|2ijltz,72,102,1|2ijlu0,24,101,0|2rwpxz,24,101,0|2rwpy0,72,102,1|319ohz,72,102,1|319oi0,24,101,0|3amslz,24,101,0|3amsm0,72,102,1|3kcptz,72,102,1|3kcpu0,24,101,0|3tcv9z,24,101,0|3tcva0,72,102,1|432shz,72,102,1|432si0,24,101,0|4cfwlz,24,101,0|4cfwm0,72,102,1|4lsv5z,72,102,1|4lsv60,24,101,0|4v5z9z,24,101,0|4v5za0,72,102,1|54ixtz,72,102,1|54ixu0,24,101,0|5dw1xz,24,101,0|5dw1y0,72,102,1|5n90hz,72,102,1|5n90i0,24,101,0|5wm4lz,24,101,0|5wm4m0,72,102,1|65z35z,72,102,1|65z360,24,101,0|6fc79z,24,101,0|6fc7a0,72,102,1|6p24hz,72,102,1|6p24i0,24,101,0|6y29xz,24,101,0|6y29y0,72,102,1|77s75z,72,102,1|77s760,24,101,0|7h5b9z,24,101,0|7h5ba0,72,102,1|7qi9tz,72,102,1|7qi9u0,24,101,0|7zvdxz,24,101,0|7zvdy0,72,102,1|898chz,72,102,1|898ci0,24,101,0|8ilglz,24,101,0|8ilgm0,72,102,1|8ryf5z,72,102,1|8ryf60,24,101,0|908hrn,24,101,0|908hro,72,102,1|9aocbn,72,102,1|9aocbo,24,101,0|9iykfn,24,101,0|9iykfo,88,147,1|9travn,88,147,1|9travo,24,101,0|a1on3n,24,101,0|a1on3o,72,102,1|achgbn,72,102,1|achgbo,24,101,0|akeprn,24,101,0|akepro,72,102,1|av7izn,72,102,1|av7izo,24,101,0|b3hr3n,24,101,0|b3hr3o,72,102,1|bdxlnn,72,102,1|bdxlno,24,101,0|bm7trn,24,101,0|bm7tro,72,102,1|bwnobn,72,102,1|bwnobo,24,101,0|c4xwfn,24,101,0|c4xwfo,72,102,1|cfqpnn,72,102,1|cfqpno,24,101,0|cnnz3n,24,101,0|cnnz3o,72,102,1|cygsbn,72,102,1|cygsbo,24,101,0|d6e1rn,24,101,0|d6e1ro,72,102,1|dh6uzn,72,102,1|dh6uzo,24,101,0|dph33n,24,101,0|dph33o,72,102,1|dzwxnn,72,102,1|dzwxno,24,101,0|e875rn,24,101,0|e875ro,72,102,1|ein0bn,72,102,1|ein0bo,24,101,0|eqx8fn,24,101,0|eqx8fo,72,102,1|f1d2zn,72,102,1|f1d2zo,24,101,0|f9nb3n,24,101,0|f9nb3o,72,102,1|fkg4bn,72,102,1|fkg4bo,24,101,0|fsddrn,24,101,0|fsddro,72,102,1|g366zn,72,102,1|g366zo,24,101,0|gb3gfn,24,101,0|gb3gfo,72,102,1|glw9nn,72,102,1|glw9no,24,101,0|gu6hrn,24,101,0|gu6hro,72,102,1|h4mcbn,72,102,1|h4mcbo,24,101,0|hcwkfn,24,101,0|hcwkfo,72,102,1|hncezn,72,102,1|hncezo,24,101,0|hvmn3n,24,101,0|hvmn3o,72,102,1|i6fgbn,72,102,1|i6fgbo,24,101,0|iecprn,24,101,0|iecpro,72,102,1|ip5izn,72,102,1|ip5izo,24,101,0|ix2sfn,24,101,0|ix2sfo,72,102,1|j7vlnn,72,102,1|j7vlno,24,101,0|jepz3n,24,101,0|jepz3o,72,102,1|jqymzn,72,102,1|jqymzo,24,101,0|jxg1rn,24,101,0|jxg1ro,72,102,1|k9opnn,72,102,1|k9opno,24,101,0|kg64fn,24,101,0|kg64fo,72,102,1|ksesbn,72,102,1|ksesbo,24,101,0|kz95rn,24,101,0|kz95ro,72,102,1|lbhtnn,72,102,1|lbhtno,24,101,0|lhz8fn,24,101,0|lhz8fo,72,102,1|lu81tz,72,102,1|lu81u0,24,101,0|m0pglz,24,101,0|m0pgm0,72,102,1|mcy4hz,72,102,1|mcy4i0,24,101,0|mjfj9z,24,101,0|mjfja0,72,102,1|mvo75z,72,102,1|mvo760,24,101,0|n25lxz,24,101,0|n25ly0,72,102,1|nee9tz,72,102,1|nee9u0,24,101,0|nkvolz,24,101,0|nkvom0,72,102,1|nx4chz,72,102,1|nx4ci0,24,101,0|o3ypxz,24,101,0|o3ypy0,72,102,1|og7dtz,72,102,1|og7du0,24,101,0|omoslz,24,101,0|omosm0,72,102,1|oyxghz,72,102,1|oyxgi0,24,101,0|p5ev9z,24,101,0|p5eva0,72,102,1|phnj5z,72,102,1|phnj60,24,101,0|po4xxz,24,101,0|po4xy0,72,102,1|q0dltz,72,102,1|q0dlu0,24,101,0|q6v0lz,24,101,0|q6v0m0,72,102,1|qj3ohz,72,102,1|qj3oi0,24,101,0|qpy1xz,24,101,0|qpy1y0,72,102,1|r26ptz,72,102,1|r26pu0,24,101,0|r8o4lz,24,101,0|r8o4m0,72,102,1|rkwshz,72,102,1|rkwsi0,24,101,0|rre79z,24,101,0|rre7a0,72,102,1|s3mv5z,72,102,1|s3mv60,24,101,0|sa49xz,24,101,0|sa49y0,72,102,1|smcxtz,72,102,1|smcxu0,24,101,0|ssuclz,24,101,0|ssucm0,72,102,1|t530hz,72,102,1|t530i0,24,101,0|tbkf9z,24,101,0|tbkfa0,72,102,1|tnt35z,72,102,1|tnt360,24,101,0|tunglz,24,101,0|tungm0,72,102,1|u6w4hz,72,102,1|u6w4i0,24,101,0|uddj9z,24,101,0|uddja0,72,102,1|upm75z,72,102,1|upm760,24,101,0|uw3lxz,24,101,0|uw3ly0,72,102,1|v8c9tz,72,102,1|v8c9u0,24,101,0|vetolz,24,101,0|vetom0,72,102,1|vr2chz,72,102,1|vr2ci0,24,101,0|vxjr9z,24,101,0|vxjra0,72,102,1|w9sf5z,72,102,1|w9sf60,24,101,0|wgmslz,24,101,0|wgmsm0,72,102,1|wsvghz,72,102,1|wsvgi0,24,101,0|wzcv9z,24,101,0|wzcva0,72,102,1|xblj5z,72,102,1|xblj60,24,101,0|xi2xxz,24,101,0|xi2xy0,72,102,1|xubltz,72,102,1|xublu0,24,101,0|y0t0lz,24,101,0|y0t0m0,72,102,1|yd1ohz,72,102,1|yd1oi0,24,101,0|yjj39z,24,101,0|yjj3a0,72,102,1|yvrr5z,72,102,1|yvrr60,24,101,0|z295xz,24,101,0|z295y0,72,102,1|zehttz,72,102,1|zehtu0,24,101,0\",\"America/St_Kitts|,0,41,0|-u6m79w,32,42,0\",\"America/St_Lucia|,0,41,0|-u6m79w,32,42,0\",\"America/St_Thomas|,0,41,0|-u6m79w,32,42,0\",\"America/St_Vincent|,0,41,0|-u6m79w,32,42,0\",\"America/Swift_Current|,0,180,0|-xkq9d4,50,66,0|-qzosc1,50,66,0|-qzosc0,52,62,1|-qplwg1,52,62,1|-qplwg0,50,66,0|-ek1z01,50,66,0|-ek1z00,58,62,1|-cq2tg1,58,62,1|-cq2tg0,59,62,1|-cnoxs1,59,62,1|-cnoxs0,50,66,0|-ccvz01,50,66,0|-ccvz00,52,62,1|-c48xs1,52,62,1|-c48xs0,50,66,0|-bu5wc1,50,66,0|-bu5wc0,52,62,1|-bm8sg1,52,62,1|-bm8sg0,50,66,0|-bbfto1,50,66,0|-bbfto0,52,62,1|-b3ips1,52,62,1|-b3ips0,50,66,0|-aspr01,50,66,0|-aspr00,52,62,1|-aksn41,52,62,1|-aksn40,50,66,0|-6m78c1,50,66,0|-6m78c0,52,62,1|-6cu9s1,52,62,1|-6cu9s0,50,66,0|-5kr301,50,66,0|-5kr300,52,62,1|-5be4g1,52,62,1|-5be4g0,50,66,0|-5210c1,50,66,0|-5210c0,52,62,1|-4u3wg1,52,62,1|-4u3wg0,50,66,0|-4ixz01,50,66,0|-4ixz00,52,62,1|-4bdts1,52,62,1|-4bdts0,50,66,0|17qrnz,50,66,0|17qro0,45,62,0\",\"America/Tegucigalpa|,0,181,0|-pfzh6k,45,62,0|91ojbz,45,62,0|91ojc0,46,63,1|998ojz,46,63,1|998ok0,45,62,0|9kelzz,45,62,0|9kem00,46,63,1|9ryr7z,46,63,1|9ryr80,45,62,0|iyvsnz,45,62,0|iyvso0,46,63,1|j3m37z,46,63,1|j3m380,45,62,0\",\"America/Thule|,0,182,0|-rvuj9g,32,42,0|b34zbz,32,42,0|b34zc0,54,44,1|bchxvz,54,44,1|bchxw0,32,42,0|blv1zz,32,42,0|blv200,54,44,1|bv80jz,54,44,1|bv80k0,32,42,0|c4y3bz,32,42,0|c4y3c0,54,44,1|cfqwjz,54,44,1|cfqwk0,32,42,0|cno5zz,32,42,0|cno600,54,44,1|cygz7z,54,44,1|cygz80,32,42,0|d6e8nz,32,42,0|d6e8o0,54,44,1|dh71vz,54,44,1|dh71w0,32,42,0|dph9zz,32,42,0|dpha00,54,44,1|dzx4jz,54,44,1|dzx4k0,32,42,0|e87cnz,32,42,0|e87co0,54,44,1|ein77z,54,44,1|ein780,32,42,0|eqxfbz,32,42,0|eqxfc0,54,44,1|f1d9vz,54,44,1|f1d9w0,32,42,0|f9nhzz,32,42,0|f9ni00,54,44,1|fkgb7z,54,44,1|fkgb80,32,42,0|fsdknz,32,42,0|fsdko0,54,44,1|g36dvz,54,44,1|g36dw0,32,42,0|gb3nbz,32,42,0|gb3nc0,54,44,1|glwgjz,54,44,1|glwgk0,32,42,0|gu6onz,32,42,0|gu6oo0,54,44,1|h4mj7z,54,44,1|h4mj80,32,42,0|hcwrbz,32,42,0|hcwrc0,54,44,1|hnclvz,54,44,1|hnclw0,32,42,0|hvmtzz,32,42,0|hvmu00,54,44,1|i6fn7z,54,44,1|i6fn80,32,42,0|iecwnz,32,42,0|iecwo0,54,44,1|ip5pvz,54,44,1|ip5pw0,32,42,0|ix2zbz,32,42,0|ix2zc0,54,44,1|j7vsjz,54,44,1|j7vsk0,32,42,0|jeq5zz,32,42,0|jeq600,54,44,1|jqytvz,54,44,1|jqytw0,32,42,0|jxg8nz,32,42,0|jxg8o0,54,44,1|k9owjz,54,44,1|k9owk0,32,42,0|kg6bbz,32,42,0|kg6bc0,54,44,1|ksez7z,54,44,1|ksez80,32,42,0|kz9cnz,32,42,0|kz9co0,54,44,1|lbi0jz,54,44,1|lbi0k0,32,42,0|lhzfbz,32,42,0|lhzfc0,54,44,1|lu837z,54,44,1|lu8380,32,42,0|m0phzz,32,42,0|m0pi00,54,44,1|mcy5vz,54,44,1|mcy5w0,32,42,0|mjfknz,32,42,0|mjfko0,54,44,1|mvo8jz,54,44,1|mvo8k0,32,42,0|n25nbz,32,42,0|n25nc0,54,44,1|neeb7z,54,44,1|neeb80,32,42,0|nkvpzz,32,42,0|nkvq00,54,44,1|nx4dvz,54,44,1|nx4dw0,32,42,0|o3yrbz,32,42,0|o3yrc0,54,44,1|og7f7z,54,44,1|og7f80,32,42,0|omotzz,32,42,0|omou00,54,44,1|oyxhvz,54,44,1|oyxhw0,32,42,0|p5ewnz,32,42,0|p5ewo0,54,44,1|phnkjz,54,44,1|phnkk0,32,42,0|po4zbz,32,42,0|po4zc0,54,44,1|q0dn7z,54,44,1|q0dn80,32,42,0|q6v1zz,32,42,0|q6v200,54,44,1|qj3pvz,54,44,1|qj3pw0,32,42,0|qpy3bz,32,42,0|qpy3c0,54,44,1|r26r7z,54,44,1|r26r80,32,42,0|r8o5zz,32,42,0|r8o600,54,44,1|rkwtvz,54,44,1|rkwtw0,32,42,0|rre8nz,32,42,0|rre8o0,54,44,1|s3mwjz,54,44,1|s3mwk0,32,42,0|sa4bbz,32,42,0|sa4bc0,54,44,1|smcz7z,54,44,1|smcz80,32,42,0|ssudzz,32,42,0|ssue00,54,44,1|t531vz,54,44,1|t531w0,32,42,0|tbkgnz,32,42,0|tbkgo0,54,44,1|tnt4jz,54,44,1|tnt4k0,32,42,0|tunhzz,32,42,0|tuni00,54,44,1|u6w5vz,54,44,1|u6w5w0,32,42,0|uddknz,32,42,0|uddko0,54,44,1|upm8jz,54,44,1|upm8k0,32,42,0|uw3nbz,32,42,0|uw3nc0,54,44,1|v8cb7z,54,44,1|v8cb80,32,42,0|vetpzz,32,42,0|vetq00,54,44,1|vr2dvz,54,44,1|vr2dw0,32,42,0|vxjsnz,32,42,0|vxjso0,54,44,1|w9sgjz,54,44,1|w9sgk0,32,42,0|wgmtzz,32,42,0|wgmu00,54,44,1|wsvhvz,54,44,1|wsvhw0,32,42,0|wzcwnz,32,42,0|wzcwo0,54,44,1|xblkjz,54,44,1|xblkk0,32,42,0|xi2zbz,32,42,0|xi2zc0,54,44,1|xubn7z,54,44,1|xubn80,32,42,0|y0t1zz,32,42,0|y0t200,54,44,1|yd1pvz,54,44,1|yd1pw0,32,42,0|yjj4nz,32,42,0|yjj4o0,54,44,1|yvrsjz,54,44,1|yvrsk0,32,42,0|z297bz,32,42,0|z297c0,54,44,1|zehv7z,54,44,1|zehv80,32,42,0\",\"America/Thunder_Bay|,0,183,0|-1353bh0,45,62,0|-vbavc1,45,62,0|-vbavc0,49,63,0|-ek24k1,49,63,0|-ek24k0,70,42,1|-cq2tg1,70,42,1|-cq2tg0,71,42,1|-cnp3c1,71,42,1|-cnp3c0,49,63,0|5xi3z,49,63,0|5xi40,62,42,1|fagnz,62,42,1|fago0,49,63,0|onkrz,49,63,0|onks0,62,42,1|ydhzz,62,42,1|ydi00,49,63,0|17qm3z,49,63,0|17qm40,62,42,1|1h3knz,62,42,1|1h3ko0,49,63,0|296rfz,49,63,0|296rg0,62,42,1|2ijpzz,62,42,1|2ijq00,49,63,0|2rwu3z,49,63,0|2rwu40,62,42,1|319snz,62,42,1|319so0,49,63,0|3amwrz,49,63,0|3amws0,62,42,1|3kctzz,62,42,1|3kcu00,49,63,0|3tczfz,49,63,0|3tczg0,62,42,1|432wnz,62,42,1|432wo0,49,63,0|4cg0rz,49,63,0|4cg0s0,62,42,1|4lszbz,62,42,1|4lszc0,49,63,0|4v63fz,49,63,0|4v63g0,62,42,1|54j1zz,62,42,1|54j200,49,63,0|5dw63z,49,63,0|5dw640,62,42,1|5n94nz,62,42,1|5n94o0,49,63,0|5wm8rz,49,63,0|5wm8s0,62,42,1|65z7bz,62,42,1|65z7c0,49,63,0|6fcbfz,49,63,0|6fcbg0,62,42,1|6p28nz,62,42,1|6p28o0,49,63,0|6y2e3z,49,63,0|6y2e40,62,42,1|77sbbz,62,42,1|77sbc0,49,63,0|7h5ffz,49,63,0|7h5fg0,62,42,1|7qidzz,62,42,1|7qie00,49,63,0|7zvi3z,49,63,0|7zvi40,62,42,1|898gnz,62,42,1|898go0,49,63,0|8ilkrz,49,63,0|8ilks0,62,42,1|8ryjbz,62,42,1|8ryjc0,49,63,0|908rfz,49,63,0|908rg0,62,42,1|9aolzz,62,42,1|9aom00,49,63,0|9iyu3z,49,63,0|9iyu40,62,42,1|9trnbz,62,42,1|9trnc0,49,63,0|a1owrz,49,63,0|a1ows0,62,42,1|achpzz,62,42,1|achq00,49,63,0|akezfz,49,63,0|akezg0,62,42,1|av7snz,62,42,1|av7so0,49,63,0|b3i0rz,49,63,0|b3i0s0,62,42,1|bdxvbz,62,42,1|bdxvc0,49,63,0|bm83fz,49,63,0|bm83g0,62,42,1|bwnxzz,62,42,1|bwny00,49,63,0|c4y63z,49,63,0|c4y640,62,42,1|cfqzbz,62,42,1|cfqzc0,49,63,0|cno8rz,49,63,0|cno8s0,62,42,1|cyh1zz,62,42,1|cyh200,49,63,0|d6ebfz,49,63,0|d6ebg0,62,42,1|dh74nz,62,42,1|dh74o0,49,63,0|dphcrz,49,63,0|dphcs0,62,42,1|dzx7bz,62,42,1|dzx7c0,49,63,0|e87ffz,49,63,0|e87fg0,62,42,1|ein9zz,62,42,1|eina00,49,63,0|eqxi3z,49,63,0|eqxi40,62,42,1|f1dcnz,62,42,1|f1dco0,49,63,0|f9nkrz,49,63,0|f9nks0,62,42,1|fkgdzz,62,42,1|fkge00,49,63,0|fsdnfz,49,63,0|fsdng0,62,42,1|g36gnz,62,42,1|g36go0,49,63,0|gb3q3z,49,63,0|gb3q40,62,42,1|glwjbz,62,42,1|glwjc0,49,63,0|gu6rfz,49,63,0|gu6rg0,62,42,1|h4mlzz,62,42,1|h4mm00,49,63,0|hcwu3z,49,63,0|hcwu40,62,42,1|hnconz,62,42,1|hncoo0,49,63,0|hvmwrz,49,63,0|hvmws0,62,42,1|i6fpzz,62,42,1|i6fq00,49,63,0|ieczfz,49,63,0|ieczg0,62,42,1|ip5snz,62,42,1|ip5so0,49,63,0|ix323z,49,63,0|ix3240,62,42,1|j7vvbz,62,42,1|j7vvc0,49,63,0|jeq8rz,49,63,0|jeq8s0,62,42,1|jqywnz,62,42,1|jqywo0,49,63,0|jxgbfz,49,63,0|jxgbg0,62,42,1|k9ozbz,62,42,1|k9ozc0,49,63,0|kg6e3z,49,63,0|kg6e40,62,42,1|ksf1zz,62,42,1|ksf200,49,63,0|kz9ffz,49,63,0|kz9fg0,62,42,1|lbi3bz,62,42,1|lbi3c0,49,63,0|lhzi3z,49,63,0|lhzi40,62,42,1|lu85zz,62,42,1|lu8600,49,63,0|m0pkrz,49,63,0|m0pks0,62,42,1|mcy8nz,62,42,1|mcy8o0,49,63,0|mjfnfz,49,63,0|mjfng0,62,42,1|mvobbz,62,42,1|mvobc0,49,63,0|n25q3z,49,63,0|n25q40,62,42,1|needzz,62,42,1|neee00,49,63,0|nkvsrz,49,63,0|nkvss0,62,42,1|nx4gnz,62,42,1|nx4go0,49,63,0|o3yu3z,49,63,0|o3yu40,62,42,1|og7hzz,62,42,1|og7i00,49,63,0|omowrz,49,63,0|omows0,62,42,1|oyxknz,62,42,1|oyxko0,49,63,0|p5ezfz,49,63,0|p5ezg0,62,42,1|phnnbz,62,42,1|phnnc0,49,63,0|po523z,49,63,0|po5240,62,42,1|q0dpzz,62,42,1|q0dq00,49,63,0|q6v4rz,49,63,0|q6v4s0,62,42,1|qj3snz,62,42,1|qj3so0,49,63,0|qpy63z,49,63,0|qpy640,62,42,1|r26tzz,62,42,1|r26u00,49,63,0|r8o8rz,49,63,0|r8o8s0,62,42,1|rkwwnz,62,42,1|rkwwo0,49,63,0|rrebfz,49,63,0|rrebg0,62,42,1|s3mzbz,62,42,1|s3mzc0,49,63,0|sa4e3z,49,63,0|sa4e40,62,42,1|smd1zz,62,42,1|smd200,49,63,0|ssugrz,49,63,0|ssugs0,62,42,1|t534nz,62,42,1|t534o0,49,63,0|tbkjfz,49,63,0|tbkjg0,62,42,1|tnt7bz,62,42,1|tnt7c0,49,63,0|tunkrz,49,63,0|tunks0,62,42,1|u6w8nz,62,42,1|u6w8o0,49,63,0|uddnfz,49,63,0|uddng0,62,42,1|upmbbz,62,42,1|upmbc0,49,63,0|uw3q3z,49,63,0|uw3q40,62,42,1|v8cdzz,62,42,1|v8ce00,49,63,0|vetsrz,49,63,0|vetss0,62,42,1|vr2gnz,62,42,1|vr2go0,49,63,0|vxjvfz,49,63,0|vxjvg0,62,42,1|w9sjbz,62,42,1|w9sjc0,49,63,0|wgmwrz,49,63,0|wgmws0,62,42,1|wsvknz,62,42,1|wsvko0,49,63,0|wzczfz,49,63,0|wzczg0,62,42,1|xblnbz,62,42,1|xblnc0,49,63,0|xi323z,49,63,0|xi3240,62,42,1|xubpzz,62,42,1|xubq00,49,63,0|y0t4rz,49,63,0|y0t4s0,62,42,1|yd1snz,62,42,1|yd1so0,49,63,0|yjj7fz,49,63,0|yjj7g0,62,42,1|yvrvbz,62,42,1|yvrvc0,49,63,0|z29a3z,49,63,0|z29a40,62,42,1|zehxzz,62,42,1|zehy00,49,63,0\",\"America/Tijuana|,0,184,0|-p1u1s0,50,66,0|-o0a9w1,50,66,0|-o0a9w0,51,40,0|-m7mhw1,51,40,0|-m7mhw0,50,66,0|-kf64k1,50,66,0|-kf64k0,51,40,0|-k84cg1,51,40,0|-k84cg0,57,66,1|-jyrdw1,57,66,1|-jyrdw0,51,40,0|-eg90g1,51,40,0|-eg90g0,68,66,1|-cq2tg1,68,66,1|-cq2tg0,69,66,1|-clhdw1,69,66,1|-clhdw0,51,40,0|-bcgxs1,51,40,0|-bcgxs0,57,66,1|-axv381,57,66,1|-axv380,51,40,0|-86qf01,51,40,0|-86qf00,57,66,1|-7yt8c1,57,66,1|-7yt8c0,51,40,0|-7o0cc1,51,40,0|-7o0cc0,57,66,1|-7g35o1,57,66,1|-7g35o0,51,40,0|-74xb01,51,40,0|-74xb00,57,66,1|-6x04c1,57,66,1|-6x04c0,51,40,0|-6m78c1,51,40,0|-6m78c0,57,66,1|-6ea1o1,57,66,1|-6ea1o0,51,40,0|-63h5o1,51,40,0|-63h5o0,57,66,1|-5vjz01,57,66,1|-5vjz00,51,40,0|-5kr301,51,40,0|-5kr300,57,66,1|-5ctwc1,57,66,1|-5ctwc0,51,40,0|-5210c1,51,40,0|-5210c0,57,66,1|-4u3to1,57,66,1|-4u3to0,51,40,0|3an53z,51,40,0|3an540,57,66,1|3kd2bz,57,66,1|3kd2c0,51,40,0|3td7rz,51,40,0|3td7s0,57,66,1|4334zz,57,66,1|433500,51,40,0|4cg93z,51,40,0|4cg940,57,66,1|4lt7nz,57,66,1|4lt7o0,51,40,0|4v6brz,51,40,0|4v6bs0,57,66,1|54jabz,57,66,1|54jac0,51,40,0|5dwefz,51,40,0|5dweg0,57,66,1|5n9czz,57,66,1|5n9d00,51,40,0|5wmh3z,51,40,0|5wmh40,57,66,1|65zfnz,57,66,1|65zfo0,51,40,0|6fcjrz,51,40,0|6fcjs0,57,66,1|6p2gzz,57,66,1|6p2h00,51,40,0|6y2mfz,51,40,0|6y2mg0,57,66,1|77sjnz,57,66,1|77sjo0,51,40,0|7h5nrz,51,40,0|7h5ns0,57,66,1|7qimbz,57,66,1|7qimc0,51,40,0|7zvqfz,51,40,0|7zvqg0,57,66,1|898ozz,57,66,1|898p00,51,40,0|8ilt3z,51,40,0|8ilt40,57,66,1|8ryrnz,57,66,1|8ryro0,51,40,0|908zrz,51,40,0|908zs0,57,66,1|9aoubz,57,66,1|9aouc0,51,40,0|9iz2fz,51,40,0|9iz2g0,57,66,1|9trvnz,57,66,1|9trvo0,51,40,0|a1p53z,51,40,0|a1p540,57,66,1|achybz,57,66,1|achyc0,51,40,0|akf7rz,51,40,0|akf7s0,57,66,1|av80zz,57,66,1|av8100,51,40,0|b3i93z,51,40,0|b3i940,57,66,1|bdy3nz,57,66,1|bdy3o0,51,40,0|bm8brz,51,40,0|bm8bs0,57,66,1|bwo6bz,57,66,1|bwo6c0,51,40,0|c4yefz,51,40,0|c4yeg0,57,66,1|cfr7nz,57,66,1|cfr7o0,51,40,0|cnoh3z,51,40,0|cnoh40,57,66,1|cyhabz,57,66,1|cyhac0,51,40,0|d6ejrz,51,40,0|d6ejs0,57,66,1|dh7czz,57,66,1|dh7d00,51,40,0|dphl3z,51,40,0|dphl40,57,66,1|dzxfnz,57,66,1|dzxfo0,51,40,0|e87nrz,51,40,0|e87ns0,57,66,1|einibz,57,66,1|einic0,51,40,0|eqxqfz,51,40,0|eqxqg0,57,66,1|f1dkzz,57,66,1|f1dl00,51,40,0|f9nt3z,51,40,0|f9nt40,57,66,1|fkgmbz,57,66,1|fkgmc0,51,40,0|fsdvrz,51,40,0|fsdvs0,57,66,1|g36ozz,57,66,1|g36p00,51,40,0|gb3yfz,51,40,0|gb3yg0,57,66,1|glwrnz,57,66,1|glwro0,51,40,0|gu6zrz,51,40,0|gu6zs0,57,66,1|h4mubz,57,66,1|h4muc0,51,40,0|hcx2fz,51,40,0|hcx2g0,57,66,1|hncwzz,57,66,1|hncx00,51,40,0|hvn53z,51,40,0|hvn540,57,66,1|i6fybz,57,66,1|i6fyc0,51,40,0|ied7rz,51,40,0|ied7s0,57,66,1|ip60zz,57,66,1|ip6100,51,40,0|ix3afz,51,40,0|ix3ag0,57,66,1|j7w3nz,57,66,1|j7w3o0,51,40,0|jftd3z,51,40,0|jftd40,57,66,1|jqm6bz,57,66,1|jqm6c0,51,40,0|jywefz,51,40,0|jyweg0,57,66,1|k9c8zz,57,66,1|k9c900,51,40,0|khmh3z,51,40,0|khmh40,57,66,1|ks2bnz,57,66,1|ks2bo0,51,40,0|kz9nrz,51,40,0|kz9ns0,57,66,1|lbibnz,57,66,1|lbibo0,51,40,0|lhzqfz,51,40,0|lhzqg0,57,66,1|lu8ebz,57,66,1|lu8ec0,51,40,0|m0pt3z,51,40,0|m0pt40,57,66,1|mcygzz,57,66,1|mcyh00,51,40,0|mjfvrz,51,40,0|mjfvs0,57,66,1|mvojnz,57,66,1|mvojo0,51,40,0|n25yfz,51,40,0|n25yg0,57,66,1|neembz,57,66,1|neemc0,51,40,0|nkw13z,51,40,0|nkw140,57,66,1|nx4ozz,57,66,1|nx4p00,51,40,0|o3z2fz,51,40,0|o3z2g0,57,66,1|og7qbz,57,66,1|og7qc0,51,40,0|omp53z,51,40,0|omp540,57,66,1|oyxszz,57,66,1|oyxt00,51,40,0|p5f7rz,51,40,0|p5f7s0,57,66,1|phnvnz,57,66,1|phnvo0,51,40,0|po5afz,51,40,0|po5ag0,57,66,1|q0dybz,57,66,1|q0dyc0,51,40,0|q6vd3z,51,40,0|q6vd40,57,66,1|qj40zz,57,66,1|qj4100,51,40,0|qpyefz,51,40,0|qpyeg0,57,66,1|r272bz,57,66,1|r272c0,51,40,0|r8oh3z,51,40,0|r8oh40,57,66,1|rkx4zz,57,66,1|rkx500,51,40,0|rrejrz,51,40,0|rrejs0,57,66,1|s3n7nz,57,66,1|s3n7o0,51,40,0|sa4mfz,51,40,0|sa4mg0,57,66,1|smdabz,57,66,1|smdac0,51,40,0|ssup3z,51,40,0|ssup40,57,66,1|t53czz,57,66,1|t53d00,51,40,0|tbkrrz,51,40,0|tbkrs0,57,66,1|tntfnz,57,66,1|tntfo0,51,40,0|tunt3z,51,40,0|tunt40,57,66,1|u6wgzz,57,66,1|u6wh00,51,40,0|uddvrz,51,40,0|uddvs0,57,66,1|upmjnz,57,66,1|upmjo0,51,40,0|uw3yfz,51,40,0|uw3yg0,57,66,1|v8cmbz,57,66,1|v8cmc0,51,40,0|veu13z,51,40,0|veu140,57,66,1|vr2ozz,57,66,1|vr2p00,51,40,0|vxk3rz,51,40,0|vxk3s0,57,66,1|w9srnz,57,66,1|w9sro0,51,40,0|wgn53z,51,40,0|wgn540,57,66,1|wsvszz,57,66,1|wsvt00,51,40,0|wzd7rz,51,40,0|wzd7s0,57,66,1|xblvnz,57,66,1|xblvo0,51,40,0|xi3afz,51,40,0|xi3ag0,57,66,1|xubybz,57,66,1|xubyc0,51,40,0|y0td3z,51,40,0|y0td40,57,66,1|yd20zz,57,66,1|yd2100,51,40,0|yjjfrz,51,40,0|yjjfs0,57,66,1|yvs3nz,57,66,1|yvs3o0,51,40,0|z29ifz,51,40,0|z29ig0,57,66,1|zei6bz,57,66,1|zei6c0,51,40,0\",\"America/Toronto|,0,185,0|-1353das,49,63,0|-qzoxw1,49,63,0|-qzoxw0,62,42,1|-qpm201,62,42,1|-qpm200,49,63,0|-qhn4u1,49,63,0|-qhn4u0,62,42,1|-q6w4w1,62,42,1|-q6w4w0,49,63,0|-px5wk1,49,63,0|-px5wk0,62,42,1|-pplww1,62,42,1|-pplww0,49,63,0|-pdpwk1,49,63,0|-pdpwk0,62,42,1|-p7e7c1,62,42,1|-p7e7c0,49,63,0|-ouztw1,49,63,0|-ouztw0,62,42,1|-ooiko1,62,42,1|-ooiko0,49,63,0|-oc9r81,49,63,0|-oc9r80,62,42,1|-o5si01,62,42,1|-o5si00,49,63,0|-ntwn81,49,63,0|-ntwn80,62,42,1|-nmpgo1,62,42,1|-nmpgo0,49,63,0|-nb6kk1,49,63,0|-nb6kk0,62,42,1|-n3ze01,62,42,1|-n3ze00,49,63,0|-msghw1,49,63,0|-msghw0,62,42,1|-ml9bc1,62,42,1|-ml9bc0,49,63,0|-m9qf81,49,63,0|-m9qf80,62,42,1|-m26a01,62,42,1|-m26a00,49,63,0|-lr0ck1,49,63,0|-lr0ck0,62,42,1|-lj38o1,62,42,1|-lj38o0,49,63,0|-l8a9w1,49,63,0|-l8a9w0,62,42,1|-l0d601,62,42,1|-l0d600,49,63,0|-kpk781,49,63,0|-kpk780,62,42,1|-khn3c1,62,42,1|-khn3c0,49,63,0|-k6u4k1,49,63,0|-k6u4k0,62,42,1|-jyx0o1,62,42,1|-jyx0o0,49,63,0|-jnr381,49,63,0|-jnr380,62,42,1|-jg6y01,62,42,1|-jg6y00,49,63,0|-j510k1,49,63,0|-j510k0,62,42,1|-ix3wo1,62,42,1|-ix3wo0,49,63,0|-imaxw1,49,63,0|-imaxw0,62,42,1|-iedu01,62,42,1|-iedu00,49,63,0|-i3kv81,49,63,0|-i3kv80,62,42,1|-hvnrc1,62,42,1|-hvnrc0,49,63,0|-hkusk1,49,63,0|-hkusk0,62,42,1|-hcxoo1,62,42,1|-hcxoo0,49,63,0|-h24pw1,49,63,0|-h24pw0,62,42,1|-gu7m01,62,42,1|-gu7m00,49,63,0|-gjen81,49,63,0|-gjen80,62,42,1|-gbhjc1,62,42,1|-gbhjc0,49,63,0|-g0blw1,49,63,0|-g0blw0,62,42,1|-fsrgo1,62,42,1|-fsrgo0,49,63,0|-fhlj81,49,63,0|-fhlj80,62,42,1|-ek24k1,62,42,1|-ek24k0,70,42,1|-cq2tg1,70,42,1|-cq2tg0,71,42,1|-cnp3c1,71,42,1|-cnp3c0,49,63,0|-ccw4k1,49,63,0|-ccw4k0,62,42,1|-c4z0o1,62,42,1|-c4z0o0,49,63,0|-bu67g1,49,63,0|-bu67g0,62,42,1|-bm93k1,62,42,1|-bm93k0,49,63,0|-bbg4s1,49,63,0|-bbg4s0,62,42,1|-b3j0w1,62,42,1|-b3j0w0,49,63,0|-asq241,49,63,0|-asq240,62,42,1|-ahka81,62,42,1|-ahka80,49,63,0|-a9mv81,49,63,0|-a9mv80,62,42,1|-9yu201,62,42,1|-9yu200,49,63,0|-9qwsk1,49,63,0|-9qwsk0,62,42,1|-9izoo1,62,42,1|-9izoo0,49,63,0|-986pw1,49,63,0|-986pw0,62,42,1|-909m01,62,42,1|-909m00,49,63,0|-8pgn81,49,63,0|-8pgn80,62,42,1|-8hjjc1,62,42,1|-8hjjc0,49,63,0|-86qkk1,49,63,0|-86qkk0,62,42,1|-7ytgo1,62,42,1|-7ytgo0,49,63,0|-7o0hw1,49,63,0|-7o0hw0,62,42,1|-7g3e01,62,42,1|-7g3e00,49,63,0|-74xgk1,49,63,0|-74xgk0,62,42,1|-6x0co1,62,42,1|-6x0co0,49,63,0|-6m7dw1,49,63,0|-6m7dw0,62,42,1|-6cufc1,62,42,1|-6cufc0,49,63,0|-63hb81,49,63,0|-63hb80,62,42,1|-5u4co1,62,42,1|-5u4co0,49,63,0|-5kr8k1,49,63,0|-5kr8k0,62,42,1|-5bea01,62,42,1|-5bea00,49,63,0|-5215w1,49,63,0|-5215w0,62,42,1|-4sb8o1,62,42,1|-4sb8o0,49,63,0|-4iy4k1,49,63,0|-4iy4k0,62,42,1|-49l601,62,42,1|-49l600,49,63,0|-4081w1,49,63,0|-4081w0,62,42,1|-3qv3c1,62,42,1|-3qv3c0,49,63,0|-3hhz81,49,63,0|-3hhz80,62,42,1|-3850o1,62,42,1|-3850o0,49,63,0|-2yrwk1,49,63,0|-2yrwk0,62,42,1|-2pey01,62,42,1|-2pey00,49,63,0|-2g1tw1,49,63,0|-2g1tw0,62,42,1|-26bwo1,62,42,1|-26bwo0,49,63,0|-1xbr81,49,63,0|-1xbr80,62,42,1|-1nlu01,62,42,1|-1nlu00,49,63,0|-1e8pw1,49,63,0|-1e8pw0,62,42,1|-14vrc1,62,42,1|-14vrc0,49,63,0|-vin81,49,63,0|-vin80,62,42,1|-m5oo1,62,42,1|-m5oo0,49,63,0|-cskk1,49,63,0|-cskk0,62,42,1|-3fm01,62,42,1|-3fm00,49,63,0|5xi3z,49,63,0|5xi40,62,42,1|fagnz,62,42,1|fago0,49,63,0|onkrz,49,63,0|onks0,62,42,1|ydhzz,62,42,1|ydi00,49,63,0|17qm3z,49,63,0|17qm40,62,42,1|1h3knz,62,42,1|1h3ko0,49,63,0|1qgorz,49,63,0|1qgos0,62,42,1|1ztnbz,62,42,1|1ztnc0,49,63,0|296rfz,49,63,0|296rg0,62,42,1|2ijpzz,62,42,1|2ijq00,49,63,0|2rwu3z,49,63,0|2rwu40,62,42,1|319snz,62,42,1|319so0,49,63,0|3amwrz,49,63,0|3amws0,62,42,1|3kctzz,62,42,1|3kcu00,49,63,0|3tczfz,49,63,0|3tczg0,62,42,1|432wnz,62,42,1|432wo0,49,63,0|4cg0rz,49,63,0|4cg0s0,62,42,1|4lszbz,62,42,1|4lszc0,49,63,0|4v63fz,49,63,0|4v63g0,62,42,1|54j1zz,62,42,1|54j200,49,63,0|5dw63z,49,63,0|5dw640,62,42,1|5n94nz,62,42,1|5n94o0,49,63,0|5wm8rz,49,63,0|5wm8s0,62,42,1|65z7bz,62,42,1|65z7c0,49,63,0|6fcbfz,49,63,0|6fcbg0,62,42,1|6p28nz,62,42,1|6p28o0,49,63,0|6y2e3z,49,63,0|6y2e40,62,42,1|77sbbz,62,42,1|77sbc0,49,63,0|7h5ffz,49,63,0|7h5fg0,62,42,1|7qidzz,62,42,1|7qie00,49,63,0|7zvi3z,49,63,0|7zvi40,62,42,1|898gnz,62,42,1|898go0,49,63,0|8ilkrz,49,63,0|8ilks0,62,42,1|8ryjbz,62,42,1|8ryjc0,49,63,0|908rfz,49,63,0|908rg0,62,42,1|9aolzz,62,42,1|9aom00,49,63,0|9iyu3z,49,63,0|9iyu40,62,42,1|9trnbz,62,42,1|9trnc0,49,63,0|a1owrz,49,63,0|a1ows0,62,42,1|achpzz,62,42,1|achq00,49,63,0|akezfz,49,63,0|akezg0,62,42,1|av7snz,62,42,1|av7so0,49,63,0|b3i0rz,49,63,0|b3i0s0,62,42,1|bdxvbz,62,42,1|bdxvc0,49,63,0|bm83fz,49,63,0|bm83g0,62,42,1|bwnxzz,62,42,1|bwny00,49,63,0|c4y63z,49,63,0|c4y640,62,42,1|cfqzbz,62,42,1|cfqzc0,49,63,0|cno8rz,49,63,0|cno8s0,62,42,1|cyh1zz,62,42,1|cyh200,49,63,0|d6ebfz,49,63,0|d6ebg0,62,42,1|dh74nz,62,42,1|dh74o0,49,63,0|dphcrz,49,63,0|dphcs0,62,42,1|dzx7bz,62,42,1|dzx7c0,49,63,0|e87ffz,49,63,0|e87fg0,62,42,1|ein9zz,62,42,1|eina00,49,63,0|eqxi3z,49,63,0|eqxi40,62,42,1|f1dcnz,62,42,1|f1dco0,49,63,0|f9nkrz,49,63,0|f9nks0,62,42,1|fkgdzz,62,42,1|fkge00,49,63,0|fsdnfz,49,63,0|fsdng0,62,42,1|g36gnz,62,42,1|g36go0,49,63,0|gb3q3z,49,63,0|gb3q40,62,42,1|glwjbz,62,42,1|glwjc0,49,63,0|gu6rfz,49,63,0|gu6rg0,62,42,1|h4mlzz,62,42,1|h4mm00,49,63,0|hcwu3z,49,63,0|hcwu40,62,42,1|hnconz,62,42,1|hncoo0,49,63,0|hvmwrz,49,63,0|hvmws0,62,42,1|i6fpzz,62,42,1|i6fq00,49,63,0|ieczfz,49,63,0|ieczg0,62,42,1|ip5snz,62,42,1|ip5so0,49,63,0|ix323z,49,63,0|ix3240,62,42,1|j7vvbz,62,42,1|j7vvc0,49,63,0|jeq8rz,49,63,0|jeq8s0,62,42,1|jqywnz,62,42,1|jqywo0,49,63,0|jxgbfz,49,63,0|jxgbg0,62,42,1|k9ozbz,62,42,1|k9ozc0,49,63,0|kg6e3z,49,63,0|kg6e40,62,42,1|ksf1zz,62,42,1|ksf200,49,63,0|kz9ffz,49,63,0|kz9fg0,62,42,1|lbi3bz,62,42,1|lbi3c0,49,63,0|lhzi3z,49,63,0|lhzi40,62,42,1|lu85zz,62,42,1|lu8600,49,63,0|m0pkrz,49,63,0|m0pks0,62,42,1|mcy8nz,62,42,1|mcy8o0,49,63,0|mjfnfz,49,63,0|mjfng0,62,42,1|mvobbz,62,42,1|mvobc0,49,63,0|n25q3z,49,63,0|n25q40,62,42,1|needzz,62,42,1|neee00,49,63,0|nkvsrz,49,63,0|nkvss0,62,42,1|nx4gnz,62,42,1|nx4go0,49,63,0|o3yu3z,49,63,0|o3yu40,62,42,1|og7hzz,62,42,1|og7i00,49,63,0|omowrz,49,63,0|omows0,62,42,1|oyxknz,62,42,1|oyxko0,49,63,0|p5ezfz,49,63,0|p5ezg0,62,42,1|phnnbz,62,42,1|phnnc0,49,63,0|po523z,49,63,0|po5240,62,42,1|q0dpzz,62,42,1|q0dq00,49,63,0|q6v4rz,49,63,0|q6v4s0,62,42,1|qj3snz,62,42,1|qj3so0,49,63,0|qpy63z,49,63,0|qpy640,62,42,1|r26tzz,62,42,1|r26u00,49,63,0|r8o8rz,49,63,0|r8o8s0,62,42,1|rkwwnz,62,42,1|rkwwo0,49,63,0|rrebfz,49,63,0|rrebg0,62,42,1|s3mzbz,62,42,1|s3mzc0,49,63,0|sa4e3z,49,63,0|sa4e40,62,42,1|smd1zz,62,42,1|smd200,49,63,0|ssugrz,49,63,0|ssugs0,62,42,1|t534nz,62,42,1|t534o0,49,63,0|tbkjfz,49,63,0|tbkjg0,62,42,1|tnt7bz,62,42,1|tnt7c0,49,63,0|tunkrz,49,63,0|tunks0,62,42,1|u6w8nz,62,42,1|u6w8o0,49,63,0|uddnfz,49,63,0|uddng0,62,42,1|upmbbz,62,42,1|upmbc0,49,63,0|uw3q3z,49,63,0|uw3q40,62,42,1|v8cdzz,62,42,1|v8ce00,49,63,0|vetsrz,49,63,0|vetss0,62,42,1|vr2gnz,62,42,1|vr2go0,49,63,0|vxjvfz,49,63,0|vxjvg0,62,42,1|w9sjbz,62,42,1|w9sjc0,49,63,0|wgmwrz,49,63,0|wgmws0,62,42,1|wsvknz,62,42,1|wsvko0,49,63,0|wzczfz,49,63,0|wzczg0,62,42,1|xblnbz,62,42,1|xblnc0,49,63,0|xi323z,49,63,0|xi3240,62,42,1|xubpzz,62,42,1|xubq00,49,63,0|y0t4rz,49,63,0|y0t4s0,62,42,1|yd1snz,62,42,1|yd1so0,49,63,0|yjj7fz,49,63,0|yjj7g0,62,42,1|yvrvbz,62,42,1|yvrvc0,49,63,0|z29a3z,49,63,0|z29a40,62,42,1|zehxzz,62,42,1|zehy00,49,63,0\",\"America/Tortola|,0,41,0|-u6m79w,32,42,0\",\"America/Vancouver|,0,186,0|-18vrvv8,51,40,0|-qzopk1,51,40,0|-qzopk0,57,66,1|-qplto1,57,66,1|-qplto0,51,40,0|-ek1w81,51,40,0|-ek1w80,68,66,1|-cq2tg1,68,66,1|-cq2tg0,69,66,1|-cnov01,69,66,1|-cnov00,51,40,0|-ccvw81,51,40,0|-ccvw80,57,66,1|-c4ysc1,57,66,1|-c4ysc0,51,40,0|-bu5tk1,51,40,0|-bu5tk0,57,66,1|-bm8po1,57,66,1|-bm8po0,51,40,0|-bbfqw1,51,40,0|-bbfqw0,57,66,1|-b3in01,57,66,1|-b3in00,51,40,0|-aspo81,51,40,0|-aspo80,57,66,1|-akskc1,57,66,1|-akskc0,51,40,0|-a9mmw1,51,40,0|-a9mmw0,57,66,1|-a22ho1,57,66,1|-a22ho0,51,40,0|-9qwk81,51,40,0|-9qwk80,57,66,1|-9izgc1,57,66,1|-9izgc0,51,40,0|-986hk1,51,40,0|-986hk0,57,66,1|-909do1,57,66,1|-909do0,51,40,0|-8pgew1,51,40,0|-8pgew0,57,66,1|-8hjb01,57,66,1|-8hjb00,51,40,0|-86qc81,51,40,0|-86qc80,57,66,1|-7yt8c1,57,66,1|-7yt8c0,51,40,0|-7o09k1,51,40,0|-7o09k0,57,66,1|-7g35o1,57,66,1|-7g35o0,51,40,0|-74x881,51,40,0|-74x880,57,66,1|-6x04c1,57,66,1|-6x04c0,51,40,0|-6m75k1,51,40,0|-6m75k0,57,66,1|-6ea1o1,57,66,1|-6ea1o0,51,40,0|-63h2w1,51,40,0|-63h2w0,57,66,1|-5vjz01,57,66,1|-5vjz00,51,40,0|-5kr081,51,40,0|-5kr080,57,66,1|-5ctwc1,57,66,1|-5ctwc0,51,40,0|-520xk1,51,40,0|-520xk0,57,66,1|-4u3to1,57,66,1|-4u3to0,51,40,0|-4ixw81,51,40,0|-4ixw80,57,66,1|-4bdr01,57,66,1|-4bdr00,51,40,0|-407tk1,51,40,0|-407tk0,57,66,1|-3quv01,57,66,1|-3quv00,51,40,0|-3hhqw1,51,40,0|-3hhqw0,57,66,1|-384sc1,57,66,1|-384sc0,51,40,0|-2yro81,51,40,0|-2yro80,57,66,1|-2pepo1,57,66,1|-2pepo0,51,40,0|-2g1lk1,51,40,0|-2g1lk0,57,66,1|-26boc1,57,66,1|-26boc0,51,40,0|-1xbiw1,51,40,0|-1xbiw0,57,66,1|-1nllo1,57,66,1|-1nllo0,51,40,0|-1e8hk1,51,40,0|-1e8hk0,57,66,1|-14vj01,57,66,1|-14vj00,51,40,0|-view1,51,40,0|-view0,57,66,1|-m5gc1,57,66,1|-m5gc0,51,40,0|-csc81,51,40,0|-csc80,57,66,1|-3fdo1,57,66,1|-3fdo0,51,40,0|5xqfz,51,40,0|5xqg0,57,66,1|faozz,57,66,1|fap00,51,40,0|ont3z,51,40,0|ont40,57,66,1|ydqbz,57,66,1|ydqc0,51,40,0|17qufz,51,40,0|17qug0,57,66,1|1h3szz,57,66,1|1h3t00,51,40,0|1qgx3z,51,40,0|1qgx40,57,66,1|1ztvnz,57,66,1|1ztvo0,51,40,0|296zrz,51,40,0|296zs0,57,66,1|2ijybz,57,66,1|2ijyc0,51,40,0|2rx2fz,51,40,0|2rx2g0,57,66,1|31a0zz,57,66,1|31a100,51,40,0|3an53z,51,40,0|3an540,57,66,1|3kd2bz,57,66,1|3kd2c0,51,40,0|3td7rz,51,40,0|3td7s0,57,66,1|4334zz,57,66,1|433500,51,40,0|4cg93z,51,40,0|4cg940,57,66,1|4lt7nz,57,66,1|4lt7o0,51,40,0|4v6brz,51,40,0|4v6bs0,57,66,1|54jabz,57,66,1|54jac0,51,40,0|5dwefz,51,40,0|5dweg0,57,66,1|5n9czz,57,66,1|5n9d00,51,40,0|5wmh3z,51,40,0|5wmh40,57,66,1|65zfnz,57,66,1|65zfo0,51,40,0|6fcjrz,51,40,0|6fcjs0,57,66,1|6p2gzz,57,66,1|6p2h00,51,40,0|6y2mfz,51,40,0|6y2mg0,57,66,1|77sjnz,57,66,1|77sjo0,51,40,0|7h5nrz,51,40,0|7h5ns0,57,66,1|7qimbz,57,66,1|7qimc0,51,40,0|7zvqfz,51,40,0|7zvqg0,57,66,1|898ozz,57,66,1|898p00,51,40,0|8ilt3z,51,40,0|8ilt40,57,66,1|8ryrnz,57,66,1|8ryro0,51,40,0|908zrz,51,40,0|908zs0,57,66,1|9aoubz,57,66,1|9aouc0,51,40,0|9iz2fz,51,40,0|9iz2g0,57,66,1|9trvnz,57,66,1|9trvo0,51,40,0|a1p53z,51,40,0|a1p540,57,66,1|achybz,57,66,1|achyc0,51,40,0|akf7rz,51,40,0|akf7s0,57,66,1|av80zz,57,66,1|av8100,51,40,0|b3i93z,51,40,0|b3i940,57,66,1|bdy3nz,57,66,1|bdy3o0,51,40,0|bm8brz,51,40,0|bm8bs0,57,66,1|bwo6bz,57,66,1|bwo6c0,51,40,0|c4yefz,51,40,0|c4yeg0,57,66,1|cfr7nz,57,66,1|cfr7o0,51,40,0|cnoh3z,51,40,0|cnoh40,57,66,1|cyhabz,57,66,1|cyhac0,51,40,0|d6ejrz,51,40,0|d6ejs0,57,66,1|dh7czz,57,66,1|dh7d00,51,40,0|dphl3z,51,40,0|dphl40,57,66,1|dzxfnz,57,66,1|dzxfo0,51,40,0|e87nrz,51,40,0|e87ns0,57,66,1|einibz,57,66,1|einic0,51,40,0|eqxqfz,51,40,0|eqxqg0,57,66,1|f1dkzz,57,66,1|f1dl00,51,40,0|f9nt3z,51,40,0|f9nt40,57,66,1|fkgmbz,57,66,1|fkgmc0,51,40,0|fsdvrz,51,40,0|fsdvs0,57,66,1|g36ozz,57,66,1|g36p00,51,40,0|gb3yfz,51,40,0|gb3yg0,57,66,1|glwrnz,57,66,1|glwro0,51,40,0|gu6zrz,51,40,0|gu6zs0,57,66,1|h4mubz,57,66,1|h4muc0,51,40,0|hcx2fz,51,40,0|hcx2g0,57,66,1|hncwzz,57,66,1|hncx00,51,40,0|hvn53z,51,40,0|hvn540,57,66,1|i6fybz,57,66,1|i6fyc0,51,40,0|ied7rz,51,40,0|ied7s0,57,66,1|ip60zz,57,66,1|ip6100,51,40,0|ix3afz,51,40,0|ix3ag0,57,66,1|j7w3nz,57,66,1|j7w3o0,51,40,0|jeqh3z,51,40,0|jeqh40,57,66,1|jqz4zz,57,66,1|jqz500,51,40,0|jxgjrz,51,40,0|jxgjs0,57,66,1|k9p7nz,57,66,1|k9p7o0,51,40,0|kg6mfz,51,40,0|kg6mg0,57,66,1|ksfabz,57,66,1|ksfac0,51,40,0|kz9nrz,51,40,0|kz9ns0,57,66,1|lbibnz,57,66,1|lbibo0,51,40,0|lhzqfz,51,40,0|lhzqg0,57,66,1|lu8ebz,57,66,1|lu8ec0,51,40,0|m0pt3z,51,40,0|m0pt40,57,66,1|mcygzz,57,66,1|mcyh00,51,40,0|mjfvrz,51,40,0|mjfvs0,57,66,1|mvojnz,57,66,1|mvojo0,51,40,0|n25yfz,51,40,0|n25yg0,57,66,1|neembz,57,66,1|neemc0,51,40,0|nkw13z,51,40,0|nkw140,57,66,1|nx4ozz,57,66,1|nx4p00,51,40,0|o3z2fz,51,40,0|o3z2g0,57,66,1|og7qbz,57,66,1|og7qc0,51,40,0|omp53z,51,40,0|omp540,57,66,1|oyxszz,57,66,1|oyxt00,51,40,0|p5f7rz,51,40,0|p5f7s0,57,66,1|phnvnz,57,66,1|phnvo0,51,40,0|po5afz,51,40,0|po5ag0,57,66,1|q0dybz,57,66,1|q0dyc0,51,40,0|q6vd3z,51,40,0|q6vd40,57,66,1|qj40zz,57,66,1|qj4100,51,40,0|qpyefz,51,40,0|qpyeg0,57,66,1|r272bz,57,66,1|r272c0,51,40,0|r8oh3z,51,40,0|r8oh40,57,66,1|rkx4zz,57,66,1|rkx500,51,40,0|rrejrz,51,40,0|rrejs0,57,66,1|s3n7nz,57,66,1|s3n7o0,51,40,0|sa4mfz,51,40,0|sa4mg0,57,66,1|smdabz,57,66,1|smdac0,51,40,0|ssup3z,51,40,0|ssup40,57,66,1|t53czz,57,66,1|t53d00,51,40,0|tbkrrz,51,40,0|tbkrs0,57,66,1|tntfnz,57,66,1|tntfo0,51,40,0|tunt3z,51,40,0|tunt40,57,66,1|u6wgzz,57,66,1|u6wh00,51,40,0|uddvrz,51,40,0|uddvs0,57,66,1|upmjnz,57,66,1|upmjo0,51,40,0|uw3yfz,51,40,0|uw3yg0,57,66,1|v8cmbz,57,66,1|v8cmc0,51,40,0|veu13z,51,40,0|veu140,57,66,1|vr2ozz,57,66,1|vr2p00,51,40,0|vxk3rz,51,40,0|vxk3s0,57,66,1|w9srnz,57,66,1|w9sro0,51,40,0|wgn53z,51,40,0|wgn540,57,66,1|wsvszz,57,66,1|wsvt00,51,40,0|wzd7rz,51,40,0|wzd7s0,57,66,1|xblvnz,57,66,1|xblvo0,51,40,0|xi3afz,51,40,0|xi3ag0,57,66,1|xubybz,57,66,1|xubyc0,51,40,0|y0td3z,51,40,0|y0td40,57,66,1|yd20zz,57,66,1|yd2100,51,40,0|yjjfrz,51,40,0|yjjfs0,57,66,1|yvs3nz,57,66,1|yvs3o0,51,40,0|z29ifz,51,40,0|z29ig0,57,66,1|zei6bz,57,66,1|zei6c0,51,40,0\",\"America/Whitehorse|,0,187,0|-1079tno,36,37,0|-qzoms1,36,37,0|-qzoms0,64,40,1|-qplqw1,64,40,1|-qplqw0,36,37,0|-qess41,36,37,0|-qess40,64,40,1|-q6kps1,64,40,1|-q6kps0,36,37,0|-ek1tg1,36,37,0|-ek1tg0,65,40,1|-cq2tg1,65,40,1|-cq2tg0,66,40,1|-cnos81,66,40,1|-cnos80,36,37,0|-2g1oc1,36,37,0|-2g1oc0,67,66,1|-26boc1,67,66,1|-26boc0,36,37,0|-1cspo1,36,37,0|-1cspo0,51,40,0|5dwefz,51,40,0|5dweg0,57,66,1|5n9czz,57,66,1|5n9d00,51,40,0|5wmh3z,51,40,0|5wmh40,57,66,1|65zfnz,57,66,1|65zfo0,51,40,0|6fcjrz,51,40,0|6fcjs0,57,66,1|6p2gzz,57,66,1|6p2h00,51,40,0|6y2mfz,51,40,0|6y2mg0,57,66,1|77sjnz,57,66,1|77sjo0,51,40,0|7h5nrz,51,40,0|7h5ns0,57,66,1|7qimbz,57,66,1|7qimc0,51,40,0|7zvqfz,51,40,0|7zvqg0,57,66,1|898ozz,57,66,1|898p00,51,40,0|8ilt3z,51,40,0|8ilt40,57,66,1|8ryrnz,57,66,1|8ryro0,51,40,0|908zrz,51,40,0|908zs0,57,66,1|9aoubz,57,66,1|9aouc0,51,40,0|9iz2fz,51,40,0|9iz2g0,57,66,1|9trvnz,57,66,1|9trvo0,51,40,0|a1p53z,51,40,0|a1p540,57,66,1|achybz,57,66,1|achyc0,51,40,0|akf7rz,51,40,0|akf7s0,57,66,1|av80zz,57,66,1|av8100,51,40,0|b3i93z,51,40,0|b3i940,57,66,1|bdy3nz,57,66,1|bdy3o0,51,40,0|bm8brz,51,40,0|bm8bs0,57,66,1|bwo6bz,57,66,1|bwo6c0,51,40,0|c4yefz,51,40,0|c4yeg0,57,66,1|cfr7nz,57,66,1|cfr7o0,51,40,0|cnoh3z,51,40,0|cnoh40,57,66,1|cyhabz,57,66,1|cyhac0,51,40,0|d6ejrz,51,40,0|d6ejs0,57,66,1|dh7czz,57,66,1|dh7d00,51,40,0|dphl3z,51,40,0|dphl40,57,66,1|dzxfnz,57,66,1|dzxfo0,51,40,0|e87nrz,51,40,0|e87ns0,57,66,1|einibz,57,66,1|einic0,51,40,0|eqxqfz,51,40,0|eqxqg0,57,66,1|f1dkzz,57,66,1|f1dl00,51,40,0|f9nt3z,51,40,0|f9nt40,57,66,1|fkgmbz,57,66,1|fkgmc0,51,40,0|fsdvrz,51,40,0|fsdvs0,57,66,1|g36ozz,57,66,1|g36p00,51,40,0|gb3yfz,51,40,0|gb3yg0,57,66,1|glwrnz,57,66,1|glwro0,51,40,0|gu6zrz,51,40,0|gu6zs0,57,66,1|h4mubz,57,66,1|h4muc0,51,40,0|hcx2fz,51,40,0|hcx2g0,57,66,1|hncwzz,57,66,1|hncx00,51,40,0|hvn53z,51,40,0|hvn540,57,66,1|i6fybz,57,66,1|i6fyc0,51,40,0|ied7rz,51,40,0|ied7s0,57,66,1|ip60zz,57,66,1|ip6100,51,40,0|ix3afz,51,40,0|ix3ag0,57,66,1|j7w3nz,57,66,1|j7w3o0,51,40,0|jeqh3z,51,40,0|jeqh40,57,66,1|jqz4zz,57,66,1|jqz500,51,40,0|jxgjrz,51,40,0|jxgjs0,57,66,1|k9p7nz,57,66,1|k9p7o0,51,40,0|kg6mfz,51,40,0|kg6mg0,57,66,1|ksfabz,57,66,1|ksfac0,51,40,0|kz9nrz,51,40,0|kz9ns0,57,66,1|lbibnz,57,66,1|lbibo0,51,40,0|lhzqfz,51,40,0|lhzqg0,57,66,1|lu8ebz,57,66,1|lu8ec0,51,40,0|m0pt3z,51,40,0|m0pt40,57,66,1|mcygzz,57,66,1|mcyh00,51,40,0|mjfvrz,51,40,0|mjfvs0,57,66,1|mvojnz,57,66,1|mvojo0,51,40,0|n25yfz,51,40,0|n25yg0,57,66,1|neembz,57,66,1|neemc0,51,40,0|nkw13z,51,40,0|nkw140,57,66,1|nx4ozz,57,66,1|nx4p00,51,40,0|o3z2fz,51,40,0|o3z2g0,57,66,1|og7qbz,57,66,1|og7qc0,51,40,0|omp53z,51,40,0|omp540,57,66,1|oyxszz,57,66,1|oyxt00,51,40,0|p5f7rz,51,40,0|p5f7s0,57,66,1|phnvnz,57,66,1|phnvo0,51,40,0|po5afz,51,40,0|po5ag0,57,66,1|q0dybz,57,66,1|q0dyc0,51,40,0|q6vd3z,51,40,0|q6vd40,57,66,1|qj3vfz,57,66,1|qj3vg0,50,66,0\",\"America/Winnipeg|,0,188,0|-171bfcc,45,62,0|-s0s7c1,45,62,0|-s0s7c0,46,63,1|-rt8241,46,63,1|-rt8240,45,62,0|-qzov41,45,62,0|-qzov40,46,63,1|-qplz81,46,63,1|-qplz80,45,62,0|-h11r41,45,62,0|-h11r40,46,63,1|-gu7j81,46,63,1|-gu7j80,45,62,0|-ek21s1,45,62,0|-ek21s0,47,63,1|-cq2tg1,47,63,1|-cq2tg0,48,63,1|-cnp0k1,48,63,1|-cnp0k0,45,62,0|-cc64g1,45,62,0|-cc64g0,46,63,1|-c490k1,46,63,1|-c490k0,45,62,0|-bu5z41,45,62,0|-bu5z40,46,63,1|-bm8v81,46,63,1|-bm8v80,45,62,0|-bbfwg1,45,62,0|-bbfwg0,46,63,1|-b3isk1,46,63,1|-b3isk0,45,62,0|-aspts1,45,62,0|-aspts0,46,63,1|-akspw1,46,63,1|-akspw0,45,62,0|-a9kxs1,45,62,0|-a9kxs0,46,63,1|-a1rj81,46,63,1|-a1rj80,45,62,0|-9qwps1,45,62,0|-9qwps0,46,63,1|-9izlw1,46,63,1|-9izlw0,45,62,0|-986n41,45,62,0|-986n40,46,63,1|-909j81,46,63,1|-909j80,45,62,0|-8pgkg1,45,62,0|-8pgkg0,46,63,1|-8hjgk1,46,63,1|-8hjgk0,45,62,0|-86qhs1,45,62,0|-86qhs0,46,63,1|-7ytdw1,46,63,1|-7ytdw0,45,62,0|-7o0f41,45,62,0|-7o0f40,46,63,1|-7g3b81,46,63,1|-7g3b80,45,62,0|-74xds1,45,62,0|-74xds0,46,63,1|-6x09w1,46,63,1|-6x09w0,45,62,0|-6m7b41,45,62,0|-6m7b40,46,63,1|-6ea781,46,63,1|-6ea780,45,62,0|-63h8g1,45,62,0|-63h8g0,46,63,1|-5vk4k1,46,63,1|-5vk4k0,45,62,0|-5kr5s1,45,62,0|-5kr5s0,46,63,1|-5be781,46,63,1|-5be780,45,62,0|-521341,45,62,0|-521340,46,63,1|-4u3z81,46,63,1|-4u3z80,45,62,0|-3hhwg1,45,62,0|-3hhwg0,46,63,1|-39xr81,46,63,1|-39xr80,45,62,0|-1xbog1,45,62,0|-1xbog0,46,63,1|-1nlog1,46,63,1|-1nlog0,45,62,0|-1e8n41,45,62,0|-1e8n40,46,63,1|-14vls1,46,63,1|-14vls0,45,62,0|-vikg1,45,62,0|-vikg0,46,63,1|-m5j41,46,63,1|-m5j40,45,62,0|-cshs1,45,62,0|-cshs0,46,63,1|-3fgg1,46,63,1|-3fgg0,45,62,0|5xkvz,45,62,0|5xkw0,46,63,1|fam7z,46,63,1|fam80,45,62,0|onnjz,45,62,0|onnk0,46,63,1|ydnjz,46,63,1|ydnk0,45,62,0|17qovz,45,62,0|17qow0,46,63,1|1h3q7z,46,63,1|1h3q80,45,62,0|1qgrjz,45,62,0|1qgrk0,46,63,1|1ztsvz,46,63,1|1ztsw0,45,62,0|296u7z,45,62,0|296u80,46,63,1|2ijvjz,46,63,1|2ijvk0,45,62,0|2rwwvz,45,62,0|2rwww0,46,63,1|319y7z,46,63,1|319y80,45,62,0|3amzjz,45,62,0|3amzk0,46,63,1|3kczjz,46,63,1|3kczk0,45,62,0|3td27z,45,62,0|3td280,46,63,1|43327z,46,63,1|433280,45,62,0|4cg3jz,45,62,0|4cg3k0,46,63,1|4lt4vz,46,63,1|4lt4w0,45,62,0|4v667z,45,62,0|4v6680,46,63,1|54j7jz,46,63,1|54j7k0,45,62,0|5dw8vz,45,62,0|5dw8w0,46,63,1|5n9a7z,46,63,1|5n9a80,45,62,0|5wmbjz,45,62,0|5wmbk0,46,63,1|65zcvz,46,63,1|65zcw0,45,62,0|6fce7z,45,62,0|6fce80,46,63,1|6p2e7z,46,63,1|6p2e80,45,62,0|6y2gvz,45,62,0|6y2gw0,46,63,1|77sgvz,46,63,1|77sgw0,45,62,0|7h5i7z,45,62,0|7h5i80,46,63,1|7qijjz,46,63,1|7qijk0,45,62,0|7zvkvz,45,62,0|7zvkw0,46,63,1|898m7z,46,63,1|898m80,45,62,0|8ilnjz,45,62,0|8ilnk0,46,63,1|8ryovz,46,63,1|8ryow0,45,62,0|908u7z,45,62,0|908u80,46,63,1|9aorjz,46,63,1|9aork0,45,62,0|9iywvz,45,62,0|9iyww0,46,63,1|9trsvz,46,63,1|9trsw0,45,62,0|a1ozjz,45,62,0|a1ozk0,46,63,1|achvjz,46,63,1|achvk0,45,62,0|akf27z,45,62,0|akf280,46,63,1|av7y7z,46,63,1|av7y80,45,62,0|b3i3jz,45,62,0|b3i3k0,46,63,1|bdy0vz,46,63,1|bdy0w0,45,62,0|bm867z,45,62,0|bm8680,46,63,1|bwo3jz,46,63,1|bwo3k0,45,62,0|c4y8vz,45,62,0|c4y8w0,46,63,1|cfr4vz,46,63,1|cfr4w0,45,62,0|cnobjz,45,62,0|cnobk0,46,63,1|cyh7jz,46,63,1|cyh7k0,45,62,0|d6ee7z,45,62,0|d6ee80,46,63,1|dh7a7z,46,63,1|dh7a80,45,62,0|dphfjz,45,62,0|dphfk0,46,63,1|dzxcvz,46,63,1|dzxcw0,45,62,0|e87i7z,45,62,0|e87i80,46,63,1|einfjz,46,63,1|einfk0,45,62,0|eqxkvz,45,62,0|eqxkw0,46,63,1|f1di7z,46,63,1|f1di80,45,62,0|f9nnjz,45,62,0|f9nnk0,46,63,1|fkgjjz,46,63,1|fkgjk0,45,62,0|fsdq7z,45,62,0|fsdq80,46,63,1|g36m7z,46,63,1|g36m80,45,62,0|gb3svz,45,62,0|gb3sw0,46,63,1|glwovz,46,63,1|glwow0,45,62,0|gu6u7z,45,62,0|gu6u80,46,63,1|h4mrjz,46,63,1|h4mrk0,45,62,0|hcwwvz,45,62,0|hcwww0,46,63,1|hncu7z,46,63,1|hncu80,45,62,0|hvmzjz,45,62,0|hvmzk0,46,63,1|i6fvjz,46,63,1|i6fvk0,45,62,0|ied27z,45,62,0|ied280,46,63,1|ip5y7z,46,63,1|ip5y80,45,62,0|ix34vz,45,62,0|ix34w0,46,63,1|j7vy3z,46,63,1|j7vy40,45,62,0|jeqbjz,45,62,0|jeqbk0,46,63,1|jqyzfz,46,63,1|jqyzg0,45,62,0|jxge7z,45,62,0|jxge80,46,63,1|k9p23z,46,63,1|k9p240,45,62,0|kg6gvz,45,62,0|kg6gw0,46,63,1|ksf4rz,46,63,1|ksf4s0,45,62,0|kz9i7z,45,62,0|kz9i80,46,63,1|lbi63z,46,63,1|lbi640,45,62,0|lhzkvz,45,62,0|lhzkw0,46,63,1|lu88rz,46,63,1|lu88s0,45,62,0|m0pnjz,45,62,0|m0pnk0,46,63,1|mcybfz,46,63,1|mcybg0,45,62,0|mjfq7z,45,62,0|mjfq80,46,63,1|mvoe3z,46,63,1|mvoe40,45,62,0|n25svz,45,62,0|n25sw0,46,63,1|neegrz,46,63,1|neegs0,45,62,0|nkvvjz,45,62,0|nkvvk0,46,63,1|nx4jfz,46,63,1|nx4jg0,45,62,0|o3ywvz,45,62,0|o3yww0,46,63,1|og7krz,46,63,1|og7ks0,45,62,0|omozjz,45,62,0|omozk0,46,63,1|oyxnfz,46,63,1|oyxng0,45,62,0|p5f27z,45,62,0|p5f280,46,63,1|phnq3z,46,63,1|phnq40,45,62,0|po54vz,45,62,0|po54w0,46,63,1|q0dsrz,46,63,1|q0dss0,45,62,0|q6v7jz,45,62,0|q6v7k0,46,63,1|qj3vfz,46,63,1|qj3vg0,45,62,0|qpy8vz,45,62,0|qpy8w0,46,63,1|r26wrz,46,63,1|r26ws0,45,62,0|r8objz,45,62,0|r8obk0,46,63,1|rkwzfz,46,63,1|rkwzg0,45,62,0|rree7z,45,62,0|rree80,46,63,1|s3n23z,46,63,1|s3n240,45,62,0|sa4gvz,45,62,0|sa4gw0,46,63,1|smd4rz,46,63,1|smd4s0,45,62,0|ssujjz,45,62,0|ssujk0,46,63,1|t537fz,46,63,1|t537g0,45,62,0|tbkm7z,45,62,0|tbkm80,46,63,1|tnta3z,46,63,1|tnta40,45,62,0|tunnjz,45,62,0|tunnk0,46,63,1|u6wbfz,46,63,1|u6wbg0,45,62,0|uddq7z,45,62,0|uddq80,46,63,1|upme3z,46,63,1|upme40,45,62,0|uw3svz,45,62,0|uw3sw0,46,63,1|v8cgrz,46,63,1|v8cgs0,45,62,0|vetvjz,45,62,0|vetvk0,46,63,1|vr2jfz,46,63,1|vr2jg0,45,62,0|vxjy7z,45,62,0|vxjy80,46,63,1|w9sm3z,46,63,1|w9sm40,45,62,0|wgmzjz,45,62,0|wgmzk0,46,63,1|wsvnfz,46,63,1|wsvng0,45,62,0|wzd27z,45,62,0|wzd280,46,63,1|xblq3z,46,63,1|xblq40,45,62,0|xi34vz,45,62,0|xi34w0,46,63,1|xubsrz,46,63,1|xubss0,45,62,0|y0t7jz,45,62,0|y0t7k0,46,63,1|yd1vfz,46,63,1|yd1vg0,45,62,0|yjja7z,45,62,0|yjja80,46,63,1|yvry3z,46,63,1|yvry40,45,62,0|z29cvz,45,62,0|z29cw0,46,63,1|zei0rz,46,63,1|zei0s0,45,62,0\",\"America/Yakutat|,0,189,0|-1hc7qjz,0,190,0|-1078vgi,0,190,0|-1078vgh,36,37,0|-ek1tg1,36,37,0|-ek1tg0,65,40,1|-cq2tg1,65,40,1|-cq2tg0,66,40,1|-cnos81,66,40,1|-cnos80,36,37,0|-cs9g1,36,37,0|-cs9g0,64,40,1|-3faw1,64,40,1|-3faw0,36,37,0|5xt7z,36,37,0|5xt80,64,40,1|farrz,64,40,1|fars0,36,37,0|onvvz,36,37,0|onvw0,64,40,1|ydt3z,64,40,1|ydt40,36,37,0|17qx7z,36,37,0|17qx80,64,40,1|1h3vrz,64,40,1|1h3vs0,36,37,0|1qgzvz,36,37,0|1qgzw0,64,40,1|1ztyfz,64,40,1|1ztyg0,36,37,0|23fnvz,36,37,0|23fnw0,64,40,1|2ik13z,64,40,1|2ik140,36,37,0|2ooh7z,36,37,0|2ooh80,64,40,1|31a3rz,64,40,1|31a3s0,36,37,0|3an7vz,36,37,0|3an7w0,64,40,1|3kd53z,64,40,1|3kd540,36,37,0|3tdajz,36,37,0|3tdak0,64,40,1|4337rz,64,40,1|4337s0,36,37,0|4cgbvz,36,37,0|4cgbw0,64,40,1|4ltafz,64,40,1|4ltag0,36,37,0|4v6ejz,36,37,0|4v6ek0,64,40,1|54jd3z,64,40,1|54jd40,36,37,0|5dwh7z,36,37,0|5dwh80,64,40,1|5n9frz,64,40,1|5n9fs0,36,37,0|5wmjvz,36,37,0|5wmjw0,64,40,1|65zifz,64,40,1|65zig0,36,37,0|6fcmjz,36,37,0|6fcmk0,64,40,1|6p2jrz,64,40,1|6p2js0,36,37,0|6y2p7z,36,37,0|6y2p80,64,40,1|77smfz,64,40,1|77smg0,36,37,0|79dybz,36,37,0|79dyc0,37,37,0|7h5qjz,37,37,0|7h5qk0,38,40,1|7qip3z,38,40,1|7qip40,37,37,0|7zvt7z,37,37,0|7zvt80,38,40,1|898rrz,38,40,1|898rs0,37,37,0|8ilvvz,37,37,0|8ilvw0,38,40,1|8ryufz,38,40,1|8ryug0,37,37,0|9092jz,37,37,0|9092k0,38,40,1|9aox3z,38,40,1|9aox40,37,37,0|9iz57z,37,37,0|9iz580,38,40,1|9tryfz,38,40,1|9tryg0,37,37,0|a1p7vz,37,37,0|a1p7w0,38,40,1|aci13z,38,40,1|aci140,37,37,0|akfajz,37,37,0|akfak0,38,40,1|av83rz,38,40,1|av83s0,37,37,0|b3ibvz,37,37,0|b3ibw0,38,40,1|bdy6fz,38,40,1|bdy6g0,37,37,0|bm8ejz,37,37,0|bm8ek0,38,40,1|bwo93z,38,40,1|bwo940,37,37,0|c4yh7z,37,37,0|c4yh80,38,40,1|cfrafz,38,40,1|cfrag0,37,37,0|cnojvz,37,37,0|cnojw0,38,40,1|cyhd3z,38,40,1|cyhd40,37,37,0|d6emjz,37,37,0|d6emk0,38,40,1|dh7frz,38,40,1|dh7fs0,37,37,0|dphnvz,37,37,0|dphnw0,38,40,1|dzxifz,38,40,1|dzxig0,37,37,0|e87qjz,37,37,0|e87qk0,38,40,1|einl3z,38,40,1|einl40,37,37,0|eqxt7z,37,37,0|eqxt80,38,40,1|f1dnrz,38,40,1|f1dns0,37,37,0|f9nvvz,37,37,0|f9nvw0,38,40,1|fkgp3z,38,40,1|fkgp40,37,37,0|fsdyjz,37,37,0|fsdyk0,38,40,1|g36rrz,38,40,1|g36rs0,37,37,0|gb417z,37,37,0|gb4180,38,40,1|glwufz,38,40,1|glwug0,37,37,0|gu72jz,37,37,0|gu72k0,38,40,1|h4mx3z,38,40,1|h4mx40,37,37,0|hcx57z,37,37,0|hcx580,38,40,1|hnczrz,38,40,1|hnczs0,37,37,0|hvn7vz,37,37,0|hvn7w0,38,40,1|i6g13z,38,40,1|i6g140,37,37,0|iedajz,37,37,0|iedak0,38,40,1|ip63rz,38,40,1|ip63s0,37,37,0|ix3d7z,37,37,0|ix3d80,38,40,1|j7w6fz,38,40,1|j7w6g0,37,37,0|jeqjvz,37,37,0|jeqjw0,38,40,1|jqz7rz,38,40,1|jqz7s0,37,37,0|jxgmjz,37,37,0|jxgmk0,38,40,1|k9pafz,38,40,1|k9pag0,37,37,0|kg6p7z,37,37,0|kg6p80,38,40,1|ksfd3z,38,40,1|ksfd40,37,37,0|kz9qjz,37,37,0|kz9qk0,38,40,1|lbiefz,38,40,1|lbieg0,37,37,0|lhzt7z,37,37,0|lhzt80,38,40,1|lu8h3z,38,40,1|lu8h40,37,37,0|m0pvvz,37,37,0|m0pvw0,38,40,1|mcyjrz,38,40,1|mcyjs0,37,37,0|mjfyjz,37,37,0|mjfyk0,38,40,1|mvomfz,38,40,1|mvomg0,37,37,0|n2617z,37,37,0|n26180,38,40,1|neep3z,38,40,1|neep40,37,37,0|nkw3vz,37,37,0|nkw3w0,38,40,1|nx4rrz,38,40,1|nx4rs0,37,37,0|o3z57z,37,37,0|o3z580,38,40,1|og7t3z,38,40,1|og7t40,37,37,0|omp7vz,37,37,0|omp7w0,38,40,1|oyxvrz,38,40,1|oyxvs0,37,37,0|p5fajz,37,37,0|p5fak0,38,40,1|phnyfz,38,40,1|phnyg0,37,37,0|po5d7z,37,37,0|po5d80,38,40,1|q0e13z,38,40,1|q0e140,37,37,0|q6vfvz,37,37,0|q6vfw0,38,40,1|qj43rz,38,40,1|qj43s0,37,37,0|qpyh7z,37,37,0|qpyh80,38,40,1|r2753z,38,40,1|r27540,37,37,0|r8ojvz,37,37,0|r8ojw0,38,40,1|rkx7rz,38,40,1|rkx7s0,37,37,0|rremjz,37,37,0|rremk0,38,40,1|s3nafz,38,40,1|s3nag0,37,37,0|sa4p7z,37,37,0|sa4p80,38,40,1|smdd3z,38,40,1|smdd40,37,37,0|ssurvz,37,37,0|ssurw0,38,40,1|t53frz,38,40,1|t53fs0,37,37,0|tbkujz,37,37,0|tbkuk0,38,40,1|tntifz,38,40,1|tntig0,37,37,0|tunvvz,37,37,0|tunvw0,38,40,1|u6wjrz,38,40,1|u6wjs0,37,37,0|uddyjz,37,37,0|uddyk0,38,40,1|upmmfz,38,40,1|upmmg0,37,37,0|uw417z,37,37,0|uw4180,38,40,1|v8cp3z,38,40,1|v8cp40,37,37,0|veu3vz,37,37,0|veu3w0,38,40,1|vr2rrz,38,40,1|vr2rs0,37,37,0|vxk6jz,37,37,0|vxk6k0,38,40,1|w9sufz,38,40,1|w9sug0,37,37,0|wgn7vz,37,37,0|wgn7w0,38,40,1|wsvvrz,38,40,1|wsvvs0,37,37,0|wzdajz,37,37,0|wzdak0,38,40,1|xblyfz,38,40,1|xblyg0,37,37,0|xi3d7z,37,37,0|xi3d80,38,40,1|xuc13z,38,40,1|xuc140,37,37,0|y0tfvz,37,37,0|y0tfw0,38,40,1|yd23rz,38,40,1|yd23s0,37,37,0|yjjijz,37,37,0|yjjik0,38,40,1|yvs6fz,38,40,1|yvs6g0,37,37,0|z29l7z,37,37,0|z29l80,38,40,1|zei93z,38,40,1|zei940,37,37,0\",\"America/Yellowknife|,60,1,0|-i9m2o0,50,66,0|-ek1z01,50,66,0|-ek1z00,58,62,1|-cq2tg1,58,62,1|-cq2tg0,59,62,1|-cnoxs1,59,62,1|-cnoxs0,50,66,0|-2g1tw1,50,66,0|-2g1tw0,61,63,1|-26btw1,61,63,1|-26btw0,50,66,0|5dwbnz,50,66,0|5dwbo0,52,62,1|5n9a7z,52,62,1|5n9a80,50,66,0|5wmebz,50,66,0|5wmec0,52,62,1|65zcvz,52,62,1|65zcw0,50,66,0|6fcgzz,50,66,0|6fch00,52,62,1|6p2e7z,52,62,1|6p2e80,50,66,0|6y2jnz,50,66,0|6y2jo0,52,62,1|77sgvz,52,62,1|77sgw0,50,66,0|7h5kzz,50,66,0|7h5l00,52,62,1|7qijjz,52,62,1|7qijk0,50,66,0|7zvnnz,50,66,0|7zvno0,52,62,1|898m7z,52,62,1|898m80,50,66,0|8ilqbz,50,66,0|8ilqc0,52,62,1|8ryovz,52,62,1|8ryow0,50,66,0|908wzz,50,66,0|908x00,52,62,1|9aorjz,52,62,1|9aork0,50,66,0|9iyznz,50,66,0|9iyzo0,52,62,1|9trsvz,52,62,1|9trsw0,50,66,0|a1p2bz,50,66,0|a1p2c0,52,62,1|achvjz,52,62,1|achvk0,50,66,0|akf4zz,50,66,0|akf500,52,62,1|av7y7z,52,62,1|av7y80,50,66,0|b3i6bz,50,66,0|b3i6c0,52,62,1|bdy0vz,52,62,1|bdy0w0,50,66,0|bm88zz,50,66,0|bm8900,52,62,1|bwo3jz,52,62,1|bwo3k0,50,66,0|c4ybnz,50,66,0|c4ybo0,52,62,1|cfr4vz,52,62,1|cfr4w0,50,66,0|cnoebz,50,66,0|cnoec0,52,62,1|cyh7jz,52,62,1|cyh7k0,50,66,0|d6egzz,50,66,0|d6eh00,52,62,1|dh7a7z,52,62,1|dh7a80,50,66,0|dphibz,50,66,0|dphic0,52,62,1|dzxcvz,52,62,1|dzxcw0,50,66,0|e87kzz,50,66,0|e87l00,52,62,1|einfjz,52,62,1|einfk0,50,66,0|eqxnnz,50,66,0|eqxno0,52,62,1|f1di7z,52,62,1|f1di80,50,66,0|f9nqbz,50,66,0|f9nqc0,52,62,1|fkgjjz,52,62,1|fkgjk0,50,66,0|fsdszz,50,66,0|fsdt00,52,62,1|g36m7z,52,62,1|g36m80,50,66,0|gb3vnz,50,66,0|gb3vo0,52,62,1|glwovz,52,62,1|glwow0,50,66,0|gu6wzz,50,66,0|gu6x00,52,62,1|h4mrjz,52,62,1|h4mrk0,50,66,0|hcwznz,50,66,0|hcwzo0,52,62,1|hncu7z,52,62,1|hncu80,50,66,0|hvn2bz,50,66,0|hvn2c0,52,62,1|i6fvjz,52,62,1|i6fvk0,50,66,0|ied4zz,50,66,0|ied500,52,62,1|ip5y7z,52,62,1|ip5y80,50,66,0|ix37nz,50,66,0|ix37o0,52,62,1|j7w0vz,52,62,1|j7w0w0,50,66,0|jeqebz,50,66,0|jeqec0,52,62,1|jqz27z,52,62,1|jqz280,50,66,0|jxggzz,50,66,0|jxgh00,52,62,1|k9p4vz,52,62,1|k9p4w0,50,66,0|kg6jnz,50,66,0|kg6jo0,52,62,1|ksf7jz,52,62,1|ksf7k0,50,66,0|kz9kzz,50,66,0|kz9l00,52,62,1|lbi8vz,52,62,1|lbi8w0,50,66,0|lhznnz,50,66,0|lhzno0,52,62,1|lu8bjz,52,62,1|lu8bk0,50,66,0|m0pqbz,50,66,0|m0pqc0,52,62,1|mcye7z,52,62,1|mcye80,50,66,0|mjfszz,50,66,0|mjft00,52,62,1|mvogvz,52,62,1|mvogw0,50,66,0|n25vnz,50,66,0|n25vo0,52,62,1|neejjz,52,62,1|neejk0,50,66,0|nkvybz,50,66,0|nkvyc0,52,62,1|nx4m7z,52,62,1|nx4m80,50,66,0|o3yznz,50,66,0|o3yzo0,52,62,1|og7njz,52,62,1|og7nk0,50,66,0|omp2bz,50,66,0|omp2c0,52,62,1|oyxq7z,52,62,1|oyxq80,50,66,0|p5f4zz,50,66,0|p5f500,52,62,1|phnsvz,52,62,1|phnsw0,50,66,0|po57nz,50,66,0|po57o0,52,62,1|q0dvjz,52,62,1|q0dvk0,50,66,0|q6vabz,50,66,0|q6vac0,52,62,1|qj3y7z,52,62,1|qj3y80,50,66,0|qpybnz,50,66,0|qpybo0,52,62,1|r26zjz,52,62,1|r26zk0,50,66,0|r8oebz,50,66,0|r8oec0,52,62,1|rkx27z,52,62,1|rkx280,50,66,0|rregzz,50,66,0|rreh00,52,62,1|s3n4vz,52,62,1|s3n4w0,50,66,0|sa4jnz,50,66,0|sa4jo0,52,62,1|smd7jz,52,62,1|smd7k0,50,66,0|ssumbz,50,66,0|ssumc0,52,62,1|t53a7z,52,62,1|t53a80,50,66,0|tbkozz,50,66,0|tbkp00,52,62,1|tntcvz,52,62,1|tntcw0,50,66,0|tunqbz,50,66,0|tunqc0,52,62,1|u6we7z,52,62,1|u6we80,50,66,0|uddszz,50,66,0|uddt00,52,62,1|upmgvz,52,62,1|upmgw0,50,66,0|uw3vnz,50,66,0|uw3vo0,52,62,1|v8cjjz,52,62,1|v8cjk0,50,66,0|vetybz,50,66,0|vetyc0,52,62,1|vr2m7z,52,62,1|vr2m80,50,66,0|vxk0zz,50,66,0|vxk100,52,62,1|w9sovz,52,62,1|w9sow0,50,66,0|wgn2bz,50,66,0|wgn2c0,52,62,1|wsvq7z,52,62,1|wsvq80,50,66,0|wzd4zz,50,66,0|wzd500,52,62,1|xblsvz,52,62,1|xblsw0,50,66,0|xi37nz,50,66,0|xi37o0,52,62,1|xubvjz,52,62,1|xubvk0,50,66,0|y0tabz,50,66,0|y0tac0,52,62,1|yd1y7z,52,62,1|yd1y80,50,66,0|yjjczz,50,66,0|yjjd00,52,62,1|yvs0vz,52,62,1|yvs0w0,50,66,0|z29fnz,50,66,0|z29fo0,52,62,1|zei3jz,52,62,1|zei3k0,50,66,0\",\"Antarctica/Casey|,60,1,0|-irxc0,89,191,0|kro7bz,89,191,0|kro7c0,90,192,0|kyrizz,90,192,0|kyrj00,89,191,0|ltqknz,89,191,0|ltqko0,90,192,0|lzr5vz,90,192,0|lzr5w0,89,191,0|ofen3z,89,191,0|ofen40,90,192,0|p5dwjz,90,192,0|p5dwk0,89,191,0|pg70vz,89,191,0|pg70w0,90,192,0|pogv3z,90,192,0|pogv40,89,191,0|pytbfz,89,191,0|pytbg0,90,192,0|q6tz3z,90,192,0|q6tz40,89,191,0|qhmv5n,89,191,0|qhmv5o,90,192,0\",\"Antarctica/Davis|,60,1,0|-6rmdc0,91,193,0|-2p2zg1,91,193,0|-2p2zg0,60,1,0|-h6io1,60,1,0|-h6io0,91,193,0|kroa3z,91,193,0|kroa40,92,194,0|kz30vz,92,194,0|kz30w0,91,193,0|ltqnfz,91,193,0|ltqng0,92,194,0|lzre7z,92,194,0|lzre80,91,193,0\",\"Antarctica/DumontDUrville|,60,1,0|-c05eo0,93,195,0|-9dkmg1,93,195,0|-9dkmg0,60,1,0|-6vdk01,60,1,0|-6vdk00,93,195,0\",\"Antarctica/Macquarie|,60,1,0|-10mb9c0,94,195,0|-rsj4w1,94,195,0|-rsj4w0,95,192,1|-rjj281,95,192,1|-rjj280,94,195,0|-qhmeg1,94,195,0|-qhmeg0,60,1,0|-bd1xc1,60,1,0|-bd1xc0,94,195,0|-16cow1,94,195,0|-16cow0,95,192,1|-wznk1,95,192,1|-wznk0,94,195,0|-m6rk1,94,195,0|-m6rk0,95,192,1|-fcgw1,95,192,1|-fcgw0,94,195,0|-3gow1,94,195,0|-3gow0,95,192,1|3dlrz,95,192,1|3dls0,94,195,0|f9drz,94,195,0|f9ds0,95,192,1|mgn3z,95,192,1|mgn40,94,195,0|ycf3z,94,195,0|ycf40,95,192,1|14gsfz,95,192,1|14gsg0,94,195,0|1h2hrz,94,195,0|1h2hs0,95,192,1|1njtrz,95,192,1|1njts0,94,195,0|1zskfz,94,195,0|1zskg0,95,192,1|269wfz,95,192,1|269wg0,94,195,0|2iin3z,94,195,0|2iin40,95,192,1|2ozz3z,95,192,1|2ozz40,94,195,0|318prz,94,195,0|318ps0,95,192,1|3830fz,95,192,1|3830g0,94,195,0|3kbr3z,94,195,0|3kbr40,95,192,1|3qt33z,95,192,1|3qt340,94,195,0|431trz,94,195,0|431ts0,95,192,1|49j5rz,95,192,1|49j5s0,94,195,0|4lrwfz,94,195,0|4lrwg0,95,192,1|4s98fz,95,192,1|4s98g0,94,195,0|54hz3z,94,195,0|54hz40,95,192,1|5azb3z,95,192,1|5azb40,94,195,0|5n81rz,94,195,0|5n81s0,95,192,1|5tpdrz,95,192,1|5tpds0,94,195,0|65y4fz,94,195,0|65y4g0,95,192,1|6dvb3z,95,192,1|6dvb40,94,195,0|6p15rz,94,195,0|6p15s0,95,192,1|6wldrz,95,192,1|6wlds0,94,195,0|77r8fz,94,195,0|77r8g0,95,192,1|7e8kfz,95,192,1|7e8kg0,94,195,0|7qhb3z,94,195,0|7qhb40,95,192,1|7wyn3z,95,192,1|7wyn40,94,195,0|897drz,94,195,0|897ds0,95,192,1|8foprz,95,192,1|8fops0,94,195,0|8rkhrz,94,195,0|8rkhs0,95,192,1|8z4prz,95,192,1|8z4ps0,94,195,0|9anj3z,94,195,0|9anj40,95,192,1|9i7r3z,95,192,1|9i7r40,94,195,0|9tqkfz,94,195,0|9tqkg0,95,192,1|a0xtrz,95,192,1|a0xts0,94,195,0|acgn3z,94,195,0|acgn40,95,192,1|ajnwfz,95,192,1|ajnwg0,94,195,0|av6prz,94,195,0|av6ps0,95,192,1|b33wfz,95,192,1|b33wg0,94,195,0|bctwfz,94,195,0|bctwg0,95,192,1|bltz3z,95,192,1|bltz40,94,195,0|bvjz3z,94,195,0|bvjz40,95,192,1|c4k1rz,95,192,1|c4k1s0,94,195,0|cea1rz,94,195,0|cea1s0,95,192,1|cna4fz,95,192,1|cna4g0,94,195,0|cx04fz,94,195,0|cx04g0,95,192,1|d6073z,95,192,1|d60740,94,195,0|dfq73z,94,195,0|dfq740,95,192,1|dp38fz,95,192,1|dp38g0,94,195,0|dyt8fz,94,195,0|dyt8g0,95,192,1|e7tb3z,95,192,1|e7tb40,94,195,0|ehjb3z,94,195,0|ehjb40,95,192,1|eqjdrz,95,192,1|eqjds0,94,195,0|f09drz,94,195,0|f09ds0,95,192,1|f99gfz,95,192,1|f99gg0,94,195,0|fizgfz,94,195,0|fizgg0,95,192,1|frzj3z,95,192,1|frzj40,94,195,0|fzwprz,94,195,0|fzwps0,95,192,1|gaplrz,95,192,1|gapls0,94,195,0|gkskfz,94,195,0|gkskg0,95,192,1|gtsn3z,95,192,1|gtsn40,94,195,0|h3in3z,94,195,0|h3in40,95,192,1|hciprz,95,192,1|hcips0,94,195,0|hm8prz,94,195,0|hm8ps0,95,192,1|hv8sfz,95,192,1|hv8sg0,94,195,0|i4ysfz,94,195,0|i4ysg0,95,192,1|idyv3z,95,192,1|idyv40,94,195,0|inov3z,94,195,0|inov40,95,192,1|ix1wfz,95,192,1|ix1wg0,94,195,0|j6exrz,94,195,0|j6exs0,95,192,1|jff0fz,95,192,1|jff0g0,94,195,0|jphz3z,94,195,0|jphz40,95,192,1|jyv0fz,95,192,1|jyv0g0,94,195,0|k881rz,94,195,0|k881s0,95,192,1|khl33z,95,192,1|khl340,94,195,0|kqy4fz,94,195,0|kqy4g0,95,192,1|lj18fz,95,192,1|lj18g0,94,195,0|lse9rz,94,195,0|lse9s0,95,192,1|m1rb3z,95,192,1|m1rb40,94,195,0|mbhb3z,94,195,0|mbhb40,95,192,1|mkucfz,95,192,1|mkucg0,94,195,0|mu7drz,94,195,0|mu7ds0,95,192,1|n3kf3z,95,192,1|n3kf40,94,195,0|ncxgfz,94,195,0|ncxgg0,95,192,1|nmahrz,95,192,1|nmahs0,94,195,0|nvnj3z,94,195,0|nvnj40,95,192,1|o50kfz,95,192,1|o50kg0,94,195,0|oedlrz,94,195,0|oedls0,95,192,1|onqn3z,95,192,1|onqn40,94,195,0|ox3ofz,94,195,0|ox3og0,95,192,1|p6gprz,95,192,1|p6gps0,94,195,0|pg6prz,94,195,0|pg6ps0,95,192,1|ppjr3z,95,192,1|ppjr40,94,195,0|pywsfz,94,195,0|pywsg0,95,192,1|q89trz,95,192,1|q89ts0,94,195,0|qhmv3z,94,195,0|qhmv40,95,192,1|qqzwfz,95,192,1|qqzwg0,94,195,0|r0cxrz,94,195,0|r0cxs0,95,192,1|r9pz3z,95,192,1|r9pz40,94,195,0|rj30fz,94,195,0|rj30g0,95,192,1|rsg1rz,95,192,1|rsg1s0,94,195,0|s1t33z,94,195,0|s1t340,95,192,1|sbj33z,95,192,1|sbj340,94,195,0|skw4fz,94,195,0|skw4g0,95,192,1|su95rz,95,192,1|su95s0,94,195,0|t3m73z,94,195,0|t3m740,95,192,1|tcz8fz,95,192,1|tcz8g0,94,195,0|tmc9rz,94,195,0|tmc9s0,95,192,1|tvpb3z,95,192,1|tvpb40,94,195,0|u52cfz,94,195,0|u52cg0,95,192,1|uefdrz,95,192,1|uefds0,94,195,0|unsf3z,94,195,0|unsf40,95,192,1|ux5gfz,95,192,1|ux5gg0,94,195,0|v6vgfz,94,195,0|v6vgg0,95,192,1|vg8hrz,95,192,1|vg8hs0,94,195,0|vplj3z,94,195,0|vplj40,95,192,1|vyykfz,95,192,1|vyykg0,94,195,0|w8blrz,94,195,0|w8bls0,95,192,1|whon3z,95,192,1|whon40,94,195,0|wr1ofz,94,195,0|wr1og0,95,192,1|x0eprz,95,192,1|x0eps0,94,195,0|x9rr3z,94,195,0|x9rr40,95,192,1|xj4sfz,95,192,1|xj4sg0,94,195,0|xshtrz,94,195,0|xshts0,95,192,1|y1uv3z,95,192,1|y1uv40,94,195,0|ybkv3z,94,195,0|ybkv40,95,192,1|ykxwfz,95,192,1|ykxwg0,94,195,0|yuaxrz,94,195,0|yuaxs0,95,192,1|z3nz3z,95,192,1|z3nz40,94,195,0|zd10fz,94,195,0|zd10g0,95,192,1\",\"Antarctica/Mawson|,60,1,0|-8aelc0,96,196,0|krocvz,96,196,0|krocw0,92,194,0\",\"Antarctica/McMurdo|,0,197,0|-1gsoz14,97,198,0|-m01p21,97,198,0|-m01p20,98,199,1|-ltxei1,98,199,1|-ltxei0,97,198,0|-lieie1,97,198,0|-lieie0,98,200,1|-lahd41,98,200,1|-lahd40,97,198,0|-kzofq1,97,198,0|-kzofq0,98,200,1|-krrag1,98,200,1|-krrag0,97,198,0|-kgyd21,97,198,0|-kgyd20,98,200,1|-k917s1,98,200,1|-k917s0,97,198,0|-jy8ae1,97,198,0|-jy8ae0,98,200,1|-jpy6g1,98,200,1|-jpy6g0,97,198,0|-jfi7q1,97,198,0|-jfi7q0,98,200,1|-j783s1,98,200,1|-j783s0,97,198,0|-iws521,97,198,0|-iws520,98,200,1|-imc941,98,200,1|-imc940,97,198,0|-ief121,97,198,0|-ief120,98,200,1|-i3m6g1,98,200,1|-i3m6g0,97,198,0|-hvoye1,97,198,0|-hvoye0,98,200,1|-hkw3s1,98,200,1|-hkw3s0,97,198,0|-hcyvq1,97,198,0|-hcyvq0,98,200,1|-h26141,98,200,1|-h26140,97,198,0|-gu8t21,97,198,0|-gu8t20,98,200,1|-gjfyg1,98,200,1|-gjfyg0,97,198,0|-gbiqe1,97,198,0|-gbiqe0,98,200,1|-g0cx41,98,200,1|-g0cx40,97,198,0|-fssnq1,97,198,0|-fssnq0,98,200,1|-fhmug1,98,200,1|-fhmug0,97,198,0|-f9pme1,97,198,0|-f9pme0,98,200,1|-ciy9c1,98,200,1|-ciy9c0,98,200,0|2ivg7z,98,200,0|2ivg80,99,201,1|2omuvz,99,201,1|2omuw0,98,200,0|318k7z,98,200,0|318k80,99,201,1|382uvz,99,201,1|382uw0,98,200,0|3kbljz,98,200,0|3kblk0,99,201,1|3qsxjz,99,201,1|3qsxk0,98,200,0|431o7z,98,200,0|431o80,99,201,1|49j07z,99,201,1|49j080,98,200,0|4lrqvz,98,200,0|4lrqw0,99,201,1|4s92vz,99,201,1|4s92w0,98,200,0|54htjz,98,200,0|54htk0,99,201,1|5az5jz,99,201,1|5az5k0,98,200,0|5n7w7z,98,200,0|5n7w80,99,201,1|5tp87z,99,201,1|5tp880,98,200,0|65xyvz,98,200,0|65xyw0,99,201,1|6cs9jz,99,201,1|6cs9k0,98,200,0|6p107z,98,200,0|6p1080,99,201,1|6vic7z,99,201,1|6vic80,98,200,0|77r2vz,98,200,0|77r2w0,99,201,1|7e8evz,99,201,1|7e8ew0,98,200,0|7qh5jz,98,200,0|7qh5k0,99,201,1|7wyhjz,99,201,1|7wyhk0,98,200,0|89787z,98,200,0|897880,99,201,1|8fok7z,99,201,1|8fok80,98,200,0|8rxavz,98,200,0|8rxaw0,99,201,1|8yemvz,99,201,1|8yemw0,98,200,0|9andjz,98,200,0|9andk0,99,201,1|9hho7z,99,201,1|9hho80,98,200,0|9tqevz,98,200,0|9tqew0,99,201,1|a07qvz,99,201,1|a07qw0,98,200,0|abdljz,98,200,0|abdlk0,99,201,1|ajnqvz,99,201,1|ajnqw0,98,200,0|au3o7z,98,200,0|au3o80,99,201,1|b2dtjz,99,201,1|b2dtk0,98,200,0|bctqvz,98,200,0|bctqw0,99,201,1|bl3w7z,99,201,1|bl3w80,98,200,0|bvjtjz,98,200,0|bvjtk0,99,201,1|c46xjz,99,201,1|c46xk0,98,200,0|ce9w7z,98,200,0|ce9w80,99,201,1|cmx07z,99,201,1|cmx080,98,200,0|cwzyvz,98,200,0|cwzyw0,99,201,1|d5n2vz,99,201,1|d5n2w0,98,200,0|dfq1jz,98,200,0|dfq1k0,99,201,1|dod5jz,99,201,1|dod5k0,98,200,0|dyt2vz,98,200,0|dyt2w0,99,201,1|e7387z,99,201,1|e73880,98,200,0|ehj5jz,98,200,0|ehj5k0,99,201,1|eptavz,99,201,1|eptaw0,98,200,0|f0987z,98,200,0|f09880,99,201,1|f8wc7z,99,201,1|f8wc80,98,200,0|fizavz,98,200,0|fizaw0,99,201,1|frmevz,99,201,1|frmew0,98,200,0|g1pdjz,98,200,0|g1pdk0,99,201,1|gachjz,99,201,1|gachk0,98,200,0|gksevz,98,200,0|gksew0,99,201,1|gt2k7z,99,201,1|gt2k80,98,200,0|h3ihjz,98,200,0|h3ihk0,99,201,1|hbsmvz,99,201,1|hbsmw0,98,200,0|hm8k7z,98,200,0|hm8k80,99,201,1|huvo7z,99,201,1|huvo80,98,200,0|i4ymvz,98,200,0|i4ymw0,99,201,1|idlqvz,99,201,1|idlqw0,98,200,0|inopjz,98,200,0|inopk0,99,201,1|iwbtjz,99,201,1|iwbtk0,98,200,0|j6es7z,98,200,0|j6es80,99,201,1|jf1w7z,99,201,1|jf1w80,98,200,0|jp4uvz,98,200,0|jp4uw0,99,201,1|jyuuvz,99,201,1|jyuuw0,98,200,0|k7uxjz,98,200,0|k7uxk0,99,201,1|khkxjz,99,201,1|khkxk0,98,200,0|kql07z,98,200,0|kql080,99,201,1|l0b07z,99,201,1|l0b080,98,200,0|l9b2vz,98,200,0|l9b2w0,99,201,1|lj12vz,99,201,1|lj12w0,98,200,0|ls15jz,98,200,0|ls15k0,99,201,1|m1r5jz,99,201,1|m1r5k0,98,200,0|mb46vz,98,200,0|mb46w0,99,201,1|mku6vz,99,201,1|mku6w0,98,200,0|mtu9jz,98,200,0|mtu9k0,99,201,1|n3k9jz,99,201,1|n3k9k0,98,200,0|nckc7z,98,200,0|nckc80,99,201,1|nmac7z,99,201,1|nmac80,98,200,0|nvaevz,98,200,0|nvaew0,99,201,1|o50evz,99,201,1|o50ew0,98,200,0|oe0hjz,98,200,0|oe0hk0,99,201,1|onqhjz,99,201,1|onqhk0,98,200,0|owqk7z,98,200,0|owqk80,99,201,1|p6gk7z,99,201,1|p6gk80,98,200,0|pftljz,98,200,0|pftlk0,99,201,1|ppjljz,99,201,1|ppjlk0,98,200,0|pyjo7z,98,200,0|pyjo80,99,201,1|q89o7z,99,201,1|q89o80,98,200,0|qh9qvz,98,200,0|qh9qw0,99,201,1|qqzqvz,99,201,1|qqzqw0,98,200,0|qzztjz,98,200,0|qzztk0,99,201,1|r9ptjz,99,201,1|r9ptk0,98,200,0|ripw7z,98,200,0|ripw80,99,201,1|rsfw7z,99,201,1|rsfw80,98,200,0|s1fyvz,98,200,0|s1fyw0,99,201,1|sbixjz,99,201,1|sbixk0,98,200,0|skj07z,98,200,0|skj080,99,201,1|su907z,99,201,1|su9080,98,200,0|t392vz,98,200,0|t392w0,99,201,1|tcz2vz,99,201,1|tcz2w0,98,200,0|tlz5jz,98,200,0|tlz5k0,99,201,1|tvp5jz,99,201,1|tvp5k0,98,200,0|u4p87z,98,200,0|u4p880,99,201,1|uef87z,99,201,1|uef880,98,200,0|unfavz,98,200,0|unfaw0,99,201,1|ux5avz,99,201,1|ux5aw0,98,200,0|v6ic7z,98,200,0|v6ic80,99,201,1|vg8c7z,99,201,1|vg8c80,98,200,0|vp8evz,98,200,0|vp8ew0,99,201,1|vyyevz,99,201,1|vyyew0,98,200,0|w7yhjz,98,200,0|w7yhk0,99,201,1|whohjz,99,201,1|whohk0,98,200,0|wqok7z,98,200,0|wqok80,99,201,1|x0ek7z,99,201,1|x0ek80,98,200,0|x9emvz,98,200,0|x9emw0,99,201,1|xj4mvz,99,201,1|xj4mw0,98,200,0|xs4pjz,98,200,0|xs4pk0,99,201,1|y1upjz,99,201,1|y1upk0,98,200,0|yb7qvz,98,200,0|yb7qw0,99,201,1|ykxqvz,99,201,1|ykxqw0,98,200,0|ytxtjz,98,200,0|ytxtk0,99,201,1|z3ntjz,99,201,1|z3ntk0,98,200,0|zcnw7z,98,200,0|zcnw80,99,201,1\",\"Antarctica/Palmer|,60,1,0|-2lxhc0,39,44,1|-2ivzo1,39,44,1|-2ivzo0,42,42,0|-275ow1,42,42,0|-275ow0,39,44,1|-2042c1,39,44,1|-2042c0,42,42,0|-1odrk1,42,42,0|-1odrk0,39,44,1|-1fovo1,39,44,1|-1fovo0,42,42,0|-16brk1,42,42,0|-16brk0,39,44,1|-wluc1,39,44,1|-wluc0,42,42,0|-n8q81,42,42,0|-n8q80,39,44,1|-dvro1,39,44,1|-dvro0,42,42,0|-4ink1,42,42,0|-4ink0,39,44,0|24aizz,39,44,0|24aj00,40,45,1|29bxjz,40,45,1|29bxk0,39,44,0|6fn4bz,39,44,0|6fn4c0,42,42,0|6nz73z,42,42,0|6nz740,39,44,1|6vwazz,39,44,1|6vwb00,42,42,0|76p9rz,42,42,0|76p9s0,39,44,1|7emdnz,39,44,1|7emdo0,42,42,0|7psb3z,42,42,0|7psb40,39,44,1|7xcgbz,39,44,1|7xcgc0,42,42,0|88idrz,42,42,0|88ids0,39,44,1|8g2izz,39,44,1|8g2j00,42,42,0|8r8gfz,42,42,0|8r8gg0,39,44,1|90lezz,39,44,1|90lf00,42,42,0|99yj3z,42,42,0|99yj40,39,44,1|9hvmzz,39,44,1|9hvn00,42,42,0|9solrz,42,42,0|9sols0,39,44,1|a0lpnz,39,44,1|a0lpo0,42,42,0|abrn3z,42,42,0|abrn40,39,44,1|ajbsbz,39,44,1|ajbsc0,42,42,0|at1v3z,42,42,0|at1v40,39,44,1|b21uzz,39,44,1|b21v00,42,42,0|bd7sfz,42,42,0|bd7sg0,39,44,1|bl4wbz,39,44,1|bl4wc0,42,42,0|bvxv3z,42,42,0|bvxv40,39,44,1|c3uyzz,39,44,1|c3uz00,42,42,0|cenxrz,42,42,0|cenxs0,39,44,1|cml1nz,39,44,1|cml1o0,42,42,0|cxe0fz,42,42,0|cxe0g0,39,44,1|d5b4bz,39,44,1|d5b4c0,42,42,0|dgh1rz,42,42,0|dgh1s0,39,44,1|do16zz,39,44,1|do1700,42,42,0|dz74fz,42,42,0|dz74g0,39,44,1|e7u5nz,39,44,1|e7u5o0,42,42,0|ehx73z,42,42,0|ehx740,39,44,1|epuazz,39,44,1|epub00,42,42,0|ezxcfz,42,42,0|ezxcg0,39,44,1|f9n9nz,39,44,1|f9n9o0,42,42,0|fjdcfz,42,42,0|fjdcg0,39,44,1|fragbz,39,44,1|fragc0,42,42,0|g2gdrz,42,42,0|g2gds0,39,44,1|ga0izz,39,44,1|ga0j00,42,42,0|gl6gfz,42,42,0|gl6gg0,39,44,1|gsqlnz,39,44,1|gsqlo0,42,42,0|h3wj3z,42,42,0|h3wj40,39,44,1|hbgobz,39,44,1|hbgoc0,42,42,0|hmmlrz,42,42,0|hmmls0,39,44,1|hujpnz,39,44,1|hujpo0,42,42,0|i5cofz,42,42,0|i5cog0,39,44,1|id9sbz,39,44,1|id9sc0,42,42,0|io2r3z,42,42,0|io2r40,39,44,1|ivzuzz,39,44,1|ivzv00,42,42,0|j75sfz,42,42,0|j75sg0,39,44,1|jepxnz,39,44,1|jepxo0,42,42,0|jpvv3z,42,42,0|jpvv40,39,44,1|jyiwbz,39,44,1|jyiwc0,42,42,0|k8lxrz,42,42,0|k8lxs0,39,44,1|kgj1nz,39,44,1|kgj1o0,42,42,0|krc0fz,42,42,0|krc0g0,39,44,1|l0c0bz,39,44,1|l0c0c0,42,42,0|la233z,42,42,0|la2340,39,44,1|lkuwbz,39,44,1|lkuwc0,42,42,0|lq9f3z,42,42,0|lq9f40,39,44,1|m380bz,39,44,1|m380c0,42,42,0|m9pf3z,42,42,0|m9pf40,39,44,1|mly2zz,39,44,1|mly300,42,42,0|mssgfz,42,42,0|mssgg0,39,44,1|n4o5nz,39,44,1|n4o5o0,42,42,0|nbij3z,42,42,0|nbij40,39,44,1|o776zz,39,44,1|o77700,42,42,0|obvsfz,42,42,0|obvsg0,39,44,1|ohn4bz,39,44,1|ohn4c0,39,44,0\",\"Antarctica/Rothera|,60,1,0|3lxs00,39,44,0\",\"Antarctica/Syowa|,60,1,0|-6qsqo0,100,6,0\",\"Antarctica/Troll|,60,1,0|ibruo0,17,1,0|idzk3z,17,1,0|idzk40,101,11,1|ip5erz,101,11,1|ip5es0,17,1,0|iwpmrz,17,1,0|iwpms0,101,11,1|j7vhfz,101,11,1|j7vhg0,17,1,0|jffpfz,17,1,0|jffpg0,101,11,1|jqlk3z,101,11,1|jqlk40,17,1,0|jyiqrz,17,1,0|jyiqs0,101,11,1|k9bmrz,101,11,1|k9bms0,17,1,0|kh8tfz,17,1,0|kh8tg0,101,11,1|ks1pfz,101,11,1|ks1pg0,17,1,0|kzyw3z,17,1,0|kzyw40,101,11,1|lb4qrz,101,11,1|lb4qs0,17,1,0|lioyrz,17,1,0|lioys0,101,11,1|ltutfz,101,11,1|ltutg0,17,1,0|m1f1fz,17,1,0|m1f1g0,101,11,1|mckw3z,101,11,1|mckw40,17,1,0|mki2rz,17,1,0|mki2s0,101,11,1|mvayrz,101,11,1|mvays0,17,1,0|n385fz,17,1,0|n385g0,101,11,1|ne11fz,101,11,1|ne11g0,17,1,0|nly83z,17,1,0|nly840,101,11,1|nwr43z,101,11,1|nwr440,17,1,0|o4oarz,17,1,0|o4oas0,101,11,1|ofu5fz,101,11,1|ofu5g0,17,1,0|onedfz,17,1,0|onedg0,101,11,1|oyk83z,101,11,1|oyk840,17,1,0|p64g3z,17,1,0|p64g40,101,11,1|phaarz,101,11,1|phaas0,17,1,0|pp7hfz,17,1,0|pp7hg0,101,11,1|q00dfz,101,11,1|q00dg0,17,1,0|q7xk3z,17,1,0|q7xk40,101,11,1|qiqg3z,101,11,1|qiqg40,17,1,0|qqnmrz,17,1,0|qqnms0,101,11,1|r1thfz,101,11,1|r1thg0,17,1,0|r9dpfz,17,1,0|r9dpg0,101,11,1|rkjk3z,101,11,1|rkjk40,17,1,0|rs3s3z,17,1,0|rs3s40,101,11,1|s39mrz,101,11,1|s39ms0,17,1,0|sb6tfz,17,1,0|sb6tg0,101,11,1|slzpfz,101,11,1|slzpg0,17,1,0|stww3z,17,1,0|stww40,101,11,1|t4ps3z,101,11,1|t4ps40,17,1,0|tcmyrz,17,1,0|tcmys0,101,11,1|tnfurz,101,11,1|tnfus0,17,1,0|tvd1fz,17,1,0|tvd1g0,101,11,1|u6iw3z,101,11,1|u6iw40,17,1,0|ue343z,17,1,0|ue3440,101,11,1|up8yrz,101,11,1|up8ys0,17,1,0|uwt6rz,17,1,0|uwt6s0,101,11,1|v7z1fz,101,11,1|v7z1g0,17,1,0|vfw83z,17,1,0|vfw840,101,11,1|vqp43z,101,11,1|vqp440,17,1,0|vymarz,17,1,0|vymas0,101,11,1|w9f6rz,101,11,1|w9f6s0,17,1,0|whcdfz,17,1,0|whcdg0,101,11,1|wsi83z,101,11,1|wsi840,17,1,0|x02g3z,17,1,0|x02g40,101,11,1|xb8arz,101,11,1|xb8as0,17,1,0|xisirz,17,1,0|xisis0,101,11,1|xtydfz,101,11,1|xtydg0,17,1,0|y1ilfz,17,1,0|y1ilg0,101,11,1|ycog3z,101,11,1|ycog40,17,1,0|yklmrz,17,1,0|yklms0,101,11,1|yveirz,101,11,1|yveis0,17,1,0|z3bpfz,17,1,0|z3bpg0,101,11,1|ze4lfz,101,11,1|ze4lg0,17,1,0\",\"Antarctica/Vostok|,60,1,0|-6aaao0,96,196,0\",\"Arctic/Longyearbyen|,0,202,0|-1353tzo,10,10,0|-rzayo1,10,10,0|-rzayo0,11,11,1|-rskiw1,11,11,1|-rskiw0,10,10,0|-fc7s81,10,10,0|-fc7s80,11,11,1|-e6dzw1,11,11,1|-e6dzw0,10,10,0|-dytrw1,10,10,0|-dytrw0,11,11,1|-dp3rw1,11,11,1|-dp3rw0,10,10,0|-dfqqk1,10,10,0|-dfqqk0,11,11,1|-d6dp81,11,11,1|-d6dp80,10,10,0|-cx0nw1,10,10,0|-cx0nw0,11,11,1|-cnnmk1,11,11,1|-cnnmk0,10,10,0|-5mxh81,10,10,0|-5mxh80,11,11,1|-5d7h81,11,11,1|-5d7h80,10,10,0|-53ufw1,10,10,0|-53ufw0,11,11,1|-4uhek1,11,11,1|-4uhek0,10,10,0|-4l4d81,10,10,0|-4l4d80,11,11,1|-4brbw1,11,11,1|-4brbw0,10,10,0|-42eak1,10,10,0|-42eak0,11,11,1|-3t1981,11,11,1|-3t1980,10,10,0|-3jo7w1,10,10,0|-3jo7w0,11,11,1|-3ab6k1,11,11,1|-3ab6k0,10,10,0|-30y581,10,10,0|-30y580,11,11,1|-2r8581,11,11,1|-2r8580,10,10,0|-2g2ak1,10,10,0|-2g2ak0,11,11,1|-28i2k1,11,11,1|-28i2k0,10,10,0|5cstfz,10,10,0|5cstg0,11,11,1|5lsw3z,11,11,1|5lsw40,10,10,0|5v5xfz,10,10,0|5v5xg0,11,11,1|64iyrz,11,11,1|64iys0,10,10,0|6dw03z,10,10,0|6dw040,11,11,1|6n91fz,11,11,1|6n91g0,10,10,0|6wm2rz,10,10,0|6wm2s0,11,11,1|75z43z,11,11,1|75z440,10,10,0|7fc5fz,10,10,0|7fc5g0,11,11,1|7p25fz,11,11,1|7p25g0,10,10,0|7yf6rz,10,10,0|7yf6s0,11,11,1|87s83z,11,11,1|87s840,10,10,0|8h59fz,10,10,0|8h59g0,11,11,1|8qiarz,11,11,1|8qias0,10,10,0|8zvc3z,10,10,0|8zvc40,11,11,1|998dfz,11,11,1|998dg0,10,10,0|9ilerz,10,10,0|9iles0,11,11,1|9ryg3z,11,11,1|9ryg40,10,10,0|a1bhfz,10,10,0|a1bhg0,11,11,1|aaoirz,11,11,1|aaois0,10,10,0|ak1k3z,10,10,0|ak1k40,11,11,1|atrk3z,11,11,1|atrk40,10,10,0|b34lfz,10,10,0|b34lg0,11,11,1|bchmrz,11,11,1|bchms0,10,10,0|bluo3z,10,10,0|bluo40,11,11,1|bv7pfz,11,11,1|bv7pg0,10,10,0|c4kqrz,10,10,0|c4kqs0,11,11,1|cdxs3z,11,11,1|cdxs40,10,10,0|cnatfz,10,10,0|cnatg0,11,11,1|cwnurz,11,11,1|cwnus0,10,10,0|d60w3z,10,10,0|d60w40,11,11,1|dfdxfz,11,11,1|dfdxg0,10,10,0|dp3xfz,10,10,0|dp3xg0,11,11,1|dzwtfz,11,11,1|dzwtg0,10,10,0|e7u03z,10,10,0|e7u040,11,11,1|eimw3z,11,11,1|eimw40,10,10,0|eqk2rz,10,10,0|eqk2s0,11,11,1|f1cyrz,11,11,1|f1cys0,10,10,0|f9a5fz,10,10,0|f9a5g0,11,11,1|fkg03z,11,11,1|fkg040,10,10,0|fs083z,10,10,0|fs0840,11,11,1|g362rz,11,11,1|g362s0,10,10,0|gaqarz,10,10,0|gaqas0,11,11,1|glw5fz,11,11,1|glw5g0,10,10,0|gttc3z,10,10,0|gttc40,11,11,1|h4m83z,11,11,1|h4m840,10,10,0|hcjerz,10,10,0|hcjes0,11,11,1|hncarz,11,11,1|hncas0,10,10,0|hv9hfz,10,10,0|hv9hg0,11,11,1|i6fc3z,11,11,1|i6fc40,10,10,0|idzk3z,10,10,0|idzk40,11,11,1|ip5erz,11,11,1|ip5es0,10,10,0|iwpmrz,10,10,0|iwpms0,11,11,1|j7vhfz,11,11,1|j7vhg0,10,10,0|jffpfz,10,10,0|jffpg0,11,11,1|jqlk3z,11,11,1|jqlk40,10,10,0|jyiqrz,10,10,0|jyiqs0,11,11,1|k9bmrz,11,11,1|k9bms0,10,10,0|kh8tfz,10,10,0|kh8tg0,11,11,1|ks1pfz,11,11,1|ks1pg0,10,10,0|kzyw3z,10,10,0|kzyw40,11,11,1|lb4qrz,11,11,1|lb4qs0,10,10,0|lioyrz,10,10,0|lioys0,11,11,1|ltutfz,11,11,1|ltutg0,10,10,0|m1f1fz,10,10,0|m1f1g0,11,11,1|mckw3z,11,11,1|mckw40,10,10,0|mki2rz,10,10,0|mki2s0,11,11,1|mvayrz,11,11,1|mvays0,10,10,0|n385fz,10,10,0|n385g0,11,11,1|ne11fz,11,11,1|ne11g0,10,10,0|nly83z,10,10,0|nly840,11,11,1|nwr43z,11,11,1|nwr440,10,10,0|o4oarz,10,10,0|o4oas0,11,11,1|ofu5fz,11,11,1|ofu5g0,10,10,0|onedfz,10,10,0|onedg0,11,11,1|oyk83z,11,11,1|oyk840,10,10,0|p64g3z,10,10,0|p64g40,11,11,1|phaarz,11,11,1|phaas0,10,10,0|pp7hfz,10,10,0|pp7hg0,11,11,1|q00dfz,11,11,1|q00dg0,10,10,0|q7xk3z,10,10,0|q7xk40,11,11,1|qiqg3z,11,11,1|qiqg40,10,10,0|qqnmrz,10,10,0|qqnms0,11,11,1|r1thfz,11,11,1|r1thg0,10,10,0|r9dpfz,10,10,0|r9dpg0,11,11,1|rkjk3z,11,11,1|rkjk40,10,10,0|rs3s3z,10,10,0|rs3s40,11,11,1|s39mrz,11,11,1|s39ms0,10,10,0|sb6tfz,10,10,0|sb6tg0,11,11,1|slzpfz,11,11,1|slzpg0,10,10,0|stww3z,10,10,0|stww40,11,11,1|t4ps3z,11,11,1|t4ps40,10,10,0|tcmyrz,10,10,0|tcmys0,11,11,1|tnfurz,11,11,1|tnfus0,10,10,0|tvd1fz,10,10,0|tvd1g0,11,11,1|u6iw3z,11,11,1|u6iw40,10,10,0|ue343z,10,10,0|ue3440,11,11,1|up8yrz,11,11,1|up8ys0,10,10,0|uwt6rz,10,10,0|uwt6s0,11,11,1|v7z1fz,11,11,1|v7z1g0,10,10,0|vfw83z,10,10,0|vfw840,11,11,1|vqp43z,11,11,1|vqp440,10,10,0|vymarz,10,10,0|vymas0,11,11,1|w9f6rz,11,11,1|w9f6s0,10,10,0|whcdfz,10,10,0|whcdg0,11,11,1|wsi83z,11,11,1|wsi840,10,10,0|x02g3z,10,10,0|x02g40,11,11,1|xb8arz,11,11,1|xb8as0,10,10,0|xisirz,10,10,0|xisis0,11,11,1|xtydfz,11,11,1|xtydg0,10,10,0|y1ilfz,10,10,0|y1ilg0,11,11,1|ycog3z,11,11,1|ycog40,10,10,0|yklmrz,10,10,0|yklms0,11,11,1|yveirz,11,11,1|yveis0,10,10,0|z3bpfz,10,10,0|z3bpg0,11,11,1|ze4lfz,11,11,1|ze4lg0,10,10,0\",\"Asia/Aden|,0,203,0|-bwgbbg,100,6,0\",\"Asia/Almaty|,0,204,0|-nu1a90,92,194,0|-kmr9w1,92,194,0|-kmr9w0,96,196,0|5vaxzz,96,196,0|5vay00,91,193,1|64pr7z,91,193,1|64pr80,96,196,0|6e2vbz,96,196,0|6e2vc0,91,193,1|6nhojz,91,193,1|6nhok0,96,196,0|6wusnz,96,196,0|6wuso0,91,193,1|769lvz,91,193,1|769lw0,96,196,0|7foknz,96,196,0|7foko0,91,193,1|7p1rjz,91,193,1|7p1rk0,96,196,0|7yesvz,96,196,0|7yesw0,91,193,1|87ru7z,91,193,1|87ru80,96,196,0|8h4vjz,96,196,0|8h4vk0,91,193,1|8qhwvz,91,193,1|8qhww0,96,196,0|8zuy7z,96,196,0|8zuy80,91,193,1|997zjz,91,193,1|997zk0,96,196,0|9il0vz,96,196,0|9il0w0,91,193,1|9ry27z,91,193,1|9ry280,96,196,0|a1b3jz,96,196,0|a1b3k0,91,193,1|aao4vz,91,193,1|aao4w0,96,196,0|ak167z,96,196,0|ak1680,91,193,1|atr67z,91,193,1|atr680,96,196,0|b347jz,96,196,0|b347k0,96,196,1|bchbnz,96,196,1|bchbo0,92,194,0|bi8qbz,92,194,0|bi8qc0,96,196,0|blua7z,96,196,0|blua80,91,193,1|bv7bjz,91,193,1|bv7bk0,96,196,0|c4kcvz,96,196,0|c4kcw0,91,193,1|cdxe7z,91,193,1|cdxe80,96,196,0|cnafjz,96,196,0|cnafk0,91,193,1|cwngvz,91,193,1|cwngw0,96,196,0|d60i7z,96,196,0|d60i80,91,193,1|dfdjjz,91,193,1|dfdjk0,96,196,0|dp3jjz,96,196,0|dp3jk0,91,193,1|dzwfjz,91,193,1|dzwfk0,96,196,0|e7tm7z,96,196,0|e7tm80,91,193,1|eimi7z,91,193,1|eimi80,96,196,0|eqjovz,96,196,0|eqjow0,91,193,1|f1ckvz,91,193,1|f1ckw0,96,196,0|f99rjz,96,196,0|f99rk0,91,193,1|fkfm7z,91,193,1|fkfm80,96,196,0|frzu7z,96,196,0|frzu80,91,193,1|g35ovz,91,193,1|g35ow0,96,196,0|gapwvz,96,196,0|gapww0,91,193,1|glvrjz,91,193,1|glvrk0,96,196,0|gtsy7z,96,196,0|gtsy80,91,193,1|h4lu7z,91,193,1|h4lu80,96,196,0|hcj0vz,96,196,0|hcj0w0,91,193,1|hnbwvz,91,193,1|hnbww0,96,196,0|hv93jz,96,196,0|hv93k0,91,193,1|i6ey7z,91,193,1|i6ey80,96,196,0\",\"Asia/Amman|,0,205,0|-kcrtbk,15,11,0|1sed3z,15,11,0|1sed40,16,6,1|1yeybz,16,6,1|1yeyc0,15,11,0|29bmfz,15,11,0|29bmg0,16,6,1|2h6vnz,16,6,1|2h6vo0,15,11,0|2s3jrz,15,11,0|2s3js0,16,6,1|2zyszz,16,6,1|2zyt00,15,11,0|3axbrz,15,11,0|3axbs0,16,6,1|3kdznz,16,6,1|3kdzo0,15,11,0|3tp93z,15,11,0|3tp940,16,6,1|41kibz,16,6,1|41kic0,15,11,0|4cfbrz,15,11,0|4cfbs0,16,6,1|4kakzz,16,6,1|4kal00,15,11,0|7ygt3z,15,11,0|7ygt40,16,6,1|87vmbz,16,6,1|87vmc0,15,11,0|8heafz,15,11,0|8heag0,16,6,1|8qr8zz,16,6,1|8qr900,15,11,0|904d3z,15,11,0|904d40,16,6,1|99hbnz,16,6,1|99hbo0,15,11,0|9iufrz,15,11,0|9iufs0,16,6,1|9skczz,16,6,1|9skd00,15,11,0|a3ivrz,15,11,0|a3ivs0,16,6,1|abafnz,16,6,1|abafo0,15,11,0|alqfrz,15,11,0|alqfs0,16,6,1|au0ibz,16,6,1|au0ic0,15,11,0|b3zufz,15,11,0|b3zug0,16,6,1|bcdmbz,16,6,1|bcdmc0,15,11,0|bmgnrz,15,11,0|bmgns0,16,6,1|bvgnnz,16,6,1|bvgno0,15,11,0|c4trrz,15,11,0|c4trs0,16,6,1|ce6qbz,16,6,1|ce6qc0,15,11,0|cnjufz,15,11,0|cnjug0,16,6,1|cw6vnz,16,6,1|cw6vo0,15,11,0|d6mvrz,15,11,0|d6mvs0,16,6,1|dex13z,16,6,1|dex140,15,11,0|dpcyfz,15,11,0|dpcyg0,16,6,1|dy02fz,16,6,1|dy02g0,15,11,0|e8313z,15,11,0|e83140,16,6,1|egq53z,16,6,1|egq540,15,11,0|eqt3rz,15,11,0|eqt3s0,16,6,1|ezg7rz,16,6,1|ezg7s0,15,11,0|fe5ufz,15,11,0|fe5ug0,16,6,1|fij93z,16,6,1|fij940,15,11,0|fs7efz,15,11,0|fs7eg0,16,6,1|g1mafz,16,6,1|g1mag0,15,11,0|gaxh3z,15,11,0|gaxh40,16,6,1|gkcd3z,16,6,1|gkcd40,15,11,0|gtpefz,15,11,0|gtpeg0,16,6,1|h32frz,16,6,1|h32fs0,15,11,0|hcfh3z,15,11,0|hcfh40,16,6,1|hn8d3z,16,6,1|hn8d40,15,11,0|hv5jrz,15,11,0|hv5js0,16,6,1|i5lh3z,16,6,1|i5lh40,15,11,0|ie8l3z,15,11,0|ie8l40,16,6,1|inlmfz,16,6,1|inlmg0,15,11,0|iwynrz,15,11,0|iwyns0,16,6,1|j7rjrz,16,6,1|j7rjs0,15,11,0|jfoqfz,15,11,0|jfoqg0,16,6,1|jqhmfz,16,6,1|jqhmg0,15,11,0|jyet3z,15,11,0|jyet40,16,6,1|k9knrz,16,6,1|k9kns0,15,11,0|kh4vrz,15,11,0|kh4vs0,16,6,1|ksaqfz,16,6,1|ksaqg0,15,11,0|kzuyfz,15,11,0|kzuyg0,16,6,1|lb0t3z,16,6,1|lb0t40,15,11,0|lixzrz,15,11,0|lixzs0,16,6,1|ltqvrz,16,6,1|ltqvs0,15,11,0|m1o2fz,15,11,0|m1o2g0,16,6,1|my2nnz,16,6,1|my2no0,15,11,0|n347rz,15,11,0|n347s0,16,6,1|nea2fz,16,6,1|nea2g0,15,11,0|nluafz,15,11,0|nluag0,16,6,1|nx053z,16,6,1|nx0540,15,11,0|o4xbrz,15,11,0|o4xbs0,16,6,1|ofq7rz,16,6,1|ofq7s0,15,11,0|onnefz,15,11,0|onneg0,16,6,1|oygafz,16,6,1|oygag0,15,11,0|p6dh3z,15,11,0|p6dh40,16,6,1|ph6d3z,16,6,1|ph6d40,15,11,0|pp3jrz,15,11,0|pp3js0,16,6,1|pzwfrz,16,6,1|pzwfs0,15,11,0|q7tmfz,15,11,0|q7tmg0,16,6,1|qizh3z,16,6,1|qizh40,15,11,0|qqjp3z,15,11,0|qqjp40,16,6,1|r1pjrz,16,6,1|r1pjs0,15,11,0|r9mqfz,15,11,0|r9mqg0,16,6,1|rkfmfz,16,6,1|rkfmg0,15,11,0|rsct3z,15,11,0|rsct40,16,6,1|s35p3z,16,6,1|s35p40,15,11,0|sb2vrz,15,11,0|sb2vs0,16,6,1|slvrrz,16,6,1|slvrs0,15,11,0|stsyfz,15,11,0|stsyg0,16,6,1|t4yt3z,16,6,1|t4yt40,15,11,0|tcj13z,15,11,0|tcj140,16,6,1|tnovrz,16,6,1|tnovs0,15,11,0|tv93rz,15,11,0|tv93s0,16,6,1|u6eyfz,16,6,1|u6eyg0,15,11,0|uec53z,15,11,0|uec540,16,6,1|up513z,16,6,1|up5140,15,11,0|ux27rz,15,11,0|ux27s0,16,6,1|v7v3rz,16,6,1|v7v3s0,15,11,0|vfsafz,15,11,0|vfsag0,16,6,1|vql6fz,16,6,1|vql6g0,15,11,0|vyid3z,15,11,0|vyid40,16,6,1|w9o7rz,16,6,1|w9o7s0,15,11,0|wh8frz,15,11,0|wh8fs0,16,6,1|wseafz,16,6,1|wseag0,15,11,0|x0bh3z,15,11,0|x0bh40,16,6,1|xb4d3z,16,6,1|xb4d40,15,11,0|xj1jrz,15,11,0|xj1js0,16,6,1|xtufrz,16,6,1|xtufs0,15,11,0|y1rmfz,15,11,0|y1rmg0,16,6,1|yckifz,16,6,1|yckig0,15,11,0|ykhp3z,15,11,0|ykhp40,16,6,1|yvnjrz,16,6,1|yvnjs0,15,11,0|z37rrz,15,11,0|z37rs0,16,6,1|zedmfz,16,6,1|zedmg0,15,11,0\",\"Asia/Anadyr|,0,206,0|-nu1sv8,102,200,0|-kmrtc1,102,200,0|-kmrtc0,103,201,0|5vaejz,103,201,0|5vaek0,104,207,1|64p7rz,104,207,1|64p7s0,103,201,0|6e2bvz,103,201,0|6e2bw0,103,201,1|6nh7vz,103,201,1|6nh7w0,102,200,0|6wubzz,102,200,0|6wuc00,103,201,1|76957z,103,201,1|769580,102,200,0|7fo3zz,102,200,0|7fo400,103,201,1|7p1avz,103,201,1|7p1aw0,102,200,0|7yec7z,102,200,0|7yec80,103,201,1|87rdjz,103,201,1|87rdk0,102,200,0|8h4evz,102,200,0|8h4ew0,103,201,1|8qhg7z,103,201,1|8qhg80,102,200,0|8zuhjz,102,200,0|8zuhk0,103,201,1|997ivz,103,201,1|997iw0,102,200,0|9ikk7z,102,200,0|9ikk80,103,201,1|9rxljz,103,201,1|9rxlk0,102,200,0|a1amvz,102,200,0|a1amw0,103,201,1|aano7z,103,201,1|aano80,102,200,0|ak0pjz,102,200,0|ak0pk0,103,201,1|atqpjz,103,201,1|atqpk0,102,200,0|b33qvz,102,200,0|b33qw0,102,200,1|bcguzz,102,200,1|bcgv00,90,192,0|bi89nz,90,192,0|bi89o0,102,200,0|blttjz,102,200,0|blttk0,103,201,1|bv6uvz,103,201,1|bv6uw0,102,200,0|c4jw7z,102,200,0|c4jw80,103,201,1|cdwxjz,103,201,1|cdwxk0,102,200,0|cn9yvz,102,200,0|cn9yw0,103,201,1|cwn07z,103,201,1|cwn080,102,200,0|d601jz,102,200,0|d601k0,103,201,1|dfd2vz,103,201,1|dfd2w0,102,200,0|dp32vz,102,200,0|dp32w0,103,201,1|dzvyvz,103,201,1|dzvyw0,102,200,0|e7t5jz,102,200,0|e7t5k0,103,201,1|eim1jz,103,201,1|eim1k0,102,200,0|eqj87z,102,200,0|eqj880,103,201,1|f1c47z,103,201,1|f1c480,102,200,0|f99avz,102,200,0|f99aw0,103,201,1|fkf5jz,103,201,1|fkf5k0,102,200,0|frzdjz,102,200,0|frzdk0,103,201,1|g3587z,103,201,1|g35880,102,200,0|gapg7z,102,200,0|gapg80,103,201,1|glvavz,103,201,1|glvaw0,102,200,0|gtshjz,102,200,0|gtshk0,103,201,1|h4ldjz,103,201,1|h4ldk0,102,200,0|hcik7z,102,200,0|hcik80,103,201,1|hnbg7z,103,201,1|hnbg80,102,200,0|hv8mvz,102,200,0|hv8mw0,103,201,1|i6ehjz,103,201,1|i6ehk0,102,200,0|idypjz,102,200,0|idypk0,103,201,1|ip4k7z,103,201,1|ip4k80,102,200,0|iwos7z,102,200,0|iwos80,103,201,1|j7umvz,103,201,1|j7umw0,102,200,0|jfeuvz,102,200,0|jfeuw0,103,201,1|jqkpjz,103,201,1|jqkpk0,102,200,0|jyhw7z,102,200,0|jyhw80,103,201,1|k9as7z,103,201,1|k9as80,102,200,0|kh7yvz,102,200,0|kh7yw0,103,201,1|ks0uvz,103,201,1|ks0uw0,102,200,0|kzy1jz,102,200,0|kzy1k0,102,200,1|lb3yzz,102,200,1|lb3z00,90,192,0|lio6zz,90,192,0|lio700,102,200,0\",\"Asia/Aqtau|,0,208,0|-nu15b4,105,209,0|-kmr741,105,209,0|-kmr740,92,194,0|64pwrz,92,194,0|64pws0,96,196,0|6e2vbz,96,196,0|6e2vc0,96,196,1|6nhrbz,96,196,1|6nhrc0,92,194,0|6wuvfz,92,194,0|6wuvg0,96,196,1|769onz,96,196,1|769oo0,92,194,0|7fonfz,92,194,0|7fong0,96,196,1|7p1ubz,96,196,1|7p1uc0,92,194,0|7yevnz,92,194,0|7yevo0,96,196,1|87rwzz,96,196,1|87rx00,92,194,0|8h4ybz,92,194,0|8h4yc0,96,196,1|8qhznz,96,196,1|8qhzo0,92,194,0|8zv0zz,92,194,0|8zv100,96,196,1|9982bz,96,196,1|9982c0,92,194,0|9il3nz,92,194,0|9il3o0,96,196,1|9ry4zz,96,196,1|9ry500,92,194,0|a1b6bz,92,194,0|a1b6c0,96,196,1|aao7nz,96,196,1|aao7o0,92,194,0|ak18zz,92,194,0|ak1900,96,196,1|atr8zz,96,196,1|atr900,92,194,0|b34abz,92,194,0|b34ac0,92,194,1|bchefz,92,194,1|bcheg0,105,209,0|bi8t3z,105,209,0|bi8t40,92,194,0|bluczz,92,194,0|blud00,96,196,1|bv7ebz,96,196,1|bv7ec0,92,194,0|c4kfnz,92,194,0|c4kfo0,96,196,1|cdxgzz,96,196,1|cdxh00,92,194,0|cnaibz,92,194,0|cnaic0,96,196,1|cwnjnz,96,196,1|cwnjo0,105,209,0|d60nrz,105,209,0|d60ns0,92,194,1|dfdp3z,92,194,1|dfdp40,105,209,0|dp3p3z,105,209,0|dp3p40,92,194,1|dzwl3z,92,194,1|dzwl40,105,209,0|e7trrz,105,209,0|e7trs0,92,194,1|eimnrz,92,194,1|eimns0,105,209,0|eqjufz,105,209,0|eqjug0,92,194,1|f1cqfz,92,194,1|f1cqg0,105,209,0|f99x3z,105,209,0|f99x40,92,194,1|fkfrrz,92,194,1|fkfrs0,105,209,0|frzzrz,105,209,0|frzzs0,92,194,1|g35ufz,92,194,1|g35ug0,105,209,0|gaq2fz,105,209,0|gaq2g0,92,194,1|glvx3z,92,194,1|glvx40,105,209,0|gtt3rz,105,209,0|gtt3s0,92,194,1|h4lzrz,92,194,1|h4lzs0,105,209,0|hcj6fz,105,209,0|hcj6g0,92,194,1|hnc2fz,92,194,1|hnc2g0,105,209,0|hv993z,105,209,0|hv9940,92,194,1|i6f3rz,92,194,1|i6f3s0,92,194,0\",\"Asia/Aqtobe|,0,210,0|-nu16l4,105,209,0|-kmr741,105,209,0|-kmr740,92,194,0|5vb0rz,92,194,0|5vb0s0,96,196,1|64ptzz,96,196,1|64pu00,96,196,0|6e2vbz,96,196,0|6e2vc0,96,196,1|6nhrbz,96,196,1|6nhrc0,92,194,0|6wuvfz,92,194,0|6wuvg0,96,196,1|769onz,96,196,1|769oo0,92,194,0|7fonfz,92,194,0|7fong0,96,196,1|7p1ubz,96,196,1|7p1uc0,92,194,0|7yevnz,92,194,0|7yevo0,96,196,1|87rwzz,96,196,1|87rx00,92,194,0|8h4ybz,92,194,0|8h4yc0,96,196,1|8qhznz,96,196,1|8qhzo0,92,194,0|8zv0zz,92,194,0|8zv100,96,196,1|9982bz,96,196,1|9982c0,92,194,0|9il3nz,92,194,0|9il3o0,96,196,1|9ry4zz,96,196,1|9ry500,92,194,0|a1b6bz,92,194,0|a1b6c0,96,196,1|aao7nz,96,196,1|aao7o0,92,194,0|ak18zz,92,194,0|ak1900,96,196,1|atr8zz,96,196,1|atr900,92,194,0|b34abz,92,194,0|b34ac0,92,194,1|bchefz,92,194,1|bcheg0,105,209,0|bi8t3z,105,209,0|bi8t40,92,194,0|bluczz,92,194,0|blud00,96,196,1|bv7ebz,96,196,1|bv7ec0,92,194,0|c4kfnz,92,194,0|c4kfo0,96,196,1|cdxgzz,96,196,1|cdxh00,92,194,0|cnaibz,92,194,0|cnaic0,96,196,1|cwnjnz,96,196,1|cwnjo0,92,194,0|d60kzz,92,194,0|d60l00,96,196,1|dfdmbz,96,196,1|dfdmc0,92,194,0|dp3mbz,92,194,0|dp3mc0,96,196,1|dzwibz,96,196,1|dzwic0,92,194,0|e7tozz,92,194,0|e7tp00,96,196,1|eimkzz,96,196,1|eiml00,92,194,0|eqjrnz,92,194,0|eqjro0,96,196,1|f1cnnz,96,196,1|f1cno0,92,194,0|f99ubz,92,194,0|f99uc0,96,196,1|fkfozz,96,196,1|fkfp00,92,194,0|frzwzz,92,194,0|frzx00,96,196,1|g35rnz,96,196,1|g35ro0,92,194,0|gapznz,92,194,0|gapzo0,96,196,1|glvubz,96,196,1|glvuc0,92,194,0|gtt0zz,92,194,0|gtt100,96,196,1|h4lwzz,96,196,1|h4lx00,92,194,0|hcj3nz,92,194,0|hcj3o0,96,196,1|hnbznz,96,196,1|hnbzo0,92,194,0|hv96bz,92,194,0|hv96c0,96,196,1|i6f0zz,96,196,1|i6f100,92,194,0\",\"Asia/Ashgabat|,0,211,0|-nu16t8,105,209,0|-kmr741,105,209,0|-kmr740,92,194,0|5vb0rz,92,194,0|5vb0s0,96,196,1|64ptzz,96,196,1|64pu00,92,194,0|6e2y3z,92,194,0|6e2y40,96,196,1|6nhrbz,96,196,1|6nhrc0,92,194,0|6wuvfz,92,194,0|6wuvg0,96,196,1|769onz,96,196,1|769oo0,92,194,0|7fonfz,92,194,0|7fong0,96,196,1|7p1ubz,96,196,1|7p1uc0,92,194,0|7yevnz,92,194,0|7yevo0,96,196,1|87rwzz,96,196,1|87rx00,92,194,0|8h4ybz,92,194,0|8h4yc0,96,196,1|8qhznz,96,196,1|8qhzo0,92,194,0|8zv0zz,92,194,0|8zv100,96,196,1|9982bz,96,196,1|9982c0,92,194,0|9il3nz,92,194,0|9il3o0,96,196,1|9ry4zz,96,196,1|9ry500,92,194,0|a1b6bz,92,194,0|a1b6c0,96,196,1|aao7nz,96,196,1|aao7o0,92,194,0|ak18zz,92,194,0|ak1900,96,196,1|atr8zz,96,196,1|atr900,92,194,0|b34abz,92,194,0|b34ac0,92,194,1|bchefz,92,194,1|bcheg0,105,209,0|bi8t3z,105,209,0|bi8t40,92,194,0\",\"Asia/Atyrau|,0,212,0|-nu15m8,100,6,0|-kmr4c1,100,6,0|-kmr4c0,92,194,0|64pwrz,92,194,0|64pws0,96,196,0|6e2vbz,96,196,0|6e2vc0,96,196,1|6nhrbz,96,196,1|6nhrc0,92,194,0|6wuvfz,92,194,0|6wuvg0,96,196,1|769onz,96,196,1|769oo0,92,194,0|7fonfz,92,194,0|7fong0,96,196,1|7p1ubz,96,196,1|7p1uc0,92,194,0|7yevnz,92,194,0|7yevo0,96,196,1|87rwzz,96,196,1|87rx00,92,194,0|8h4ybz,92,194,0|8h4yc0,96,196,1|8qhznz,96,196,1|8qhzo0,92,194,0|8zv0zz,92,194,0|8zv100,96,196,1|9982bz,96,196,1|9982c0,92,194,0|9il3nz,92,194,0|9il3o0,96,196,1|9ry4zz,96,196,1|9ry500,92,194,0|a1b6bz,92,194,0|a1b6c0,96,196,1|aao7nz,96,196,1|aao7o0,92,194,0|ak18zz,92,194,0|ak1900,96,196,1|atr8zz,96,196,1|atr900,92,194,0|b34abz,92,194,0|b34ac0,92,194,1|bchefz,92,194,1|bcheg0,105,209,0|bi8t3z,105,209,0|bi8t40,92,194,0|bluczz,92,194,0|blud00,96,196,1|bv7ebz,96,196,1|bv7ec0,92,194,0|c4kfnz,92,194,0|c4kfo0,96,196,1|cdxgzz,96,196,1|cdxh00,92,194,0|cnaibz,92,194,0|cnaic0,96,196,1|cwnjnz,96,196,1|cwnjo0,92,194,0|d60kzz,92,194,0|d60l00,96,196,1|dfdmbz,96,196,1|dfdmc0,92,194,0|dp3mbz,92,194,0|dp3mc0,96,196,1|dzwibz,96,196,1|dzwic0,92,194,0|e7tozz,92,194,0|e7tp00,96,196,1|eimkzz,96,196,1|eiml00,92,194,0|eqjrnz,92,194,0|eqjro0,96,196,1|f1cnnz,96,196,1|f1cno0,92,194,0|f99ubz,92,194,0|f99uc0,92,194,1|fkfrrz,92,194,1|fkfrs0,105,209,0|frzzrz,105,209,0|frzzs0,92,194,1|g35ufz,92,194,1|g35ug0,105,209,0|gaq2fz,105,209,0|gaq2g0,92,194,1|glvx3z,92,194,1|glvx40,105,209,0|gtt3rz,105,209,0|gtt3s0,92,194,1|h4lzrz,92,194,1|h4lzs0,105,209,0|hcj6fz,105,209,0|hcj6g0,92,194,1|hnc2fz,92,194,1|hnc2g0,105,209,0|hv993z,105,209,0|hv9940,92,194,1|i6f3rz,92,194,1|i6f3s0,92,194,0\",\"Asia/Baghdad|,0,213,0|-15r1hk4,53,214,0|-r50g81,53,214,0|-r50g80,100,6,0|6fmnnz,100,6,0|6fmno0,105,209,1|6nhwvz,105,209,1|6nhww0,100,6,0|6wt6bz,100,6,0|6wt6c0,105,209,1|769u7z,105,209,1|769u80,100,6,0|7foszz,100,6,0|7fot00,105,209,1|7p3m7z,105,209,1|7p3m80,100,6,0|7ygqbz,100,6,0|7ygqc0,105,209,1|87rzrz,105,209,1|87rzs0,100,6,0|8h513z,100,6,0|8h5140,105,209,1|8qi2fz,105,209,1|8qi2g0,100,6,0|8zv3rz,100,6,0|8zv3s0,105,209,1|99853z,105,209,1|998540,100,6,0|9il6fz,100,6,0|9il6g0,105,209,1|9ry7rz,105,209,1|9ry7s0,100,6,0|a1b93z,100,6,0|a1b940,105,209,1|aaoafz,105,209,1|aaoag0,100,6,0|ak1brz,100,6,0|ak1bs0,105,209,1|atrbrz,105,209,1|atrbs0,100,6,0|b36dbz,100,6,0|b36dc0,105,209,1|bcl9bz,105,209,1|bcl9c0,100,6,0|bm05bz,100,6,0|bm05c0,105,209,1|bvf1bz,105,209,1|bvf1c0,100,6,0|c4s2nz,100,6,0|c4s2o0,105,209,1|ce6ynz,105,209,1|ce6yo0,100,6,0|cnjzzz,100,6,0|cnk000,105,209,1|cwyvzz,105,209,1|cwyw00,100,6,0|d6bxbz,100,6,0|d6bxc0,105,209,1|dfqtbz,105,209,1|dfqtc0,100,6,0|dp5pbz,100,6,0|dp5pc0,105,209,1|dyklbz,105,209,1|dyklc0,100,6,0|e7xmnz,100,6,0|e7xmo0,105,209,1|ehcinz,105,209,1|ehcio0,100,6,0|eqpjzz,100,6,0|eqpk00,105,209,1|f04fzz,105,209,1|f04g00,100,6,0|f9hhbz,100,6,0|f9hhc0,105,209,1|fiwdbz,105,209,1|fiwdc0,100,6,0|fsb9bz,100,6,0|fsb9c0,105,209,1|g1q5bz,105,209,1|g1q5c0,100,6,0|gb36nz,100,6,0|gb36o0,105,209,1|gki2nz,105,209,1|gki2o0,100,6,0|gtv3zz,100,6,0|gtv400,105,209,1|h39zzz,105,209,1|h3a000,100,6,0|hcn1bz,100,6,0|hcn1c0,105,209,1|hm1xbz,105,209,1|hm1xc0,100,6,0|hvgtbz,100,6,0|hvgtc0,105,209,1|i4vpbz,105,209,1|i4vpc0,100,6,0|ie8qnz,100,6,0|ie8qo0,105,209,1|innmnz,105,209,1|innmo0,100,6,0|ix0nzz,100,6,0|ix0o00,105,209,1|j6fjzz,105,209,1|j6fk00,100,6,0|jfslbz,100,6,0|jfslc0,105,209,1|jp7hbz,105,209,1|jp7hc0,100,6,0\",\"Asia/Bahrain|,0,215,0|-q3gmvk,105,209,0|19d0vz,105,209,0|19d0w0,100,6,0\",\"Asia/Baku|,0,216,0|-nu158c,100,6,0|-6p7kc1,100,6,0|-6p7kc0,105,209,0|5vb3jz,105,209,0|5vb3k0,92,194,1|64pwrz,92,194,1|64pws0,105,209,0|6e30vz,105,209,0|6e30w0,92,194,1|6nhu3z,92,194,1|6nhu40,105,209,0|6wuy7z,105,209,0|6wuy80,92,194,1|769rfz,92,194,1|769rg0,105,209,0|7foq7z,105,209,0|7foq80,92,194,1|7p1x3z,92,194,1|7p1x40,105,209,0|7yeyfz,105,209,0|7yeyg0,92,194,1|87rzrz,92,194,1|87rzs0,105,209,0|8h513z,105,209,0|8h5140,92,194,1|8qi2fz,92,194,1|8qi2g0,105,209,0|8zv3rz,105,209,0|8zv3s0,92,194,1|99853z,92,194,1|998540,105,209,0|9il6fz,105,209,0|9il6g0,92,194,1|9ry7rz,92,194,1|9ry7s0,105,209,0|a1b93z,105,209,0|a1b940,92,194,1|aaoafz,92,194,1|aaoag0,105,209,0|ak1brz,105,209,0|ak1bs0,92,194,1|atrbrz,92,194,1|atrbs0,105,209,0|b34d3z,105,209,0|b34d40,105,209,1|bchh7z,105,209,1|bchh80,100,6,0|bluijz,100,6,0|bluik0,105,209,1|bv7jvz,105,209,1|bv7jw0,105,209,0|dp3xfz,105,209,0|dp3xg0,92,194,1|dzwtfz,92,194,1|dzwtg0,105,209,0|e7txbz,105,209,0|e7txc0,92,194,1|eimtbz,92,194,1|eimtc0,105,209,0|eqjzzz,105,209,0|eqk000,92,194,1|f1cvzz,92,194,1|f1cw00,105,209,0|f9a2nz,105,209,0|f9a2o0,92,194,1|fkfxbz,92,194,1|fkfxc0,105,209,0|fs05bz,105,209,0|fs05c0,92,194,1|g35zzz,92,194,1|g36000,105,209,0|gaq7zz,105,209,0|gaq800,92,194,1|glw2nz,92,194,1|glw2o0,105,209,0|gtt9bz,105,209,0|gtt9c0,92,194,1|h4m5bz,92,194,1|h4m5c0,105,209,0|hcjbzz,105,209,0|hcjc00,92,194,1|hnc7zz,92,194,1|hnc800,105,209,0|hv9enz,105,209,0|hv9eo0,92,194,1|i6f9bz,92,194,1|i6f9c0,105,209,0|idzhbz,105,209,0|idzhc0,92,194,1|ip5bzz,92,194,1|ip5c00,105,209,0|iwpjzz,105,209,0|iwpk00,92,194,1|j7venz,92,194,1|j7veo0,105,209,0|jffmnz,105,209,0|jffmo0,92,194,1|jqlhbz,92,194,1|jqlhc0,105,209,0|jyinzz,105,209,0|jyio00,92,194,1|k9bjzz,92,194,1|k9bk00,105,209,0|kh8qnz,105,209,0|kh8qo0,92,194,1|ks1mnz,92,194,1|ks1mo0,105,209,0|kzytbz,105,209,0|kzytc0,92,194,1|lb4nzz,92,194,1|lb4o00,105,209,0|liovzz,105,209,0|liow00,92,194,1|ltuqnz,92,194,1|ltuqo0,105,209,0|m1eynz,105,209,0|m1eyo0,92,194,1|mcktbz,92,194,1|mcktc0,105,209,0|mkhzzz,105,209,0|mki000,92,194,1|mvavzz,92,194,1|mvaw00,105,209,0|n382nz,105,209,0|n382o0,92,194,1|ne0ynz,92,194,1|ne0yo0,105,209,0|nly5bz,105,209,0|nly5c0,92,194,1|nwr1bz,92,194,1|nwr1c0,105,209,0\",\"Asia/Bangkok|,0,217,0|-1ayyla4,53,217,0|-pysda5,53,217,0|-pysda4,91,193,0\",\"Asia/Barnaul|,0,218,0|-q4ljic,96,196,0|-kmrco1,96,196,0|-kmrco0,91,193,0|5vav7z,91,193,0|5vav80,89,191,1|64pofz,89,191,1|64pog0,91,193,0|6e2sjz,91,193,0|6e2sk0,89,191,1|6nhlrz,89,191,1|6nhls0,91,193,0|6wupvz,91,193,0|6wupw0,89,191,1|769j3z,89,191,1|769j40,91,193,0|7fohvz,91,193,0|7fohw0,89,191,1|7p1orz,89,191,1|7p1os0,91,193,0|7yeq3z,91,193,0|7yeq40,89,191,1|87rrfz,89,191,1|87rrg0,91,193,0|8h4srz,91,193,0|8h4ss0,89,191,1|8qhu3z,89,191,1|8qhu40,91,193,0|8zuvfz,91,193,0|8zuvg0,89,191,1|997wrz,89,191,1|997ws0,91,193,0|9iky3z,91,193,0|9iky40,89,191,1|9rxzfz,89,191,1|9rxzg0,91,193,0|a1b0rz,91,193,0|a1b0s0,89,191,1|aao23z,89,191,1|aao240,91,193,0|ak13fz,91,193,0|ak13g0,89,191,1|atr3fz,89,191,1|atr3g0,91,193,0|b344rz,91,193,0|b344s0,91,193,1|bch8vz,91,193,1|bch8w0,96,196,0|bi8njz,96,196,0|bi8nk0,91,193,0|blu7fz,91,193,0|blu7g0,89,191,1|bv78rz,89,191,1|bv78s0,91,193,0|c4ka3z,91,193,0|c4ka40,89,191,1|cdxbfz,89,191,1|cdxbg0,91,193,0|cnacrz,91,193,0|cnacs0,89,191,1|cwne3z,89,191,1|cwne40,91,193,0|d60ffz,91,193,0|d60fg0,89,191,1|d98v3z,89,191,1|d98v40,91,193,1|dfdjjz,91,193,1|dfdjk0,96,196,0|dp3jjz,96,196,0|dp3jk0,91,193,1|dzwfjz,91,193,1|dzwfk0,96,196,0|e7tm7z,96,196,0|e7tm80,91,193,1|eimi7z,91,193,1|eimi80,96,196,0|eqjovz,96,196,0|eqjow0,91,193,1|f1ckvz,91,193,1|f1ckw0,96,196,0|f99rjz,96,196,0|f99rk0,91,193,1|fkfm7z,91,193,1|fkfm80,96,196,0|frzu7z,96,196,0|frzu80,91,193,1|g35ovz,91,193,1|g35ow0,96,196,0|gapwvz,96,196,0|gapww0,91,193,1|glvrjz,91,193,1|glvrk0,96,196,0|gtsy7z,96,196,0|gtsy80,91,193,1|h4lu7z,91,193,1|h4lu80,96,196,0|hcj0vz,96,196,0|hcj0w0,91,193,1|hnbwvz,91,193,1|hnbww0,96,196,0|hv93jz,96,196,0|hv93k0,91,193,1|i6ey7z,91,193,1|i6ey80,96,196,0|idz67z,96,196,0|idz680,91,193,1|ip50vz,91,193,1|ip50w0,96,196,0|iwp8vz,96,196,0|iwp8w0,91,193,1|j7v3jz,91,193,1|j7v3k0,96,196,0|jffbjz,96,196,0|jffbk0,91,193,1|jql67z,91,193,1|jql680,96,196,0|jyicvz,96,196,0|jyicw0,91,193,1|k9b8vz,91,193,1|k9b8w0,96,196,0|kh8fjz,96,196,0|kh8fk0,91,193,1|ks1bjz,91,193,1|ks1bk0,96,196,0|kzyi7z,96,196,0|kzyi80,91,193,1|lb4cvz,91,193,1|lb4cw0,96,196,0|liokvz,96,196,0|liokw0,91,193,0|ne0krz,91,193,0|ne0ks0,96,196,0|o4nwvz,96,196,0|o4nww0,91,193,0\",\"Asia/Beirut|,0,219,0|-1ayy98o,15,11,0|-pyzew1,15,11,0|-pyzew0,16,6,1|-po4r01,16,6,1|-po4r00,15,11,0|-pfwdk1,15,11,0|-pfwdk0,16,6,1|-p6hkc1,16,6,1|-p6hkc0,15,11,0|-oxj9k1,15,11,0|-oxj9k0,16,6,1|-ongdo1,16,6,1|-ongdo0,15,11,0|-oddc81,15,11,0|-oddc80,16,6,1|-o5t701,16,6,1|-o5t700,15,11,0|-6m2iw1,15,11,0|-6m2iw0,16,6,1|-6e79o1,16,6,1|-6e79o0,15,11,0|-63alk1,15,11,0|-63alk0,16,6,1|-5vfcc1,16,6,1|-5vfcc0,15,11,0|-5kio81,15,11,0|-5kio80,16,6,1|-5cnf01,16,6,1|-5cnf00,15,11,0|-51ow81,15,11,0|-51ow80,16,6,1|-4ttn01,16,6,1|-4ttn00,15,11,0|-4iwyw1,15,11,0|-4iwyw0,16,6,1|-4b1po1,16,6,1|-4b1po0,15,11,0|1ag2fz,15,11,0|1ag2g0,16,6,1|1fn0zz,16,6,1|1fn100,15,11,0|1qjp3z,15,11,0|1qjp40,16,6,1|1yeybz,16,6,1|1yeyc0,15,11,0|29bmfz,15,11,0|29bmg0,16,6,1|2h6vnz,16,6,1|2h6vo0,15,11,0|2s3jrz,15,11,0|2s3js0,16,6,1|2zyszz,16,6,1|2zyt00,15,11,0|3axbrz,15,11,0|3axbs0,16,6,1|3iskzz,16,6,1|3isl00,15,11,0|3tp93z,15,11,0|3tp940,16,6,1|41kibz,16,6,1|41kic0,15,11,0|4cfbrz,15,11,0|4cfbs0,16,6,1|4kakzz,16,6,1|4kal00,15,11,0|7h8frz,15,11,0|7h8fs0,16,6,1|7pvgzz,16,6,1|7pvh00,15,11,0|800d3z,15,11,0|800d40,16,6,1|88nebz,16,6,1|88nec0,15,11,0|8isafz,15,11,0|8isag0,16,6,1|8rfbnz,16,6,1|8rfbo0,15,11,0|91k7rz,15,11,0|91k7s0,16,6,1|9a78zz,16,6,1|9a7900,15,11,0|9lzefz,15,11,0|9lzeg0,16,6,1|9t10zz,16,6,1|9t1100,15,11,0|a3ml3z,15,11,0|a3ml40,16,6,1|absybz,16,6,1|absyc0,15,11,0|alxufz,15,11,0|alxug0,16,6,1|aukvnz,16,6,1|aukvo0,15,11,0|b4prrz,15,11,0|b4prs0,16,6,1|bdcszz,16,6,1|bdct00,15,11,0|bnjjrz,15,11,0|bnjjs0,16,6,1|bvkczz,16,6,1|bvkd00,15,11,0|c4kifz,15,11,0|c4kig0,16,6,1|cdxgzz,16,6,1|cdxh00,15,11,0|cnal3z,15,11,0|cnal40,16,6,1|cwnjnz,16,6,1|cwnjo0,15,11,0|d60nrz,15,11,0|d60ns0,16,6,1|dfdmbz,16,6,1|dfdmc0,15,11,0|dp3p3z,15,11,0|dp3p40,16,6,1|dygnnz,16,6,1|dygno0,15,11,0|e7trrz,15,11,0|e7trs0,16,6,1|eh6qbz,16,6,1|eh6qc0,15,11,0|eqjufz,15,11,0|eqjug0,16,6,1|ezwszz,16,6,1|ezwt00,15,11,0|f99x3z,15,11,0|f99x40,16,6,1|fkfozz,16,6,1|fkfp00,15,11,0|frzzrz,15,11,0|frzzs0,16,6,1|g35rnz,16,6,1|g35ro0,15,11,0|gaq2fz,15,11,0|gaq2g0,16,6,1|glvubz,16,6,1|glvuc0,15,11,0|gtt3rz,15,11,0|gtt3s0,16,6,1|h4lwzz,16,6,1|h4lx00,15,11,0|hcj6fz,15,11,0|hcj6g0,16,6,1|hnbznz,16,6,1|hnbzo0,15,11,0|hv993z,15,11,0|hv9940,16,6,1|i6f0zz,16,6,1|i6f100,15,11,0|idzbrz,15,11,0|idzbs0,16,6,1|ip53nz,16,6,1|ip53o0,15,11,0|iwpefz,15,11,0|iwpeg0,16,6,1|j7v6bz,16,6,1|j7v6c0,15,11,0|jffh3z,15,11,0|jffh40,16,6,1|jql8zz,16,6,1|jql900,15,11,0|jyiifz,15,11,0|jyiig0,16,6,1|k9bbnz,16,6,1|k9bbo0,15,11,0|kh8l3z,15,11,0|kh8l40,16,6,1|ks1ebz,16,6,1|ks1ec0,15,11,0|kzynrz,15,11,0|kzyns0,16,6,1|lb4fnz,16,6,1|lb4fo0,15,11,0|lioqfz,15,11,0|lioqg0,16,6,1|ltuibz,16,6,1|ltuic0,15,11,0|m1et3z,15,11,0|m1et40,16,6,1|mckkzz,16,6,1|mckl00,15,11,0|mkhufz,15,11,0|mkhug0,16,6,1|mvannz,16,6,1|mvano0,15,11,0|n37x3z,15,11,0|n37x40,16,6,1|ne0qbz,16,6,1|ne0qc0,15,11,0|nlxzrz,15,11,0|nlxzs0,16,6,1|nwqszz,16,6,1|nwqt00,15,11,0|o4o2fz,15,11,0|o4o2g0,16,6,1|oftubz,16,6,1|oftuc0,15,11,0|one53z,15,11,0|one540,16,6,1|oyjwzz,16,6,1|oyjx00,15,11,0|p647rz,15,11,0|p647s0,16,6,1|ph9znz,16,6,1|ph9zo0,15,11,0|pp793z,15,11,0|pp7940,16,6,1|q002bz,16,6,1|q002c0,15,11,0|q7xbrz,15,11,0|q7xbs0,16,6,1|qiq4zz,16,6,1|qiq500,15,11,0|qqnefz,15,11,0|qqneg0,16,6,1|r1t6bz,16,6,1|r1t6c0,15,11,0|r9dh3z,15,11,0|r9dh40,16,6,1|rkj8zz,16,6,1|rkj900,15,11,0|rs3jrz,15,11,0|rs3js0,16,6,1|s39bnz,16,6,1|s39bo0,15,11,0|sb6l3z,15,11,0|sb6l40,16,6,1|slzebz,16,6,1|slzec0,15,11,0|stwnrz,15,11,0|stwns0,16,6,1|t4pgzz,16,6,1|t4ph00,15,11,0|tcmqfz,15,11,0|tcmqg0,16,6,1|tnfjnz,16,6,1|tnfjo0,15,11,0|tvct3z,15,11,0|tvct40,16,6,1|u6ikzz,16,6,1|u6il00,15,11,0|ue2vrz,15,11,0|ue2vs0,16,6,1|up8nnz,16,6,1|up8no0,15,11,0|uwsyfz,15,11,0|uwsyg0,16,6,1|v7yqbz,16,6,1|v7yqc0,15,11,0|vfvzrz,15,11,0|vfvzs0,16,6,1|vqoszz,16,6,1|vqot00,15,11,0|vym2fz,15,11,0|vym2g0,16,6,1|w9evnz,16,6,1|w9evo0,15,11,0|whc53z,15,11,0|whc540,16,6,1|wshwzz,16,6,1|wshx00,15,11,0|x027rz,15,11,0|x027s0,16,6,1|xb7znz,16,6,1|xb7zo0,15,11,0|xisafz,15,11,0|xisag0,16,6,1|xty2bz,16,6,1|xty2c0,15,11,0|y1id3z,15,11,0|y1id40,16,6,1|yco4zz,16,6,1|yco500,15,11,0|yklefz,15,11,0|ykleg0,16,6,1|yve7nz,16,6,1|yve7o0,15,11,0|z3bh3z,15,11,0|z3bh40,16,6,1|ze4abz,16,6,1|ze4ac0,15,11,0\",\"Asia/Bishkek|,0,220,0|-nu19tc,92,194,0|-kmr9w1,92,194,0|-kmr9w0,96,196,0|5vaxzz,96,196,0|5vay00,91,193,1|64pr7z,91,193,1|64pr80,96,196,0|6e2vbz,96,196,0|6e2vc0,91,193,1|6nhojz,91,193,1|6nhok0,96,196,0|6wusnz,96,196,0|6wuso0,91,193,1|769lvz,91,193,1|769lw0,96,196,0|7foknz,96,196,0|7foko0,91,193,1|7p1rjz,91,193,1|7p1rk0,96,196,0|7yesvz,96,196,0|7yesw0,91,193,1|87ru7z,91,193,1|87ru80,96,196,0|8h4vjz,96,196,0|8h4vk0,91,193,1|8qhwvz,91,193,1|8qhww0,96,196,0|8zuy7z,96,196,0|8zuy80,91,193,1|997zjz,91,193,1|997zk0,96,196,0|9il0vz,96,196,0|9il0w0,91,193,1|9ry27z,91,193,1|9ry280,96,196,0|a1b3jz,96,196,0|a1b3k0,91,193,1|aao4vz,91,193,1|aao4w0,96,196,0|ak167z,96,196,0|ak1680,91,193,1|atr67z,91,193,1|atr680,96,196,0|b347jz,96,196,0|b347k0,96,196,1|bazjjz,96,196,1|bazjk0,92,194,0|bmk4rz,92,194,0|bmk4s0,96,196,1|bv75zz,96,196,1|bv7600,92,194,0|c5a7fz,92,194,0|c5a7g0,96,196,1|cdx8nz,96,196,1|cdx8o0,92,194,0|co0a3z,92,194,0|co0a40,96,196,1|cwnbbz,96,196,1|cwnbc0,92,194,0|d6qcrz,92,194,0|d6qcs0,96,196,1|dfddzz,96,196,1|dfde00,92,194,0|dpgffz,92,194,0|dpgfg0,96,196,1|dygfbz,96,196,1|dygfc0,92,194,0|e7tqdz,92,194,0|e7tqe0,96,196,1|eimjlz,96,196,1|eimjm0,92,194,0|eqjt1z,92,194,0|eqjt20,96,196,1|f1cm9z,96,196,1|f1cma0,92,194,0|f99vpz,92,194,0|f99vq0,96,196,1|fkfnlz,96,196,1|fkfnm0,92,194,0|frzydz,92,194,0|frzye0,96,196,1|g35q9z,96,196,1|g35qa0,92,194,0|gaq11z,92,194,0|gaq120,96,196,1|glvsxz,96,196,1|glvsy0,92,194,0|gtt2dz,92,194,0|gtt2e0,96,196,1|h4lvlz,96,196,1|h4lvm0,92,194,0|hcj51z,92,194,0|hcj520,96,196,1|hnby9z,96,196,1|hnbya0,92,194,0|hv97pz,92,194,0|hv97q0,96,196,1|i6ezlz,96,196,1|i6ezm0,92,194,0|idzadz,92,194,0|idzae0,96,196,1|il2knz,96,196,1|il2ko0,96,196,0\",\"Asia/Brunei|,0,221,0|-mvofy4,106,222,0|-jb6i61,106,222,0|-jb6i60,89,191,0\",\"Asia/Chita|,0,223,0|-q4cfog,89,191,0|-kmri81,89,191,0|-kmri80,107,224,0|5vapnz,107,224,0|5vapo0,93,195,1|64pivz,93,195,1|64piw0,107,224,0|6e2mzz,107,224,0|6e2n00,93,195,1|6nhg7z,93,195,1|6nhg80,107,224,0|6wukbz,107,224,0|6wukc0,93,195,1|769djz,93,195,1|769dk0,107,224,0|7focbz,107,224,0|7focc0,93,195,1|7p1j7z,93,195,1|7p1j80,107,224,0|7yekjz,107,224,0|7yekk0,93,195,1|87rlvz,93,195,1|87rlw0,107,224,0|8h4n7z,107,224,0|8h4n80,93,195,1|8qhojz,93,195,1|8qhok0,107,224,0|8zupvz,107,224,0|8zupw0,93,195,1|997r7z,93,195,1|997r80,107,224,0|9iksjz,107,224,0|9iksk0,93,195,1|9rxtvz,93,195,1|9rxtw0,107,224,0|a1av7z,107,224,0|a1av80,93,195,1|aanwjz,93,195,1|aanwk0,107,224,0|ak0xvz,107,224,0|ak0xw0,93,195,1|atqxvz,93,195,1|atqxw0,107,224,0|b33z7z,107,224,0|b33z80,107,224,1|bch3bz,107,224,1|bch3c0,89,191,0|bi8hzz,89,191,0|bi8i00,107,224,0|blu1vz,107,224,0|blu1w0,93,195,1|bv737z,93,195,1|bv7380,107,224,0|c4k4jz,107,224,0|c4k4k0,93,195,1|cdx5vz,93,195,1|cdx5w0,107,224,0|cna77z,107,224,0|cna780,93,195,1|cwn8jz,93,195,1|cwn8k0,107,224,0|d609vz,107,224,0|d609w0,93,195,1|dfdb7z,93,195,1|dfdb80,107,224,0|dp3b7z,107,224,0|dp3b80,93,195,1|dzw77z,93,195,1|dzw780,107,224,0|e7tdvz,107,224,0|e7tdw0,93,195,1|eim9vz,93,195,1|eim9w0,107,224,0|eqjgjz,107,224,0|eqjgk0,93,195,1|f1ccjz,93,195,1|f1cck0,107,224,0|f99j7z,107,224,0|f99j80,93,195,1|fkfdvz,93,195,1|fkfdw0,107,224,0|frzlvz,107,224,0|frzlw0,93,195,1|g35gjz,93,195,1|g35gk0,107,224,0|gapojz,107,224,0|gapok0,93,195,1|glvj7z,93,195,1|glvj80,107,224,0|gtspvz,107,224,0|gtspw0,93,195,1|h4llvz,93,195,1|h4llw0,107,224,0|hcisjz,107,224,0|hcisk0,93,195,1|hnbojz,93,195,1|hnbok0,107,224,0|hv8v7z,107,224,0|hv8v80,93,195,1|i6epvz,93,195,1|i6epw0,107,224,0|idyxvz,107,224,0|idyxw0,93,195,1|ip4sjz,93,195,1|ip4sk0,107,224,0|iwp0jz,107,224,0|iwp0k0,93,195,1|j7uv7z,93,195,1|j7uv80,107,224,0|jff37z,107,224,0|jff380,93,195,1|jqkxvz,93,195,1|jqkxw0,107,224,0|jyi4jz,107,224,0|jyi4k0,93,195,1|k9b0jz,93,195,1|k9b0k0,107,224,0|kh877z,107,224,0|kh8780,93,195,1|ks137z,93,195,1|ks1380,107,224,0|kzy9vz,107,224,0|kzy9w0,93,195,1|lb44jz,93,195,1|lb44k0,107,224,0|liocjz,107,224,0|liock0,93,195,0|ne0cfz,93,195,0|ne0cg0,89,191,0|o4nrbz,89,191,0|o4nrc0,107,224,0\",\"Asia/Choibalsan|,0,225,0|-xmct7c,91,193,0|46akjz,91,193,0|46akk0,89,191,0|6wun3z,89,191,0|6wun40,93,195,1|769djz,93,195,1|769dk0,107,224,0|7focbz,107,224,0|7focc0,93,195,1|7p1avz,93,195,1|7p1aw0,107,224,0|7yeezz,107,224,0|7yef00,93,195,1|87rdjz,93,195,1|87rdk0,107,224,0|8h4hnz,107,224,0|8h4ho0,93,195,1|8qhg7z,93,195,1|8qhg80,107,224,0|8zukbz,107,224,0|8zukc0,93,195,1|997ivz,93,195,1|997iw0,107,224,0|9ikmzz,107,224,0|9ikn00,93,195,1|9rxljz,93,195,1|9rxlk0,107,224,0|a1apnz,107,224,0|a1apo0,93,195,1|aano7z,93,195,1|aano80,107,224,0|ak0sbz,107,224,0|ak0sc0,93,195,1|atqpjz,93,195,1|atqpk0,107,224,0|b33tnz,107,224,0|b33to0,93,195,1|bcgs7z,93,195,1|bcgs80,107,224,0|bltwbz,107,224,0|bltwc0,93,195,1|bv6uvz,93,195,1|bv6uw0,107,224,0|c4jyzz,107,224,0|c4jz00,93,195,1|cdwxjz,93,195,1|cdwxk0,107,224,0|cna1nz,107,224,0|cna1o0,93,195,1|cwn07z,93,195,1|cwn080,107,224,0|d604bz,107,224,0|d604c0,93,195,1|dfd2vz,93,195,1|dfd2w0,107,224,0|dp35nz,107,224,0|dp35o0,93,195,1|dyg47z,93,195,1|dyg480,107,224,0|e7t8bz,107,224,0|e7t8c0,93,195,1|eh66vz,93,195,1|eh66w0,107,224,0|eqjazz,107,224,0|eqjb00,93,195,1|ezw9jz,93,195,1|ezw9k0,107,224,0|gcgn7z,107,224,0|gcgn80,93,195,1|gkdr3z,93,195,1|gkdr40,107,224,0|gtqv7z,107,224,0|gtqv80,93,195,1|h33trz,93,195,1|h33ts0,107,224,0|hcgxvz,107,224,0|hcgxw0,93,195,1|hltwfz,93,195,1|hltwg0,107,224,0|hv70jz,107,224,0|hv70k0,93,195,1|i4jz3z,93,195,1|i4jz40,107,224,0|idx37z,107,224,0|idx380,93,195,1|ina1rz,93,195,1|ina1s0,107,224,0|iwn5vz,107,224,0|iwn5w0,93,195,1|j6d33z,93,195,1|j6d340,107,224,0|jyjtnz,107,224,0|jyjto0,89,191,0|nlvtzz,89,191,0|nlvu00,107,224,1|nv8mzz,107,224,1|nv8n00,89,191,0|o4lwnz,89,191,0|o4lwo0,107,224,1|odypnz,107,224,1|odypo0,89,191,0\",\"Asia/Colombo|,0,226,0|-1ayyhgc,21,227,0|-xehasl,21,227,0|-xehask,108,228,0|-elvwm1,108,228,0|-elvwm0,96,196,1|-e9lco1,96,196,1|-e9lco0,109,229,1|-cmw9u1,109,229,1|-cmw9u0,108,228,0|drxa1z,108,228,0|drxa20,109,229,0|dzufbz,109,229,0|dzufc0,96,196,0|ixq61z,96,196,0|ixq620,108,228,0\",\"Asia/Damascus|,0,230,0|-q3gk20,15,11,0|-pxwdc1,15,11,0|-pxwdc0,16,6,1|-pp9c41,16,6,1|-pp9c40,15,11,0|-pf6ao1,15,11,0|-pf6ao0,16,6,1|-p6j9g1,16,6,1|-p6j9g0,15,11,0|-owg801,15,11,0|-owg800,16,6,1|-ont6s1,16,6,1|-ont6s0,15,11,0|-odq5c1,15,11,0|-odq5c0,16,6,1|-o4q5g1,16,6,1|-o4q5g0,15,11,0|-408lc1,15,11,0|-408lc0,16,6,1|-3s9ms1,16,6,1|-3s9ms0,15,11,0|-3hcyo1,15,11,0|-3hcyo0,16,6,1|-39jk41,16,6,1|-39jk40,15,11,0|-2yj6o1,15,11,0|-2yj6o0,16,6,1|-2qnxg1,16,6,1|-2qnxg0,15,11,0|-2fr9c1,15,11,0|-2fr9c0,16,6,1|-27xus1,16,6,1|-27xus0,15,11,0|-1xcao1,15,11,0|-1xcao0,16,6,1|-1p42s1,16,6,1|-1p42s0,15,11,0|-1e7eo1,15,11,0|-1e7eo0,16,6,1|-16c5g1,16,6,1|-16c5g0,15,11,0|-vdmo1,15,11,0|-vdmo0,16,6,1|-nidg1,16,6,1|-nidg0,15,11,0|-clpc1,15,11,0|-clpc0,16,6,1|-4qg41,16,6,1|-4qg40,15,11,0|667zz,15,11,0|66800,16,6,1|e1h7z,16,6,1|e1h80,15,11,0|oy5bz,15,11,0|oy5c0,16,6,1|wtejz,16,6,1|wtek0,15,11,0|17rxbz,15,11,0|17rxc0,16,6,1|1fn6jz,16,6,1|1fn6k0,15,11,0|1qjunz,15,11,0|1qjuo0,16,6,1|1yf3vz,16,6,1|1yf3w0,15,11,0|29brzz,15,11,0|29bs00,16,6,1|2h717z,16,6,1|2h7180,15,11,0|2s3pbz,15,11,0|2s3pc0,16,6,1|2zyyjz,16,6,1|2zyyk0,15,11,0|3axhbz,15,11,0|3axhc0,16,6,1|3isqjz,16,6,1|3isqk0,15,11,0|3tpenz,15,11,0|3tpeo0,16,6,1|4013vz,16,6,1|4013w0,15,11,0|4chbzz,15,11,0|4chc00,16,6,1|4it17z,16,6,1|4it180,15,11,0|6xa2nz,15,11,0|6xa2o0,16,6,1|76a2jz,16,6,1|76a2k0,15,11,0|7g3unz,15,11,0|7g3uo0,16,6,1|7p3ujz,16,6,1|7p3uk0,15,11,0|8ezenz,15,11,0|8ezeo0,16,6,1|8r2ijz,16,6,1|8r2ik0,15,11,0|8yfenz,15,11,0|8yfeo0,16,6,1|9az6jz,16,6,1|9az6k0,15,11,0|9hz3zz,15,11,0|9hz400,16,6,1|9tsyjz,16,6,1|9tsyk0,15,11,0|a1knzz,15,11,0|a1ko00,16,6,1|ab1bvz,16,6,1|ab1bw0,15,11,0|akefzz,15,11,0|akeg00,16,6,1|atrejz,16,6,1|atrek0,15,11,0|b367rz,15,11,0|b367s0,16,6,1|bcl0zz,16,6,1|bcl100,15,11,0|bmcyfz,15,11,0|bmcyg0,16,6,1|bveszz,16,6,1|bvet00,15,11,0|c4gt3z,15,11,0|c4gt40,16,6,1|cdvmbz,16,6,1|cdvmc0,15,11,0|cnjufz,15,11,0|cnjug0,16,6,1|cwynnz,16,6,1|cwyno0,15,11,0|d6brrz,15,11,0|d6brs0,16,6,1|dfqkzz,16,6,1|dfql00,15,11,0|dp5jrz,15,11,0|dp5js0,16,6,1|dykczz,16,6,1|dykd00,15,11,0|e7vmfz,15,11,0|e7vmg0,16,6,1|ehcabz,16,6,1|ehcac0,15,11,0|eqlp3z,15,11,0|eqlp40,16,6,1|f047nz,16,6,1|f047o0,15,11,0|f9hbrz,15,11,0|f9hbs0,16,6,1|fiw4zz,16,6,1|fiw500,15,11,0|fsb3rz,15,11,0|fsb3s0,16,6,1|g1pwzz,16,6,1|g1px00,15,11,0|gb313z,15,11,0|gb3140,16,6,1|gkhubz,16,6,1|gkhuc0,15,11,0|gtuyfz,15,11,0|gtuyg0,16,6,1|h39rnz,16,6,1|h39ro0,15,11,0|hcmvrz,15,11,0|hcmvs0,16,6,1|hm1ozz,16,6,1|hm1p00,15,11,0|hvgnrz,15,11,0|hvgns0,16,6,1|i4vgzz,16,6,1|i4vh00,15,11,0|ie8l3z,15,11,0|ie8l40,16,6,1|innebz,16,6,1|innec0,15,11,0|ix0ifz,15,11,0|ix0ig0,16,6,1|j5ynnz,16,6,1|j5yno0,15,11,0|jfoqfz,15,11,0|jfoqg0,16,6,1|jquibz,16,6,1|jquic0,15,11,0|jyrrrz,15,11,0|jyrrs0,16,6,1|k9mfnz,16,6,1|k9mfo0,15,11,0|kh4vrz,15,11,0|kh4vs0,16,6,1|ksannz,16,6,1|ksano0,15,11,0|l07x3z,15,11,0|l07x40,16,6,1|lb0qbz,16,6,1|lb0qc0,15,11,0|lixzrz,15,11,0|lixzs0,16,6,1|ltqszz,16,6,1|ltqt00,15,11,0|m1o2fz,15,11,0|m1o2g0,16,6,1|mcgvnz,16,6,1|mcgvo0,15,11,0|mke53z,15,11,0|mke540,16,6,1|mv6ybz,16,6,1|mv6yc0,15,11,0|n347rz,15,11,0|n347s0,16,6,1|ne9znz,16,6,1|ne9zo0,15,11,0|nluafz,15,11,0|nluag0,16,6,1|nx02bz,16,6,1|nx02c0,15,11,0|o4kd3z,15,11,0|o4kd40,16,6,1|ofq4zz,16,6,1|ofq500,15,11,0|onnefz,15,11,0|onneg0,16,6,1|oyg7nz,16,6,1|oyg7o0,15,11,0|p6dh3z,15,11,0|p6dh40,16,6,1|ph6abz,16,6,1|ph6ac0,15,11,0|pp3jrz,15,11,0|pp3js0,16,6,1|pzwczz,16,6,1|pzwd00,15,11,0|q7tmfz,15,11,0|q7tmg0,16,6,1|qizebz,16,6,1|qizec0,15,11,0|qqjp3z,15,11,0|qqjp40,16,6,1|r1pgzz,16,6,1|r1ph00,15,11,0|r99rrz,15,11,0|r99rs0,16,6,1|rkfjnz,16,6,1|rkfjo0,15,11,0|rsct3z,15,11,0|rsct40,16,6,1|s35mbz,16,6,1|s35mc0,15,11,0|sb2vrz,15,11,0|sb2vs0,16,6,1|slvozz,16,6,1|slvp00,15,11,0|stsyfz,15,11,0|stsyg0,16,6,1|t4yqbz,16,6,1|t4yqc0,15,11,0|tcj13z,15,11,0|tcj140,16,6,1|tnoszz,16,6,1|tnot00,15,11,0|tv93rz,15,11,0|tv93s0,16,6,1|u6evnz,16,6,1|u6evo0,15,11,0|uec53z,15,11,0|uec540,16,6,1|up4ybz,16,6,1|up4yc0,15,11,0|ux27rz,15,11,0|ux27s0,16,6,1|v7v0zz,16,6,1|v7v100,15,11,0|vfsafz,15,11,0|vfsag0,16,6,1|vql3nz,16,6,1|vql3o0,15,11,0|vyid3z,15,11,0|vyid40,16,6,1|w9o4zz,16,6,1|w9o500,15,11,0|wh8frz,15,11,0|wh8fs0,16,6,1|wse7nz,16,6,1|wse7o0,15,11,0|wzyifz,15,11,0|wzyig0,16,6,1|xb4abz,16,6,1|xb4ac0,15,11,0|xj1jrz,15,11,0|xj1js0,16,6,1|xtuczz,16,6,1|xtud00,15,11,0|y1rmfz,15,11,0|y1rmg0,16,6,1|yckfnz,16,6,1|yckfo0,15,11,0|ykhp3z,15,11,0|ykhp40,16,6,1|yvngzz,16,6,1|yvnh00,15,11,0|z37rrz,15,11,0|z37rs0,16,6,1|zedjnz,16,6,1|zedjo0,15,11,0\",\"Asia/Dhaka|,0,231,0|-15r1q2s,77,232,0|-eqtpox,77,232,0|-eqtpow,109,229,0|-ef78q1,109,229,0|-ef78q0,108,228,0|-e9lba1,108,228,0|-e9lba0,109,229,0|-9j0ne1,109,229,0|-9j0ne0,96,196,0|klhwjz,96,196,0|klhwk0,91,193,1|kvj0jz,91,193,1|kvj0k0,96,196,0\",\"Asia/Dili|,0,233,0|-u9s4l8,89,191,0|-ejfac1,89,191,0|-ejfac0,107,224,0|3b0hnz,107,224,0|3b0ho0,89,191,0|g0zlrz,89,191,0|g0zls0,107,224,0\",\"Asia/Dubai|,0,234,0|-q3gnko,105,209,0\",\"Asia/Dushanbe|,0,235,0|-nu18qo,92,194,0|-kmr9w1,92,194,0|-kmr9w0,96,196,0|5vaxzz,96,196,0|5vay00,91,193,1|64pr7z,91,193,1|64pr80,96,196,0|6e2vbz,96,196,0|6e2vc0,91,193,1|6nhojz,91,193,1|6nhok0,96,196,0|6wusnz,96,196,0|6wuso0,91,193,1|769lvz,91,193,1|769lw0,96,196,0|7foknz,96,196,0|7foko0,91,193,1|7p1rjz,91,193,1|7p1rk0,96,196,0|7yesvz,96,196,0|7yesw0,91,193,1|87ru7z,91,193,1|87ru80,96,196,0|8h4vjz,96,196,0|8h4vk0,91,193,1|8qhwvz,91,193,1|8qhww0,96,196,0|8zuy7z,96,196,0|8zuy80,91,193,1|997zjz,91,193,1|997zk0,96,196,0|9il0vz,96,196,0|9il0w0,91,193,1|9ry27z,91,193,1|9ry280,96,196,0|a1b3jz,96,196,0|a1b3k0,91,193,1|aao4vz,91,193,1|aao4w0,96,196,0|ak167z,96,196,0|ak1680,91,193,1|atr67z,91,193,1|atr680,96,196,0|b347jz,96,196,0|b347k0,96,196,1|bbgabz,96,196,1|bbgac0,92,194,0\",\"Asia/Famagusta|,0,236,0|-p4bqac,15,11,0|2r67rz,15,11,0|2r67s0,16,6,1|30j6bz,16,6,1|30j6c0,15,11,0|3bn93z,15,11,0|3bn940,16,6,1|3jb3nz,16,6,1|3jb3o0,15,11,0|3s9efz,15,11,0|3s9eg0,16,6,1|419ebz,16,6,1|419ec0,15,11,0|4azh3z,15,11,0|4azh40,16,6,1|4keabz,16,6,1|4keac0,15,11,0|4tpjrz,15,11,0|4tpjs0,16,6,1|532ibz,16,6,1|532ic0,15,11,0|5csl3z,15,11,0|5csl40,16,6,1|5lskzz,16,6,1|5lsl00,15,11,0|5v5p3z,15,11,0|5v5p40,16,6,1|64innz,16,6,1|64ino0,15,11,0|6dvrrz,15,11,0|6dvrs0,16,6,1|6n8qbz,16,6,1|6n8qc0,15,11,0|6wlufz,15,11,0|6wlug0,16,6,1|75yszz,16,6,1|75yt00,15,11,0|7fbx3z,15,11,0|7fbx40,16,6,1|7p1ubz,16,6,1|7p1uc0,15,11,0|7yeyfz,15,11,0|7yeyg0,16,6,1|87rwzz,16,6,1|87rx00,15,11,0|8h513z,15,11,0|8h5140,16,6,1|8qhznz,16,6,1|8qhzo0,15,11,0|8zv3rz,15,11,0|8zv3s0,16,6,1|9982bz,16,6,1|9982c0,15,11,0|9il6fz,15,11,0|9il6g0,16,6,1|9ry4zz,16,6,1|9ry500,15,11,0|a1b93z,15,11,0|a1b940,16,6,1|aao7nz,16,6,1|aao7o0,15,11,0|ak1brz,15,11,0|ak1bs0,16,6,1|atr8zz,16,6,1|atr900,15,11,0|b34d3z,15,11,0|b34d40,16,6,1|bchbnz,16,6,1|bchbo0,15,11,0|blufrz,15,11,0|blufs0,16,6,1|bv7ebz,16,6,1|bv7ec0,15,11,0|c4kifz,15,11,0|c4kig0,16,6,1|cdxgzz,16,6,1|cdxh00,15,11,0|cnal3z,15,11,0|cnal40,16,6,1|cwnjnz,16,6,1|cwnjo0,15,11,0|d60nrz,15,11,0|d60ns0,16,6,1|dfdmbz,16,6,1|dfdmc0,15,11,0|dp3p3z,15,11,0|dp3p40,16,6,1|dygnnz,16,6,1|dygno0,15,11,0|e7trrz,15,11,0|e7trs0,16,6,1|eh6qbz,16,6,1|eh6qc0,15,11,0|eqjufz,15,11,0|eqjug0,16,6,1|f1cyrz,16,6,1|f1cys0,15,11,0|f9a5fz,15,11,0|f9a5g0,16,6,1|fkg03z,16,6,1|fkg040,15,11,0|fs083z,15,11,0|fs0840,16,6,1|g362rz,16,6,1|g362s0,15,11,0|gaqarz,15,11,0|gaqas0,16,6,1|glw5fz,16,6,1|glw5g0,15,11,0|gttc3z,15,11,0|gttc40,16,6,1|h4m83z,16,6,1|h4m840,15,11,0|hcjerz,15,11,0|hcjes0,16,6,1|hncarz,16,6,1|hncas0,15,11,0|hv9hfz,15,11,0|hv9hg0,16,6,1|i6fc3z,16,6,1|i6fc40,15,11,0|idzk3z,15,11,0|idzk40,16,6,1|ip5erz,16,6,1|ip5es0,15,11,0|iwpmrz,15,11,0|iwpms0,16,6,1|j7vhfz,16,6,1|j7vhg0,15,11,0|jffpfz,15,11,0|jffpg0,16,6,1|jqlk3z,16,6,1|jqlk40,15,11,0|jyiqrz,15,11,0|jyiqs0,16,6,1|k9bmrz,16,6,1|k9bms0,15,11,0|kh8tfz,15,11,0|kh8tg0,16,6,1|ks1pfz,16,6,1|ks1pg0,15,11,0|kzyw3z,15,11,0|kzyw40,16,6,1|lb4qrz,16,6,1|lb4qs0,15,11,0|lioyrz,15,11,0|lioys0,16,6,1|ltutfz,16,6,1|ltutg0,15,11,0|m1f1fz,15,11,0|m1f1g0,16,6,1|mckw3z,16,6,1|mckw40,15,11,0|mki2rz,15,11,0|mki2s0,16,6,1|mvayrz,16,6,1|mvays0,15,11,0|n385fz,15,11,0|n385g0,16,6,1|ne11fz,16,6,1|ne11g0,15,11,0|nly83z,15,11,0|nly840,16,6,1|nwr43z,16,6,1|nwr440,15,11,0|o4oarz,15,11,0|o4oas0,16,6,1|od5jnz,16,6,1|od5jo0,100,6,0|oyk83z,100,6,0|oyk840,15,11,0|p64g3z,15,11,0|p64g40,16,6,1|phaarz,16,6,1|phaas0,15,11,0|pp7hfz,15,11,0|pp7hg0,16,6,1|q00dfz,16,6,1|q00dg0,15,11,0|q7xk3z,15,11,0|q7xk40,16,6,1|qiqg3z,16,6,1|qiqg40,15,11,0|qqnmrz,15,11,0|qqnms0,16,6,1|r1thfz,16,6,1|r1thg0,15,11,0|r9dpfz,15,11,0|r9dpg0,16,6,1|rkjk3z,16,6,1|rkjk40,15,11,0|rs3s3z,15,11,0|rs3s40,16,6,1|s39mrz,16,6,1|s39ms0,15,11,0|sb6tfz,15,11,0|sb6tg0,16,6,1|slzpfz,16,6,1|slzpg0,15,11,0|stww3z,15,11,0|stww40,16,6,1|t4ps3z,16,6,1|t4ps40,15,11,0|tcmyrz,15,11,0|tcmys0,16,6,1|tnfurz,16,6,1|tnfus0,15,11,0|tvd1fz,15,11,0|tvd1g0,16,6,1|u6iw3z,16,6,1|u6iw40,15,11,0|ue343z,15,11,0|ue3440,16,6,1|up8yrz,16,6,1|up8ys0,15,11,0|uwt6rz,15,11,0|uwt6s0,16,6,1|v7z1fz,16,6,1|v7z1g0,15,11,0|vfw83z,15,11,0|vfw840,16,6,1|vqp43z,16,6,1|vqp440,15,11,0|vymarz,15,11,0|vymas0,16,6,1|w9f6rz,16,6,1|w9f6s0,15,11,0|whcdfz,15,11,0|whcdg0,16,6,1|wsi83z,16,6,1|wsi840,15,11,0|x02g3z,15,11,0|x02g40,16,6,1|xb8arz,16,6,1|xb8as0,15,11,0|xisirz,15,11,0|xisis0,16,6,1|xtydfz,16,6,1|xtydg0,15,11,0|y1ilfz,15,11,0|y1ilg0,16,6,1|ycog3z,16,6,1|ycog40,15,11,0|yklmrz,15,11,0|yklms0,16,6,1|yveirz,16,6,1|yveis0,15,11,0|z3bpfz,15,11,0|z3bpg0,16,6,1|ze4lfz,16,6,1|ze4lg0,15,11,0\",\"Asia/Gaza|,0,237,0|-1054x1s,15,11,0|-ffv401,15,11,0|-ffv400,16,6,1|-f9l6o1,16,6,1|-f9l6o0,15,11,0|-f765c1,15,11,0|-f765c0,16,6,1|-e6fxc1,16,6,1|-e6fxc0,15,11,0|-dyoao1,15,11,0|-dyoao0,16,6,1|-dno001,16,6,1|-dno000,15,11,0|-dfuio1,15,11,0|-dfuio0,16,6,1|-d4u801,16,6,1|-d4u800,15,11,0|-cwatc1,15,11,0|-cwatc0,16,6,1|-cm2ao1,16,6,1|-cm2ao0,15,11,0|-cdiw01,15,11,0|-cdiw00,16,6,1|-c3adc1,16,6,1|-c3adc0,15,11,0|-6lluw1,15,11,0|-6lluw0,16,6,1|-6e79o1,16,6,1|-6e79o0,15,11,0|-63alk1,15,11,0|-63alk0,16,6,1|-5vfcc1,16,6,1|-5vfcc0,15,11,0|-5kilg1,15,11,0|-5kilg0,16,6,1|-5cp1c1,16,6,1|-5cp1c0,15,11,0|-51otg1,15,11,0|-51otg0,16,6,1|-4tv9c1,16,6,1|-4tv9c0,15,11,0|-4iww41,15,11,0|-4iww40,16,6,1|-4b3c01,16,6,1|-4b3c00,15,11,0|-404ys1,15,11,0|-404ys0,16,6,1|-3sbeo1,16,6,1|-3sbeo0,15,11,0|-3hd1g1,15,11,0|-3hd1g0,16,6,1|-39jhc1,16,6,1|-39jhc0,15,11,0|-2yj9g1,15,11,0|-2yj9g0,16,6,1|-2qppc1,16,6,1|-2qppc0,15,11,0|-2frc41,15,11,0|-2frc40,16,6,1|-27xs01,16,6,1|-27xs00,15,11,0|-1wzes1,15,11,0|-1wzes0,16,6,1|-1p4001,16,6,1|-1p4000,15,11,0|-1e7hg1,15,11,0|-1e7hg0,16,6,1|-1ceto1,16,6,1|-1ceto0,110,11,0|2crp3z,110,11,0|2crp40,111,6,1|2ht3nz,111,6,1|2ht3o0,110,11,0|2rj6fz,110,11,0|2rj6g0,111,6,1|2ydebz,111,6,1|2ydec0,110,11,0|5iwyfz,110,11,0|5iwyg0,111,6,1|5l2qfz,111,6,1|5l2qg0,110,11,0|7hhp3z,110,11,0|7hhp40,111,6,1|7n93rz,111,6,1|7n93s0,110,11,0|7z4vrz,110,11,0|7z4vs0,111,6,1|86c2bz,111,6,1|86c2c0,110,11,0|8jnrrz,110,11,0|8jnrs0,111,6,1|8pf3nz,111,6,1|8pf3o0,110,11,0|90ql3z,110,11,0|90ql40,111,6,1|98i4zz,111,6,1|98i500,110,11,0|9jb3rz,110,11,0|9jb3s0,111,6,1|9qv8zz,111,6,1|9qv900,110,11,0|a342fz,110,11,0|a342g0,111,6,1|a9lbnz,111,6,1|a9lbo0,110,11,0|ak1brz,110,11,0|ak1bs0,111,6,1|aryfnz,111,6,1|aryfo0,110,11,0|b2refz,110,11,0|b2reg0,111,6,1|bb1gzz,111,6,1|bb1h00,110,11,0|blufrz,110,11,0|blufs0,111,6,1|bu4ibz,111,6,1|bu4ic0,110,11,0|c4trrz,110,11,0|c4trs0,111,6,1|ccukzz,111,6,1|ccul00,110,11,0|cnjufz,110,11,0|cnjug0,111,6,1|cv7ozz,111,6,1|cv7p00,110,11,0|d69x3z,110,11,0|d69x40,111,6,1|deaqbz,111,6,1|deaqc0,110,11,0|dkh13z,110,11,0|dkh140,15,11,0|dpcyfz,15,11,0|dpcyg0,16,6,1|dy02fz,16,6,1|dy02g0,15,11,0|e8313z,15,11,0|e83140,16,6,1|egq53z,16,6,1|egq540,15,11,0|eqt3rz,15,11,0|eqt3s0,16,6,1|ezg7rz,16,6,1|ezg7s0,15,11,0|fa93rz,15,11,0|fa93s0,16,6,1|fjm2bz,16,6,1|fjm2c0,15,11,0|ftc53z,15,11,0|ftc540,16,6,1|g2p3nz,16,6,1|g2p3o0,15,11,0|gc27rz,15,11,0|gc27s0,16,6,1|glf6bz,16,6,1|glf6c0,15,11,0|gusafz,15,11,0|gusag0,16,6,1|h458zz,16,6,1|h45900,15,11,0|hdid3z,15,11,0|hdid40,16,6,1|hmvbnz,16,6,1|hmvbo0,15,11,0|hw8frz,15,11,0|hw8fs0,16,6,1|i4vjrz,16,6,1|i4vjs0,15,11,0|ieyifz,15,11,0|ieyig0,16,6,1|int3vz,16,6,1|int3w0,15,11,0|ix0ifz,15,11,0|ix0ig0,16,6,1|j5ynnz,16,6,1|j5yno0,15,11,0|jfsfrz,15,11,0|jfsfs0,16,6,1|joa2jz,16,6,1|joa2k0,15,11,0|jyet3z,15,11,0|jyet40,16,6,1|k6bwzz,16,6,1|k6bx00,15,11,0|kh4vrz,15,11,0|kh4vs0,16,6,1|kpf13z,16,6,1|kpf140,15,11,0|kzwt5n,15,11,0|kzwt5o,16,6,1|l6yfnz,16,6,1|l6yfo0,15,11,0|lixztn,15,11,0|lixzto,16,6,1|lp7ubz,16,6,1|lp7uc0,15,11,0|m1o2fz,15,11,0|m1o2g0,16,6,1|mao53z,16,6,1|mao540,15,11,0|mke53z,15,11,0|mke540,16,6,1|mtr3nz,16,6,1|mtr3o0,15,11,0|n347rz,15,11,0|n347s0,16,6,1|ndx0zz,16,6,1|ndx100,15,11,0|nlw53z,15,11,0|nlw540,16,6,1|nwn6fz,16,6,1|nwn6g0,15,11,0|o4majz,15,11,0|o4mak0,16,6,1|ofs2fz,16,6,1|ofs2g0,15,11,0|oncd7z,15,11,0|oncd80,16,6,1|oyi53z,16,6,1|oyi540,15,11,0|p62fvz,15,11,0|p62fw0,16,6,1|ph87rz,16,6,1|ph87s0,15,11,0|pp3jrz,15,11,0|pp3js0,16,6,1|pzy7nz,16,6,1|pzy7o0,15,11,0|q7vh3z,15,11,0|q7vh40,16,6,1|qiod3z,16,6,1|qiod40,15,11,0|qqljrz,15,11,0|qqljs0,16,6,1|r1refz,16,6,1|r1reg0,15,11,0|r9bmfz,15,11,0|r9bmg0,16,6,1|rkhh3z,16,6,1|rkhh40,15,11,0|rs1p3z,15,11,0|rs1p40,16,6,1|s37jrz,16,6,1|s37js0,15,11,0|sb4qfz,15,11,0|sb4qg0,16,6,1|slxmfz,16,6,1|slxmg0,15,11,0|stut3z,15,11,0|stut40,16,6,1|t4np3z,16,6,1|t4np40,15,11,0|tckvrz,15,11,0|tckvs0,16,6,1|tndrrz,16,6,1|tndrs0,15,11,0|tvayfz,15,11,0|tvayg0,16,6,1|u6gt3z,16,6,1|u6gt40,15,11,0|ue113z,15,11,0|ue1140,16,6,1|up6vrz,16,6,1|up6vs0,15,11,0|uwr3rz,15,11,0|uwr3s0,16,6,1|v7wyfz,16,6,1|v7wyg0,15,11,0|vfu53z,15,11,0|vfu540,16,6,1|vqn13z,16,6,1|vqn140,15,11,0|vyk7rz,15,11,0|vyk7s0,16,6,1|w9d3rz,16,6,1|w9d3s0,15,11,0|whaafz,15,11,0|whaag0,16,6,1|wsg53z,16,6,1|wsg540,15,11,0|x00d3z,15,11,0|x00d40,16,6,1|xb67rz,16,6,1|xb67s0,15,11,0|xiqfrz,15,11,0|xiqfs0,16,6,1|xtwafz,16,6,1|xtwag0,15,11,0|y1gifz,15,11,0|y1gig0,16,6,1|ycmd3z,16,6,1|ycmd40,15,11,0|ykjjrz,15,11,0|ykjjs0,16,6,1|yvcfrz,16,6,1|yvcfs0,15,11,0|z39mfz,15,11,0|z39mg0,16,6,1|ze2ifz,16,6,1|ze2ig0,15,11,0\",\"Asia/Hebron|,0,238,0|-1054x5z,15,11,0|-ffv401,15,11,0|-ffv400,16,6,1|-f9l6o1,16,6,1|-f9l6o0,15,11,0|-f765c1,15,11,0|-f765c0,16,6,1|-e6fxc1,16,6,1|-e6fxc0,15,11,0|-dyoao1,15,11,0|-dyoao0,16,6,1|-dno001,16,6,1|-dno000,15,11,0|-dfuio1,15,11,0|-dfuio0,16,6,1|-d4u801,16,6,1|-d4u800,15,11,0|-cwatc1,15,11,0|-cwatc0,16,6,1|-cm2ao1,16,6,1|-cm2ao0,15,11,0|-cdiw01,15,11,0|-cdiw00,16,6,1|-c3adc1,16,6,1|-c3adc0,15,11,0|-6lluw1,15,11,0|-6lluw0,16,6,1|-6e79o1,16,6,1|-6e79o0,15,11,0|-63alk1,15,11,0|-63alk0,16,6,1|-5vfcc1,16,6,1|-5vfcc0,15,11,0|-5kilg1,15,11,0|-5kilg0,16,6,1|-5cp1c1,16,6,1|-5cp1c0,15,11,0|-51otg1,15,11,0|-51otg0,16,6,1|-4tv9c1,16,6,1|-4tv9c0,15,11,0|-4iww41,15,11,0|-4iww40,16,6,1|-4b3c01,16,6,1|-4b3c00,15,11,0|-404ys1,15,11,0|-404ys0,16,6,1|-3sbeo1,16,6,1|-3sbeo0,15,11,0|-3hd1g1,15,11,0|-3hd1g0,16,6,1|-39jhc1,16,6,1|-39jhc0,15,11,0|-2yj9g1,15,11,0|-2yj9g0,16,6,1|-2qppc1,16,6,1|-2qppc0,15,11,0|-2frc41,15,11,0|-2frc40,16,6,1|-27xs01,16,6,1|-27xs00,15,11,0|-1wzes1,15,11,0|-1wzes0,16,6,1|-1p4001,16,6,1|-1p4000,15,11,0|-1e7hg1,15,11,0|-1e7hg0,16,6,1|-1ceto1,16,6,1|-1ceto0,110,11,0|2crp3z,110,11,0|2crp40,111,6,1|2ht3nz,111,6,1|2ht3o0,110,11,0|2rj6fz,110,11,0|2rj6g0,111,6,1|2ydebz,111,6,1|2ydec0,110,11,0|5iwyfz,110,11,0|5iwyg0,111,6,1|5l2qfz,111,6,1|5l2qg0,110,11,0|7hhp3z,110,11,0|7hhp40,111,6,1|7n93rz,111,6,1|7n93s0,110,11,0|7z4vrz,110,11,0|7z4vs0,111,6,1|86c2bz,111,6,1|86c2c0,110,11,0|8jnrrz,110,11,0|8jnrs0,111,6,1|8pf3nz,111,6,1|8pf3o0,110,11,0|90ql3z,110,11,0|90ql40,111,6,1|98i4zz,111,6,1|98i500,110,11,0|9jb3rz,110,11,0|9jb3s0,111,6,1|9qv8zz,111,6,1|9qv900,110,11,0|a342fz,110,11,0|a342g0,111,6,1|a9lbnz,111,6,1|a9lbo0,110,11,0|ak1brz,110,11,0|ak1bs0,111,6,1|aryfnz,111,6,1|aryfo0,110,11,0|b2refz,110,11,0|b2reg0,111,6,1|bb1gzz,111,6,1|bb1h00,110,11,0|blufrz,110,11,0|blufs0,111,6,1|bu4ibz,111,6,1|bu4ic0,110,11,0|c4trrz,110,11,0|c4trs0,111,6,1|ccukzz,111,6,1|ccul00,110,11,0|cnjufz,110,11,0|cnjug0,111,6,1|cv7ozz,111,6,1|cv7p00,110,11,0|d69x3z,110,11,0|d69x40,111,6,1|deaqbz,111,6,1|deaqc0,110,11,0|dkh13z,110,11,0|dkh140,15,11,0|dpcyfz,15,11,0|dpcyg0,16,6,1|dy02fz,16,6,1|dy02g0,15,11,0|e8313z,15,11,0|e83140,16,6,1|egq53z,16,6,1|egq540,15,11,0|eqt3rz,15,11,0|eqt3s0,16,6,1|ezg7rz,16,6,1|ezg7s0,15,11,0|fa93rz,15,11,0|fa93s0,16,6,1|fjm2bz,16,6,1|fjm2c0,15,11,0|ftc53z,15,11,0|ftc540,16,6,1|g2p3nz,16,6,1|g2p3o0,15,11,0|gc27rz,15,11,0|gc27s0,16,6,1|glf6bz,16,6,1|glf6c0,15,11,0|gusafz,15,11,0|gusag0,16,6,1|h458zz,16,6,1|h45900,15,11,0|hdid3z,15,11,0|hdid40,16,6,1|hmvbnz,16,6,1|hmvbo0,15,11,0|hw8frz,15,11,0|hw8fs0,16,6,1|i4vjrz,16,6,1|i4vjs0,15,11,0|ieyifz,15,11,0|ieyig0,16,6,1|int3vz,16,6,1|int3w0,15,11,0|ix0ifz,15,11,0|ix0ig0,16,6,1|j5ynnz,16,6,1|j5yno0,15,11,0|jfsfrz,15,11,0|jfsfs0,16,6,1|joa2jz,16,6,1|joa2k0,15,11,0|jyet3z,15,11,0|jyet40,16,6,1|k6hgzz,16,6,1|k6hh00,15,11,0|kh4vrz,15,11,0|kh4vs0,16,6,1|kpf13z,16,6,1|kpf140,15,11,0|kzuyfz,15,11,0|kzuyg0,16,6,1|l6yfnz,16,6,1|l6yfo0,15,11,0|lixztn,15,11,0|lixzto,16,6,1|lp7ubz,16,6,1|lp7uc0,15,11,0|lqpmfz,15,11,0|lqpmg0,16,6,1|lsaybz,16,6,1|lsayc0,15,11,0|m1o2fz,15,11,0|m1o2g0,16,6,1|mao53z,16,6,1|mao540,15,11,0|mke53z,15,11,0|mke540,16,6,1|mtr3nz,16,6,1|mtr3o0,15,11,0|n347rz,15,11,0|n347s0,16,6,1|ndx0zz,16,6,1|ndx100,15,11,0|nlw53z,15,11,0|nlw540,16,6,1|nwn6fz,16,6,1|nwn6g0,15,11,0|o4majz,15,11,0|o4mak0,16,6,1|ofs2fz,16,6,1|ofs2g0,15,11,0|oncd7z,15,11,0|oncd80,16,6,1|oyi53z,16,6,1|oyi540,15,11,0|p62fvz,15,11,0|p62fw0,16,6,1|ph87rz,16,6,1|ph87s0,15,11,0|pp3jrz,15,11,0|pp3js0,16,6,1|pzy7nz,16,6,1|pzy7o0,15,11,0|q7vh3z,15,11,0|q7vh40,16,6,1|qiod3z,16,6,1|qiod40,15,11,0|qqljrz,15,11,0|qqljs0,16,6,1|r1refz,16,6,1|r1reg0,15,11,0|r9bmfz,15,11,0|r9bmg0,16,6,1|rkhh3z,16,6,1|rkhh40,15,11,0|rs1p3z,15,11,0|rs1p40,16,6,1|s37jrz,16,6,1|s37js0,15,11,0|sb4qfz,15,11,0|sb4qg0,16,6,1|slxmfz,16,6,1|slxmg0,15,11,0|stut3z,15,11,0|stut40,16,6,1|t4np3z,16,6,1|t4np40,15,11,0|tckvrz,15,11,0|tckvs0,16,6,1|tndrrz,16,6,1|tndrs0,15,11,0|tvayfz,15,11,0|tvayg0,16,6,1|u6gt3z,16,6,1|u6gt40,15,11,0|ue113z,15,11,0|ue1140,16,6,1|up6vrz,16,6,1|up6vs0,15,11,0|uwr3rz,15,11,0|uwr3s0,16,6,1|v7wyfz,16,6,1|v7wyg0,15,11,0|vfu53z,15,11,0|vfu540,16,6,1|vqn13z,16,6,1|vqn140,15,11,0|vyk7rz,15,11,0|vyk7s0,16,6,1|w9d3rz,16,6,1|w9d3s0,15,11,0|whaafz,15,11,0|whaag0,16,6,1|wsg53z,16,6,1|wsg540,15,11,0|x00d3z,15,11,0|x00d40,16,6,1|xb67rz,16,6,1|xb67s0,15,11,0|xiqfrz,15,11,0|xiqfs0,16,6,1|xtwafz,16,6,1|xtwag0,15,11,0|y1gifz,15,11,0|y1gig0,16,6,1|ycmd3z,16,6,1|ycmd40,15,11,0|ykjjrz,15,11,0|ykjjs0,16,6,1|yvcfrz,16,6,1|yvcfs0,15,11,0|z39mfz,15,11,0|z39mg0,16,6,1|ze2ifz,16,6,1|ze2ig0,15,11,0\",\"Asia/Ho_Chi_Minh|,0,239,0|-x56934,112,240,0|-umdqev,112,240,0|-umdqeu,91,193,0|-e3bkw1,91,193,0|-e3bkw0,89,191,0|-cxyro1,89,191,0|-cxyro0,107,224,0|-cp63o1,107,224,0|-cp63o0,91,193,0|-bvja41,91,193,0|-bvja40,89,191,0|-7kjq81,89,191,0|-7kjq80,91,193,0|-57xfk1,91,193,0|-57xfk0,89,191,0|2uaprz,89,191,0|2uaps0,91,193,0\",\"Asia/Hong_Kong|,0,241,0|-y0i0s0,113,191,0|-ewdn81,113,191,0|-ewdn80,114,224,1|-eqtn81,114,224,1|-eqtn80,115,242,1|-emgia1,115,242,1|-emgia0,116,224,0|-cl7cs1,116,224,0|-cl7cs0,113,191,0|-cda8w1,113,191,0|-cda8w0,114,224,1|-c1r5u1,114,224,1|-c1r5u0,113,191,0|-buwv61,113,191,0|-buwv60,114,224,1|-bj1361,114,224,1|-bj1360,113,191,0|-bb3wi1,113,191,0|-bb3wi0,114,224,1|-b1qv61,114,224,1|-b1qv60,113,191,0|-attoi1,113,191,0|-attoi0,114,224,1|-aj0si1,114,224,1|-aj0si0,113,191,0|-ab3lu1,113,191,0|-ab3lu0,114,224,1|-a0apu1,114,224,1|-a0apu0,113,191,0|-9sdj61,113,191,0|-9sdj60,114,224,1|-9hkn61,114,224,1|-9hkn60,113,191,0|-99ahu1,113,191,0|-99ahu0,114,224,1|-8yhlu1,114,224,1|-8yhlu0,113,191,0|-8qkf61,113,191,0|-8qkf60,114,224,1|-8frly1,114,224,1|-8frly0,113,191,0|-88k9u1,113,191,0|-88k9u0,114,224,1|-7x1ja1,114,224,1|-7x1ja0,113,191,0|-7pu761,113,191,0|-7pu760,114,224,1|-7dyhy1,114,224,1|-7dyhy0,113,191,0|-7744i1,113,191,0|-7744i0,114,224,1|-6v8fa1,114,224,1|-6v8fa0,113,191,0|-6o1361,113,191,0|-6o1360,114,224,1|-6cicm1,114,224,1|-6cicm0,113,191,0|-65b0i1,113,191,0|-65b0i0,114,224,1|-5ts9y1,114,224,1|-5ts9y0,113,191,0|-5mkxu1,113,191,0|-5mkxu0,114,224,1|-5b27a1,114,224,1|-5b27a0,113,191,0|-53uv61,113,191,0|-53uv60,114,224,1|-4rz5y1,114,224,1|-4rz5y0,113,191,0|-4l4si1,113,191,0|-4l4si0,114,224,1|-4993a1,114,224,1|-4993a0,113,191,0|-42epu1,113,191,0|-42epu0,114,224,1|-3qj0m1,114,224,1|-3qj0m0,113,191,0|-3jboi1,113,191,0|-3jboi0,114,224,1|-37sxy1,114,224,1|-37sxy0,113,191,0|-30llu1,113,191,0|-30llu0,114,224,1|-2p2va1,114,224,1|-2p2va0,113,191,0|-2gfoi1,113,191,0|-2gfoi0,114,224,1|-272py1,114,224,1|-272py0,113,191,0|-1xplu1,113,191,0|-1xplu0,114,224,1|-1ocna1,114,224,1|-1ocna0,113,191,0|-1ezj61,113,191,0|-1ezj60,114,224,1|-159ly1,114,224,1|-159ly0,113,191,0|-vwhu1,113,191,0|-vwhu0,114,224,1|-mjja1,114,224,1|-mjja0,113,191,0|-d6f61,113,191,0|-d6f60,114,224,1|-3tgm1,114,224,1|-3tgm0,113,191,0|5jnhz,113,191,0|5jni0,114,224,1|ewm1z,114,224,1|ewm20,113,191,0|o9q5z,113,191,0|o9q60,114,224,1|xmopz,114,224,1|xmoq0,113,191,0|16zstz,113,191,0|16zsu0,114,224,1|1gpq1z,114,224,1|1gpq20,113,191,0|1q2u5z,113,191,0|1q2u60,114,224,1|1zfspz,114,224,1|1zfsq0,113,191,0|231i5z,113,191,0|231i60,114,224,1|2i5vdz,114,224,1|2i5ve0,113,191,0|2rizhz,113,191,0|2rizi0,114,224,1|30vy1z,114,224,1|30vy20,113,191,0|3a925z,113,191,0|3a9260,114,224,1|3jm0pz,114,224,1|3jm0q0,113,191,0|4vv4tz,113,191,0|4vv4u0,114,224,1|5457dz,114,224,1|5457e0,113,191,0\",\"Asia/Hovd|,0,243,0|-xmcoz0,96,196,0|46anbz,96,196,0|46anc0,91,193,0|6wupvz,91,193,0|6wupw0,89,191,1|769j3z,89,191,1|769j40,91,193,0|7fohvz,91,193,0|7fohw0,89,191,1|7p1gfz,89,191,1|7p1gg0,91,193,0|7yekjz,91,193,0|7yekk0,89,191,1|87rj3z,89,191,1|87rj40,91,193,0|8h4n7z,91,193,0|8h4n80,89,191,1|8qhlrz,89,191,1|8qhls0,91,193,0|8zupvz,91,193,0|8zupw0,89,191,1|997ofz,89,191,1|997og0,91,193,0|9iksjz,91,193,0|9iksk0,89,191,1|9rxr3z,89,191,1|9rxr40,91,193,0|a1av7z,91,193,0|a1av80,89,191,1|aantrz,89,191,1|aants0,91,193,0|ak0xvz,91,193,0|ak0xw0,89,191,1|atqv3z,89,191,1|atqv40,91,193,0|b33z7z,91,193,0|b33z80,89,191,1|bcgxrz,89,191,1|bcgxs0,91,193,0|blu1vz,91,193,0|blu1w0,89,191,1|bv70fz,89,191,1|bv70g0,91,193,0|c4k4jz,91,193,0|c4k4k0,89,191,1|cdx33z,89,191,1|cdx340,91,193,0|cna77z,91,193,0|cna780,89,191,1|cwn5rz,89,191,1|cwn5s0,91,193,0|d609vz,91,193,0|d609w0,89,191,1|dfd8fz,89,191,1|dfd8g0,91,193,0|dp3b7z,91,193,0|dp3b80,89,191,1|dyg9rz,89,191,1|dyg9s0,91,193,0|e7tdvz,91,193,0|e7tdw0,89,191,1|eh6cfz,89,191,1|eh6cg0,91,193,0|eqjgjz,91,193,0|eqjgk0,89,191,1|ezwf3z,89,191,1|ezwf40,91,193,0|gcgsrz,91,193,0|gcgss0,89,191,1|gkdwnz,89,191,1|gkdwo0,91,193,0|gtr0rz,91,193,0|gtr0s0,89,191,1|h33zbz,89,191,1|h33zc0,91,193,0|hch3fz,91,193,0|hch3g0,89,191,1|hlu1zz,89,191,1|hlu200,91,193,0|hv763z,91,193,0|hv7640,89,191,1|i4k4nz,89,191,1|i4k4o0,91,193,0|idx8rz,91,193,0|idx8s0,89,191,1|ina7bz,89,191,1|ina7c0,91,193,0|iwnbfz,91,193,0|iwnbg0,89,191,1|j6d8nz,89,191,1|j6d8o0,91,193,0|nlvwrz,91,193,0|nlvws0,89,191,1|nv8prz,89,191,1|nv8ps0,91,193,0|o4lzfz,91,193,0|o4lzg0,89,191,1|odysfz,89,191,1|odysg0,91,193,0\",\"Asia/Irkutsk|,0,244,0|-1ayylz5,117,244,0|-q28gn6,117,244,0|-q28gn5,91,193,0|-kmrfg1,91,193,0|-kmrfg0,89,191,0|5vasfz,89,191,0|5vasg0,107,224,1|64plnz,107,224,1|64plo0,89,191,0|6e2prz,89,191,0|6e2ps0,107,224,1|6nhizz,107,224,1|6nhj00,89,191,0|6wun3z,89,191,0|6wun40,107,224,1|769gbz,107,224,1|769gc0,89,191,0|7fof3z,89,191,0|7fof40,107,224,1|7p1lzz,107,224,1|7p1m00,89,191,0|7yenbz,89,191,0|7yenc0,107,224,1|87ronz,107,224,1|87roo0,89,191,0|8h4pzz,89,191,0|8h4q00,107,224,1|8qhrbz,107,224,1|8qhrc0,89,191,0|8zusnz,89,191,0|8zuso0,107,224,1|997tzz,107,224,1|997u00,89,191,0|9ikvbz,89,191,0|9ikvc0,107,224,1|9rxwnz,107,224,1|9rxwo0,89,191,0|a1axzz,89,191,0|a1ay00,107,224,1|aanzbz,107,224,1|aanzc0,89,191,0|ak10nz,89,191,0|ak10o0,107,224,1|atr0nz,107,224,1|atr0o0,89,191,0|b341zz,89,191,0|b34200,89,191,1|bch63z,89,191,1|bch640,91,193,0|bi8krz,91,193,0|bi8ks0,89,191,0|blu4nz,89,191,0|blu4o0,107,224,1|bv75zz,107,224,1|bv7600,89,191,0|c4k7bz,89,191,0|c4k7c0,107,224,1|cdx8nz,107,224,1|cdx8o0,89,191,0|cna9zz,89,191,0|cnaa00,107,224,1|cwnbbz,107,224,1|cwnbc0,89,191,0|d60cnz,89,191,0|d60co0,107,224,1|dfddzz,107,224,1|dfde00,89,191,0|dp3dzz,89,191,0|dp3e00,107,224,1|dzw9zz,107,224,1|dzwa00,89,191,0|e7tgnz,89,191,0|e7tgo0,107,224,1|eimcnz,107,224,1|eimco0,89,191,0|eqjjbz,89,191,0|eqjjc0,107,224,1|f1cfbz,107,224,1|f1cfc0,89,191,0|f99lzz,89,191,0|f99m00,107,224,1|fkfgnz,107,224,1|fkfgo0,89,191,0|frzonz,89,191,0|frzoo0,107,224,1|g35jbz,107,224,1|g35jc0,89,191,0|gaprbz,89,191,0|gaprc0,107,224,1|glvlzz,107,224,1|glvm00,89,191,0|gtssnz,89,191,0|gtsso0,107,224,1|h4lonz,107,224,1|h4loo0,89,191,0|hcivbz,89,191,0|hcivc0,107,224,1|hnbrbz,107,224,1|hnbrc0,89,191,0|hv8xzz,89,191,0|hv8y00,107,224,1|i6esnz,107,224,1|i6eso0,89,191,0|idz0nz,89,191,0|idz0o0,107,224,1|ip4vbz,107,224,1|ip4vc0,89,191,0|iwp3bz,89,191,0|iwp3c0,107,224,1|j7uxzz,107,224,1|j7uy00,89,191,0|jff5zz,89,191,0|jff600,107,224,1|jql0nz,107,224,1|jql0o0,89,191,0|jyi7bz,89,191,0|jyi7c0,107,224,1|k9b3bz,107,224,1|k9b3c0,89,191,0|kh89zz,89,191,0|kh8a00,107,224,1|ks15zz,107,224,1|ks1600,89,191,0|kzycnz,89,191,0|kzyco0,107,224,1|lb47bz,107,224,1|lb47c0,89,191,0|liofbz,89,191,0|liofc0,107,224,0|ne0f7z,107,224,0|ne0f80,89,191,0\",\"Asia/Jakarta|,0,245,0|-1hftyg0,53,245,0|-o0bdpd,53,245,0|-o0bdpc,118,246,0|-jebgdd,118,246,0|-jebgdc,106,222,0|-ehxgu1,106,222,0|-ehxgu0,107,224,0|-co37o1,107,224,0|-co37o0,106,222,0|-bb5zi1,106,222,0|-bb5zi0,89,191,0|-a9m681,89,191,0|-a9m680,106,222,0|-34ru61,106,222,0|-34ru60,119,193,0\",\"Asia/Jayapura|,0,247,0|-jebm20,107,224,0|-d7zvo1,107,224,0|-d7zvo0,120,248,0|-34rzq1,120,248,0|-34rzq0,121,224,0\",\"Asia/Jerusalem|,0,249,0|-1ayy96u,122,250,0|-r50eih,122,250,0|-r50eig,110,11,0|-ffv401,110,11,0|-ffv400,111,6,1|-f9l6o1,111,6,1|-f9l6o0,110,11,0|-f765c1,110,11,0|-f765c0,111,6,1|-e6fxc1,111,6,1|-e6fxc0,110,11,0|-dyoao1,110,11,0|-dyoao0,111,6,1|-dno001,111,6,1|-dno000,110,11,0|-dfuio1,110,11,0|-dfuio0,111,6,1|-d4u801,111,6,1|-d4u800,110,11,0|-cwatc1,110,11,0|-cwatc0,111,6,1|-cm2ao1,111,6,1|-cm2ao0,110,11,0|-cdiw01,110,11,0|-cdiw00,111,6,1|-c3adc1,111,6,1|-c3adc0,110,11,0|-ba0o01,110,11,0|-ba0o00,123,209,1|-b4tmo1,123,209,1|-b4tmo0,111,6,1|-b1oo01,111,6,1|-b1oo00,110,11,0|-asdhc1,110,11,0|-asdhc0,111,6,1|-aiwqo1,111,6,1|-aiwqo0,110,11,0|-aadc01,110,11,0|-aadc00,111,6,1|-a2juo1,111,6,1|-a2juo0,110,11,0|-9sd6o1,110,11,0|-9sd6o0,111,6,1|-9gudc1,111,6,1|-9gudc0,110,11,0|-98k801,110,11,0|-98k800,111,6,1|-8z76o1,111,6,1|-8z76o0,110,11,0|-8q7401,110,11,0|-8q7400,111,6,1|-8i9xc1,111,6,1|-8i9xc0,110,11,0|-848dc1,110,11,0|-848dc0,111,6,1|-7zjuo1,111,6,1|-7zjuo0,110,11,0|-7liao1,110,11,0|-7liao0,111,6,1|-7gts01,111,6,1|-7gts00,110,11,0|-7356o1,110,11,0|-7356o0,111,6,1|-6x0tc1,111,6,1|-6x0tc0,110,11,0|-6m7xc1,110,11,0|-6m7xc0,111,6,1|-6enpc1,111,6,1|-6enpc0,110,11,0|2crp3z,110,11,0|2crp40,111,6,1|2ht3nz,111,6,1|2ht3o0,110,11,0|2rj6fz,110,11,0|2rj6g0,111,6,1|2ydebz,111,6,1|2ydec0,110,11,0|5iwyfz,110,11,0|5iwyg0,111,6,1|5l2qfz,111,6,1|5l2qg0,110,11,0|7hhp3z,110,11,0|7hhp40,111,6,1|7n93rz,111,6,1|7n93s0,110,11,0|7z4vrz,110,11,0|7z4vs0,111,6,1|86c2bz,111,6,1|86c2c0,110,11,0|8jnrrz,110,11,0|8jnrs0,111,6,1|8pf3nz,111,6,1|8pf3o0,110,11,0|90ql3z,110,11,0|90ql40,111,6,1|98i4zz,111,6,1|98i500,110,11,0|9jb3rz,110,11,0|9jb3s0,111,6,1|9qv8zz,111,6,1|9qv900,110,11,0|a342fz,110,11,0|a342g0,111,6,1|a9lbnz,111,6,1|a9lbo0,110,11,0|ak1brz,110,11,0|ak1bs0,111,6,1|aryfnz,111,6,1|aryfo0,110,11,0|b2refz,110,11,0|b2reg0,111,6,1|bb1gzz,111,6,1|bb1h00,110,11,0|blufrz,110,11,0|blufs0,111,6,1|bu4ibz,111,6,1|bu4ic0,110,11,0|c4trrz,110,11,0|c4trs0,111,6,1|ccukzz,111,6,1|ccul00,110,11,0|cnjufz,110,11,0|cnjug0,111,6,1|cv7ozz,111,6,1|cv7p00,110,11,0|d69x3z,110,11,0|d69x40,111,6,1|deaqbz,111,6,1|deaqc0,110,11,0|doa2fz,110,11,0|doa2g0,111,6,1|dxskzz,111,6,1|dxsl00,110,11,0|e7d3rz,110,11,0|e7d3s0,111,6,1|eggszz,111,6,1|eggt00,110,11,0|eq36fz,110,11,0|eq36g0,111,6,1|eytwzz,111,6,1|eytx00,110,11,0|f9jbzz,110,11,0|f9jc00,111,6,1|fhgfvz,111,6,1|fhgfw0,110,11,0|fszbzz,110,11,0|fszc00,111,6,1|g1z93z,111,6,1|g1z940,110,11,0|gbhx7z,110,11,0|gbhx80,111,6,1|gk4yfz,111,6,1|gk4yg0,110,11,0|gtph7z,110,11,0|gtph80,111,6,1|h3kyfz,111,6,1|h3kyg0,110,11,0|hcfjvz,110,11,0|hcfjw0,111,6,1|hm5h3z,111,6,1|hm5h40,110,11,0|hvrujz,110,11,0|hvruk0,111,6,1|i4evrz,111,6,1|i4evs0,110,11,0|ie8qnz,110,11,0|ie8qo0,111,6,1|io2d7z,111,6,1|io2d80,110,11,0|iwytbz,110,11,0|iwytc0,111,6,1|j6fh7z,111,6,1|j6fh80,110,11,0|jfovzz,110,11,0|jfow00,111,6,1|jofmjz,111,6,1|jofmk0,110,11,0|jyeynz,110,11,0|jyeyo0,111,6,1|k88l7z,111,6,1|k88l80,110,11,0|kh51bz,110,11,0|kh51c0,111,6,1|kqlp7z,111,6,1|kqlp80,110,11,0|kzv3zz,110,11,0|kzv400,111,6,1|l8lujz,111,6,1|l8luk0,110,11,0|liy5bz,110,11,0|liy5c0,111,6,1|lset7z,111,6,1|lset80,110,11,0|m1o7zz,110,11,0|m1o800,111,6,1|marx7z,111,6,1|marx80,110,11,0|mkeanz,110,11,0|mkeao0,111,6,1|mvat7z,111,6,1|mvat80,110,11,0|n34dbz,110,11,0|n34dc0,111,6,1|ne0vvz,111,6,1|ne0vw0,110,11,0|nlufzz,110,11,0|nlug00,111,6,1|nwqyjz,111,6,1|nwqyk0,110,11,0|o4kinz,110,11,0|o4kio0,111,6,1|oftzvz,111,6,1|oftzw0,110,11,0|onalbz,110,11,0|onalc0,111,6,1|oyk2jz,111,6,1|oyk2k0,110,11,0|p60nzz,110,11,0|p60o00,111,6,1|pha57z,111,6,1|pha580,110,11,0|pp3pbz,110,11,0|pp3pc0,111,6,1|q007vz,111,6,1|q007w0,110,11,0|q7trzz,110,11,0|q7ts00,111,6,1|qiqajz,111,6,1|qiqak0,110,11,0|qqjunz,110,11,0|qqjuo0,111,6,1|r1tbvz,111,6,1|r1tbw0,110,11,0|r99xbz,110,11,0|r99xc0,111,6,1|rkjejz,111,6,1|rkjek0,110,11,0|rrzzzz,110,11,0|rs0000,111,6,1|s39h7z,111,6,1|s39h80,110,11,0|sb31bz,110,11,0|sb31c0,111,6,1|slzjvz,111,6,1|slzjw0,110,11,0|stt3zz,110,11,0|stt400,111,6,1|t4pmjz,111,6,1|t4pmk0,110,11,0|tcj6nz,110,11,0|tcj6o0,111,6,1|tnfp7z,111,6,1|tnfp80,110,11,0|tv99bz,110,11,0|tv99c0,111,6,1|u6iqjz,111,6,1|u6iqk0,110,11,0|udzbzz,110,11,0|udzc00,111,6,1|up8t7z,111,6,1|up8t80,110,11,0|uwpenz,110,11,0|uwpeo0,111,6,1|v7yvvz,111,6,1|v7yvw0,110,11,0|vfsfzz,110,11,0|vfsg00,111,6,1|vqoyjz,111,6,1|vqoyk0,110,11,0|vyiinz,110,11,0|vyiio0,111,6,1|w9f17z,111,6,1|w9f180,110,11,0|wh8lbz,110,11,0|wh8lc0,111,6,1|wsi2jz,111,6,1|wsi2k0,110,11,0|wzynzz,110,11,0|wzyo00,111,6,1|xb857z,111,6,1|xb8580,110,11,0|xioqnz,110,11,0|xioqo0,111,6,1|xty7vz,111,6,1|xty7w0,110,11,0|y1etbz,110,11,0|y1etc0,111,6,1|ycoajz,111,6,1|ycoak0,110,11,0|ykhunz,110,11,0|ykhuo0,111,6,1|yved7z,111,6,1|yved80,110,11,0|z37xbz,110,11,0|z37xc0,111,6,1|ze4fvz,111,6,1|ze4fw0,110,11,0\",\"Asia/Kabul|,0,251,0|-15r1m5c,105,209,0|-d1pkg1,105,209,0|-d1pkg0,124,252,0\",\"Asia/Kamchatka|,0,253,0|-olrupo,90,192,0|-kmrqk1,90,192,0|-kmrqk0,102,200,0|5vahbz,102,200,0|5vahc0,103,201,1|64pajz,103,201,1|64pak0,102,200,0|6e2enz,102,200,0|6e2eo0,103,201,1|6nh7vz,103,201,1|6nh7w0,102,200,0|6wubzz,102,200,0|6wuc00,103,201,1|76957z,103,201,1|769580,102,200,0|7fo3zz,102,200,0|7fo400,103,201,1|7p1avz,103,201,1|7p1aw0,102,200,0|7yec7z,102,200,0|7yec80,103,201,1|87rdjz,103,201,1|87rdk0,102,200,0|8h4evz,102,200,0|8h4ew0,103,201,1|8qhg7z,103,201,1|8qhg80,102,200,0|8zuhjz,102,200,0|8zuhk0,103,201,1|997ivz,103,201,1|997iw0,102,200,0|9ikk7z,102,200,0|9ikk80,103,201,1|9rxljz,103,201,1|9rxlk0,102,200,0|a1amvz,102,200,0|a1amw0,103,201,1|aano7z,103,201,1|aano80,102,200,0|ak0pjz,102,200,0|ak0pk0,103,201,1|atqpjz,103,201,1|atqpk0,102,200,0|b33qvz,102,200,0|b33qw0,102,200,1|bcguzz,102,200,1|bcgv00,90,192,0|bi89nz,90,192,0|bi89o0,102,200,0|blttjz,102,200,0|blttk0,103,201,1|bv6uvz,103,201,1|bv6uw0,102,200,0|c4jw7z,102,200,0|c4jw80,103,201,1|cdwxjz,103,201,1|cdwxk0,102,200,0|cn9yvz,102,200,0|cn9yw0,103,201,1|cwn07z,103,201,1|cwn080,102,200,0|d601jz,102,200,0|d601k0,103,201,1|dfd2vz,103,201,1|dfd2w0,102,200,0|dp32vz,102,200,0|dp32w0,103,201,1|dzvyvz,103,201,1|dzvyw0,102,200,0|e7t5jz,102,200,0|e7t5k0,103,201,1|eim1jz,103,201,1|eim1k0,102,200,0|eqj87z,102,200,0|eqj880,103,201,1|f1c47z,103,201,1|f1c480,102,200,0|f99avz,102,200,0|f99aw0,103,201,1|fkf5jz,103,201,1|fkf5k0,102,200,0|frzdjz,102,200,0|frzdk0,103,201,1|g3587z,103,201,1|g35880,102,200,0|gapg7z,102,200,0|gapg80,103,201,1|glvavz,103,201,1|glvaw0,102,200,0|gtshjz,102,200,0|gtshk0,103,201,1|h4ldjz,103,201,1|h4ldk0,102,200,0|hcik7z,102,200,0|hcik80,103,201,1|hnbg7z,103,201,1|hnbg80,102,200,0|hv8mvz,102,200,0|hv8mw0,103,201,1|i6ehjz,103,201,1|i6ehk0,102,200,0|idypjz,102,200,0|idypk0,103,201,1|ip4k7z,103,201,1|ip4k80,102,200,0|iwos7z,102,200,0|iwos80,103,201,1|j7umvz,103,201,1|j7umw0,102,200,0|jfeuvz,102,200,0|jfeuw0,103,201,1|jqkpjz,103,201,1|jqkpk0,102,200,0|jyhw7z,102,200,0|jyhw80,103,201,1|k9as7z,103,201,1|k9as80,102,200,0|kh7yvz,102,200,0|kh7yw0,103,201,1|ks0uvz,103,201,1|ks0uw0,102,200,0|kzy1jz,102,200,0|kzy1k0,102,200,1|lb3yzz,102,200,1|lb3z00,90,192,0|lio6zz,90,192,0|lio700,102,200,0\",\"Asia/Karachi|,0,254,0|-wvpb30,108,228,0|-e9lba1,108,228,0|-e9lba0,109,229,1|-cmya21,109,229,1|-cmya20,108,228,0|-9j0km1,108,228,0|-9j0km0,92,194,0|n33fz,92,194,0|n33g0,125,194,0|gu5u3z,125,194,0|gu5u40,126,196,1|h3isnz,126,196,1|h3iso0,125,194,0|k1qy3z,125,194,0|k1qy40,126,196,1|k9m7bz,126,196,1|k9m7c0,125,194,0|ki3u3z,125,194,0|ki3u40,126,196,1|kse4nz,126,196,1|kse4o0,125,194,0\",\"Asia/Kathmandu|,0,255,0|-q3gt4s,108,228,0|8clspz,108,228,0|8clsq0,127,256,0\",\"Asia/Khandyga|,0,257,0|-q4cjrp,89,191,0|-kmri81,89,191,0|-kmri80,107,224,0|5vapnz,107,224,0|5vapo0,93,195,1|64pivz,93,195,1|64piw0,107,224,0|6e2mzz,107,224,0|6e2n00,93,195,1|6nhg7z,93,195,1|6nhg80,107,224,0|6wukbz,107,224,0|6wukc0,93,195,1|769djz,93,195,1|769dk0,107,224,0|7focbz,107,224,0|7focc0,93,195,1|7p1j7z,93,195,1|7p1j80,107,224,0|7yekjz,107,224,0|7yekk0,93,195,1|87rlvz,93,195,1|87rlw0,107,224,0|8h4n7z,107,224,0|8h4n80,93,195,1|8qhojz,93,195,1|8qhok0,107,224,0|8zupvz,107,224,0|8zupw0,93,195,1|997r7z,93,195,1|997r80,107,224,0|9iksjz,107,224,0|9iksk0,93,195,1|9rxtvz,93,195,1|9rxtw0,107,224,0|a1av7z,107,224,0|a1av80,93,195,1|aanwjz,93,195,1|aanwk0,107,224,0|ak0xvz,107,224,0|ak0xw0,93,195,1|atqxvz,93,195,1|atqxw0,107,224,0|b33z7z,107,224,0|b33z80,107,224,1|bch3bz,107,224,1|bch3c0,89,191,0|bi8hzz,89,191,0|bi8i00,107,224,0|blu1vz,107,224,0|blu1w0,93,195,1|bv737z,93,195,1|bv7380,107,224,0|c4k4jz,107,224,0|c4k4k0,93,195,1|cdx5vz,93,195,1|cdx5w0,107,224,0|cna77z,107,224,0|cna780,93,195,1|cwn8jz,93,195,1|cwn8k0,107,224,0|d609vz,107,224,0|d609w0,93,195,1|dfdb7z,93,195,1|dfdb80,107,224,0|dp3b7z,107,224,0|dp3b80,93,195,1|dzw77z,93,195,1|dzw780,107,224,0|e7tdvz,107,224,0|e7tdw0,93,195,1|eim9vz,93,195,1|eim9w0,107,224,0|eqjgjz,107,224,0|eqjgk0,93,195,1|f1ccjz,93,195,1|f1cck0,107,224,0|f99j7z,107,224,0|f99j80,93,195,1|fkfdvz,93,195,1|fkfdw0,107,224,0|frzlvz,107,224,0|frzlw0,93,195,1|g35gjz,93,195,1|g35gk0,107,224,0|gapojz,107,224,0|gapok0,93,195,1|glvj7z,93,195,1|glvj80,107,224,0|gtspvz,107,224,0|gtspw0,93,195,1|h4llvz,93,195,1|h4llw0,107,224,0|hcisjz,107,224,0|hcisk0,93,195,1|hnbojz,93,195,1|hnbok0,107,224,0|hqrlnz,107,224,0|hqrlo0,93,195,0|hv8sfz,93,195,0|hv8sg0,90,192,1|i6en3z,90,192,1|i6en40,93,195,0|idyv3z,93,195,0|idyv40,90,192,1|ip4prz,90,192,1|ip4ps0,93,195,0|iwoxrz,93,195,0|iwoxs0,90,192,1|j7usfz,90,192,1|j7usg0,93,195,0|jff0fz,93,195,0|jff0g0,90,192,1|jqkv3z,90,192,1|jqkv40,93,195,0|jyi1rz,93,195,0|jyi1s0,90,192,1|k9axrz,90,192,1|k9axs0,93,195,0|kh84fz,93,195,0|kh84g0,90,192,1|ks10fz,90,192,1|ks10g0,93,195,0|kzy73z,93,195,0|kzy740,90,192,1|lb41rz,90,192,1|lb41s0,93,195,0|lio9rz,93,195,0|lio9s0,90,192,0|lreurz,90,192,0|lreus0,93,195,0|ne0cfz,93,195,0|ne0cg0,107,224,0\",\"Asia/Kolkata|,0,258,0|-1oaa314,77,232,0|-1g6thox,77,232,0|-1g6thow,21,259,0|-xehavb,21,259,0|-xehava,110,228,0|-eqtom1,110,228,0|-eqtom0,109,229,1|-ef78q1,109,229,1|-ef78q0,110,228,0|-e9lba1,110,228,0|-e9lba0,109,229,1|-cmya21,109,229,1|-cmya20,110,228,0\",\"Asia/Krasnoyarsk|,0,260,0|-q37l72,96,196,0|-kmrco1,96,196,0|-kmrco0,91,193,0|5vav7z,91,193,0|5vav80,89,191,1|64pofz,89,191,1|64pog0,91,193,0|6e2sjz,91,193,0|6e2sk0,89,191,1|6nhlrz,89,191,1|6nhls0,91,193,0|6wupvz,91,193,0|6wupw0,89,191,1|769j3z,89,191,1|769j40,91,193,0|7fohvz,91,193,0|7fohw0,89,191,1|7p1orz,89,191,1|7p1os0,91,193,0|7yeq3z,91,193,0|7yeq40,89,191,1|87rrfz,89,191,1|87rrg0,91,193,0|8h4srz,91,193,0|8h4ss0,89,191,1|8qhu3z,89,191,1|8qhu40,91,193,0|8zuvfz,91,193,0|8zuvg0,89,191,1|997wrz,89,191,1|997ws0,91,193,0|9iky3z,91,193,0|9iky40,89,191,1|9rxzfz,89,191,1|9rxzg0,91,193,0|a1b0rz,91,193,0|a1b0s0,89,191,1|aao23z,89,191,1|aao240,91,193,0|ak13fz,91,193,0|ak13g0,89,191,1|atr3fz,89,191,1|atr3g0,91,193,0|b344rz,91,193,0|b344s0,91,193,1|bch8vz,91,193,1|bch8w0,96,196,0|bi8njz,96,196,0|bi8nk0,91,193,0|blu7fz,91,193,0|blu7g0,89,191,1|bv78rz,89,191,1|bv78s0,91,193,0|c4ka3z,91,193,0|c4ka40,89,191,1|cdxbfz,89,191,1|cdxbg0,91,193,0|cnacrz,91,193,0|cnacs0,89,191,1|cwne3z,89,191,1|cwne40,91,193,0|d60ffz,91,193,0|d60fg0,89,191,1|dfdgrz,89,191,1|dfdgs0,91,193,0|dp3grz,91,193,0|dp3gs0,89,191,1|dzwcrz,89,191,1|dzwcs0,91,193,0|e7tjfz,91,193,0|e7tjg0,89,191,1|eimffz,89,191,1|eimfg0,91,193,0|eqjm3z,91,193,0|eqjm40,89,191,1|f1ci3z,89,191,1|f1ci40,91,193,0|f99orz,91,193,0|f99os0,89,191,1|fkfjfz,89,191,1|fkfjg0,91,193,0|frzrfz,91,193,0|frzrg0,89,191,1|g35m3z,89,191,1|g35m40,91,193,0|gapu3z,91,193,0|gapu40,89,191,1|glvorz,89,191,1|glvos0,91,193,0|gtsvfz,91,193,0|gtsvg0,89,191,1|h4lrfz,89,191,1|h4lrg0,91,193,0|hciy3z,91,193,0|hciy40,89,191,1|hnbu3z,89,191,1|hnbu40,91,193,0|hv90rz,91,193,0|hv90s0,89,191,1|i6evfz,89,191,1|i6evg0,91,193,0|idz3fz,91,193,0|idz3g0,89,191,1|ip4y3z,89,191,1|ip4y40,91,193,0|iwp63z,91,193,0|iwp640,89,191,1|j7v0rz,89,191,1|j7v0s0,91,193,0|jff8rz,91,193,0|jff8s0,89,191,1|jql3fz,89,191,1|jql3g0,91,193,0|jyia3z,91,193,0|jyia40,89,191,1|k9b63z,89,191,1|k9b640,91,193,0|kh8crz,91,193,0|kh8cs0,89,191,1|ks18rz,89,191,1|ks18s0,91,193,0|kzyffz,91,193,0|kzyfg0,89,191,1|lb4a3z,89,191,1|lb4a40,91,193,0|lioi3z,91,193,0|lioi40,89,191,0|ne0hzz,89,191,0|ne0i00,91,193,0\",\"Asia/Kuala_Lumpur|,0,261,0|-100ew5y,85,262,0|-xphpwe,85,262,0|-xphpwd,91,193,0|-jb6gs1,91,193,0|-jb6gs0,118,246,1|-hquppd,118,246,1|-hquppc,118,246,0|-esddpd,118,246,0|-esddpc,106,222,0|-ejqa61,106,222,0|-ejqa60,107,224,0|-conl01,107,224,0|-conl00,106,222,0|69g35z,106,222,0|69g360,89,191,0\",\"Asia/Kuching|,0,263,0|-mvof3k,106,222,0|-jb6i61,106,222,0|-jb6i60,89,191,0|-hwgm81,89,191,0|-hwgm80,128,264,1|-hrs4hd,128,264,1|-hrs4hc,89,191,0|-hdmu81,89,191,0|-hdmu80,128,264,1|-h8ychd,128,264,1|-h8ychc,89,191,0|-guuww1,89,191,0|-guuww0,128,264,1|-gq6f5d,128,264,1|-gq6f5c,89,191,0|-gc2zk1,89,191,0|-gc2zk0,128,264,1|-g7ehtd,128,264,1|-g7ehtc,89,191,0|-ftb281,89,191,0|-ftb280,128,264,1|-fomkhd,128,264,1|-fomkhc,89,191,0|-faha81,89,191,0|-faha80,128,264,1|-f5sshd,128,264,1|-f5sshc,89,191,0|-erpcw1,89,191,0|-erpcw0,128,264,1|-en0v5d,128,264,1|-en0v5c,89,191,0|-ejqbk1,89,191,0|-ejqbk0,107,224,0|-conl01,107,224,0|-conl00,89,191,0\",\"Asia/Kuwait|,0,203,0|-bwgbbg,100,6,0\",\"Asia/Macau|,0,265,0|-y0i2cy,45,191,0|-emm3o1,45,191,0|-emm3o0,107,224,0|-efxfs1,107,224,0|-efxfs0,93,195,1|-e5lak1,93,195,1|-e5lak0,107,224,0|-dx5ig1,107,224,0|-dx5ig0,93,195,1|-dpa981,93,195,1|-dpa980,107,224,0|-cnoec1,107,224,0|-cnoec0,45,191,0|-ccrt01,45,191,0|-ccrt00,46,224,1|-c4wh01,46,224,1|-c4wh00,45,191,0|-buk901,45,191,0|-buk900,46,224,1|-bizl01,46,224,1|-bizl00,45,191,0|-bb2ec1,45,191,0|-bb2ec0,46,224,1|-b1pd01,46,224,1|-b1pd00,45,191,0|-atu101,45,191,0|-atu100,46,224,1|-aj1501,46,224,1|-aj1500,45,191,0|-ab3yc1,45,191,0|-ab3yc0,46,224,1|-a0b2c1,46,224,1|-a0b2c0,45,191,0|-9sdvo1,45,191,0|-9sdvo0,46,224,1|-9hj501,46,224,1|-9hj500,45,191,0|-99auc1,45,191,0|-99auc0,46,224,1|-8yhyc1,46,224,1|-8yhyc0,45,191,0|-8qkro1,45,191,0|-8qkro0,46,224,1|-8frvo1,46,224,1|-8frvo0,45,191,0|-88kmc1,45,191,0|-88kmc0,46,224,1|-7x1t01,46,224,1|-7x1t00,45,191,0|-7pujo1,45,191,0|-7pujo0,46,224,1|-7dyro1,46,224,1|-7dyro0,45,191,0|-774h01,45,191,0|-774h00,46,224,1|-6v8fa1,46,224,1|-6v8fa0,45,191,0|-6o1361,45,191,0|-6o1360,46,224,1|-6cicm1,46,224,1|-6cicm0,45,191,0|-65b0i1,45,191,0|-65b0i0,46,224,1|-5ts9y1,46,224,1|-5ts9y0,45,191,0|-5mkxu1,45,191,0|-5mkxu0,46,224,1|-5b27a1,46,224,1|-5b27a0,45,191,0|-53uv61,45,191,0|-53uv60,46,224,1|-4rz5y1,46,224,1|-4rz5y0,45,191,0|-4l4si1,45,191,0|-4l4si0,46,224,1|-4993a1,46,224,1|-4993a0,45,191,0|-42epu1,45,191,0|-42epu0,46,224,1|-3qj0m1,46,224,1|-3qj0m0,45,191,0|-3jboi1,45,191,0|-3jboi0,46,224,1|-37sxy1,46,224,1|-37sxy0,45,191,0|-30llu1,45,191,0|-30llu0,46,224,1|-2p2va1,46,224,1|-2p2va0,45,191,0|-2gfoi1,45,191,0|-2gfoi0,46,224,1|-272sq1,46,224,1|-272sq0,45,191,0|-1xplu1,45,191,0|-1xplu0,46,224,1|-1ocq21,46,224,1|-1ocq20,45,191,0|-1ezj61,45,191,0|-1ezj60,46,224,1|-159ly1,46,224,1|-159ly0,45,191,0|-vwhu1,45,191,0|-vwhu0,46,224,1|-mjja1,46,224,1|-mjja0,45,191,0|-d6f61,45,191,0|-d6f60,46,224,1|-3tgm1,46,224,1|-3tgm0,45,191,0|5jnhz,45,191,0|5jni0,46,224,1|ewm1z,46,224,1|ewm20,45,191,0|o9q5z,45,191,0|o9q60,46,224,1|xmopz,46,224,1|xmoq0,45,191,0|16zstz,45,191,0|16zsu0,46,224,1|1gpq1z,46,224,1|1gpq20,45,191,0|1q2u5z,45,191,0|1q2u60,46,224,1|1zfspz,46,224,1|1zfsq0,45,191,0|231i5z,45,191,0|231i60,46,224,1|2i5vdz,46,224,1|2i5ve0,45,191,0|2rizhz,45,191,0|2rizi0,46,224,1|30vy1z,46,224,1|30vy20,45,191,0|3a925z,45,191,0|3a9260,46,224,1|3jm0pz,46,224,1|3jm0q0,45,191,0|4vv4tz,45,191,0|4vv4u0,46,224,1|5457dz,46,224,1|5457e0,45,191,0\",\"Asia/Magadan|,0,266,0|-nu1nxc,93,195,0|-kmrns1,93,195,0|-kmrns0,90,192,0|5vak3z,90,192,0|5vak40,102,200,1|64pdbz,102,200,1|64pdc0,90,192,0|6e2hfz,90,192,0|6e2hg0,102,200,1|6nhanz,102,200,1|6nhao0,90,192,0|6wuerz,90,192,0|6wues0,102,200,1|7697zz,102,200,1|769800,90,192,0|7fo6rz,90,192,0|7fo6s0,102,200,1|7p1dnz,102,200,1|7p1do0,90,192,0|7yeezz,90,192,0|7yef00,102,200,1|87rgbz,102,200,1|87rgc0,90,192,0|8h4hnz,90,192,0|8h4ho0,102,200,1|8qhizz,102,200,1|8qhj00,90,192,0|8zukbz,90,192,0|8zukc0,102,200,1|997lnz,102,200,1|997lo0,90,192,0|9ikmzz,90,192,0|9ikn00,102,200,1|9rxobz,102,200,1|9rxoc0,90,192,0|a1apnz,90,192,0|a1apo0,102,200,1|aanqzz,102,200,1|aanr00,90,192,0|ak0sbz,90,192,0|ak0sc0,102,200,1|atqsbz,102,200,1|atqsc0,90,192,0|b33tnz,90,192,0|b33to0,90,192,1|bcgxrz,90,192,1|bcgxs0,93,195,0|bi8cfz,93,195,0|bi8cg0,90,192,0|bltwbz,90,192,0|bltwc0,102,200,1|bv6xnz,102,200,1|bv6xo0,90,192,0|c4jyzz,90,192,0|c4jz00,102,200,1|cdx0bz,102,200,1|cdx0c0,90,192,0|cna1nz,90,192,0|cna1o0,102,200,1|cwn2zz,102,200,1|cwn300,90,192,0|d604bz,90,192,0|d604c0,102,200,1|dfd5nz,102,200,1|dfd5o0,90,192,0|dp35nz,90,192,0|dp35o0,102,200,1|dzw1nz,102,200,1|dzw1o0,90,192,0|e7t8bz,90,192,0|e7t8c0,102,200,1|eim4bz,102,200,1|eim4c0,90,192,0|eqjazz,90,192,0|eqjb00,102,200,1|f1c6zz,102,200,1|f1c700,90,192,0|f99dnz,90,192,0|f99do0,102,200,1|fkf8bz,102,200,1|fkf8c0,90,192,0|frzgbz,90,192,0|frzgc0,102,200,1|g35azz,102,200,1|g35b00,90,192,0|gapizz,90,192,0|gapj00,102,200,1|glvdnz,102,200,1|glvdo0,90,192,0|gtskbz,90,192,0|gtskc0,102,200,1|h4lgbz,102,200,1|h4lgc0,90,192,0|hcimzz,90,192,0|hcin00,102,200,1|hnbizz,102,200,1|hnbj00,90,192,0|hv8pnz,90,192,0|hv8po0,102,200,1|i6ekbz,102,200,1|i6ekc0,90,192,0|idysbz,90,192,0|idysc0,102,200,1|ip4mzz,102,200,1|ip4n00,90,192,0|iwouzz,90,192,0|iwov00,102,200,1|j7upnz,102,200,1|j7upo0,90,192,0|jfexnz,90,192,0|jfexo0,102,200,1|jqksbz,102,200,1|jqksc0,90,192,0|jyhyzz,90,192,0|jyhz00,102,200,1|k9auzz,102,200,1|k9av00,90,192,0|kh81nz,90,192,0|kh81o0,102,200,1|ks0xnz,102,200,1|ks0xo0,90,192,0|kzy4bz,90,192,0|kzy4c0,102,200,1|lb3yzz,102,200,1|lb3z00,90,192,0|lio6zz,90,192,0|lio700,102,200,0|ne06vz,102,200,0|ne06w0,93,195,0|o63gfz,93,195,0|o63gg0,90,192,0\",\"Asia/Makassar|,0,267,0|-q3gzg0,21,267,0|-jebi41,21,267,0|-jebi40,89,191,0|-ek3a81,89,191,0|-ek3a80,107,224,0|-co37o1,107,224,0|-co37o0,129,191,0\",\"Asia/Manila|,0,268,0|-1t8ix2o,0,269,0|-10va3qp,0,269,0|-10va3qo,51,191,0|-hb5y81,51,191,0|-hb5y80,57,224,1|-h6fno1,57,224,1|-h6fno0,51,191,0|-efxa81,51,191,0|-efxa80,116,224,0|-d4ux01,116,224,0|-d4ux00,51,191,0|-87fsw1,51,191,0|-87fsw0,57,224,1|-83bqc1,57,224,1|-83bqc0,51,191,0|4aen3z,51,191,0|4aen40,57,224,1|4jtgbz,57,224,1|4jtgc0,51,191,0\",\"Asia/Muscat|,0,234,0|-q3gnko,105,209,0\",\"Asia/Nicosia|,0,270,0|-p4bq6g,15,11,0|2r67rz,15,11,0|2r67s0,16,6,1|30j6bz,16,6,1|30j6c0,15,11,0|3bn93z,15,11,0|3bn940,16,6,1|3jb3nz,16,6,1|3jb3o0,15,11,0|3s9efz,15,11,0|3s9eg0,16,6,1|419ebz,16,6,1|419ec0,15,11,0|4azh3z,15,11,0|4azh40,16,6,1|4keabz,16,6,1|4keac0,15,11,0|4tpjrz,15,11,0|4tpjs0,16,6,1|532ibz,16,6,1|532ic0,15,11,0|5csl3z,15,11,0|5csl40,16,6,1|5lskzz,16,6,1|5lsl00,15,11,0|5v5p3z,15,11,0|5v5p40,16,6,1|64innz,16,6,1|64ino0,15,11,0|6dvrrz,15,11,0|6dvrs0,16,6,1|6n8qbz,16,6,1|6n8qc0,15,11,0|6wlufz,15,11,0|6wlug0,16,6,1|75yszz,16,6,1|75yt00,15,11,0|7fbx3z,15,11,0|7fbx40,16,6,1|7p1ubz,16,6,1|7p1uc0,15,11,0|7yeyfz,15,11,0|7yeyg0,16,6,1|87rwzz,16,6,1|87rx00,15,11,0|8h513z,15,11,0|8h5140,16,6,1|8qhznz,16,6,1|8qhzo0,15,11,0|8zv3rz,15,11,0|8zv3s0,16,6,1|9982bz,16,6,1|9982c0,15,11,0|9il6fz,15,11,0|9il6g0,16,6,1|9ry4zz,16,6,1|9ry500,15,11,0|a1b93z,15,11,0|a1b940,16,6,1|aao7nz,16,6,1|aao7o0,15,11,0|ak1brz,15,11,0|ak1bs0,16,6,1|atr8zz,16,6,1|atr900,15,11,0|b34d3z,15,11,0|b34d40,16,6,1|bchbnz,16,6,1|bchbo0,15,11,0|blufrz,15,11,0|blufs0,16,6,1|bv7ebz,16,6,1|bv7ec0,15,11,0|c4kifz,15,11,0|c4kig0,16,6,1|cdxgzz,16,6,1|cdxh00,15,11,0|cnal3z,15,11,0|cnal40,16,6,1|cwnjnz,16,6,1|cwnjo0,15,11,0|d60nrz,15,11,0|d60ns0,16,6,1|dfdmbz,16,6,1|dfdmc0,15,11,0|dp3p3z,15,11,0|dp3p40,16,6,1|dygnnz,16,6,1|dygno0,15,11,0|e7trrz,15,11,0|e7trs0,16,6,1|eh6qbz,16,6,1|eh6qc0,15,11,0|eqjufz,15,11,0|eqjug0,16,6,1|f1cyrz,16,6,1|f1cys0,15,11,0|f9a5fz,15,11,0|f9a5g0,16,6,1|fkg03z,16,6,1|fkg040,15,11,0|fs083z,15,11,0|fs0840,16,6,1|g362rz,16,6,1|g362s0,15,11,0|gaqarz,15,11,0|gaqas0,16,6,1|glw5fz,16,6,1|glw5g0,15,11,0|gttc3z,15,11,0|gttc40,16,6,1|h4m83z,16,6,1|h4m840,15,11,0|hcjerz,15,11,0|hcjes0,16,6,1|hncarz,16,6,1|hncas0,15,11,0|hv9hfz,15,11,0|hv9hg0,16,6,1|i6fc3z,16,6,1|i6fc40,15,11,0|idzk3z,15,11,0|idzk40,16,6,1|ip5erz,16,6,1|ip5es0,15,11,0|iwpmrz,15,11,0|iwpms0,16,6,1|j7vhfz,16,6,1|j7vhg0,15,11,0|jffpfz,15,11,0|jffpg0,16,6,1|jqlk3z,16,6,1|jqlk40,15,11,0|jyiqrz,15,11,0|jyiqs0,16,6,1|k9bmrz,16,6,1|k9bms0,15,11,0|kh8tfz,15,11,0|kh8tg0,16,6,1|ks1pfz,16,6,1|ks1pg0,15,11,0|kzyw3z,15,11,0|kzyw40,16,6,1|lb4qrz,16,6,1|lb4qs0,15,11,0|lioyrz,15,11,0|lioys0,16,6,1|ltutfz,16,6,1|ltutg0,15,11,0|m1f1fz,15,11,0|m1f1g0,16,6,1|mckw3z,16,6,1|mckw40,15,11,0|mki2rz,15,11,0|mki2s0,16,6,1|mvayrz,16,6,1|mvays0,15,11,0|n385fz,15,11,0|n385g0,16,6,1|ne11fz,16,6,1|ne11g0,15,11,0|nly83z,15,11,0|nly840,16,6,1|nwr43z,16,6,1|nwr440,15,11,0|o4oarz,15,11,0|o4oas0,16,6,1|ofu5fz,16,6,1|ofu5g0,15,11,0|onedfz,15,11,0|onedg0,16,6,1|oyk83z,16,6,1|oyk840,15,11,0|p64g3z,15,11,0|p64g40,16,6,1|phaarz,16,6,1|phaas0,15,11,0|pp7hfz,15,11,0|pp7hg0,16,6,1|q00dfz,16,6,1|q00dg0,15,11,0|q7xk3z,15,11,0|q7xk40,16,6,1|qiqg3z,16,6,1|qiqg40,15,11,0|qqnmrz,15,11,0|qqnms0,16,6,1|r1thfz,16,6,1|r1thg0,15,11,0|r9dpfz,15,11,0|r9dpg0,16,6,1|rkjk3z,16,6,1|rkjk40,15,11,0|rs3s3z,15,11,0|rs3s40,16,6,1|s39mrz,16,6,1|s39ms0,15,11,0|sb6tfz,15,11,0|sb6tg0,16,6,1|slzpfz,16,6,1|slzpg0,15,11,0|stww3z,15,11,0|stww40,16,6,1|t4ps3z,16,6,1|t4ps40,15,11,0|tcmyrz,15,11,0|tcmys0,16,6,1|tnfurz,16,6,1|tnfus0,15,11,0|tvd1fz,15,11,0|tvd1g0,16,6,1|u6iw3z,16,6,1|u6iw40,15,11,0|ue343z,15,11,0|ue3440,16,6,1|up8yrz,16,6,1|up8ys0,15,11,0|uwt6rz,15,11,0|uwt6s0,16,6,1|v7z1fz,16,6,1|v7z1g0,15,11,0|vfw83z,15,11,0|vfw840,16,6,1|vqp43z,16,6,1|vqp440,15,11,0|vymarz,15,11,0|vymas0,16,6,1|w9f6rz,16,6,1|w9f6s0,15,11,0|whcdfz,15,11,0|whcdg0,16,6,1|wsi83z,16,6,1|wsi840,15,11,0|x02g3z,15,11,0|x02g40,16,6,1|xb8arz,16,6,1|xb8as0,15,11,0|xisirz,15,11,0|xisis0,16,6,1|xtydfz,16,6,1|xtydg0,15,11,0|y1ilfz,15,11,0|y1ilg0,16,6,1|ycog3z,16,6,1|ycog40,15,11,0|yklmrz,15,11,0|yklms0,16,6,1|yveirz,16,6,1|yveis0,15,11,0|z3bpfz,15,11,0|z3bpg0,16,6,1|ze4lfz,16,6,1|ze4lg0,15,11,0\",\"Asia/Novokuznetsk|,0,271,0|-nu36tc,96,196,0|-kmrco1,96,196,0|-kmrco0,91,193,0|5vav7z,91,193,0|5vav80,89,191,1|64pofz,89,191,1|64pog0,91,193,0|6e2sjz,91,193,0|6e2sk0,89,191,1|6nhlrz,89,191,1|6nhls0,91,193,0|6wupvz,91,193,0|6wupw0,89,191,1|769j3z,89,191,1|769j40,91,193,0|7fohvz,91,193,0|7fohw0,89,191,1|7p1orz,89,191,1|7p1os0,91,193,0|7yeq3z,91,193,0|7yeq40,89,191,1|87rrfz,89,191,1|87rrg0,91,193,0|8h4srz,91,193,0|8h4ss0,89,191,1|8qhu3z,89,191,1|8qhu40,91,193,0|8zuvfz,91,193,0|8zuvg0,89,191,1|997wrz,89,191,1|997ws0,91,193,0|9iky3z,91,193,0|9iky40,89,191,1|9rxzfz,89,191,1|9rxzg0,91,193,0|a1b0rz,91,193,0|a1b0s0,89,191,1|aao23z,89,191,1|aao240,91,193,0|ak13fz,91,193,0|ak13g0,89,191,1|atr3fz,89,191,1|atr3g0,91,193,0|b344rz,91,193,0|b344s0,91,193,1|bch8vz,91,193,1|bch8w0,96,196,0|bi8njz,96,196,0|bi8nk0,91,193,0|blu7fz,91,193,0|blu7g0,89,191,1|bv78rz,89,191,1|bv78s0,91,193,0|c4ka3z,91,193,0|c4ka40,89,191,1|cdxbfz,89,191,1|cdxbg0,91,193,0|cnacrz,91,193,0|cnacs0,89,191,1|cwne3z,89,191,1|cwne40,91,193,0|d60ffz,91,193,0|d60fg0,89,191,1|dfdgrz,89,191,1|dfdgs0,91,193,0|dp3grz,91,193,0|dp3gs0,89,191,1|dzwcrz,89,191,1|dzwcs0,91,193,0|e7tjfz,91,193,0|e7tjg0,89,191,1|eimffz,89,191,1|eimfg0,91,193,0|eqjm3z,91,193,0|eqjm40,89,191,1|f1ci3z,89,191,1|f1ci40,91,193,0|f99orz,91,193,0|f99os0,89,191,1|fkfjfz,89,191,1|fkfjg0,91,193,0|frzrfz,91,193,0|frzrg0,89,191,1|g35m3z,89,191,1|g35m40,91,193,0|gapu3z,91,193,0|gapu40,89,191,1|glvorz,89,191,1|glvos0,91,193,0|gtsvfz,91,193,0|gtsvg0,89,191,1|h4lrfz,89,191,1|h4lrg0,91,193,0|hciy3z,91,193,0|hciy40,89,191,1|hnbu3z,89,191,1|hnbu40,91,193,0|hv90rz,91,193,0|hv90s0,89,191,1|i6evfz,89,191,1|i6evg0,91,193,0|idz3fz,91,193,0|idz3g0,89,191,1|ip4y3z,89,191,1|ip4y40,91,193,0|iwp63z,91,193,0|iwp640,89,191,1|j7v0rz,89,191,1|j7v0s0,91,193,0|jff8rz,91,193,0|jff8s0,89,191,1|jql3fz,89,191,1|jql3g0,91,193,0|jyia3z,91,193,0|jyia40,89,191,1|k9b63z,89,191,1|k9b640,91,193,0|kh8crz,91,193,0|kh8cs0,89,191,1|ks18rz,89,191,1|ks18s0,91,193,0|kzyffz,91,193,0|kzyfg0,91,193,1|lb4cvz,91,193,1|lb4cw0,96,196,0|liokvz,96,196,0|liokw0,91,193,0\",\"Asia/Novosibirsk|,0,272,0|-q4do0s,96,196,0|-kmrco1,96,196,0|-kmrco0,91,193,0|5vav7z,91,193,0|5vav80,89,191,1|64pofz,89,191,1|64pog0,91,193,0|6e2sjz,91,193,0|6e2sk0,89,191,1|6nhlrz,89,191,1|6nhls0,91,193,0|6wupvz,91,193,0|6wupw0,89,191,1|769j3z,89,191,1|769j40,91,193,0|7fohvz,91,193,0|7fohw0,89,191,1|7p1orz,89,191,1|7p1os0,91,193,0|7yeq3z,91,193,0|7yeq40,89,191,1|87rrfz,89,191,1|87rrg0,91,193,0|8h4srz,91,193,0|8h4ss0,89,191,1|8qhu3z,89,191,1|8qhu40,91,193,0|8zuvfz,91,193,0|8zuvg0,89,191,1|997wrz,89,191,1|997ws0,91,193,0|9iky3z,91,193,0|9iky40,89,191,1|9rxzfz,89,191,1|9rxzg0,91,193,0|a1b0rz,91,193,0|a1b0s0,89,191,1|aao23z,89,191,1|aao240,91,193,0|ak13fz,91,193,0|ak13g0,89,191,1|atr3fz,89,191,1|atr3g0,91,193,0|b344rz,91,193,0|b344s0,91,193,1|bch8vz,91,193,1|bch8w0,96,196,0|bi8njz,96,196,0|bi8nk0,91,193,0|blu7fz,91,193,0|blu7g0,89,191,1|bv78rz,89,191,1|bv78s0,91,193,0|c4ka3z,91,193,0|c4ka40,89,191,1|c7fr3z,89,191,1|c7fr40,91,193,1|cdxe7z,91,193,1|cdxe80,96,196,0|cnafjz,96,196,0|cnafk0,91,193,1|cwngvz,91,193,1|cwngw0,96,196,0|d60i7z,96,196,0|d60i80,91,193,1|dfdjjz,91,193,1|dfdjk0,96,196,0|dp3jjz,96,196,0|dp3jk0,91,193,1|dzwfjz,91,193,1|dzwfk0,96,196,0|e7tm7z,96,196,0|e7tm80,91,193,1|eimi7z,91,193,1|eimi80,96,196,0|eqjovz,96,196,0|eqjow0,91,193,1|f1ckvz,91,193,1|f1ckw0,96,196,0|f99rjz,96,196,0|f99rk0,91,193,1|fkfm7z,91,193,1|fkfm80,96,196,0|frzu7z,96,196,0|frzu80,91,193,1|g35ovz,91,193,1|g35ow0,96,196,0|gapwvz,96,196,0|gapww0,91,193,1|glvrjz,91,193,1|glvrk0,96,196,0|gtsy7z,96,196,0|gtsy80,91,193,1|h4lu7z,91,193,1|h4lu80,96,196,0|hcj0vz,96,196,0|hcj0w0,91,193,1|hnbwvz,91,193,1|hnbww0,96,196,0|hv93jz,96,196,0|hv93k0,91,193,1|i6ey7z,91,193,1|i6ey80,96,196,0|idz67z,96,196,0|idz680,91,193,1|ip50vz,91,193,1|ip50w0,96,196,0|iwp8vz,96,196,0|iwp8w0,91,193,1|j7v3jz,91,193,1|j7v3k0,96,196,0|jffbjz,96,196,0|jffbk0,91,193,1|jql67z,91,193,1|jql680,96,196,0|jyicvz,96,196,0|jyicw0,91,193,1|k9b8vz,91,193,1|k9b8w0,96,196,0|kh8fjz,96,196,0|kh8fk0,91,193,1|ks1bjz,91,193,1|ks1bk0,96,196,0|kzyi7z,96,196,0|kzyi80,91,193,1|lb4cvz,91,193,1|lb4cw0,96,196,0|liokvz,96,196,0|liokw0,91,193,0|ne0krz,91,193,0|ne0ks0,96,196,0|oasa7z,96,196,0|oasa80,91,193,0\",\"Asia/Omsk|,0,273,0|-q5xmx6,92,194,0|-kmr9w1,92,194,0|-kmr9w0,96,196,0|5vaxzz,96,196,0|5vay00,91,193,1|64pr7z,91,193,1|64pr80,96,196,0|6e2vbz,96,196,0|6e2vc0,91,193,1|6nhojz,91,193,1|6nhok0,96,196,0|6wusnz,96,196,0|6wuso0,91,193,1|769lvz,91,193,1|769lw0,96,196,0|7foknz,96,196,0|7foko0,91,193,1|7p1rjz,91,193,1|7p1rk0,96,196,0|7yesvz,96,196,0|7yesw0,91,193,1|87ru7z,91,193,1|87ru80,96,196,0|8h4vjz,96,196,0|8h4vk0,91,193,1|8qhwvz,91,193,1|8qhww0,96,196,0|8zuy7z,96,196,0|8zuy80,91,193,1|997zjz,91,193,1|997zk0,96,196,0|9il0vz,96,196,0|9il0w0,91,193,1|9ry27z,91,193,1|9ry280,96,196,0|a1b3jz,96,196,0|a1b3k0,91,193,1|aao4vz,91,193,1|aao4w0,96,196,0|ak167z,96,196,0|ak1680,91,193,1|atr67z,91,193,1|atr680,96,196,0|b347jz,96,196,0|b347k0,96,196,1|bchbnz,96,196,1|bchbo0,92,194,0|bi8qbz,92,194,0|bi8qc0,96,196,0|blua7z,96,196,0|blua80,91,193,1|bv7bjz,91,193,1|bv7bk0,96,196,0|c4kcvz,96,196,0|c4kcw0,91,193,1|cdxe7z,91,193,1|cdxe80,96,196,0|cnafjz,96,196,0|cnafk0,91,193,1|cwngvz,91,193,1|cwngw0,96,196,0|d60i7z,96,196,0|d60i80,91,193,1|dfdjjz,91,193,1|dfdjk0,96,196,0|dp3jjz,96,196,0|dp3jk0,91,193,1|dzwfjz,91,193,1|dzwfk0,96,196,0|e7tm7z,96,196,0|e7tm80,91,193,1|eimi7z,91,193,1|eimi80,96,196,0|eqjovz,96,196,0|eqjow0,91,193,1|f1ckvz,91,193,1|f1ckw0,96,196,0|f99rjz,96,196,0|f99rk0,91,193,1|fkfm7z,91,193,1|fkfm80,96,196,0|frzu7z,96,196,0|frzu80,91,193,1|g35ovz,91,193,1|g35ow0,96,196,0|gapwvz,96,196,0|gapww0,91,193,1|glvrjz,91,193,1|glvrk0,96,196,0|gtsy7z,96,196,0|gtsy80,91,193,1|h4lu7z,91,193,1|h4lu80,96,196,0|hcj0vz,96,196,0|hcj0w0,91,193,1|hnbwvz,91,193,1|hnbww0,96,196,0|hv93jz,96,196,0|hv93k0,91,193,1|i6ey7z,91,193,1|i6ey80,96,196,0|idz67z,96,196,0|idz680,91,193,1|ip50vz,91,193,1|ip50w0,96,196,0|iwp8vz,96,196,0|iwp8w0,91,193,1|j7v3jz,91,193,1|j7v3k0,96,196,0|jffbjz,96,196,0|jffbk0,91,193,1|jql67z,91,193,1|jql680,96,196,0|jyicvz,96,196,0|jyicw0,91,193,1|k9b8vz,91,193,1|k9b8w0,96,196,0|kh8fjz,96,196,0|kh8fk0,91,193,1|ks1bjz,91,193,1|ks1bk0,96,196,0|kzyi7z,96,196,0|kzyi80,91,193,1|lb4cvz,91,193,1|lb4cw0,96,196,0|liokvz,96,196,0|liokw0,91,193,0|ne0krz,91,193,0|ne0ks0,96,196,0\",\"Asia/Oral|,0,274,0|-nu15ic,100,6,0|-kmr4c1,100,6,0|-kmr4c0,92,194,0|5vb0rz,92,194,0|5vb0s0,96,196,1|64ptzz,96,196,1|64pu00,96,196,0|6e2vbz,96,196,0|6e2vc0,96,196,1|6nhrbz,96,196,1|6nhrc0,92,194,0|6wuvfz,92,194,0|6wuvg0,96,196,1|769onz,96,196,1|769oo0,92,194,0|7fonfz,92,194,0|7fong0,96,196,1|7p1ubz,96,196,1|7p1uc0,92,194,0|7yevnz,92,194,0|7yevo0,96,196,1|87rwzz,96,196,1|87rx00,92,194,0|8h4ybz,92,194,0|8h4yc0,96,196,1|8qhznz,96,196,1|8qhzo0,92,194,0|8zv0zz,92,194,0|8zv100,96,196,1|9982bz,96,196,1|9982c0,92,194,0|9il3nz,92,194,0|9il3o0,96,196,1|9ry4zz,96,196,1|9ry500,92,194,0|a1b6bz,92,194,0|a1b6c0,92,194,1|aaoafz,92,194,1|aaoag0,105,209,0|ak1brz,105,209,0|ak1bs0,92,194,1|atrbrz,92,194,1|atrbs0,105,209,0|b34d3z,105,209,0|b34d40,92,194,1|bchefz,92,194,1|bcheg0,105,209,0|bi8t3z,105,209,0|bi8t40,92,194,0|bluczz,92,194,0|blud00,92,194,1|bv7h3z,92,194,1|bv7h40,105,209,0|c4kifz,105,209,0|c4kig0,92,194,1|cdxjrz,92,194,1|cdxjs0,105,209,0|cnal3z,105,209,0|cnal40,92,194,1|cwnmfz,92,194,1|cwnmg0,105,209,0|d60nrz,105,209,0|d60ns0,92,194,1|dfdp3z,92,194,1|dfdp40,105,209,0|dp3p3z,105,209,0|dp3p40,92,194,1|dzwl3z,92,194,1|dzwl40,105,209,0|e7trrz,105,209,0|e7trs0,92,194,1|eimnrz,92,194,1|eimns0,105,209,0|eqjufz,105,209,0|eqjug0,92,194,1|f1cqfz,92,194,1|f1cqg0,105,209,0|f99x3z,105,209,0|f99x40,92,194,1|fkfrrz,92,194,1|fkfrs0,105,209,0|frzzrz,105,209,0|frzzs0,92,194,1|g35ufz,92,194,1|g35ug0,105,209,0|gaq2fz,105,209,0|gaq2g0,92,194,1|glvx3z,92,194,1|glvx40,105,209,0|gtt3rz,105,209,0|gtt3s0,92,194,1|h4lzrz,92,194,1|h4lzs0,105,209,0|hcj6fz,105,209,0|hcj6g0,92,194,1|hnc2fz,92,194,1|hnc2g0,105,209,0|hv993z,105,209,0|hv9940,92,194,1|i6f3rz,92,194,1|i6f3s0,92,194,0\",\"Asia/Phnom_Penh|,0,217,0|-1ayyla4,53,217,0|-pysda5,53,217,0|-pysda4,91,193,0\",\"Asia/Pontianak|,0,275,0|-w6piww,7,275,0|-jebg8x,7,275,0|-jebg8w,106,222,0|-eknm61,106,222,0|-eknm60,107,224,0|-co37o1,107,224,0|-co37o0,106,222,0|-bb5zi1,106,222,0|-bb5zi0,89,191,0|-a9m681,89,191,0|-a9m680,106,222,0|-34ru61,106,222,0|-34ru60,129,191,0|9e5gfz,129,191,0|9e5gg0,119,193,0\",\"Asia/Pyongyang|,0,276,0|-w895yc,130,242,0|-u9s4y1,130,242,0|-u9s4y0,116,224,0|-cpmro1,116,224,0|-cpmro0,130,224,0|nt2uzz,130,224,0|nt2v00,130,242,0|p87lnz,130,242,0|p87lo0,130,224,0\",\"Asia/Qatar|,0,215,0|-q3gmvk,105,209,0|19d0vz,105,209,0|19d0w0,100,6,0\",\"Asia/Qostanay|,0,277,0|-nu17s4,105,209,0|-kmr741,105,209,0|-kmr740,92,194,0|5vb0rz,92,194,0|5vb0s0,96,196,1|64ptzz,96,196,1|64pu00,96,196,0|6e2vbz,96,196,0|6e2vc0,96,196,1|6nhrbz,96,196,1|6nhrc0,92,194,0|6wuvfz,92,194,0|6wuvg0,96,196,1|769onz,96,196,1|769oo0,92,194,0|7fonfz,92,194,0|7fong0,96,196,1|7p1ubz,96,196,1|7p1uc0,92,194,0|7yevnz,92,194,0|7yevo0,96,196,1|87rwzz,96,196,1|87rx00,92,194,0|8h4ybz,92,194,0|8h4yc0,96,196,1|8qhznz,96,196,1|8qhzo0,92,194,0|8zv0zz,92,194,0|8zv100,96,196,1|9982bz,96,196,1|9982c0,92,194,0|9il3nz,92,194,0|9il3o0,96,196,1|9ry4zz,96,196,1|9ry500,92,194,0|a1b6bz,92,194,0|a1b6c0,96,196,1|aao7nz,96,196,1|aao7o0,92,194,0|ak18zz,92,194,0|ak1900,96,196,1|atr8zz,96,196,1|atr900,92,194,0|b34abz,92,194,0|b34ac0,92,194,1|bchefz,92,194,1|bcheg0,105,209,0|bi8t3z,105,209,0|bi8t40,92,194,0|bluczz,92,194,0|blud00,96,196,1|bv7ebz,96,196,1|bv7ec0,92,194,0|c4kfnz,92,194,0|c4kfo0,96,196,1|cdxgzz,96,196,1|cdxh00,92,194,0|cnaibz,92,194,0|cnaic0,96,196,1|cwnjnz,96,196,1|cwnjo0,92,194,0|d60kzz,92,194,0|d60l00,96,196,1|dfdmbz,96,196,1|dfdmc0,92,194,0|dp3mbz,92,194,0|dp3mc0,96,196,1|dzwibz,96,196,1|dzwic0,92,194,0|e7tozz,92,194,0|e7tp00,96,196,1|eimkzz,96,196,1|eiml00,92,194,0|eqjrnz,92,194,0|eqjro0,96,196,1|f1cnnz,96,196,1|f1cno0,92,194,0|f99ubz,92,194,0|f99uc0,96,196,1|fkfozz,96,196,1|fkfp00,92,194,0|frzwzz,92,194,0|frzx00,96,196,1|g35rnz,96,196,1|g35ro0,92,194,0|gapznz,92,194,0|gapzo0,96,196,1|glvubz,96,196,1|glvuc0,92,194,0|gtt0zz,92,194,0|gtt100,96,196,1|h4lwzz,96,196,1|h4lx00,92,194,0|hcj3nz,92,194,0|hcj3o0,96,196,1|hnbznz,96,196,1|hnbzo0,92,194,0|hv96bz,92,194,0|hv96c0,96,196,1|i6f0zz,96,196,1|i6f100,96,196,0\",\"Asia/Qyzylorda|,0,278,0|-nu184g,105,209,0|-kmr741,105,209,0|-kmr740,92,194,0|5vb0rz,92,194,0|5vb0s0,96,196,1|64ptzz,96,196,1|64pu00,96,196,0|6e2vbz,96,196,0|6e2vc0,96,196,1|6nhrbz,96,196,1|6nhrc0,92,194,0|6wuvfz,92,194,0|6wuvg0,96,196,1|769onz,96,196,1|769oo0,92,194,0|7fonfz,92,194,0|7fong0,96,196,1|7p1ubz,96,196,1|7p1uc0,92,194,0|7yevnz,92,194,0|7yevo0,96,196,1|87rwzz,96,196,1|87rx00,92,194,0|8h4ybz,92,194,0|8h4yc0,96,196,1|8qhznz,96,196,1|8qhzo0,92,194,0|8zv0zz,92,194,0|8zv100,96,196,1|9982bz,96,196,1|9982c0,92,194,0|9il3nz,92,194,0|9il3o0,96,196,1|9ry4zz,96,196,1|9ry500,92,194,0|a1b6bz,92,194,0|a1b6c0,96,196,1|aao7nz,96,196,1|aao7o0,92,194,0|ak18zz,92,194,0|ak1900,96,196,1|atr8zz,96,196,1|atr900,92,194,0|b34abz,92,194,0|b34ac0,92,194,1|bchefz,92,194,1|bcheg0,92,194,0|bi8qbz,92,194,0|bi8qc0,96,196,0|blua7z,96,196,0|blua80,96,196,1|bv7ebz,96,196,1|bv7ec0,92,194,0|c4kfnz,92,194,0|c4kfo0,96,196,1|cdxgzz,96,196,1|cdxh00,92,194,0|cnaibz,92,194,0|cnaic0,96,196,1|cwnjnz,96,196,1|cwnjo0,92,194,0|d60kzz,92,194,0|d60l00,96,196,1|dfdmbz,96,196,1|dfdmc0,92,194,0|dp3mbz,92,194,0|dp3mc0,96,196,1|dzwibz,96,196,1|dzwic0,92,194,0|e7tozz,92,194,0|e7tp00,96,196,1|eimkzz,96,196,1|eiml00,92,194,0|eqjrnz,92,194,0|eqjro0,96,196,1|f1cnnz,96,196,1|f1cno0,92,194,0|f99ubz,92,194,0|f99uc0,96,196,1|fkfozz,96,196,1|fkfp00,92,194,0|frzwzz,92,194,0|frzx00,96,196,1|g35rnz,96,196,1|g35ro0,92,194,0|gapznz,92,194,0|gapzo0,96,196,1|glvubz,96,196,1|glvuc0,92,194,0|gtt0zz,92,194,0|gtt100,96,196,1|h4lwzz,96,196,1|h4lx00,92,194,0|hcj3nz,92,194,0|hcj3o0,96,196,1|hnbznz,96,196,1|hnbzo0,92,194,0|hv96bz,92,194,0|hv96c0,96,196,1|i6f0zz,96,196,1|i6f100,96,196,0|pk1rbz,96,196,0|pk1rc0,92,194,0\",\"Asia/Riyadh|,0,203,0|-bwgbbg,100,6,0\",\"Asia/Sakhalin|,0,279,0|-xl87rc,107,224,0|-cpkx01,107,224,0|-cpkx00,90,192,0|5vak3z,90,192,0|5vak40,102,200,1|64pdbz,102,200,1|64pdc0,90,192,0|6e2hfz,90,192,0|6e2hg0,102,200,1|6nhanz,102,200,1|6nhao0,90,192,0|6wuerz,90,192,0|6wues0,102,200,1|7697zz,102,200,1|769800,90,192,0|7fo6rz,90,192,0|7fo6s0,102,200,1|7p1dnz,102,200,1|7p1do0,90,192,0|7yeezz,90,192,0|7yef00,102,200,1|87rgbz,102,200,1|87rgc0,90,192,0|8h4hnz,90,192,0|8h4ho0,102,200,1|8qhizz,102,200,1|8qhj00,90,192,0|8zukbz,90,192,0|8zukc0,102,200,1|997lnz,102,200,1|997lo0,90,192,0|9ikmzz,90,192,0|9ikn00,102,200,1|9rxobz,102,200,1|9rxoc0,90,192,0|a1apnz,90,192,0|a1apo0,102,200,1|aanqzz,102,200,1|aanr00,90,192,0|ak0sbz,90,192,0|ak0sc0,102,200,1|atqsbz,102,200,1|atqsc0,90,192,0|b33tnz,90,192,0|b33to0,90,192,1|bcgxrz,90,192,1|bcgxs0,93,195,0|bi8cfz,93,195,0|bi8cg0,90,192,0|bltwbz,90,192,0|bltwc0,102,200,1|bv6xnz,102,200,1|bv6xo0,90,192,0|c4jyzz,90,192,0|c4jz00,102,200,1|cdx0bz,102,200,1|cdx0c0,90,192,0|cna1nz,90,192,0|cna1o0,102,200,1|cwn2zz,102,200,1|cwn300,90,192,0|d604bz,90,192,0|d604c0,102,200,1|dfd5nz,102,200,1|dfd5o0,90,192,0|dp35nz,90,192,0|dp35o0,102,200,1|dzw1nz,102,200,1|dzw1o0,90,192,0|e7t8bz,90,192,0|e7t8c0,90,192,1|eim73z,90,192,1|eim740,93,195,0|eqjdrz,93,195,0|eqjds0,90,192,1|f1c9rz,90,192,1|f1c9s0,93,195,0|f99gfz,93,195,0|f99gg0,90,192,1|fkfb3z,90,192,1|fkfb40,93,195,0|frzj3z,93,195,0|frzj40,90,192,1|g35drz,90,192,1|g35ds0,93,195,0|gaplrz,93,195,0|gapls0,90,192,1|glvgfz,90,192,1|glvgg0,93,195,0|gtsn3z,93,195,0|gtsn40,90,192,1|h4lj3z,90,192,1|h4lj40,93,195,0|hciprz,93,195,0|hcips0,90,192,1|hnblrz,90,192,1|hnbls0,93,195,0|hv8sfz,93,195,0|hv8sg0,90,192,1|i6en3z,90,192,1|i6en40,93,195,0|idyv3z,93,195,0|idyv40,90,192,1|ip4prz,90,192,1|ip4ps0,93,195,0|iwoxrz,93,195,0|iwoxs0,90,192,1|j7usfz,90,192,1|j7usg0,93,195,0|jff0fz,93,195,0|jff0g0,90,192,1|jqkv3z,90,192,1|jqkv40,93,195,0|jyi1rz,93,195,0|jyi1s0,90,192,1|k9axrz,90,192,1|k9axs0,93,195,0|kh84fz,93,195,0|kh84g0,90,192,1|ks10fz,90,192,1|ks10g0,93,195,0|kzy73z,93,195,0|kzy740,90,192,1|lb41rz,90,192,1|lb41s0,93,195,0|lio9rz,93,195,0|lio9s0,90,192,0|ne09nz,90,192,0|ne09o0,93,195,0|o4nlrz,93,195,0|o4nls0,90,192,0\",\"Asia/Samarkand|,0,280,0|-nu18eh,105,209,0|-kmr741,105,209,0|-kmr740,92,194,0|5vb0rz,92,194,0|5vb0s0,96,196,1|64ptzz,96,196,1|64pu00,96,196,0|6e2vbz,96,196,0|6e2vc0,96,196,1|6nhrbz,96,196,1|6nhrc0,92,194,0|6wuvfz,92,194,0|6wuvg0,96,196,1|769onz,96,196,1|769oo0,92,194,0|7fonfz,92,194,0|7fong0,96,196,1|7p1ubz,96,196,1|7p1uc0,92,194,0|7yevnz,92,194,0|7yevo0,96,196,1|87rwzz,96,196,1|87rx00,92,194,0|8h4ybz,92,194,0|8h4yc0,96,196,1|8qhznz,96,196,1|8qhzo0,92,194,0|8zv0zz,92,194,0|8zv100,96,196,1|9982bz,96,196,1|9982c0,92,194,0|9il3nz,92,194,0|9il3o0,96,196,1|9ry4zz,96,196,1|9ry500,92,194,0|a1b6bz,92,194,0|a1b6c0,96,196,1|aao7nz,96,196,1|aao7o0,92,194,0|ak18zz,92,194,0|ak1900,96,196,1|atr8zz,96,196,1|atr900,92,194,0|b34abz,92,194,0|b34ac0,96,196,1|bchbnz,96,196,1|bchbo0,92,194,0\",\"Asia/Seoul|,0,281,0|-w8966g,130,242,0|-u9s4y1,130,242,0|-u9s4y0,116,224,0|-couzo1,116,224,0|-couzo0,130,224,0|-b9kp01,130,224,0|-b9kp00,131,195,1|-b486g1,131,195,1|-b486g0,130,224,0|-atu101,130,224,0|-atu100,131,195,1|-aljyg1,131,195,1|-aljyg0,130,224,0|-ab5t01,130,224,0|-ab5t00,131,195,1|-a2tvs1,131,195,1|-a2tvs0,130,224,0|-9ql2c1,130,224,0|-9ql2c0,131,195,1|-9k3t41,131,195,1|-9k3t40,130,224,0|-88kmc1,130,224,0|-88kmc0,130,242,0|-7nhbm1,130,242,0|-7nhbm0,131,248,1|-7gy7q1,131,248,1|-7gy7q0,130,242,0|-73vrm1,130,242,0|-73vrm0,131,248,1|-6x1jq1,131,248,1|-6x1jq0,130,242,0|-6lvma1,130,242,0|-6lvma0,131,248,1|-6eofq1,131,248,1|-6eofq0,130,242,0|-635jm1,130,242,0|-635jm0,131,248,1|-5vyd21,131,248,1|-5vyd20,130,242,0|-5kfgy1,130,242,0|-5kfgy0,131,248,1|-5d8ae1,131,248,1|-5d8ae0,130,242,0|-51pea1,130,242,0|-51pea0,131,248,1|-4ui7q1,131,248,1|-4ui7q0,130,242,0|-4dqfm1,130,242,0|-4dqfm0,130,224,0|920hvz,130,224,0|920hw0,131,195,1|99xojz,131,195,1|99xok0,130,224,0|9kqkjz,130,224,0|9kqkk0,131,195,1|9snr7z,131,195,1|9snr80,130,224,0\",\"Asia/Shanghai|,0,282,0|-100eztj,45,191,0|-qh00w1,45,191,0|-qh00w0,46,224,1|-q87fo1,46,224,1|-q87fo0,45,191,0|-ffvq81,45,191,0|-ffvq80,46,224,1|-f8zno1,46,224,1|-f8zno0,45,191,0|-f148w1,45,191,0|-f148w0,46,224,1|-ep6p01,46,224,1|-ep6p00,45,191,0|-ekjy81,45,191,0|-ekjy80,46,224,1|-cp63o1,46,224,1|-cp63o0,45,191,0|-cc1sw1,45,191,0|-cc1sw0,46,224,1|-c4wh01,46,224,1|-c4wh00,45,191,0|-butfk1,45,191,0|-butfk0,46,224,1|-bkj501,46,224,1|-bkj500,45,191,0|-bb60w1,45,191,0|-bb60w0,46,224,1|-b3aro1,46,224,1|-b3aro0,45,191,0|-ase3k1,45,191,0|-ase3k0,46,224,1|-ar06c1,46,224,1|-ar06c0,45,191,0|8ixjbz,45,191,0|8ixjc0,46,224,1|8prr7z,46,224,1|8prr80,45,191,0|90kpzz,45,191,0|90kq00,46,224,1|98htvz,46,224,1|98htw0,45,191,0|9jnrbz,45,191,0|9jnrc0,46,224,1|9r7wjz,46,224,1|9r7wk0,45,191,0|a2dtzz,45,191,0|a2du00,46,224,1|aaaxvz,46,224,1|aaaxw0,45,191,0|al3wnz,45,191,0|al3wo0,46,224,1|at10jz,46,224,1|at10k0,45,191,0|b3tzbz,45,191,0|b3tzc0,46,224,1|bbr37z,46,224,1|bbr380,45,191,0\",\"Asia/Singapore|,0,262,0|-100ewkd,85,262,0|-xphpwe,85,262,0|-xphpwd,91,193,0|-jb6gs1,91,193,0|-jb6gs0,118,246,1|-hquppd,118,246,1|-hquppc,118,246,0|-esddpd,118,246,0|-esddpc,106,222,0|-ejqa61,106,222,0|-ejqa60,107,224,0|-conl01,107,224,0|-conl00,106,222,0|69g35z,106,222,0|69g360,89,191,0\",\"Asia/Srednekolymsk|,0,283,0|-nu1ogs,93,195,0|-kmrns1,93,195,0|-kmrns0,90,192,0|5vak3z,90,192,0|5vak40,102,200,1|64pdbz,102,200,1|64pdc0,90,192,0|6e2hfz,90,192,0|6e2hg0,102,200,1|6nhanz,102,200,1|6nhao0,90,192,0|6wuerz,90,192,0|6wues0,102,200,1|7697zz,102,200,1|769800,90,192,0|7fo6rz,90,192,0|7fo6s0,102,200,1|7p1dnz,102,200,1|7p1do0,90,192,0|7yeezz,90,192,0|7yef00,102,200,1|87rgbz,102,200,1|87rgc0,90,192,0|8h4hnz,90,192,0|8h4ho0,102,200,1|8qhizz,102,200,1|8qhj00,90,192,0|8zukbz,90,192,0|8zukc0,102,200,1|997lnz,102,200,1|997lo0,90,192,0|9ikmzz,90,192,0|9ikn00,102,200,1|9rxobz,102,200,1|9rxoc0,90,192,0|a1apnz,90,192,0|a1apo0,102,200,1|aanqzz,102,200,1|aanr00,90,192,0|ak0sbz,90,192,0|ak0sc0,102,200,1|atqsbz,102,200,1|atqsc0,90,192,0|b33tnz,90,192,0|b33to0,90,192,1|bcgxrz,90,192,1|bcgxs0,93,195,0|bi8cfz,93,195,0|bi8cg0,90,192,0|bltwbz,90,192,0|bltwc0,102,200,1|bv6xnz,102,200,1|bv6xo0,90,192,0|c4jyzz,90,192,0|c4jz00,102,200,1|cdx0bz,102,200,1|cdx0c0,90,192,0|cna1nz,90,192,0|cna1o0,102,200,1|cwn2zz,102,200,1|cwn300,90,192,0|d604bz,90,192,0|d604c0,102,200,1|dfd5nz,102,200,1|dfd5o0,90,192,0|dp35nz,90,192,0|dp35o0,102,200,1|dzw1nz,102,200,1|dzw1o0,90,192,0|e7t8bz,90,192,0|e7t8c0,102,200,1|eim4bz,102,200,1|eim4c0,90,192,0|eqjazz,90,192,0|eqjb00,102,200,1|f1c6zz,102,200,1|f1c700,90,192,0|f99dnz,90,192,0|f99do0,102,200,1|fkf8bz,102,200,1|fkf8c0,90,192,0|frzgbz,90,192,0|frzgc0,102,200,1|g35azz,102,200,1|g35b00,90,192,0|gapizz,90,192,0|gapj00,102,200,1|glvdnz,102,200,1|glvdo0,90,192,0|gtskbz,90,192,0|gtskc0,102,200,1|h4lgbz,102,200,1|h4lgc0,90,192,0|hcimzz,90,192,0|hcin00,102,200,1|hnbizz,102,200,1|hnbj00,90,192,0|hv8pnz,90,192,0|hv8po0,102,200,1|i6ekbz,102,200,1|i6ekc0,90,192,0|idysbz,90,192,0|idysc0,102,200,1|ip4mzz,102,200,1|ip4n00,90,192,0|iwouzz,90,192,0|iwov00,102,200,1|j7upnz,102,200,1|j7upo0,90,192,0|jfexnz,90,192,0|jfexo0,102,200,1|jqksbz,102,200,1|jqksc0,90,192,0|jyhyzz,90,192,0|jyhz00,102,200,1|k9auzz,102,200,1|k9av00,90,192,0|kh81nz,90,192,0|kh81o0,102,200,1|ks0xnz,102,200,1|ks0xo0,90,192,0|kzy4bz,90,192,0|kzy4c0,102,200,1|lb3yzz,102,200,1|lb3z00,90,192,0|lio6zz,90,192,0|lio700,102,200,0|ne06vz,102,200,0|ne06w0,90,192,0\",\"Asia/Taipei|,0,284,0|-12mch60,45,191,0|-gtzfk1,45,191,0|-gtzfk0,116,224,0|-co6u81,116,224,0|-co6u80,45,191,0|-cc1sw1,45,191,0|-cc1sw0,46,224,1|-c4wh01,46,224,1|-c4wh00,45,191,0|-butfk1,45,191,0|-butfk0,46,224,1|-bkj501,46,224,1|-bkj500,45,191,0|-bb60w1,45,191,0|-bb60w0,46,224,1|-b3aro1,46,224,1|-b3aro0,45,191,0|-ase3k1,45,191,0|-ase3k0,46,224,1|-akiuc1,46,224,1|-akiuc0,45,191,0|-a9m681,45,191,0|-a9m680,46,224,1|-a1qx01,46,224,1|-a1qx00,45,191,0|-9qu8w1,45,191,0|-9qu8w0,46,224,1|-9iyzo1,46,224,1|-9iyzo0,45,191,0|-9b5fk1,45,191,0|-9b5fk0,46,224,1|-8yjt01,46,224,1|-8yjt00,45,191,0|-8qs3k1,45,191,0|-8qs3k0,46,224,1|-8frvo1,46,224,1|-8frvo0,45,191,0|-880681,45,191,0|-880680,46,224,1|-7wzyc1,46,224,1|-7wzyc0,45,191,0|-7p88w1,45,191,0|-7p88w0,46,224,1|-7ftfo1,46,224,1|-7ftfo0,45,191,0|-76egw1,45,191,0|-76egw0,46,224,1|-6wzno1,46,224,1|-6wzno0,45,191,0|-6nmjk1,45,191,0|-6nmjk0,46,224,1|-6e7qc1,46,224,1|-6e7qc0,45,191,0|-64um81,45,191,0|-64um80,46,224,1|-5vft01,46,224,1|-5vft00,45,191,0|-5m2ow1,45,191,0|-5m2ow0,46,224,1|-5cnvo1,46,224,1|-5cnvo0,45,191,0|-503y81,45,191,0|-503y80,46,224,1|-4tu3o1,46,224,1|-4tu3o0,45,191,0|-4hc0w1,45,191,0|-4hc0w0,46,224,1|-4b26c1,46,224,1|-4b26c0,45,191,0|27rlrz,45,191,0|27rls0,46,224,1|2h6ezz,46,224,1|2h6f00,45,191,0|2qjj3z,45,191,0|2qjj40,46,224,1|2zycbz,46,224,1|2zycc0,45,191,0|4ydlrz,45,191,0|4ydls0,46,224,1|533wbz,46,224,1|533wc0,45,191,0\",\"Asia/Tashkent|,0,285,0|-nu18tz,92,194,0|-kmr9w1,92,194,0|-kmr9w0,96,196,0|5vaxzz,96,196,0|5vay00,91,193,1|64pr7z,91,193,1|64pr80,96,196,0|6e2vbz,96,196,0|6e2vc0,91,193,1|6nhojz,91,193,1|6nhok0,96,196,0|6wusnz,96,196,0|6wuso0,91,193,1|769lvz,91,193,1|769lw0,96,196,0|7foknz,96,196,0|7foko0,91,193,1|7p1rjz,91,193,1|7p1rk0,96,196,0|7yesvz,96,196,0|7yesw0,91,193,1|87ru7z,91,193,1|87ru80,96,196,0|8h4vjz,96,196,0|8h4vk0,91,193,1|8qhwvz,91,193,1|8qhww0,96,196,0|8zuy7z,96,196,0|8zuy80,91,193,1|997zjz,91,193,1|997zk0,96,196,0|9il0vz,96,196,0|9il0w0,91,193,1|9ry27z,91,193,1|9ry280,96,196,0|a1b3jz,96,196,0|a1b3k0,91,193,1|aao4vz,91,193,1|aao4w0,96,196,0|ak167z,96,196,0|ak1680,91,193,1|atr67z,91,193,1|atr680,96,196,0|b347jz,96,196,0|b347k0,96,196,1|bchbnz,96,196,1|bchbo0,92,194,0\",\"Asia/Tbilisi|,0,286,0|-1ayyayn,132,286,0|-nu14ao,132,286,0|-nu14an,100,6,0|-6p7kc1,100,6,0|-6p7kc0,105,209,0|5vb3jz,105,209,0|5vb3k0,92,194,1|64pwrz,92,194,1|64pws0,105,209,0|6e30vz,105,209,0|6e30w0,92,194,1|6nhu3z,92,194,1|6nhu40,105,209,0|6wuy7z,105,209,0|6wuy80,92,194,1|769rfz,92,194,1|769rg0,105,209,0|7foq7z,105,209,0|7foq80,92,194,1|7p1x3z,92,194,1|7p1x40,105,209,0|7yeyfz,105,209,0|7yeyg0,92,194,1|87rzrz,92,194,1|87rzs0,105,209,0|8h513z,105,209,0|8h5140,92,194,1|8qi2fz,92,194,1|8qi2g0,105,209,0|8zv3rz,105,209,0|8zv3s0,92,194,1|99853z,92,194,1|998540,105,209,0|9il6fz,105,209,0|9il6g0,92,194,1|9ry7rz,92,194,1|9ry7s0,105,209,0|a1b93z,105,209,0|a1b940,92,194,1|aaoafz,92,194,1|aaoag0,105,209,0|ak1brz,105,209,0|ak1bs0,92,194,1|atrbrz,92,194,1|atrbs0,105,209,0|b34d3z,105,209,0|b34d40,105,209,1|bchh7z,105,209,1|bchh80,100,6,0|bluczz,100,6,0|blud00,105,209,1|bv7bjz,105,209,1|bv7bk0,100,6,0|c4kfnz,100,6,0|c4kfo0,105,209,1|cdxe7z,105,209,1|cdxe80,100,6,0|cnaibz,100,6,0|cnaic0,105,209,1|cwngvz,105,209,1|cwngw0,105,209,0|d60i7z,105,209,0|d60i80,92,194,1|dfdgrz,92,194,1|dfdgs0,105,209,0|dp3jjz,105,209,0|dp3jk0,92,194,1|eimffz,92,194,1|eimfg0,105,209,0|eqjovz,105,209,0|eqjow0,92,194,1|f1ci3z,92,194,1|f1ci40,105,209,0|f99rjz,105,209,0|f99rk0,92,194,1|fkfjfz,92,194,1|fkfjg0,105,209,0|frzu7z,105,209,0|frzu80,92,194,1|g35m3z,92,194,1|g35m40,105,209,0|gapwvz,105,209,0|gapww0,92,194,1|glvorz,92,194,1|glvos0,105,209,0|gtsy7z,105,209,0|gtsy80,92,194,1|h4lrfz,92,194,1|h4lrg0,105,209,0|hcj0vz,105,209,0|hcj0w0,92,194,1|hnbu3z,92,194,1|hnbu40,105,209,0|hv93jz,105,209,0|hv93k0,92,194,1|hzxjfz,92,194,1|hzxjg0,105,209,1|i6f6jz,105,209,1|i6f6k0,100,6,0|idzejz,100,6,0|idzek0,105,209,0\",\"Asia/Tehran|,0,287,0|-s6m6uw,133,287,0|-cixlix,133,287,0|-cixliw,134,288,0|435vlz,134,288,0|435vm0,105,209,0|4ad3jz,105,209,0|4ad3k0,92,194,1|4ldbfz,92,194,1|4ldbg0,105,209,0|4p2q7z,105,209,0|4p2q80,134,288,0|4t529z,134,288,0|4t52a0,124,252,1|52i0tz,124,252,1|52i0u0,134,288,0|5byu9z,134,288,0|5byua0,124,252,1|5lj7hz,124,252,1|5lj7i0,134,288,0|b4tcxz,134,288,0|b4tcy0,124,252,1|bc48tz,124,252,1|bc48u0,134,288,0|blhcxz,134,288,0|blhcy0,124,252,1|buy0tz,124,252,1|buy0u0,134,288,0|c49a9z,134,288,0|c49aa0,124,252,1|cdpy5z,124,252,1|cdpy60,134,288,0|cn17lz,134,288,0|cn17m0,124,252,1|cwhvhz,124,252,1|cwhvi0,134,288,0|d5t4xz,134,288,0|d5t4y0,124,252,1|df9stz,124,252,1|df9su0,134,288,0|dol29z,134,288,0|dol2a0,124,252,1|dy1q5z,124,252,1|dy1q60,134,288,0|e7eu9z,134,288,0|e7eua0,124,252,1|egvi5z,124,252,1|egvi60,134,288,0|eq6rlz,134,288,0|eq6rm0,124,252,1|eznfhz,124,252,1|eznfi0,134,288,0|f8yoxz,134,288,0|f8yoy0,124,252,1|fifctz,124,252,1|fifcu0,134,288,0|frqm9z,134,288,0|frqma0,124,252,1|g17a5z,124,252,1|g17a60,134,288,0|gake9z,134,288,0|gakea0,124,252,1|gk125z,124,252,1|gk1260,134,288,0|gtcblz,134,288,0|gtcbm0,124,252,1|h2szhz,124,252,1|h2szi0,134,288,0|hc48xz,134,288,0|hc48y0,124,252,1|hlkwtz,124,252,1|hlkwu0,134,288,0|huw69z,134,288,0|huw6a0,124,252,1|i4cu5z,124,252,1|i4cu60,134,288,0|idpy9z,134,288,0|idpya0,124,252,1|in6m5z,124,252,1|in6m60,134,288,0|jy1q9z,134,288,0|jy1qa0,124,252,1|k7ie5z,124,252,1|k7ie60,134,288,0|kgvi9z,134,288,0|kgvia0,124,252,1|kqc65z,124,252,1|kqc660,134,288,0|kznflz,134,288,0|kznfm0,124,252,1|l943hz,124,252,1|l943i0,134,288,0|lifcxz,134,288,0|lifcy0,124,252,1|lrw0tz,124,252,1|lrw0u0,134,288,0|m17a9z,134,288,0|m17aa0,124,252,1|many5z,124,252,1|many60,134,288,0|mk129z,134,288,0|mk12a0,124,252,1|mthq5z,124,252,1|mthq60,134,288,0|n2szlz,134,288,0|n2szm0,124,252,1|nc9nhz,124,252,1|nc9ni0,134,288,0|nlkwxz,134,288,0|nlkwy0,124,252,1|nv1ktz,124,252,1|nv1ku0,134,288,0|o4cu9z,134,288,0|o4cua0,124,252,1|odti5z,124,252,1|odti60,134,288,0|on6m9z,134,288,0|on6ma0,124,252,1|owna5z,124,252,1|owna60,134,288,0|p5yjlz,134,288,0|p5yjm0,124,252,1|pff7hz,124,252,1|pff7i0,134,288,0|poqgxz,134,288,0|poqgy0,124,252,1|py74tz,124,252,1|py74u0,134,288,0|q7ie9z,134,288,0|q7iea0,124,252,1|qgz25z,124,252,1|qgz260,134,288,0|qqc69z,134,288,0|qqc6a0,124,252,1|qzsu5z,124,252,1|qzsu60,134,288,0|r943lz,134,288,0|r943m0,124,252,1|rikrhz,124,252,1|rikri0,134,288,0|rrw0xz,134,288,0|rrw0y0,124,252,1|s1cotz,124,252,1|s1cou0,134,288,0|sany9z,134,288,0|sanya0,124,252,1|sk4m5z,124,252,1|sk4m60,134,288,0|sthq9z,134,288,0|sthqa0,124,252,1|t2ye5z,124,252,1|t2ye60,134,288,0|tc9nlz,134,288,0|tc9nm0,124,252,1|tlqbhz,124,252,1|tlqbi0,134,288,0|tv1kxz,134,288,0|tv1ky0,124,252,1|u4i8tz,124,252,1|u4i8u0,134,288,0|udti9z,134,288,0|udtia0,124,252,1|una65z,124,252,1|una660,134,288,0|uwlflz,134,288,0|uwlfm0,124,252,1|v623hz,124,252,1|v623i0,134,288,0|vff7lz,134,288,0|vff7m0,124,252,1|vovvhz,124,252,1|vovvi0,134,288,0|vy74xz,134,288,0|vy74y0,124,252,1|w7nstz,124,252,1|w7nsu0,134,288,0|wgz29z,134,288,0|wgz2a0,124,252,1|wqfq5z,124,252,1|wqfq60,134,288,0|wzqzlz,134,288,0|wzqzm0,124,252,1|x97nhz,124,252,1|x97ni0,134,288,0|xikrlz,134,288,0|xikrm0,124,252,1|xs1fhz,124,252,1|xs1fi0,134,288,0|y1coxz,134,288,0|y1coy0,124,252,1|yatctz,124,252,1|yatcu0,134,288,0|yk4m9z,134,288,0|yk4ma0,124,252,1|ytla5z,124,252,1|ytla60,134,288,0|z2wjlz,134,288,0|z2wjm0,124,252,1|zcd7hz,124,252,1|zcd7i0,134,288,0\",\"Asia/Thimphu|,0,289,0|-bojclo,108,228,0|99fa1z,108,228,0|99fa20,96,196,0\",\"Asia/Tokyo|,0,290,0|-16snno0,116,224,0|-bb4901,116,224,0|-bb4900,135,195,1|-b49yc1,135,195,1|-b49yc0,116,224,0|-atu101,116,224,0|-atu100,135,195,1|-aljvo1,135,195,1|-aljvo0,116,224,0|-a9b501,116,224,0|-a9b500,135,195,1|-a2tt01,135,195,1|-a2tt00,116,224,0|-9ql2c1,116,224,0|-9ql2c0,135,195,1|-9k3qc1,135,195,1|-9k3qc0,116,224,0\",\"Asia/Tomsk|,0,291,0|-q3zbqf,96,196,0|-kmrco1,96,196,0|-kmrco0,91,193,0|5vav7z,91,193,0|5vav80,89,191,1|64pofz,89,191,1|64pog0,91,193,0|6e2sjz,91,193,0|6e2sk0,89,191,1|6nhlrz,89,191,1|6nhls0,91,193,0|6wupvz,91,193,0|6wupw0,89,191,1|769j3z,89,191,1|769j40,91,193,0|7fohvz,91,193,0|7fohw0,89,191,1|7p1orz,89,191,1|7p1os0,91,193,0|7yeq3z,91,193,0|7yeq40,89,191,1|87rrfz,89,191,1|87rrg0,91,193,0|8h4srz,91,193,0|8h4ss0,89,191,1|8qhu3z,89,191,1|8qhu40,91,193,0|8zuvfz,91,193,0|8zuvg0,89,191,1|997wrz,89,191,1|997ws0,91,193,0|9iky3z,91,193,0|9iky40,89,191,1|9rxzfz,89,191,1|9rxzg0,91,193,0|a1b0rz,91,193,0|a1b0s0,89,191,1|aao23z,89,191,1|aao240,91,193,0|ak13fz,91,193,0|ak13g0,89,191,1|atr3fz,89,191,1|atr3g0,91,193,0|b344rz,91,193,0|b344s0,91,193,1|bch8vz,91,193,1|bch8w0,96,196,0|bi8njz,96,196,0|bi8nk0,91,193,0|blu7fz,91,193,0|blu7g0,89,191,1|bv78rz,89,191,1|bv78s0,91,193,0|c4ka3z,91,193,0|c4ka40,89,191,1|cdxbfz,89,191,1|cdxbg0,91,193,0|cnacrz,91,193,0|cnacs0,89,191,1|cwne3z,89,191,1|cwne40,91,193,0|d60ffz,91,193,0|d60fg0,89,191,1|dfdgrz,89,191,1|dfdgs0,91,193,0|dp3grz,91,193,0|dp3gs0,89,191,1|dzwcrz,89,191,1|dzwcs0,91,193,0|e7tjfz,91,193,0|e7tjg0,89,191,1|eimffz,89,191,1|eimfg0,91,193,0|eqjm3z,91,193,0|eqjm40,89,191,1|f1ci3z,89,191,1|f1ci40,91,193,0|f99orz,91,193,0|f99os0,89,191,1|fkfjfz,89,191,1|fkfjg0,91,193,0|frzrfz,91,193,0|frzrg0,89,191,1|g35m3z,89,191,1|g35m40,91,193,0|gapu3z,91,193,0|gapu40,89,191,1|glvorz,89,191,1|glvos0,91,193,0|gtsvfz,91,193,0|gtsvg0,89,191,1|gvea3z,89,191,1|gvea40,91,193,1|h4lu7z,91,193,1|h4lu80,96,196,0|hcj0vz,96,196,0|hcj0w0,91,193,1|hnbwvz,91,193,1|hnbww0,96,196,0|hv93jz,96,196,0|hv93k0,91,193,1|i6ey7z,91,193,1|i6ey80,96,196,0|idz67z,96,196,0|idz680,91,193,1|ip50vz,91,193,1|ip50w0,96,196,0|iwp8vz,96,196,0|iwp8w0,91,193,1|j7v3jz,91,193,1|j7v3k0,96,196,0|jffbjz,96,196,0|jffbk0,91,193,1|jql67z,91,193,1|jql680,96,196,0|jyicvz,96,196,0|jyicw0,91,193,1|k9b8vz,91,193,1|k9b8w0,96,196,0|kh8fjz,96,196,0|kh8fk0,91,193,1|ks1bjz,91,193,1|ks1bk0,96,196,0|kzyi7z,96,196,0|kzyi80,91,193,1|lb4cvz,91,193,1|lb4cw0,96,196,0|liokvz,96,196,0|liokw0,91,193,0|ne0krz,91,193,0|ne0ks0,96,196,0|o7wkvz,96,196,0|o7wkw0,91,193,0\",\"Asia/Ulaanbaatar|,0,292,0|-xmcrsk,91,193,0|46akjz,91,193,0|46akk0,89,191,0|6wun3z,89,191,0|6wun40,107,224,1|769gbz,107,224,1|769gc0,89,191,0|7fof3z,89,191,0|7fof40,107,224,1|7p1dnz,107,224,1|7p1do0,89,191,0|7yehrz,89,191,0|7yehs0,107,224,1|87rgbz,107,224,1|87rgc0,89,191,0|8h4kfz,89,191,0|8h4kg0,107,224,1|8qhizz,107,224,1|8qhj00,89,191,0|8zun3z,89,191,0|8zun40,107,224,1|997lnz,107,224,1|997lo0,89,191,0|9ikprz,89,191,0|9ikps0,107,224,1|9rxobz,107,224,1|9rxoc0,89,191,0|a1asfz,89,191,0|a1asg0,107,224,1|aanqzz,107,224,1|aanr00,89,191,0|ak0v3z,89,191,0|ak0v40,107,224,1|atqsbz,107,224,1|atqsc0,89,191,0|b33wfz,89,191,0|b33wg0,107,224,1|bcguzz,107,224,1|bcgv00,89,191,0|bltz3z,89,191,0|bltz40,107,224,1|bv6xnz,107,224,1|bv6xo0,89,191,0|c4k1rz,89,191,0|c4k1s0,107,224,1|cdx0bz,107,224,1|cdx0c0,89,191,0|cna4fz,89,191,0|cna4g0,107,224,1|cwn2zz,107,224,1|cwn300,89,191,0|d6073z,89,191,0|d60740,107,224,1|dfd5nz,107,224,1|dfd5o0,89,191,0|dp38fz,89,191,0|dp38g0,107,224,1|dyg6zz,107,224,1|dyg700,89,191,0|e7tb3z,89,191,0|e7tb40,107,224,1|eh69nz,107,224,1|eh69o0,89,191,0|eqjdrz,89,191,0|eqjds0,107,224,1|ezwcbz,107,224,1|ezwcc0,89,191,0|gcgpzz,89,191,0|gcgq00,107,224,1|gkdtvz,107,224,1|gkdtw0,89,191,0|gtqxzz,89,191,0|gtqy00,107,224,1|h33wjz,107,224,1|h33wk0,89,191,0|hch0nz,89,191,0|hch0o0,107,224,1|hltz7z,107,224,1|hltz80,89,191,0|hv73bz,89,191,0|hv73c0,107,224,1|i4k1vz,107,224,1|i4k1w0,89,191,0|idx5zz,89,191,0|idx600,107,224,1|ina4jz,107,224,1|ina4k0,89,191,0|iwn8nz,89,191,0|iwn8o0,107,224,1|j6d5vz,107,224,1|j6d5w0,89,191,0|nlvtzz,89,191,0|nlvu00,107,224,1|nv8mzz,107,224,1|nv8n00,89,191,0|o4lwnz,89,191,0|o4lwo0,107,224,1|odypnz,107,224,1|odypo0,89,191,0\",\"Asia/Urumqi|,0,293,0|-lx5pjw,96,196,0\",\"Asia/Ust-Nera|,0,294,0|-q4cl6u,89,191,0|-kmri81,89,191,0|-kmri80,107,224,0|5vapnz,107,224,0|5vapo0,102,200,1|64pdbz,102,200,1|64pdc0,90,192,0|6e2hfz,90,192,0|6e2hg0,102,200,1|6nhanz,102,200,1|6nhao0,90,192,0|6wuerz,90,192,0|6wues0,102,200,1|7697zz,102,200,1|769800,90,192,0|7fo6rz,90,192,0|7fo6s0,102,200,1|7p1dnz,102,200,1|7p1do0,90,192,0|7yeezz,90,192,0|7yef00,102,200,1|87rgbz,102,200,1|87rgc0,90,192,0|8h4hnz,90,192,0|8h4ho0,102,200,1|8qhizz,102,200,1|8qhj00,90,192,0|8zukbz,90,192,0|8zukc0,102,200,1|997lnz,102,200,1|997lo0,90,192,0|9ikmzz,90,192,0|9ikn00,102,200,1|9rxobz,102,200,1|9rxoc0,90,192,0|a1apnz,90,192,0|a1apo0,102,200,1|aanqzz,102,200,1|aanr00,90,192,0|ak0sbz,90,192,0|ak0sc0,102,200,1|atqsbz,102,200,1|atqsc0,90,192,0|b33tnz,90,192,0|b33to0,90,192,1|bcgxrz,90,192,1|bcgxs0,93,195,0|bi8cfz,93,195,0|bi8cg0,90,192,0|bltwbz,90,192,0|bltwc0,102,200,1|bv6xnz,102,200,1|bv6xo0,90,192,0|c4jyzz,90,192,0|c4jz00,102,200,1|cdx0bz,102,200,1|cdx0c0,90,192,0|cna1nz,90,192,0|cna1o0,102,200,1|cwn2zz,102,200,1|cwn300,90,192,0|d604bz,90,192,0|d604c0,102,200,1|dfd5nz,102,200,1|dfd5o0,90,192,0|dp35nz,90,192,0|dp35o0,102,200,1|dzw1nz,102,200,1|dzw1o0,90,192,0|e7t8bz,90,192,0|e7t8c0,102,200,1|eim4bz,102,200,1|eim4c0,90,192,0|eqjazz,90,192,0|eqjb00,102,200,1|f1c6zz,102,200,1|f1c700,90,192,0|f99dnz,90,192,0|f99do0,102,200,1|fkf8bz,102,200,1|fkf8c0,90,192,0|frzgbz,90,192,0|frzgc0,102,200,1|g35azz,102,200,1|g35b00,90,192,0|gapizz,90,192,0|gapj00,102,200,1|glvdnz,102,200,1|glvdo0,90,192,0|gtskbz,90,192,0|gtskc0,102,200,1|h4lgbz,102,200,1|h4lgc0,90,192,0|hcimzz,90,192,0|hcin00,102,200,1|hnbizz,102,200,1|hnbj00,90,192,0|hv8pnz,90,192,0|hv8po0,102,200,1|i6ekbz,102,200,1|i6ekc0,90,192,0|idysbz,90,192,0|idysc0,102,200,1|ip4mzz,102,200,1|ip4n00,90,192,0|iwouzz,90,192,0|iwov00,102,200,1|j7upnz,102,200,1|j7upo0,90,192,0|jfexnz,90,192,0|jfexo0,102,200,1|jqksbz,102,200,1|jqksc0,90,192,0|jyhyzz,90,192,0|jyhz00,102,200,1|k9auzz,102,200,1|k9av00,90,192,0|kh81nz,90,192,0|kh81o0,102,200,1|ks0xnz,102,200,1|ks0xo0,90,192,0|kzy4bz,90,192,0|kzy4c0,102,200,1|lb3yzz,102,200,1|lb3z00,90,192,0|lio6zz,90,192,0|lio700,102,200,0|lrerzz,102,200,0|lres00,90,192,0|ne09nz,90,192,0|ne09o0,93,195,0\",\"Asia/Vientiane|,0,217,0|-1ayyla4,53,217,0|-pysda5,53,217,0|-pysda4,91,193,0\",\"Asia/Vladivostok|,0,295,0|-oligf7,107,224,0|-kmrl01,107,224,0|-kmrl00,93,195,0|5vamvz,93,195,0|5vamw0,90,192,1|64pg3z,90,192,1|64pg40,93,195,0|6e2k7z,93,195,0|6e2k80,90,192,1|6nhdfz,90,192,1|6nhdg0,93,195,0|6wuhjz,93,195,0|6wuhk0,90,192,1|769arz,90,192,1|769as0,93,195,0|7fo9jz,93,195,0|7fo9k0,90,192,1|7p1gfz,90,192,1|7p1gg0,93,195,0|7yehrz,93,195,0|7yehs0,90,192,1|87rj3z,90,192,1|87rj40,93,195,0|8h4kfz,93,195,0|8h4kg0,90,192,1|8qhlrz,90,192,1|8qhls0,93,195,0|8zun3z,93,195,0|8zun40,90,192,1|997ofz,90,192,1|997og0,93,195,0|9ikprz,93,195,0|9ikps0,90,192,1|9rxr3z,90,192,1|9rxr40,93,195,0|a1asfz,93,195,0|a1asg0,90,192,1|aantrz,90,192,1|aants0,93,195,0|ak0v3z,93,195,0|ak0v40,90,192,1|atqv3z,90,192,1|atqv40,93,195,0|b33wfz,93,195,0|b33wg0,93,195,1|bch0jz,93,195,1|bch0k0,107,224,0|bi8f7z,107,224,0|bi8f80,93,195,0|bltz3z,93,195,0|bltz40,90,192,1|bv70fz,90,192,1|bv70g0,93,195,0|c4k1rz,93,195,0|c4k1s0,90,192,1|cdx33z,90,192,1|cdx340,93,195,0|cna4fz,93,195,0|cna4g0,90,192,1|cwn5rz,90,192,1|cwn5s0,93,195,0|d6073z,93,195,0|d60740,90,192,1|dfd8fz,90,192,1|dfd8g0,93,195,0|dp38fz,93,195,0|dp38g0,90,192,1|dzw4fz,90,192,1|dzw4g0,93,195,0|e7tb3z,93,195,0|e7tb40,90,192,1|eim73z,90,192,1|eim740,93,195,0|eqjdrz,93,195,0|eqjds0,90,192,1|f1c9rz,90,192,1|f1c9s0,93,195,0|f99gfz,93,195,0|f99gg0,90,192,1|fkfb3z,90,192,1|fkfb40,93,195,0|frzj3z,93,195,0|frzj40,90,192,1|g35drz,90,192,1|g35ds0,93,195,0|gaplrz,93,195,0|gapls0,90,192,1|glvgfz,90,192,1|glvgg0,93,195,0|gtsn3z,93,195,0|gtsn40,90,192,1|h4lj3z,90,192,1|h4lj40,93,195,0|hciprz,93,195,0|hcips0,90,192,1|hnblrz,90,192,1|hnbls0,93,195,0|hv8sfz,93,195,0|hv8sg0,90,192,1|i6en3z,90,192,1|i6en40,93,195,0|idyv3z,93,195,0|idyv40,90,192,1|ip4prz,90,192,1|ip4ps0,93,195,0|iwoxrz,93,195,0|iwoxs0,90,192,1|j7usfz,90,192,1|j7usg0,93,195,0|jff0fz,93,195,0|jff0g0,90,192,1|jqkv3z,90,192,1|jqkv40,93,195,0|jyi1rz,93,195,0|jyi1s0,90,192,1|k9axrz,90,192,1|k9axs0,93,195,0|kh84fz,93,195,0|kh84g0,90,192,1|ks10fz,90,192,1|ks10g0,93,195,0|kzy73z,93,195,0|kzy740,90,192,1|lb41rz,90,192,1|lb41s0,93,195,0|lio9rz,93,195,0|lio9s0,90,192,0|ne09nz,90,192,0|ne09o0,93,195,0\",\"Asia/Yakutsk|,0,296,0|-q4cioy,89,191,0|-kmri81,89,191,0|-kmri80,107,224,0|5vapnz,107,224,0|5vapo0,93,195,1|64pivz,93,195,1|64piw0,107,224,0|6e2mzz,107,224,0|6e2n00,93,195,1|6nhg7z,93,195,1|6nhg80,107,224,0|6wukbz,107,224,0|6wukc0,93,195,1|769djz,93,195,1|769dk0,107,224,0|7focbz,107,224,0|7focc0,93,195,1|7p1j7z,93,195,1|7p1j80,107,224,0|7yekjz,107,224,0|7yekk0,93,195,1|87rlvz,93,195,1|87rlw0,107,224,0|8h4n7z,107,224,0|8h4n80,93,195,1|8qhojz,93,195,1|8qhok0,107,224,0|8zupvz,107,224,0|8zupw0,93,195,1|997r7z,93,195,1|997r80,107,224,0|9iksjz,107,224,0|9iksk0,93,195,1|9rxtvz,93,195,1|9rxtw0,107,224,0|a1av7z,107,224,0|a1av80,93,195,1|aanwjz,93,195,1|aanwk0,107,224,0|ak0xvz,107,224,0|ak0xw0,93,195,1|atqxvz,93,195,1|atqxw0,107,224,0|b33z7z,107,224,0|b33z80,107,224,1|bch3bz,107,224,1|bch3c0,89,191,0|bi8hzz,89,191,0|bi8i00,107,224,0|blu1vz,107,224,0|blu1w0,93,195,1|bv737z,93,195,1|bv7380,107,224,0|c4k4jz,107,224,0|c4k4k0,93,195,1|cdx5vz,93,195,1|cdx5w0,107,224,0|cna77z,107,224,0|cna780,93,195,1|cwn8jz,93,195,1|cwn8k0,107,224,0|d609vz,107,224,0|d609w0,93,195,1|dfdb7z,93,195,1|dfdb80,107,224,0|dp3b7z,107,224,0|dp3b80,93,195,1|dzw77z,93,195,1|dzw780,107,224,0|e7tdvz,107,224,0|e7tdw0,93,195,1|eim9vz,93,195,1|eim9w0,107,224,0|eqjgjz,107,224,0|eqjgk0,93,195,1|f1ccjz,93,195,1|f1cck0,107,224,0|f99j7z,107,224,0|f99j80,93,195,1|fkfdvz,93,195,1|fkfdw0,107,224,0|frzlvz,107,224,0|frzlw0,93,195,1|g35gjz,93,195,1|g35gk0,107,224,0|gapojz,107,224,0|gapok0,93,195,1|glvj7z,93,195,1|glvj80,107,224,0|gtspvz,107,224,0|gtspw0,93,195,1|h4llvz,93,195,1|h4llw0,107,224,0|hcisjz,107,224,0|hcisk0,93,195,1|hnbojz,93,195,1|hnbok0,107,224,0|hv8v7z,107,224,0|hv8v80,93,195,1|i6epvz,93,195,1|i6epw0,107,224,0|idyxvz,107,224,0|idyxw0,93,195,1|ip4sjz,93,195,1|ip4sk0,107,224,0|iwp0jz,107,224,0|iwp0k0,93,195,1|j7uv7z,93,195,1|j7uv80,107,224,0|jff37z,107,224,0|jff380,93,195,1|jqkxvz,93,195,1|jqkxw0,107,224,0|jyi4jz,107,224,0|jyi4k0,93,195,1|k9b0jz,93,195,1|k9b0k0,107,224,0|kh877z,107,224,0|kh8780,93,195,1|ks137z,93,195,1|ks1380,107,224,0|kzy9vz,107,224,0|kzy9w0,93,195,1|lb44jz,93,195,1|lb44k0,107,224,0|liocjz,107,224,0|liock0,93,195,0|ne0cfz,93,195,0|ne0cg0,107,224,0\",\"Asia/Yangon|,0,297,0|-1ayykhb,136,297,0|-q3gv5c,136,297,0|-q3gv5b,109,229,0|-efx621,109,229,0|-efx620,107,224,0|-cvg101,107,224,0|-cvg100,109,229,0\",\"Asia/Yekaterinburg|,0,298,0|-rx5hw9,7,299,0|-qc75z6,7,299,0|-qc75z5,105,209,0|-kmr741,105,209,0|-kmr740,92,194,0|5vb0rz,92,194,0|5vb0s0,96,196,1|64ptzz,96,196,1|64pu00,92,194,0|6e2y3z,92,194,0|6e2y40,96,196,1|6nhrbz,96,196,1|6nhrc0,92,194,0|6wuvfz,92,194,0|6wuvg0,96,196,1|769onz,96,196,1|769oo0,92,194,0|7fonfz,92,194,0|7fong0,96,196,1|7p1ubz,96,196,1|7p1uc0,92,194,0|7yevnz,92,194,0|7yevo0,96,196,1|87rwzz,96,196,1|87rx00,92,194,0|8h4ybz,92,194,0|8h4yc0,96,196,1|8qhznz,96,196,1|8qhzo0,92,194,0|8zv0zz,92,194,0|8zv100,96,196,1|9982bz,96,196,1|9982c0,92,194,0|9il3nz,92,194,0|9il3o0,96,196,1|9ry4zz,96,196,1|9ry500,92,194,0|a1b6bz,92,194,0|a1b6c0,96,196,1|aao7nz,96,196,1|aao7o0,92,194,0|ak18zz,92,194,0|ak1900,96,196,1|atr8zz,96,196,1|atr900,92,194,0|b34abz,92,194,0|b34ac0,92,194,1|bchefz,92,194,1|bcheg0,105,209,0|bi8t3z,105,209,0|bi8t40,92,194,0|bluczz,92,194,0|blud00,96,196,1|bv7ebz,96,196,1|bv7ec0,92,194,0|c4kfnz,92,194,0|c4kfo0,96,196,1|cdxgzz,96,196,1|cdxh00,92,194,0|cnaibz,92,194,0|cnaic0,96,196,1|cwnjnz,96,196,1|cwnjo0,92,194,0|d60kzz,92,194,0|d60l00,96,196,1|dfdmbz,96,196,1|dfdmc0,92,194,0|dp3mbz,92,194,0|dp3mc0,96,196,1|dzwibz,96,196,1|dzwic0,92,194,0|e7tozz,92,194,0|e7tp00,96,196,1|eimkzz,96,196,1|eiml00,92,194,0|eqjrnz,92,194,0|eqjro0,96,196,1|f1cnnz,96,196,1|f1cno0,92,194,0|f99ubz,92,194,0|f99uc0,96,196,1|fkfozz,96,196,1|fkfp00,92,194,0|frzwzz,92,194,0|frzx00,96,196,1|g35rnz,96,196,1|g35ro0,92,194,0|gapznz,92,194,0|gapzo0,96,196,1|glvubz,96,196,1|glvuc0,92,194,0|gtt0zz,92,194,0|gtt100,96,196,1|h4lwzz,96,196,1|h4lx00,92,194,0|hcj3nz,92,194,0|hcj3o0,96,196,1|hnbznz,96,196,1|hnbzo0,92,194,0|hv96bz,92,194,0|hv96c0,96,196,1|i6f0zz,96,196,1|i6f100,92,194,0|idz8zz,92,194,0|idz900,96,196,1|ip53nz,96,196,1|ip53o0,92,194,0|iwpbnz,92,194,0|iwpbo0,96,196,1|j7v6bz,96,196,1|j7v6c0,92,194,0|jffebz,92,194,0|jffec0,96,196,1|jql8zz,96,196,1|jql900,92,194,0|jyifnz,92,194,0|jyifo0,96,196,1|k9bbnz,96,196,1|k9bbo0,92,194,0|kh8ibz,92,194,0|kh8ic0,96,196,1|ks1ebz,96,196,1|ks1ec0,92,194,0|kzykzz,92,194,0|kzyl00,96,196,1|lb4fnz,96,196,1|lb4fo0,92,194,0|lionnz,92,194,0|liono0,96,196,0|ne0njz,96,196,0|ne0nk0,92,194,0\",\"Asia/Yerevan|,0,300,0|-nu148o,100,6,0|-6p7kc1,100,6,0|-6p7kc0,105,209,0|5vb3jz,105,209,0|5vb3k0,92,194,1|64pwrz,92,194,1|64pws0,105,209,0|6e30vz,105,209,0|6e30w0,92,194,1|6nhu3z,92,194,1|6nhu40,105,209,0|6wuy7z,105,209,0|6wuy80,92,194,1|769rfz,92,194,1|769rg0,105,209,0|7foq7z,105,209,0|7foq80,92,194,1|7p1x3z,92,194,1|7p1x40,105,209,0|7yeyfz,105,209,0|7yeyg0,92,194,1|87rzrz,92,194,1|87rzs0,105,209,0|8h513z,105,209,0|8h5140,92,194,1|8qi2fz,92,194,1|8qi2g0,105,209,0|8zv3rz,105,209,0|8zv3s0,92,194,1|99853z,92,194,1|998540,105,209,0|9il6fz,105,209,0|9il6g0,92,194,1|9ry7rz,92,194,1|9ry7s0,105,209,0|a1b93z,105,209,0|a1b940,92,194,1|aaoafz,92,194,1|aaoag0,105,209,0|ak1brz,105,209,0|ak1bs0,92,194,1|atrbrz,92,194,1|atrbs0,105,209,0|b34d3z,105,209,0|b34d40,105,209,1|bchh7z,105,209,1|bchh80,100,6,0|bluijz,100,6,0|bluik0,105,209,1|bv7jvz,105,209,1|bv7jw0,100,6,0|c4kl7z,100,6,0|c4kl80,105,209,1|cdxmjz,105,209,1|cdxmk0,100,6,0|cnanvz,100,6,0|cnanw0,105,209,1|cwnp7z,105,209,1|cwnp80,100,6,0|d60qjz,100,6,0|d60qk0,105,209,1|dfdrvz,105,209,1|dfdrw0,105,209,0|e7trrz,105,209,0|e7trs0,92,194,1|eimnrz,92,194,1|eimns0,105,209,0|eqjufz,105,209,0|eqjug0,92,194,1|f1cqfz,92,194,1|f1cqg0,105,209,0|f99x3z,105,209,0|f99x40,92,194,1|fkfrrz,92,194,1|fkfrs0,105,209,0|frzzrz,105,209,0|frzzs0,92,194,1|g35ufz,92,194,1|g35ug0,105,209,0|gaq2fz,105,209,0|gaq2g0,92,194,1|glvx3z,92,194,1|glvx40,105,209,0|gtt3rz,105,209,0|gtt3s0,92,194,1|h4lzrz,92,194,1|h4lzs0,105,209,0|hcj6fz,105,209,0|hcj6g0,92,194,1|hnc2fz,92,194,1|hnc2g0,105,209,0|hv993z,105,209,0|hv9940,92,194,1|i6f3rz,92,194,1|i6f3s0,105,209,0|idzbrz,105,209,0|idzbs0,92,194,1|ip56fz,92,194,1|ip56g0,105,209,0|iwpefz,105,209,0|iwpeg0,92,194,1|j7v93z,92,194,1|j7v940,105,209,0|jffh3z,105,209,0|jffh40,92,194,1|jqlbrz,92,194,1|jqlbs0,105,209,0|jyiifz,105,209,0|jyiig0,92,194,1|k9befz,92,194,1|k9beg0,105,209,0|kh8l3z,105,209,0|kh8l40,92,194,1|ks1h3z,92,194,1|ks1h40,105,209,0|kzynrz,105,209,0|kzyns0,92,194,1|lb4ifz,92,194,1|lb4ig0,105,209,0|lioqfz,105,209,0|lioqg0,92,194,1|ltul3z,92,194,1|ltul40,105,209,0\",\"Atlantic/Azores|,0,301,0|-18vsdww,77,302,0|-u9rbs1,77,302,0|-u9rbs0,40,45,0|-rxwvw1,40,45,0|-rxwvw0,13,15,1|-rqwyg1,13,15,1|-rqwyg0,40,45,0|-rkqt81,40,45,0|-rkqt80,13,15,1|-r90l81,13,15,1|-r90l80,40,45,0|-r1x181,40,45,0|-r1x180,13,15,1|-qq8nw1,13,15,1|-qq8nw0,40,45,0|-qj6yk1,40,45,0|-qj6yk0,13,15,1|-q7gqk1,13,15,1|-q7gqk0,40,45,0|-q0d6k1,40,45,0|-q0d6k0,13,15,1|-pomyk1,13,15,1|-pomyk0,40,45,0|-phl981,40,45,0|-phl980,13,15,1|-p5v181,13,15,1|-p5v180,40,45,0|-nusl81,40,45,0|-nusl80,13,15,1|-nlhek1,13,15,1|-nlhek0,40,45,0|-mt6vw1,40,45,0|-mt6vw0,13,15,1|-mkjrw1,13,15,1|-mkjrw0,40,45,0|-matrw1,40,45,0|-matrw0,13,15,1|-m1tp81,13,15,1|-m1tp80,40,45,0|-lrqqk1,40,45,0|-lrqqk0,13,15,1|-liqnw1,13,15,1|-liqnw0,40,45,0|-l8np81,40,45,0|-l8np80,13,15,1|-l00l81,13,15,1|-l00l80,40,45,0|-k77jw1,40,45,0|-k77jw0,13,15,1|-jykfw1,13,15,1|-jykfw0,40,45,0|-jp7ek1,40,45,0|-jp7ek0,13,15,1|-jfud81,13,15,1|-jfud80,40,45,0|-ineak1,40,45,0|-ineak0,13,15,1|-ie1981,13,15,1|-ie1980,40,45,0|-i516k1,40,45,0|-i516k0,13,15,1|-hvb6k1,13,15,1|-hvb6k0,40,45,0|-hl87w1,40,45,0|-hl87w0,13,15,1|-hcl3w1,13,15,1|-hcl3w0,40,45,0|-h382k1,40,45,0|-h382k0,13,15,1|-gtv181,13,15,1|-gtv180,40,45,0|-gkuyk1,40,45,0|-gkuyk0,13,15,1|-gb4yk1,13,15,1|-gb4yk0,40,45,0|-g11zw1,40,45,0|-g11zw0,13,15,1|-fpw581,13,15,1|-fpw580,40,45,0|-fkunw1,40,45,0|-fkunw0,13,15,1|-f9buk1,13,15,1|-f9buk0,40,45,0|-ezyt81,40,45,0|-ezyt80,13,15,1|-eqjx81,13,15,1|-eqjx80,40,45,0|-eibmk1,40,45,0|-eibmk0,13,15,1|-eg5xc1,13,15,1|-eg5xc0,17,1,1|-eaeio1,17,1,1|-eaeio0,13,15,1|-e6st81,13,15,1|-e6st80,40,45,0|-dzljw1,40,45,0|-dzljw0,13,15,1|-dxstc1,13,15,1|-dxstc0,17,1,1|-dqyio1,17,1,1|-dqyio0,13,15,1|-dnprw1,13,15,1|-dnprw0,40,45,0|-dgvh81,40,45,0|-dgvh80,13,15,1|-deps01,13,15,1|-deps00,17,1,1|-d88g01,17,1,1|-d88g00,13,15,1|-d4zp81,13,15,1|-d4zp80,40,45,0|-cy5ek1,40,45,0|-cy5ek0,13,15,1|-cvzpc1,13,15,1|-cvzpc0,17,1,1|-cpidc1,17,1,1|-cpidc0,13,15,1|-cm9mk1,13,15,1|-cm9mk0,40,45,0|-cdzh81,40,45,0|-cdzh80,13,15,1|-c4mfw1,13,15,1|-c4mfw0,40,45,0|-bv9681,40,45,0|-bv9680,13,15,1|-blw4w1,13,15,1|-blw4w0,40,45,0|-bcj3k1,40,45,0|-bcj3k0,13,15,1|-b36281,13,15,1|-b36280,40,45,0|-att0w1,40,45,0|-att0w0,13,15,1|-akfzk1,13,15,1|-akfzk0,40,45,0|-9scvk1,40,45,0|-9scvk0,13,15,1|-9imvk1,13,15,1|-9imvk0,40,45,0|-999u81,40,45,0|-999u80,13,15,1|-8zwsw1,13,15,1|-8zwsw0,40,45,0|-8qjrk1,40,45,0|-8qjrk0,13,15,1|-8h6q81,13,15,1|-8h6q80,40,45,0|-87tow1,40,45,0|-87tow0,13,15,1|-7ygnk1,13,15,1|-7ygnk0,40,45,0|-7p3m81,40,45,0|-7p3m80,13,15,1|-7fqkw1,13,15,1|-7fqkw0,40,45,0|-76djk1,40,45,0|-76djk0,13,15,1|-6wnjk1,13,15,1|-6wnjk0,40,45,0|-6nai81,40,45,0|-6nai80,13,15,1|-6dxgw1,13,15,1|-6dxgw0,40,45,0|-64kfk1,40,45,0|-64kfk0,13,15,1|-5v7e81,13,15,1|-5v7e80,40,45,0|-5lucw1,40,45,0|-5lucw0,13,15,1|-5chbk1,13,15,1|-5chbk0,40,45,0|-534a81,40,45,0|-534a80,13,15,1|-4tr8w1,13,15,1|-4tr8w0,40,45,0|-4ke7k1,40,45,0|-4ke7k0,13,15,1|-4b1681,13,15,1|-4b1680,40,45,0|-41o4w1,40,45,0|-41o4w0,13,15,1|-3ry4w1,13,15,1|-3ry4w0,40,45,0|-3il3k1,40,45,0|-3il3k0,13,15,1|-398281,13,15,1|-398280,40,45,0|-2zv0w1,40,45,0|-2zv0w0,13,15,1|-2qhzk1,13,15,1|-2qhzk0,40,45,0|-2h4y81,40,45,0|-2h4y80,13,15,1|-27rww1,13,15,1|-27rww0,40,45,0|-1yevk1,40,45,0|-1yevk0,13,15,0|3rwo3z,13,15,0|3rwo40,17,1,1|419pfz,17,1,1|419pg0,13,15,0|4azpfz,13,15,0|4azpg0,17,1,1|4kcqrz,17,1,1|4kcqs0,13,15,0|4tps3z,13,15,0|4tps40,17,1,1|532w7z,17,1,1|532w80,13,15,0|5cfurz,13,15,0|5cfus0,17,1,1|5lsyvz,17,1,1|5lsyw0,13,15,0|5v607z,13,15,0|5v6080,17,1,1|64j1jz,17,1,1|64j1k0,13,15,0|6dw2vz,13,15,0|6dw2w0,17,1,1|6n947z,17,1,1|6n9480,13,15,0|6wm8bz,13,15,0|6wm8c0,17,1,1|75z6vz,17,1,1|75z6w0,13,15,0|7fc87z,13,15,0|7fc880,17,1,1|7p287z,17,1,1|7p2880,13,15,0|7yf9jz,13,15,0|7yf9k0,17,1,1|87savz,17,1,1|87saw0,13,15,0|8h5c7z,13,15,0|8h5c80,17,1,1|8qidjz,17,1,1|8qidk0,13,15,0|8zvevz,13,15,0|8zvew0,17,1,1|998g7z,17,1,1|998g80,13,15,0|9ilhjz,13,15,0|9ilhk0,17,1,1|9ryivz,17,1,1|9ryiw0,13,15,0|a1bk7z,13,15,0|a1bk80,17,1,1|aaoljz,17,1,1|aaolk0,13,15,0|ak1mvz,13,15,0|ak1mw0,17,1,1|atrmvz,17,1,1|atrmw0,13,15,0|b34o7z,13,15,0|b34o80,17,1,1|bchpjz,17,1,1|bchpk0,13,15,0|bluqvz,13,15,0|bluqw0,17,1,1|bv7s7z,17,1,1|bv7s80,8,1,0|c4kqrz,8,1,0|c4kqs0,17,1,1|cdxs3z,17,1,1|cdxs40,13,15,0|cnatfz,13,15,0|cnatg0,17,1,1|cwnurz,17,1,1|cwnus0,13,15,0|d60w3z,13,15,0|d60w40,17,1,1|dfdxfz,17,1,1|dfdxg0,13,15,0|dp3xfz,13,15,0|dp3xg0,17,1,1|dzwtfz,17,1,1|dzwtg0,13,15,0|e7u03z,13,15,0|e7u040,17,1,1|eimw3z,17,1,1|eimw40,13,15,0|eqk2rz,13,15,0|eqk2s0,17,1,1|f1cyrz,17,1,1|f1cys0,13,15,0|f9a5fz,13,15,0|f9a5g0,17,1,1|fkg03z,17,1,1|fkg040,13,15,0|fs083z,13,15,0|fs0840,17,1,1|g362rz,17,1,1|g362s0,13,15,0|gaqarz,13,15,0|gaqas0,17,1,1|glw5fz,17,1,1|glw5g0,13,15,0|gttc3z,13,15,0|gttc40,17,1,1|h4m83z,17,1,1|h4m840,13,15,0|hcjerz,13,15,0|hcjes0,17,1,1|hncarz,17,1,1|hncas0,13,15,0|hv9hfz,13,15,0|hv9hg0,17,1,1|i6fc3z,17,1,1|i6fc40,13,15,0|idzk3z,13,15,0|idzk40,17,1,1|ip5erz,17,1,1|ip5es0,13,15,0|iwpmrz,13,15,0|iwpms0,17,1,1|j7vhfz,17,1,1|j7vhg0,13,15,0|jffpfz,13,15,0|jffpg0,17,1,1|jqlk3z,17,1,1|jqlk40,13,15,0|jyiqrz,13,15,0|jyiqs0,17,1,1|k9bmrz,17,1,1|k9bms0,13,15,0|kh8tfz,13,15,0|kh8tg0,17,1,1|ks1pfz,17,1,1|ks1pg0,13,15,0|kzyw3z,13,15,0|kzyw40,17,1,1|lb4qrz,17,1,1|lb4qs0,13,15,0|lioyrz,13,15,0|lioys0,17,1,1|ltutfz,17,1,1|ltutg0,13,15,0|m1f1fz,13,15,0|m1f1g0,17,1,1|mckw3z,17,1,1|mckw40,13,15,0|mki2rz,13,15,0|mki2s0,17,1,1|mvayrz,17,1,1|mvays0,13,15,0|n385fz,13,15,0|n385g0,17,1,1|ne11fz,17,1,1|ne11g0,13,15,0|nly83z,13,15,0|nly840,17,1,1|nwr43z,17,1,1|nwr440,13,15,0|o4oarz,13,15,0|o4oas0,17,1,1|ofu5fz,17,1,1|ofu5g0,13,15,0|onedfz,13,15,0|onedg0,17,1,1|oyk83z,17,1,1|oyk840,13,15,0|p64g3z,13,15,0|p64g40,17,1,1|phaarz,17,1,1|phaas0,13,15,0|pp7hfz,13,15,0|pp7hg0,17,1,1|q00dfz,17,1,1|q00dg0,13,15,0|q7xk3z,13,15,0|q7xk40,17,1,1|qiqg3z,17,1,1|qiqg40,13,15,0|qqnmrz,13,15,0|qqnms0,17,1,1|r1thfz,17,1,1|r1thg0,13,15,0|r9dpfz,13,15,0|r9dpg0,17,1,1|rkjk3z,17,1,1|rkjk40,13,15,0|rs3s3z,13,15,0|rs3s40,17,1,1|s39mrz,17,1,1|s39ms0,13,15,0|sb6tfz,13,15,0|sb6tg0,17,1,1|slzpfz,17,1,1|slzpg0,13,15,0|stww3z,13,15,0|stww40,17,1,1|t4ps3z,17,1,1|t4ps40,13,15,0|tcmyrz,13,15,0|tcmys0,17,1,1|tnfurz,17,1,1|tnfus0,13,15,0|tvd1fz,13,15,0|tvd1g0,17,1,1|u6iw3z,17,1,1|u6iw40,13,15,0|ue343z,13,15,0|ue3440,17,1,1|up8yrz,17,1,1|up8ys0,13,15,0|uwt6rz,13,15,0|uwt6s0,17,1,1|v7z1fz,17,1,1|v7z1g0,13,15,0|vfw83z,13,15,0|vfw840,17,1,1|vqp43z,17,1,1|vqp440,13,15,0|vymarz,13,15,0|vymas0,17,1,1|w9f6rz,17,1,1|w9f6s0,13,15,0|whcdfz,13,15,0|whcdg0,17,1,1|wsi83z,17,1,1|wsi840,13,15,0|x02g3z,13,15,0|x02g40,17,1,1|xb8arz,17,1,1|xb8as0,13,15,0|xisirz,13,15,0|xisis0,17,1,1|xtydfz,17,1,1|xtydg0,13,15,0|y1ilfz,13,15,0|y1ilg0,17,1,1|ycog3z,17,1,1|ycog40,13,15,0|yklmrz,13,15,0|yklms0,17,1,1|yveirz,17,1,1|yveis0,13,15,0|z3bpfz,13,15,0|z3bpg0,17,1,1|ze4lfz,17,1,1|ze4lg0,13,15,0\",\"Atlantic/Bermuda|,0,303,0|-15r0xbu,53,303,0|-rivvzv,53,303,0|-rivvzu,27,304,1|-r9qc3v,27,304,1|-r9qc3u,53,303,0|-qzp5bv,53,303,0|-qzp5bu,27,304,1|-qrq6rv,27,304,1|-qrq6ru,53,303,0|-kvj2fv,53,303,0|-kvj2fu,32,42,0|-eljwo1,32,42,0|-eljwo0,54,44,1|-e75gs1,54,44,1|-e75gs0,32,42,0|-dz87c1,32,42,0|-dz87c0,54,44,1|-dnpgs1,54,44,1|-dnpgs0,32,42,0|-dgv3c1,32,42,0|-dgv3c0,54,44,1|-d4mfg1,54,44,1|-d4mfg0,32,42,0|-cy50o1,32,42,0|-cy50o0,54,44,1|-clwcs1,54,44,1|-clwcs0,32,42,0|-bt38o1,32,42,0|-bt38o0,54,44,1|-bmyy41,54,44,1|-bmyy40,32,42,0|-ba07c1,32,42,0|-ba07c0,54,44,1|-b4lu41,54,44,1|-b4lu40,32,42,0|-ara4o1,32,42,0|-ara4o0,54,44,1|-alvrg1,54,44,1|-alvrg0,32,42,0|-a873c1,32,42,0|-a873c0,54,44,1|-a35os1,54,44,1|-a35os0,32,42,0|-9ph0o1,32,42,0|-9ph0o0,54,44,1|-9kfm41,54,44,1|-9kfm40,32,42,0|-96qy01,32,42,0|-96qy00,54,44,1|-91cks1,54,44,1|-91cks0,32,42,0|-73hoo1,32,42,0|-73hoo0,54,44,1|-6vkks1,54,44,1|-6vkks0,32,42,0|296onz,32,42,0|296oo0,54,44,1|2ijn7z,54,44,1|2ijn80,32,42,0|2rwrbz,32,42,0|2rwrc0,54,44,1|319pvz,54,44,1|319pw0,32,42,0|3amtzz,32,42,0|3amu00,54,44,1|3kcr7z,54,44,1|3kcr80,32,42,0|3tcwnz,32,42,0|3tcwo0,54,44,1|432tvz,54,44,1|432tw0,32,42,0|4cfxzz,32,42,0|4cfy00,54,44,1|4lswjz,54,44,1|4lswk0,32,42,0|4v60nz,32,42,0|4v60o0,54,44,1|54iz7z,54,44,1|54iz80,32,42,0|5dw3bz,32,42,0|5dw3c0,54,44,1|5n91vz,54,44,1|5n91w0,32,42,0|5wm5zz,32,42,0|5wm600,54,44,1|65z4jz,54,44,1|65z4k0,32,42,0|6fc8nz,32,42,0|6fc8o0,54,44,1|6p25vz,54,44,1|6p25w0,32,42,0|6y2bbz,32,42,0|6y2bc0,54,44,1|77s8jz,54,44,1|77s8k0,32,42,0|7h5cnz,32,42,0|7h5co0,54,44,1|7qib7z,54,44,1|7qib80,32,42,0|7zvfbz,32,42,0|7zvfc0,54,44,1|898dvz,54,44,1|898dw0,32,42,0|8ilhzz,32,42,0|8ili00,54,44,1|8rygjz,54,44,1|8rygk0,32,42,0|908onz,32,42,0|908oo0,54,44,1|9aoj7z,54,44,1|9aoj80,32,42,0|9iyrbz,32,42,0|9iyrc0,54,44,1|9trkjz,54,44,1|9trkk0,32,42,0|a1otzz,32,42,0|a1ou00,54,44,1|achn7z,54,44,1|achn80,32,42,0|akewnz,32,42,0|akewo0,54,44,1|av7pvz,54,44,1|av7pw0,32,42,0|b3hxzz,32,42,0|b3hy00,54,44,1|bdxsjz,54,44,1|bdxsk0,32,42,0|bm80nz,32,42,0|bm80o0,54,44,1|bwnv7z,54,44,1|bwnv80,32,42,0|c4y3bz,32,42,0|c4y3c0,54,44,1|cfqwjz,54,44,1|cfqwk0,32,42,0|cno5zz,32,42,0|cno600,54,44,1|cygz7z,54,44,1|cygz80,32,42,0|d6e8nz,32,42,0|d6e8o0,54,44,1|dh71vz,54,44,1|dh71w0,32,42,0|dph9zz,32,42,0|dpha00,54,44,1|dzx4jz,54,44,1|dzx4k0,32,42,0|e87cnz,32,42,0|e87co0,54,44,1|ein77z,54,44,1|ein780,32,42,0|eqxfbz,32,42,0|eqxfc0,54,44,1|f1d9vz,54,44,1|f1d9w0,32,42,0|f9nhzz,32,42,0|f9ni00,54,44,1|fkgb7z,54,44,1|fkgb80,32,42,0|fsdknz,32,42,0|fsdko0,54,44,1|g36dvz,54,44,1|g36dw0,32,42,0|gb3nbz,32,42,0|gb3nc0,54,44,1|glwgjz,54,44,1|glwgk0,32,42,0|gu6onz,32,42,0|gu6oo0,54,44,1|h4mj7z,54,44,1|h4mj80,32,42,0|hcwrbz,32,42,0|hcwrc0,54,44,1|hnclvz,54,44,1|hnclw0,32,42,0|hvmtzz,32,42,0|hvmu00,54,44,1|i6fn7z,54,44,1|i6fn80,32,42,0|iecwnz,32,42,0|iecwo0,54,44,1|ip5pvz,54,44,1|ip5pw0,32,42,0|ix2zbz,32,42,0|ix2zc0,54,44,1|j7vsjz,54,44,1|j7vsk0,32,42,0|jeq5zz,32,42,0|jeq600,54,44,1|jqytvz,54,44,1|jqytw0,32,42,0|jxg8nz,32,42,0|jxg8o0,54,44,1|k9owjz,54,44,1|k9owk0,32,42,0|kg6bbz,32,42,0|kg6bc0,54,44,1|ksez7z,54,44,1|ksez80,32,42,0|kz9cnz,32,42,0|kz9co0,54,44,1|lbi0jz,54,44,1|lbi0k0,32,42,0|lhzfbz,32,42,0|lhzfc0,54,44,1|lu837z,54,44,1|lu8380,32,42,0|m0phzz,32,42,0|m0pi00,54,44,1|mcy5vz,54,44,1|mcy5w0,32,42,0|mjfknz,32,42,0|mjfko0,54,44,1|mvo8jz,54,44,1|mvo8k0,32,42,0|n25nbz,32,42,0|n25nc0,54,44,1|neeb7z,54,44,1|neeb80,32,42,0|nkvpzz,32,42,0|nkvq00,54,44,1|nx4dvz,54,44,1|nx4dw0,32,42,0|o3yrbz,32,42,0|o3yrc0,54,44,1|og7f7z,54,44,1|og7f80,32,42,0|omotzz,32,42,0|omou00,54,44,1|oyxhvz,54,44,1|oyxhw0,32,42,0|p5ewnz,32,42,0|p5ewo0,54,44,1|phnkjz,54,44,1|phnkk0,32,42,0|po4zbz,32,42,0|po4zc0,54,44,1|q0dn7z,54,44,1|q0dn80,32,42,0|q6v1zz,32,42,0|q6v200,54,44,1|qj3pvz,54,44,1|qj3pw0,32,42,0|qpy3bz,32,42,0|qpy3c0,54,44,1|r26r7z,54,44,1|r26r80,32,42,0|r8o5zz,32,42,0|r8o600,54,44,1|rkwtvz,54,44,1|rkwtw0,32,42,0|rre8nz,32,42,0|rre8o0,54,44,1|s3mwjz,54,44,1|s3mwk0,32,42,0|sa4bbz,32,42,0|sa4bc0,54,44,1|smcz7z,54,44,1|smcz80,32,42,0|ssudzz,32,42,0|ssue00,54,44,1|t531vz,54,44,1|t531w0,32,42,0|tbkgnz,32,42,0|tbkgo0,54,44,1|tnt4jz,54,44,1|tnt4k0,32,42,0|tunhzz,32,42,0|tuni00,54,44,1|u6w5vz,54,44,1|u6w5w0,32,42,0|uddknz,32,42,0|uddko0,54,44,1|upm8jz,54,44,1|upm8k0,32,42,0|uw3nbz,32,42,0|uw3nc0,54,44,1|v8cb7z,54,44,1|v8cb80,32,42,0|vetpzz,32,42,0|vetq00,54,44,1|vr2dvz,54,44,1|vr2dw0,32,42,0|vxjsnz,32,42,0|vxjso0,54,44,1|w9sgjz,54,44,1|w9sgk0,32,42,0|wgmtzz,32,42,0|wgmu00,54,44,1|wsvhvz,54,44,1|wsvhw0,32,42,0|wzcwnz,32,42,0|wzcwo0,54,44,1|xblkjz,54,44,1|xblkk0,32,42,0|xi2zbz,32,42,0|xi2zc0,54,44,1|xubn7z,54,44,1|xubn80,32,42,0|y0t1zz,32,42,0|y0t200,54,44,1|yd1pvz,54,44,1|yd1pw0,32,42,0|yjj4nz,32,42,0|yjj4o0,54,44,1|yvrsjz,54,44,1|yvrsk0,32,42,0|z297bz,32,42,0|z297c0,54,44,1|zehv7z,54,44,1|zehv80,32,42,0\",\"Atlantic/Canary|,0,305,0|-oytbtc,13,15,0|-c4xh41,13,15,0|-c4xh40,8,1,0|5csqnz,8,1,0|5csqo0,9,10,1|5lsw3z,9,10,1|5lsw40,8,1,0|5v5xfz,8,1,0|5v5xg0,9,10,1|64iyrz,9,10,1|64iys0,8,1,0|6dw03z,8,1,0|6dw040,9,10,1|6n91fz,9,10,1|6n91g0,8,1,0|6wm2rz,8,1,0|6wm2s0,9,10,1|75z43z,9,10,1|75z440,8,1,0|7fc5fz,8,1,0|7fc5g0,9,10,1|7p25fz,9,10,1|7p25g0,8,1,0|7yf6rz,8,1,0|7yf6s0,9,10,1|87s83z,9,10,1|87s840,8,1,0|8h59fz,8,1,0|8h59g0,9,10,1|8qiarz,9,10,1|8qias0,8,1,0|8zvc3z,8,1,0|8zvc40,9,10,1|998dfz,9,10,1|998dg0,8,1,0|9ilerz,8,1,0|9iles0,9,10,1|9ryg3z,9,10,1|9ryg40,8,1,0|a1bhfz,8,1,0|a1bhg0,9,10,1|aaoirz,9,10,1|aaois0,8,1,0|ak1k3z,8,1,0|ak1k40,9,10,1|atrk3z,9,10,1|atrk40,8,1,0|b34lfz,8,1,0|b34lg0,9,10,1|bchmrz,9,10,1|bchms0,8,1,0|bluo3z,8,1,0|bluo40,9,10,1|bv7pfz,9,10,1|bv7pg0,8,1,0|c4kqrz,8,1,0|c4kqs0,9,10,1|cdxs3z,9,10,1|cdxs40,8,1,0|cnatfz,8,1,0|cnatg0,9,10,1|cwnurz,9,10,1|cwnus0,8,1,0|d60w3z,8,1,0|d60w40,9,10,1|dfdxfz,9,10,1|dfdxg0,8,1,0|dp3xfz,8,1,0|dp3xg0,9,10,1|dzwtfz,9,10,1|dzwtg0,8,1,0|e7u03z,8,1,0|e7u040,9,10,1|eimw3z,9,10,1|eimw40,8,1,0|eqk2rz,8,1,0|eqk2s0,9,10,1|f1cyrz,9,10,1|f1cys0,8,1,0|f9a5fz,8,1,0|f9a5g0,9,10,1|fkg03z,9,10,1|fkg040,8,1,0|fs083z,8,1,0|fs0840,9,10,1|g362rz,9,10,1|g362s0,8,1,0|gaqarz,8,1,0|gaqas0,9,10,1|glw5fz,9,10,1|glw5g0,8,1,0|gttc3z,8,1,0|gttc40,9,10,1|h4m83z,9,10,1|h4m840,8,1,0|hcjerz,8,1,0|hcjes0,9,10,1|hncarz,9,10,1|hncas0,8,1,0|hv9hfz,8,1,0|hv9hg0,9,10,1|i6fc3z,9,10,1|i6fc40,8,1,0|idzk3z,8,1,0|idzk40,9,10,1|ip5erz,9,10,1|ip5es0,8,1,0|iwpmrz,8,1,0|iwpms0,9,10,1|j7vhfz,9,10,1|j7vhg0,8,1,0|jffpfz,8,1,0|jffpg0,9,10,1|jqlk3z,9,10,1|jqlk40,8,1,0|jyiqrz,8,1,0|jyiqs0,9,10,1|k9bmrz,9,10,1|k9bms0,8,1,0|kh8tfz,8,1,0|kh8tg0,9,10,1|ks1pfz,9,10,1|ks1pg0,8,1,0|kzyw3z,8,1,0|kzyw40,9,10,1|lb4qrz,9,10,1|lb4qs0,8,1,0|lioyrz,8,1,0|lioys0,9,10,1|ltutfz,9,10,1|ltutg0,8,1,0|m1f1fz,8,1,0|m1f1g0,9,10,1|mckw3z,9,10,1|mckw40,8,1,0|mki2rz,8,1,0|mki2s0,9,10,1|mvayrz,9,10,1|mvays0,8,1,0|n385fz,8,1,0|n385g0,9,10,1|ne11fz,9,10,1|ne11g0,8,1,0|nly83z,8,1,0|nly840,9,10,1|nwr43z,9,10,1|nwr440,8,1,0|o4oarz,8,1,0|o4oas0,9,10,1|ofu5fz,9,10,1|ofu5g0,8,1,0|onedfz,8,1,0|onedg0,9,10,1|oyk83z,9,10,1|oyk840,8,1,0|p64g3z,8,1,0|p64g40,9,10,1|phaarz,9,10,1|phaas0,8,1,0|pp7hfz,8,1,0|pp7hg0,9,10,1|q00dfz,9,10,1|q00dg0,8,1,0|q7xk3z,8,1,0|q7xk40,9,10,1|qiqg3z,9,10,1|qiqg40,8,1,0|qqnmrz,8,1,0|qqnms0,9,10,1|r1thfz,9,10,1|r1thg0,8,1,0|r9dpfz,8,1,0|r9dpg0,9,10,1|rkjk3z,9,10,1|rkjk40,8,1,0|rs3s3z,8,1,0|rs3s40,9,10,1|s39mrz,9,10,1|s39ms0,8,1,0|sb6tfz,8,1,0|sb6tg0,9,10,1|slzpfz,9,10,1|slzpg0,8,1,0|stww3z,8,1,0|stww40,9,10,1|t4ps3z,9,10,1|t4ps40,8,1,0|tcmyrz,8,1,0|tcmys0,9,10,1|tnfurz,9,10,1|tnfus0,8,1,0|tvd1fz,8,1,0|tvd1g0,9,10,1|u6iw3z,9,10,1|u6iw40,8,1,0|ue343z,8,1,0|ue3440,9,10,1|up8yrz,9,10,1|up8ys0,8,1,0|uwt6rz,8,1,0|uwt6s0,9,10,1|v7z1fz,9,10,1|v7z1g0,8,1,0|vfw83z,8,1,0|vfw840,9,10,1|vqp43z,9,10,1|vqp440,8,1,0|vymarz,8,1,0|vymas0,9,10,1|w9f6rz,9,10,1|w9f6s0,8,1,0|whcdfz,8,1,0|whcdg0,9,10,1|wsi83z,9,10,1|wsi840,8,1,0|x02g3z,8,1,0|x02g40,9,10,1|xb8arz,9,10,1|xb8as0,8,1,0|xisirz,8,1,0|xisis0,9,10,1|xtydfz,9,10,1|xtydg0,8,1,0|y1ilfz,8,1,0|y1ilg0,9,10,1|ycog3z,9,10,1|ycog40,8,1,0|yklmrz,8,1,0|yklms0,9,10,1|yveirz,9,10,1|yveis0,8,1,0|z3bpfz,8,1,0|z3bpg0,9,10,1|ze4lfz,9,10,1|ze4lg0,8,1,0\",\"Atlantic/Cape_Verde|,0,306,0|-u9rbs0,40,45,0|-e9kqg1,40,45,0|-e9kqg0,13,15,1|-cmxp81,13,15,1|-cmxp80,40,45,0|32t73z,40,45,0|32t740,13,15,0\",\"Atlantic/Faroe|,0,307,0|-wcehew,8,1,0|5v5xfz,8,1,0|5v5xg0,9,10,1|64iyrz,9,10,1|64iys0,8,1,0|6dw03z,8,1,0|6dw040,9,10,1|6n91fz,9,10,1|6n91g0,8,1,0|6wm2rz,8,1,0|6wm2s0,9,10,1|75z43z,9,10,1|75z440,8,1,0|7fc5fz,8,1,0|7fc5g0,9,10,1|7p25fz,9,10,1|7p25g0,8,1,0|7yf6rz,8,1,0|7yf6s0,9,10,1|87s83z,9,10,1|87s840,8,1,0|8h59fz,8,1,0|8h59g0,9,10,1|8qiarz,9,10,1|8qias0,8,1,0|8zvc3z,8,1,0|8zvc40,9,10,1|998dfz,9,10,1|998dg0,8,1,0|9ilerz,8,1,0|9iles0,9,10,1|9ryg3z,9,10,1|9ryg40,8,1,0|a1bhfz,8,1,0|a1bhg0,9,10,1|aaoirz,9,10,1|aaois0,8,1,0|ak1k3z,8,1,0|ak1k40,9,10,1|atrk3z,9,10,1|atrk40,8,1,0|b34lfz,8,1,0|b34lg0,9,10,1|bchmrz,9,10,1|bchms0,8,1,0|bluo3z,8,1,0|bluo40,9,10,1|bv7pfz,9,10,1|bv7pg0,8,1,0|c4kqrz,8,1,0|c4kqs0,9,10,1|cdxs3z,9,10,1|cdxs40,8,1,0|cnatfz,8,1,0|cnatg0,9,10,1|cwnurz,9,10,1|cwnus0,8,1,0|d60w3z,8,1,0|d60w40,9,10,1|dfdxfz,9,10,1|dfdxg0,8,1,0|dp3xfz,8,1,0|dp3xg0,9,10,1|dzwtfz,9,10,1|dzwtg0,8,1,0|e7u03z,8,1,0|e7u040,9,10,1|eimw3z,9,10,1|eimw40,8,1,0|eqk2rz,8,1,0|eqk2s0,9,10,1|f1cyrz,9,10,1|f1cys0,8,1,0|f9a5fz,8,1,0|f9a5g0,9,10,1|fkg03z,9,10,1|fkg040,8,1,0|fs083z,8,1,0|fs0840,9,10,1|g362rz,9,10,1|g362s0,8,1,0|gaqarz,8,1,0|gaqas0,9,10,1|glw5fz,9,10,1|glw5g0,8,1,0|gttc3z,8,1,0|gttc40,9,10,1|h4m83z,9,10,1|h4m840,8,1,0|hcjerz,8,1,0|hcjes0,9,10,1|hncarz,9,10,1|hncas0,8,1,0|hv9hfz,8,1,0|hv9hg0,9,10,1|i6fc3z,9,10,1|i6fc40,8,1,0|idzk3z,8,1,0|idzk40,9,10,1|ip5erz,9,10,1|ip5es0,8,1,0|iwpmrz,8,1,0|iwpms0,9,10,1|j7vhfz,9,10,1|j7vhg0,8,1,0|jffpfz,8,1,0|jffpg0,9,10,1|jqlk3z,9,10,1|jqlk40,8,1,0|jyiqrz,8,1,0|jyiqs0,9,10,1|k9bmrz,9,10,1|k9bms0,8,1,0|kh8tfz,8,1,0|kh8tg0,9,10,1|ks1pfz,9,10,1|ks1pg0,8,1,0|kzyw3z,8,1,0|kzyw40,9,10,1|lb4qrz,9,10,1|lb4qs0,8,1,0|lioyrz,8,1,0|lioys0,9,10,1|ltutfz,9,10,1|ltutg0,8,1,0|m1f1fz,8,1,0|m1f1g0,9,10,1|mckw3z,9,10,1|mckw40,8,1,0|mki2rz,8,1,0|mki2s0,9,10,1|mvayrz,9,10,1|mvays0,8,1,0|n385fz,8,1,0|n385g0,9,10,1|ne11fz,9,10,1|ne11g0,8,1,0|nly83z,8,1,0|nly840,9,10,1|nwr43z,9,10,1|nwr440,8,1,0|o4oarz,8,1,0|o4oas0,9,10,1|ofu5fz,9,10,1|ofu5g0,8,1,0|onedfz,8,1,0|onedg0,9,10,1|oyk83z,9,10,1|oyk840,8,1,0|p64g3z,8,1,0|p64g40,9,10,1|phaarz,9,10,1|phaas0,8,1,0|pp7hfz,8,1,0|pp7hg0,9,10,1|q00dfz,9,10,1|q00dg0,8,1,0|q7xk3z,8,1,0|q7xk40,9,10,1|qiqg3z,9,10,1|qiqg40,8,1,0|qqnmrz,8,1,0|qqnms0,9,10,1|r1thfz,9,10,1|r1thg0,8,1,0|r9dpfz,8,1,0|r9dpg0,9,10,1|rkjk3z,9,10,1|rkjk40,8,1,0|rs3s3z,8,1,0|rs3s40,9,10,1|s39mrz,9,10,1|s39ms0,8,1,0|sb6tfz,8,1,0|sb6tg0,9,10,1|slzpfz,9,10,1|slzpg0,8,1,0|stww3z,8,1,0|stww40,9,10,1|t4ps3z,9,10,1|t4ps40,8,1,0|tcmyrz,8,1,0|tcmys0,9,10,1|tnfurz,9,10,1|tnfus0,8,1,0|tvd1fz,8,1,0|tvd1g0,9,10,1|u6iw3z,9,10,1|u6iw40,8,1,0|ue343z,8,1,0|ue3440,9,10,1|up8yrz,9,10,1|up8ys0,8,1,0|uwt6rz,8,1,0|uwt6s0,9,10,1|v7z1fz,9,10,1|v7z1g0,8,1,0|vfw83z,8,1,0|vfw840,9,10,1|vqp43z,9,10,1|vqp440,8,1,0|vymarz,8,1,0|vymas0,9,10,1|w9f6rz,9,10,1|w9f6s0,8,1,0|whcdfz,8,1,0|whcdg0,9,10,1|wsi83z,9,10,1|wsi840,8,1,0|x02g3z,8,1,0|x02g40,9,10,1|xb8arz,9,10,1|xb8as0,8,1,0|xisirz,8,1,0|xisis0,9,10,1|xtydfz,9,10,1|xtydg0,8,1,0|y1ilfz,8,1,0|y1ilg0,9,10,1|ycog3z,9,10,1|ycog40,8,1,0|yklmrz,8,1,0|yklms0,9,10,1|yveirz,9,10,1|yveis0,8,1,0|z3bpfz,8,1,0|z3bpg0,9,10,1|ze4lfz,9,10,1|ze4lg0,8,1,0\",\"Atlantic/Madeira|,0,308,0|-18vsfjc,137,308,0|-u9rek1,137,308,0|-u9rek0,13,15,0|-rxwyo1,13,15,0|-rxwyo0,17,1,1|-rqx181,17,1,1|-rqx180,13,15,0|-rkqw01,13,15,0|-rkqw00,17,1,1|-r90o01,17,1,1|-r90o00,13,15,0|-r1x401,13,15,0|-r1x400,17,1,1|-qq8qo1,17,1,1|-qq8qo0,13,15,0|-qj71c1,13,15,0|-qj71c0,17,1,1|-q7gtc1,17,1,1|-q7gtc0,13,15,0|-q0d9c1,13,15,0|-q0d9c0,17,1,1|-pon1c1,17,1,1|-pon1c0,13,15,0|-phlc01,13,15,0|-phlc00,17,1,1|-p5v401,17,1,1|-p5v400,13,15,0|-nuso01,13,15,0|-nuso00,17,1,1|-nlhhc1,17,1,1|-nlhhc0,13,15,0|-mt6yo1,13,15,0|-mt6yo0,17,1,1|-mkjuo1,17,1,1|-mkjuo0,13,15,0|-matuo1,13,15,0|-matuo0,17,1,1|-m1ts01,17,1,1|-m1ts00,13,15,0|-lrqtc1,13,15,0|-lrqtc0,17,1,1|-liqqo1,17,1,1|-liqqo0,13,15,0|-l8ns01,13,15,0|-l8ns00,17,1,1|-l00o01,17,1,1|-l00o00,13,15,0|-k77mo1,13,15,0|-k77mo0,17,1,1|-jykio1,17,1,1|-jykio0,13,15,0|-jp7hc1,13,15,0|-jp7hc0,17,1,1|-jfug01,17,1,1|-jfug00,13,15,0|-inedc1,13,15,0|-inedc0,17,1,1|-ie1c01,17,1,1|-ie1c00,13,15,0|-i519c1,13,15,0|-i519c0,17,1,1|-hvb9c1,17,1,1|-hvb9c0,13,15,0|-hl8ao1,13,15,0|-hl8ao0,17,1,1|-hcl6o1,17,1,1|-hcl6o0,13,15,0|-h385c1,13,15,0|-h385c0,17,1,1|-gtv401,17,1,1|-gtv400,13,15,0|-gkv1c1,13,15,0|-gkv1c0,17,1,1|-gb51c1,17,1,1|-gb51c0,13,15,0|-g122o1,13,15,0|-g122o0,17,1,1|-fpw801,17,1,1|-fpw800,13,15,0|-fkuqo1,13,15,0|-fkuqo0,17,1,1|-f9bxc1,17,1,1|-f9bxc0,13,15,0|-ezyw01,13,15,0|-ezyw00,17,1,1|-eqk001,17,1,1|-eqk000,13,15,0|-eibpc1,13,15,0|-eibpc0,17,1,1|-eg6041,17,1,1|-eg6040,18,10,1|-eaelg1,18,10,1|-eaelg0,17,1,1|-e6sw01,17,1,1|-e6sw00,13,15,0|-dzlmo1,13,15,0|-dzlmo0,17,1,1|-dxsw41,17,1,1|-dxsw40,18,10,1|-dqylg1,18,10,1|-dqylg0,17,1,1|-dnpuo1,17,1,1|-dnpuo0,13,15,0|-dgvk01,13,15,0|-dgvk00,17,1,1|-depus1,17,1,1|-depus0,18,10,1|-d88is1,18,10,1|-d88is0,17,1,1|-d4zs01,17,1,1|-d4zs00,13,15,0|-cy5hc1,13,15,0|-cy5hc0,17,1,1|-cvzs41,17,1,1|-cvzs40,18,10,1|-cpig41,18,10,1|-cpig40,17,1,1|-cm9pc1,17,1,1|-cm9pc0,13,15,0|-cdzk01,13,15,0|-cdzk00,17,1,1|-c4mio1,17,1,1|-c4mio0,13,15,0|-bv9901,13,15,0|-bv9900,17,1,1|-blw7o1,17,1,1|-blw7o0,13,15,0|-bcj6c1,13,15,0|-bcj6c0,17,1,1|-b36501,17,1,1|-b36500,13,15,0|-att3o1,13,15,0|-att3o0,17,1,1|-akg2c1,17,1,1|-akg2c0,13,15,0|-9scyc1,13,15,0|-9scyc0,17,1,1|-9imyc1,17,1,1|-9imyc0,13,15,0|-999x01,13,15,0|-999x00,17,1,1|-8zwvo1,17,1,1|-8zwvo0,13,15,0|-8qjuc1,13,15,0|-8qjuc0,17,1,1|-8h6t01,17,1,1|-8h6t00,13,15,0|-87tro1,13,15,0|-87tro0,17,1,1|-7ygqc1,17,1,1|-7ygqc0,13,15,0|-7p3p01,13,15,0|-7p3p00,17,1,1|-7fqno1,17,1,1|-7fqno0,13,15,0|-76dmc1,13,15,0|-76dmc0,17,1,1|-6wnmc1,17,1,1|-6wnmc0,13,15,0|-6nal01,13,15,0|-6nal00,17,1,1|-6dxjo1,17,1,1|-6dxjo0,13,15,0|-64kic1,13,15,0|-64kic0,17,1,1|-5v7h01,17,1,1|-5v7h00,13,15,0|-5lufo1,13,15,0|-5lufo0,17,1,1|-5chec1,17,1,1|-5chec0,13,15,0|-534d01,13,15,0|-534d00,17,1,1|-4trbo1,17,1,1|-4trbo0,13,15,0|-4keac1,13,15,0|-4keac0,17,1,1|-4b1901,17,1,1|-4b1900,13,15,0|-41o7o1,13,15,0|-41o7o0,17,1,1|-3ry7o1,17,1,1|-3ry7o0,13,15,0|-3il6c1,13,15,0|-3il6c0,17,1,1|-398501,17,1,1|-398500,13,15,0|-2zv3o1,13,15,0|-2zv3o0,17,1,1|-2qi2c1,17,1,1|-2qi2c0,13,15,0|-2h5101,13,15,0|-2h5100,17,1,1|-27rzo1,17,1,1|-27rzo0,13,15,0|-1yeyc1,13,15,0|-1yeyc0,8,1,0|3rwlbz,8,1,0|3rwlc0,9,10,1|419mnz,9,10,1|419mo0,8,1,0|4azmnz,8,1,0|4azmo0,9,10,1|4kcnzz,9,10,1|4kco00,8,1,0|4tppbz,8,1,0|4tppc0,9,10,1|532tfz,9,10,1|532tg0,8,1,0|5cfrzz,8,1,0|5cfs00,9,10,1|5lsw3z,9,10,1|5lsw40,8,1,0|5v5xfz,8,1,0|5v5xg0,9,10,1|64iyrz,9,10,1|64iys0,8,1,0|6dw03z,8,1,0|6dw040,9,10,1|6n91fz,9,10,1|6n91g0,8,1,0|6wm5jz,8,1,0|6wm5k0,9,10,1|75z43z,9,10,1|75z440,8,1,0|7fc5fz,8,1,0|7fc5g0,9,10,1|7p25fz,9,10,1|7p25g0,8,1,0|7yf6rz,8,1,0|7yf6s0,9,10,1|87s83z,9,10,1|87s840,8,1,0|8h59fz,8,1,0|8h59g0,9,10,1|8qiarz,9,10,1|8qias0,8,1,0|8zvc3z,8,1,0|8zvc40,9,10,1|998dfz,9,10,1|998dg0,8,1,0|9ilerz,8,1,0|9iles0,9,10,1|9ryg3z,9,10,1|9ryg40,8,1,0|a1bhfz,8,1,0|a1bhg0,9,10,1|aaoirz,9,10,1|aaois0,8,1,0|ak1k3z,8,1,0|ak1k40,9,10,1|atrk3z,9,10,1|atrk40,8,1,0|b34lfz,8,1,0|b34lg0,9,10,1|bchmrz,9,10,1|bchms0,8,1,0|bluo3z,8,1,0|bluo40,9,10,1|bv7pfz,9,10,1|bv7pg0,8,1,0|c4kqrz,8,1,0|c4kqs0,9,10,1|cdxs3z,9,10,1|cdxs40,8,1,0|cnatfz,8,1,0|cnatg0,9,10,1|cwnurz,9,10,1|cwnus0,8,1,0|d60w3z,8,1,0|d60w40,9,10,1|dfdxfz,9,10,1|dfdxg0,8,1,0|dp3xfz,8,1,0|dp3xg0,9,10,1|dzwtfz,9,10,1|dzwtg0,8,1,0|e7u03z,8,1,0|e7u040,9,10,1|eimw3z,9,10,1|eimw40,8,1,0|eqk2rz,8,1,0|eqk2s0,9,10,1|f1cyrz,9,10,1|f1cys0,8,1,0|f9a5fz,8,1,0|f9a5g0,9,10,1|fkg03z,9,10,1|fkg040,8,1,0|fs083z,8,1,0|fs0840,9,10,1|g362rz,9,10,1|g362s0,8,1,0|gaqarz,8,1,0|gaqas0,9,10,1|glw5fz,9,10,1|glw5g0,8,1,0|gttc3z,8,1,0|gttc40,9,10,1|h4m83z,9,10,1|h4m840,8,1,0|hcjerz,8,1,0|hcjes0,9,10,1|hncarz,9,10,1|hncas0,8,1,0|hv9hfz,8,1,0|hv9hg0,9,10,1|i6fc3z,9,10,1|i6fc40,8,1,0|idzk3z,8,1,0|idzk40,9,10,1|ip5erz,9,10,1|ip5es0,8,1,0|iwpmrz,8,1,0|iwpms0,9,10,1|j7vhfz,9,10,1|j7vhg0,8,1,0|jffpfz,8,1,0|jffpg0,9,10,1|jqlk3z,9,10,1|jqlk40,8,1,0|jyiqrz,8,1,0|jyiqs0,9,10,1|k9bmrz,9,10,1|k9bms0,8,1,0|kh8tfz,8,1,0|kh8tg0,9,10,1|ks1pfz,9,10,1|ks1pg0,8,1,0|kzyw3z,8,1,0|kzyw40,9,10,1|lb4qrz,9,10,1|lb4qs0,8,1,0|lioyrz,8,1,0|lioys0,9,10,1|ltutfz,9,10,1|ltutg0,8,1,0|m1f1fz,8,1,0|m1f1g0,9,10,1|mckw3z,9,10,1|mckw40,8,1,0|mki2rz,8,1,0|mki2s0,9,10,1|mvayrz,9,10,1|mvays0,8,1,0|n385fz,8,1,0|n385g0,9,10,1|ne11fz,9,10,1|ne11g0,8,1,0|nly83z,8,1,0|nly840,9,10,1|nwr43z,9,10,1|nwr440,8,1,0|o4oarz,8,1,0|o4oas0,9,10,1|ofu5fz,9,10,1|ofu5g0,8,1,0|onedfz,8,1,0|onedg0,9,10,1|oyk83z,9,10,1|oyk840,8,1,0|p64g3z,8,1,0|p64g40,9,10,1|phaarz,9,10,1|phaas0,8,1,0|pp7hfz,8,1,0|pp7hg0,9,10,1|q00dfz,9,10,1|q00dg0,8,1,0|q7xk3z,8,1,0|q7xk40,9,10,1|qiqg3z,9,10,1|qiqg40,8,1,0|qqnmrz,8,1,0|qqnms0,9,10,1|r1thfz,9,10,1|r1thg0,8,1,0|r9dpfz,8,1,0|r9dpg0,9,10,1|rkjk3z,9,10,1|rkjk40,8,1,0|rs3s3z,8,1,0|rs3s40,9,10,1|s39mrz,9,10,1|s39ms0,8,1,0|sb6tfz,8,1,0|sb6tg0,9,10,1|slzpfz,9,10,1|slzpg0,8,1,0|stww3z,8,1,0|stww40,9,10,1|t4ps3z,9,10,1|t4ps40,8,1,0|tcmyrz,8,1,0|tcmys0,9,10,1|tnfurz,9,10,1|tnfus0,8,1,0|tvd1fz,8,1,0|tvd1g0,9,10,1|u6iw3z,9,10,1|u6iw40,8,1,0|ue343z,8,1,0|ue3440,9,10,1|up8yrz,9,10,1|up8ys0,8,1,0|uwt6rz,8,1,0|uwt6s0,9,10,1|v7z1fz,9,10,1|v7z1g0,8,1,0|vfw83z,8,1,0|vfw840,9,10,1|vqp43z,9,10,1|vqp440,8,1,0|vymarz,8,1,0|vymas0,9,10,1|w9f6rz,9,10,1|w9f6s0,8,1,0|whcdfz,8,1,0|whcdg0,9,10,1|wsi83z,9,10,1|wsi840,8,1,0|x02g3z,8,1,0|x02g40,9,10,1|xb8arz,9,10,1|xb8as0,8,1,0|xisirz,8,1,0|xisis0,9,10,1|xtydfz,9,10,1|xtydg0,8,1,0|y1ilfz,8,1,0|y1ilg0,9,10,1|ycog3z,9,10,1|ycog40,8,1,0|yklmrz,8,1,0|yklms0,9,10,1|yveirz,9,10,1|yveis0,8,1,0|z3bpfz,8,1,0|z3bpg0,9,10,1|ze4lfz,9,10,1|ze4lg0,8,1,0\",\"Atlantic/Reykjavik|,0,309,0|-wcwx9c,13,15,0|-rl7k01,13,15,0|-rl7k00,17,1,1|-r8ph81,17,1,1|-r8ph80,13,15,0|-r2fmo1,13,15,0|-r2fmo0,17,1,1|-qolek1,17,1,1|-qolek0,13,15,0|-qjnpc1,13,15,0|-qjnpc0,17,1,1|-q5th81,17,1,1|-q5th80,13,15,0|-pgm5c1,13,15,0|-pgm5c0,17,1,1|-pbq581,17,1,1|-pbq580,13,15,0|-g0c5c1,13,15,0|-g0c5c0,17,1,1|-fqyyg1,17,1,1|-fqyyg0,13,15,0|-fkuic1,13,15,0|-fkuic0,17,1,1|-f7vx41,17,1,1|-f7vx40,13,15,0|-f1rjs1,13,15,0|-f1rjs0,17,1,1|-ep5ug1,17,1,1|-ep5ug0,13,15,0|-eioig1,13,15,0|-eioig0,17,1,1|-e6sqg1,17,1,1|-e6sqg0,13,15,0|-dzyfs1,13,15,0|-dzyfs0,17,1,1|-do2ns1,17,1,1|-do2ns0,13,15,0|-dh8d41,13,15,0|-dh8d40,17,1,1|-d5cl41,17,1,1|-d5cl40,13,15,0|-cyiag1,13,15,0|-cyiag0,17,1,1|-cm9js1,17,1,1|-cm9js0,13,15,0|-cfs7s1,13,15,0|-cfs7s0,17,1,1|-c3jh41,17,1,1|-c3jh40,13,15,0|-bv9bs1,13,15,0|-bv9bs0,17,1,1|-bkteg1,17,1,1|-bkteg0,13,15,0|-bcj941,13,15,0|-bcj940,17,1,1|-b23bs1,17,1,1|-b23bs0,13,15,0|-att6g1,13,15,0|-att6g0,17,1,1|-aj0ag1,17,1,1|-aj0ag0,13,15,0|-ab33s1,13,15,0|-ab33s0,17,1,1|-a0n6g1,17,1,1|-a0n6g0,13,15,0|-9sd141,13,15,0|-9sd140,17,1,1|-9hk541,17,1,1|-9hk540,13,15,0|-999zs1,13,15,0|-999zs0,17,1,1|-8yu2g1,17,1,1|-8yu2g0,13,15,0|-8qjx41,13,15,0|-8qjx40,17,1,1|-8g3zs1,17,1,1|-8g3zs0,13,15,0|-87tug1,13,15,0|-87tug0,17,1,1|-7xdx41,17,1,1|-7xdx40,13,15,0|-7p3rs1,13,15,0|-7p3rs0,17,1,1|-7enug1,17,1,1|-7enug0,13,15,0|-76dp41,13,15,0|-76dp40,17,1,1|-6vkt41,17,1,1|-6vkt40,13,15,0|-6nans1,13,15,0|-6nans0,17,1,1|-6cuqg1,17,1,1|-6cuqg0,13,15,0|-64kl41,13,15,0|-64kl40,17,1,1|-5u4ns1,17,1,1|-5u4ns0,13,15,0|-5luig1,13,15,0|-5luig0,17,1,1|-5bel41,17,1,1|-5bel40,13,15,0|-534fs1,13,15,0|-534fs0,17,1,1|-4soig1,17,1,1|-4soig0,13,15,0|-4ked41,13,15,0|-4ked40,17,1,1|-49yfs1,17,1,1|-49yfs0,13,15,0|-41oag1,13,15,0|-41oag0,17,1,1|-3qveg1,17,1,1|-3qveg0,13,15,0|-3il941,13,15,0|-3il940,17,1,1|-385bs1,17,1,1|-385bs0,13,15,0|-2zv6g1,13,15,0|-2zv6g0,17,1,1|-2pf941,17,1,1|-2pf940,13,15,0|-2h53s1,13,15,0|-2h53s0,17,1,1|-26p6g1,17,1,1|-26p6g0,13,15,0|-1yf141,13,15,0|-1yf140,17,1,1|-1nz3s1,17,1,1|-1nz3s0,13,15,0|-1foyg1,13,15,0|-1foyg0,17,1,1|-14w2g1,17,1,1|-14w2g0,13,15,0|-wlx41,13,15,0|-wlx40,1,1,0\",\"Atlantic/South_Georgia|,0,310,0|-15r12kg,40,45,0\",\"Atlantic/St_Helena|,0,12,0|-u9rgl4,1,1,0\",\"Atlantic/Stanley|,0,311,0|-15r0ymc,85,311,0|-u63pad,85,311,0|-u63pac,42,42,0|-gu7rk1,42,42,0|-gu7rk0,39,44,1|-gl7ro1,39,44,1|-gl7ro0,42,42,0|-gbhow1,42,42,0|-gbhow0,39,44,1|-g2hp01,39,44,1|-g2hp00,42,42,0|-fsenk1,42,42,0|-fsenk0,39,44,1|-fjeno1,39,44,1|-fjeno0,42,42,0|-f9okw1,42,42,0|-f9okw0,39,44,1|-f0ol01,39,44,1|-f0ol00,42,42,0|-eqyi81,42,42,0|-eqyi80,39,44,1|-ehyic1,39,44,1|-ehyic0,42,42,0|-e88fk1,42,42,0|-e88fk0,39,44,1|-e3aqc1,39,44,1|-e3aqc0,42,42,0|6yf4fz,42,42,0|6yf4g0,39,44,0|75z9nz,39,44,0|75z9o0,40,45,1|7h51jz,40,45,1|7h51k0,39,44,0|7ocdnz,39,44,0|7ocdo0,40,45,1|7zv47z,40,45,1|7zv480,39,44,0|872gbz,39,44,0|872gc0,39,44,1|8i8azz,39,44,1|8i8b00,42,42,0|8pslrz,42,42,0|8psls0,39,44,1|90ydnz,39,44,1|90ydo0,42,42,0|98iofz,42,42,0|98iog0,39,44,1|9jogbz,39,44,1|9jogc0,42,42,0|9r8r3z,42,42,0|9r8r40,39,44,1|a2eizz,39,44,1|a2ej00,42,42,0|a9ytrz,42,42,0|a9yts0,39,44,1|alhkbz,39,44,1|alhkc0,42,42,0|asowfz,42,42,0|asowg0,39,44,1|b47mzz,39,44,1|b47n00,42,42,0|bbrxrz,42,42,0|bbrxs0,39,44,1|bmxpnz,39,44,1|bmxpo0,42,42,0|bui0fz,42,42,0|bui0g0,39,44,1|c5nsbz,39,44,1|c5nsc0,42,42,0|cd833z,42,42,0|cd8340,39,44,1|coduzz,39,44,1|codv00,42,42,0|cvy5rz,42,42,0|cvy5s0,39,44,1|d73xnz,39,44,1|d73xo0,42,42,0|deo8fz,42,42,0|deo8g0,39,44,1|dq6yzz,39,44,1|dq6z00,42,42,0|dxr9rz,42,42,0|dxr9s0,39,44,1|e8x1nz,39,44,1|e8x1o0,42,42,0|eghcfz,42,42,0|eghcg0,39,44,1|ern4bz,39,44,1|ern4c0,42,42,0|ez7f3z,42,42,0|ez7f40,39,44,1|fad6zz,39,44,1|fad700,42,42,0|fhxhrz,42,42,0|fhxhs0,39,44,1|ft39nz,39,44,1|ft39o0,42,42,0|g0nkfz,42,42,0|g0nkg0,39,44,1|gbthvz,39,44,1|gbthw0,42,42,0|gj0tzz,42,42,0|gj0u00,39,44,1|guwj7z,39,44,1|guwj80,42,42,0|h1qwnz,42,42,0|h1qwo0,39,44,1|hdmlvz,39,44,1|hdmlw0,42,42,0|hktxzz,42,42,0|hkty00,39,44,1|hwcojz,39,44,1|hwcok0,42,42,0|i3k0nz,42,42,0|i3k0o0,39,44,1|if2r7z,39,44,1|if2r80,42,42,0|ima3bz,42,42,0|ima3c0,39,44,1|ixstvz,39,44,1|ixstw0,42,42,0|j505zz,42,42,0|j50600,39,44,1|jgiwjz,39,44,1|jgiwk0,42,42,0|jnq8nz,42,42,0|jnq8o0,39,44,1|jzlxvz,39,44,1|jzlxw0,42,42,0|k6t9zz,42,42,0|k6ta00,39,44,1|kic0jz,39,44,1|kic0k0,42,42,0|kpjcnz,42,42,0|kpjco0,39,44,1|l1237z,39,44,1|l12380,42,42,0|l89fbz,42,42,0|l89fc0,39,44,0\",\"Australia/Adelaide|,0,312,0|-133j2zw,138,224,0|-10vsp01,138,224,0|-10vsp00,138,248,0|-rnsq61,138,248,0|-rnsq60,139,313,1|-rjj0u1,139,313,1|-rjj0u0,138,248,0|-em3gu1,138,248,0|-em3gu0,139,313,1|-ehmcu1,139,313,1|-ehmcu0,138,248,0|-e89bi1,138,248,0|-e89bi0,139,313,1|-dywa61,139,313,1|-dywa60,138,248,0|-dp6a61,138,248,0|-dp6a60,139,313,1|-dg67i1,139,313,1|-dg67i0,138,248,0|ycghz,138,248,0|ycgi0,139,313,1|14gttz,139,313,1|14gtu0,138,248,0|1h2j5z,138,248,0|1h2j60,139,313,1|1njv5z,139,313,1|1njv60,138,248,0|1zsltz,138,248,0|1zslu0,139,313,1|269xtz,139,313,1|269xu0,138,248,0|2iiohz,138,248,0|2iioi0,139,313,1|2p00hz,139,313,1|2p00i0,138,248,0|318r5z,138,248,0|318r60,139,313,1|3831tz,139,313,1|3831u0,138,248,0|3kbshz,138,248,0|3kbsi0,139,313,1|3qt4hz,139,313,1|3qt4i0,138,248,0|431v5z,138,248,0|431v60,139,313,1|49j75z,139,313,1|49j760,138,248,0|4lrxtz,138,248,0|4lrxu0,139,313,1|4s99tz,139,313,1|4s99u0,138,248,0|54i0hz,138,248,0|54i0i0,139,313,1|5azchz,139,313,1|5azci0,138,248,0|5n835z,138,248,0|5n8360,139,313,1|5tpf5z,139,313,1|5tpf60,138,248,0|65y5tz,138,248,0|65y5u0,139,313,1|6csghz,139,313,1|6csgi0,138,248,0|6p175z,138,248,0|6p1760,139,313,1|6vij5z,139,313,1|6vij60,138,248,0|77r9tz,138,248,0|77r9u0,139,313,1|7e8ltz,139,313,1|7e8lu0,138,248,0|7qhchz,138,248,0|7qhci0,139,313,1|7wyohz,139,313,1|7wyoi0,138,248,0|897f5z,138,248,0|897f60,139,313,1|8geohz,139,313,1|8geoi0,138,248,0|8rkj5z,138,248,0|8rkj60,139,313,1|8z4r5z,139,313,1|8z4r60,138,248,0|9ankhz,138,248,0|9anki0,139,313,1|9i7shz,139,313,1|9i7si0,138,248,0|9tqltz,138,248,0|9tqlu0,139,313,1|a0xv5z,139,313,1|a0xv60,138,248,0|acgohz,138,248,0|acgoi0,139,313,1|ajnxtz,139,313,1|ajnxu0,138,248,0|av6r5z,138,248,0|av6r60,139,313,1|b1o35z,139,313,1|b1o360,138,248,0|bdwttz,138,248,0|bdwtu0,139,313,1|blh1tz,139,313,1|blh1u0,138,248,0|bwmwhz,138,248,0|bwmwi0,139,313,1|c3h75z,139,313,1|c3h760,138,248,0|cfpxtz,138,248,0|cfpxu0,139,313,1|cmx75z,139,313,1|cmx760,138,248,0|cyg0hz,138,248,0|cyg0i0,139,313,1|d608hz,139,313,1|d608i0,138,248,0|dh635z,138,248,0|dh6360,139,313,1|dp39tz,139,313,1|dp39u0,138,248,0|dzw5tz,138,248,0|dzw5u0,139,313,1|e7tchz,139,313,1|e7tci0,138,248,0|eim8hz,138,248,0|eim8i0,139,313,1|eqjf5z,139,313,1|eqjf60,138,248,0|f1cb5z,138,248,0|f1cb60,139,313,1|f99htz,139,313,1|f99hu0,138,248,0|fkfchz,138,248,0|fkfci0,139,313,1|frzkhz,139,313,1|frzki0,138,248,0|g35f5z,138,248,0|g35f60,139,313,1|gapn5z,139,313,1|gapn60,138,248,0|glvhtz,138,248,0|glvhu0,139,313,1|gtsohz,139,313,1|gtsoi0,138,248,0|h4lkhz,138,248,0|h4lki0,139,313,1|hcir5z,139,313,1|hcir60,138,248,0|hnbn5z,138,248,0|hnbn60,139,313,1|hv8ttz,139,313,1|hv8tu0,138,248,0|i6eohz,138,248,0|i6eoi0,139,313,1|idywhz,139,313,1|idywi0,138,248,0|ip4r5z,138,248,0|ip4r60,139,313,1|ix1xtz,139,313,1|ix1xu0,138,248,0|j7uttz,138,248,0|j7utu0,139,313,1|jff1tz,139,313,1|jff1u0,138,248,0|jqkwhz,138,248,0|jqkwi0,139,313,1|jyv1tz,139,313,1|jyv1u0,138,248,0|k8835z,138,248,0|k88360,139,313,1|khl4hz,139,313,1|khl4i0,138,248,0|kqy5tz,138,248,0|kqy5u0,139,313,1|l0b75z,139,313,1|l0b760,138,248,0|l9o8hz,138,248,0|l9o8i0,139,313,1|lj19tz,139,313,1|lj19u0,138,248,0|lseb5z,138,248,0|lseb60,139,313,1|m1rchz,139,313,1|m1rci0,138,248,0|mbhchz,138,248,0|mbhci0,139,313,1|mkudtz,139,313,1|mkudu0,138,248,0|mu7f5z,138,248,0|mu7f60,139,313,1|n3kghz,139,313,1|n3kgi0,138,248,0|ncxhtz,138,248,0|ncxhu0,139,313,1|nmaj5z,139,313,1|nmaj60,138,248,0|nvnkhz,138,248,0|nvnki0,139,313,1|o50ltz,139,313,1|o50lu0,138,248,0|oedn5z,138,248,0|oedn60,139,313,1|onqohz,139,313,1|onqoi0,138,248,0|ox3ptz,138,248,0|ox3pu0,139,313,1|p6gr5z,139,313,1|p6gr60,138,248,0|pg6r5z,138,248,0|pg6r60,139,313,1|ppjshz,139,313,1|ppjsi0,138,248,0|pywttz,138,248,0|pywtu0,139,313,1|q89v5z,139,313,1|q89v60,138,248,0|qhmwhz,138,248,0|qhmwi0,139,313,1|qqzxtz,139,313,1|qqzxu0,138,248,0|r0cz5z,138,248,0|r0cz60,139,313,1|r9q0hz,139,313,1|r9q0i0,138,248,0|rj31tz,138,248,0|rj31u0,139,313,1|rsg35z,139,313,1|rsg360,138,248,0|s1t4hz,138,248,0|s1t4i0,139,313,1|sbj4hz,139,313,1|sbj4i0,138,248,0|skw5tz,138,248,0|skw5u0,139,313,1|su975z,139,313,1|su9760,138,248,0|t3m8hz,138,248,0|t3m8i0,139,313,1|tcz9tz,139,313,1|tcz9u0,138,248,0|tmcb5z,138,248,0|tmcb60,139,313,1|tvpchz,139,313,1|tvpci0,138,248,0|u52dtz,138,248,0|u52du0,139,313,1|ueff5z,139,313,1|ueff60,138,248,0|unsghz,138,248,0|unsgi0,139,313,1|ux5htz,139,313,1|ux5hu0,138,248,0|v6vhtz,138,248,0|v6vhu0,139,313,1|vg8j5z,139,313,1|vg8j60,138,248,0|vplkhz,138,248,0|vplki0,139,313,1|vyyltz,139,313,1|vyylu0,138,248,0|w8bn5z,138,248,0|w8bn60,139,313,1|whoohz,139,313,1|whooi0,138,248,0|wr1ptz,138,248,0|wr1pu0,139,313,1|x0er5z,139,313,1|x0er60,138,248,0|x9rshz,138,248,0|x9rsi0,139,313,1|xj4ttz,139,313,1|xj4tu0,138,248,0|xshv5z,138,248,0|xshv60,139,313,1|y1uwhz,139,313,1|y1uwi0,138,248,0|ybkwhz,138,248,0|ybkwi0,139,313,1|ykxxtz,139,313,1|ykxxu0,138,248,0|yuaz5z,138,248,0|yuaz60,139,313,1|z3o0hz,139,313,1|z3o0i0,138,248,0|zd11tz,138,248,0|zd11u0,139,313,1\",\"Australia/Brisbane|,0,314,0|-1354kc8,94,195,0|-rnsrk1,94,195,0|-rnsrk0,95,192,1|-rjj281,95,192,1|-rjj280,94,195,0|-em3i81,94,195,0|-em3i80,95,192,1|-ehme81,95,192,1|-ehme80,94,195,0|-e89cw1,94,195,0|-e89cw0,95,192,1|-dywbk1,95,192,1|-dywbk0,94,195,0|-dp6bk1,94,195,0|-dp6bk0,95,192,1|-dg68w1,95,192,1|-dg68w0,94,195,0|ycf3z,94,195,0|ycf40,95,192,1|14gsfz,95,192,1|14gsg0,94,195,0|acgn3z,94,195,0|acgn40,95,192,1|aixz3z,95,192,1|aixz40,94,195,0|av6prz,94,195,0|av6ps0,95,192,1|b1o1rz,95,192,1|b1o1s0,94,195,0|bdwsfz,94,195,0|bdwsg0,95,192,1|bke4fz,95,192,1|bke4g0,94,195,0\",\"Australia/Broken_Hill|,0,315,0|-133j3j0,94,195,0|-12a9fs1,94,195,0|-12a9fs0,138,224,0|-10vsp01,138,224,0|-10vsp00,138,248,0|-rnsq61,138,248,0|-rnsq60,139,313,1|-rjj0u1,139,313,1|-rjj0u0,138,248,0|-em3gu1,138,248,0|-em3gu0,139,313,1|-ehmcu1,139,313,1|-ehmcu0,138,248,0|-e89bi1,138,248,0|-e89bi0,139,313,1|-dywa61,139,313,1|-dywa60,138,248,0|-dp6a61,138,248,0|-dp6a60,139,313,1|-dg67i1,139,313,1|-dg67i0,138,248,0|ycghz,138,248,0|ycgi0,139,313,1|14gttz,139,313,1|14gtu0,138,248,0|1h2j5z,138,248,0|1h2j60,139,313,1|1njv5z,139,313,1|1njv60,138,248,0|1zsltz,138,248,0|1zslu0,139,313,1|269xtz,139,313,1|269xu0,138,248,0|2iiohz,138,248,0|2iioi0,139,313,1|2p00hz,139,313,1|2p00i0,138,248,0|318r5z,138,248,0|318r60,139,313,1|3831tz,139,313,1|3831u0,138,248,0|3kbshz,138,248,0|3kbsi0,139,313,1|3qt4hz,139,313,1|3qt4i0,138,248,0|431v5z,138,248,0|431v60,139,313,1|49j75z,139,313,1|49j760,138,248,0|4lrxtz,138,248,0|4lrxu0,139,313,1|4s99tz,139,313,1|4s99u0,138,248,0|54i0hz,138,248,0|54i0i0,139,313,1|5azchz,139,313,1|5azci0,138,248,0|5n835z,138,248,0|5n8360,139,313,1|5tpf5z,139,313,1|5tpf60,138,248,0|65y5tz,138,248,0|65y5u0,139,313,1|6e8b5z,139,313,1|6e8b60,138,248,0|6p175z,138,248,0|6p1760,139,313,1|6vij5z,139,313,1|6vij60,138,248,0|77r9tz,138,248,0|77r9u0,139,313,1|7e8ltz,139,313,1|7e8lu0,138,248,0|7qhchz,138,248,0|7qhci0,139,313,1|7wyohz,139,313,1|7wyoi0,138,248,0|897f5z,138,248,0|897f60,139,313,1|8geohz,139,313,1|8geoi0,138,248,0|8rkj5z,138,248,0|8rkj60,139,313,1|8z4r5z,139,313,1|8z4r60,138,248,0|9ankhz,138,248,0|9anki0,139,313,1|9i7shz,139,313,1|9i7si0,138,248,0|9tqltz,138,248,0|9tqlu0,139,313,1|a0xv5z,139,313,1|a0xv60,138,248,0|acgohz,138,248,0|acgoi0,139,313,1|aiy0hz,139,313,1|aiy0i0,138,248,0|av6r5z,138,248,0|av6r60,139,313,1|b1o35z,139,313,1|b1o360,138,248,0|bdwttz,138,248,0|bdwtu0,139,313,1|bke5tz,139,313,1|bke5u0,138,248,0|bwmwhz,138,248,0|bwmwi0,139,313,1|c3h75z,139,313,1|c3h760,138,248,0|cfpxtz,138,248,0|cfpxu0,139,313,1|cm79tz,139,313,1|cm79u0,138,248,0|cyg0hz,138,248,0|cyg0i0,139,313,1|d4xchz,139,313,1|d4xci0,138,248,0|dh635z,138,248,0|dh6360,139,313,1|dp39tz,139,313,1|dp39u0,138,248,0|dzw5tz,138,248,0|dzw5u0,139,313,1|e7tchz,139,313,1|e7tci0,138,248,0|eim8hz,138,248,0|eim8i0,139,313,1|eqjf5z,139,313,1|eqjf60,138,248,0|f1cb5z,138,248,0|f1cb60,139,313,1|f99htz,139,313,1|f99hu0,138,248,0|fkfchz,138,248,0|fkfci0,139,313,1|frzkhz,139,313,1|frzki0,138,248,0|g35f5z,138,248,0|g35f60,139,313,1|gapn5z,139,313,1|gapn60,138,248,0|glvhtz,138,248,0|glvhu0,139,313,1|gtsohz,139,313,1|gtsoi0,138,248,0|h4lkhz,138,248,0|h4lki0,139,313,1|hcir5z,139,313,1|hcir60,138,248,0|hnbn5z,138,248,0|hnbn60,139,313,1|hv8ttz,139,313,1|hv8tu0,138,248,0|i6eohz,138,248,0|i6eoi0,139,313,1|idywhz,139,313,1|idywi0,138,248,0|ip4r5z,138,248,0|ip4r60,139,313,1|ix1xtz,139,313,1|ix1xu0,138,248,0|j7uttz,138,248,0|j7utu0,139,313,1|jff1tz,139,313,1|jff1u0,138,248,0|jqkwhz,138,248,0|jqkwi0,139,313,1|jyv1tz,139,313,1|jyv1u0,138,248,0|k8835z,138,248,0|k88360,139,313,1|khl4hz,139,313,1|khl4i0,138,248,0|kqy5tz,138,248,0|kqy5u0,139,313,1|l0b75z,139,313,1|l0b760,138,248,0|l9o8hz,138,248,0|l9o8i0,139,313,1|lj19tz,139,313,1|lj19u0,138,248,0|lseb5z,138,248,0|lseb60,139,313,1|m1rchz,139,313,1|m1rci0,138,248,0|mbhchz,138,248,0|mbhci0,139,313,1|mkudtz,139,313,1|mkudu0,138,248,0|mu7f5z,138,248,0|mu7f60,139,313,1|n3kghz,139,313,1|n3kgi0,138,248,0|ncxhtz,138,248,0|ncxhu0,139,313,1|nmaj5z,139,313,1|nmaj60,138,248,0|nvnkhz,138,248,0|nvnki0,139,313,1|o50ltz,139,313,1|o50lu0,138,248,0|oedn5z,138,248,0|oedn60,139,313,1|onqohz,139,313,1|onqoi0,138,248,0|ox3ptz,138,248,0|ox3pu0,139,313,1|p6gr5z,139,313,1|p6gr60,138,248,0|pg6r5z,138,248,0|pg6r60,139,313,1|ppjshz,139,313,1|ppjsi0,138,248,0|pywttz,138,248,0|pywtu0,139,313,1|q89v5z,139,313,1|q89v60,138,248,0|qhmwhz,138,248,0|qhmwi0,139,313,1|qqzxtz,139,313,1|qqzxu0,138,248,0|r0cz5z,138,248,0|r0cz60,139,313,1|r9q0hz,139,313,1|r9q0i0,138,248,0|rj31tz,138,248,0|rj31u0,139,313,1|rsg35z,139,313,1|rsg360,138,248,0|s1t4hz,138,248,0|s1t4i0,139,313,1|sbj4hz,139,313,1|sbj4i0,138,248,0|skw5tz,138,248,0|skw5u0,139,313,1|su975z,139,313,1|su9760,138,248,0|t3m8hz,138,248,0|t3m8i0,139,313,1|tcz9tz,139,313,1|tcz9u0,138,248,0|tmcb5z,138,248,0|tmcb60,139,313,1|tvpchz,139,313,1|tvpci0,138,248,0|u52dtz,138,248,0|u52du0,139,313,1|ueff5z,139,313,1|ueff60,138,248,0|unsghz,138,248,0|unsgi0,139,313,1|ux5htz,139,313,1|ux5hu0,138,248,0|v6vhtz,138,248,0|v6vhu0,139,313,1|vg8j5z,139,313,1|vg8j60,138,248,0|vplkhz,138,248,0|vplki0,139,313,1|vyyltz,139,313,1|vyylu0,138,248,0|w8bn5z,138,248,0|w8bn60,139,313,1|whoohz,139,313,1|whooi0,138,248,0|wr1ptz,138,248,0|wr1pu0,139,313,1|x0er5z,139,313,1|x0er60,138,248,0|x9rshz,138,248,0|x9rsi0,139,313,1|xj4ttz,139,313,1|xj4tu0,138,248,0|xshv5z,138,248,0|xshv60,139,313,1|y1uwhz,139,313,1|y1uwi0,138,248,0|ybkwhz,138,248,0|ybkwi0,139,313,1|ykxxtz,139,313,1|ykxxu0,138,248,0|yuaz5z,138,248,0|yuaz60,139,313,1|z3o0hz,139,313,1|z3o0i0,138,248,0|zd11tz,138,248,0|zd11u0,139,313,1\",\"Australia/Currie|,0,316,0|-12smja4,94,195,0|-rsj4w1,94,195,0|-rsj4w0,95,192,1|-rjj281,95,192,1|-rjj280,94,195,0|-r8d7k1,94,195,0|-r8d7k0,95,192,1|-r1vvk1,95,192,1|-r1vvk0,94,195,0|-qpn4w1,94,195,0|-qpn4w0,95,192,1|-qj5sw1,95,192,1|-qj5sw0,94,195,0|-em3i81,94,195,0|-em3i80,95,192,1|-ehme81,95,192,1|-ehme80,94,195,0|-e89cw1,94,195,0|-e89cw0,95,192,1|-dywbk1,95,192,1|-dywbk0,94,195,0|-dp6bk1,94,195,0|-dp6bk0,95,192,1|-dg68w1,95,192,1|-dg68w0,94,195,0|-16cow1,94,195,0|-16cow0,95,192,1|-wznk1,95,192,1|-wznk0,94,195,0|-m6rk1,94,195,0|-m6rk0,95,192,1|-fcgw1,95,192,1|-fcgw0,94,195,0|-3gow1,94,195,0|-3gow0,95,192,1|3dlrz,95,192,1|3dls0,94,195,0|f9drz,94,195,0|f9ds0,95,192,1|mgn3z,95,192,1|mgn40,94,195,0|ycf3z,94,195,0|ycf40,95,192,1|14gsfz,95,192,1|14gsg0,94,195,0|1h2hrz,94,195,0|1h2hs0,95,192,1|1njtrz,95,192,1|1njts0,94,195,0|1zskfz,94,195,0|1zskg0,95,192,1|269wfz,95,192,1|269wg0,94,195,0|2iin3z,94,195,0|2iin40,95,192,1|2ozz3z,95,192,1|2ozz40,94,195,0|318prz,94,195,0|318ps0,95,192,1|3830fz,95,192,1|3830g0,94,195,0|3kbr3z,94,195,0|3kbr40,95,192,1|3qt33z,95,192,1|3qt340,94,195,0|431trz,94,195,0|431ts0,95,192,1|49j5rz,95,192,1|49j5s0,94,195,0|4lrwfz,94,195,0|4lrwg0,95,192,1|4s98fz,95,192,1|4s98g0,94,195,0|54hz3z,94,195,0|54hz40,95,192,1|5azb3z,95,192,1|5azb40,94,195,0|5n81rz,94,195,0|5n81s0,95,192,1|5tpdrz,95,192,1|5tpds0,94,195,0|65y4fz,94,195,0|65y4g0,95,192,1|6dvb3z,95,192,1|6dvb40,94,195,0|6p15rz,94,195,0|6p15s0,95,192,1|6wldrz,95,192,1|6wlds0,94,195,0|77r8fz,94,195,0|77r8g0,95,192,1|7e8kfz,95,192,1|7e8kg0,94,195,0|7qhb3z,94,195,0|7qhb40,95,192,1|7wyn3z,95,192,1|7wyn40,94,195,0|897drz,94,195,0|897ds0,95,192,1|8foprz,95,192,1|8fops0,94,195,0|8rkhrz,94,195,0|8rkhs0,95,192,1|8z4prz,95,192,1|8z4ps0,94,195,0|9anj3z,94,195,0|9anj40,95,192,1|9i7r3z,95,192,1|9i7r40,94,195,0|9tqkfz,94,195,0|9tqkg0,95,192,1|a0xtrz,95,192,1|a0xts0,94,195,0|acgn3z,94,195,0|acgn40,95,192,1|ajnwfz,95,192,1|ajnwg0,94,195,0|av6prz,94,195,0|av6ps0,95,192,1|b33wfz,95,192,1|b33wg0,94,195,0|bctwfz,94,195,0|bctwg0,95,192,1|bltz3z,95,192,1|bltz40,94,195,0|bvjz3z,94,195,0|bvjz40,95,192,1|c4k1rz,95,192,1|c4k1s0,94,195,0|cea1rz,94,195,0|cea1s0,95,192,1|cna4fz,95,192,1|cna4g0,94,195,0|cx04fz,94,195,0|cx04g0,95,192,1|d6073z,95,192,1|d60740,94,195,0|dfq73z,94,195,0|dfq740,95,192,1|dp38fz,95,192,1|dp38g0,94,195,0|dyt8fz,94,195,0|dyt8g0,95,192,1|e7tb3z,95,192,1|e7tb40,94,195,0|ehjb3z,94,195,0|ehjb40,95,192,1|eqjdrz,95,192,1|eqjds0,94,195,0|f09drz,94,195,0|f09ds0,95,192,1|f99gfz,95,192,1|f99gg0,94,195,0|fizgfz,94,195,0|fizgg0,95,192,1|frzj3z,95,192,1|frzj40,94,195,0|fzwprz,94,195,0|fzwps0,95,192,1|gaplrz,95,192,1|gapls0,94,195,0|gkskfz,94,195,0|gkskg0,95,192,1|gtsn3z,95,192,1|gtsn40,94,195,0|h3in3z,94,195,0|h3in40,95,192,1|hciprz,95,192,1|hcips0,94,195,0|hm8prz,94,195,0|hm8ps0,95,192,1|hv8sfz,95,192,1|hv8sg0,94,195,0|i4ysfz,94,195,0|i4ysg0,95,192,1|idyv3z,95,192,1|idyv40,94,195,0|inov3z,94,195,0|inov40,95,192,1|ix1wfz,95,192,1|ix1wg0,94,195,0|j6exrz,94,195,0|j6exs0,95,192,1|jff0fz,95,192,1|jff0g0,94,195,0|jphz3z,94,195,0|jphz40,95,192,1|jyv0fz,95,192,1|jyv0g0,94,195,0|k881rz,94,195,0|k881s0,95,192,1|khl33z,95,192,1|khl340,94,195,0|kqy4fz,94,195,0|kqy4g0,95,192,1|l0b5rz,95,192,1|l0b5s0,94,195,0|l9o73z,94,195,0|l9o740,95,192,1|lj18fz,95,192,1|lj18g0,94,195,0|lse9rz,94,195,0|lse9s0,95,192,1|m1rb3z,95,192,1|m1rb40,94,195,0|mbhb3z,94,195,0|mbhb40,95,192,1|mkucfz,95,192,1|mkucg0,94,195,0|mu7drz,94,195,0|mu7ds0,95,192,1|n3kf3z,95,192,1|n3kf40,94,195,0|ncxgfz,94,195,0|ncxgg0,95,192,1|nmahrz,95,192,1|nmahs0,94,195,0|nvnj3z,94,195,0|nvnj40,95,192,1|o50kfz,95,192,1|o50kg0,94,195,0|oedlrz,94,195,0|oedls0,95,192,1|onqn3z,95,192,1|onqn40,94,195,0|ox3ofz,94,195,0|ox3og0,95,192,1|p6gprz,95,192,1|p6gps0,94,195,0|pg6prz,94,195,0|pg6ps0,95,192,1|ppjr3z,95,192,1|ppjr40,94,195,0|pywsfz,94,195,0|pywsg0,95,192,1|q89trz,95,192,1|q89ts0,94,195,0|qhmv3z,94,195,0|qhmv40,95,192,1|qqzwfz,95,192,1|qqzwg0,94,195,0|r0cxrz,94,195,0|r0cxs0,95,192,1|r9pz3z,95,192,1|r9pz40,94,195,0|rj30fz,94,195,0|rj30g0,95,192,1|rsg1rz,95,192,1|rsg1s0,94,195,0|s1t33z,94,195,0|s1t340,95,192,1|sbj33z,95,192,1|sbj340,94,195,0|skw4fz,94,195,0|skw4g0,95,192,1|su95rz,95,192,1|su95s0,94,195,0|t3m73z,94,195,0|t3m740,95,192,1|tcz8fz,95,192,1|tcz8g0,94,195,0|tmc9rz,94,195,0|tmc9s0,95,192,1|tvpb3z,95,192,1|tvpb40,94,195,0|u52cfz,94,195,0|u52cg0,95,192,1|uefdrz,95,192,1|uefds0,94,195,0|unsf3z,94,195,0|unsf40,95,192,1|ux5gfz,95,192,1|ux5gg0,94,195,0|v6vgfz,94,195,0|v6vgg0,95,192,1|vg8hrz,95,192,1|vg8hs0,94,195,0|vplj3z,94,195,0|vplj40,95,192,1|vyykfz,95,192,1|vyykg0,94,195,0|w8blrz,94,195,0|w8bls0,95,192,1|whon3z,95,192,1|whon40,94,195,0|wr1ofz,94,195,0|wr1og0,95,192,1|x0eprz,95,192,1|x0eps0,94,195,0|x9rr3z,94,195,0|x9rr40,95,192,1|xj4sfz,95,192,1|xj4sg0,94,195,0|xshtrz,94,195,0|xshts0,95,192,1|y1uv3z,95,192,1|y1uv40,94,195,0|ybkv3z,94,195,0|ybkv40,95,192,1|ykxwfz,95,192,1|ykxwg0,94,195,0|yuaxrz,94,195,0|yuaxs0,95,192,1|z3nz3z,95,192,1|z3nz40,94,195,0|zd10fz,94,195,0|zd10g0,95,192,1\",\"Australia/Darwin|,0,317,0|-133j1k8,138,224,0|-10vsp01,138,224,0|-10vsp00,138,248,0|-rnsq61,138,248,0|-rnsq60,139,313,1|-rjj0u1,139,313,1|-rjj0u0,138,248,0|-em3gu1,138,248,0|-em3gu0,139,313,1|-ehmcu1,139,313,1|-ehmcu0,138,248,0|-e89bi1,138,248,0|-e89bi0,139,313,1|-dywa61,139,313,1|-dywa60,138,248,0|-dp6a61,138,248,0|-dp6a60,139,313,1|-dg67i1,139,313,1|-dg67i0,138,248,0\",\"Australia/Eucla|,0,318,0|-12nxx74,140,319,0|-rnso31,140,319,0|-rnso30,141,320,1|-rjiyr1,141,320,1|-rjiyr0,140,319,0|-em3er1,140,319,0|-em3er0,141,320,1|-ehmar1,141,320,1|-ehmar0,140,319,0|-e899f1,140,319,0|-e899f0,141,320,1|-dyw831,141,320,1|-dyw830,140,319,0|2iiqkz,140,319,0|2iiql0,141,320,1|2p02kz,141,320,1|2p02l0,140,319,0|77rbwz,140,319,0|77rbx0,141,320,1|7e8nwz,141,320,1|7e8nx0,140,319,0|bezrwz,140,319,0|bezrx0,141,320,1|bke7wz,141,320,1|bke7x0,140,319,0|j9np8z,140,319,0|j9np90,141,320,1|jff3wz,141,320,1|jff3x0,140,319,0|jqkykz,140,319,0|jqkyl0,141,320,1|jyi58z,141,320,1|jyi590,140,319,0|k9b18z,140,319,0|k9b190,141,320,1|kh87wz,141,320,1|kh87x0,140,319,0\",\"Australia/Hobart|,0,316,0|-12smja4,94,195,0|-rsj4w1,94,195,0|-rsj4w0,95,192,1|-rjj281,95,192,1|-rjj280,94,195,0|-r8d7k1,94,195,0|-r8d7k0,95,192,1|-r1vvk1,95,192,1|-r1vvk0,94,195,0|-qpn4w1,94,195,0|-qpn4w0,95,192,1|-qj5sw1,95,192,1|-qj5sw0,94,195,0|-em3i81,94,195,0|-em3i80,95,192,1|-ehme81,95,192,1|-ehme80,94,195,0|-e89cw1,94,195,0|-e89cw0,95,192,1|-dywbk1,95,192,1|-dywbk0,94,195,0|-dp6bk1,94,195,0|-dp6bk0,95,192,1|-dg68w1,95,192,1|-dg68w0,94,195,0|-16cow1,94,195,0|-16cow0,95,192,1|-wznk1,95,192,1|-wznk0,94,195,0|-m6rk1,94,195,0|-m6rk0,95,192,1|-fcgw1,95,192,1|-fcgw0,94,195,0|-3gow1,94,195,0|-3gow0,95,192,1|3dlrz,95,192,1|3dls0,94,195,0|f9drz,94,195,0|f9ds0,95,192,1|mgn3z,95,192,1|mgn40,94,195,0|ycf3z,94,195,0|ycf40,95,192,1|14gsfz,95,192,1|14gsg0,94,195,0|1h2hrz,94,195,0|1h2hs0,95,192,1|1njtrz,95,192,1|1njts0,94,195,0|1zskfz,94,195,0|1zskg0,95,192,1|269wfz,95,192,1|269wg0,94,195,0|2iin3z,94,195,0|2iin40,95,192,1|2ozz3z,95,192,1|2ozz40,94,195,0|318prz,94,195,0|318ps0,95,192,1|3830fz,95,192,1|3830g0,94,195,0|3kbr3z,94,195,0|3kbr40,95,192,1|3qt33z,95,192,1|3qt340,94,195,0|431trz,94,195,0|431ts0,95,192,1|49j5rz,95,192,1|49j5s0,94,195,0|4lrwfz,94,195,0|4lrwg0,95,192,1|4s98fz,95,192,1|4s98g0,94,195,0|54hz3z,94,195,0|54hz40,95,192,1|5azb3z,95,192,1|5azb40,94,195,0|5n81rz,94,195,0|5n81s0,95,192,1|5tpdrz,95,192,1|5tpds0,94,195,0|65y4fz,94,195,0|65y4g0,95,192,1|6dvb3z,95,192,1|6dvb40,94,195,0|6p15rz,94,195,0|6p15s0,95,192,1|6wldrz,95,192,1|6wlds0,94,195,0|77r8fz,94,195,0|77r8g0,95,192,1|7e8kfz,95,192,1|7e8kg0,94,195,0|7qhb3z,94,195,0|7qhb40,95,192,1|7wyn3z,95,192,1|7wyn40,94,195,0|897drz,94,195,0|897ds0,95,192,1|8foprz,95,192,1|8fops0,94,195,0|8rkhrz,94,195,0|8rkhs0,95,192,1|8z4prz,95,192,1|8z4ps0,94,195,0|9anj3z,94,195,0|9anj40,95,192,1|9i7r3z,95,192,1|9i7r40,94,195,0|9tqkfz,94,195,0|9tqkg0,95,192,1|a0xtrz,95,192,1|a0xts0,94,195,0|acgn3z,94,195,0|acgn40,95,192,1|ajnwfz,95,192,1|ajnwg0,94,195,0|av6prz,94,195,0|av6ps0,95,192,1|b33wfz,95,192,1|b33wg0,94,195,0|bctwfz,94,195,0|bctwg0,95,192,1|bltz3z,95,192,1|bltz40,94,195,0|bvjz3z,94,195,0|bvjz40,95,192,1|c4k1rz,95,192,1|c4k1s0,94,195,0|cea1rz,94,195,0|cea1s0,95,192,1|cna4fz,95,192,1|cna4g0,94,195,0|cx04fz,94,195,0|cx04g0,95,192,1|d6073z,95,192,1|d60740,94,195,0|dfq73z,94,195,0|dfq740,95,192,1|dp38fz,95,192,1|dp38g0,94,195,0|dyt8fz,94,195,0|dyt8g0,95,192,1|e7tb3z,95,192,1|e7tb40,94,195,0|ehjb3z,94,195,0|ehjb40,95,192,1|eqjdrz,95,192,1|eqjds0,94,195,0|f09drz,94,195,0|f09ds0,95,192,1|f99gfz,95,192,1|f99gg0,94,195,0|fizgfz,94,195,0|fizgg0,95,192,1|frzj3z,95,192,1|frzj40,94,195,0|fzwprz,94,195,0|fzwps0,95,192,1|gaplrz,95,192,1|gapls0,94,195,0|gkskfz,94,195,0|gkskg0,95,192,1|gtsn3z,95,192,1|gtsn40,94,195,0|h3in3z,94,195,0|h3in40,95,192,1|hciprz,95,192,1|hcips0,94,195,0|hm8prz,94,195,0|hm8ps0,95,192,1|hv8sfz,95,192,1|hv8sg0,94,195,0|i4ysfz,94,195,0|i4ysg0,95,192,1|idyv3z,95,192,1|idyv40,94,195,0|inov3z,94,195,0|inov40,95,192,1|ix1wfz,95,192,1|ix1wg0,94,195,0|j6exrz,94,195,0|j6exs0,95,192,1|jff0fz,95,192,1|jff0g0,94,195,0|jphz3z,94,195,0|jphz40,95,192,1|jyv0fz,95,192,1|jyv0g0,94,195,0|k881rz,94,195,0|k881s0,95,192,1|khl33z,95,192,1|khl340,94,195,0|kqy4fz,94,195,0|kqy4g0,95,192,1|l0b5rz,95,192,1|l0b5s0,94,195,0|l9o73z,94,195,0|l9o740,95,192,1|lj18fz,95,192,1|lj18g0,94,195,0|lse9rz,94,195,0|lse9s0,95,192,1|m1rb3z,95,192,1|m1rb40,94,195,0|mbhb3z,94,195,0|mbhb40,95,192,1|mkucfz,95,192,1|mkucg0,94,195,0|mu7drz,94,195,0|mu7ds0,95,192,1|n3kf3z,95,192,1|n3kf40,94,195,0|ncxgfz,94,195,0|ncxgg0,95,192,1|nmahrz,95,192,1|nmahs0,94,195,0|nvnj3z,94,195,0|nvnj40,95,192,1|o50kfz,95,192,1|o50kg0,94,195,0|oedlrz,94,195,0|oedls0,95,192,1|onqn3z,95,192,1|onqn40,94,195,0|ox3ofz,94,195,0|ox3og0,95,192,1|p6gprz,95,192,1|p6gps0,94,195,0|pg6prz,94,195,0|pg6ps0,95,192,1|ppjr3z,95,192,1|ppjr40,94,195,0|pywsfz,94,195,0|pywsg0,95,192,1|q89trz,95,192,1|q89ts0,94,195,0|qhmv3z,94,195,0|qhmv40,95,192,1|qqzwfz,95,192,1|qqzwg0,94,195,0|r0cxrz,94,195,0|r0cxs0,95,192,1|r9pz3z,95,192,1|r9pz40,94,195,0|rj30fz,94,195,0|rj30g0,95,192,1|rsg1rz,95,192,1|rsg1s0,94,195,0|s1t33z,94,195,0|s1t340,95,192,1|sbj33z,95,192,1|sbj340,94,195,0|skw4fz,94,195,0|skw4g0,95,192,1|su95rz,95,192,1|su95s0,94,195,0|t3m73z,94,195,0|t3m740,95,192,1|tcz8fz,95,192,1|tcz8g0,94,195,0|tmc9rz,94,195,0|tmc9s0,95,192,1|tvpb3z,95,192,1|tvpb40,94,195,0|u52cfz,94,195,0|u52cg0,95,192,1|uefdrz,95,192,1|uefds0,94,195,0|unsf3z,94,195,0|unsf40,95,192,1|ux5gfz,95,192,1|ux5gg0,94,195,0|v6vgfz,94,195,0|v6vgg0,95,192,1|vg8hrz,95,192,1|vg8hs0,94,195,0|vplj3z,94,195,0|vplj40,95,192,1|vyykfz,95,192,1|vyykg0,94,195,0|w8blrz,94,195,0|w8bls0,95,192,1|whon3z,95,192,1|whon40,94,195,0|wr1ofz,94,195,0|wr1og0,95,192,1|x0eprz,95,192,1|x0eps0,94,195,0|x9rr3z,94,195,0|x9rr40,95,192,1|xj4sfz,95,192,1|xj4sg0,94,195,0|xshtrz,94,195,0|xshts0,95,192,1|y1uv3z,95,192,1|y1uv40,94,195,0|ybkv3z,94,195,0|ybkv40,95,192,1|ykxwfz,95,192,1|ykxwg0,94,195,0|yuaxrz,94,195,0|yuaxs0,95,192,1|z3nz3z,95,192,1|z3nz40,94,195,0|zd10fz,94,195,0|zd10g0,95,192,1\",\"Australia/Lindeman|,0,321,0|-1354jl8,94,195,0|-rnsrk1,94,195,0|-rnsrk0,95,192,1|-rjj281,95,192,1|-rjj280,94,195,0|-em3i81,94,195,0|-em3i80,95,192,1|-ehme81,95,192,1|-ehme80,94,195,0|-e89cw1,94,195,0|-e89cw0,95,192,1|-dywbk1,95,192,1|-dywbk0,94,195,0|-dp6bk1,94,195,0|-dp6bk0,95,192,1|-dg68w1,95,192,1|-dg68w0,94,195,0|ycf3z,94,195,0|ycf40,95,192,1|14gsfz,95,192,1|14gsg0,94,195,0|acgn3z,94,195,0|acgn40,95,192,1|aixz3z,95,192,1|aixz40,94,195,0|av6prz,94,195,0|av6ps0,95,192,1|b1o1rz,95,192,1|b1o1s0,94,195,0|bdwsfz,94,195,0|bdwsg0,95,192,1|bke4fz,95,192,1|bke4g0,94,195,0|bwmv3z,94,195,0|bwmv40,95,192,1|c3h5rz,95,192,1|c3h5s0,94,195,0|cfpwfz,94,195,0|cfpwg0,95,192,1|cm78fz,95,192,1|cm78g0,94,195,0\",\"Australia/Lord_Howe|,0,322,0|-133j6sk,94,195,0|5tp87z,94,195,0|5tp880,142,313,0|65y31z,142,313,0|65y320,143,198,1|6csaxz,143,198,1|6csay0,142,313,0|6p14dz,142,313,0|6p14e0,143,198,1|6vidlz,143,198,1|6vidm0,142,313,0|77r71z,142,313,0|77r720,143,198,1|7e8g9z,143,198,1|7e8ga0,142,313,0|7qh9pz,142,313,0|7qh9q0,143,198,1|7wyixz,143,198,1|7wyiy0,142,313,0|897cdz,142,313,0|897ce0,90,192,1|8gekbz,90,192,1|8gekc0,142,313,0|8rkgdz,142,313,0|8rkge0,90,192,1|8z4mzz,90,192,1|8z4n00,142,313,0|9anhpz,142,313,0|9anhq0,90,192,1|9i7obz,90,192,1|9i7oc0,142,313,0|9tqj1z,142,313,0|9tqj20,90,192,1|a0xqzz,90,192,1|a0xr00,142,313,0|acglpz,142,313,0|acglq0,90,192,1|aixwbz,90,192,1|aixwc0,142,313,0|av6odz,142,313,0|av6oe0,90,192,1|b1nyzz,90,192,1|b1nz00,142,313,0|bdwr1z,142,313,0|bdwr20,90,192,1|bke1nz,90,192,1|bke1o0,142,313,0|bwmtpz,142,313,0|bwmtq0,90,192,1|c3h2zz,90,192,1|c3h300,142,313,0|cfpv1z,142,313,0|cfpv20,90,192,1|cm75nz,90,192,1|cm75o0,142,313,0|cyfxpz,142,313,0|cyfxq0,90,192,1|d4x8bz,90,192,1|d4x8c0,142,313,0|dh60dz,142,313,0|dh60e0,90,192,1|dp35nz,90,192,1|dp35o0,142,313,0|dzw31z,142,313,0|dzw320,90,192,1|e7t8bz,90,192,1|e7t8c0,142,313,0|eim5pz,142,313,0|eim5q0,90,192,1|eqjazz,90,192,1|eqjb00,142,313,0|f1c8dz,142,313,0|f1c8e0,90,192,1|f99dnz,90,192,1|f99do0,142,313,0|fkf9pz,142,313,0|fkf9q0,90,192,1|frzgbz,90,192,1|frzgc0,142,313,0|fzwodz,142,313,0|fzwoe0,90,192,1|gapizz,90,192,1|gapj00,142,313,0|glvf1z,142,313,0|glvf20,90,192,1|gtskbz,90,192,1|gtskc0,142,313,0|h4lhpz,142,313,0|h4lhq0,90,192,1|hcimzz,90,192,1|hcin00,142,313,0|hnbkdz,142,313,0|hnbke0,90,192,1|hv8pnz,90,192,1|hv8po0,142,313,0|i6elpz,142,313,0|i6elq0,90,192,1|idysbz,90,192,1|idysc0,142,313,0|ip4odz,142,313,0|ip4oe0,90,192,1|ix1tnz,90,192,1|ix1to0,142,313,0|j7ur1z,142,313,0|j7ur20,90,192,1|jfexnz,90,192,1|jfexo0,142,313,0|jqktpz,142,313,0|jqktq0,90,192,1|jyuxnz,90,192,1|jyuxo0,142,313,0|k880dz,142,313,0|k880e0,90,192,1|khl0bz,90,192,1|khl0c0,142,313,0|kqy31z,142,313,0|kqy320,90,192,1|l0b2zz,90,192,1|l0b300,142,313,0|l9o5pz,142,313,0|l9o5q0,90,192,1|lj15nz,90,192,1|lj15o0,142,313,0|lse8dz,142,313,0|lse8e0,90,192,1|m1r8bz,90,192,1|m1r8c0,142,313,0|mbh9pz,142,313,0|mbh9q0,90,192,1|mku9nz,90,192,1|mku9o0,142,313,0|mu7cdz,142,313,0|mu7ce0,90,192,1|n3kcbz,90,192,1|n3kcc0,142,313,0|ncxf1z,142,313,0|ncxf20,90,192,1|nmaezz,90,192,1|nmaf00,142,313,0|nvnhpz,142,313,0|nvnhq0,90,192,1|o50hnz,90,192,1|o50ho0,142,313,0|oedkdz,142,313,0|oedke0,90,192,1|onqkbz,90,192,1|onqkc0,142,313,0|ox3n1z,142,313,0|ox3n20,90,192,1|p6gmzz,90,192,1|p6gn00,142,313,0|pg6odz,142,313,0|pg6oe0,90,192,1|ppjobz,90,192,1|ppjoc0,142,313,0|pywr1z,142,313,0|pywr20,90,192,1|q89qzz,90,192,1|q89r00,142,313,0|qhmtpz,142,313,0|qhmtq0,90,192,1|qqztnz,90,192,1|qqzto0,142,313,0|r0cwdz,142,313,0|r0cwe0,90,192,1|r9pwbz,90,192,1|r9pwc0,142,313,0|rj2z1z,142,313,0|rj2z20,90,192,1|rsfyzz,90,192,1|rsfz00,142,313,0|s1t1pz,142,313,0|s1t1q0,90,192,1|sbj0bz,90,192,1|sbj0c0,142,313,0|skw31z,142,313,0|skw320,90,192,1|su92zz,90,192,1|su9300,142,313,0|t3m5pz,142,313,0|t3m5q0,90,192,1|tcz5nz,90,192,1|tcz5o0,142,313,0|tmc8dz,142,313,0|tmc8e0,90,192,1|tvp8bz,90,192,1|tvp8c0,142,313,0|u52b1z,142,313,0|u52b20,90,192,1|uefazz,90,192,1|uefb00,142,313,0|unsdpz,142,313,0|unsdq0,90,192,1|ux5dnz,90,192,1|ux5do0,142,313,0|v6vf1z,142,313,0|v6vf20,90,192,1|vg8ezz,90,192,1|vg8f00,142,313,0|vplhpz,142,313,0|vplhq0,90,192,1|vyyhnz,90,192,1|vyyho0,142,313,0|w8bkdz,142,313,0|w8bke0,90,192,1|whokbz,90,192,1|whokc0,142,313,0|wr1n1z,142,313,0|wr1n20,90,192,1|x0emzz,90,192,1|x0en00,142,313,0|x9rppz,142,313,0|x9rpq0,90,192,1|xj4pnz,90,192,1|xj4po0,142,313,0|xshsdz,142,313,0|xshse0,90,192,1|y1usbz,90,192,1|y1usc0,142,313,0|ybktpz,142,313,0|ybktq0,90,192,1|ykxtnz,90,192,1|ykxto0,142,313,0|yuawdz,142,313,0|yuawe0,90,192,1|z3nwbz,90,192,1|z3nwc0,142,313,0|zd0z1z,142,313,0|zd0z20,90,192,1\",\"Australia/Melbourne|,0,323,0|-133j46g,94,195,0|-rnsrk1,94,195,0|-rnsrk0,95,192,1|-rjj281,95,192,1|-rjj280,94,195,0|-em3i81,94,195,0|-em3i80,95,192,1|-ehme81,95,192,1|-ehme80,94,195,0|-e89cw1,94,195,0|-e89cw0,95,192,1|-dywbk1,95,192,1|-dywbk0,94,195,0|-dp6bk1,94,195,0|-dp6bk0,95,192,1|-dg68w1,95,192,1|-dg68w0,94,195,0|ycf3z,94,195,0|ycf40,95,192,1|14gsfz,95,192,1|14gsg0,94,195,0|1h2hrz,94,195,0|1h2hs0,95,192,1|1njtrz,95,192,1|1njts0,94,195,0|1zskfz,94,195,0|1zskg0,95,192,1|269wfz,95,192,1|269wg0,94,195,0|2iin3z,94,195,0|2iin40,95,192,1|2ozz3z,95,192,1|2ozz40,94,195,0|318prz,94,195,0|318ps0,95,192,1|3830fz,95,192,1|3830g0,94,195,0|3kbr3z,94,195,0|3kbr40,95,192,1|3qt33z,95,192,1|3qt340,94,195,0|431trz,94,195,0|431ts0,95,192,1|49j5rz,95,192,1|49j5s0,94,195,0|4lrwfz,94,195,0|4lrwg0,95,192,1|4s98fz,95,192,1|4s98g0,94,195,0|54hz3z,94,195,0|54hz40,95,192,1|5azb3z,95,192,1|5azb40,94,195,0|5n81rz,94,195,0|5n81s0,95,192,1|5tpdrz,95,192,1|5tpds0,94,195,0|65y4fz,94,195,0|65y4g0,95,192,1|6csf3z,95,192,1|6csf40,94,195,0|6p15rz,94,195,0|6p15s0,95,192,1|6vihrz,95,192,1|6vihs0,94,195,0|77r8fz,94,195,0|77r8g0,95,192,1|7e8kfz,95,192,1|7e8kg0,94,195,0|7qhb3z,94,195,0|7qhb40,95,192,1|7wyn3z,95,192,1|7wyn40,94,195,0|897drz,94,195,0|897ds0,95,192,1|8gen3z,95,192,1|8gen40,94,195,0|8rkhrz,94,195,0|8rkhs0,95,192,1|8z4prz,95,192,1|8z4ps0,94,195,0|9aakfz,94,195,0|9aakg0,95,192,1|9i7r3z,95,192,1|9i7r40,94,195,0|9tqkfz,94,195,0|9tqkg0,95,192,1|a0xtrz,95,192,1|a0xts0,94,195,0|acgn3z,94,195,0|acgn40,95,192,1|ajnwfz,95,192,1|ajnwg0,94,195,0|av6prz,94,195,0|av6ps0,95,192,1|b1o1rz,95,192,1|b1o1s0,94,195,0|bdwsfz,94,195,0|bdwsg0,95,192,1|bke4fz,95,192,1|bke4g0,94,195,0|bwmv3z,94,195,0|bwmv40,95,192,1|c3h5rz,95,192,1|c3h5s0,94,195,0|cfpwfz,94,195,0|cfpwg0,95,192,1|cm78fz,95,192,1|cm78g0,94,195,0|cyfz3z,94,195,0|cyfz40,95,192,1|d6073z,95,192,1|d60740,94,195,0|dh61rz,94,195,0|dh61s0,95,192,1|dp38fz,95,192,1|dp38g0,94,195,0|dzw4fz,94,195,0|dzw4g0,95,192,1|e7tb3z,95,192,1|e7tb40,94,195,0|eim73z,94,195,0|eim740,95,192,1|eqjdrz,95,192,1|eqjds0,94,195,0|f1c9rz,94,195,0|f1c9s0,95,192,1|f99gfz,95,192,1|f99gg0,94,195,0|fkfb3z,94,195,0|fkfb40,95,192,1|frzj3z,95,192,1|frzj40,94,195,0|fzwprz,94,195,0|fzwps0,95,192,1|gaplrz,95,192,1|gapls0,94,195,0|glvgfz,94,195,0|glvgg0,95,192,1|gtsn3z,95,192,1|gtsn40,94,195,0|h4lj3z,94,195,0|h4lj40,95,192,1|hciprz,95,192,1|hcips0,94,195,0|hnblrz,94,195,0|hnbls0,95,192,1|hv8sfz,95,192,1|hv8sg0,94,195,0|i6en3z,94,195,0|i6en40,95,192,1|idyv3z,95,192,1|idyv40,94,195,0|ip4prz,94,195,0|ip4ps0,95,192,1|ix1wfz,95,192,1|ix1wg0,94,195,0|j7usfz,94,195,0|j7usg0,95,192,1|jff0fz,95,192,1|jff0g0,94,195,0|jqkv3z,94,195,0|jqkv40,95,192,1|jyv0fz,95,192,1|jyv0g0,94,195,0|k881rz,94,195,0|k881s0,95,192,1|khl33z,95,192,1|khl340,94,195,0|kqy4fz,94,195,0|kqy4g0,95,192,1|l0b5rz,95,192,1|l0b5s0,94,195,0|l9o73z,94,195,0|l9o740,95,192,1|lj18fz,95,192,1|lj18g0,94,195,0|lse9rz,94,195,0|lse9s0,95,192,1|m1rb3z,95,192,1|m1rb40,94,195,0|mbhb3z,94,195,0|mbhb40,95,192,1|mkucfz,95,192,1|mkucg0,94,195,0|mu7drz,94,195,0|mu7ds0,95,192,1|n3kf3z,95,192,1|n3kf40,94,195,0|ncxgfz,94,195,0|ncxgg0,95,192,1|nmahrz,95,192,1|nmahs0,94,195,0|nvnj3z,94,195,0|nvnj40,95,192,1|o50kfz,95,192,1|o50kg0,94,195,0|oedlrz,94,195,0|oedls0,95,192,1|onqn3z,95,192,1|onqn40,94,195,0|ox3ofz,94,195,0|ox3og0,95,192,1|p6gprz,95,192,1|p6gps0,94,195,0|pg6prz,94,195,0|pg6ps0,95,192,1|ppjr3z,95,192,1|ppjr40,94,195,0|pywsfz,94,195,0|pywsg0,95,192,1|q89trz,95,192,1|q89ts0,94,195,0|qhmv3z,94,195,0|qhmv40,95,192,1|qqzwfz,95,192,1|qqzwg0,94,195,0|r0cxrz,94,195,0|r0cxs0,95,192,1|r9pz3z,95,192,1|r9pz40,94,195,0|rj30fz,94,195,0|rj30g0,95,192,1|rsg1rz,95,192,1|rsg1s0,94,195,0|s1t33z,94,195,0|s1t340,95,192,1|sbj33z,95,192,1|sbj340,94,195,0|skw4fz,94,195,0|skw4g0,95,192,1|su95rz,95,192,1|su95s0,94,195,0|t3m73z,94,195,0|t3m740,95,192,1|tcz8fz,95,192,1|tcz8g0,94,195,0|tmc9rz,94,195,0|tmc9s0,95,192,1|tvpb3z,95,192,1|tvpb40,94,195,0|u52cfz,94,195,0|u52cg0,95,192,1|uefdrz,95,192,1|uefds0,94,195,0|unsf3z,94,195,0|unsf40,95,192,1|ux5gfz,95,192,1|ux5gg0,94,195,0|v6vgfz,94,195,0|v6vgg0,95,192,1|vg8hrz,95,192,1|vg8hs0,94,195,0|vplj3z,94,195,0|vplj40,95,192,1|vyykfz,95,192,1|vyykg0,94,195,0|w8blrz,94,195,0|w8bls0,95,192,1|whon3z,95,192,1|whon40,94,195,0|wr1ofz,94,195,0|wr1og0,95,192,1|x0eprz,95,192,1|x0eps0,94,195,0|x9rr3z,94,195,0|x9rr40,95,192,1|xj4sfz,95,192,1|xj4sg0,94,195,0|xshtrz,94,195,0|xshts0,95,192,1|y1uv3z,95,192,1|y1uv40,94,195,0|ybkv3z,94,195,0|ybkv40,95,192,1|ykxwfz,95,192,1|ykxwg0,94,195,0|yuaxrz,94,195,0|yuaxs0,95,192,1|z3nz3z,95,192,1|z3nz40,94,195,0|zd10fz,94,195,0|zd10g0,95,192,1\",\"Australia/Perth|,0,324,0|-12nxusc,144,191,0|-rnsm01,144,191,0|-rnsm00,145,224,1|-rjiwo1,145,224,1|-rjiwo0,144,191,0|-em3co1,144,191,0|-em3co0,145,224,1|-ehm8o1,145,224,1|-ehm8o0,144,191,0|-e897c1,144,191,0|-e897c0,145,224,1|-dyw601,145,224,1|-dyw600,144,191,0|2iisnz,144,191,0|2iiso0,145,224,1|2p04nz,145,224,1|2p04o0,144,191,0|77rdzz,144,191,0|77re00,145,224,1|7e8pzz,145,224,1|7e8q00,144,191,0|beztzz,144,191,0|bezu00,145,224,1|bke9zz,145,224,1|bkea00,144,191,0|j9nrbz,144,191,0|j9nrc0,145,224,1|jff5zz,145,224,1|jff600,144,191,0|jql0nz,144,191,0|jql0o0,145,224,1|jyi7bz,145,224,1|jyi7c0,144,191,0|k9b3bz,144,191,0|k9b3c0,145,224,1|kh89zz,145,224,1|kh8a00,144,191,0\",\"Australia/Sydney|,0,325,0|-133j5c4,94,195,0|-rnsrk1,94,195,0|-rnsrk0,95,192,1|-rjj281,95,192,1|-rjj280,94,195,0|-em3i81,94,195,0|-em3i80,95,192,1|-ehme81,95,192,1|-ehme80,94,195,0|-e89cw1,94,195,0|-e89cw0,95,192,1|-dywbk1,95,192,1|-dywbk0,94,195,0|-dp6bk1,94,195,0|-dp6bk0,95,192,1|-dg68w1,95,192,1|-dg68w0,94,195,0|ycf3z,94,195,0|ycf40,95,192,1|14gsfz,95,192,1|14gsg0,94,195,0|1h2hrz,94,195,0|1h2hs0,95,192,1|1njtrz,95,192,1|1njts0,94,195,0|1zskfz,94,195,0|1zskg0,95,192,1|269wfz,95,192,1|269wg0,94,195,0|2iin3z,94,195,0|2iin40,95,192,1|2ozz3z,95,192,1|2ozz40,94,195,0|318prz,94,195,0|318ps0,95,192,1|3830fz,95,192,1|3830g0,94,195,0|3kbr3z,94,195,0|3kbr40,95,192,1|3qt33z,95,192,1|3qt340,94,195,0|431trz,94,195,0|431ts0,95,192,1|49j5rz,95,192,1|49j5s0,94,195,0|4lrwfz,94,195,0|4lrwg0,95,192,1|4s98fz,95,192,1|4s98g0,94,195,0|54hz3z,94,195,0|54hz40,95,192,1|5azb3z,95,192,1|5azb40,94,195,0|5n81rz,94,195,0|5n81s0,95,192,1|5tpdrz,95,192,1|5tpds0,94,195,0|65y4fz,94,195,0|65y4g0,95,192,1|6e89rz,95,192,1|6e89s0,94,195,0|6p15rz,94,195,0|6p15s0,95,192,1|6vihrz,95,192,1|6vihs0,94,195,0|77r8fz,94,195,0|77r8g0,95,192,1|7e8kfz,95,192,1|7e8kg0,94,195,0|7qhb3z,94,195,0|7qhb40,95,192,1|7wyn3z,95,192,1|7wyn40,94,195,0|897drz,94,195,0|897ds0,95,192,1|8gen3z,95,192,1|8gen40,94,195,0|8rkhrz,94,195,0|8rkhs0,95,192,1|8z4prz,95,192,1|8z4ps0,94,195,0|9anj3z,94,195,0|9anj40,95,192,1|9i7r3z,95,192,1|9i7r40,94,195,0|9tqkfz,94,195,0|9tqkg0,95,192,1|a0xtrz,95,192,1|a0xts0,94,195,0|acgn3z,94,195,0|acgn40,95,192,1|aixz3z,95,192,1|aixz40,94,195,0|av6prz,94,195,0|av6ps0,95,192,1|b1o1rz,95,192,1|b1o1s0,94,195,0|bdwsfz,94,195,0|bdwsg0,95,192,1|bke4fz,95,192,1|bke4g0,94,195,0|bwmv3z,94,195,0|bwmv40,95,192,1|c3h5rz,95,192,1|c3h5s0,94,195,0|cfpwfz,94,195,0|cfpwg0,95,192,1|cm78fz,95,192,1|cm78g0,94,195,0|cyfz3z,94,195,0|cyfz40,95,192,1|d4xb3z,95,192,1|d4xb40,94,195,0|dh61rz,94,195,0|dh61s0,95,192,1|dp38fz,95,192,1|dp38g0,94,195,0|dzw4fz,94,195,0|dzw4g0,95,192,1|e7tb3z,95,192,1|e7tb40,94,195,0|eim73z,94,195,0|eim740,95,192,1|eqjdrz,95,192,1|eqjds0,94,195,0|f1c9rz,94,195,0|f1c9s0,95,192,1|f99gfz,95,192,1|f99gg0,94,195,0|fkfb3z,94,195,0|fkfb40,95,192,1|frzj3z,95,192,1|frzj40,94,195,0|fzwprz,94,195,0|fzwps0,95,192,1|gaplrz,95,192,1|gapls0,94,195,0|glvgfz,94,195,0|glvgg0,95,192,1|gtsn3z,95,192,1|gtsn40,94,195,0|h4lj3z,94,195,0|h4lj40,95,192,1|hciprz,95,192,1|hcips0,94,195,0|hnblrz,94,195,0|hnbls0,95,192,1|hv8sfz,95,192,1|hv8sg0,94,195,0|i6en3z,94,195,0|i6en40,95,192,1|idyv3z,95,192,1|idyv40,94,195,0|ip4prz,94,195,0|ip4ps0,95,192,1|ix1wfz,95,192,1|ix1wg0,94,195,0|j7usfz,94,195,0|j7usg0,95,192,1|jff0fz,95,192,1|jff0g0,94,195,0|jqkv3z,94,195,0|jqkv40,95,192,1|jyv0fz,95,192,1|jyv0g0,94,195,0|k881rz,94,195,0|k881s0,95,192,1|khl33z,95,192,1|khl340,94,195,0|kqy4fz,94,195,0|kqy4g0,95,192,1|l0b5rz,95,192,1|l0b5s0,94,195,0|l9o73z,94,195,0|l9o740,95,192,1|lj18fz,95,192,1|lj18g0,94,195,0|lse9rz,94,195,0|lse9s0,95,192,1|m1rb3z,95,192,1|m1rb40,94,195,0|mbhb3z,94,195,0|mbhb40,95,192,1|mkucfz,95,192,1|mkucg0,94,195,0|mu7drz,94,195,0|mu7ds0,95,192,1|n3kf3z,95,192,1|n3kf40,94,195,0|ncxgfz,94,195,0|ncxgg0,95,192,1|nmahrz,95,192,1|nmahs0,94,195,0|nvnj3z,94,195,0|nvnj40,95,192,1|o50kfz,95,192,1|o50kg0,94,195,0|oedlrz,94,195,0|oedls0,95,192,1|onqn3z,95,192,1|onqn40,94,195,0|ox3ofz,94,195,0|ox3og0,95,192,1|p6gprz,95,192,1|p6gps0,94,195,0|pg6prz,94,195,0|pg6ps0,95,192,1|ppjr3z,95,192,1|ppjr40,94,195,0|pywsfz,94,195,0|pywsg0,95,192,1|q89trz,95,192,1|q89ts0,94,195,0|qhmv3z,94,195,0|qhmv40,95,192,1|qqzwfz,95,192,1|qqzwg0,94,195,0|r0cxrz,94,195,0|r0cxs0,95,192,1|r9pz3z,95,192,1|r9pz40,94,195,0|rj30fz,94,195,0|rj30g0,95,192,1|rsg1rz,95,192,1|rsg1s0,94,195,0|s1t33z,94,195,0|s1t340,95,192,1|sbj33z,95,192,1|sbj340,94,195,0|skw4fz,94,195,0|skw4g0,95,192,1|su95rz,95,192,1|su95s0,94,195,0|t3m73z,94,195,0|t3m740,95,192,1|tcz8fz,95,192,1|tcz8g0,94,195,0|tmc9rz,94,195,0|tmc9s0,95,192,1|tvpb3z,95,192,1|tvpb40,94,195,0|u52cfz,94,195,0|u52cg0,95,192,1|uefdrz,95,192,1|uefds0,94,195,0|unsf3z,94,195,0|unsf40,95,192,1|ux5gfz,95,192,1|ux5gg0,94,195,0|v6vgfz,94,195,0|v6vgg0,95,192,1|vg8hrz,95,192,1|vg8hs0,94,195,0|vplj3z,94,195,0|vplj40,95,192,1|vyykfz,95,192,1|vyykg0,94,195,0|w8blrz,94,195,0|w8bls0,95,192,1|whon3z,95,192,1|whon40,94,195,0|wr1ofz,94,195,0|wr1og0,95,192,1|x0eprz,95,192,1|x0eps0,94,195,0|x9rr3z,94,195,0|x9rr40,95,192,1|xj4sfz,95,192,1|xj4sg0,94,195,0|xshtrz,94,195,0|xshts0,95,192,1|y1uv3z,95,192,1|y1uv40,94,195,0|ybkv3z,94,195,0|ybkv40,95,192,1|ykxwfz,95,192,1|ykxwg0,94,195,0|yuaxrz,94,195,0|yuaxs0,95,192,1|z3nz3z,95,192,1|z3nz40,94,195,0|zd10fz,94,195,0|zd10g0,95,192,1\",\"Etc/GMT+1|,199,15,0\",\"Etc/GMT+10|,208,36,0\",\"Etc/GMT+11|,209,35,0\",\"Etc/GMT+12|,210,403,0\",\"Etc/GMT+2|,200,45,0\",\"Etc/GMT+3|,201,44,0\",\"Etc/GMT+4|,202,42,0\",\"Etc/GMT+5|,203,63,0\",\"Etc/GMT+6|,204,62,0\",\"Etc/GMT+7|,205,66,0\",\"Etc/GMT+8|,206,40,0\",\"Etc/GMT+9|,207,37,0\",\"Etc/GMT-1|,198,10,0\",\"Etc/GMT-10|,189,195,0\",\"Etc/GMT-11|,188,192,0\",\"Etc/GMT-12|,187,200,0\",\"Etc/GMT-13|,186,201,0\",\"Etc/GMT-14|,185,207,0\",\"Etc/GMT-2|,197,11,0\",\"Etc/GMT-3|,196,6,0\",\"Etc/GMT-4|,195,209,0\",\"Etc/GMT-5|,194,194,0\",\"Etc/GMT-6|,193,196,0\",\"Etc/GMT-7|,192,193,0\",\"Etc/GMT-8|,191,191,0\",\"Etc/GMT-9|,190,224,0\",\"Europe/Amsterdam|,0,326,0|-1ygf4wk,44,326,0|-s0dvkl,44,326,0|-s0dvkk,24,327,1|-rsimcl,24,327,1|-rsimck,44,326,0|-ridkol,44,326,0|-ridkok,24,327,1|-rage0l,24,327,1|-rage0k,44,326,0|-r0dfcl,44,326,0|-r0dfck,24,327,1|-qr0e0l,24,327,1|-qr0e0k,44,326,0|-qhae0l,44,326,0|-qhae0k,24,327,1|-q8abcl,24,327,1|-q8abck,44,326,0|-pykbcl,44,326,0|-pykbck,24,327,1|-ppk8ol,24,327,1|-ppk8ok,44,326,0|-pfu8ol,44,326,0|-pfu8ok,24,327,1|-p6u60l,24,327,1|-p6u60k,44,326,0|-oxizcl,44,326,0|-oxizck,24,327,1|-ong0ol,24,327,1|-ong0ok,44,326,0|-obazcl,44,326,0|-obazck,24,327,1|-o4py0l,24,327,1|-o4py0k,44,326,0|-nvpvcl,44,326,0|-nvpvck,24,327,1|-nlzvcl,24,327,1|-nlzvck,44,326,0|-n9hvcl,44,326,0|-n9hvck,24,327,1|-n39sol,24,327,1|-n39sok,44,326,0|-mrsu0l,44,326,0|-mrsu0k,24,327,1|-mkjq0l,24,327,1|-mkjq0k,44,326,0|-m90wol,44,326,0|-m90wok,24,327,1|-m1tncl,24,327,1|-m1tnck,44,326,0|-lq74ol,44,326,0|-lq74ok,24,327,1|-liqm0l,24,327,1|-liqm0k,44,326,0|-l7f7cl,44,326,0|-l7f7ck,24,327,1|-l00jcl,24,327,1|-l00jck,44,326,0|-kona0l,44,326,0|-kona0k,24,327,1|-khagol,24,327,1|-khagok,44,326,0|-k5vcol,44,326,0|-k5vcok,24,327,1|-jyke0l,24,327,1|-jyke0k,44,326,0|-jmom0l,44,326,0|-jmom0k,24,327,1|-jfubcl,24,327,1|-jfubck,44,326,0|-j49ncl,44,326,0|-j49nck,24,327,1|-iwra0l,24,327,1|-iwra0k,44,326,0|-ilhq0l,44,326,0|-ilhq0k,24,327,1|-ie17cl,24,327,1|-ie17ck,44,326,0|-i2psol,44,326,0|-i2psok,24,327,1|-hvb4ol,24,327,1|-hvb4ok,44,326,0|-hjw0ol,44,326,0|-hjw0ok,24,327,1|-hcl20l,24,327,1|-hcl20k,44,326,0|-h0r4ol,44,326,0|-h0r4ok,24,327,1|-gypacl,24,327,1|-gypack,146,328,1|-gtuzdd,146,328,1|-gtuzdc,2,2,0|-gic61d,2,2,0|-gic61c,146,328,1|-gb4wpd,146,328,1|-gb4wpc,2,2,0|-fzk8pd,2,2,0|-fzk8pc,146,328,1|-fs1vdd,146,328,1|-fs1vdc,2,2,0|-fgorld,2,2,0|-fgorlc,11,11,1|-e6dzw1,11,11,1|-e6dzw0,10,10,0|-dytrw1,10,10,0|-dytrw0,11,11,1|-dp3rw1,11,11,1|-dp3rw0,10,10,0|-dfqqk1,10,10,0|-dfqqk0,11,11,1|-d6dp81,11,11,1|-d6dp80,10,10,0|-cx0nw1,10,10,0|-cx0nw0,11,11,1|-cofek1,11,11,1|-cofek0,10,10,0|3s9mrz,10,10,0|3s9ms0,11,11,1|419pfz,11,11,1|419pg0,10,10,0|4azpfz,10,10,0|4azpg0,11,11,1|4kcqrz,11,11,1|4kcqs0,10,10,0|4tps3z,10,10,0|4tps40,11,11,1|532tfz,11,11,1|532tg0,10,10,0|5cstfz,10,10,0|5cstg0,11,11,1|5lsw3z,11,11,1|5lsw40,10,10,0|5v5xfz,10,10,0|5v5xg0,11,11,1|64iyrz,11,11,1|64iys0,10,10,0|6dw03z,10,10,0|6dw040,11,11,1|6n91fz,11,11,1|6n91g0,10,10,0|6wm2rz,10,10,0|6wm2s0,11,11,1|75z43z,11,11,1|75z440,10,10,0|7fc5fz,10,10,0|7fc5g0,11,11,1|7p25fz,11,11,1|7p25g0,10,10,0|7yf6rz,10,10,0|7yf6s0,11,11,1|87s83z,11,11,1|87s840,10,10,0|8h59fz,10,10,0|8h59g0,11,11,1|8qiarz,11,11,1|8qias0,10,10,0|8zvc3z,10,10,0|8zvc40,11,11,1|998dfz,11,11,1|998dg0,10,10,0|9ilerz,10,10,0|9iles0,11,11,1|9ryg3z,11,11,1|9ryg40,10,10,0|a1bhfz,10,10,0|a1bhg0,11,11,1|aaoirz,11,11,1|aaois0,10,10,0|ak1k3z,10,10,0|ak1k40,11,11,1|atrk3z,11,11,1|atrk40,10,10,0|b34lfz,10,10,0|b34lg0,11,11,1|bchmrz,11,11,1|bchms0,10,10,0|bluo3z,10,10,0|bluo40,11,11,1|bv7pfz,11,11,1|bv7pg0,10,10,0|c4kqrz,10,10,0|c4kqs0,11,11,1|cdxs3z,11,11,1|cdxs40,10,10,0|cnatfz,10,10,0|cnatg0,11,11,1|cwnurz,11,11,1|cwnus0,10,10,0|d60w3z,10,10,0|d60w40,11,11,1|dfdxfz,11,11,1|dfdxg0,10,10,0|dp3xfz,10,10,0|dp3xg0,11,11,1|dzwtfz,11,11,1|dzwtg0,10,10,0|e7u03z,10,10,0|e7u040,11,11,1|eimw3z,11,11,1|eimw40,10,10,0|eqk2rz,10,10,0|eqk2s0,11,11,1|f1cyrz,11,11,1|f1cys0,10,10,0|f9a5fz,10,10,0|f9a5g0,11,11,1|fkg03z,11,11,1|fkg040,10,10,0|fs083z,10,10,0|fs0840,11,11,1|g362rz,11,11,1|g362s0,10,10,0|gaqarz,10,10,0|gaqas0,11,11,1|glw5fz,11,11,1|glw5g0,10,10,0|gttc3z,10,10,0|gttc40,11,11,1|h4m83z,11,11,1|h4m840,10,10,0|hcjerz,10,10,0|hcjes0,11,11,1|hncarz,11,11,1|hncas0,10,10,0|hv9hfz,10,10,0|hv9hg0,11,11,1|i6fc3z,11,11,1|i6fc40,10,10,0|idzk3z,10,10,0|idzk40,11,11,1|ip5erz,11,11,1|ip5es0,10,10,0|iwpmrz,10,10,0|iwpms0,11,11,1|j7vhfz,11,11,1|j7vhg0,10,10,0|jffpfz,10,10,0|jffpg0,11,11,1|jqlk3z,11,11,1|jqlk40,10,10,0|jyiqrz,10,10,0|jyiqs0,11,11,1|k9bmrz,11,11,1|k9bms0,10,10,0|kh8tfz,10,10,0|kh8tg0,11,11,1|ks1pfz,11,11,1|ks1pg0,10,10,0|kzyw3z,10,10,0|kzyw40,11,11,1|lb4qrz,11,11,1|lb4qs0,10,10,0|lioyrz,10,10,0|lioys0,11,11,1|ltutfz,11,11,1|ltutg0,10,10,0|m1f1fz,10,10,0|m1f1g0,11,11,1|mckw3z,11,11,1|mckw40,10,10,0|mki2rz,10,10,0|mki2s0,11,11,1|mvayrz,11,11,1|mvays0,10,10,0|n385fz,10,10,0|n385g0,11,11,1|ne11fz,11,11,1|ne11g0,10,10,0|nly83z,10,10,0|nly840,11,11,1|nwr43z,11,11,1|nwr440,10,10,0|o4oarz,10,10,0|o4oas0,11,11,1|ofu5fz,11,11,1|ofu5g0,10,10,0|onedfz,10,10,0|onedg0,11,11,1|oyk83z,11,11,1|oyk840,10,10,0|p64g3z,10,10,0|p64g40,11,11,1|phaarz,11,11,1|phaas0,10,10,0|pp7hfz,10,10,0|pp7hg0,11,11,1|q00dfz,11,11,1|q00dg0,10,10,0|q7xk3z,10,10,0|q7xk40,11,11,1|qiqg3z,11,11,1|qiqg40,10,10,0|qqnmrz,10,10,0|qqnms0,11,11,1|r1thfz,11,11,1|r1thg0,10,10,0|r9dpfz,10,10,0|r9dpg0,11,11,1|rkjk3z,11,11,1|rkjk40,10,10,0|rs3s3z,10,10,0|rs3s40,11,11,1|s39mrz,11,11,1|s39ms0,10,10,0|sb6tfz,10,10,0|sb6tg0,11,11,1|slzpfz,11,11,1|slzpg0,10,10,0|stww3z,10,10,0|stww40,11,11,1|t4ps3z,11,11,1|t4ps40,10,10,0|tcmyrz,10,10,0|tcmys0,11,11,1|tnfurz,11,11,1|tnfus0,10,10,0|tvd1fz,10,10,0|tvd1g0,11,11,1|u6iw3z,11,11,1|u6iw40,10,10,0|ue343z,10,10,0|ue3440,11,11,1|up8yrz,11,11,1|up8ys0,10,10,0|uwt6rz,10,10,0|uwt6s0,11,11,1|v7z1fz,11,11,1|v7z1g0,10,10,0|vfw83z,10,10,0|vfw840,11,11,1|vqp43z,11,11,1|vqp440,10,10,0|vymarz,10,10,0|vymas0,11,11,1|w9f6rz,11,11,1|w9f6s0,10,10,0|whcdfz,10,10,0|whcdg0,11,11,1|wsi83z,11,11,1|wsi840,10,10,0|x02g3z,10,10,0|x02g40,11,11,1|xb8arz,11,11,1|xb8as0,10,10,0|xisirz,10,10,0|xisis0,11,11,1|xtydfz,11,11,1|xtydg0,10,10,0|y1ilfz,10,10,0|y1ilg0,11,11,1|ycog3z,11,11,1|ycog40,10,10,0|yklmrz,10,10,0|yklms0,11,11,1|yveirz,11,11,1|yveis0,10,10,0|z3bpfz,10,10,0|z3bpg0,11,11,1|ze4lfz,11,11,1|ze4lg0,10,10,0\",\"Europe/Andorra|,0,329,0|-100edm4,8,1,0|-c4xmo1,8,1,0|-c4xmo0,10,10,0|7yf6rz,10,10,0|7yf6s0,11,11,1|87s83z,11,11,1|87s840,10,10,0|8h59fz,10,10,0|8h59g0,11,11,1|8qiarz,11,11,1|8qias0,10,10,0|8zvc3z,10,10,0|8zvc40,11,11,1|998dfz,11,11,1|998dg0,10,10,0|9ilerz,10,10,0|9iles0,11,11,1|9ryg3z,11,11,1|9ryg40,10,10,0|a1bhfz,10,10,0|a1bhg0,11,11,1|aaoirz,11,11,1|aaois0,10,10,0|ak1k3z,10,10,0|ak1k40,11,11,1|atrk3z,11,11,1|atrk40,10,10,0|b34lfz,10,10,0|b34lg0,11,11,1|bchmrz,11,11,1|bchms0,10,10,0|bluo3z,10,10,0|bluo40,11,11,1|bv7pfz,11,11,1|bv7pg0,10,10,0|c4kqrz,10,10,0|c4kqs0,11,11,1|cdxs3z,11,11,1|cdxs40,10,10,0|cnatfz,10,10,0|cnatg0,11,11,1|cwnurz,11,11,1|cwnus0,10,10,0|d60w3z,10,10,0|d60w40,11,11,1|dfdxfz,11,11,1|dfdxg0,10,10,0|dp3xfz,10,10,0|dp3xg0,11,11,1|dzwtfz,11,11,1|dzwtg0,10,10,0|e7u03z,10,10,0|e7u040,11,11,1|eimw3z,11,11,1|eimw40,10,10,0|eqk2rz,10,10,0|eqk2s0,11,11,1|f1cyrz,11,11,1|f1cys0,10,10,0|f9a5fz,10,10,0|f9a5g0,11,11,1|fkg03z,11,11,1|fkg040,10,10,0|fs083z,10,10,0|fs0840,11,11,1|g362rz,11,11,1|g362s0,10,10,0|gaqarz,10,10,0|gaqas0,11,11,1|glw5fz,11,11,1|glw5g0,10,10,0|gttc3z,10,10,0|gttc40,11,11,1|h4m83z,11,11,1|h4m840,10,10,0|hcjerz,10,10,0|hcjes0,11,11,1|hncarz,11,11,1|hncas0,10,10,0|hv9hfz,10,10,0|hv9hg0,11,11,1|i6fc3z,11,11,1|i6fc40,10,10,0|idzk3z,10,10,0|idzk40,11,11,1|ip5erz,11,11,1|ip5es0,10,10,0|iwpmrz,10,10,0|iwpms0,11,11,1|j7vhfz,11,11,1|j7vhg0,10,10,0|jffpfz,10,10,0|jffpg0,11,11,1|jqlk3z,11,11,1|jqlk40,10,10,0|jyiqrz,10,10,0|jyiqs0,11,11,1|k9bmrz,11,11,1|k9bms0,10,10,0|kh8tfz,10,10,0|kh8tg0,11,11,1|ks1pfz,11,11,1|ks1pg0,10,10,0|kzyw3z,10,10,0|kzyw40,11,11,1|lb4qrz,11,11,1|lb4qs0,10,10,0|lioyrz,10,10,0|lioys0,11,11,1|ltutfz,11,11,1|ltutg0,10,10,0|m1f1fz,10,10,0|m1f1g0,11,11,1|mckw3z,11,11,1|mckw40,10,10,0|mki2rz,10,10,0|mki2s0,11,11,1|mvayrz,11,11,1|mvays0,10,10,0|n385fz,10,10,0|n385g0,11,11,1|ne11fz,11,11,1|ne11g0,10,10,0|nly83z,10,10,0|nly840,11,11,1|nwr43z,11,11,1|nwr440,10,10,0|o4oarz,10,10,0|o4oas0,11,11,1|ofu5fz,11,11,1|ofu5g0,10,10,0|onedfz,10,10,0|onedg0,11,11,1|oyk83z,11,11,1|oyk840,10,10,0|p64g3z,10,10,0|p64g40,11,11,1|phaarz,11,11,1|phaas0,10,10,0|pp7hfz,10,10,0|pp7hg0,11,11,1|q00dfz,11,11,1|q00dg0,10,10,0|q7xk3z,10,10,0|q7xk40,11,11,1|qiqg3z,11,11,1|qiqg40,10,10,0|qqnmrz,10,10,0|qqnms0,11,11,1|r1thfz,11,11,1|r1thg0,10,10,0|r9dpfz,10,10,0|r9dpg0,11,11,1|rkjk3z,11,11,1|rkjk40,10,10,0|rs3s3z,10,10,0|rs3s40,11,11,1|s39mrz,11,11,1|s39ms0,10,10,0|sb6tfz,10,10,0|sb6tg0,11,11,1|slzpfz,11,11,1|slzpg0,10,10,0|stww3z,10,10,0|stww40,11,11,1|t4ps3z,11,11,1|t4ps40,10,10,0|tcmyrz,10,10,0|tcmys0,11,11,1|tnfurz,11,11,1|tnfus0,10,10,0|tvd1fz,10,10,0|tvd1g0,11,11,1|u6iw3z,11,11,1|u6iw40,10,10,0|ue343z,10,10,0|ue3440,11,11,1|up8yrz,11,11,1|up8ys0,10,10,0|uwt6rz,10,10,0|uwt6s0,11,11,1|v7z1fz,11,11,1|v7z1g0,10,10,0|vfw83z,10,10,0|vfw840,11,11,1|vqp43z,11,11,1|vqp440,10,10,0|vymarz,10,10,0|vymas0,11,11,1|w9f6rz,11,11,1|w9f6s0,10,10,0|whcdfz,10,10,0|whcdg0,11,11,1|wsi83z,11,11,1|wsi840,10,10,0|x02g3z,10,10,0|x02g40,11,11,1|xb8arz,11,11,1|xb8as0,10,10,0|xisirz,10,10,0|xisis0,11,11,1|xtydfz,11,11,1|xtydg0,10,10,0|y1ilfz,10,10,0|y1ilg0,11,11,1|ycog3z,11,11,1|ycog40,10,10,0|yklmrz,10,10,0|yklms0,11,11,1|yveirz,11,11,1|yveis0,10,10,0|z3bpfz,10,10,0|z3bpg0,11,11,1|ze4lfz,11,11,1|ze4lg0,10,10,0\",\"Europe/Astrakhan|,0,330,0|-nu2zkc,100,6,0|-kmr4c1,100,6,0|-kmr4c0,105,209,0|5vb3jz,105,209,0|5vb3k0,92,194,1|64pwrz,92,194,1|64pws0,105,209,0|6e30vz,105,209,0|6e30w0,92,194,1|6nhu3z,92,194,1|6nhu40,105,209,0|6wuy7z,105,209,0|6wuy80,92,194,1|769rfz,92,194,1|769rg0,105,209,0|7foq7z,105,209,0|7foq80,92,194,1|7p1x3z,92,194,1|7p1x40,105,209,0|7yeyfz,105,209,0|7yeyg0,92,194,1|87rzrz,92,194,1|87rzs0,105,209,0|8h513z,105,209,0|8h5140,92,194,1|8qi2fz,92,194,1|8qi2g0,105,209,0|8zv3rz,105,209,0|8zv3s0,92,194,1|99853z,92,194,1|998540,105,209,0|9il6fz,105,209,0|9il6g0,92,194,1|9ry7rz,92,194,1|9ry7s0,105,209,0|a1b93z,105,209,0|a1b940,105,209,1|aaod7z,105,209,1|aaod80,100,6,0|ak1ejz,100,6,0|ak1ek0,105,209,1|atrejz,105,209,1|atrek0,100,6,0|b34fvz,100,6,0|b34fw0,105,209,0|blufrz,105,209,0|blufs0,105,209,1|bv7jvz,105,209,1|bv7jw0,100,6,0|c4kl7z,100,6,0|c4kl80,105,209,1|cdxmjz,105,209,1|cdxmk0,100,6,0|cnanvz,100,6,0|cnanw0,105,209,1|cwnp7z,105,209,1|cwnp80,100,6,0|d60qjz,100,6,0|d60qk0,105,209,1|dfdrvz,105,209,1|dfdrw0,100,6,0|dp3rvz,100,6,0|dp3rw0,105,209,1|dzwnvz,105,209,1|dzwnw0,100,6,0|e7tujz,100,6,0|e7tuk0,105,209,1|eimqjz,105,209,1|eimqk0,100,6,0|eqjx7z,100,6,0|eqjx80,105,209,1|f1ct7z,105,209,1|f1ct80,100,6,0|f99zvz,100,6,0|f99zw0,105,209,1|fkfujz,105,209,1|fkfuk0,100,6,0|fs02jz,100,6,0|fs02k0,105,209,1|g35x7z,105,209,1|g35x80,100,6,0|gaq57z,100,6,0|gaq580,105,209,1|glvzvz,105,209,1|glvzw0,100,6,0|gtt6jz,100,6,0|gtt6k0,105,209,1|h4m2jz,105,209,1|h4m2k0,100,6,0|hcj97z,100,6,0|hcj980,105,209,1|hnc57z,105,209,1|hnc580,100,6,0|hv9bvz,100,6,0|hv9bw0,105,209,1|i6f6jz,105,209,1|i6f6k0,100,6,0|idzejz,100,6,0|idzek0,105,209,1|ip597z,105,209,1|ip5980,100,6,0|iwph7z,100,6,0|iwph80,105,209,1|j7vbvz,105,209,1|j7vbw0,100,6,0|jffjvz,100,6,0|jffjw0,105,209,1|jqlejz,105,209,1|jqlek0,100,6,0|jyil7z,100,6,0|jyil80,105,209,1|k9bh7z,105,209,1|k9bh80,100,6,0|kh8nvz,100,6,0|kh8nw0,105,209,1|ks1jvz,105,209,1|ks1jw0,100,6,0|kzyqjz,100,6,0|kzyqk0,105,209,1|lb4l7z,105,209,1|lb4l80,100,6,0|liot7z,100,6,0|liot80,105,209,0|ne0t3z,105,209,0|ne0t40,100,6,0|o4o57z,100,6,0|o4o580,105,209,0\",\"Europe/Athens|,0,331,0|-12rxtq4,44,331,0|-rvv0ch,44,331,0|-rvv0cg,15,11,0|-jkbpk1,15,11,0|-jkbpk0,16,6,1|-jhg301,16,6,1|-jhg300,15,11,0|-ezx6w1,15,11,0|-ezx6w0,16,6,1|-eyqoc1,16,6,1|-eyqoc0,11,11,1|-e6dzw1,11,11,1|-e6dzw0,10,10,0|-dys2s1,10,10,0|-dys2s0,11,11,1|-dp4081,11,11,1|-dp4080,10,10,0|-dfp1g1,10,10,0|-dfp1g0,15,11,0|-94v1k1,15,11,0|-94v1k0,16,6,1|-8yhho1,16,6,1|-8yhho0,15,11,0|2r4d3z,15,11,0|2r4d40,16,6,1|32ul3z,16,6,1|32ul40,15,11,0|39wfzz,15,11,0|39wg00,16,6,1|3j9hbz,16,6,1|3j9hc0,15,11,0|3s9jzz,15,11,0|3s9k00,16,6,1|41bhbz,16,6,1|41bhc0,15,11,0|4azmnz,15,11,0|4azmo0,16,6,1|4jzs3z,16,6,1|4jzs40,15,11,0|4tq8rz,15,11,0|4tq8s0,16,6,1|530t7z,16,6,1|530t80,15,11,0|5cjbrz,15,11,0|5cjbs0,16,6,1|5lskzz,16,6,1|5lsl00,15,11,0|5v5xfz,15,11,0|5v5xg0,16,6,1|64iyrz,16,6,1|64iys0,15,11,0|6dw03z,15,11,0|6dw040,16,6,1|6n91fz,16,6,1|6n91g0,15,11,0|6wm2rz,15,11,0|6wm2s0,16,6,1|75z43z,16,6,1|75z440,15,11,0|7fc5fz,15,11,0|7fc5g0,16,6,1|7p25fz,16,6,1|7p25g0,15,11,0|7yf6rz,15,11,0|7yf6s0,16,6,1|87s83z,16,6,1|87s840,15,11,0|8h59fz,15,11,0|8h59g0,16,6,1|8qiarz,16,6,1|8qias0,15,11,0|8zvc3z,15,11,0|8zvc40,16,6,1|998dfz,16,6,1|998dg0,15,11,0|9ilerz,15,11,0|9iles0,16,6,1|9ryg3z,16,6,1|9ryg40,15,11,0|a1bhfz,15,11,0|a1bhg0,16,6,1|aaoirz,16,6,1|aaois0,15,11,0|ak1k3z,15,11,0|ak1k40,16,6,1|atrk3z,16,6,1|atrk40,15,11,0|b34lfz,15,11,0|b34lg0,16,6,1|bchmrz,16,6,1|bchms0,15,11,0|bluo3z,15,11,0|bluo40,16,6,1|bv7pfz,16,6,1|bv7pg0,15,11,0|c4kqrz,15,11,0|c4kqs0,16,6,1|cdxs3z,16,6,1|cdxs40,15,11,0|cnatfz,15,11,0|cnatg0,16,6,1|cwnurz,16,6,1|cwnus0,15,11,0|d60w3z,15,11,0|d60w40,16,6,1|dfdxfz,16,6,1|dfdxg0,15,11,0|dp3xfz,15,11,0|dp3xg0,16,6,1|dzwtfz,16,6,1|dzwtg0,15,11,0|e7u03z,15,11,0|e7u040,16,6,1|eimw3z,16,6,1|eimw40,15,11,0|eqk2rz,15,11,0|eqk2s0,16,6,1|f1cyrz,16,6,1|f1cys0,15,11,0|f9a5fz,15,11,0|f9a5g0,16,6,1|fkg03z,16,6,1|fkg040,15,11,0|fs083z,15,11,0|fs0840,16,6,1|g362rz,16,6,1|g362s0,15,11,0|gaqarz,15,11,0|gaqas0,16,6,1|glw5fz,16,6,1|glw5g0,15,11,0|gttc3z,15,11,0|gttc40,16,6,1|h4m83z,16,6,1|h4m840,15,11,0|hcjerz,15,11,0|hcjes0,16,6,1|hncarz,16,6,1|hncas0,15,11,0|hv9hfz,15,11,0|hv9hg0,16,6,1|i6fc3z,16,6,1|i6fc40,15,11,0|idzk3z,15,11,0|idzk40,16,6,1|ip5erz,16,6,1|ip5es0,15,11,0|iwpmrz,15,11,0|iwpms0,16,6,1|j7vhfz,16,6,1|j7vhg0,15,11,0|jffpfz,15,11,0|jffpg0,16,6,1|jqlk3z,16,6,1|jqlk40,15,11,0|jyiqrz,15,11,0|jyiqs0,16,6,1|k9bmrz,16,6,1|k9bms0,15,11,0|kh8tfz,15,11,0|kh8tg0,16,6,1|ks1pfz,16,6,1|ks1pg0,15,11,0|kzyw3z,15,11,0|kzyw40,16,6,1|lb4qrz,16,6,1|lb4qs0,15,11,0|lioyrz,15,11,0|lioys0,16,6,1|ltutfz,16,6,1|ltutg0,15,11,0|m1f1fz,15,11,0|m1f1g0,16,6,1|mckw3z,16,6,1|mckw40,15,11,0|mki2rz,15,11,0|mki2s0,16,6,1|mvayrz,16,6,1|mvays0,15,11,0|n385fz,15,11,0|n385g0,16,6,1|ne11fz,16,6,1|ne11g0,15,11,0|nly83z,15,11,0|nly840,16,6,1|nwr43z,16,6,1|nwr440,15,11,0|o4oarz,15,11,0|o4oas0,16,6,1|ofu5fz,16,6,1|ofu5g0,15,11,0|onedfz,15,11,0|onedg0,16,6,1|oyk83z,16,6,1|oyk840,15,11,0|p64g3z,15,11,0|p64g40,16,6,1|phaarz,16,6,1|phaas0,15,11,0|pp7hfz,15,11,0|pp7hg0,16,6,1|q00dfz,16,6,1|q00dg0,15,11,0|q7xk3z,15,11,0|q7xk40,16,6,1|qiqg3z,16,6,1|qiqg40,15,11,0|qqnmrz,15,11,0|qqnms0,16,6,1|r1thfz,16,6,1|r1thg0,15,11,0|r9dpfz,15,11,0|r9dpg0,16,6,1|rkjk3z,16,6,1|rkjk40,15,11,0|rs3s3z,15,11,0|rs3s40,16,6,1|s39mrz,16,6,1|s39ms0,15,11,0|sb6tfz,15,11,0|sb6tg0,16,6,1|slzpfz,16,6,1|slzpg0,15,11,0|stww3z,15,11,0|stww40,16,6,1|t4ps3z,16,6,1|t4ps40,15,11,0|tcmyrz,15,11,0|tcmys0,16,6,1|tnfurz,16,6,1|tnfus0,15,11,0|tvd1fz,15,11,0|tvd1g0,16,6,1|u6iw3z,16,6,1|u6iw40,15,11,0|ue343z,15,11,0|ue3440,16,6,1|up8yrz,16,6,1|up8ys0,15,11,0|uwt6rz,15,11,0|uwt6s0,16,6,1|v7z1fz,16,6,1|v7z1g0,15,11,0|vfw83z,15,11,0|vfw840,16,6,1|vqp43z,16,6,1|vqp440,15,11,0|vymarz,15,11,0|vymas0,16,6,1|w9f6rz,16,6,1|w9f6s0,15,11,0|whcdfz,15,11,0|whcdg0,16,6,1|wsi83z,16,6,1|wsi840,15,11,0|x02g3z,15,11,0|x02g40,16,6,1|xb8arz,16,6,1|xb8as0,15,11,0|xisirz,15,11,0|xisis0,16,6,1|xtydfz,16,6,1|xtydg0,15,11,0|y1ilfz,15,11,0|y1ilg0,16,6,1|ycog3z,16,6,1|ycog40,15,11,0|yklmrz,15,11,0|yklms0,16,6,1|yveirz,16,6,1|yveis0,15,11,0|z3bpfz,15,11,0|z3bpg0,16,6,1|ze4lfz,16,6,1|ze4lg0,15,11,0\",\"Europe/Belgrade|,0,332,0|-18vsmgo,10,10,0|-ezayw1,10,10,0|-ezayw0,11,11,1|-e6dzw1,11,11,1|-e6dzw0,10,10,0|-dytrw1,10,10,0|-dytrw0,11,11,1|-dp3rw1,11,11,1|-dp3rw0,10,10,0|-dfqqk1,10,10,0|-dfqqk0,11,11,1|-d6dp81,11,11,1|-d6dp80,10,10,0|-cv5zw1,10,10,0|-cv5zw0,11,11,1|-cofek1,11,11,1|-cofek0,10,10,0|6wm2rz,10,10,0|6wm2s0,11,11,1|75z43z,11,11,1|75z440,10,10,0|7fc5fz,10,10,0|7fc5g0,11,11,1|7p25fz,11,11,1|7p25g0,10,10,0|7yf6rz,10,10,0|7yf6s0,11,11,1|87s83z,11,11,1|87s840,10,10,0|8h59fz,10,10,0|8h59g0,11,11,1|8qiarz,11,11,1|8qias0,10,10,0|8zvc3z,10,10,0|8zvc40,11,11,1|998dfz,11,11,1|998dg0,10,10,0|9ilerz,10,10,0|9iles0,11,11,1|9ryg3z,11,11,1|9ryg40,10,10,0|a1bhfz,10,10,0|a1bhg0,11,11,1|aaoirz,11,11,1|aaois0,10,10,0|ak1k3z,10,10,0|ak1k40,11,11,1|atrk3z,11,11,1|atrk40,10,10,0|b34lfz,10,10,0|b34lg0,11,11,1|bchmrz,11,11,1|bchms0,10,10,0|bluo3z,10,10,0|bluo40,11,11,1|bv7pfz,11,11,1|bv7pg0,10,10,0|c4kqrz,10,10,0|c4kqs0,11,11,1|cdxs3z,11,11,1|cdxs40,10,10,0|cnatfz,10,10,0|cnatg0,11,11,1|cwnurz,11,11,1|cwnus0,10,10,0|d60w3z,10,10,0|d60w40,11,11,1|dfdxfz,11,11,1|dfdxg0,10,10,0|dp3xfz,10,10,0|dp3xg0,11,11,1|dzwtfz,11,11,1|dzwtg0,10,10,0|e7u03z,10,10,0|e7u040,11,11,1|eimw3z,11,11,1|eimw40,10,10,0|eqk2rz,10,10,0|eqk2s0,11,11,1|f1cyrz,11,11,1|f1cys0,10,10,0|f9a5fz,10,10,0|f9a5g0,11,11,1|fkg03z,11,11,1|fkg040,10,10,0|fs083z,10,10,0|fs0840,11,11,1|g362rz,11,11,1|g362s0,10,10,0|gaqarz,10,10,0|gaqas0,11,11,1|glw5fz,11,11,1|glw5g0,10,10,0|gttc3z,10,10,0|gttc40,11,11,1|h4m83z,11,11,1|h4m840,10,10,0|hcjerz,10,10,0|hcjes0,11,11,1|hncarz,11,11,1|hncas0,10,10,0|hv9hfz,10,10,0|hv9hg0,11,11,1|i6fc3z,11,11,1|i6fc40,10,10,0|idzk3z,10,10,0|idzk40,11,11,1|ip5erz,11,11,1|ip5es0,10,10,0|iwpmrz,10,10,0|iwpms0,11,11,1|j7vhfz,11,11,1|j7vhg0,10,10,0|jffpfz,10,10,0|jffpg0,11,11,1|jqlk3z,11,11,1|jqlk40,10,10,0|jyiqrz,10,10,0|jyiqs0,11,11,1|k9bmrz,11,11,1|k9bms0,10,10,0|kh8tfz,10,10,0|kh8tg0,11,11,1|ks1pfz,11,11,1|ks1pg0,10,10,0|kzyw3z,10,10,0|kzyw40,11,11,1|lb4qrz,11,11,1|lb4qs0,10,10,0|lioyrz,10,10,0|lioys0,11,11,1|ltutfz,11,11,1|ltutg0,10,10,0|m1f1fz,10,10,0|m1f1g0,11,11,1|mckw3z,11,11,1|mckw40,10,10,0|mki2rz,10,10,0|mki2s0,11,11,1|mvayrz,11,11,1|mvays0,10,10,0|n385fz,10,10,0|n385g0,11,11,1|ne11fz,11,11,1|ne11g0,10,10,0|nly83z,10,10,0|nly840,11,11,1|nwr43z,11,11,1|nwr440,10,10,0|o4oarz,10,10,0|o4oas0,11,11,1|ofu5fz,11,11,1|ofu5g0,10,10,0|onedfz,10,10,0|onedg0,11,11,1|oyk83z,11,11,1|oyk840,10,10,0|p64g3z,10,10,0|p64g40,11,11,1|phaarz,11,11,1|phaas0,10,10,0|pp7hfz,10,10,0|pp7hg0,11,11,1|q00dfz,11,11,1|q00dg0,10,10,0|q7xk3z,10,10,0|q7xk40,11,11,1|qiqg3z,11,11,1|qiqg40,10,10,0|qqnmrz,10,10,0|qqnms0,11,11,1|r1thfz,11,11,1|r1thg0,10,10,0|r9dpfz,10,10,0|r9dpg0,11,11,1|rkjk3z,11,11,1|rkjk40,10,10,0|rs3s3z,10,10,0|rs3s40,11,11,1|s39mrz,11,11,1|s39ms0,10,10,0|sb6tfz,10,10,0|sb6tg0,11,11,1|slzpfz,11,11,1|slzpg0,10,10,0|stww3z,10,10,0|stww40,11,11,1|t4ps3z,11,11,1|t4ps40,10,10,0|tcmyrz,10,10,0|tcmys0,11,11,1|tnfurz,11,11,1|tnfus0,10,10,0|tvd1fz,10,10,0|tvd1g0,11,11,1|u6iw3z,11,11,1|u6iw40,10,10,0|ue343z,10,10,0|ue3440,11,11,1|up8yrz,11,11,1|up8ys0,10,10,0|uwt6rz,10,10,0|uwt6s0,11,11,1|v7z1fz,11,11,1|v7z1g0,10,10,0|vfw83z,10,10,0|vfw840,11,11,1|vqp43z,11,11,1|vqp440,10,10,0|vymarz,10,10,0|vymas0,11,11,1|w9f6rz,11,11,1|w9f6s0,10,10,0|whcdfz,10,10,0|whcdg0,11,11,1|wsi83z,11,11,1|wsi840,10,10,0|x02g3z,10,10,0|x02g40,11,11,1|xb8arz,11,11,1|xb8as0,10,10,0|xisirz,10,10,0|xisis0,11,11,1|xtydfz,11,11,1|xtydg0,10,10,0|y1ilfz,10,10,0|y1ilg0,11,11,1|ycog3z,11,11,1|ycog40,10,10,0|yklmrz,10,10,0|yklms0,11,11,1|yveirz,11,11,1|yveis0,10,10,0|z3bpfz,10,10,0|z3bpg0,11,11,1|ze4lfz,11,11,1|ze4lg0,10,10,0\",\"Europe/Berlin|,0,333,0|-1421154,10,10,0|-s0e081,10,10,0|-s0e080,11,11,1|-rsilg1,11,11,1|-rsilg0,10,10,0|-ridmk1,10,10,0|-ridmk0,11,11,1|-ragfw1,11,11,1|-ragfw0,10,10,0|-qznjw1,10,10,0|-qznjw0,11,11,1|-qrqd81,11,11,1|-qrqd80,10,10,0|-fizzw1,10,10,0|-fizzw0,11,11,1|-e6dzw1,11,11,1|-e6dzw0,10,10,0|-dytrw1,10,10,0|-dytrw0,11,11,1|-dp3rw1,11,11,1|-dp3rw0,10,10,0|-dfqqk1,10,10,0|-dfqqk0,11,11,1|-d6dp81,11,11,1|-d6dp80,10,10,0|-cx0nw1,10,10,0|-cx0nw0,11,11,1|-cucg01,11,11,1|-cucg00,147,6,1|-co0o01,147,6,1|-co0o00,11,11,1|-cl6qk1,11,11,1|-cl6qk0,10,10,0|-cdmik1,10,10,0|-cdmik0,11,11,1|-c4kl81,11,11,1|-c4kl80,10,10,0|-bv9bs1,10,10,0|-bv9bs0,11,11,1|-btgl81,11,11,1|-btgl80,147,6,1|-bqxxc1,147,6,1|-bqxxc0,11,11,1|-blwd81,11,11,1|-blwd80,10,10,0|-bbtek1,10,10,0|-bbtek0,11,11,1|-b36ak1,11,11,1|-b36ak0,10,10,0|-atgak1,10,10,0|-atgak0,11,11,1|-akg7w1,11,11,1|-akg7w0,10,10,0|5cstfz,10,10,0|5cstg0,11,11,1|5lsw3z,11,11,1|5lsw40,10,10,0|5v5xfz,10,10,0|5v5xg0,11,11,1|64iyrz,11,11,1|64iys0,10,10,0|6dw03z,10,10,0|6dw040,11,11,1|6n91fz,11,11,1|6n91g0,10,10,0|6wm2rz,10,10,0|6wm2s0,11,11,1|75z43z,11,11,1|75z440,10,10,0|7fc5fz,10,10,0|7fc5g0,11,11,1|7p25fz,11,11,1|7p25g0,10,10,0|7yf6rz,10,10,0|7yf6s0,11,11,1|87s83z,11,11,1|87s840,10,10,0|8h59fz,10,10,0|8h59g0,11,11,1|8qiarz,11,11,1|8qias0,10,10,0|8zvc3z,10,10,0|8zvc40,11,11,1|998dfz,11,11,1|998dg0,10,10,0|9ilerz,10,10,0|9iles0,11,11,1|9ryg3z,11,11,1|9ryg40,10,10,0|a1bhfz,10,10,0|a1bhg0,11,11,1|aaoirz,11,11,1|aaois0,10,10,0|ak1k3z,10,10,0|ak1k40,11,11,1|atrk3z,11,11,1|atrk40,10,10,0|b34lfz,10,10,0|b34lg0,11,11,1|bchmrz,11,11,1|bchms0,10,10,0|bluo3z,10,10,0|bluo40,11,11,1|bv7pfz,11,11,1|bv7pg0,10,10,0|c4kqrz,10,10,0|c4kqs0,11,11,1|cdxs3z,11,11,1|cdxs40,10,10,0|cnatfz,10,10,0|cnatg0,11,11,1|cwnurz,11,11,1|cwnus0,10,10,0|d60w3z,10,10,0|d60w40,11,11,1|dfdxfz,11,11,1|dfdxg0,10,10,0|dp3xfz,10,10,0|dp3xg0,11,11,1|dzwtfz,11,11,1|dzwtg0,10,10,0|e7u03z,10,10,0|e7u040,11,11,1|eimw3z,11,11,1|eimw40,10,10,0|eqk2rz,10,10,0|eqk2s0,11,11,1|f1cyrz,11,11,1|f1cys0,10,10,0|f9a5fz,10,10,0|f9a5g0,11,11,1|fkg03z,11,11,1|fkg040,10,10,0|fs083z,10,10,0|fs0840,11,11,1|g362rz,11,11,1|g362s0,10,10,0|gaqarz,10,10,0|gaqas0,11,11,1|glw5fz,11,11,1|glw5g0,10,10,0|gttc3z,10,10,0|gttc40,11,11,1|h4m83z,11,11,1|h4m840,10,10,0|hcjerz,10,10,0|hcjes0,11,11,1|hncarz,11,11,1|hncas0,10,10,0|hv9hfz,10,10,0|hv9hg0,11,11,1|i6fc3z,11,11,1|i6fc40,10,10,0|idzk3z,10,10,0|idzk40,11,11,1|ip5erz,11,11,1|ip5es0,10,10,0|iwpmrz,10,10,0|iwpms0,11,11,1|j7vhfz,11,11,1|j7vhg0,10,10,0|jffpfz,10,10,0|jffpg0,11,11,1|jqlk3z,11,11,1|jqlk40,10,10,0|jyiqrz,10,10,0|jyiqs0,11,11,1|k9bmrz,11,11,1|k9bms0,10,10,0|kh8tfz,10,10,0|kh8tg0,11,11,1|ks1pfz,11,11,1|ks1pg0,10,10,0|kzyw3z,10,10,0|kzyw40,11,11,1|lb4qrz,11,11,1|lb4qs0,10,10,0|lioyrz,10,10,0|lioys0,11,11,1|ltutfz,11,11,1|ltutg0,10,10,0|m1f1fz,10,10,0|m1f1g0,11,11,1|mckw3z,11,11,1|mckw40,10,10,0|mki2rz,10,10,0|mki2s0,11,11,1|mvayrz,11,11,1|mvays0,10,10,0|n385fz,10,10,0|n385g0,11,11,1|ne11fz,11,11,1|ne11g0,10,10,0|nly83z,10,10,0|nly840,11,11,1|nwr43z,11,11,1|nwr440,10,10,0|o4oarz,10,10,0|o4oas0,11,11,1|ofu5fz,11,11,1|ofu5g0,10,10,0|onedfz,10,10,0|onedg0,11,11,1|oyk83z,11,11,1|oyk840,10,10,0|p64g3z,10,10,0|p64g40,11,11,1|phaarz,11,11,1|phaas0,10,10,0|pp7hfz,10,10,0|pp7hg0,11,11,1|q00dfz,11,11,1|q00dg0,10,10,0|q7xk3z,10,10,0|q7xk40,11,11,1|qiqg3z,11,11,1|qiqg40,10,10,0|qqnmrz,10,10,0|qqnms0,11,11,1|r1thfz,11,11,1|r1thg0,10,10,0|r9dpfz,10,10,0|r9dpg0,11,11,1|rkjk3z,11,11,1|rkjk40,10,10,0|rs3s3z,10,10,0|rs3s40,11,11,1|s39mrz,11,11,1|s39ms0,10,10,0|sb6tfz,10,10,0|sb6tg0,11,11,1|slzpfz,11,11,1|slzpg0,10,10,0|stww3z,10,10,0|stww40,11,11,1|t4ps3z,11,11,1|t4ps40,10,10,0|tcmyrz,10,10,0|tcmys0,11,11,1|tnfurz,11,11,1|tnfus0,10,10,0|tvd1fz,10,10,0|tvd1g0,11,11,1|u6iw3z,11,11,1|u6iw40,10,10,0|ue343z,10,10,0|ue3440,11,11,1|up8yrz,11,11,1|up8ys0,10,10,0|uwt6rz,10,10,0|uwt6s0,11,11,1|v7z1fz,11,11,1|v7z1g0,10,10,0|vfw83z,10,10,0|vfw840,11,11,1|vqp43z,11,11,1|vqp440,10,10,0|vymarz,10,10,0|vymas0,11,11,1|w9f6rz,11,11,1|w9f6s0,10,10,0|whcdfz,10,10,0|whcdg0,11,11,1|wsi83z,11,11,1|wsi840,10,10,0|x02g3z,10,10,0|x02g40,11,11,1|xb8arz,11,11,1|xb8as0,10,10,0|xisirz,10,10,0|xisis0,11,11,1|xtydfz,11,11,1|xtydg0,10,10,0|y1ilfz,10,10,0|y1ilg0,11,11,1|ycog3z,11,11,1|ycog40,10,10,0|yklmrz,10,10,0|yklms0,11,11,1|yveirz,11,11,1|yveis0,10,10,0|z3bpfz,10,10,0|z3bpg0,11,11,1|ze4lfz,11,11,1|ze4lg0,10,10,0\",\"Europe/Bratislava|,0,334,0|-1qmkw08,7,334,0|-14u7uo9,7,334,0|-14u7uo8,10,10,0|-s0e081,10,10,0|-s0e080,11,11,1|-rsilg1,11,11,1|-rsilg0,10,10,0|-ridmk1,10,10,0|-ridmk0,11,11,1|-ragfw1,11,11,1|-ragfw0,10,10,0|-qznjw1,10,10,0|-qznjw0,11,11,1|-qrqd81,11,11,1|-qrqd80,10,10,0|-fizzw1,10,10,0|-fizzw0,11,11,1|-e6dzw1,11,11,1|-e6dzw0,10,10,0|-dytrw1,10,10,0|-dytrw0,11,11,1|-dp3rw1,11,11,1|-dp3rw0,10,10,0|-dfqqk1,10,10,0|-dfqqk0,11,11,1|-d6dp81,11,11,1|-d6dp80,10,10,0|-cx0nw1,10,10,0|-cx0nw0,11,11,1|-cnnmk1,11,11,1|-cnnmk0,10,10,0|-cchrw1,10,10,0|-cchrw0,11,11,1|-c4mfw1,11,11,1|-c4mfw0,10,10,0|-c1qns1,10,10,0|-c1qns0,1,1,1|-bxf3s1,1,1,1|-bxf3s0,10,10,0|-bujh81,10,10,0|-bujh80,11,11,1|-blwd81,11,11,1|-blwd80,10,10,0|-bbtek1,10,10,0|-bbtek0,11,11,1|-b36ak1,11,11,1|-b36ak0,10,10,0|-ati581,10,10,0|-ati580,11,11,1|-akg7w1,11,11,1|-akg7w0,10,10,0|4tps3z,10,10,0|4tps40,11,11,1|532tfz,11,11,1|532tg0,10,10,0|5cstfz,10,10,0|5cstg0,11,11,1|5lsw3z,11,11,1|5lsw40,10,10,0|5v5xfz,10,10,0|5v5xg0,11,11,1|64iyrz,11,11,1|64iys0,10,10,0|6dw03z,10,10,0|6dw040,11,11,1|6n91fz,11,11,1|6n91g0,10,10,0|6wm2rz,10,10,0|6wm2s0,11,11,1|75z43z,11,11,1|75z440,10,10,0|7fc5fz,10,10,0|7fc5g0,11,11,1|7p25fz,11,11,1|7p25g0,10,10,0|7yf6rz,10,10,0|7yf6s0,11,11,1|87s83z,11,11,1|87s840,10,10,0|8h59fz,10,10,0|8h59g0,11,11,1|8qiarz,11,11,1|8qias0,10,10,0|8zvc3z,10,10,0|8zvc40,11,11,1|998dfz,11,11,1|998dg0,10,10,0|9ilerz,10,10,0|9iles0,11,11,1|9ryg3z,11,11,1|9ryg40,10,10,0|a1bhfz,10,10,0|a1bhg0,11,11,1|aaoirz,11,11,1|aaois0,10,10,0|ak1k3z,10,10,0|ak1k40,11,11,1|atrk3z,11,11,1|atrk40,10,10,0|b34lfz,10,10,0|b34lg0,11,11,1|bchmrz,11,11,1|bchms0,10,10,0|bluo3z,10,10,0|bluo40,11,11,1|bv7pfz,11,11,1|bv7pg0,10,10,0|c4kqrz,10,10,0|c4kqs0,11,11,1|cdxs3z,11,11,1|cdxs40,10,10,0|cnatfz,10,10,0|cnatg0,11,11,1|cwnurz,11,11,1|cwnus0,10,10,0|d60w3z,10,10,0|d60w40,11,11,1|dfdxfz,11,11,1|dfdxg0,10,10,0|dp3xfz,10,10,0|dp3xg0,11,11,1|dzwtfz,11,11,1|dzwtg0,10,10,0|e7u03z,10,10,0|e7u040,11,11,1|eimw3z,11,11,1|eimw40,10,10,0|eqk2rz,10,10,0|eqk2s0,11,11,1|f1cyrz,11,11,1|f1cys0,10,10,0|f9a5fz,10,10,0|f9a5g0,11,11,1|fkg03z,11,11,1|fkg040,10,10,0|fs083z,10,10,0|fs0840,11,11,1|g362rz,11,11,1|g362s0,10,10,0|gaqarz,10,10,0|gaqas0,11,11,1|glw5fz,11,11,1|glw5g0,10,10,0|gttc3z,10,10,0|gttc40,11,11,1|h4m83z,11,11,1|h4m840,10,10,0|hcjerz,10,10,0|hcjes0,11,11,1|hncarz,11,11,1|hncas0,10,10,0|hv9hfz,10,10,0|hv9hg0,11,11,1|i6fc3z,11,11,1|i6fc40,10,10,0|idzk3z,10,10,0|idzk40,11,11,1|ip5erz,11,11,1|ip5es0,10,10,0|iwpmrz,10,10,0|iwpms0,11,11,1|j7vhfz,11,11,1|j7vhg0,10,10,0|jffpfz,10,10,0|jffpg0,11,11,1|jqlk3z,11,11,1|jqlk40,10,10,0|jyiqrz,10,10,0|jyiqs0,11,11,1|k9bmrz,11,11,1|k9bms0,10,10,0|kh8tfz,10,10,0|kh8tg0,11,11,1|ks1pfz,11,11,1|ks1pg0,10,10,0|kzyw3z,10,10,0|kzyw40,11,11,1|lb4qrz,11,11,1|lb4qs0,10,10,0|lioyrz,10,10,0|lioys0,11,11,1|ltutfz,11,11,1|ltutg0,10,10,0|m1f1fz,10,10,0|m1f1g0,11,11,1|mckw3z,11,11,1|mckw40,10,10,0|mki2rz,10,10,0|mki2s0,11,11,1|mvayrz,11,11,1|mvays0,10,10,0|n385fz,10,10,0|n385g0,11,11,1|ne11fz,11,11,1|ne11g0,10,10,0|nly83z,10,10,0|nly840,11,11,1|nwr43z,11,11,1|nwr440,10,10,0|o4oarz,10,10,0|o4oas0,11,11,1|ofu5fz,11,11,1|ofu5g0,10,10,0|onedfz,10,10,0|onedg0,11,11,1|oyk83z,11,11,1|oyk840,10,10,0|p64g3z,10,10,0|p64g40,11,11,1|phaarz,11,11,1|phaas0,10,10,0|pp7hfz,10,10,0|pp7hg0,11,11,1|q00dfz,11,11,1|q00dg0,10,10,0|q7xk3z,10,10,0|q7xk40,11,11,1|qiqg3z,11,11,1|qiqg40,10,10,0|qqnmrz,10,10,0|qqnms0,11,11,1|r1thfz,11,11,1|r1thg0,10,10,0|r9dpfz,10,10,0|r9dpg0,11,11,1|rkjk3z,11,11,1|rkjk40,10,10,0|rs3s3z,10,10,0|rs3s40,11,11,1|s39mrz,11,11,1|s39ms0,10,10,0|sb6tfz,10,10,0|sb6tg0,11,11,1|slzpfz,11,11,1|slzpg0,10,10,0|stww3z,10,10,0|stww40,11,11,1|t4ps3z,11,11,1|t4ps40,10,10,0|tcmyrz,10,10,0|tcmys0,11,11,1|tnfurz,11,11,1|tnfus0,10,10,0|tvd1fz,10,10,0|tvd1g0,11,11,1|u6iw3z,11,11,1|u6iw40,10,10,0|ue343z,10,10,0|ue3440,11,11,1|up8yrz,11,11,1|up8ys0,10,10,0|uwt6rz,10,10,0|uwt6s0,11,11,1|v7z1fz,11,11,1|v7z1g0,10,10,0|vfw83z,10,10,0|vfw840,11,11,1|vqp43z,11,11,1|vqp440,10,10,0|vymarz,10,10,0|vymas0,11,11,1|w9f6rz,11,11,1|w9f6s0,10,10,0|whcdfz,10,10,0|whcdg0,11,11,1|wsi83z,11,11,1|wsi840,10,10,0|x02g3z,10,10,0|x02g40,11,11,1|xb8arz,11,11,1|xb8as0,10,10,0|xisirz,10,10,0|xisis0,11,11,1|xtydfz,11,11,1|xtydg0,10,10,0|y1ilfz,10,10,0|y1ilg0,11,11,1|ycog3z,11,11,1|ycog40,10,10,0|yklmrz,10,10,0|yklms0,11,11,1|yveirz,11,11,1|yveis0,10,10,0|z3bpfz,10,10,0|z3bpg0,11,11,1|ze4lfz,11,11,1|ze4lg0,10,10,0\",\"Europe/Brussels|,0,335,0|-1ayy3h6,53,335,0|-14j9c01,53,335,0|-14j9c00,8,1,0|-ss5uo1,8,1,0|-ss5uo0,10,10,0|-s0dxg1,10,10,0|-s0dxg0,11,11,1|-rsilg1,11,11,1|-rsilg0,10,10,0|-ridmk1,10,10,0|-ridmk0,11,11,1|-ragfw1,11,11,1|-ragfw0,10,10,0|-qznjw1,10,10,0|-qznjw0,11,11,1|-qrqd81,11,11,1|-qrqd80,10,10,0|-qotw41,10,10,0|-qotw40,8,1,0|-qj59g1,8,1,0|-qj59g0,9,10,1|-q7zes1,9,10,1|-q7zes0,8,1,0|-q15441,8,1,0|-q15440,9,10,1|-po6g41,9,10,1|-po6g40,8,1,0|-pgvhg1,8,1,0|-pgvhg0,9,10,1|-p5atg1,9,10,1|-p5atg0,8,1,0|-oxj6s1,8,1,0|-oxj6s0,9,10,1|-ong841,9,10,1|-ong840,8,1,0|-odd9g1,8,1,0|-odd9g0,9,10,1|-o4q5g1,9,10,1|-o4q5g0,8,1,0|-nvq2s1,8,1,0|-nvq2s0,9,10,1|-nm02s1,9,10,1|-nm02s0,8,1,0|-ncn1g1,8,1,0|-ncn1g0,9,10,1|-n3a041,9,10,1|-n3a040,8,1,0|-mt71g1,8,1,0|-mt71g0,9,10,1|-mkjxg1,9,10,1|-mkjxg0,8,1,0|-matxg1,8,1,0|-matxg0,9,10,1|-m1tus1,9,10,1|-m1tus0,8,1,0|-lrqw41,8,1,0|-lrqw40,9,10,1|-liql41,9,10,1|-liql40,8,1,0|-l8nmg1,8,1,0|-l8nmg0,9,10,1|-l00ig1,9,10,1|-l00ig0,8,1,0|-kqaig1,8,1,0|-kqaig0,9,10,1|-khafs1,9,10,1|-khafs0,8,1,0|-k77h41,8,1,0|-k77h40,9,10,1|-jykd41,9,10,1|-jykd40,8,1,0|-jp7bs1,8,1,0|-jp7bs0,9,10,1|-jfuag1,9,10,1|-jfuag0,8,1,0|-j6u7s1,8,1,0|-j6u7s0,9,10,1|-iwr941,9,10,1|-iwr940,8,1,0|-ine7s1,8,1,0|-ine7s0,9,10,1|-ie16g1,9,10,1|-ie16g0,8,1,0|-i513s1,8,1,0|-i513s0,9,10,1|-hvb3s1,9,10,1|-hvb3s0,8,1,0|-hl8541,8,1,0|-hl8540,9,10,1|-hcl141,9,10,1|-hcl140,8,1,0|-h37zs1,8,1,0|-h37zs0,9,10,1|-gtuyg1,9,10,1|-gtuyg0,8,1,0|-gkuvs1,8,1,0|-gkuvs0,9,10,1|-gb4vs1,9,10,1|-gb4vs0,8,1,0|-g11x41,8,1,0|-g11x40,9,10,1|-fpw2g1,9,10,1|-fpw2g0,8,1,0|-fkul41,8,1,0|-fkul40,9,10,1|-fgh6g1,9,10,1|-fgh6g0,11,11,1|-e6dzw1,11,11,1|-e6dzw0,10,10,0|-dytrw1,10,10,0|-dytrw0,11,11,1|-dp3rw1,11,11,1|-dp3rw0,10,10,0|-dfqqk1,10,10,0|-dfqqk0,11,11,1|-d75h81,11,11,1|-d75h80,10,10,0|-cx0nw1,10,10,0|-cx0nw0,11,11,1|-cofek1,11,11,1|-cofek0,10,10,0|-cbtp81,10,10,0|-cbtp80,11,11,1|-c4kl81,11,11,1|-c4kl80,10,10,0|3s9mrz,10,10,0|3s9ms0,11,11,1|419pfz,11,11,1|419pg0,10,10,0|4azpfz,10,10,0|4azpg0,11,11,1|4kcqrz,11,11,1|4kcqs0,10,10,0|4tps3z,10,10,0|4tps40,11,11,1|532tfz,11,11,1|532tg0,10,10,0|5cstfz,10,10,0|5cstg0,11,11,1|5lsw3z,11,11,1|5lsw40,10,10,0|5v5xfz,10,10,0|5v5xg0,11,11,1|64iyrz,11,11,1|64iys0,10,10,0|6dw03z,10,10,0|6dw040,11,11,1|6n91fz,11,11,1|6n91g0,10,10,0|6wm2rz,10,10,0|6wm2s0,11,11,1|75z43z,11,11,1|75z440,10,10,0|7fc5fz,10,10,0|7fc5g0,11,11,1|7p25fz,11,11,1|7p25g0,10,10,0|7yf6rz,10,10,0|7yf6s0,11,11,1|87s83z,11,11,1|87s840,10,10,0|8h59fz,10,10,0|8h59g0,11,11,1|8qiarz,11,11,1|8qias0,10,10,0|8zvc3z,10,10,0|8zvc40,11,11,1|998dfz,11,11,1|998dg0,10,10,0|9ilerz,10,10,0|9iles0,11,11,1|9ryg3z,11,11,1|9ryg40,10,10,0|a1bhfz,10,10,0|a1bhg0,11,11,1|aaoirz,11,11,1|aaois0,10,10,0|ak1k3z,10,10,0|ak1k40,11,11,1|atrk3z,11,11,1|atrk40,10,10,0|b34lfz,10,10,0|b34lg0,11,11,1|bchmrz,11,11,1|bchms0,10,10,0|bluo3z,10,10,0|bluo40,11,11,1|bv7pfz,11,11,1|bv7pg0,10,10,0|c4kqrz,10,10,0|c4kqs0,11,11,1|cdxs3z,11,11,1|cdxs40,10,10,0|cnatfz,10,10,0|cnatg0,11,11,1|cwnurz,11,11,1|cwnus0,10,10,0|d60w3z,10,10,0|d60w40,11,11,1|dfdxfz,11,11,1|dfdxg0,10,10,0|dp3xfz,10,10,0|dp3xg0,11,11,1|dzwtfz,11,11,1|dzwtg0,10,10,0|e7u03z,10,10,0|e7u040,11,11,1|eimw3z,11,11,1|eimw40,10,10,0|eqk2rz,10,10,0|eqk2s0,11,11,1|f1cyrz,11,11,1|f1cys0,10,10,0|f9a5fz,10,10,0|f9a5g0,11,11,1|fkg03z,11,11,1|fkg040,10,10,0|fs083z,10,10,0|fs0840,11,11,1|g362rz,11,11,1|g362s0,10,10,0|gaqarz,10,10,0|gaqas0,11,11,1|glw5fz,11,11,1|glw5g0,10,10,0|gttc3z,10,10,0|gttc40,11,11,1|h4m83z,11,11,1|h4m840,10,10,0|hcjerz,10,10,0|hcjes0,11,11,1|hncarz,11,11,1|hncas0,10,10,0|hv9hfz,10,10,0|hv9hg0,11,11,1|i6fc3z,11,11,1|i6fc40,10,10,0|idzk3z,10,10,0|idzk40,11,11,1|ip5erz,11,11,1|ip5es0,10,10,0|iwpmrz,10,10,0|iwpms0,11,11,1|j7vhfz,11,11,1|j7vhg0,10,10,0|jffpfz,10,10,0|jffpg0,11,11,1|jqlk3z,11,11,1|jqlk40,10,10,0|jyiqrz,10,10,0|jyiqs0,11,11,1|k9bmrz,11,11,1|k9bms0,10,10,0|kh8tfz,10,10,0|kh8tg0,11,11,1|ks1pfz,11,11,1|ks1pg0,10,10,0|kzyw3z,10,10,0|kzyw40,11,11,1|lb4qrz,11,11,1|lb4qs0,10,10,0|lioyrz,10,10,0|lioys0,11,11,1|ltutfz,11,11,1|ltutg0,10,10,0|m1f1fz,10,10,0|m1f1g0,11,11,1|mckw3z,11,11,1|mckw40,10,10,0|mki2rz,10,10,0|mki2s0,11,11,1|mvayrz,11,11,1|mvays0,10,10,0|n385fz,10,10,0|n385g0,11,11,1|ne11fz,11,11,1|ne11g0,10,10,0|nly83z,10,10,0|nly840,11,11,1|nwr43z,11,11,1|nwr440,10,10,0|o4oarz,10,10,0|o4oas0,11,11,1|ofu5fz,11,11,1|ofu5g0,10,10,0|onedfz,10,10,0|onedg0,11,11,1|oyk83z,11,11,1|oyk840,10,10,0|p64g3z,10,10,0|p64g40,11,11,1|phaarz,11,11,1|phaas0,10,10,0|pp7hfz,10,10,0|pp7hg0,11,11,1|q00dfz,11,11,1|q00dg0,10,10,0|q7xk3z,10,10,0|q7xk40,11,11,1|qiqg3z,11,11,1|qiqg40,10,10,0|qqnmrz,10,10,0|qqnms0,11,11,1|r1thfz,11,11,1|r1thg0,10,10,0|r9dpfz,10,10,0|r9dpg0,11,11,1|rkjk3z,11,11,1|rkjk40,10,10,0|rs3s3z,10,10,0|rs3s40,11,11,1|s39mrz,11,11,1|s39ms0,10,10,0|sb6tfz,10,10,0|sb6tg0,11,11,1|slzpfz,11,11,1|slzpg0,10,10,0|stww3z,10,10,0|stww40,11,11,1|t4ps3z,11,11,1|t4ps40,10,10,0|tcmyrz,10,10,0|tcmys0,11,11,1|tnfurz,11,11,1|tnfus0,10,10,0|tvd1fz,10,10,0|tvd1g0,11,11,1|u6iw3z,11,11,1|u6iw40,10,10,0|ue343z,10,10,0|ue3440,11,11,1|up8yrz,11,11,1|up8ys0,10,10,0|uwt6rz,10,10,0|uwt6s0,11,11,1|v7z1fz,11,11,1|v7z1g0,10,10,0|vfw83z,10,10,0|vfw840,11,11,1|vqp43z,11,11,1|vqp440,10,10,0|vymarz,10,10,0|vymas0,11,11,1|w9f6rz,11,11,1|w9f6s0,10,10,0|whcdfz,10,10,0|whcdg0,11,11,1|wsi83z,11,11,1|wsi840,10,10,0|x02g3z,10,10,0|x02g40,11,11,1|xb8arz,11,11,1|xb8as0,10,10,0|xisirz,10,10,0|xisis0,11,11,1|xtydfz,11,11,1|xtydg0,10,10,0|y1ilfz,10,10,0|y1ilg0,11,11,1|ycog3z,11,11,1|ycog40,10,10,0|yklmrz,10,10,0|yklms0,11,11,1|yveirz,11,11,1|yveis0,10,10,0|z3bpfz,10,10,0|z3bpg0,11,11,1|ze4lfz,11,11,1|ze4lg0,10,10,0\",\"Europe/Bucharest|,0,336,0|-14u7wu0,53,336,0|-k29zi1,53,336,0|-k29zi0,15,11,0|-jmqqw1,15,11,0|-jmqqw0,16,6,1|-jfulk1,16,6,1|-jfulk0,15,11,0|-j6hk81,15,11,0|-j6hk80,16,6,1|-ix4iw1,16,6,1|-ix4iw0,15,11,0|-ineiw1,15,11,0|-ineiw0,16,6,1|-ie1hk1,16,6,1|-ie1hk0,15,11,0|-i4og81,15,11,0|-i4og80,16,6,1|-hvbew1,16,6,1|-hvbew0,15,11,0|-hlydk1,15,11,0|-hlydk0,16,6,1|-hclc81,16,6,1|-hclc80,15,11,0|-h38aw1,15,11,0|-h38aw0,16,6,1|-gtv9k1,16,6,1|-gtv9k0,15,11,0|-gki881,15,11,0|-gki880,16,6,1|-gb56w1,16,6,1|-gb56w0,15,11,0|-g1s5k1,15,11,0|-g1s5k0,16,6,1|-fsf481,16,6,1|-fsf480,15,11,0|4wl93z,15,11,0|4wl940,16,6,1|532ibz,16,6,1|532ic0,15,11,0|5csibz,15,11,0|5csic0,16,6,1|5lsnrz,16,6,1|5lsns0,15,11,0|5v5unz,15,11,0|5v5uo0,16,6,1|64ivzz,16,6,1|64iw00,15,11,0|6dvxbz,15,11,0|6dvxc0,16,6,1|6n8ynz,16,6,1|6n8yo0,15,11,0|6wlzzz,15,11,0|6wm000,16,6,1|75z1bz,16,6,1|75z1c0,15,11,0|7fc2nz,15,11,0|7fc2o0,16,6,1|7p22nz,16,6,1|7p22o0,15,11,0|7yf3zz,15,11,0|7yf400,16,6,1|87s5bz,16,6,1|87s5c0,15,11,0|8h56nz,15,11,0|8h56o0,16,6,1|8qi7zz,16,6,1|8qi800,15,11,0|8zv9bz,15,11,0|8zv9c0,16,6,1|998anz,16,6,1|998ao0,15,11,0|9ilbzz,15,11,0|9ilc00,16,6,1|9rydbz,16,6,1|9rydc0,15,11,0|a1benz,15,11,0|a1beo0,16,6,1|aaofzz,16,6,1|aaog00,15,11,0|ak1hbz,15,11,0|ak1hc0,16,6,1|atrhbz,16,6,1|atrhc0,15,11,0|b34d3z,15,11,0|b34d40,16,6,1|bchefz,16,6,1|bcheg0,15,11,0|blufrz,15,11,0|blufs0,16,6,1|bv7h3z,16,6,1|bv7h40,15,11,0|c4kifz,15,11,0|c4kig0,16,6,1|cdxjrz,16,6,1|cdxjs0,15,11,0|cnal3z,15,11,0|cnal40,16,6,1|cwnjnz,16,6,1|cwnjo0,15,11,0|d60nrz,15,11,0|d60ns0,16,6,1|dfdmbz,16,6,1|dfdmc0,15,11,0|dp3p3z,15,11,0|dp3p40,16,6,1|dzwibz,16,6,1|dzwic0,15,11,0|e7u03z,15,11,0|e7u040,16,6,1|eimw3z,16,6,1|eimw40,15,11,0|eqk2rz,15,11,0|eqk2s0,16,6,1|f1cyrz,16,6,1|f1cys0,15,11,0|f9a5fz,15,11,0|f9a5g0,16,6,1|fkg03z,16,6,1|fkg040,15,11,0|fs083z,15,11,0|fs0840,16,6,1|g362rz,16,6,1|g362s0,15,11,0|gaqarz,15,11,0|gaqas0,16,6,1|glw5fz,16,6,1|glw5g0,15,11,0|gttc3z,15,11,0|gttc40,16,6,1|h4m83z,16,6,1|h4m840,15,11,0|hcjerz,15,11,0|hcjes0,16,6,1|hncarz,16,6,1|hncas0,15,11,0|hv9hfz,15,11,0|hv9hg0,16,6,1|i6fc3z,16,6,1|i6fc40,15,11,0|idzk3z,15,11,0|idzk40,16,6,1|ip5erz,16,6,1|ip5es0,15,11,0|iwpmrz,15,11,0|iwpms0,16,6,1|j7vhfz,16,6,1|j7vhg0,15,11,0|jffpfz,15,11,0|jffpg0,16,6,1|jqlk3z,16,6,1|jqlk40,15,11,0|jyiqrz,15,11,0|jyiqs0,16,6,1|k9bmrz,16,6,1|k9bms0,15,11,0|kh8tfz,15,11,0|kh8tg0,16,6,1|ks1pfz,16,6,1|ks1pg0,15,11,0|kzyw3z,15,11,0|kzyw40,16,6,1|lb4qrz,16,6,1|lb4qs0,15,11,0|lioyrz,15,11,0|lioys0,16,6,1|ltutfz,16,6,1|ltutg0,15,11,0|m1f1fz,15,11,0|m1f1g0,16,6,1|mckw3z,16,6,1|mckw40,15,11,0|mki2rz,15,11,0|mki2s0,16,6,1|mvayrz,16,6,1|mvays0,15,11,0|n385fz,15,11,0|n385g0,16,6,1|ne11fz,16,6,1|ne11g0,15,11,0|nly83z,15,11,0|nly840,16,6,1|nwr43z,16,6,1|nwr440,15,11,0|o4oarz,15,11,0|o4oas0,16,6,1|ofu5fz,16,6,1|ofu5g0,15,11,0|onedfz,15,11,0|onedg0,16,6,1|oyk83z,16,6,1|oyk840,15,11,0|p64g3z,15,11,0|p64g40,16,6,1|phaarz,16,6,1|phaas0,15,11,0|pp7hfz,15,11,0|pp7hg0,16,6,1|q00dfz,16,6,1|q00dg0,15,11,0|q7xk3z,15,11,0|q7xk40,16,6,1|qiqg3z,16,6,1|qiqg40,15,11,0|qqnmrz,15,11,0|qqnms0,16,6,1|r1thfz,16,6,1|r1thg0,15,11,0|r9dpfz,15,11,0|r9dpg0,16,6,1|rkjk3z,16,6,1|rkjk40,15,11,0|rs3s3z,15,11,0|rs3s40,16,6,1|s39mrz,16,6,1|s39ms0,15,11,0|sb6tfz,15,11,0|sb6tg0,16,6,1|slzpfz,16,6,1|slzpg0,15,11,0|stww3z,15,11,0|stww40,16,6,1|t4ps3z,16,6,1|t4ps40,15,11,0|tcmyrz,15,11,0|tcmys0,16,6,1|tnfurz,16,6,1|tnfus0,15,11,0|tvd1fz,15,11,0|tvd1g0,16,6,1|u6iw3z,16,6,1|u6iw40,15,11,0|ue343z,15,11,0|ue3440,16,6,1|up8yrz,16,6,1|up8ys0,15,11,0|uwt6rz,15,11,0|uwt6s0,16,6,1|v7z1fz,16,6,1|v7z1g0,15,11,0|vfw83z,15,11,0|vfw840,16,6,1|vqp43z,16,6,1|vqp440,15,11,0|vymarz,15,11,0|vymas0,16,6,1|w9f6rz,16,6,1|w9f6s0,15,11,0|whcdfz,15,11,0|whcdg0,16,6,1|wsi83z,16,6,1|wsi840,15,11,0|x02g3z,15,11,0|x02g40,16,6,1|xb8arz,16,6,1|xb8as0,15,11,0|xisirz,15,11,0|xisis0,16,6,1|xtydfz,16,6,1|xtydg0,15,11,0|y1ilfz,15,11,0|y1ilg0,16,6,1|ycog3z,16,6,1|ycog40,15,11,0|yklmrz,15,11,0|yklms0,16,6,1|yveirz,16,6,1|yveis0,15,11,0|z3bpfz,15,11,0|z3bpg0,16,6,1|ze4lfz,16,6,1|ze4lg0,15,11,0\",\"Europe/Budapest|,0,337,0|-15bee78,10,10,0|-s0e081,10,10,0|-s0e080,11,11,1|-rsilg1,11,11,1|-rsilg0,10,10,0|-ridmk1,10,10,0|-ridmk0,11,11,1|-ragfw1,11,11,1|-ragfw0,10,10,0|-qznjw1,10,10,0|-qznjw0,11,11,1|-qrqd81,11,11,1|-qrqd80,10,10,0|-qgvmk1,10,10,0|-qgvmk0,11,11,1|-q90ak1,11,11,1|-q90ak0,10,10,0|-pykd81,10,10,0|-pykd80,11,11,1|-ppx981,11,11,1|-ppx980,10,10,0|-ezvc81,10,10,0|-ezvc80,11,11,1|-e6dzw1,11,11,1|-e6dzw0,10,10,0|-dytrw1,10,10,0|-dytrw0,11,11,1|-dp3rw1,11,11,1|-dp3rw0,10,10,0|-dfqqk1,10,10,0|-dfqqk0,11,11,1|-d6dp81,11,11,1|-d6dp80,10,10,0|-cvhc81,10,10,0|-cvhc80,11,11,1|-cm2dg1,11,11,1|-cm2dg0,10,10,0|-cecfw1,10,10,0|-cecfw0,11,11,1|-c4ko01,11,11,1|-c4ko00,10,10,0|-bv9ek1,10,10,0|-bv9ek0,11,11,1|-blwd81,11,11,1|-blwd80,10,10,0|-bcjbw1,10,10,0|-bcjbw0,11,11,1|-b36ak1,11,11,1|-b36ak0,10,10,0|-atgak1,10,10,0|-atgak0,11,11,1|-akg7w1,11,11,1|-akg7w0,10,10,0|-85bc41,10,10,0|-85bc40,11,11,1|-7yh481,11,11,1|-7yh480,10,10,0|-7ml3w1,10,10,0|-7ml3w0,11,11,1|-7fqt81,11,11,1|-7fqt80,10,10,0|-7353w1,10,10,0|-7353w0,11,11,1|-6x0qk1,11,11,1|-6x0qk0,10,10,0|-6kf181,10,10,0|-6kf180,11,11,1|-6eanw1,11,11,1|-6eanw0,10,10,0|5csnvz,10,10,0|5csnw0,11,11,1|5lsqjz,11,11,1|5lsqk0,10,10,0|5v5rvz,10,10,0|5v5rw0,11,11,1|64it7z,11,11,1|64it80,10,10,0|6dvujz,10,10,0|6dvuk0,11,11,1|6n8vvz,11,11,1|6n8vw0,10,10,0|6wlx7z,10,10,0|6wlx80,11,11,1|75yyjz,11,11,1|75yyk0,10,10,0|7fc5fz,10,10,0|7fc5g0,11,11,1|7p25fz,11,11,1|7p25g0,10,10,0|7yf6rz,10,10,0|7yf6s0,11,11,1|87s83z,11,11,1|87s840,10,10,0|8h59fz,10,10,0|8h59g0,11,11,1|8qiarz,11,11,1|8qias0,10,10,0|8zvc3z,10,10,0|8zvc40,11,11,1|998dfz,11,11,1|998dg0,10,10,0|9ilerz,10,10,0|9iles0,11,11,1|9ryg3z,11,11,1|9ryg40,10,10,0|a1bhfz,10,10,0|a1bhg0,11,11,1|aaoirz,11,11,1|aaois0,10,10,0|ak1k3z,10,10,0|ak1k40,11,11,1|atrk3z,11,11,1|atrk40,10,10,0|b34lfz,10,10,0|b34lg0,11,11,1|bchmrz,11,11,1|bchms0,10,10,0|bluo3z,10,10,0|bluo40,11,11,1|bv7pfz,11,11,1|bv7pg0,10,10,0|c4kqrz,10,10,0|c4kqs0,11,11,1|cdxs3z,11,11,1|cdxs40,10,10,0|cnatfz,10,10,0|cnatg0,11,11,1|cwnurz,11,11,1|cwnus0,10,10,0|d60w3z,10,10,0|d60w40,11,11,1|dfdxfz,11,11,1|dfdxg0,10,10,0|dp3xfz,10,10,0|dp3xg0,11,11,1|dzwtfz,11,11,1|dzwtg0,10,10,0|e7u03z,10,10,0|e7u040,11,11,1|eimw3z,11,11,1|eimw40,10,10,0|eqk2rz,10,10,0|eqk2s0,11,11,1|f1cyrz,11,11,1|f1cys0,10,10,0|f9a5fz,10,10,0|f9a5g0,11,11,1|fkg03z,11,11,1|fkg040,10,10,0|fs083z,10,10,0|fs0840,11,11,1|g362rz,11,11,1|g362s0,10,10,0|gaqarz,10,10,0|gaqas0,11,11,1|glw5fz,11,11,1|glw5g0,10,10,0|gttc3z,10,10,0|gttc40,11,11,1|h4m83z,11,11,1|h4m840,10,10,0|hcjerz,10,10,0|hcjes0,11,11,1|hncarz,11,11,1|hncas0,10,10,0|hv9hfz,10,10,0|hv9hg0,11,11,1|i6fc3z,11,11,1|i6fc40,10,10,0|idzk3z,10,10,0|idzk40,11,11,1|ip5erz,11,11,1|ip5es0,10,10,0|iwpmrz,10,10,0|iwpms0,11,11,1|j7vhfz,11,11,1|j7vhg0,10,10,0|jffpfz,10,10,0|jffpg0,11,11,1|jqlk3z,11,11,1|jqlk40,10,10,0|jyiqrz,10,10,0|jyiqs0,11,11,1|k9bmrz,11,11,1|k9bms0,10,10,0|kh8tfz,10,10,0|kh8tg0,11,11,1|ks1pfz,11,11,1|ks1pg0,10,10,0|kzyw3z,10,10,0|kzyw40,11,11,1|lb4qrz,11,11,1|lb4qs0,10,10,0|lioyrz,10,10,0|lioys0,11,11,1|ltutfz,11,11,1|ltutg0,10,10,0|m1f1fz,10,10,0|m1f1g0,11,11,1|mckw3z,11,11,1|mckw40,10,10,0|mki2rz,10,10,0|mki2s0,11,11,1|mvayrz,11,11,1|mvays0,10,10,0|n385fz,10,10,0|n385g0,11,11,1|ne11fz,11,11,1|ne11g0,10,10,0|nly83z,10,10,0|nly840,11,11,1|nwr43z,11,11,1|nwr440,10,10,0|o4oarz,10,10,0|o4oas0,11,11,1|ofu5fz,11,11,1|ofu5g0,10,10,0|onedfz,10,10,0|onedg0,11,11,1|oyk83z,11,11,1|oyk840,10,10,0|p64g3z,10,10,0|p64g40,11,11,1|phaarz,11,11,1|phaas0,10,10,0|pp7hfz,10,10,0|pp7hg0,11,11,1|q00dfz,11,11,1|q00dg0,10,10,0|q7xk3z,10,10,0|q7xk40,11,11,1|qiqg3z,11,11,1|qiqg40,10,10,0|qqnmrz,10,10,0|qqnms0,11,11,1|r1thfz,11,11,1|r1thg0,10,10,0|r9dpfz,10,10,0|r9dpg0,11,11,1|rkjk3z,11,11,1|rkjk40,10,10,0|rs3s3z,10,10,0|rs3s40,11,11,1|s39mrz,11,11,1|s39ms0,10,10,0|sb6tfz,10,10,0|sb6tg0,11,11,1|slzpfz,11,11,1|slzpg0,10,10,0|stww3z,10,10,0|stww40,11,11,1|t4ps3z,11,11,1|t4ps40,10,10,0|tcmyrz,10,10,0|tcmys0,11,11,1|tnfurz,11,11,1|tnfus0,10,10,0|tvd1fz,10,10,0|tvd1g0,11,11,1|u6iw3z,11,11,1|u6iw40,10,10,0|ue343z,10,10,0|ue3440,11,11,1|up8yrz,11,11,1|up8ys0,10,10,0|uwt6rz,10,10,0|uwt6s0,11,11,1|v7z1fz,11,11,1|v7z1g0,10,10,0|vfw83z,10,10,0|vfw840,11,11,1|vqp43z,11,11,1|vqp440,10,10,0|vymarz,10,10,0|vymas0,11,11,1|w9f6rz,11,11,1|w9f6s0,10,10,0|whcdfz,10,10,0|whcdg0,11,11,1|wsi83z,11,11,1|wsi840,10,10,0|x02g3z,10,10,0|x02g40,11,11,1|xb8arz,11,11,1|xb8as0,10,10,0|xisirz,10,10,0|xisis0,11,11,1|xtydfz,11,11,1|xtydg0,10,10,0|y1ilfz,10,10,0|y1ilg0,11,11,1|ycog3z,11,11,1|ycog40,10,10,0|yklmrz,10,10,0|yklms0,11,11,1|yveirz,11,11,1|yveis0,10,10,0|z3bpfz,10,10,0|z3bpg0,11,11,1|ze4lfz,11,11,1|ze4lg0,10,10,0\",\"Europe/Busingen|,0,338,0|-1os49kw,53,339,0|-13g441n,53,339,0|-13g441m,10,10,0|-eyh6o1,10,10,0|-eyh6o0,11,11,1|-eqk001,11,11,1|-eqk000,10,10,0|-efr401,10,10,0|-efr400,11,11,1|-e7txc1,11,11,1|-e7txc0,10,10,0|5v5xfz,10,10,0|5v5xg0,11,11,1|64iyrz,11,11,1|64iys0,10,10,0|6dw03z,10,10,0|6dw040,11,11,1|6n91fz,11,11,1|6n91g0,10,10,0|6wm2rz,10,10,0|6wm2s0,11,11,1|75z43z,11,11,1|75z440,10,10,0|7fc5fz,10,10,0|7fc5g0,11,11,1|7p25fz,11,11,1|7p25g0,10,10,0|7yf6rz,10,10,0|7yf6s0,11,11,1|87s83z,11,11,1|87s840,10,10,0|8h59fz,10,10,0|8h59g0,11,11,1|8qiarz,11,11,1|8qias0,10,10,0|8zvc3z,10,10,0|8zvc40,11,11,1|998dfz,11,11,1|998dg0,10,10,0|9ilerz,10,10,0|9iles0,11,11,1|9ryg3z,11,11,1|9ryg40,10,10,0|a1bhfz,10,10,0|a1bhg0,11,11,1|aaoirz,11,11,1|aaois0,10,10,0|ak1k3z,10,10,0|ak1k40,11,11,1|atrk3z,11,11,1|atrk40,10,10,0|b34lfz,10,10,0|b34lg0,11,11,1|bchmrz,11,11,1|bchms0,10,10,0|bluo3z,10,10,0|bluo40,11,11,1|bv7pfz,11,11,1|bv7pg0,10,10,0|c4kqrz,10,10,0|c4kqs0,11,11,1|cdxs3z,11,11,1|cdxs40,10,10,0|cnatfz,10,10,0|cnatg0,11,11,1|cwnurz,11,11,1|cwnus0,10,10,0|d60w3z,10,10,0|d60w40,11,11,1|dfdxfz,11,11,1|dfdxg0,10,10,0|dp3xfz,10,10,0|dp3xg0,11,11,1|dzwtfz,11,11,1|dzwtg0,10,10,0|e7u03z,10,10,0|e7u040,11,11,1|eimw3z,11,11,1|eimw40,10,10,0|eqk2rz,10,10,0|eqk2s0,11,11,1|f1cyrz,11,11,1|f1cys0,10,10,0|f9a5fz,10,10,0|f9a5g0,11,11,1|fkg03z,11,11,1|fkg040,10,10,0|fs083z,10,10,0|fs0840,11,11,1|g362rz,11,11,1|g362s0,10,10,0|gaqarz,10,10,0|gaqas0,11,11,1|glw5fz,11,11,1|glw5g0,10,10,0|gttc3z,10,10,0|gttc40,11,11,1|h4m83z,11,11,1|h4m840,10,10,0|hcjerz,10,10,0|hcjes0,11,11,1|hncarz,11,11,1|hncas0,10,10,0|hv9hfz,10,10,0|hv9hg0,11,11,1|i6fc3z,11,11,1|i6fc40,10,10,0|idzk3z,10,10,0|idzk40,11,11,1|ip5erz,11,11,1|ip5es0,10,10,0|iwpmrz,10,10,0|iwpms0,11,11,1|j7vhfz,11,11,1|j7vhg0,10,10,0|jffpfz,10,10,0|jffpg0,11,11,1|jqlk3z,11,11,1|jqlk40,10,10,0|jyiqrz,10,10,0|jyiqs0,11,11,1|k9bmrz,11,11,1|k9bms0,10,10,0|kh8tfz,10,10,0|kh8tg0,11,11,1|ks1pfz,11,11,1|ks1pg0,10,10,0|kzyw3z,10,10,0|kzyw40,11,11,1|lb4qrz,11,11,1|lb4qs0,10,10,0|lioyrz,10,10,0|lioys0,11,11,1|ltutfz,11,11,1|ltutg0,10,10,0|m1f1fz,10,10,0|m1f1g0,11,11,1|mckw3z,11,11,1|mckw40,10,10,0|mki2rz,10,10,0|mki2s0,11,11,1|mvayrz,11,11,1|mvays0,10,10,0|n385fz,10,10,0|n385g0,11,11,1|ne11fz,11,11,1|ne11g0,10,10,0|nly83z,10,10,0|nly840,11,11,1|nwr43z,11,11,1|nwr440,10,10,0|o4oarz,10,10,0|o4oas0,11,11,1|ofu5fz,11,11,1|ofu5g0,10,10,0|onedfz,10,10,0|onedg0,11,11,1|oyk83z,11,11,1|oyk840,10,10,0|p64g3z,10,10,0|p64g40,11,11,1|phaarz,11,11,1|phaas0,10,10,0|pp7hfz,10,10,0|pp7hg0,11,11,1|q00dfz,11,11,1|q00dg0,10,10,0|q7xk3z,10,10,0|q7xk40,11,11,1|qiqg3z,11,11,1|qiqg40,10,10,0|qqnmrz,10,10,0|qqnms0,11,11,1|r1thfz,11,11,1|r1thg0,10,10,0|r9dpfz,10,10,0|r9dpg0,11,11,1|rkjk3z,11,11,1|rkjk40,10,10,0|rs3s3z,10,10,0|rs3s40,11,11,1|s39mrz,11,11,1|s39ms0,10,10,0|sb6tfz,10,10,0|sb6tg0,11,11,1|slzpfz,11,11,1|slzpg0,10,10,0|stww3z,10,10,0|stww40,11,11,1|t4ps3z,11,11,1|t4ps40,10,10,0|tcmyrz,10,10,0|tcmys0,11,11,1|tnfurz,11,11,1|tnfus0,10,10,0|tvd1fz,10,10,0|tvd1g0,11,11,1|u6iw3z,11,11,1|u6iw40,10,10,0|ue343z,10,10,0|ue3440,11,11,1|up8yrz,11,11,1|up8ys0,10,10,0|uwt6rz,10,10,0|uwt6s0,11,11,1|v7z1fz,11,11,1|v7z1g0,10,10,0|vfw83z,10,10,0|vfw840,11,11,1|vqp43z,11,11,1|vqp440,10,10,0|vymarz,10,10,0|vymas0,11,11,1|w9f6rz,11,11,1|w9f6s0,10,10,0|whcdfz,10,10,0|whcdg0,11,11,1|wsi83z,11,11,1|wsi840,10,10,0|x02g3z,10,10,0|x02g40,11,11,1|xb8arz,11,11,1|xb8as0,10,10,0|xisirz,10,10,0|xisis0,11,11,1|xtydfz,11,11,1|xtydg0,10,10,0|y1ilfz,10,10,0|y1ilg0,11,11,1|ycog3z,11,11,1|ycog40,10,10,0|yklmrz,10,10,0|yklms0,11,11,1|yveirz,11,11,1|yveis0,10,10,0|z3bpfz,10,10,0|z3bpg0,11,11,1|ze4lfz,11,11,1|ze4lg0,10,10,0\",\"Europe/Chisinau|,0,340,0|-1ayy808,41,341,0|-r2p1bp,41,341,0|-r2p1bo,53,336,0|-k29zi1,53,336,0|-k29zi0,15,11,0|-jmqqw1,15,11,0|-jmqqw0,16,6,1|-jfulk1,16,6,1|-jfulk0,15,11,0|-j6hk81,15,11,0|-j6hk80,16,6,1|-ix4iw1,16,6,1|-ix4iw0,15,11,0|-ineiw1,15,11,0|-ineiw0,16,6,1|-ie1hk1,16,6,1|-ie1hk0,15,11,0|-i4og81,15,11,0|-i4og80,16,6,1|-hvbew1,16,6,1|-hvbew0,15,11,0|-hlydk1,15,11,0|-hlydk0,16,6,1|-hclc81,16,6,1|-hclc80,15,11,0|-h38aw1,15,11,0|-h38aw0,16,6,1|-gtv9k1,16,6,1|-gtv9k0,15,11,0|-gki881,15,11,0|-gki880,16,6,1|-gb56w1,16,6,1|-gb56w0,15,11,0|-g1s5k1,15,11,0|-g1s5k0,16,6,1|-fsf481,16,6,1|-fsf480,15,11,0|-fc0dk1,15,11,0|-fc0dk0,16,6,1|-euq8c1,16,6,1|-euq8c0,11,11,1|-e6dzw1,11,11,1|-e6dzw0,10,10,0|-dytrw1,10,10,0|-dytrw0,11,11,1|-dp3rw1,11,11,1|-dp3rw0,10,10,0|-dfqqk1,10,10,0|-dfqqk0,11,11,1|-d8e5k1,11,11,1|-d8e5k0,148,6,0|5vb6bz,148,6,0|5vb6c0,149,209,1|64pzjz,149,209,1|64pzk0,148,6,0|6e33nz,148,6,0|6e33o0,149,209,1|6nhwvz,149,209,1|6nhww0,148,6,0|6wv0zz,148,6,0|6wv100,149,209,1|769u7z,149,209,1|769u80,148,6,0|7foszz,148,6,0|7fot00,149,209,1|7p1zvz,149,209,1|7p1zw0,148,6,0|7yf17z,148,6,0|7yf180,149,209,1|87s2jz,149,209,1|87s2k0,148,6,0|8h53vz,148,6,0|8h53w0,149,209,1|8qi57z,149,209,1|8qi580,148,6,0|8zv6jz,148,6,0|8zv6k0,149,209,1|9987vz,149,209,1|9987w0,148,6,0|9il97z,148,6,0|9il980,149,209,1|9ryajz,149,209,1|9ryak0,148,6,0|a1bbvz,148,6,0|a1bbw0,149,209,1|aaod7z,149,209,1|aaod80,148,6,0|ak1ejz,148,6,0|ak1ek0,149,209,1|am73rz,149,209,1|am73s0,16,6,1|atrhbz,16,6,1|atrhc0,15,11,0|b34inz,15,11,0|b34io0,16,6,1|bchjzz,16,6,1|bchk00,15,11,0|blufrz,15,11,0|blufs0,16,6,1|bv7ebz,16,6,1|bv7ec0,15,11,0|c4kifz,15,11,0|c4kig0,16,6,1|cdxgzz,16,6,1|cdxh00,15,11,0|cnal3z,15,11,0|cnal40,16,6,1|cwnjnz,16,6,1|cwnjo0,15,11,0|d60nrz,15,11,0|d60ns0,16,6,1|dfdmbz,16,6,1|dfdmc0,15,11,0|dp3p3z,15,11,0|dp3p40,16,6,1|dzwibz,16,6,1|dzwic0,15,11,0|e7txbz,15,11,0|e7txc0,16,6,1|eimtbz,16,6,1|eimtc0,15,11,0|eqjzzz,15,11,0|eqk000,16,6,1|f1cvzz,16,6,1|f1cw00,15,11,0|f9a2nz,15,11,0|f9a2o0,16,6,1|fkfxbz,16,6,1|fkfxc0,15,11,0|fs05bz,15,11,0|fs05c0,16,6,1|g35zzz,16,6,1|g36000,15,11,0|gaq7zz,15,11,0|gaq800,16,6,1|glw2nz,16,6,1|glw2o0,15,11,0|gtt9bz,15,11,0|gtt9c0,16,6,1|h4m5bz,16,6,1|h4m5c0,15,11,0|hcjbzz,15,11,0|hcjc00,16,6,1|hnc7zz,16,6,1|hnc800,15,11,0|hv9enz,15,11,0|hv9eo0,16,6,1|i6f9bz,16,6,1|i6f9c0,15,11,0|idzhbz,15,11,0|idzhc0,16,6,1|ip5bzz,16,6,1|ip5c00,15,11,0|iwpjzz,15,11,0|iwpk00,16,6,1|j7venz,16,6,1|j7veo0,15,11,0|jffmnz,15,11,0|jffmo0,16,6,1|jqlhbz,16,6,1|jqlhc0,15,11,0|jyinzz,15,11,0|jyio00,16,6,1|k9bjzz,16,6,1|k9bk00,15,11,0|kh8qnz,15,11,0|kh8qo0,16,6,1|ks1mnz,16,6,1|ks1mo0,15,11,0|kzytbz,15,11,0|kzytc0,16,6,1|lb4nzz,16,6,1|lb4o00,15,11,0|liovzz,15,11,0|liow00,16,6,1|ltuqnz,16,6,1|ltuqo0,15,11,0|m1eynz,15,11,0|m1eyo0,16,6,1|mcktbz,16,6,1|mcktc0,15,11,0|mkhzzz,15,11,0|mki000,16,6,1|mvavzz,16,6,1|mvaw00,15,11,0|n382nz,15,11,0|n382o0,16,6,1|ne0ynz,16,6,1|ne0yo0,15,11,0|nly5bz,15,11,0|nly5c0,16,6,1|nwr1bz,16,6,1|nwr1c0,15,11,0|o4o7zz,15,11,0|o4o800,16,6,1|ofu2nz,16,6,1|ofu2o0,15,11,0|oneanz,15,11,0|oneao0,16,6,1|oyk5bz,16,6,1|oyk5c0,15,11,0|p64dbz,15,11,0|p64dc0,16,6,1|pha7zz,16,6,1|pha800,15,11,0|pp7enz,15,11,0|pp7eo0,16,6,1|q00anz,16,6,1|q00ao0,15,11,0|q7xhbz,15,11,0|q7xhc0,16,6,1|qiqdbz,16,6,1|qiqdc0,15,11,0|qqnjzz,15,11,0|qqnk00,16,6,1|r1tenz,16,6,1|r1teo0,15,11,0|r9dmnz,15,11,0|r9dmo0,16,6,1|rkjhbz,16,6,1|rkjhc0,15,11,0|rs3pbz,15,11,0|rs3pc0,16,6,1|s39jzz,16,6,1|s39k00,15,11,0|sb6qnz,15,11,0|sb6qo0,16,6,1|slzmnz,16,6,1|slzmo0,15,11,0|stwtbz,15,11,0|stwtc0,16,6,1|t4ppbz,16,6,1|t4ppc0,15,11,0|tcmvzz,15,11,0|tcmw00,16,6,1|tnfrzz,16,6,1|tnfs00,15,11,0|tvcynz,15,11,0|tvcyo0,16,6,1|u6itbz,16,6,1|u6itc0,15,11,0|ue31bz,15,11,0|ue31c0,16,6,1|up8vzz,16,6,1|up8w00,15,11,0|uwt3zz,15,11,0|uwt400,16,6,1|v7yynz,16,6,1|v7yyo0,15,11,0|vfw5bz,15,11,0|vfw5c0,16,6,1|vqp1bz,16,6,1|vqp1c0,15,11,0|vym7zz,15,11,0|vym800,16,6,1|w9f3zz,16,6,1|w9f400,15,11,0|whcanz,15,11,0|whcao0,16,6,1|wsi5bz,16,6,1|wsi5c0,15,11,0|x02dbz,15,11,0|x02dc0,16,6,1|xb87zz,16,6,1|xb8800,15,11,0|xisfzz,15,11,0|xisg00,16,6,1|xtyanz,16,6,1|xtyao0,15,11,0|y1iinz,15,11,0|y1iio0,16,6,1|ycodbz,16,6,1|ycodc0,15,11,0|ykljzz,15,11,0|yklk00,16,6,1|yvefzz,16,6,1|yveg00,15,11,0|z3bmnz,15,11,0|z3bmo0,16,6,1|ze4inz,16,6,1|ze4io0,15,11,0\",\"Europe/Copenhagen|,0,342,0|-15r1bnw,41,342,0|-13nvrnx,41,342,0|-13nvrnw,10,10,0|-rzo2w1,10,10,0|-rzo2w0,11,11,1|-rsir01,11,11,1|-rsir00,10,10,0|-fgqo41,10,10,0|-fgqo40,11,11,1|-e6dzw1,11,11,1|-e6dzw0,10,10,0|-dytrw1,10,10,0|-dytrw0,11,11,1|-dp3rw1,11,11,1|-dp3rw0,10,10,0|-dfqqk1,10,10,0|-dfqqk0,11,11,1|-d6dp81,11,11,1|-d6dp80,10,10,0|-cx0nw1,10,10,0|-cx0nw0,11,11,1|-cq2nw1,11,11,1|-cq2nw0,10,10,0|-ccr181,10,10,0|-ccr180,11,11,1|-c6f981,11,11,1|-c6f980,10,10,0|-bttjw1,10,10,0|-bttjw0,11,11,1|-bos2k1,11,11,1|-bos2k0,10,10,0|-baqik1,10,10,0|-baqik0,11,11,1|-b61zw1,11,11,1|-b61zw0,10,10,0|5cstfz,10,10,0|5cstg0,11,11,1|5lsw3z,11,11,1|5lsw40,10,10,0|5v5xfz,10,10,0|5v5xg0,11,11,1|64iyrz,11,11,1|64iys0,10,10,0|6dw03z,10,10,0|6dw040,11,11,1|6n91fz,11,11,1|6n91g0,10,10,0|6wm2rz,10,10,0|6wm2s0,11,11,1|75z43z,11,11,1|75z440,10,10,0|7fc5fz,10,10,0|7fc5g0,11,11,1|7p25fz,11,11,1|7p25g0,10,10,0|7yf6rz,10,10,0|7yf6s0,11,11,1|87s83z,11,11,1|87s840,10,10,0|8h59fz,10,10,0|8h59g0,11,11,1|8qiarz,11,11,1|8qias0,10,10,0|8zvc3z,10,10,0|8zvc40,11,11,1|998dfz,11,11,1|998dg0,10,10,0|9ilerz,10,10,0|9iles0,11,11,1|9ryg3z,11,11,1|9ryg40,10,10,0|a1bhfz,10,10,0|a1bhg0,11,11,1|aaoirz,11,11,1|aaois0,10,10,0|ak1k3z,10,10,0|ak1k40,11,11,1|atrk3z,11,11,1|atrk40,10,10,0|b34lfz,10,10,0|b34lg0,11,11,1|bchmrz,11,11,1|bchms0,10,10,0|bluo3z,10,10,0|bluo40,11,11,1|bv7pfz,11,11,1|bv7pg0,10,10,0|c4kqrz,10,10,0|c4kqs0,11,11,1|cdxs3z,11,11,1|cdxs40,10,10,0|cnatfz,10,10,0|cnatg0,11,11,1|cwnurz,11,11,1|cwnus0,10,10,0|d60w3z,10,10,0|d60w40,11,11,1|dfdxfz,11,11,1|dfdxg0,10,10,0|dp3xfz,10,10,0|dp3xg0,11,11,1|dzwtfz,11,11,1|dzwtg0,10,10,0|e7u03z,10,10,0|e7u040,11,11,1|eimw3z,11,11,1|eimw40,10,10,0|eqk2rz,10,10,0|eqk2s0,11,11,1|f1cyrz,11,11,1|f1cys0,10,10,0|f9a5fz,10,10,0|f9a5g0,11,11,1|fkg03z,11,11,1|fkg040,10,10,0|fs083z,10,10,0|fs0840,11,11,1|g362rz,11,11,1|g362s0,10,10,0|gaqarz,10,10,0|gaqas0,11,11,1|glw5fz,11,11,1|glw5g0,10,10,0|gttc3z,10,10,0|gttc40,11,11,1|h4m83z,11,11,1|h4m840,10,10,0|hcjerz,10,10,0|hcjes0,11,11,1|hncarz,11,11,1|hncas0,10,10,0|hv9hfz,10,10,0|hv9hg0,11,11,1|i6fc3z,11,11,1|i6fc40,10,10,0|idzk3z,10,10,0|idzk40,11,11,1|ip5erz,11,11,1|ip5es0,10,10,0|iwpmrz,10,10,0|iwpms0,11,11,1|j7vhfz,11,11,1|j7vhg0,10,10,0|jffpfz,10,10,0|jffpg0,11,11,1|jqlk3z,11,11,1|jqlk40,10,10,0|jyiqrz,10,10,0|jyiqs0,11,11,1|k9bmrz,11,11,1|k9bms0,10,10,0|kh8tfz,10,10,0|kh8tg0,11,11,1|ks1pfz,11,11,1|ks1pg0,10,10,0|kzyw3z,10,10,0|kzyw40,11,11,1|lb4qrz,11,11,1|lb4qs0,10,10,0|lioyrz,10,10,0|lioys0,11,11,1|ltutfz,11,11,1|ltutg0,10,10,0|m1f1fz,10,10,0|m1f1g0,11,11,1|mckw3z,11,11,1|mckw40,10,10,0|mki2rz,10,10,0|mki2s0,11,11,1|mvayrz,11,11,1|mvays0,10,10,0|n385fz,10,10,0|n385g0,11,11,1|ne11fz,11,11,1|ne11g0,10,10,0|nly83z,10,10,0|nly840,11,11,1|nwr43z,11,11,1|nwr440,10,10,0|o4oarz,10,10,0|o4oas0,11,11,1|ofu5fz,11,11,1|ofu5g0,10,10,0|onedfz,10,10,0|onedg0,11,11,1|oyk83z,11,11,1|oyk840,10,10,0|p64g3z,10,10,0|p64g40,11,11,1|phaarz,11,11,1|phaas0,10,10,0|pp7hfz,10,10,0|pp7hg0,11,11,1|q00dfz,11,11,1|q00dg0,10,10,0|q7xk3z,10,10,0|q7xk40,11,11,1|qiqg3z,11,11,1|qiqg40,10,10,0|qqnmrz,10,10,0|qqnms0,11,11,1|r1thfz,11,11,1|r1thg0,10,10,0|r9dpfz,10,10,0|r9dpg0,11,11,1|rkjk3z,11,11,1|rkjk40,10,10,0|rs3s3z,10,10,0|rs3s40,11,11,1|s39mrz,11,11,1|s39ms0,10,10,0|sb6tfz,10,10,0|sb6tg0,11,11,1|slzpfz,11,11,1|slzpg0,10,10,0|stww3z,10,10,0|stww40,11,11,1|t4ps3z,11,11,1|t4ps40,10,10,0|tcmyrz,10,10,0|tcmys0,11,11,1|tnfurz,11,11,1|tnfus0,10,10,0|tvd1fz,10,10,0|tvd1g0,11,11,1|u6iw3z,11,11,1|u6iw40,10,10,0|ue343z,10,10,0|ue3440,11,11,1|up8yrz,11,11,1|up8ys0,10,10,0|uwt6rz,10,10,0|uwt6s0,11,11,1|v7z1fz,11,11,1|v7z1g0,10,10,0|vfw83z,10,10,0|vfw840,11,11,1|vqp43z,11,11,1|vqp440,10,10,0|vymarz,10,10,0|vymas0,11,11,1|w9f6rz,11,11,1|w9f6s0,10,10,0|whcdfz,10,10,0|whcdg0,11,11,1|wsi83z,11,11,1|wsi840,10,10,0|x02g3z,10,10,0|x02g40,11,11,1|xb8arz,11,11,1|xb8as0,10,10,0|xisirz,10,10,0|xisis0,11,11,1|xtydfz,11,11,1|xtydg0,10,10,0|y1ilfz,10,10,0|y1ilg0,11,11,1|ycog3z,11,11,1|ycog40,10,10,0|yklmrz,10,10,0|yklms0,11,11,1|yveirz,11,11,1|yveis0,10,10,0|z3bpfz,10,10,0|z3bpg0,11,11,1|ze4lfz,11,11,1|ze4lg0,10,10,0\",\"Europe/Dublin|,0,343,0|-1anxquc,150,344,0|-rzcmls,150,344,0|-rzcmlr,110,345,1|-rsibxs,110,345,1|-rsibxr,1,1,0|-risd41,1,1,0|-risd40,27,10,1|-ragd41,27,10,1|-ragd40,1,1,0|-r0s7s1,1,1,0|-r0s7s0,27,10,1|-qr0d41,27,10,1|-qr0d40,1,1,0|-qhp6g1,1,1,0|-qhp6g0,27,10,1|-q8aag1,27,10,1|-q8aag0,1,1,0|-pyz3s1,1,1,0|-pyz3s0,27,10,1|-po4d41,27,10,1|-po4d40,1,1,0|-pfw2g1,1,1,0|-pfw2g0,27,10,1|-p6h6g1,27,10,1|-p6h6g0,1,1,0|-oxiyg1,1,1,0|-oxiyg0,110,10,1|-onfzs1,110,10,1|-onfzs0,1,1,0|-odd141,1,1,0|-odd140,110,10,1|-o5st41,110,10,1|-o5st40,1,1,0|-nuzx41,1,1,0|-nuzx40,110,10,1|-nmprs1,110,10,1|-nmprs0,1,1,0|-nbwvs1,1,1,0|-nbwvs0,110,10,1|-n39rs1,110,10,1|-n39rs0,1,1,0|-mt6t41,1,1,0|-mt6t40,110,10,1|-mkjp41,110,10,1|-mkjp40,1,1,0|-matp41,1,1,0|-matp40,110,10,1|-m1tmg1,110,10,1|-m1tmg0,1,1,0|-lrdp41,1,1,0|-lrdp40,110,10,1|-liql41,110,10,1|-liql40,1,1,0|-l8nmg1,1,1,0|-l8nmg0,110,10,1|-l00ig1,110,10,1|-l00ig0,1,1,0|-kqaig1,1,1,0|-kqaig0,110,10,1|-khafs1,110,10,1|-khafs0,1,1,0|-k77h41,1,1,0|-k77h40,110,10,1|-jykd41,110,10,1|-jykd40,1,1,0|-joheg1,1,1,0|-joheg0,110,10,1|-jfuag1,110,10,1|-jfuag0,1,1,0|-j64ag1,1,1,0|-j64ag0,110,10,1|-iwr941,110,10,1|-iwr940,1,1,0|-imoag1,1,1,0|-imoag0,110,10,1|-ie16g1,110,10,1|-ie16g0,1,1,0|-i4b6g1,1,1,0|-i4b6g0,110,10,1|-hvb3s1,110,10,1|-hvb3s0,1,1,0|-hl8541,1,1,0|-hl8540,110,10,1|-hcl141,110,10,1|-hcl140,1,1,0|-h2i2g1,1,1,0|-h2i2g0,110,10,1|-gtuyg1,110,10,1|-gtuyg0,1,1,0|-gk4yg1,1,1,0|-gk4yg0,110,10,1|-gb4vs1,110,10,1|-gb4vs0,1,1,0|-g11x41,1,1,0|-g11x40,110,10,1|-fpw2g1,110,10,1|-fpw2g0,1,1,0|-fkul41,1,1,0|-fkul40,110,10,1|-c4md41,110,10,1|-c4md40,1,1,0|-bwc7s1,1,1,0|-bwc7s0,110,10,1|-bkgfs1,110,10,1|-bkgfs0,1,1,0|-bbtbs1,1,1,0|-bbtbs0,110,10,1|-b1qd41,110,10,1|-b1qd40,1,1,0|-att6g1,1,1,0|-att6g0,110,10,1|-aj0ag1,110,10,1|-aj0ag0,1,1,0|-aad6g1,1,1,0|-aad6g0,110,10,1|-a0n6g1,110,10,1|-a0n6g0,1,1,0|-9rn3s1,1,1,0|-9rn3s0,110,10,1|-9hx3s1,110,10,1|-9hx3s0,1,1,0|-98k2g1,1,1,0|-98k2g0,110,10,1|-8yu2g1,110,10,1|-8yu2g0,1,1,0|-8ptzs1,1,1,0|-8ptzs0,110,10,1|-8h6vs1,110,10,1|-8h6vs0,1,1,0|-87gvs1,1,1,0|-87gvs0,110,10,1|-7ygt41,110,10,1|-7ygt40,1,1,0|-7odug1,1,1,0|-7odug0,110,10,1|-7fqqg1,110,10,1|-7fqqg0,1,1,0|-75at41,1,1,0|-75at40,110,10,1|-6wnp41,110,10,1|-6wnp40,1,1,0|-6mxp41,1,1,0|-6mxp40,110,10,1|-6dxmg1,110,10,1|-6dxmg0,1,1,0|-63uns1,1,1,0|-63uns0,110,10,1|-5v7js1,110,10,1|-5v7js0,1,1,0|-5l4l41,1,1,0|-5l4l40,110,10,1|-5chh41,110,10,1|-5chh40,1,1,0|-52rh41,1,1,0|-52rh40,110,10,1|-4treg1,110,10,1|-4treg0,1,1,0|-4krbs1,1,1,0|-4krbs0,110,10,1|-49lh41,110,10,1|-49lh40,1,1,0|-421941,1,1,0|-421940,110,10,1|-3qveg1,110,10,1|-3qveg0,1,1,0|-3iy7s1,1,1,0|-3iy7s0,110,10,1|-385bs1,110,10,1|-385bs0,1,1,0|-30l3s1,1,1,0|-30l3s0,110,10,1|-2pf941,110,10,1|-2pf940,1,1,0|-2hv141,1,1,0|-2hv140,110,10,1|-26p6g1,110,10,1|-26p6g0,1,1,0|-1z4yg1,1,1,0|-1z4yg0,110,10,1|-1nz3s1,110,10,1|-1nz3s0,1,1,0|-1gevs1,1,1,0|-1gevs0,110,10,1|-14w2g1,110,10,1|-14w2g0,1,1,0|-z4ns1,1,1,0|-z4ns0,110,10,1|-m6841,110,10,1|-m6840,110,10,0|yd6vz,110,10,0|yd6w0,1,1,1|15kg7z,1,1,1|15kg80,110,10,0|1h39jz,110,10,0|1h39k0,1,1,1|1oaivz,1,1,1|1oaiw0,110,10,0|1ztc7z,110,10,0|1ztc80,1,1,1|270ljz,1,1,1|270lk0,110,10,0|2ijevz,110,10,0|2ijew0,1,1,1|2pqo7z,1,1,1|2pqo80,110,10,0|319hjz,110,10,0|319hk0,1,1,1|38tpjz,1,1,1|38tpk0,110,10,0|3jzk7z,110,10,0|3jzk80,1,1,1|3rjs7z,1,1,1|3rjs80,110,10,0|42pmvz,110,10,0|42pmw0,1,1,1|4a9uvz,1,1,1|4a9uw0,110,10,0|4lso7z,110,10,0|4lso80,1,1,1|4szxjz,1,1,1|4szxk0,110,10,0|54iqvz,110,10,0|54iqw0,1,1,1|5bq07z,1,1,1|5bq080,110,10,0|5n8tjz,110,10,0|5n8tk0,1,1,1|5v5xfz,1,1,1|5v5xg0,110,10,0|65ytfz,110,10,0|65ytg0,1,1,1|6dw03z,1,1,1|6dw040,110,10,0|6oow3z,110,10,0|6oow40,1,1,1|6wm2rz,1,1,1|6wm2s0,110,10,0|77eyrz,110,10,0|77eys0,1,1,1|7fc5fz,1,1,1|7fc5g0,110,10,0|7qi03z,110,10,0|7qi040,1,1,1|7yf6rz,1,1,1|7yf6s0,110,10,0|8982rz,110,10,0|8982s0,1,1,1|8h59fz,1,1,1|8h59g0,110,10,0|8ry5fz,110,10,0|8ry5g0,1,1,1|8zvc3z,1,1,1|8zvc40,110,10,0|9ao83z,110,10,0|9ao840,1,1,1|9ilerz,1,1,1|9iles0,110,10,0|9tearz,110,10,0|9teas0,1,1,1|a1bhfz,1,1,1|a1bhg0,110,10,0|achc3z,110,10,0|achc40,1,1,1|ak1k3z,1,1,1|ak1k40,110,10,0|av7erz,110,10,0|av7es0,1,1,1|b34lfz,1,1,1|b34lg0,110,10,0|bdxhfz,110,10,0|bdxhg0,1,1,1|bluo3z,1,1,1|bluo40,110,10,0|bwnk3z,110,10,0|bwnk40,1,1,1|c4kqrz,1,1,1|c4kqs0,110,10,0|cfdmrz,110,10,0|cfdms0,1,1,1|cnatfz,1,1,1|cnatg0,110,10,0|cy3pfz,110,10,0|cy3pg0,1,1,1|d60w3z,1,1,1|d60w40,110,10,0|dgts3z,110,10,0|dgts40,1,1,1|dp3xfz,1,1,1|dp3xg0,110,10,0|dzwtfz,110,10,0|dzwtg0,1,1,1|e7u03z,1,1,1|e7u040,110,10,0|eimw3z,110,10,0|eimw40,1,1,1|eqk2rz,1,1,1|eqk2s0,110,10,0|f1cyrz,110,10,0|f1cys0,1,1,1|f9a5fz,1,1,1|f9a5g0,110,10,0|fkg03z,110,10,0|fkg040,1,1,1|fs083z,1,1,1|fs0840,110,10,0|g362rz,110,10,0|g362s0,1,1,1|gaqarz,1,1,1|gaqas0,110,10,0|glw5fz,110,10,0|glw5g0,1,1,1|gttc3z,1,1,1|gttc40,110,10,0|h4m83z,110,10,0|h4m840,1,1,1|hcjerz,1,1,1|hcjes0,110,10,0|hncarz,110,10,0|hncas0,1,1,1|hv9hfz,1,1,1|hv9hg0,110,10,0|i6fc3z,110,10,0|i6fc40,1,1,1|idzk3z,1,1,1|idzk40,110,10,0|ip5erz,110,10,0|ip5es0,1,1,1|iwpmrz,1,1,1|iwpms0,110,10,0|j7vhfz,110,10,0|j7vhg0,1,1,1|jffpfz,1,1,1|jffpg0,110,10,0|jqlk3z,110,10,0|jqlk40,1,1,1|jyiqrz,1,1,1|jyiqs0,110,10,0|k9bmrz,110,10,0|k9bms0,1,1,1|kh8tfz,1,1,1|kh8tg0,110,10,0|ks1pfz,110,10,0|ks1pg0,1,1,1|kzyw3z,1,1,1|kzyw40,110,10,0|lb4qrz,110,10,0|lb4qs0,1,1,1|lioyrz,1,1,1|lioys0,110,10,0|ltutfz,110,10,0|ltutg0,1,1,1|m1f1fz,1,1,1|m1f1g0,110,10,0|mckw3z,110,10,0|mckw40,1,1,1|mki2rz,1,1,1|mki2s0,110,10,0|mvayrz,110,10,0|mvays0,1,1,1|n385fz,1,1,1|n385g0,110,10,0|ne11fz,110,10,0|ne11g0,1,1,1|nly83z,1,1,1|nly840,110,10,0|nwr43z,110,10,0|nwr440,1,1,1|o4oarz,1,1,1|o4oas0,110,10,0|ofu5fz,110,10,0|ofu5g0,1,1,1|onedfz,1,1,1|onedg0,110,10,0|oyk83z,110,10,0|oyk840,1,1,1|p64g3z,1,1,1|p64g40,110,10,0|phaarz,110,10,0|phaas0,1,1,1|pp7hfz,1,1,1|pp7hg0,110,10,0|q00dfz,110,10,0|q00dg0,1,1,1|q7xk3z,1,1,1|q7xk40,110,10,0|qiqg3z,110,10,0|qiqg40,1,1,1|qqnmrz,1,1,1|qqnms0,110,10,0|r1thfz,110,10,0|r1thg0,1,1,1|r9dpfz,1,1,1|r9dpg0,110,10,0|rkjk3z,110,10,0|rkjk40,1,1,1|rs3s3z,1,1,1|rs3s40,110,10,0|s39mrz,110,10,0|s39ms0,1,1,1|sb6tfz,1,1,1|sb6tg0,110,10,0|slzpfz,110,10,0|slzpg0,1,1,1|stww3z,1,1,1|stww40,110,10,0|t4ps3z,110,10,0|t4ps40,1,1,1|tcmyrz,1,1,1|tcmys0,110,10,0|tnfurz,110,10,0|tnfus0,1,1,1|tvd1fz,1,1,1|tvd1g0,110,10,0|u6iw3z,110,10,0|u6iw40,1,1,1|ue343z,1,1,1|ue3440,110,10,0|up8yrz,110,10,0|up8ys0,1,1,1|uwt6rz,1,1,1|uwt6s0,110,10,0|v7z1fz,110,10,0|v7z1g0,1,1,1|vfw83z,1,1,1|vfw840,110,10,0|vqp43z,110,10,0|vqp440,1,1,1|vymarz,1,1,1|vymas0,110,10,0|w9f6rz,110,10,0|w9f6s0,1,1,1|whcdfz,1,1,1|whcdg0,110,10,0|wsi83z,110,10,0|wsi840,1,1,1|x02g3z,1,1,1|x02g40,110,10,0|xb8arz,110,10,0|xb8as0,1,1,1|xisirz,1,1,1|xisis0,110,10,0|xtydfz,110,10,0|xtydg0,1,1,1|y1ilfz,1,1,1|y1ilg0,110,10,0|ycog3z,110,10,0|ycog40,1,1,1|yklmrz,1,1,1|yklms0,110,10,0|yveirz,110,10,0|yveis0,1,1,1|z3bpfz,1,1,1|z3bpg0,110,10,0|ze4lfz,110,10,0|ze4lg0,1,1,1\",\"Europe/Gibraltar|,0,346,0|-1anxr0c,1,1,0|-rzcns1,1,1,0|-rzcns0,27,10,1|-rsid41,27,10,1|-rsid40,1,1,0|-risd41,1,1,0|-risd40,27,10,1|-ragd41,27,10,1|-ragd40,1,1,0|-r0s7s1,1,1,0|-r0s7s0,27,10,1|-qr0d41,27,10,1|-qr0d40,1,1,0|-qhp6g1,1,1,0|-qhp6g0,27,10,1|-q8aag1,27,10,1|-q8aag0,1,1,0|-pyz3s1,1,1,0|-pyz3s0,27,10,1|-po4d41,27,10,1|-po4d40,1,1,0|-pfw2g1,1,1,0|-pfw2g0,27,10,1|-p6h6g1,27,10,1|-p6h6g0,1,1,0|-oxiyg1,1,1,0|-oxiyg0,27,10,1|-onfzs1,27,10,1|-onfzs0,1,1,0|-odd141,1,1,0|-odd140,27,10,1|-o5st41,27,10,1|-o5st40,1,1,0|-nuzx41,1,1,0|-nuzx40,27,10,1|-nmprs1,27,10,1|-nmprs0,1,1,0|-nbwvs1,1,1,0|-nbwvs0,27,10,1|-n39rs1,27,10,1|-n39rs0,1,1,0|-mt6t41,1,1,0|-mt6t40,27,10,1|-mkjp41,27,10,1|-mkjp40,1,1,0|-matp41,1,1,0|-matp40,27,10,1|-m1tmg1,27,10,1|-m1tmg0,1,1,0|-lrdp41,1,1,0|-lrdp40,27,10,1|-liql41,27,10,1|-liql40,1,1,0|-l8nmg1,1,1,0|-l8nmg0,27,10,1|-l00ig1,27,10,1|-l00ig0,1,1,0|-kqaig1,1,1,0|-kqaig0,27,10,1|-khafs1,27,10,1|-khafs0,1,1,0|-k77h41,1,1,0|-k77h40,27,10,1|-jykd41,27,10,1|-jykd40,1,1,0|-joheg1,1,1,0|-joheg0,27,10,1|-jfuag1,27,10,1|-jfuag0,1,1,0|-j64ag1,1,1,0|-j64ag0,27,10,1|-iwr941,27,10,1|-iwr940,1,1,0|-imoag1,1,1,0|-imoag0,27,10,1|-ie16g1,27,10,1|-ie16g0,1,1,0|-i4b6g1,1,1,0|-i4b6g0,27,10,1|-hvb3s1,27,10,1|-hvb3s0,1,1,0|-hl8541,1,1,0|-hl8540,27,10,1|-hcl141,27,10,1|-hcl140,1,1,0|-h2i2g1,1,1,0|-h2i2g0,27,10,1|-gtuyg1,27,10,1|-gtuyg0,1,1,0|-gk4yg1,1,1,0|-gk4yg0,27,10,1|-gb4vs1,27,10,1|-gb4vs0,1,1,0|-g11x41,1,1,0|-g11x40,27,10,1|-fpw2g1,27,10,1|-fpw2g0,1,1,0|-fkul41,1,1,0|-fkul40,27,10,1|-eyiyk1,27,10,1|-eyiyk0,151,11,1|-ethh81,151,11,1|-ethh80,27,10,1|-eh8qk1,27,10,1|-eh8qk0,151,11,1|-earek1,151,11,1|-earek0,27,10,1|-dyinw1,27,10,1|-dyinw0,151,11,1|-drod81,151,11,1|-drod80,27,10,1|-dfsl81,27,10,1|-dfsl80,151,11,1|-d75h81,151,11,1|-d75h80,27,10,1|-cx0nw1,27,10,1|-cx0nw0,151,11,1|-cro2k1,151,11,1|-cro2k0,27,10,1|-cncfs1,27,10,1|-cncfs0,1,1,0|-cdmfs1,1,1,0|-cdmfs0,27,10,1|-c4md41,27,10,1|-c4md40,1,1,0|-bwc7s1,1,1,0|-bwc7s0,27,10,1|-buwfw1,27,10,1|-buwfw0,151,11,1|-bos2k1,151,11,1|-bos2k0,27,10,1|-bkgfs1,27,10,1|-bkgfs0,1,1,0|-bdm541,1,1,0|-bdm540,27,10,1|-b1qd41,27,10,1|-b1qd40,1,1,0|-att6g1,1,1,0|-att6g0,27,10,1|-aj0ag1,27,10,1|-aj0ag0,1,1,0|-aad6g1,1,1,0|-aad6g0,27,10,1|-a0n6g1,27,10,1|-a0n6g0,1,1,0|-9rn3s1,1,1,0|-9rn3s0,27,10,1|-9hx3s1,27,10,1|-9hx3s0,1,1,0|-98k2g1,1,1,0|-98k2g0,27,10,1|-8yu2g1,27,10,1|-8yu2g0,1,1,0|-8ptzs1,1,1,0|-8ptzs0,27,10,1|-8h6vs1,27,10,1|-8h6vs0,1,1,0|-87gvs1,1,1,0|-87gvs0,27,10,1|-7ygt41,27,10,1|-7ygt40,1,1,0|-7odug1,1,1,0|-7odug0,27,10,1|-7fqqg1,27,10,1|-7fqqg0,1,1,0|-75at41,1,1,0|-75at40,27,10,1|-6wnp41,27,10,1|-6wnp40,1,1,0|-6mxp41,1,1,0|-6mxp40,10,10,0|6dw03z,10,10,0|6dw040,11,11,1|6n91fz,11,11,1|6n91g0,10,10,0|6wm2rz,10,10,0|6wm2s0,11,11,1|75z43z,11,11,1|75z440,10,10,0|7fc5fz,10,10,0|7fc5g0,11,11,1|7p25fz,11,11,1|7p25g0,10,10,0|7yf6rz,10,10,0|7yf6s0,11,11,1|87s83z,11,11,1|87s840,10,10,0|8h59fz,10,10,0|8h59g0,11,11,1|8qiarz,11,11,1|8qias0,10,10,0|8zvc3z,10,10,0|8zvc40,11,11,1|998dfz,11,11,1|998dg0,10,10,0|9ilerz,10,10,0|9iles0,11,11,1|9ryg3z,11,11,1|9ryg40,10,10,0|a1bhfz,10,10,0|a1bhg0,11,11,1|aaoirz,11,11,1|aaois0,10,10,0|ak1k3z,10,10,0|ak1k40,11,11,1|atrk3z,11,11,1|atrk40,10,10,0|b34lfz,10,10,0|b34lg0,11,11,1|bchmrz,11,11,1|bchms0,10,10,0|bluo3z,10,10,0|bluo40,11,11,1|bv7pfz,11,11,1|bv7pg0,10,10,0|c4kqrz,10,10,0|c4kqs0,11,11,1|cdxs3z,11,11,1|cdxs40,10,10,0|cnatfz,10,10,0|cnatg0,11,11,1|cwnurz,11,11,1|cwnus0,10,10,0|d60w3z,10,10,0|d60w40,11,11,1|dfdxfz,11,11,1|dfdxg0,10,10,0|dp3xfz,10,10,0|dp3xg0,11,11,1|dzwtfz,11,11,1|dzwtg0,10,10,0|e7u03z,10,10,0|e7u040,11,11,1|eimw3z,11,11,1|eimw40,10,10,0|eqk2rz,10,10,0|eqk2s0,11,11,1|f1cyrz,11,11,1|f1cys0,10,10,0|f9a5fz,10,10,0|f9a5g0,11,11,1|fkg03z,11,11,1|fkg040,10,10,0|fs083z,10,10,0|fs0840,11,11,1|g362rz,11,11,1|g362s0,10,10,0|gaqarz,10,10,0|gaqas0,11,11,1|glw5fz,11,11,1|glw5g0,10,10,0|gttc3z,10,10,0|gttc40,11,11,1|h4m83z,11,11,1|h4m840,10,10,0|hcjerz,10,10,0|hcjes0,11,11,1|hncarz,11,11,1|hncas0,10,10,0|hv9hfz,10,10,0|hv9hg0,11,11,1|i6fc3z,11,11,1|i6fc40,10,10,0|idzk3z,10,10,0|idzk40,11,11,1|ip5erz,11,11,1|ip5es0,10,10,0|iwpmrz,10,10,0|iwpms0,11,11,1|j7vhfz,11,11,1|j7vhg0,10,10,0|jffpfz,10,10,0|jffpg0,11,11,1|jqlk3z,11,11,1|jqlk40,10,10,0|jyiqrz,10,10,0|jyiqs0,11,11,1|k9bmrz,11,11,1|k9bms0,10,10,0|kh8tfz,10,10,0|kh8tg0,11,11,1|ks1pfz,11,11,1|ks1pg0,10,10,0|kzyw3z,10,10,0|kzyw40,11,11,1|lb4qrz,11,11,1|lb4qs0,10,10,0|lioyrz,10,10,0|lioys0,11,11,1|ltutfz,11,11,1|ltutg0,10,10,0|m1f1fz,10,10,0|m1f1g0,11,11,1|mckw3z,11,11,1|mckw40,10,10,0|mki2rz,10,10,0|mki2s0,11,11,1|mvayrz,11,11,1|mvays0,10,10,0|n385fz,10,10,0|n385g0,11,11,1|ne11fz,11,11,1|ne11g0,10,10,0|nly83z,10,10,0|nly840,11,11,1|nwr43z,11,11,1|nwr440,10,10,0|o4oarz,10,10,0|o4oas0,11,11,1|ofu5fz,11,11,1|ofu5g0,10,10,0|onedfz,10,10,0|onedg0,11,11,1|oyk83z,11,11,1|oyk840,10,10,0|p64g3z,10,10,0|p64g40,11,11,1|phaarz,11,11,1|phaas0,10,10,0|pp7hfz,10,10,0|pp7hg0,11,11,1|q00dfz,11,11,1|q00dg0,10,10,0|q7xk3z,10,10,0|q7xk40,11,11,1|qiqg3z,11,11,1|qiqg40,10,10,0|qqnmrz,10,10,0|qqnms0,11,11,1|r1thfz,11,11,1|r1thg0,10,10,0|r9dpfz,10,10,0|r9dpg0,11,11,1|rkjk3z,11,11,1|rkjk40,10,10,0|rs3s3z,10,10,0|rs3s40,11,11,1|s39mrz,11,11,1|s39ms0,10,10,0|sb6tfz,10,10,0|sb6tg0,11,11,1|slzpfz,11,11,1|slzpg0,10,10,0|stww3z,10,10,0|stww40,11,11,1|t4ps3z,11,11,1|t4ps40,10,10,0|tcmyrz,10,10,0|tcmys0,11,11,1|tnfurz,11,11,1|tnfus0,10,10,0|tvd1fz,10,10,0|tvd1g0,11,11,1|u6iw3z,11,11,1|u6iw40,10,10,0|ue343z,10,10,0|ue3440,11,11,1|up8yrz,11,11,1|up8ys0,10,10,0|uwt6rz,10,10,0|uwt6s0,11,11,1|v7z1fz,11,11,1|v7z1g0,10,10,0|vfw83z,10,10,0|vfw840,11,11,1|vqp43z,11,11,1|vqp440,10,10,0|vymarz,10,10,0|vymas0,11,11,1|w9f6rz,11,11,1|w9f6s0,10,10,0|whcdfz,10,10,0|whcdg0,11,11,1|wsi83z,11,11,1|wsi840,10,10,0|x02g3z,10,10,0|x02g40,11,11,1|xb8arz,11,11,1|xb8as0,10,10,0|xisirz,10,10,0|xisis0,11,11,1|xtydfz,11,11,1|xtydg0,10,10,0|y1ilfz,10,10,0|y1ilg0,11,11,1|ycog3z,11,11,1|ycog40,10,10,0|yklmrz,10,10,0|yklms0,11,11,1|yveirz,11,11,1|yveis0,10,10,0|z3bpfz,10,10,0|z3bpg0,11,11,1|ze4lfz,11,11,1|ze4lg0,10,10,0\",\"Europe/Guernsey|,0,347,0|-1rprx9x,1,1,0|-rzcns1,1,1,0|-rzcns0,27,10,1|-rsid41,27,10,1|-rsid40,1,1,0|-risd41,1,1,0|-risd40,27,10,1|-ragd41,27,10,1|-ragd40,1,1,0|-r0s7s1,1,1,0|-r0s7s0,27,10,1|-qr0d41,27,10,1|-qr0d40,1,1,0|-qhp6g1,1,1,0|-qhp6g0,27,10,1|-q8aag1,27,10,1|-q8aag0,1,1,0|-pyz3s1,1,1,0|-pyz3s0,27,10,1|-po4d41,27,10,1|-po4d40,1,1,0|-pfw2g1,1,1,0|-pfw2g0,27,10,1|-p6h6g1,27,10,1|-p6h6g0,1,1,0|-oxiyg1,1,1,0|-oxiyg0,27,10,1|-onfzs1,27,10,1|-onfzs0,1,1,0|-odd141,1,1,0|-odd140,27,10,1|-o5st41,27,10,1|-o5st40,1,1,0|-nuzx41,1,1,0|-nuzx40,27,10,1|-nmprs1,27,10,1|-nmprs0,1,1,0|-nbwvs1,1,1,0|-nbwvs0,27,10,1|-n39rs1,27,10,1|-n39rs0,1,1,0|-mt6t41,1,1,0|-mt6t40,27,10,1|-mkjp41,27,10,1|-mkjp40,1,1,0|-matp41,1,1,0|-matp40,27,10,1|-m1tmg1,27,10,1|-m1tmg0,1,1,0|-lrdp41,1,1,0|-lrdp40,27,10,1|-liql41,27,10,1|-liql40,1,1,0|-l8nmg1,1,1,0|-l8nmg0,27,10,1|-l00ig1,27,10,1|-l00ig0,1,1,0|-kqaig1,1,1,0|-kqaig0,27,10,1|-khafs1,27,10,1|-khafs0,1,1,0|-k77h41,1,1,0|-k77h40,27,10,1|-jykd41,27,10,1|-jykd40,1,1,0|-joheg1,1,1,0|-joheg0,27,10,1|-jfuag1,27,10,1|-jfuag0,1,1,0|-j64ag1,1,1,0|-j64ag0,27,10,1|-iwr941,27,10,1|-iwr940,1,1,0|-imoag1,1,1,0|-imoag0,27,10,1|-ie16g1,27,10,1|-ie16g0,1,1,0|-i4b6g1,1,1,0|-i4b6g0,27,10,1|-hvb3s1,27,10,1|-hvb3s0,1,1,0|-hl8541,1,1,0|-hl8540,27,10,1|-hcl141,27,10,1|-hcl140,1,1,0|-h2i2g1,1,1,0|-h2i2g0,27,10,1|-gtuyg1,27,10,1|-gtuyg0,1,1,0|-gk4yg1,1,1,0|-gk4yg0,27,10,1|-gb4vs1,27,10,1|-gb4vs0,1,1,0|-g11x41,1,1,0|-g11x40,27,10,1|-fpw2g1,27,10,1|-fpw2g0,1,1,0|-fkul41,1,1,0|-fkul40,27,10,1|-eyiyk1,27,10,1|-eyiyk0,151,11,1|-ethh81,151,11,1|-ethh80,27,10,1|-eh8qk1,27,10,1|-eh8qk0,151,11,1|-earek1,151,11,1|-earek0,27,10,1|-dyinw1,27,10,1|-dyinw0,151,11,1|-drod81,151,11,1|-drod80,27,10,1|-dfsl81,27,10,1|-dfsl80,151,11,1|-d75h81,151,11,1|-d75h80,27,10,1|-cx0nw1,27,10,1|-cx0nw0,151,11,1|-cro2k1,151,11,1|-cro2k0,27,10,1|-cncfs1,27,10,1|-cncfs0,1,1,0|-cdmfs1,1,1,0|-cdmfs0,27,10,1|-c4md41,27,10,1|-c4md40,1,1,0|-bwc7s1,1,1,0|-bwc7s0,27,10,1|-buwfw1,27,10,1|-buwfw0,151,11,1|-bos2k1,151,11,1|-bos2k0,27,10,1|-bkgfs1,27,10,1|-bkgfs0,1,1,0|-bdm541,1,1,0|-bdm540,27,10,1|-b1qd41,27,10,1|-b1qd40,1,1,0|-att6g1,1,1,0|-att6g0,27,10,1|-aj0ag1,27,10,1|-aj0ag0,1,1,0|-aad6g1,1,1,0|-aad6g0,27,10,1|-a0n6g1,27,10,1|-a0n6g0,1,1,0|-9rn3s1,1,1,0|-9rn3s0,27,10,1|-9hx3s1,27,10,1|-9hx3s0,1,1,0|-98k2g1,1,1,0|-98k2g0,27,10,1|-8yu2g1,27,10,1|-8yu2g0,1,1,0|-8ptzs1,1,1,0|-8ptzs0,27,10,1|-8h6vs1,27,10,1|-8h6vs0,1,1,0|-87gvs1,1,1,0|-87gvs0,27,10,1|-7ygt41,27,10,1|-7ygt40,1,1,0|-7odug1,1,1,0|-7odug0,27,10,1|-7fqqg1,27,10,1|-7fqqg0,1,1,0|-75at41,1,1,0|-75at40,27,10,1|-6wnp41,27,10,1|-6wnp40,1,1,0|-6mxp41,1,1,0|-6mxp40,27,10,1|-6dxmg1,27,10,1|-6dxmg0,1,1,0|-63uns1,1,1,0|-63uns0,27,10,1|-5v7js1,27,10,1|-5v7js0,1,1,0|-5l4l41,1,1,0|-5l4l40,27,10,1|-5chh41,27,10,1|-5chh40,1,1,0|-52rh41,1,1,0|-52rh40,27,10,1|-4treg1,27,10,1|-4treg0,1,1,0|-4krbs1,1,1,0|-4krbs0,27,10,1|-49lh41,27,10,1|-49lh40,1,1,0|-421941,1,1,0|-421940,27,10,1|-3qveg1,27,10,1|-3qveg0,1,1,0|-3iy7s1,1,1,0|-3iy7s0,27,10,1|-385bs1,27,10,1|-385bs0,1,1,0|-30l3s1,1,1,0|-30l3s0,27,10,1|-2pf941,27,10,1|-2pf940,1,1,0|-2hv141,1,1,0|-2hv140,27,10,1|-26p6g1,27,10,1|-26p6g0,1,1,0|-1z4yg1,1,1,0|-1z4yg0,27,10,1|-1nz3s1,27,10,1|-1nz3s0,1,1,0|-1gevs1,1,1,0|-1gevs0,27,10,1|-14w2g1,27,10,1|-14w2g0,1,1,0|-z4ns1,1,1,0|-z4ns0,27,10,1|-m6841,27,10,1|-m6840,27,10,0|yd6vz,27,10,0|yd6w0,1,1,0|15kg7z,1,1,0|15kg80,27,10,1|1h39jz,27,10,1|1h39k0,1,1,0|1oaivz,1,1,0|1oaiw0,27,10,1|1ztc7z,27,10,1|1ztc80,1,1,0|270ljz,1,1,0|270lk0,27,10,1|2ijevz,27,10,1|2ijew0,1,1,0|2pqo7z,1,1,0|2pqo80,27,10,1|319hjz,27,10,1|319hk0,1,1,0|38tpjz,1,1,0|38tpk0,27,10,1|3jzk7z,27,10,1|3jzk80,1,1,0|3rjs7z,1,1,0|3rjs80,27,10,1|42pmvz,27,10,1|42pmw0,1,1,0|4a9uvz,1,1,0|4a9uw0,27,10,1|4lso7z,27,10,1|4lso80,1,1,0|4szxjz,1,1,0|4szxk0,27,10,1|54iqvz,27,10,1|54iqw0,1,1,0|5bq07z,1,1,0|5bq080,27,10,1|5n8tjz,27,10,1|5n8tk0,1,1,0|5v5xfz,1,1,0|5v5xg0,27,10,1|65ytfz,27,10,1|65ytg0,1,1,0|6dw03z,1,1,0|6dw040,27,10,1|6oow3z,27,10,1|6oow40,1,1,0|6wm2rz,1,1,0|6wm2s0,27,10,1|77eyrz,27,10,1|77eys0,1,1,0|7fc5fz,1,1,0|7fc5g0,27,10,1|7qi03z,27,10,1|7qi040,1,1,0|7yf6rz,1,1,0|7yf6s0,27,10,1|8982rz,27,10,1|8982s0,1,1,0|8h59fz,1,1,0|8h59g0,27,10,1|8ry5fz,27,10,1|8ry5g0,1,1,0|8zvc3z,1,1,0|8zvc40,27,10,1|9ao83z,27,10,1|9ao840,1,1,0|9ilerz,1,1,0|9iles0,27,10,1|9tearz,27,10,1|9teas0,1,1,0|a1bhfz,1,1,0|a1bhg0,27,10,1|achc3z,27,10,1|achc40,1,1,0|ak1k3z,1,1,0|ak1k40,27,10,1|av7erz,27,10,1|av7es0,1,1,0|b34lfz,1,1,0|b34lg0,27,10,1|bdxhfz,27,10,1|bdxhg0,1,1,0|bluo3z,1,1,0|bluo40,27,10,1|bwnk3z,27,10,1|bwnk40,1,1,0|c4kqrz,1,1,0|c4kqs0,27,10,1|cfdmrz,27,10,1|cfdms0,1,1,0|cnatfz,1,1,0|cnatg0,27,10,1|cy3pfz,27,10,1|cy3pg0,1,1,0|d60w3z,1,1,0|d60w40,27,10,1|dgts3z,27,10,1|dgts40,1,1,0|dp3xfz,1,1,0|dp3xg0,27,10,1|dzwtfz,27,10,1|dzwtg0,1,1,0|e7u03z,1,1,0|e7u040,27,10,1|eimw3z,27,10,1|eimw40,1,1,0|eqk2rz,1,1,0|eqk2s0,27,10,1|f1cyrz,27,10,1|f1cys0,1,1,0|f9a5fz,1,1,0|f9a5g0,27,10,1|fkg03z,27,10,1|fkg040,1,1,0|fs083z,1,1,0|fs0840,27,10,1|g362rz,27,10,1|g362s0,1,1,0|gaqarz,1,1,0|gaqas0,27,10,1|glw5fz,27,10,1|glw5g0,1,1,0|gttc3z,1,1,0|gttc40,27,10,1|h4m83z,27,10,1|h4m840,1,1,0|hcjerz,1,1,0|hcjes0,27,10,1|hncarz,27,10,1|hncas0,1,1,0|hv9hfz,1,1,0|hv9hg0,27,10,1|i6fc3z,27,10,1|i6fc40,1,1,0|idzk3z,1,1,0|idzk40,27,10,1|ip5erz,27,10,1|ip5es0,1,1,0|iwpmrz,1,1,0|iwpms0,27,10,1|j7vhfz,27,10,1|j7vhg0,1,1,0|jffpfz,1,1,0|jffpg0,27,10,1|jqlk3z,27,10,1|jqlk40,1,1,0|jyiqrz,1,1,0|jyiqs0,27,10,1|k9bmrz,27,10,1|k9bms0,1,1,0|kh8tfz,1,1,0|kh8tg0,27,10,1|ks1pfz,27,10,1|ks1pg0,1,1,0|kzyw3z,1,1,0|kzyw40,27,10,1|lb4qrz,27,10,1|lb4qs0,1,1,0|lioyrz,1,1,0|lioys0,27,10,1|ltutfz,27,10,1|ltutg0,1,1,0|m1f1fz,1,1,0|m1f1g0,27,10,1|mckw3z,27,10,1|mckw40,1,1,0|mki2rz,1,1,0|mki2s0,27,10,1|mvayrz,27,10,1|mvays0,1,1,0|n385fz,1,1,0|n385g0,27,10,1|ne11fz,27,10,1|ne11g0,1,1,0|nly83z,1,1,0|nly840,27,10,1|nwr43z,27,10,1|nwr440,1,1,0|o4oarz,1,1,0|o4oas0,27,10,1|ofu5fz,27,10,1|ofu5g0,1,1,0|onedfz,1,1,0|onedg0,27,10,1|oyk83z,27,10,1|oyk840,1,1,0|p64g3z,1,1,0|p64g40,27,10,1|phaarz,27,10,1|phaas0,1,1,0|pp7hfz,1,1,0|pp7hg0,27,10,1|q00dfz,27,10,1|q00dg0,1,1,0|q7xk3z,1,1,0|q7xk40,27,10,1|qiqg3z,27,10,1|qiqg40,1,1,0|qqnmrz,1,1,0|qqnms0,27,10,1|r1thfz,27,10,1|r1thg0,1,1,0|r9dpfz,1,1,0|r9dpg0,27,10,1|rkjk3z,27,10,1|rkjk40,1,1,0|rs3s3z,1,1,0|rs3s40,27,10,1|s39mrz,27,10,1|s39ms0,1,1,0|sb6tfz,1,1,0|sb6tg0,27,10,1|slzpfz,27,10,1|slzpg0,1,1,0|stww3z,1,1,0|stww40,27,10,1|t4ps3z,27,10,1|t4ps40,1,1,0|tcmyrz,1,1,0|tcmys0,27,10,1|tnfurz,27,10,1|tnfus0,1,1,0|tvd1fz,1,1,0|tvd1g0,27,10,1|u6iw3z,27,10,1|u6iw40,1,1,0|ue343z,1,1,0|ue3440,27,10,1|up8yrz,27,10,1|up8ys0,1,1,0|uwt6rz,1,1,0|uwt6s0,27,10,1|v7z1fz,27,10,1|v7z1g0,1,1,0|vfw83z,1,1,0|vfw840,27,10,1|vqp43z,27,10,1|vqp440,1,1,0|vymarz,1,1,0|vymas0,27,10,1|w9f6rz,27,10,1|w9f6s0,1,1,0|whcdfz,1,1,0|whcdg0,27,10,1|wsi83z,27,10,1|wsi840,1,1,0|x02g3z,1,1,0|x02g40,27,10,1|xb8arz,27,10,1|xb8as0,1,1,0|xisirz,1,1,0|xisis0,27,10,1|xtydfz,27,10,1|xtydg0,1,1,0|y1ilfz,1,1,0|y1ilg0,27,10,1|ycog3z,27,10,1|ycog40,1,1,0|yklmrz,1,1,0|yklms0,27,10,1|yveirz,27,10,1|yveis0,1,1,0|z3bpfz,1,1,0|z3bpg0,27,10,1|ze4lfz,27,10,1|ze4lg0,1,1,0\",\"Europe/Helsinki|,0,348,0|-1bss9yd,77,348,0|-peghye,77,348,0|-peghyd,15,11,0|-ehco81,15,11,0|-ehco80,16,6,1|-e7vxk1,16,6,1|-e7vxk0,15,11,0|5v5unz,15,11,0|5v5uo0,16,6,1|64ivzz,16,6,1|64iw00,15,11,0|6dvxbz,15,11,0|6dvxc0,16,6,1|6n8ynz,16,6,1|6n8yo0,15,11,0|6wm2rz,15,11,0|6wm2s0,16,6,1|75z43z,16,6,1|75z440,15,11,0|7fc5fz,15,11,0|7fc5g0,16,6,1|7p25fz,16,6,1|7p25g0,15,11,0|7yf6rz,15,11,0|7yf6s0,16,6,1|87s83z,16,6,1|87s840,15,11,0|8h59fz,15,11,0|8h59g0,16,6,1|8qiarz,16,6,1|8qias0,15,11,0|8zvc3z,15,11,0|8zvc40,16,6,1|998dfz,16,6,1|998dg0,15,11,0|9ilerz,15,11,0|9iles0,16,6,1|9ryg3z,16,6,1|9ryg40,15,11,0|a1bhfz,15,11,0|a1bhg0,16,6,1|aaoirz,16,6,1|aaois0,15,11,0|ak1k3z,15,11,0|ak1k40,16,6,1|atrk3z,16,6,1|atrk40,15,11,0|b34lfz,15,11,0|b34lg0,16,6,1|bchmrz,16,6,1|bchms0,15,11,0|bluo3z,15,11,0|bluo40,16,6,1|bv7pfz,16,6,1|bv7pg0,15,11,0|c4kqrz,15,11,0|c4kqs0,16,6,1|cdxs3z,16,6,1|cdxs40,15,11,0|cnatfz,15,11,0|cnatg0,16,6,1|cwnurz,16,6,1|cwnus0,15,11,0|d60w3z,15,11,0|d60w40,16,6,1|dfdxfz,16,6,1|dfdxg0,15,11,0|dp3xfz,15,11,0|dp3xg0,16,6,1|dzwtfz,16,6,1|dzwtg0,15,11,0|e7u03z,15,11,0|e7u040,16,6,1|eimw3z,16,6,1|eimw40,15,11,0|eqk2rz,15,11,0|eqk2s0,16,6,1|f1cyrz,16,6,1|f1cys0,15,11,0|f9a5fz,15,11,0|f9a5g0,16,6,1|fkg03z,16,6,1|fkg040,15,11,0|fs083z,15,11,0|fs0840,16,6,1|g362rz,16,6,1|g362s0,15,11,0|gaqarz,15,11,0|gaqas0,16,6,1|glw5fz,16,6,1|glw5g0,15,11,0|gttc3z,15,11,0|gttc40,16,6,1|h4m83z,16,6,1|h4m840,15,11,0|hcjerz,15,11,0|hcjes0,16,6,1|hncarz,16,6,1|hncas0,15,11,0|hv9hfz,15,11,0|hv9hg0,16,6,1|i6fc3z,16,6,1|i6fc40,15,11,0|idzk3z,15,11,0|idzk40,16,6,1|ip5erz,16,6,1|ip5es0,15,11,0|iwpmrz,15,11,0|iwpms0,16,6,1|j7vhfz,16,6,1|j7vhg0,15,11,0|jffpfz,15,11,0|jffpg0,16,6,1|jqlk3z,16,6,1|jqlk40,15,11,0|jyiqrz,15,11,0|jyiqs0,16,6,1|k9bmrz,16,6,1|k9bms0,15,11,0|kh8tfz,15,11,0|kh8tg0,16,6,1|ks1pfz,16,6,1|ks1pg0,15,11,0|kzyw3z,15,11,0|kzyw40,16,6,1|lb4qrz,16,6,1|lb4qs0,15,11,0|lioyrz,15,11,0|lioys0,16,6,1|ltutfz,16,6,1|ltutg0,15,11,0|m1f1fz,15,11,0|m1f1g0,16,6,1|mckw3z,16,6,1|mckw40,15,11,0|mki2rz,15,11,0|mki2s0,16,6,1|mvayrz,16,6,1|mvays0,15,11,0|n385fz,15,11,0|n385g0,16,6,1|ne11fz,16,6,1|ne11g0,15,11,0|nly83z,15,11,0|nly840,16,6,1|nwr43z,16,6,1|nwr440,15,11,0|o4oarz,15,11,0|o4oas0,16,6,1|ofu5fz,16,6,1|ofu5g0,15,11,0|onedfz,15,11,0|onedg0,16,6,1|oyk83z,16,6,1|oyk840,15,11,0|p64g3z,15,11,0|p64g40,16,6,1|phaarz,16,6,1|phaas0,15,11,0|pp7hfz,15,11,0|pp7hg0,16,6,1|q00dfz,16,6,1|q00dg0,15,11,0|q7xk3z,15,11,0|q7xk40,16,6,1|qiqg3z,16,6,1|qiqg40,15,11,0|qqnmrz,15,11,0|qqnms0,16,6,1|r1thfz,16,6,1|r1thg0,15,11,0|r9dpfz,15,11,0|r9dpg0,16,6,1|rkjk3z,16,6,1|rkjk40,15,11,0|rs3s3z,15,11,0|rs3s40,16,6,1|s39mrz,16,6,1|s39ms0,15,11,0|sb6tfz,15,11,0|sb6tg0,16,6,1|slzpfz,16,6,1|slzpg0,15,11,0|stww3z,15,11,0|stww40,16,6,1|t4ps3z,16,6,1|t4ps40,15,11,0|tcmyrz,15,11,0|tcmys0,16,6,1|tnfurz,16,6,1|tnfus0,15,11,0|tvd1fz,15,11,0|tvd1g0,16,6,1|u6iw3z,16,6,1|u6iw40,15,11,0|ue343z,15,11,0|ue3440,16,6,1|up8yrz,16,6,1|up8ys0,15,11,0|uwt6rz,15,11,0|uwt6s0,16,6,1|v7z1fz,16,6,1|v7z1g0,15,11,0|vfw83z,15,11,0|vfw840,16,6,1|vqp43z,16,6,1|vqp440,15,11,0|vymarz,15,11,0|vymas0,16,6,1|w9f6rz,16,6,1|w9f6s0,15,11,0|whcdfz,15,11,0|whcdg0,16,6,1|wsi83z,16,6,1|wsi840,15,11,0|x02g3z,15,11,0|x02g40,16,6,1|xb8arz,16,6,1|xb8as0,15,11,0|xisirz,15,11,0|xisis0,16,6,1|xtydfz,16,6,1|xtydg0,15,11,0|y1ilfz,15,11,0|y1ilg0,16,6,1|ycog3z,16,6,1|ycog40,15,11,0|yklmrz,15,11,0|yklms0,16,6,1|yveirz,16,6,1|yveis0,15,11,0|z3bpfz,15,11,0|z3bpg0,16,6,1|ze4lfz,16,6,1|ze4lg0,15,11,0\",\"Europe/Isle_of_Man|,0,347,0|-1rprx9x,1,1,0|-rzcns1,1,1,0|-rzcns0,27,10,1|-rsid41,27,10,1|-rsid40,1,1,0|-risd41,1,1,0|-risd40,27,10,1|-ragd41,27,10,1|-ragd40,1,1,0|-r0s7s1,1,1,0|-r0s7s0,27,10,1|-qr0d41,27,10,1|-qr0d40,1,1,0|-qhp6g1,1,1,0|-qhp6g0,27,10,1|-q8aag1,27,10,1|-q8aag0,1,1,0|-pyz3s1,1,1,0|-pyz3s0,27,10,1|-po4d41,27,10,1|-po4d40,1,1,0|-pfw2g1,1,1,0|-pfw2g0,27,10,1|-p6h6g1,27,10,1|-p6h6g0,1,1,0|-oxiyg1,1,1,0|-oxiyg0,27,10,1|-onfzs1,27,10,1|-onfzs0,1,1,0|-odd141,1,1,0|-odd140,27,10,1|-o5st41,27,10,1|-o5st40,1,1,0|-nuzx41,1,1,0|-nuzx40,27,10,1|-nmprs1,27,10,1|-nmprs0,1,1,0|-nbwvs1,1,1,0|-nbwvs0,27,10,1|-n39rs1,27,10,1|-n39rs0,1,1,0|-mt6t41,1,1,0|-mt6t40,27,10,1|-mkjp41,27,10,1|-mkjp40,1,1,0|-matp41,1,1,0|-matp40,27,10,1|-m1tmg1,27,10,1|-m1tmg0,1,1,0|-lrdp41,1,1,0|-lrdp40,27,10,1|-liql41,27,10,1|-liql40,1,1,0|-l8nmg1,1,1,0|-l8nmg0,27,10,1|-l00ig1,27,10,1|-l00ig0,1,1,0|-kqaig1,1,1,0|-kqaig0,27,10,1|-khafs1,27,10,1|-khafs0,1,1,0|-k77h41,1,1,0|-k77h40,27,10,1|-jykd41,27,10,1|-jykd40,1,1,0|-joheg1,1,1,0|-joheg0,27,10,1|-jfuag1,27,10,1|-jfuag0,1,1,0|-j64ag1,1,1,0|-j64ag0,27,10,1|-iwr941,27,10,1|-iwr940,1,1,0|-imoag1,1,1,0|-imoag0,27,10,1|-ie16g1,27,10,1|-ie16g0,1,1,0|-i4b6g1,1,1,0|-i4b6g0,27,10,1|-hvb3s1,27,10,1|-hvb3s0,1,1,0|-hl8541,1,1,0|-hl8540,27,10,1|-hcl141,27,10,1|-hcl140,1,1,0|-h2i2g1,1,1,0|-h2i2g0,27,10,1|-gtuyg1,27,10,1|-gtuyg0,1,1,0|-gk4yg1,1,1,0|-gk4yg0,27,10,1|-gb4vs1,27,10,1|-gb4vs0,1,1,0|-g11x41,1,1,0|-g11x40,27,10,1|-fpw2g1,27,10,1|-fpw2g0,1,1,0|-fkul41,1,1,0|-fkul40,27,10,1|-eyiyk1,27,10,1|-eyiyk0,151,11,1|-ethh81,151,11,1|-ethh80,27,10,1|-eh8qk1,27,10,1|-eh8qk0,151,11,1|-earek1,151,11,1|-earek0,27,10,1|-dyinw1,27,10,1|-dyinw0,151,11,1|-drod81,151,11,1|-drod80,27,10,1|-dfsl81,27,10,1|-dfsl80,151,11,1|-d75h81,151,11,1|-d75h80,27,10,1|-cx0nw1,27,10,1|-cx0nw0,151,11,1|-cro2k1,151,11,1|-cro2k0,27,10,1|-cncfs1,27,10,1|-cncfs0,1,1,0|-cdmfs1,1,1,0|-cdmfs0,27,10,1|-c4md41,27,10,1|-c4md40,1,1,0|-bwc7s1,1,1,0|-bwc7s0,27,10,1|-buwfw1,27,10,1|-buwfw0,151,11,1|-bos2k1,151,11,1|-bos2k0,27,10,1|-bkgfs1,27,10,1|-bkgfs0,1,1,0|-bdm541,1,1,0|-bdm540,27,10,1|-b1qd41,27,10,1|-b1qd40,1,1,0|-att6g1,1,1,0|-att6g0,27,10,1|-aj0ag1,27,10,1|-aj0ag0,1,1,0|-aad6g1,1,1,0|-aad6g0,27,10,1|-a0n6g1,27,10,1|-a0n6g0,1,1,0|-9rn3s1,1,1,0|-9rn3s0,27,10,1|-9hx3s1,27,10,1|-9hx3s0,1,1,0|-98k2g1,1,1,0|-98k2g0,27,10,1|-8yu2g1,27,10,1|-8yu2g0,1,1,0|-8ptzs1,1,1,0|-8ptzs0,27,10,1|-8h6vs1,27,10,1|-8h6vs0,1,1,0|-87gvs1,1,1,0|-87gvs0,27,10,1|-7ygt41,27,10,1|-7ygt40,1,1,0|-7odug1,1,1,0|-7odug0,27,10,1|-7fqqg1,27,10,1|-7fqqg0,1,1,0|-75at41,1,1,0|-75at40,27,10,1|-6wnp41,27,10,1|-6wnp40,1,1,0|-6mxp41,1,1,0|-6mxp40,27,10,1|-6dxmg1,27,10,1|-6dxmg0,1,1,0|-63uns1,1,1,0|-63uns0,27,10,1|-5v7js1,27,10,1|-5v7js0,1,1,0|-5l4l41,1,1,0|-5l4l40,27,10,1|-5chh41,27,10,1|-5chh40,1,1,0|-52rh41,1,1,0|-52rh40,27,10,1|-4treg1,27,10,1|-4treg0,1,1,0|-4krbs1,1,1,0|-4krbs0,27,10,1|-49lh41,27,10,1|-49lh40,1,1,0|-421941,1,1,0|-421940,27,10,1|-3qveg1,27,10,1|-3qveg0,1,1,0|-3iy7s1,1,1,0|-3iy7s0,27,10,1|-385bs1,27,10,1|-385bs0,1,1,0|-30l3s1,1,1,0|-30l3s0,27,10,1|-2pf941,27,10,1|-2pf940,1,1,0|-2hv141,1,1,0|-2hv140,27,10,1|-26p6g1,27,10,1|-26p6g0,1,1,0|-1z4yg1,1,1,0|-1z4yg0,27,10,1|-1nz3s1,27,10,1|-1nz3s0,1,1,0|-1gevs1,1,1,0|-1gevs0,27,10,1|-14w2g1,27,10,1|-14w2g0,1,1,0|-z4ns1,1,1,0|-z4ns0,27,10,1|-m6841,27,10,1|-m6840,27,10,0|yd6vz,27,10,0|yd6w0,1,1,0|15kg7z,1,1,0|15kg80,27,10,1|1h39jz,27,10,1|1h39k0,1,1,0|1oaivz,1,1,0|1oaiw0,27,10,1|1ztc7z,27,10,1|1ztc80,1,1,0|270ljz,1,1,0|270lk0,27,10,1|2ijevz,27,10,1|2ijew0,1,1,0|2pqo7z,1,1,0|2pqo80,27,10,1|319hjz,27,10,1|319hk0,1,1,0|38tpjz,1,1,0|38tpk0,27,10,1|3jzk7z,27,10,1|3jzk80,1,1,0|3rjs7z,1,1,0|3rjs80,27,10,1|42pmvz,27,10,1|42pmw0,1,1,0|4a9uvz,1,1,0|4a9uw0,27,10,1|4lso7z,27,10,1|4lso80,1,1,0|4szxjz,1,1,0|4szxk0,27,10,1|54iqvz,27,10,1|54iqw0,1,1,0|5bq07z,1,1,0|5bq080,27,10,1|5n8tjz,27,10,1|5n8tk0,1,1,0|5v5xfz,1,1,0|5v5xg0,27,10,1|65ytfz,27,10,1|65ytg0,1,1,0|6dw03z,1,1,0|6dw040,27,10,1|6oow3z,27,10,1|6oow40,1,1,0|6wm2rz,1,1,0|6wm2s0,27,10,1|77eyrz,27,10,1|77eys0,1,1,0|7fc5fz,1,1,0|7fc5g0,27,10,1|7qi03z,27,10,1|7qi040,1,1,0|7yf6rz,1,1,0|7yf6s0,27,10,1|8982rz,27,10,1|8982s0,1,1,0|8h59fz,1,1,0|8h59g0,27,10,1|8ry5fz,27,10,1|8ry5g0,1,1,0|8zvc3z,1,1,0|8zvc40,27,10,1|9ao83z,27,10,1|9ao840,1,1,0|9ilerz,1,1,0|9iles0,27,10,1|9tearz,27,10,1|9teas0,1,1,0|a1bhfz,1,1,0|a1bhg0,27,10,1|achc3z,27,10,1|achc40,1,1,0|ak1k3z,1,1,0|ak1k40,27,10,1|av7erz,27,10,1|av7es0,1,1,0|b34lfz,1,1,0|b34lg0,27,10,1|bdxhfz,27,10,1|bdxhg0,1,1,0|bluo3z,1,1,0|bluo40,27,10,1|bwnk3z,27,10,1|bwnk40,1,1,0|c4kqrz,1,1,0|c4kqs0,27,10,1|cfdmrz,27,10,1|cfdms0,1,1,0|cnatfz,1,1,0|cnatg0,27,10,1|cy3pfz,27,10,1|cy3pg0,1,1,0|d60w3z,1,1,0|d60w40,27,10,1|dgts3z,27,10,1|dgts40,1,1,0|dp3xfz,1,1,0|dp3xg0,27,10,1|dzwtfz,27,10,1|dzwtg0,1,1,0|e7u03z,1,1,0|e7u040,27,10,1|eimw3z,27,10,1|eimw40,1,1,0|eqk2rz,1,1,0|eqk2s0,27,10,1|f1cyrz,27,10,1|f1cys0,1,1,0|f9a5fz,1,1,0|f9a5g0,27,10,1|fkg03z,27,10,1|fkg040,1,1,0|fs083z,1,1,0|fs0840,27,10,1|g362rz,27,10,1|g362s0,1,1,0|gaqarz,1,1,0|gaqas0,27,10,1|glw5fz,27,10,1|glw5g0,1,1,0|gttc3z,1,1,0|gttc40,27,10,1|h4m83z,27,10,1|h4m840,1,1,0|hcjerz,1,1,0|hcjes0,27,10,1|hncarz,27,10,1|hncas0,1,1,0|hv9hfz,1,1,0|hv9hg0,27,10,1|i6fc3z,27,10,1|i6fc40,1,1,0|idzk3z,1,1,0|idzk40,27,10,1|ip5erz,27,10,1|ip5es0,1,1,0|iwpmrz,1,1,0|iwpms0,27,10,1|j7vhfz,27,10,1|j7vhg0,1,1,0|jffpfz,1,1,0|jffpg0,27,10,1|jqlk3z,27,10,1|jqlk40,1,1,0|jyiqrz,1,1,0|jyiqs0,27,10,1|k9bmrz,27,10,1|k9bms0,1,1,0|kh8tfz,1,1,0|kh8tg0,27,10,1|ks1pfz,27,10,1|ks1pg0,1,1,0|kzyw3z,1,1,0|kzyw40,27,10,1|lb4qrz,27,10,1|lb4qs0,1,1,0|lioyrz,1,1,0|lioys0,27,10,1|ltutfz,27,10,1|ltutg0,1,1,0|m1f1fz,1,1,0|m1f1g0,27,10,1|mckw3z,27,10,1|mckw40,1,1,0|mki2rz,1,1,0|mki2s0,27,10,1|mvayrz,27,10,1|mvays0,1,1,0|n385fz,1,1,0|n385g0,27,10,1|ne11fz,27,10,1|ne11g0,1,1,0|nly83z,1,1,0|nly840,27,10,1|nwr43z,27,10,1|nwr440,1,1,0|o4oarz,1,1,0|o4oas0,27,10,1|ofu5fz,27,10,1|ofu5g0,1,1,0|onedfz,1,1,0|onedg0,27,10,1|oyk83z,27,10,1|oyk840,1,1,0|p64g3z,1,1,0|p64g40,27,10,1|phaarz,27,10,1|phaas0,1,1,0|pp7hfz,1,1,0|pp7hg0,27,10,1|q00dfz,27,10,1|q00dg0,1,1,0|q7xk3z,1,1,0|q7xk40,27,10,1|qiqg3z,27,10,1|qiqg40,1,1,0|qqnmrz,1,1,0|qqnms0,27,10,1|r1thfz,27,10,1|r1thg0,1,1,0|r9dpfz,1,1,0|r9dpg0,27,10,1|rkjk3z,27,10,1|rkjk40,1,1,0|rs3s3z,1,1,0|rs3s40,27,10,1|s39mrz,27,10,1|s39ms0,1,1,0|sb6tfz,1,1,0|sb6tg0,27,10,1|slzpfz,27,10,1|slzpg0,1,1,0|stww3z,1,1,0|stww40,27,10,1|t4ps3z,27,10,1|t4ps40,1,1,0|tcmyrz,1,1,0|tcmys0,27,10,1|tnfurz,27,10,1|tnfus0,1,1,0|tvd1fz,1,1,0|tvd1g0,27,10,1|u6iw3z,27,10,1|u6iw40,1,1,0|ue343z,1,1,0|ue3440,27,10,1|up8yrz,27,10,1|up8ys0,1,1,0|uwt6rz,1,1,0|uwt6s0,27,10,1|v7z1fz,27,10,1|v7z1g0,1,1,0|vfw83z,1,1,0|vfw840,27,10,1|vqp43z,27,10,1|vqp440,1,1,0|vymarz,1,1,0|vymas0,27,10,1|w9f6rz,27,10,1|w9f6s0,1,1,0|whcdfz,1,1,0|whcdg0,27,10,1|wsi83z,27,10,1|wsi840,1,1,0|x02g3z,1,1,0|x02g40,27,10,1|xb8arz,27,10,1|xb8as0,1,1,0|xisirz,1,1,0|xisis0,27,10,1|xtydfz,27,10,1|xtydg0,1,1,0|y1ilfz,1,1,0|y1ilg0,27,10,1|ycog3z,27,10,1|ycog40,1,1,0|yklmrz,1,1,0|yklms0,27,10,1|yveirz,27,10,1|yveis0,1,1,0|z3bpfz,1,1,0|z3bpg0,27,10,1|ze4lfz,27,10,1|ze4lg0,1,1,0\",\"Europe/Istanbul|,0,349,0|-1ayy814,117,350,0|-ux9xex,117,350,0|-ux9xew,15,11,0|-s0e081,15,11,0|-s0e080,16,6,1|-rsir01,16,6,1|-rsir00,15,11,0|-pyzew1,15,11,0|-pyzew0,16,6,1|-po4r01,16,6,1|-po4r00,15,11,0|-pfwdk1,15,11,0|-pfwdk0,16,6,1|-p6hkc1,16,6,1|-p6hkc0,15,11,0|-oxj9k1,15,11,0|-oxj9k0,16,6,1|-ongdo1,16,6,1|-ongdo0,15,11,0|-ntgo81,15,11,0|-ntgo80,16,6,1|-nm7n01,16,6,1|-nm7n00,15,11,0|-nbayw1,15,11,0|-nbayw0,16,6,1|-n3fpo1,16,6,1|-n3fpo0,15,11,0|-febpk1,15,11,0|-febpk0,16,6,1|-f9c5o1,16,6,1|-f9c5o0,15,11,0|-f6gdk1,15,11,0|-f6gdk0,16,6,1|-erc0c1,16,6,1|-erc0c0,15,11,0|-ehgdk1,15,11,0|-ehgdk0,16,6,1|-cnaz01,16,6,1|-cnaz00,15,11,0|-cb5uw1,15,11,0|-cb5uw0,16,6,1|-c4w0c1,16,6,1|-c4w0c0,15,11,0|-bujpk1,15,11,0|-bujpk0,16,6,1|-blwoc1,16,6,1|-blwoc0,15,11,0|-bbtmw1,15,11,0|-bbtmw0,16,6,1|-b36lo1,16,6,1|-b36lo0,15,11,0|-atgiw1,15,11,0|-atgiw0,16,6,1|-akgj01,16,6,1|-akgj00,15,11,0|-aadhk1,15,11,0|-aadhk0,16,6,1|-a1dho1,16,6,1|-a1dho0,15,11,0|-9rag81,15,11,0|-9rag80,16,6,1|-9inf01,16,6,1|-9inf00,15,11,0|-3wa5k1,15,11,0|-3wa5k0,16,6,1|-3805o1,16,6,1|-3805o0,15,11,0|-2xtew1,15,11,0|-2xtew0,16,6,1|-2qo301,16,6,1|-2qo300,15,11,0|1s8vvz,15,11,0|1s8vw0,16,6,1|2062jz,16,6,1|2062k0,15,11,0|27qdbz,15,11,0|27qdc0,16,6,1|2iw57z,16,6,1|2iw580,15,11,0|2q1mnz,15,11,0|2q1mo0,16,6,1|31m7vz,16,6,1|31m7w0,15,11,0|38tjzz,15,11,0|38tk00,16,6,1|3kcajz,16,6,1|3kcak0,15,11,0|3s9jzz,15,11,0|3s9k00,16,6,1|42cfvz,16,6,1|42cfw0,15,11,0|4azmnz,15,11,0|4azmo0,16,6,1|4ficzz,16,6,1|4fid00,100,6,0|73397z,100,6,0|733980,105,209,1|76bufz,105,209,1|76bug0,100,6,0|7qp97z,100,6,0|7qp980,15,11,0|7zg2jz,15,11,0|7zg2k0,16,6,1|87q7vz,16,6,1|87q7w0,15,11,0|8h53vz,15,11,0|8h53w0,16,6,1|8qi57z,16,6,1|8qi580,15,11,0|8zv6jz,15,11,0|8zv6k0,16,6,1|9987vz,16,6,1|9987w0,15,11,0|9il97z,15,11,0|9il980,16,6,1|9ryajz,16,6,1|9ryak0,15,11,0|a1bbvz,15,11,0|a1bbw0,16,6,1|aaod7z,16,6,1|aaod80,15,11,0|ak1ejz,15,11,0|ak1ek0,16,6,1|atrejz,16,6,1|atrek0,15,11,0|b34fvz,15,11,0|b34fw0,16,6,1|bchh7z,16,6,1|bchh80,15,11,0|bluijz,15,11,0|bluik0,16,6,1|bv7jvz,16,6,1|bv7jw0,15,11,0|c4kl7z,15,11,0|c4kl80,16,6,1|cdxmjz,16,6,1|cdxmk0,15,11,0|cmxp7z,15,11,0|cmxp80,16,6,1|cwnp7z,16,6,1|cwnp80,15,11,0|d60qjz,15,11,0|d60qk0,16,6,1|dfdrvz,16,6,1|dfdrw0,15,11,0|dp3rvz,15,11,0|dp3rw0,16,6,1|dzwnvz,16,6,1|dzwnw0,15,11,0|e7tujz,15,11,0|e7tuk0,16,6,1|eimqjz,16,6,1|eimqk0,15,11,0|eqjx7z,15,11,0|eqjx80,16,6,1|f1ct7z,16,6,1|f1ct80,15,11,0|f99zvz,15,11,0|f99zw0,16,6,1|fkfujz,16,6,1|fkfuk0,15,11,0|fs02jz,15,11,0|fs02k0,16,6,1|g35x7z,16,6,1|g35x80,15,11,0|gaq57z,15,11,0|gaq580,16,6,1|glvzvz,16,6,1|glvzw0,15,11,0|gtt6jz,15,11,0|gtt6k0,16,6,1|h4m2jz,16,6,1|h4m2k0,15,11,0|hcj97z,15,11,0|hcj980,16,6,1|hnc57z,16,6,1|hnc580,15,11,0|hv9bvz,15,11,0|hv9bw0,16,6,1|i6f6jz,16,6,1|i6f6k0,15,11,0|idzejz,15,11,0|idzek0,16,6,1|ip597z,16,6,1|ip5980,15,11,0|iwph7z,15,11,0|iwph80,16,6,1|j7vbvz,16,6,1|j7vbw0,15,11,0|jffpfz,15,11,0|jffpg0,16,6,1|jqlk3z,16,6,1|jqlk40,15,11,0|jyiqrz,15,11,0|jyiqs0,16,6,1|k9bmrz,16,6,1|k9bms0,15,11,0|kh8tfz,15,11,0|kh8tg0,16,6,1|ks1pfz,16,6,1|ks1pg0,15,11,0|kzyw3z,15,11,0|kzyw40,16,6,1|lb4qrz,16,6,1|lb4qs0,15,11,0|liqtfz,15,11,0|liqtg0,16,6,1|ltutfz,16,6,1|ltutg0,15,11,0|m1f1fz,15,11,0|m1f1g0,16,6,1|mckw3z,16,6,1|mckw40,15,11,0|mki2rz,15,11,0|mki2s0,16,6,1|mvayrz,16,6,1|mvays0,15,11,0|n3a03z,15,11,0|n3a040,16,6,1|ne11fz,16,6,1|ne11g0,15,11,0|nly83z,15,11,0|nly840,16,6,1|nxh1fz,16,6,1|nxh1g0,15,11,0|o4oarz,15,11,0|o4oas0,16,6,1|od3ozz,16,6,1|od3p00,100,6,0\",\"Europe/Jersey|,0,347,0|-1rprx9x,1,1,0|-rzcns1,1,1,0|-rzcns0,27,10,1|-rsid41,27,10,1|-rsid40,1,1,0|-risd41,1,1,0|-risd40,27,10,1|-ragd41,27,10,1|-ragd40,1,1,0|-r0s7s1,1,1,0|-r0s7s0,27,10,1|-qr0d41,27,10,1|-qr0d40,1,1,0|-qhp6g1,1,1,0|-qhp6g0,27,10,1|-q8aag1,27,10,1|-q8aag0,1,1,0|-pyz3s1,1,1,0|-pyz3s0,27,10,1|-po4d41,27,10,1|-po4d40,1,1,0|-pfw2g1,1,1,0|-pfw2g0,27,10,1|-p6h6g1,27,10,1|-p6h6g0,1,1,0|-oxiyg1,1,1,0|-oxiyg0,27,10,1|-onfzs1,27,10,1|-onfzs0,1,1,0|-odd141,1,1,0|-odd140,27,10,1|-o5st41,27,10,1|-o5st40,1,1,0|-nuzx41,1,1,0|-nuzx40,27,10,1|-nmprs1,27,10,1|-nmprs0,1,1,0|-nbwvs1,1,1,0|-nbwvs0,27,10,1|-n39rs1,27,10,1|-n39rs0,1,1,0|-mt6t41,1,1,0|-mt6t40,27,10,1|-mkjp41,27,10,1|-mkjp40,1,1,0|-matp41,1,1,0|-matp40,27,10,1|-m1tmg1,27,10,1|-m1tmg0,1,1,0|-lrdp41,1,1,0|-lrdp40,27,10,1|-liql41,27,10,1|-liql40,1,1,0|-l8nmg1,1,1,0|-l8nmg0,27,10,1|-l00ig1,27,10,1|-l00ig0,1,1,0|-kqaig1,1,1,0|-kqaig0,27,10,1|-khafs1,27,10,1|-khafs0,1,1,0|-k77h41,1,1,0|-k77h40,27,10,1|-jykd41,27,10,1|-jykd40,1,1,0|-joheg1,1,1,0|-joheg0,27,10,1|-jfuag1,27,10,1|-jfuag0,1,1,0|-j64ag1,1,1,0|-j64ag0,27,10,1|-iwr941,27,10,1|-iwr940,1,1,0|-imoag1,1,1,0|-imoag0,27,10,1|-ie16g1,27,10,1|-ie16g0,1,1,0|-i4b6g1,1,1,0|-i4b6g0,27,10,1|-hvb3s1,27,10,1|-hvb3s0,1,1,0|-hl8541,1,1,0|-hl8540,27,10,1|-hcl141,27,10,1|-hcl140,1,1,0|-h2i2g1,1,1,0|-h2i2g0,27,10,1|-gtuyg1,27,10,1|-gtuyg0,1,1,0|-gk4yg1,1,1,0|-gk4yg0,27,10,1|-gb4vs1,27,10,1|-gb4vs0,1,1,0|-g11x41,1,1,0|-g11x40,27,10,1|-fpw2g1,27,10,1|-fpw2g0,1,1,0|-fkul41,1,1,0|-fkul40,27,10,1|-eyiyk1,27,10,1|-eyiyk0,151,11,1|-ethh81,151,11,1|-ethh80,27,10,1|-eh8qk1,27,10,1|-eh8qk0,151,11,1|-earek1,151,11,1|-earek0,27,10,1|-dyinw1,27,10,1|-dyinw0,151,11,1|-drod81,151,11,1|-drod80,27,10,1|-dfsl81,27,10,1|-dfsl80,151,11,1|-d75h81,151,11,1|-d75h80,27,10,1|-cx0nw1,27,10,1|-cx0nw0,151,11,1|-cro2k1,151,11,1|-cro2k0,27,10,1|-cncfs1,27,10,1|-cncfs0,1,1,0|-cdmfs1,1,1,0|-cdmfs0,27,10,1|-c4md41,27,10,1|-c4md40,1,1,0|-bwc7s1,1,1,0|-bwc7s0,27,10,1|-buwfw1,27,10,1|-buwfw0,151,11,1|-bos2k1,151,11,1|-bos2k0,27,10,1|-bkgfs1,27,10,1|-bkgfs0,1,1,0|-bdm541,1,1,0|-bdm540,27,10,1|-b1qd41,27,10,1|-b1qd40,1,1,0|-att6g1,1,1,0|-att6g0,27,10,1|-aj0ag1,27,10,1|-aj0ag0,1,1,0|-aad6g1,1,1,0|-aad6g0,27,10,1|-a0n6g1,27,10,1|-a0n6g0,1,1,0|-9rn3s1,1,1,0|-9rn3s0,27,10,1|-9hx3s1,27,10,1|-9hx3s0,1,1,0|-98k2g1,1,1,0|-98k2g0,27,10,1|-8yu2g1,27,10,1|-8yu2g0,1,1,0|-8ptzs1,1,1,0|-8ptzs0,27,10,1|-8h6vs1,27,10,1|-8h6vs0,1,1,0|-87gvs1,1,1,0|-87gvs0,27,10,1|-7ygt41,27,10,1|-7ygt40,1,1,0|-7odug1,1,1,0|-7odug0,27,10,1|-7fqqg1,27,10,1|-7fqqg0,1,1,0|-75at41,1,1,0|-75at40,27,10,1|-6wnp41,27,10,1|-6wnp40,1,1,0|-6mxp41,1,1,0|-6mxp40,27,10,1|-6dxmg1,27,10,1|-6dxmg0,1,1,0|-63uns1,1,1,0|-63uns0,27,10,1|-5v7js1,27,10,1|-5v7js0,1,1,0|-5l4l41,1,1,0|-5l4l40,27,10,1|-5chh41,27,10,1|-5chh40,1,1,0|-52rh41,1,1,0|-52rh40,27,10,1|-4treg1,27,10,1|-4treg0,1,1,0|-4krbs1,1,1,0|-4krbs0,27,10,1|-49lh41,27,10,1|-49lh40,1,1,0|-421941,1,1,0|-421940,27,10,1|-3qveg1,27,10,1|-3qveg0,1,1,0|-3iy7s1,1,1,0|-3iy7s0,27,10,1|-385bs1,27,10,1|-385bs0,1,1,0|-30l3s1,1,1,0|-30l3s0,27,10,1|-2pf941,27,10,1|-2pf940,1,1,0|-2hv141,1,1,0|-2hv140,27,10,1|-26p6g1,27,10,1|-26p6g0,1,1,0|-1z4yg1,1,1,0|-1z4yg0,27,10,1|-1nz3s1,27,10,1|-1nz3s0,1,1,0|-1gevs1,1,1,0|-1gevs0,27,10,1|-14w2g1,27,10,1|-14w2g0,1,1,0|-z4ns1,1,1,0|-z4ns0,27,10,1|-m6841,27,10,1|-m6840,27,10,0|yd6vz,27,10,0|yd6w0,1,1,0|15kg7z,1,1,0|15kg80,27,10,1|1h39jz,27,10,1|1h39k0,1,1,0|1oaivz,1,1,0|1oaiw0,27,10,1|1ztc7z,27,10,1|1ztc80,1,1,0|270ljz,1,1,0|270lk0,27,10,1|2ijevz,27,10,1|2ijew0,1,1,0|2pqo7z,1,1,0|2pqo80,27,10,1|319hjz,27,10,1|319hk0,1,1,0|38tpjz,1,1,0|38tpk0,27,10,1|3jzk7z,27,10,1|3jzk80,1,1,0|3rjs7z,1,1,0|3rjs80,27,10,1|42pmvz,27,10,1|42pmw0,1,1,0|4a9uvz,1,1,0|4a9uw0,27,10,1|4lso7z,27,10,1|4lso80,1,1,0|4szxjz,1,1,0|4szxk0,27,10,1|54iqvz,27,10,1|54iqw0,1,1,0|5bq07z,1,1,0|5bq080,27,10,1|5n8tjz,27,10,1|5n8tk0,1,1,0|5v5xfz,1,1,0|5v5xg0,27,10,1|65ytfz,27,10,1|65ytg0,1,1,0|6dw03z,1,1,0|6dw040,27,10,1|6oow3z,27,10,1|6oow40,1,1,0|6wm2rz,1,1,0|6wm2s0,27,10,1|77eyrz,27,10,1|77eys0,1,1,0|7fc5fz,1,1,0|7fc5g0,27,10,1|7qi03z,27,10,1|7qi040,1,1,0|7yf6rz,1,1,0|7yf6s0,27,10,1|8982rz,27,10,1|8982s0,1,1,0|8h59fz,1,1,0|8h59g0,27,10,1|8ry5fz,27,10,1|8ry5g0,1,1,0|8zvc3z,1,1,0|8zvc40,27,10,1|9ao83z,27,10,1|9ao840,1,1,0|9ilerz,1,1,0|9iles0,27,10,1|9tearz,27,10,1|9teas0,1,1,0|a1bhfz,1,1,0|a1bhg0,27,10,1|achc3z,27,10,1|achc40,1,1,0|ak1k3z,1,1,0|ak1k40,27,10,1|av7erz,27,10,1|av7es0,1,1,0|b34lfz,1,1,0|b34lg0,27,10,1|bdxhfz,27,10,1|bdxhg0,1,1,0|bluo3z,1,1,0|bluo40,27,10,1|bwnk3z,27,10,1|bwnk40,1,1,0|c4kqrz,1,1,0|c4kqs0,27,10,1|cfdmrz,27,10,1|cfdms0,1,1,0|cnatfz,1,1,0|cnatg0,27,10,1|cy3pfz,27,10,1|cy3pg0,1,1,0|d60w3z,1,1,0|d60w40,27,10,1|dgts3z,27,10,1|dgts40,1,1,0|dp3xfz,1,1,0|dp3xg0,27,10,1|dzwtfz,27,10,1|dzwtg0,1,1,0|e7u03z,1,1,0|e7u040,27,10,1|eimw3z,27,10,1|eimw40,1,1,0|eqk2rz,1,1,0|eqk2s0,27,10,1|f1cyrz,27,10,1|f1cys0,1,1,0|f9a5fz,1,1,0|f9a5g0,27,10,1|fkg03z,27,10,1|fkg040,1,1,0|fs083z,1,1,0|fs0840,27,10,1|g362rz,27,10,1|g362s0,1,1,0|gaqarz,1,1,0|gaqas0,27,10,1|glw5fz,27,10,1|glw5g0,1,1,0|gttc3z,1,1,0|gttc40,27,10,1|h4m83z,27,10,1|h4m840,1,1,0|hcjerz,1,1,0|hcjes0,27,10,1|hncarz,27,10,1|hncas0,1,1,0|hv9hfz,1,1,0|hv9hg0,27,10,1|i6fc3z,27,10,1|i6fc40,1,1,0|idzk3z,1,1,0|idzk40,27,10,1|ip5erz,27,10,1|ip5es0,1,1,0|iwpmrz,1,1,0|iwpms0,27,10,1|j7vhfz,27,10,1|j7vhg0,1,1,0|jffpfz,1,1,0|jffpg0,27,10,1|jqlk3z,27,10,1|jqlk40,1,1,0|jyiqrz,1,1,0|jyiqs0,27,10,1|k9bmrz,27,10,1|k9bms0,1,1,0|kh8tfz,1,1,0|kh8tg0,27,10,1|ks1pfz,27,10,1|ks1pg0,1,1,0|kzyw3z,1,1,0|kzyw40,27,10,1|lb4qrz,27,10,1|lb4qs0,1,1,0|lioyrz,1,1,0|lioys0,27,10,1|ltutfz,27,10,1|ltutg0,1,1,0|m1f1fz,1,1,0|m1f1g0,27,10,1|mckw3z,27,10,1|mckw40,1,1,0|mki2rz,1,1,0|mki2s0,27,10,1|mvayrz,27,10,1|mvays0,1,1,0|n385fz,1,1,0|n385g0,27,10,1|ne11fz,27,10,1|ne11g0,1,1,0|nly83z,1,1,0|nly840,27,10,1|nwr43z,27,10,1|nwr440,1,1,0|o4oarz,1,1,0|o4oas0,27,10,1|ofu5fz,27,10,1|ofu5g0,1,1,0|onedfz,1,1,0|onedg0,27,10,1|oyk83z,27,10,1|oyk840,1,1,0|p64g3z,1,1,0|p64g40,27,10,1|phaarz,27,10,1|phaas0,1,1,0|pp7hfz,1,1,0|pp7hg0,27,10,1|q00dfz,27,10,1|q00dg0,1,1,0|q7xk3z,1,1,0|q7xk40,27,10,1|qiqg3z,27,10,1|qiqg40,1,1,0|qqnmrz,1,1,0|qqnms0,27,10,1|r1thfz,27,10,1|r1thg0,1,1,0|r9dpfz,1,1,0|r9dpg0,27,10,1|rkjk3z,27,10,1|rkjk40,1,1,0|rs3s3z,1,1,0|rs3s40,27,10,1|s39mrz,27,10,1|s39ms0,1,1,0|sb6tfz,1,1,0|sb6tg0,27,10,1|slzpfz,27,10,1|slzpg0,1,1,0|stww3z,1,1,0|stww40,27,10,1|t4ps3z,27,10,1|t4ps40,1,1,0|tcmyrz,1,1,0|tcmys0,27,10,1|tnfurz,27,10,1|tnfus0,1,1,0|tvd1fz,1,1,0|tvd1g0,27,10,1|u6iw3z,27,10,1|u6iw40,1,1,0|ue343z,1,1,0|ue3440,27,10,1|up8yrz,27,10,1|up8ys0,1,1,0|uwt6rz,1,1,0|uwt6s0,27,10,1|v7z1fz,27,10,1|v7z1g0,1,1,0|vfw83z,1,1,0|vfw840,27,10,1|vqp43z,27,10,1|vqp440,1,1,0|vymarz,1,1,0|vymas0,27,10,1|w9f6rz,27,10,1|w9f6s0,1,1,0|whcdfz,1,1,0|whcdg0,27,10,1|wsi83z,27,10,1|wsi840,1,1,0|x02g3z,1,1,0|x02g40,27,10,1|xb8arz,27,10,1|xb8as0,1,1,0|xisirz,1,1,0|xisis0,27,10,1|xtydfz,27,10,1|xtydg0,1,1,0|y1ilfz,1,1,0|y1ilg0,27,10,1|ycog3z,27,10,1|ycog40,1,1,0|yklmrz,1,1,0|yklms0,27,10,1|yveirz,27,10,1|yveis0,1,1,0|z3bpfz,1,1,0|z3bpg0,27,10,1|ze4lfz,27,10,1|ze4lg0,1,1,0\",\"Europe/Kaliningrad|,0,332,0|-14212go,10,10,0|-s0e081,10,10,0|-s0e080,11,11,1|-rsilg1,11,11,1|-rsilg0,10,10,0|-ridmk1,10,10,0|-ridmk0,11,11,1|-ragfw1,11,11,1|-ragfw0,10,10,0|-qznjw1,10,10,0|-qznjw0,11,11,1|-qrqd81,11,11,1|-qrqd80,10,10,0|-fizzw1,10,10,0|-fizzw0,11,11,1|-e6dzw1,11,11,1|-e6dzw0,10,10,0|-dytrw1,10,10,0|-dytrw0,11,11,1|-dp3rw1,11,11,1|-dp3rw0,10,10,0|-dfqqk1,10,10,0|-dfqqk0,11,11,1|-d6dp81,11,11,1|-d6dp80,10,10,0|-cx0nw1,10,10,0|-cx0nw0,11,11,1|-cwm2w1,11,11,1|-cwm2w0,15,11,0|-cvmw81,15,11,0|-cvmw80,16,6,1|-cm2j01,16,6,1|-cm2j00,15,11,0|-cdzpk1,15,11,0|-cdzpk0,148,6,0|5vb6bz,148,6,0|5vb6c0,149,209,1|64pzjz,149,209,1|64pzk0,148,6,0|6e33nz,148,6,0|6e33o0,149,209,1|6nhwvz,149,209,1|6nhww0,148,6,0|6wv0zz,148,6,0|6wv100,149,209,1|769u7z,149,209,1|769u80,148,6,0|7foszz,148,6,0|7fot00,149,209,1|7p1zvz,149,209,1|7p1zw0,148,6,0|7yf17z,148,6,0|7yf180,149,209,1|87s2jz,149,209,1|87s2k0,148,6,0|8h53vz,148,6,0|8h53w0,149,209,1|8qi57z,149,209,1|8qi580,148,6,0|8zv6jz,148,6,0|8zv6k0,149,209,1|9987vz,149,209,1|9987w0,148,6,0|9il97z,148,6,0|9il980,149,209,1|9ryajz,149,209,1|9ryak0,148,6,0|a1bbvz,148,6,0|a1bbw0,16,6,1|aaofzz,16,6,1|aaog00,15,11,0|ak1hbz,15,11,0|ak1hc0,16,6,1|atrhbz,16,6,1|atrhc0,15,11,0|b34inz,15,11,0|b34io0,16,6,1|bchjzz,16,6,1|bchk00,15,11,0|blulbz,15,11,0|blulc0,16,6,1|bv7mnz,16,6,1|bv7mo0,15,11,0|c4knzz,15,11,0|c4ko00,16,6,1|cdxpbz,16,6,1|cdxpc0,15,11,0|cnaqnz,15,11,0|cnaqo0,16,6,1|cwnrzz,16,6,1|cwns00,15,11,0|d60tbz,15,11,0|d60tc0,16,6,1|dfdunz,16,6,1|dfduo0,15,11,0|dp3unz,15,11,0|dp3uo0,16,6,1|dzwqnz,16,6,1|dzwqo0,15,11,0|e7txbz,15,11,0|e7txc0,16,6,1|eimtbz,16,6,1|eimtc0,15,11,0|eqjzzz,15,11,0|eqk000,16,6,1|f1cvzz,16,6,1|f1cw00,15,11,0|f9a2nz,15,11,0|f9a2o0,16,6,1|fkfxbz,16,6,1|fkfxc0,15,11,0|fs05bz,15,11,0|fs05c0,16,6,1|g35zzz,16,6,1|g36000,15,11,0|gaq7zz,15,11,0|gaq800,16,6,1|glw2nz,16,6,1|glw2o0,15,11,0|gtt9bz,15,11,0|gtt9c0,16,6,1|h4m5bz,16,6,1|h4m5c0,15,11,0|hcjbzz,15,11,0|hcjc00,16,6,1|hnc7zz,16,6,1|hnc800,15,11,0|hv9enz,15,11,0|hv9eo0,16,6,1|i6f9bz,16,6,1|i6f9c0,15,11,0|idzhbz,15,11,0|idzhc0,16,6,1|ip5bzz,16,6,1|ip5c00,15,11,0|iwpjzz,15,11,0|iwpk00,16,6,1|j7venz,16,6,1|j7veo0,15,11,0|jffmnz,15,11,0|jffmo0,16,6,1|jqlhbz,16,6,1|jqlhc0,15,11,0|jyinzz,15,11,0|jyio00,16,6,1|k9bjzz,16,6,1|k9bk00,15,11,0|kh8qnz,15,11,0|kh8qo0,16,6,1|ks1mnz,16,6,1|ks1mo0,15,11,0|kzytbz,15,11,0|kzytc0,16,6,1|lb4nzz,16,6,1|lb4o00,15,11,0|liovzz,15,11,0|liow00,100,6,0|ne0vvz,100,6,0|ne0vw0,15,11,0\",\"Europe/Kiev|,0,351,0|-1ayy8bg,74,351,0|-nu11nh,74,351,0|-nu11ng,15,11,0|-kmr1k1,15,11,0|-kmr1k0,148,6,0|-erdv01,148,6,0|-erdv00,11,11,1|-e6dzw1,11,11,1|-e6dzw0,10,10,0|-dytrw1,10,10,0|-dytrw0,11,11,1|-dp3rw1,11,11,1|-dp3rw0,10,10,0|-dnetg1,10,10,0|-dnetg0,148,6,0|5vb6bz,148,6,0|5vb6c0,149,209,1|64pzjz,149,209,1|64pzk0,148,6,0|6e33nz,148,6,0|6e33o0,149,209,1|6nhwvz,149,209,1|6nhww0,148,6,0|6wv0zz,148,6,0|6wv100,149,209,1|769u7z,149,209,1|769u80,148,6,0|7foszz,148,6,0|7fot00,149,209,1|7p1zvz,149,209,1|7p1zw0,148,6,0|7yf17z,148,6,0|7yf180,149,209,1|87s2jz,149,209,1|87s2k0,148,6,0|8h53vz,148,6,0|8h53w0,149,209,1|8qi57z,149,209,1|8qi580,148,6,0|8zv6jz,148,6,0|8zv6k0,149,209,1|9987vz,149,209,1|9987w0,148,6,0|9il97z,148,6,0|9il980,149,209,1|9ryajz,149,209,1|9ryak0,148,6,0|a1bbvz,148,6,0|a1bbw0,149,209,1|aaod7z,149,209,1|aaod80,148,6,0|ak1ejz,148,6,0|ak1ek0,149,209,1|ap2t3z,149,209,1|ap2t40,16,6,1|bchjzz,16,6,1|bchk00,15,11,0|blufrz,15,11,0|blufs0,16,6,1|bv7ebz,16,6,1|bv7ec0,15,11,0|c4kifz,15,11,0|c4kig0,16,6,1|cdxgzz,16,6,1|cdxh00,15,11,0|cnal3z,15,11,0|cnal40,16,6,1|cwnjnz,16,6,1|cwnjo0,15,11,0|d60w3z,15,11,0|d60w40,16,6,1|dfdxfz,16,6,1|dfdxg0,15,11,0|dp3xfz,15,11,0|dp3xg0,16,6,1|dzwtfz,16,6,1|dzwtg0,15,11,0|e7u03z,15,11,0|e7u040,16,6,1|eimw3z,16,6,1|eimw40,15,11,0|eqk2rz,15,11,0|eqk2s0,16,6,1|f1cyrz,16,6,1|f1cys0,15,11,0|f9a5fz,15,11,0|f9a5g0,16,6,1|fkg03z,16,6,1|fkg040,15,11,0|fs083z,15,11,0|fs0840,16,6,1|g362rz,16,6,1|g362s0,15,11,0|gaqarz,15,11,0|gaqas0,16,6,1|glw5fz,16,6,1|glw5g0,15,11,0|gttc3z,15,11,0|gttc40,16,6,1|h4m83z,16,6,1|h4m840,15,11,0|hcjerz,15,11,0|hcjes0,16,6,1|hncarz,16,6,1|hncas0,15,11,0|hv9hfz,15,11,0|hv9hg0,16,6,1|i6fc3z,16,6,1|i6fc40,15,11,0|idzk3z,15,11,0|idzk40,16,6,1|ip5erz,16,6,1|ip5es0,15,11,0|iwpmrz,15,11,0|iwpms0,16,6,1|j7vhfz,16,6,1|j7vhg0,15,11,0|jffpfz,15,11,0|jffpg0,16,6,1|jqlk3z,16,6,1|jqlk40,15,11,0|jyiqrz,15,11,0|jyiqs0,16,6,1|k9bmrz,16,6,1|k9bms0,15,11,0|kh8tfz,15,11,0|kh8tg0,16,6,1|ks1pfz,16,6,1|ks1pg0,15,11,0|kzyw3z,15,11,0|kzyw40,16,6,1|lb4qrz,16,6,1|lb4qs0,15,11,0|lioyrz,15,11,0|lioys0,16,6,1|ltutfz,16,6,1|ltutg0,15,11,0|m1f1fz,15,11,0|m1f1g0,16,6,1|mckw3z,16,6,1|mckw40,15,11,0|mki2rz,15,11,0|mki2s0,16,6,1|mvayrz,16,6,1|mvays0,15,11,0|n385fz,15,11,0|n385g0,16,6,1|ne11fz,16,6,1|ne11g0,15,11,0|nly83z,15,11,0|nly840,16,6,1|nwr43z,16,6,1|nwr440,15,11,0|o4oarz,15,11,0|o4oas0,16,6,1|ofu5fz,16,6,1|ofu5g0,15,11,0|onedfz,15,11,0|onedg0,16,6,1|oyk83z,16,6,1|oyk840,15,11,0|p64g3z,15,11,0|p64g40,16,6,1|phaarz,16,6,1|phaas0,15,11,0|pp7hfz,15,11,0|pp7hg0,16,6,1|q00dfz,16,6,1|q00dg0,15,11,0|q7xk3z,15,11,0|q7xk40,16,6,1|qiqg3z,16,6,1|qiqg40,15,11,0|qqnmrz,15,11,0|qqnms0,16,6,1|r1thfz,16,6,1|r1thg0,15,11,0|r9dpfz,15,11,0|r9dpg0,16,6,1|rkjk3z,16,6,1|rkjk40,15,11,0|rs3s3z,15,11,0|rs3s40,16,6,1|s39mrz,16,6,1|s39ms0,15,11,0|sb6tfz,15,11,0|sb6tg0,16,6,1|slzpfz,16,6,1|slzpg0,15,11,0|stww3z,15,11,0|stww40,16,6,1|t4ps3z,16,6,1|t4ps40,15,11,0|tcmyrz,15,11,0|tcmys0,16,6,1|tnfurz,16,6,1|tnfus0,15,11,0|tvd1fz,15,11,0|tvd1g0,16,6,1|u6iw3z,16,6,1|u6iw40,15,11,0|ue343z,15,11,0|ue3440,16,6,1|up8yrz,16,6,1|up8ys0,15,11,0|uwt6rz,15,11,0|uwt6s0,16,6,1|v7z1fz,16,6,1|v7z1g0,15,11,0|vfw83z,15,11,0|vfw840,16,6,1|vqp43z,16,6,1|vqp440,15,11,0|vymarz,15,11,0|vymas0,16,6,1|w9f6rz,16,6,1|w9f6s0,15,11,0|whcdfz,15,11,0|whcdg0,16,6,1|wsi83z,16,6,1|wsi840,15,11,0|x02g3z,15,11,0|x02g40,16,6,1|xb8arz,16,6,1|xb8as0,15,11,0|xisirz,15,11,0|xisis0,16,6,1|xtydfz,16,6,1|xtydg0,15,11,0|y1ilfz,15,11,0|y1ilg0,16,6,1|ycog3z,16,6,1|ycog40,15,11,0|yklmrz,15,11,0|yklms0,16,6,1|yveirz,16,6,1|yveis0,15,11,0|z3bpfz,15,11,0|z3bpg0,16,6,1|ze4lfz,16,6,1|ze4lg0,15,11,0\",\"Europe/Kirov|,0,352,0|-qcx400,100,6,0|-kmr4c1,100,6,0|-kmr4c0,105,209,0|5vb3jz,105,209,0|5vb3k0,92,194,1|64pwrz,92,194,1|64pws0,105,209,0|6e30vz,105,209,0|6e30w0,92,194,1|6nhu3z,92,194,1|6nhu40,105,209,0|6wuy7z,105,209,0|6wuy80,92,194,1|769rfz,92,194,1|769rg0,105,209,0|7foq7z,105,209,0|7foq80,92,194,1|7p1x3z,92,194,1|7p1x40,105,209,0|7yeyfz,105,209,0|7yeyg0,92,194,1|87rzrz,92,194,1|87rzs0,105,209,0|8h513z,105,209,0|8h5140,92,194,1|8qi2fz,92,194,1|8qi2g0,105,209,0|8zv3rz,105,209,0|8zv3s0,92,194,1|99853z,92,194,1|998540,105,209,0|9il6fz,105,209,0|9il6g0,92,194,1|9ry7rz,92,194,1|9ry7s0,105,209,0|a1b93z,105,209,0|a1b940,105,209,1|aaod7z,105,209,1|aaod80,100,6,0|ak1ejz,100,6,0|ak1ek0,105,209,1|atrejz,105,209,1|atrek0,100,6,0|b34fvz,100,6,0|b34fw0,105,209,0|blufrz,105,209,0|blufs0,105,209,1|bv7jvz,105,209,1|bv7jw0,100,6,0|c4kl7z,100,6,0|c4kl80,105,209,1|cdxmjz,105,209,1|cdxmk0,100,6,0|cnanvz,100,6,0|cnanw0,105,209,1|cwnp7z,105,209,1|cwnp80,100,6,0|d60qjz,100,6,0|d60qk0,105,209,1|dfdrvz,105,209,1|dfdrw0,100,6,0|dp3rvz,100,6,0|dp3rw0,105,209,1|dzwnvz,105,209,1|dzwnw0,100,6,0|e7tujz,100,6,0|e7tuk0,105,209,1|eimqjz,105,209,1|eimqk0,100,6,0|eqjx7z,100,6,0|eqjx80,105,209,1|f1ct7z,105,209,1|f1ct80,100,6,0|f99zvz,100,6,0|f99zw0,105,209,1|fkfujz,105,209,1|fkfuk0,100,6,0|fs02jz,100,6,0|fs02k0,105,209,1|g35x7z,105,209,1|g35x80,100,6,0|gaq57z,100,6,0|gaq580,105,209,1|glvzvz,105,209,1|glvzw0,100,6,0|gtt6jz,100,6,0|gtt6k0,105,209,1|h4m2jz,105,209,1|h4m2k0,100,6,0|hcj97z,100,6,0|hcj980,105,209,1|hnc57z,105,209,1|hnc580,100,6,0|hv9bvz,100,6,0|hv9bw0,105,209,1|i6f6jz,105,209,1|i6f6k0,100,6,0|idzejz,100,6,0|idzek0,105,209,1|ip597z,105,209,1|ip5980,100,6,0|iwph7z,100,6,0|iwph80,105,209,1|j7vbvz,105,209,1|j7vbw0,100,6,0|jffjvz,100,6,0|jffjw0,105,209,1|jqlejz,105,209,1|jqlek0,100,6,0|jyil7z,100,6,0|jyil80,105,209,1|k9bh7z,105,209,1|k9bh80,100,6,0|kh8nvz,100,6,0|kh8nw0,105,209,1|ks1jvz,105,209,1|ks1jw0,100,6,0|kzyqjz,100,6,0|kzyqk0,105,209,1|lb4l7z,105,209,1|lb4l80,100,6,0|liot7z,100,6,0|liot80,105,209,0|ne0t3z,105,209,0|ne0t40,100,6,0\",\"Europe/Lisbon|,0,29,0|-u9rhc0,8,1,0|-rxx1g1,8,1,0|-rxx1g0,9,10,1|-rqx401,9,10,1|-rqx400,8,1,0|-rkqys1,8,1,0|-rkqys0,9,10,1|-r90qs1,9,10,1|-r90qs0,8,1,0|-r1x6s1,8,1,0|-r1x6s0,9,10,1|-qq8tg1,9,10,1|-qq8tg0,8,1,0|-qj7441,8,1,0|-qj7440,9,10,1|-q7gw41,9,10,1|-q7gw40,8,1,0|-q0dc41,8,1,0|-q0dc40,9,10,1|-pon441,9,10,1|-pon440,8,1,0|-phles1,8,1,0|-phles0,9,10,1|-p5v6s1,9,10,1|-p5v6s0,8,1,0|-nusqs1,8,1,0|-nusqs0,9,10,1|-nlhk41,9,10,1|-nlhk40,8,1,0|-mt71g1,8,1,0|-mt71g0,9,10,1|-mkjxg1,9,10,1|-mkjxg0,8,1,0|-matxg1,8,1,0|-matxg0,9,10,1|-m1tus1,9,10,1|-m1tus0,8,1,0|-lrqw41,8,1,0|-lrqw40,9,10,1|-liqtg1,9,10,1|-liqtg0,8,1,0|-l8nus1,8,1,0|-l8nus0,9,10,1|-l00qs1,9,10,1|-l00qs0,8,1,0|-k77pg1,8,1,0|-k77pg0,9,10,1|-jyklg1,9,10,1|-jyklg0,8,1,0|-jp7k41,8,1,0|-jp7k40,9,10,1|-jfuis1,9,10,1|-jfuis0,8,1,0|-ineg41,8,1,0|-ineg40,9,10,1|-ie1es1,9,10,1|-ie1es0,8,1,0|-i51c41,8,1,0|-i51c40,9,10,1|-hvbc41,9,10,1|-hvbc40,8,1,0|-hl8dg1,8,1,0|-hl8dg0,9,10,1|-hcl9g1,9,10,1|-hcl9g0,8,1,0|-h38841,8,1,0|-h38840,9,10,1|-gtv6s1,9,10,1|-gtv6s0,8,1,0|-gkv441,8,1,0|-gkv440,9,10,1|-gb5441,9,10,1|-gb5440,8,1,0|-g125g1,8,1,0|-g125g0,9,10,1|-fpwas1,9,10,1|-fpwas0,8,1,0|-fkutg1,8,1,0|-fkutg0,9,10,1|-f9c041,9,10,1|-f9c040,8,1,0|-ezyys1,8,1,0|-ezyys0,9,10,1|-eqk2s1,9,10,1|-eqk2s0,8,1,0|-eibs41,8,1,0|-eibs40,9,10,1|-eg62w1,9,10,1|-eg62w0,152,11,1|-eaeo81,152,11,1|-eaeo80,9,10,1|-e6sys1,9,10,1|-e6sys0,8,1,0|-dzlpg1,8,1,0|-dzlpg0,9,10,1|-dxsyw1,9,10,1|-dxsyw0,152,11,1|-dqyo81,152,11,1|-dqyo80,9,10,1|-dnpxg1,9,10,1|-dnpxg0,8,1,0|-dgvms1,8,1,0|-dgvms0,9,10,1|-depxk1,9,10,1|-depxk0,152,11,1|-d88lk1,152,11,1|-d88lk0,9,10,1|-d4zus1,9,10,1|-d4zus0,8,1,0|-cy5k41,8,1,0|-cy5k40,9,10,1|-cvzuw1,9,10,1|-cvzuw0,152,11,1|-cpiiw1,152,11,1|-cpiiw0,9,10,1|-cm9s41,9,10,1|-cm9s40,8,1,0|-cdzms1,8,1,0|-cdzms0,9,10,1|-c4mlg1,9,10,1|-c4mlg0,8,1,0|-bv9bs1,8,1,0|-bv9bs0,9,10,1|-blwag1,9,10,1|-blwag0,8,1,0|-bcj941,8,1,0|-bcj940,9,10,1|-b367s1,9,10,1|-b367s0,8,1,0|-att6g1,8,1,0|-att6g0,9,10,1|-akg541,9,10,1|-akg540,8,1,0|-9sd141,8,1,0|-9sd140,9,10,1|-9in141,9,10,1|-9in140,8,1,0|-999zs1,8,1,0|-999zs0,9,10,1|-8zwyg1,9,10,1|-8zwyg0,8,1,0|-8qjx41,8,1,0|-8qjx40,9,10,1|-8h6vs1,9,10,1|-8h6vs0,8,1,0|-87tug1,8,1,0|-87tug0,9,10,1|-7ygt41,9,10,1|-7ygt40,8,1,0|-7p3rs1,8,1,0|-7p3rs0,9,10,1|-7fqqg1,9,10,1|-7fqqg0,8,1,0|-76dp41,8,1,0|-76dp40,9,10,1|-6wnp41,9,10,1|-6wnp40,8,1,0|-6nans1,8,1,0|-6nans0,9,10,1|-6dxmg1,9,10,1|-6dxmg0,8,1,0|-64kl41,8,1,0|-64kl40,9,10,1|-5v7js1,9,10,1|-5v7js0,8,1,0|-5luig1,8,1,0|-5luig0,9,10,1|-5chh41,9,10,1|-5chh40,8,1,0|-534fs1,8,1,0|-534fs0,9,10,1|-4treg1,9,10,1|-4treg0,8,1,0|-4ked41,8,1,0|-4ked40,9,10,1|-4b1bs1,9,10,1|-4b1bs0,8,1,0|-41oag1,8,1,0|-41oag0,9,10,1|-3ryag1,9,10,1|-3ryag0,8,1,0|-3il941,8,1,0|-3il940,9,10,1|-3987s1,9,10,1|-3987s0,8,1,0|-2zv6g1,8,1,0|-2zv6g0,9,10,1|-2qi541,9,10,1|-2qi540,8,1,0|-2h53s1,8,1,0|-2h53s0,9,10,1|-27s2g1,9,10,1|-27s2g0,8,1,0|-1yf141,8,1,0|-1yf140,10,10,0|3ijjzz,10,10,0|3ijk00,8,1,0|3rwlbz,8,1,0|3rwlc0,9,10,1|419mnz,9,10,1|419mo0,8,1,0|4azmnz,8,1,0|4azmo0,9,10,1|4kcnzz,9,10,1|4kco00,8,1,0|4tppbz,8,1,0|4tppc0,9,10,1|532tfz,9,10,1|532tg0,8,1,0|5cfrzz,8,1,0|5cfs00,9,10,1|5lsw3z,9,10,1|5lsw40,8,1,0|5v5xfz,8,1,0|5v5xg0,9,10,1|64iyrz,9,10,1|64iys0,8,1,0|6dw03z,8,1,0|6dw040,9,10,1|6n91fz,9,10,1|6n91g0,8,1,0|6wm5jz,8,1,0|6wm5k0,9,10,1|75z43z,9,10,1|75z440,8,1,0|7fc5fz,8,1,0|7fc5g0,9,10,1|7p25fz,9,10,1|7p25g0,8,1,0|7yf6rz,8,1,0|7yf6s0,9,10,1|87s83z,9,10,1|87s840,8,1,0|8h59fz,8,1,0|8h59g0,9,10,1|8qiarz,9,10,1|8qias0,8,1,0|8zvc3z,8,1,0|8zvc40,9,10,1|998dfz,9,10,1|998dg0,8,1,0|9ilerz,8,1,0|9iles0,9,10,1|9ryg3z,9,10,1|9ryg40,8,1,0|a1bhfz,8,1,0|a1bhg0,9,10,1|aaoirz,9,10,1|aaois0,8,1,0|ak1k3z,8,1,0|ak1k40,9,10,1|atrk3z,9,10,1|atrk40,8,1,0|b34lfz,8,1,0|b34lg0,9,10,1|bchmrz,9,10,1|bchms0,8,1,0|bluo3z,8,1,0|bluo40,9,10,1|bv7pfz,9,10,1|bv7pg0,10,10,0|c4kqrz,10,10,0|c4kqs0,11,11,1|cdxs3z,11,11,1|cdxs40,10,10,0|cnatfz,10,10,0|cnatg0,11,11,1|cwnurz,11,11,1|cwnus0,10,10,0|d60w3z,10,10,0|d60w40,11,11,1|dfdxfz,11,11,1|dfdxg0,10,10,0|dp3xfz,10,10,0|dp3xg0,9,10,1|dzwtfz,9,10,1|dzwtg0,8,1,0|e7u03z,8,1,0|e7u040,9,10,1|eimw3z,9,10,1|eimw40,8,1,0|eqk2rz,8,1,0|eqk2s0,9,10,1|f1cyrz,9,10,1|f1cys0,8,1,0|f9a5fz,8,1,0|f9a5g0,9,10,1|fkg03z,9,10,1|fkg040,8,1,0|fs083z,8,1,0|fs0840,9,10,1|g362rz,9,10,1|g362s0,8,1,0|gaqarz,8,1,0|gaqas0,9,10,1|glw5fz,9,10,1|glw5g0,8,1,0|gttc3z,8,1,0|gttc40,9,10,1|h4m83z,9,10,1|h4m840,8,1,0|hcjerz,8,1,0|hcjes0,9,10,1|hncarz,9,10,1|hncas0,8,1,0|hv9hfz,8,1,0|hv9hg0,9,10,1|i6fc3z,9,10,1|i6fc40,8,1,0|idzk3z,8,1,0|idzk40,9,10,1|ip5erz,9,10,1|ip5es0,8,1,0|iwpmrz,8,1,0|iwpms0,9,10,1|j7vhfz,9,10,1|j7vhg0,8,1,0|jffpfz,8,1,0|jffpg0,9,10,1|jqlk3z,9,10,1|jqlk40,8,1,0|jyiqrz,8,1,0|jyiqs0,9,10,1|k9bmrz,9,10,1|k9bms0,8,1,0|kh8tfz,8,1,0|kh8tg0,9,10,1|ks1pfz,9,10,1|ks1pg0,8,1,0|kzyw3z,8,1,0|kzyw40,9,10,1|lb4qrz,9,10,1|lb4qs0,8,1,0|lioyrz,8,1,0|lioys0,9,10,1|ltutfz,9,10,1|ltutg0,8,1,0|m1f1fz,8,1,0|m1f1g0,9,10,1|mckw3z,9,10,1|mckw40,8,1,0|mki2rz,8,1,0|mki2s0,9,10,1|mvayrz,9,10,1|mvays0,8,1,0|n385fz,8,1,0|n385g0,9,10,1|ne11fz,9,10,1|ne11g0,8,1,0|nly83z,8,1,0|nly840,9,10,1|nwr43z,9,10,1|nwr440,8,1,0|o4oarz,8,1,0|o4oas0,9,10,1|ofu5fz,9,10,1|ofu5g0,8,1,0|onedfz,8,1,0|onedg0,9,10,1|oyk83z,9,10,1|oyk840,8,1,0|p64g3z,8,1,0|p64g40,9,10,1|phaarz,9,10,1|phaas0,8,1,0|pp7hfz,8,1,0|pp7hg0,9,10,1|q00dfz,9,10,1|q00dg0,8,1,0|q7xk3z,8,1,0|q7xk40,9,10,1|qiqg3z,9,10,1|qiqg40,8,1,0|qqnmrz,8,1,0|qqnms0,9,10,1|r1thfz,9,10,1|r1thg0,8,1,0|r9dpfz,8,1,0|r9dpg0,9,10,1|rkjk3z,9,10,1|rkjk40,8,1,0|rs3s3z,8,1,0|rs3s40,9,10,1|s39mrz,9,10,1|s39ms0,8,1,0|sb6tfz,8,1,0|sb6tg0,9,10,1|slzpfz,9,10,1|slzpg0,8,1,0|stww3z,8,1,0|stww40,9,10,1|t4ps3z,9,10,1|t4ps40,8,1,0|tcmyrz,8,1,0|tcmys0,9,10,1|tnfurz,9,10,1|tnfus0,8,1,0|tvd1fz,8,1,0|tvd1g0,9,10,1|u6iw3z,9,10,1|u6iw40,8,1,0|ue343z,8,1,0|ue3440,9,10,1|up8yrz,9,10,1|up8ys0,8,1,0|uwt6rz,8,1,0|uwt6s0,9,10,1|v7z1fz,9,10,1|v7z1g0,8,1,0|vfw83z,8,1,0|vfw840,9,10,1|vqp43z,9,10,1|vqp440,8,1,0|vymarz,8,1,0|vymas0,9,10,1|w9f6rz,9,10,1|w9f6s0,8,1,0|whcdfz,8,1,0|whcdg0,9,10,1|wsi83z,9,10,1|wsi840,8,1,0|x02g3z,8,1,0|x02g40,9,10,1|xb8arz,9,10,1|xb8as0,8,1,0|xisirz,8,1,0|xisis0,9,10,1|xtydfz,9,10,1|xtydg0,8,1,0|y1ilfz,8,1,0|y1ilg0,9,10,1|ycog3z,9,10,1|ycog40,8,1,0|yklmrz,8,1,0|yklms0,9,10,1|yveirz,9,10,1|yveis0,8,1,0|z3bpfz,8,1,0|z3bpg0,9,10,1|ze4lfz,9,10,1|ze4lg0,8,1,0\",\"Europe/Ljubljana|,0,332,0|-18vsmgo,10,10,0|-ezayw1,10,10,0|-ezayw0,11,11,1|-e6dzw1,11,11,1|-e6dzw0,10,10,0|-dytrw1,10,10,0|-dytrw0,11,11,1|-dp3rw1,11,11,1|-dp3rw0,10,10,0|-dfqqk1,10,10,0|-dfqqk0,11,11,1|-d6dp81,11,11,1|-d6dp80,10,10,0|-cv5zw1,10,10,0|-cv5zw0,11,11,1|-cofek1,11,11,1|-cofek0,10,10,0|6wm2rz,10,10,0|6wm2s0,11,11,1|75z43z,11,11,1|75z440,10,10,0|7fc5fz,10,10,0|7fc5g0,11,11,1|7p25fz,11,11,1|7p25g0,10,10,0|7yf6rz,10,10,0|7yf6s0,11,11,1|87s83z,11,11,1|87s840,10,10,0|8h59fz,10,10,0|8h59g0,11,11,1|8qiarz,11,11,1|8qias0,10,10,0|8zvc3z,10,10,0|8zvc40,11,11,1|998dfz,11,11,1|998dg0,10,10,0|9ilerz,10,10,0|9iles0,11,11,1|9ryg3z,11,11,1|9ryg40,10,10,0|a1bhfz,10,10,0|a1bhg0,11,11,1|aaoirz,11,11,1|aaois0,10,10,0|ak1k3z,10,10,0|ak1k40,11,11,1|atrk3z,11,11,1|atrk40,10,10,0|b34lfz,10,10,0|b34lg0,11,11,1|bchmrz,11,11,1|bchms0,10,10,0|bluo3z,10,10,0|bluo40,11,11,1|bv7pfz,11,11,1|bv7pg0,10,10,0|c4kqrz,10,10,0|c4kqs0,11,11,1|cdxs3z,11,11,1|cdxs40,10,10,0|cnatfz,10,10,0|cnatg0,11,11,1|cwnurz,11,11,1|cwnus0,10,10,0|d60w3z,10,10,0|d60w40,11,11,1|dfdxfz,11,11,1|dfdxg0,10,10,0|dp3xfz,10,10,0|dp3xg0,11,11,1|dzwtfz,11,11,1|dzwtg0,10,10,0|e7u03z,10,10,0|e7u040,11,11,1|eimw3z,11,11,1|eimw40,10,10,0|eqk2rz,10,10,0|eqk2s0,11,11,1|f1cyrz,11,11,1|f1cys0,10,10,0|f9a5fz,10,10,0|f9a5g0,11,11,1|fkg03z,11,11,1|fkg040,10,10,0|fs083z,10,10,0|fs0840,11,11,1|g362rz,11,11,1|g362s0,10,10,0|gaqarz,10,10,0|gaqas0,11,11,1|glw5fz,11,11,1|glw5g0,10,10,0|gttc3z,10,10,0|gttc40,11,11,1|h4m83z,11,11,1|h4m840,10,10,0|hcjerz,10,10,0|hcjes0,11,11,1|hncarz,11,11,1|hncas0,10,10,0|hv9hfz,10,10,0|hv9hg0,11,11,1|i6fc3z,11,11,1|i6fc40,10,10,0|idzk3z,10,10,0|idzk40,11,11,1|ip5erz,11,11,1|ip5es0,10,10,0|iwpmrz,10,10,0|iwpms0,11,11,1|j7vhfz,11,11,1|j7vhg0,10,10,0|jffpfz,10,10,0|jffpg0,11,11,1|jqlk3z,11,11,1|jqlk40,10,10,0|jyiqrz,10,10,0|jyiqs0,11,11,1|k9bmrz,11,11,1|k9bms0,10,10,0|kh8tfz,10,10,0|kh8tg0,11,11,1|ks1pfz,11,11,1|ks1pg0,10,10,0|kzyw3z,10,10,0|kzyw40,11,11,1|lb4qrz,11,11,1|lb4qs0,10,10,0|lioyrz,10,10,0|lioys0,11,11,1|ltutfz,11,11,1|ltutg0,10,10,0|m1f1fz,10,10,0|m1f1g0,11,11,1|mckw3z,11,11,1|mckw40,10,10,0|mki2rz,10,10,0|mki2s0,11,11,1|mvayrz,11,11,1|mvays0,10,10,0|n385fz,10,10,0|n385g0,11,11,1|ne11fz,11,11,1|ne11g0,10,10,0|nly83z,10,10,0|nly840,11,11,1|nwr43z,11,11,1|nwr440,10,10,0|o4oarz,10,10,0|o4oas0,11,11,1|ofu5fz,11,11,1|ofu5g0,10,10,0|onedfz,10,10,0|onedg0,11,11,1|oyk83z,11,11,1|oyk840,10,10,0|p64g3z,10,10,0|p64g40,11,11,1|phaarz,11,11,1|phaas0,10,10,0|pp7hfz,10,10,0|pp7hg0,11,11,1|q00dfz,11,11,1|q00dg0,10,10,0|q7xk3z,10,10,0|q7xk40,11,11,1|qiqg3z,11,11,1|qiqg40,10,10,0|qqnmrz,10,10,0|qqnms0,11,11,1|r1thfz,11,11,1|r1thg0,10,10,0|r9dpfz,10,10,0|r9dpg0,11,11,1|rkjk3z,11,11,1|rkjk40,10,10,0|rs3s3z,10,10,0|rs3s40,11,11,1|s39mrz,11,11,1|s39ms0,10,10,0|sb6tfz,10,10,0|sb6tg0,11,11,1|slzpfz,11,11,1|slzpg0,10,10,0|stww3z,10,10,0|stww40,11,11,1|t4ps3z,11,11,1|t4ps40,10,10,0|tcmyrz,10,10,0|tcmys0,11,11,1|tnfurz,11,11,1|tnfus0,10,10,0|tvd1fz,10,10,0|tvd1g0,11,11,1|u6iw3z,11,11,1|u6iw40,10,10,0|ue343z,10,10,0|ue3440,11,11,1|up8yrz,11,11,1|up8ys0,10,10,0|uwt6rz,10,10,0|uwt6s0,11,11,1|v7z1fz,11,11,1|v7z1g0,10,10,0|vfw83z,10,10,0|vfw840,11,11,1|vqp43z,11,11,1|vqp440,10,10,0|vymarz,10,10,0|vymas0,11,11,1|w9f6rz,11,11,1|w9f6s0,10,10,0|whcdfz,10,10,0|whcdg0,11,11,1|wsi83z,11,11,1|wsi840,10,10,0|x02g3z,10,10,0|x02g40,11,11,1|xb8arz,11,11,1|xb8as0,10,10,0|xisirz,10,10,0|xisis0,11,11,1|xtydfz,11,11,1|xtydg0,10,10,0|y1ilfz,10,10,0|y1ilg0,11,11,1|ycog3z,11,11,1|ycog40,10,10,0|yklmrz,10,10,0|yklms0,11,11,1|yveirz,11,11,1|yveis0,10,10,0|z3bpfz,10,10,0|z3bpg0,11,11,1|ze4lfz,11,11,1|ze4lg0,10,10,0\",\"Europe/London|,0,347,0|-1rprx9x,1,1,0|-rzcns1,1,1,0|-rzcns0,27,10,1|-rsid41,27,10,1|-rsid40,1,1,0|-risd41,1,1,0|-risd40,27,10,1|-ragd41,27,10,1|-ragd40,1,1,0|-r0s7s1,1,1,0|-r0s7s0,27,10,1|-qr0d41,27,10,1|-qr0d40,1,1,0|-qhp6g1,1,1,0|-qhp6g0,27,10,1|-q8aag1,27,10,1|-q8aag0,1,1,0|-pyz3s1,1,1,0|-pyz3s0,27,10,1|-po4d41,27,10,1|-po4d40,1,1,0|-pfw2g1,1,1,0|-pfw2g0,27,10,1|-p6h6g1,27,10,1|-p6h6g0,1,1,0|-oxiyg1,1,1,0|-oxiyg0,27,10,1|-onfzs1,27,10,1|-onfzs0,1,1,0|-odd141,1,1,0|-odd140,27,10,1|-o5st41,27,10,1|-o5st40,1,1,0|-nuzx41,1,1,0|-nuzx40,27,10,1|-nmprs1,27,10,1|-nmprs0,1,1,0|-nbwvs1,1,1,0|-nbwvs0,27,10,1|-n39rs1,27,10,1|-n39rs0,1,1,0|-mt6t41,1,1,0|-mt6t40,27,10,1|-mkjp41,27,10,1|-mkjp40,1,1,0|-matp41,1,1,0|-matp40,27,10,1|-m1tmg1,27,10,1|-m1tmg0,1,1,0|-lrdp41,1,1,0|-lrdp40,27,10,1|-liql41,27,10,1|-liql40,1,1,0|-l8nmg1,1,1,0|-l8nmg0,27,10,1|-l00ig1,27,10,1|-l00ig0,1,1,0|-kqaig1,1,1,0|-kqaig0,27,10,1|-khafs1,27,10,1|-khafs0,1,1,0|-k77h41,1,1,0|-k77h40,27,10,1|-jykd41,27,10,1|-jykd40,1,1,0|-joheg1,1,1,0|-joheg0,27,10,1|-jfuag1,27,10,1|-jfuag0,1,1,0|-j64ag1,1,1,0|-j64ag0,27,10,1|-iwr941,27,10,1|-iwr940,1,1,0|-imoag1,1,1,0|-imoag0,27,10,1|-ie16g1,27,10,1|-ie16g0,1,1,0|-i4b6g1,1,1,0|-i4b6g0,27,10,1|-hvb3s1,27,10,1|-hvb3s0,1,1,0|-hl8541,1,1,0|-hl8540,27,10,1|-hcl141,27,10,1|-hcl140,1,1,0|-h2i2g1,1,1,0|-h2i2g0,27,10,1|-gtuyg1,27,10,1|-gtuyg0,1,1,0|-gk4yg1,1,1,0|-gk4yg0,27,10,1|-gb4vs1,27,10,1|-gb4vs0,1,1,0|-g11x41,1,1,0|-g11x40,27,10,1|-fpw2g1,27,10,1|-fpw2g0,1,1,0|-fkul41,1,1,0|-fkul40,27,10,1|-eyiyk1,27,10,1|-eyiyk0,151,11,1|-ethh81,151,11,1|-ethh80,27,10,1|-eh8qk1,27,10,1|-eh8qk0,151,11,1|-earek1,151,11,1|-earek0,27,10,1|-dyinw1,27,10,1|-dyinw0,151,11,1|-drod81,151,11,1|-drod80,27,10,1|-dfsl81,27,10,1|-dfsl80,151,11,1|-d75h81,151,11,1|-d75h80,27,10,1|-cx0nw1,27,10,1|-cx0nw0,151,11,1|-cro2k1,151,11,1|-cro2k0,27,10,1|-cncfs1,27,10,1|-cncfs0,1,1,0|-cdmfs1,1,1,0|-cdmfs0,27,10,1|-c4md41,27,10,1|-c4md40,1,1,0|-bwc7s1,1,1,0|-bwc7s0,27,10,1|-buwfw1,27,10,1|-buwfw0,151,11,1|-bos2k1,151,11,1|-bos2k0,27,10,1|-bkgfs1,27,10,1|-bkgfs0,1,1,0|-bdm541,1,1,0|-bdm540,27,10,1|-b1qd41,27,10,1|-b1qd40,1,1,0|-att6g1,1,1,0|-att6g0,27,10,1|-aj0ag1,27,10,1|-aj0ag0,1,1,0|-aad6g1,1,1,0|-aad6g0,27,10,1|-a0n6g1,27,10,1|-a0n6g0,1,1,0|-9rn3s1,1,1,0|-9rn3s0,27,10,1|-9hx3s1,27,10,1|-9hx3s0,1,1,0|-98k2g1,1,1,0|-98k2g0,27,10,1|-8yu2g1,27,10,1|-8yu2g0,1,1,0|-8ptzs1,1,1,0|-8ptzs0,27,10,1|-8h6vs1,27,10,1|-8h6vs0,1,1,0|-87gvs1,1,1,0|-87gvs0,27,10,1|-7ygt41,27,10,1|-7ygt40,1,1,0|-7odug1,1,1,0|-7odug0,27,10,1|-7fqqg1,27,10,1|-7fqqg0,1,1,0|-75at41,1,1,0|-75at40,27,10,1|-6wnp41,27,10,1|-6wnp40,1,1,0|-6mxp41,1,1,0|-6mxp40,27,10,1|-6dxmg1,27,10,1|-6dxmg0,1,1,0|-63uns1,1,1,0|-63uns0,27,10,1|-5v7js1,27,10,1|-5v7js0,1,1,0|-5l4l41,1,1,0|-5l4l40,27,10,1|-5chh41,27,10,1|-5chh40,1,1,0|-52rh41,1,1,0|-52rh40,27,10,1|-4treg1,27,10,1|-4treg0,1,1,0|-4krbs1,1,1,0|-4krbs0,27,10,1|-49lh41,27,10,1|-49lh40,1,1,0|-421941,1,1,0|-421940,27,10,1|-3qveg1,27,10,1|-3qveg0,1,1,0|-3iy7s1,1,1,0|-3iy7s0,27,10,1|-385bs1,27,10,1|-385bs0,1,1,0|-30l3s1,1,1,0|-30l3s0,27,10,1|-2pf941,27,10,1|-2pf940,1,1,0|-2hv141,1,1,0|-2hv140,27,10,1|-26p6g1,27,10,1|-26p6g0,1,1,0|-1z4yg1,1,1,0|-1z4yg0,27,10,1|-1nz3s1,27,10,1|-1nz3s0,1,1,0|-1gevs1,1,1,0|-1gevs0,27,10,1|-14w2g1,27,10,1|-14w2g0,1,1,0|-z4ns1,1,1,0|-z4ns0,27,10,1|-m6841,27,10,1|-m6840,27,10,0|yd6vz,27,10,0|yd6w0,1,1,0|15kg7z,1,1,0|15kg80,27,10,1|1h39jz,27,10,1|1h39k0,1,1,0|1oaivz,1,1,0|1oaiw0,27,10,1|1ztc7z,27,10,1|1ztc80,1,1,0|270ljz,1,1,0|270lk0,27,10,1|2ijevz,27,10,1|2ijew0,1,1,0|2pqo7z,1,1,0|2pqo80,27,10,1|319hjz,27,10,1|319hk0,1,1,0|38tpjz,1,1,0|38tpk0,27,10,1|3jzk7z,27,10,1|3jzk80,1,1,0|3rjs7z,1,1,0|3rjs80,27,10,1|42pmvz,27,10,1|42pmw0,1,1,0|4a9uvz,1,1,0|4a9uw0,27,10,1|4lso7z,27,10,1|4lso80,1,1,0|4szxjz,1,1,0|4szxk0,27,10,1|54iqvz,27,10,1|54iqw0,1,1,0|5bq07z,1,1,0|5bq080,27,10,1|5n8tjz,27,10,1|5n8tk0,1,1,0|5v5xfz,1,1,0|5v5xg0,27,10,1|65ytfz,27,10,1|65ytg0,1,1,0|6dw03z,1,1,0|6dw040,27,10,1|6oow3z,27,10,1|6oow40,1,1,0|6wm2rz,1,1,0|6wm2s0,27,10,1|77eyrz,27,10,1|77eys0,1,1,0|7fc5fz,1,1,0|7fc5g0,27,10,1|7qi03z,27,10,1|7qi040,1,1,0|7yf6rz,1,1,0|7yf6s0,27,10,1|8982rz,27,10,1|8982s0,1,1,0|8h59fz,1,1,0|8h59g0,27,10,1|8ry5fz,27,10,1|8ry5g0,1,1,0|8zvc3z,1,1,0|8zvc40,27,10,1|9ao83z,27,10,1|9ao840,1,1,0|9ilerz,1,1,0|9iles0,27,10,1|9tearz,27,10,1|9teas0,1,1,0|a1bhfz,1,1,0|a1bhg0,27,10,1|achc3z,27,10,1|achc40,1,1,0|ak1k3z,1,1,0|ak1k40,27,10,1|av7erz,27,10,1|av7es0,1,1,0|b34lfz,1,1,0|b34lg0,27,10,1|bdxhfz,27,10,1|bdxhg0,1,1,0|bluo3z,1,1,0|bluo40,27,10,1|bwnk3z,27,10,1|bwnk40,1,1,0|c4kqrz,1,1,0|c4kqs0,27,10,1|cfdmrz,27,10,1|cfdms0,1,1,0|cnatfz,1,1,0|cnatg0,27,10,1|cy3pfz,27,10,1|cy3pg0,1,1,0|d60w3z,1,1,0|d60w40,27,10,1|dgts3z,27,10,1|dgts40,1,1,0|dp3xfz,1,1,0|dp3xg0,27,10,1|dzwtfz,27,10,1|dzwtg0,1,1,0|e7u03z,1,1,0|e7u040,27,10,1|eimw3z,27,10,1|eimw40,1,1,0|eqk2rz,1,1,0|eqk2s0,27,10,1|f1cyrz,27,10,1|f1cys0,1,1,0|f9a5fz,1,1,0|f9a5g0,27,10,1|fkg03z,27,10,1|fkg040,1,1,0|fs083z,1,1,0|fs0840,27,10,1|g362rz,27,10,1|g362s0,1,1,0|gaqarz,1,1,0|gaqas0,27,10,1|glw5fz,27,10,1|glw5g0,1,1,0|gttc3z,1,1,0|gttc40,27,10,1|h4m83z,27,10,1|h4m840,1,1,0|hcjerz,1,1,0|hcjes0,27,10,1|hncarz,27,10,1|hncas0,1,1,0|hv9hfz,1,1,0|hv9hg0,27,10,1|i6fc3z,27,10,1|i6fc40,1,1,0|idzk3z,1,1,0|idzk40,27,10,1|ip5erz,27,10,1|ip5es0,1,1,0|iwpmrz,1,1,0|iwpms0,27,10,1|j7vhfz,27,10,1|j7vhg0,1,1,0|jffpfz,1,1,0|jffpg0,27,10,1|jqlk3z,27,10,1|jqlk40,1,1,0|jyiqrz,1,1,0|jyiqs0,27,10,1|k9bmrz,27,10,1|k9bms0,1,1,0|kh8tfz,1,1,0|kh8tg0,27,10,1|ks1pfz,27,10,1|ks1pg0,1,1,0|kzyw3z,1,1,0|kzyw40,27,10,1|lb4qrz,27,10,1|lb4qs0,1,1,0|lioyrz,1,1,0|lioys0,27,10,1|ltutfz,27,10,1|ltutg0,1,1,0|m1f1fz,1,1,0|m1f1g0,27,10,1|mckw3z,27,10,1|mckw40,1,1,0|mki2rz,1,1,0|mki2s0,27,10,1|mvayrz,27,10,1|mvays0,1,1,0|n385fz,1,1,0|n385g0,27,10,1|ne11fz,27,10,1|ne11g0,1,1,0|nly83z,1,1,0|nly840,27,10,1|nwr43z,27,10,1|nwr440,1,1,0|o4oarz,1,1,0|o4oas0,27,10,1|ofu5fz,27,10,1|ofu5g0,1,1,0|onedfz,1,1,0|onedg0,27,10,1|oyk83z,27,10,1|oyk840,1,1,0|p64g3z,1,1,0|p64g40,27,10,1|phaarz,27,10,1|phaas0,1,1,0|pp7hfz,1,1,0|pp7hg0,27,10,1|q00dfz,27,10,1|q00dg0,1,1,0|q7xk3z,1,1,0|q7xk40,27,10,1|qiqg3z,27,10,1|qiqg40,1,1,0|qqnmrz,1,1,0|qqnms0,27,10,1|r1thfz,27,10,1|r1thg0,1,1,0|r9dpfz,1,1,0|r9dpg0,27,10,1|rkjk3z,27,10,1|rkjk40,1,1,0|rs3s3z,1,1,0|rs3s40,27,10,1|s39mrz,27,10,1|s39ms0,1,1,0|sb6tfz,1,1,0|sb6tg0,27,10,1|slzpfz,27,10,1|slzpg0,1,1,0|stww3z,1,1,0|stww40,27,10,1|t4ps3z,27,10,1|t4ps40,1,1,0|tcmyrz,1,1,0|tcmys0,27,10,1|tnfurz,27,10,1|tnfus0,1,1,0|tvd1fz,1,1,0|tvd1g0,27,10,1|u6iw3z,27,10,1|u6iw40,1,1,0|ue343z,1,1,0|ue3440,27,10,1|up8yrz,27,10,1|up8ys0,1,1,0|uwt6rz,1,1,0|uwt6s0,27,10,1|v7z1fz,27,10,1|v7z1g0,1,1,0|vfw83z,1,1,0|vfw840,27,10,1|vqp43z,27,10,1|vqp440,1,1,0|vymarz,1,1,0|vymas0,27,10,1|w9f6rz,27,10,1|w9f6s0,1,1,0|whcdfz,1,1,0|whcdg0,27,10,1|wsi83z,27,10,1|wsi840,1,1,0|x02g3z,1,1,0|x02g40,27,10,1|xb8arz,27,10,1|xb8as0,1,1,0|xisirz,1,1,0|xisis0,27,10,1|xtydfz,27,10,1|xtydg0,1,1,0|y1ilfz,1,1,0|y1ilg0,27,10,1|ycog3z,27,10,1|ycog40,1,1,0|yklmrz,1,1,0|yklms0,27,10,1|yveirz,27,10,1|yveis0,1,1,0|z3bpfz,1,1,0|z3bpg0,27,10,1|ze4lfz,27,10,1|ze4lg0,1,1,0\",\"Europe/Luxembourg|,0,353,0|-y89550,10,10,0|-rzo2w1,10,10,0|-rzo2w0,11,11,1|-rsilg1,11,11,1|-rsilg0,10,10,0|-rhps81,10,10,0|-rhps80,11,11,1|-raglg1,11,11,1|-raglg0,10,10,0|-qznjw1,10,10,0|-qznjw0,11,11,1|-qrqd81,11,11,1|-qrqd80,10,10,0|-qo4w41,10,10,0|-qo4w40,8,1,0|-qj59g1,8,1,0|-qj59g0,9,10,1|-q7z6g1,9,10,1|-q7z6g0,8,1,0|-q15441,8,1,0|-q15440,9,10,1|-po6ak1,9,10,1|-po6ak0,8,1,0|-pgvhg1,8,1,0|-pgvhg0,9,10,1|-p5anw1,9,10,1|-p5anw0,8,1,0|-oxj6s1,8,1,0|-oxj6s0,9,10,1|-ong5c1,9,10,1|-ong5c0,8,1,0|-odd9g1,8,1,0|-odd9g0,9,10,1|-o4pzw1,9,10,1|-o4pzw0,8,1,0|-nvq2s1,8,1,0|-nvq2s0,9,10,1|-nm0001,9,10,1|-nm0000,8,1,0|-ncl6s1,8,1,0|-ncl6s0,9,10,1|-n39xc1,9,10,1|-n39xc0,8,1,0|-mt71g1,8,1,0|-mt71g0,9,10,1|-mkjuo1,9,10,1|-mkjuo0,8,1,0|-matxg1,8,1,0|-matxg0,9,10,1|-m1ts01,9,10,1|-m1ts00,8,1,0|-lrqw41,8,1,0|-lrqw40,9,10,1|-liqqo1,9,10,1|-liqqo0,8,1,0|-l8nus1,8,1,0|-l8nus0,9,10,1|-l00ig1,9,10,1|-l00ig0,8,1,0|-kqaig1,8,1,0|-kqaig0,9,10,1|-khafs1,9,10,1|-khafs0,8,1,0|-k77h41,8,1,0|-k77h40,9,10,1|-jykd41,9,10,1|-jykd40,8,1,0|-jp7bs1,8,1,0|-jp7bs0,9,10,1|-jfuag1,9,10,1|-jfuag0,8,1,0|-j6u7s1,8,1,0|-j6u7s0,9,10,1|-iwr941,9,10,1|-iwr940,8,1,0|-ine7s1,8,1,0|-ine7s0,9,10,1|-ie16g1,9,10,1|-ie16g0,8,1,0|-i513s1,8,1,0|-i513s0,9,10,1|-hvb3s1,9,10,1|-hvb3s0,8,1,0|-hl8541,8,1,0|-hl8540,9,10,1|-hcl141,9,10,1|-hcl140,8,1,0|-h37zs1,8,1,0|-h37zs0,9,10,1|-gtuyg1,9,10,1|-gtuyg0,8,1,0|-gkuvs1,8,1,0|-gkuvs0,9,10,1|-gb4vs1,9,10,1|-gb4vs0,8,1,0|-g11x41,8,1,0|-g11x40,9,10,1|-fpw2g1,9,10,1|-fpw2g0,8,1,0|-fkul41,8,1,0|-fkul40,9,10,1|-fgsag1,9,10,1|-fgsag0,9,11,1|-e6dzw1,9,11,1|-e6dzw0,8,10,0|-dytrw1,8,10,0|-dytrw0,9,11,1|-dp3rw1,9,11,1|-dp3rw0,8,10,0|-dfqqk1,8,10,0|-dfqqk0,9,11,1|-d73mk1,9,11,1|-d73mk0,10,10,0|-cx0nw1,10,10,0|-cx0nw0,11,11,1|-cofek1,11,11,1|-cofek0,10,10,0|-cbtp81,10,10,0|-cbtp80,11,11,1|-c4kl81,11,11,1|-c4kl80,10,10,0|3s9mrz,10,10,0|3s9ms0,11,11,1|419pfz,11,11,1|419pg0,10,10,0|4azpfz,10,10,0|4azpg0,11,11,1|4kcqrz,11,11,1|4kcqs0,10,10,0|4tps3z,10,10,0|4tps40,11,11,1|532tfz,11,11,1|532tg0,10,10,0|5cstfz,10,10,0|5cstg0,11,11,1|5lsw3z,11,11,1|5lsw40,10,10,0|5v5xfz,10,10,0|5v5xg0,11,11,1|64iyrz,11,11,1|64iys0,10,10,0|6dw03z,10,10,0|6dw040,11,11,1|6n91fz,11,11,1|6n91g0,10,10,0|6wm2rz,10,10,0|6wm2s0,11,11,1|75z43z,11,11,1|75z440,10,10,0|7fc5fz,10,10,0|7fc5g0,11,11,1|7p25fz,11,11,1|7p25g0,10,10,0|7yf6rz,10,10,0|7yf6s0,11,11,1|87s83z,11,11,1|87s840,10,10,0|8h59fz,10,10,0|8h59g0,11,11,1|8qiarz,11,11,1|8qias0,10,10,0|8zvc3z,10,10,0|8zvc40,11,11,1|998dfz,11,11,1|998dg0,10,10,0|9ilerz,10,10,0|9iles0,11,11,1|9ryg3z,11,11,1|9ryg40,10,10,0|a1bhfz,10,10,0|a1bhg0,11,11,1|aaoirz,11,11,1|aaois0,10,10,0|ak1k3z,10,10,0|ak1k40,11,11,1|atrk3z,11,11,1|atrk40,10,10,0|b34lfz,10,10,0|b34lg0,11,11,1|bchmrz,11,11,1|bchms0,10,10,0|bluo3z,10,10,0|bluo40,11,11,1|bv7pfz,11,11,1|bv7pg0,10,10,0|c4kqrz,10,10,0|c4kqs0,11,11,1|cdxs3z,11,11,1|cdxs40,10,10,0|cnatfz,10,10,0|cnatg0,11,11,1|cwnurz,11,11,1|cwnus0,10,10,0|d60w3z,10,10,0|d60w40,11,11,1|dfdxfz,11,11,1|dfdxg0,10,10,0|dp3xfz,10,10,0|dp3xg0,11,11,1|dzwtfz,11,11,1|dzwtg0,10,10,0|e7u03z,10,10,0|e7u040,11,11,1|eimw3z,11,11,1|eimw40,10,10,0|eqk2rz,10,10,0|eqk2s0,11,11,1|f1cyrz,11,11,1|f1cys0,10,10,0|f9a5fz,10,10,0|f9a5g0,11,11,1|fkg03z,11,11,1|fkg040,10,10,0|fs083z,10,10,0|fs0840,11,11,1|g362rz,11,11,1|g362s0,10,10,0|gaqarz,10,10,0|gaqas0,11,11,1|glw5fz,11,11,1|glw5g0,10,10,0|gttc3z,10,10,0|gttc40,11,11,1|h4m83z,11,11,1|h4m840,10,10,0|hcjerz,10,10,0|hcjes0,11,11,1|hncarz,11,11,1|hncas0,10,10,0|hv9hfz,10,10,0|hv9hg0,11,11,1|i6fc3z,11,11,1|i6fc40,10,10,0|idzk3z,10,10,0|idzk40,11,11,1|ip5erz,11,11,1|ip5es0,10,10,0|iwpmrz,10,10,0|iwpms0,11,11,1|j7vhfz,11,11,1|j7vhg0,10,10,0|jffpfz,10,10,0|jffpg0,11,11,1|jqlk3z,11,11,1|jqlk40,10,10,0|jyiqrz,10,10,0|jyiqs0,11,11,1|k9bmrz,11,11,1|k9bms0,10,10,0|kh8tfz,10,10,0|kh8tg0,11,11,1|ks1pfz,11,11,1|ks1pg0,10,10,0|kzyw3z,10,10,0|kzyw40,11,11,1|lb4qrz,11,11,1|lb4qs0,10,10,0|lioyrz,10,10,0|lioys0,11,11,1|ltutfz,11,11,1|ltutg0,10,10,0|m1f1fz,10,10,0|m1f1g0,11,11,1|mckw3z,11,11,1|mckw40,10,10,0|mki2rz,10,10,0|mki2s0,11,11,1|mvayrz,11,11,1|mvays0,10,10,0|n385fz,10,10,0|n385g0,11,11,1|ne11fz,11,11,1|ne11g0,10,10,0|nly83z,10,10,0|nly840,11,11,1|nwr43z,11,11,1|nwr440,10,10,0|o4oarz,10,10,0|o4oas0,11,11,1|ofu5fz,11,11,1|ofu5g0,10,10,0|onedfz,10,10,0|onedg0,11,11,1|oyk83z,11,11,1|oyk840,10,10,0|p64g3z,10,10,0|p64g40,11,11,1|phaarz,11,11,1|phaas0,10,10,0|pp7hfz,10,10,0|pp7hg0,11,11,1|q00dfz,11,11,1|q00dg0,10,10,0|q7xk3z,10,10,0|q7xk40,11,11,1|qiqg3z,11,11,1|qiqg40,10,10,0|qqnmrz,10,10,0|qqnms0,11,11,1|r1thfz,11,11,1|r1thg0,10,10,0|r9dpfz,10,10,0|r9dpg0,11,11,1|rkjk3z,11,11,1|rkjk40,10,10,0|rs3s3z,10,10,0|rs3s40,11,11,1|s39mrz,11,11,1|s39ms0,10,10,0|sb6tfz,10,10,0|sb6tg0,11,11,1|slzpfz,11,11,1|slzpg0,10,10,0|stww3z,10,10,0|stww40,11,11,1|t4ps3z,11,11,1|t4ps40,10,10,0|tcmyrz,10,10,0|tcmys0,11,11,1|tnfurz,11,11,1|tnfus0,10,10,0|tvd1fz,10,10,0|tvd1g0,11,11,1|u6iw3z,11,11,1|u6iw40,10,10,0|ue343z,10,10,0|ue3440,11,11,1|up8yrz,11,11,1|up8ys0,10,10,0|uwt6rz,10,10,0|uwt6s0,11,11,1|v7z1fz,11,11,1|v7z1g0,10,10,0|vfw83z,10,10,0|vfw840,11,11,1|vqp43z,11,11,1|vqp440,10,10,0|vymarz,10,10,0|vymas0,11,11,1|w9f6rz,11,11,1|w9f6s0,10,10,0|whcdfz,10,10,0|whcdg0,11,11,1|wsi83z,11,11,1|wsi840,10,10,0|x02g3z,10,10,0|x02g40,11,11,1|xb8arz,11,11,1|xb8as0,10,10,0|xisirz,10,10,0|xisis0,11,11,1|xtydfz,11,11,1|xtydg0,10,10,0|y1ilfz,10,10,0|y1ilg0,11,11,1|ycog3z,11,11,1|ycog40,10,10,0|yklmrz,10,10,0|yklms0,11,11,1|yveirz,11,11,1|yveis0,10,10,0|z3bpfz,10,10,0|z3bpg0,11,11,1|ze4lfz,11,11,1|ze4lg0,10,10,0\",\"Europe/Madrid|,0,354,0|-100edc0,8,1,0|-qzlus1,8,1,0|-qzlus0,9,10,1|-qqnk01,9,10,1|-qqnk00,8,1,0|-qhalg1,8,1,0|-qhalg0,9,10,1|-q7vmo1,9,10,1|-q7vmo0,8,1,0|-nusqs1,8,1,0|-nusqs0,9,10,1|-nm0001,9,10,1|-nm0000,8,1,0|-mt71g1,8,1,0|-mt71g0,9,10,1|-mkjuo1,9,10,1|-mkjuo0,8,1,0|-matxg1,8,1,0|-matxg0,9,10,1|-m1ts01,9,10,1|-m1ts00,8,1,0|-lrqtc1,8,1,0|-lrqtc0,9,10,1|-liqqo1,9,10,1|-liqqo0,8,1,0|-l8nus1,8,1,0|-l8nus0,9,10,1|-l00o01,9,10,1|-l00o00,8,1,0|-gzf6s1,8,1,0|-gzf6s0,9,10,1|-gtv401,9,10,1|-gtv400,8,1,0|-gki5g1,8,1,0|-gki5g0,9,10,1|-gj2dk1,9,10,1|-gj2dk0,152,11,1|-gb3c81,152,11,1|-gb3c80,9,10,1|-fs2001,9,10,1|-fs2000,8,1,0|-fjrxg1,8,1,0|-fjrxg0,10,10,0|-eft481,10,10,0|-eft480,11,11,1|-e9kys1,11,11,1|-e9kys0,10,10,0|-dxsyw1,10,10,0|-dxsyw0,11,11,1|-dp5s41,11,11,1|-dp5s40,10,10,0|-df2w81,10,10,0|-df2w80,11,11,1|-d6fpg1,11,11,1|-d6fpg0,10,10,0|-cwctk1,10,10,0|-cwctk0,11,11,1|-cnpms1,11,11,1|-cnpms0,10,10,0|-cdmqw1,10,10,0|-cdmqw0,11,11,1|-c4zk41,11,11,1|-c4zk40,10,10,0|-asdmw1,10,10,0|-asdmw0,11,11,1|-akgdg1,11,11,1|-akgdg0,10,10,0|28g53z,10,10,0|28g540,11,11,1|2hgajz,11,11,1|2hgak0,10,10,0|2r67rz,10,10,0|2r67s0,11,11,1|306d7z,11,11,1|306d80,10,10,0|396d3z,10,10,0|396d40,11,11,1|3ijh7z,11,11,1|3ijh80,10,10,0|3s9efz,10,10,0|3s9eg0,11,11,1|419jvz,11,11,1|419jw0,10,10,0|4azpfz,10,10,0|4azpg0,11,11,1|4kcqrz,11,11,1|4kcqs0,10,10,0|4tps3z,10,10,0|4tps40,11,11,1|532tfz,11,11,1|532tg0,10,10,0|5cstfz,10,10,0|5cstg0,11,11,1|5lsw3z,11,11,1|5lsw40,10,10,0|5v5xfz,10,10,0|5v5xg0,11,11,1|64iyrz,11,11,1|64iys0,10,10,0|6dw03z,10,10,0|6dw040,11,11,1|6n91fz,11,11,1|6n91g0,10,10,0|6wm2rz,10,10,0|6wm2s0,11,11,1|75z43z,11,11,1|75z440,10,10,0|7fc5fz,10,10,0|7fc5g0,11,11,1|7p25fz,11,11,1|7p25g0,10,10,0|7yf6rz,10,10,0|7yf6s0,11,11,1|87s83z,11,11,1|87s840,10,10,0|8h59fz,10,10,0|8h59g0,11,11,1|8qiarz,11,11,1|8qias0,10,10,0|8zvc3z,10,10,0|8zvc40,11,11,1|998dfz,11,11,1|998dg0,10,10,0|9ilerz,10,10,0|9iles0,11,11,1|9ryg3z,11,11,1|9ryg40,10,10,0|a1bhfz,10,10,0|a1bhg0,11,11,1|aaoirz,11,11,1|aaois0,10,10,0|ak1k3z,10,10,0|ak1k40,11,11,1|atrk3z,11,11,1|atrk40,10,10,0|b34lfz,10,10,0|b34lg0,11,11,1|bchmrz,11,11,1|bchms0,10,10,0|bluo3z,10,10,0|bluo40,11,11,1|bv7pfz,11,11,1|bv7pg0,10,10,0|c4kqrz,10,10,0|c4kqs0,11,11,1|cdxs3z,11,11,1|cdxs40,10,10,0|cnatfz,10,10,0|cnatg0,11,11,1|cwnurz,11,11,1|cwnus0,10,10,0|d60w3z,10,10,0|d60w40,11,11,1|dfdxfz,11,11,1|dfdxg0,10,10,0|dp3xfz,10,10,0|dp3xg0,11,11,1|dzwtfz,11,11,1|dzwtg0,10,10,0|e7u03z,10,10,0|e7u040,11,11,1|eimw3z,11,11,1|eimw40,10,10,0|eqk2rz,10,10,0|eqk2s0,11,11,1|f1cyrz,11,11,1|f1cys0,10,10,0|f9a5fz,10,10,0|f9a5g0,11,11,1|fkg03z,11,11,1|fkg040,10,10,0|fs083z,10,10,0|fs0840,11,11,1|g362rz,11,11,1|g362s0,10,10,0|gaqarz,10,10,0|gaqas0,11,11,1|glw5fz,11,11,1|glw5g0,10,10,0|gttc3z,10,10,0|gttc40,11,11,1|h4m83z,11,11,1|h4m840,10,10,0|hcjerz,10,10,0|hcjes0,11,11,1|hncarz,11,11,1|hncas0,10,10,0|hv9hfz,10,10,0|hv9hg0,11,11,1|i6fc3z,11,11,1|i6fc40,10,10,0|idzk3z,10,10,0|idzk40,11,11,1|ip5erz,11,11,1|ip5es0,10,10,0|iwpmrz,10,10,0|iwpms0,11,11,1|j7vhfz,11,11,1|j7vhg0,10,10,0|jffpfz,10,10,0|jffpg0,11,11,1|jqlk3z,11,11,1|jqlk40,10,10,0|jyiqrz,10,10,0|jyiqs0,11,11,1|k9bmrz,11,11,1|k9bms0,10,10,0|kh8tfz,10,10,0|kh8tg0,11,11,1|ks1pfz,11,11,1|ks1pg0,10,10,0|kzyw3z,10,10,0|kzyw40,11,11,1|lb4qrz,11,11,1|lb4qs0,10,10,0|lioyrz,10,10,0|lioys0,11,11,1|ltutfz,11,11,1|ltutg0,10,10,0|m1f1fz,10,10,0|m1f1g0,11,11,1|mckw3z,11,11,1|mckw40,10,10,0|mki2rz,10,10,0|mki2s0,11,11,1|mvayrz,11,11,1|mvays0,10,10,0|n385fz,10,10,0|n385g0,11,11,1|ne11fz,11,11,1|ne11g0,10,10,0|nly83z,10,10,0|nly840,11,11,1|nwr43z,11,11,1|nwr440,10,10,0|o4oarz,10,10,0|o4oas0,11,11,1|ofu5fz,11,11,1|ofu5g0,10,10,0|onedfz,10,10,0|onedg0,11,11,1|oyk83z,11,11,1|oyk840,10,10,0|p64g3z,10,10,0|p64g40,11,11,1|phaarz,11,11,1|phaas0,10,10,0|pp7hfz,10,10,0|pp7hg0,11,11,1|q00dfz,11,11,1|q00dg0,10,10,0|q7xk3z,10,10,0|q7xk40,11,11,1|qiqg3z,11,11,1|qiqg40,10,10,0|qqnmrz,10,10,0|qqnms0,11,11,1|r1thfz,11,11,1|r1thg0,10,10,0|r9dpfz,10,10,0|r9dpg0,11,11,1|rkjk3z,11,11,1|rkjk40,10,10,0|rs3s3z,10,10,0|rs3s40,11,11,1|s39mrz,11,11,1|s39ms0,10,10,0|sb6tfz,10,10,0|sb6tg0,11,11,1|slzpfz,11,11,1|slzpg0,10,10,0|stww3z,10,10,0|stww40,11,11,1|t4ps3z,11,11,1|t4ps40,10,10,0|tcmyrz,10,10,0|tcmys0,11,11,1|tnfurz,11,11,1|tnfus0,10,10,0|tvd1fz,10,10,0|tvd1g0,11,11,1|u6iw3z,11,11,1|u6iw40,10,10,0|ue343z,10,10,0|ue3440,11,11,1|up8yrz,11,11,1|up8ys0,10,10,0|uwt6rz,10,10,0|uwt6s0,11,11,1|v7z1fz,11,11,1|v7z1g0,10,10,0|vfw83z,10,10,0|vfw840,11,11,1|vqp43z,11,11,1|vqp440,10,10,0|vymarz,10,10,0|vymas0,11,11,1|w9f6rz,11,11,1|w9f6s0,10,10,0|whcdfz,10,10,0|whcdg0,11,11,1|wsi83z,11,11,1|wsi840,10,10,0|x02g3z,10,10,0|x02g40,11,11,1|xb8arz,11,11,1|xb8as0,10,10,0|xisirz,10,10,0|xisis0,11,11,1|xtydfz,11,11,1|xtydg0,10,10,0|y1ilfz,10,10,0|y1ilg0,11,11,1|ycog3z,11,11,1|ycog40,10,10,0|yklmrz,10,10,0|yklms0,11,11,1|yveirz,11,11,1|yveis0,10,10,0|z3bpfz,10,10,0|z3bpg0,11,11,1|ze4lfz,11,11,1|ze4lg0,10,10,0\",\"Europe/Malta|,0,355,0|-13qyw0s,10,10,0|-rymys1,10,10,0|-rymys0,11,11,1|-rsio81,11,11,1|-rsio80,10,10,0|-rj5k41,10,10,0|-rj5k40,11,11,1|-r9qqw1,11,11,1|-r9qqw0,10,10,0|-r1idg1,10,10,0|-r1idg0,11,11,1|-qqnpk1,11,11,1|-qqnpk0,10,10,0|-qj59g1,10,10,0|-qj59g0,11,11,1|-q7zhk1,11,11,1|-q7zhk0,10,10,0|-pzcas1,10,10,0|-pzcas0,11,11,1|-ppzc81,11,11,1|-ppzc80,10,10,0|-ff59g1,10,10,0|-ff59g0,11,11,1|-e6dzw1,11,11,1|-e6dzw0,10,10,0|-dytrw1,10,10,0|-dytrw0,11,11,1|-dp3rw1,11,11,1|-dp3rw0,10,10,0|-dfsl81,10,10,0|-dfsl80,11,11,1|-d75h81,11,11,1|-d75h80,10,10,0|-cx0nw1,10,10,0|-cx0nw0,11,11,1|-cohes1,11,11,1|-cohes0,10,10,0|-cf2d81,10,10,0|-cf2d80,11,11,1|-c4mfw1,11,11,1|-c4mfw0,10,10,0|-bwcg41,10,10,0|-bwcg40,11,11,1|-blwis1,11,11,1|-blwis0,10,10,0|-bec581,10,10,0|-bec580,11,11,1|-b36ak1,11,11,1|-b36ak0,10,10,0|-1vwis1,10,10,0|-1vwis0,11,11,1|-1pf9k1,11,11,1|-1pf9k0,10,10,0|-1cthg1,10,10,0|-1cthg0,11,11,1|-16p441,11,11,1|-16p440,10,10,0|-u3es1,10,10,0|-u3es0,11,11,1|-nz1g1,11,11,1|-nz1g0,10,10,0|-b0dg1,10,10,0|-b0dg0,11,11,1|-4w041,11,11,1|-4w040,10,10,0|7pp7z,10,10,0|7pp80,11,11,1|du2jz,11,11,1|du2k0,10,10,0|q2t7z,10,10,0|q2t80,11,11,1|wk57z,11,11,1|wk580,10,10,0|195ujz,10,10,0|195uk0,11,11,1|1fn6jz,11,11,1|1fn6k0,10,10,0|1oyd7z,10,10,0|1oyd80,11,11,1|1ybejz,11,11,1|1ybek0,10,10,0|28t6jz,10,10,0|28t6k0,11,11,1|2gf97z,11,11,1|2gf980,10,10,0|2rjerz,10,10,0|2rjes0,11,11,1|2zginz,11,11,1|2zgio0,10,10,0|3a9hfz,10,10,0|3a9hg0,11,11,1|3i6lbz,11,11,1|3i6lc0,10,10,0|3szk3z,10,10,0|3szk40,11,11,1|40wnzz,11,11,1|40wo00,10,10,0|4bpmrz,10,10,0|4bpms0,11,11,1|4jmqnz,11,11,1|4jmqo0,10,10,0|4ufpfz,10,10,0|4ufpg0,11,11,1|52ctbz,11,11,1|52ctc0,10,10,0|5chpfz,10,10,0|5chpg0,11,11,1|5lfunz,11,11,1|5lfuo0,10,10,0|5v5xfz,10,10,0|5v5xg0,11,11,1|64iyrz,11,11,1|64iys0,10,10,0|6dw03z,10,10,0|6dw040,11,11,1|6n91fz,11,11,1|6n91g0,10,10,0|6wm2rz,10,10,0|6wm2s0,11,11,1|75z43z,11,11,1|75z440,10,10,0|7fc5fz,10,10,0|7fc5g0,11,11,1|7p25fz,11,11,1|7p25g0,10,10,0|7yf6rz,10,10,0|7yf6s0,11,11,1|87s83z,11,11,1|87s840,10,10,0|8h59fz,10,10,0|8h59g0,11,11,1|8qiarz,11,11,1|8qias0,10,10,0|8zvc3z,10,10,0|8zvc40,11,11,1|998dfz,11,11,1|998dg0,10,10,0|9ilerz,10,10,0|9iles0,11,11,1|9ryg3z,11,11,1|9ryg40,10,10,0|a1bhfz,10,10,0|a1bhg0,11,11,1|aaoirz,11,11,1|aaois0,10,10,0|ak1k3z,10,10,0|ak1k40,11,11,1|atrk3z,11,11,1|atrk40,10,10,0|b34lfz,10,10,0|b34lg0,11,11,1|bchmrz,11,11,1|bchms0,10,10,0|bluo3z,10,10,0|bluo40,11,11,1|bv7pfz,11,11,1|bv7pg0,10,10,0|c4kqrz,10,10,0|c4kqs0,11,11,1|cdxs3z,11,11,1|cdxs40,10,10,0|cnatfz,10,10,0|cnatg0,11,11,1|cwnurz,11,11,1|cwnus0,10,10,0|d60w3z,10,10,0|d60w40,11,11,1|dfdxfz,11,11,1|dfdxg0,10,10,0|dp3xfz,10,10,0|dp3xg0,11,11,1|dzwtfz,11,11,1|dzwtg0,10,10,0|e7u03z,10,10,0|e7u040,11,11,1|eimw3z,11,11,1|eimw40,10,10,0|eqk2rz,10,10,0|eqk2s0,11,11,1|f1cyrz,11,11,1|f1cys0,10,10,0|f9a5fz,10,10,0|f9a5g0,11,11,1|fkg03z,11,11,1|fkg040,10,10,0|fs083z,10,10,0|fs0840,11,11,1|g362rz,11,11,1|g362s0,10,10,0|gaqarz,10,10,0|gaqas0,11,11,1|glw5fz,11,11,1|glw5g0,10,10,0|gttc3z,10,10,0|gttc40,11,11,1|h4m83z,11,11,1|h4m840,10,10,0|hcjerz,10,10,0|hcjes0,11,11,1|hncarz,11,11,1|hncas0,10,10,0|hv9hfz,10,10,0|hv9hg0,11,11,1|i6fc3z,11,11,1|i6fc40,10,10,0|idzk3z,10,10,0|idzk40,11,11,1|ip5erz,11,11,1|ip5es0,10,10,0|iwpmrz,10,10,0|iwpms0,11,11,1|j7vhfz,11,11,1|j7vhg0,10,10,0|jffpfz,10,10,0|jffpg0,11,11,1|jqlk3z,11,11,1|jqlk40,10,10,0|jyiqrz,10,10,0|jyiqs0,11,11,1|k9bmrz,11,11,1|k9bms0,10,10,0|kh8tfz,10,10,0|kh8tg0,11,11,1|ks1pfz,11,11,1|ks1pg0,10,10,0|kzyw3z,10,10,0|kzyw40,11,11,1|lb4qrz,11,11,1|lb4qs0,10,10,0|lioyrz,10,10,0|lioys0,11,11,1|ltutfz,11,11,1|ltutg0,10,10,0|m1f1fz,10,10,0|m1f1g0,11,11,1|mckw3z,11,11,1|mckw40,10,10,0|mki2rz,10,10,0|mki2s0,11,11,1|mvayrz,11,11,1|mvays0,10,10,0|n385fz,10,10,0|n385g0,11,11,1|ne11fz,11,11,1|ne11g0,10,10,0|nly83z,10,10,0|nly840,11,11,1|nwr43z,11,11,1|nwr440,10,10,0|o4oarz,10,10,0|o4oas0,11,11,1|ofu5fz,11,11,1|ofu5g0,10,10,0|onedfz,10,10,0|onedg0,11,11,1|oyk83z,11,11,1|oyk840,10,10,0|p64g3z,10,10,0|p64g40,11,11,1|phaarz,11,11,1|phaas0,10,10,0|pp7hfz,10,10,0|pp7hg0,11,11,1|q00dfz,11,11,1|q00dg0,10,10,0|q7xk3z,10,10,0|q7xk40,11,11,1|qiqg3z,11,11,1|qiqg40,10,10,0|qqnmrz,10,10,0|qqnms0,11,11,1|r1thfz,11,11,1|r1thg0,10,10,0|r9dpfz,10,10,0|r9dpg0,11,11,1|rkjk3z,11,11,1|rkjk40,10,10,0|rs3s3z,10,10,0|rs3s40,11,11,1|s39mrz,11,11,1|s39ms0,10,10,0|sb6tfz,10,10,0|sb6tg0,11,11,1|slzpfz,11,11,1|slzpg0,10,10,0|stww3z,10,10,0|stww40,11,11,1|t4ps3z,11,11,1|t4ps40,10,10,0|tcmyrz,10,10,0|tcmys0,11,11,1|tnfurz,11,11,1|tnfus0,10,10,0|tvd1fz,10,10,0|tvd1g0,11,11,1|u6iw3z,11,11,1|u6iw40,10,10,0|ue343z,10,10,0|ue3440,11,11,1|up8yrz,11,11,1|up8ys0,10,10,0|uwt6rz,10,10,0|uwt6s0,11,11,1|v7z1fz,11,11,1|v7z1g0,10,10,0|vfw83z,10,10,0|vfw840,11,11,1|vqp43z,11,11,1|vqp440,10,10,0|vymarz,10,10,0|vymas0,11,11,1|w9f6rz,11,11,1|w9f6s0,10,10,0|whcdfz,10,10,0|whcdg0,11,11,1|wsi83z,11,11,1|wsi840,10,10,0|x02g3z,10,10,0|x02g40,11,11,1|xb8arz,11,11,1|xb8as0,10,10,0|xisirz,10,10,0|xisis0,11,11,1|xtydfz,11,11,1|xtydg0,10,10,0|y1ilfz,10,10,0|y1ilg0,11,11,1|ycog3z,11,11,1|ycog40,10,10,0|yklmrz,10,10,0|yklms0,11,11,1|yveirz,11,11,1|yveis0,10,10,0|z3bpfz,10,10,0|z3bpg0,11,11,1|ze4lfz,11,11,1|ze4lg0,10,10,0\",\"Europe/Mariehamn|,0,348,0|-1bss9yd,77,348,0|-peghye,77,348,0|-peghyd,15,11,0|-ehco81,15,11,0|-ehco80,16,6,1|-e7vxk1,16,6,1|-e7vxk0,15,11,0|5v5unz,15,11,0|5v5uo0,16,6,1|64ivzz,16,6,1|64iw00,15,11,0|6dvxbz,15,11,0|6dvxc0,16,6,1|6n8ynz,16,6,1|6n8yo0,15,11,0|6wm2rz,15,11,0|6wm2s0,16,6,1|75z43z,16,6,1|75z440,15,11,0|7fc5fz,15,11,0|7fc5g0,16,6,1|7p25fz,16,6,1|7p25g0,15,11,0|7yf6rz,15,11,0|7yf6s0,16,6,1|87s83z,16,6,1|87s840,15,11,0|8h59fz,15,11,0|8h59g0,16,6,1|8qiarz,16,6,1|8qias0,15,11,0|8zvc3z,15,11,0|8zvc40,16,6,1|998dfz,16,6,1|998dg0,15,11,0|9ilerz,15,11,0|9iles0,16,6,1|9ryg3z,16,6,1|9ryg40,15,11,0|a1bhfz,15,11,0|a1bhg0,16,6,1|aaoirz,16,6,1|aaois0,15,11,0|ak1k3z,15,11,0|ak1k40,16,6,1|atrk3z,16,6,1|atrk40,15,11,0|b34lfz,15,11,0|b34lg0,16,6,1|bchmrz,16,6,1|bchms0,15,11,0|bluo3z,15,11,0|bluo40,16,6,1|bv7pfz,16,6,1|bv7pg0,15,11,0|c4kqrz,15,11,0|c4kqs0,16,6,1|cdxs3z,16,6,1|cdxs40,15,11,0|cnatfz,15,11,0|cnatg0,16,6,1|cwnurz,16,6,1|cwnus0,15,11,0|d60w3z,15,11,0|d60w40,16,6,1|dfdxfz,16,6,1|dfdxg0,15,11,0|dp3xfz,15,11,0|dp3xg0,16,6,1|dzwtfz,16,6,1|dzwtg0,15,11,0|e7u03z,15,11,0|e7u040,16,6,1|eimw3z,16,6,1|eimw40,15,11,0|eqk2rz,15,11,0|eqk2s0,16,6,1|f1cyrz,16,6,1|f1cys0,15,11,0|f9a5fz,15,11,0|f9a5g0,16,6,1|fkg03z,16,6,1|fkg040,15,11,0|fs083z,15,11,0|fs0840,16,6,1|g362rz,16,6,1|g362s0,15,11,0|gaqarz,15,11,0|gaqas0,16,6,1|glw5fz,16,6,1|glw5g0,15,11,0|gttc3z,15,11,0|gttc40,16,6,1|h4m83z,16,6,1|h4m840,15,11,0|hcjerz,15,11,0|hcjes0,16,6,1|hncarz,16,6,1|hncas0,15,11,0|hv9hfz,15,11,0|hv9hg0,16,6,1|i6fc3z,16,6,1|i6fc40,15,11,0|idzk3z,15,11,0|idzk40,16,6,1|ip5erz,16,6,1|ip5es0,15,11,0|iwpmrz,15,11,0|iwpms0,16,6,1|j7vhfz,16,6,1|j7vhg0,15,11,0|jffpfz,15,11,0|jffpg0,16,6,1|jqlk3z,16,6,1|jqlk40,15,11,0|jyiqrz,15,11,0|jyiqs0,16,6,1|k9bmrz,16,6,1|k9bms0,15,11,0|kh8tfz,15,11,0|kh8tg0,16,6,1|ks1pfz,16,6,1|ks1pg0,15,11,0|kzyw3z,15,11,0|kzyw40,16,6,1|lb4qrz,16,6,1|lb4qs0,15,11,0|lioyrz,15,11,0|lioys0,16,6,1|ltutfz,16,6,1|ltutg0,15,11,0|m1f1fz,15,11,0|m1f1g0,16,6,1|mckw3z,16,6,1|mckw40,15,11,0|mki2rz,15,11,0|mki2s0,16,6,1|mvayrz,16,6,1|mvays0,15,11,0|n385fz,15,11,0|n385g0,16,6,1|ne11fz,16,6,1|ne11g0,15,11,0|nly83z,15,11,0|nly840,16,6,1|nwr43z,16,6,1|nwr440,15,11,0|o4oarz,15,11,0|o4oas0,16,6,1|ofu5fz,16,6,1|ofu5g0,15,11,0|onedfz,15,11,0|onedg0,16,6,1|oyk83z,16,6,1|oyk840,15,11,0|p64g3z,15,11,0|p64g40,16,6,1|phaarz,16,6,1|phaas0,15,11,0|pp7hfz,15,11,0|pp7hg0,16,6,1|q00dfz,16,6,1|q00dg0,15,11,0|q7xk3z,15,11,0|q7xk40,16,6,1|qiqg3z,16,6,1|qiqg40,15,11,0|qqnmrz,15,11,0|qqnms0,16,6,1|r1thfz,16,6,1|r1thg0,15,11,0|r9dpfz,15,11,0|r9dpg0,16,6,1|rkjk3z,16,6,1|rkjk40,15,11,0|rs3s3z,15,11,0|rs3s40,16,6,1|s39mrz,16,6,1|s39ms0,15,11,0|sb6tfz,15,11,0|sb6tg0,16,6,1|slzpfz,16,6,1|slzpg0,15,11,0|stww3z,15,11,0|stww40,16,6,1|t4ps3z,16,6,1|t4ps40,15,11,0|tcmyrz,15,11,0|tcmys0,16,6,1|tnfurz,16,6,1|tnfus0,15,11,0|tvd1fz,15,11,0|tvd1g0,16,6,1|u6iw3z,16,6,1|u6iw40,15,11,0|ue343z,15,11,0|ue3440,16,6,1|up8yrz,16,6,1|up8ys0,15,11,0|uwt6rz,15,11,0|uwt6s0,16,6,1|v7z1fz,16,6,1|v7z1g0,15,11,0|vfw83z,15,11,0|vfw840,16,6,1|vqp43z,16,6,1|vqp440,15,11,0|vymarz,15,11,0|vymas0,16,6,1|w9f6rz,16,6,1|w9f6s0,15,11,0|whcdfz,15,11,0|whcdg0,16,6,1|wsi83z,16,6,1|wsi840,15,11,0|x02g3z,15,11,0|x02g40,16,6,1|xb8arz,16,6,1|xb8as0,15,11,0|xisirz,15,11,0|xisis0,16,6,1|xtydfz,16,6,1|xtydg0,15,11,0|y1ilfz,15,11,0|y1ilg0,16,6,1|ycog3z,16,6,1|ycog40,15,11,0|yklmrz,15,11,0|yklms0,16,6,1|yveirz,16,6,1|yveis0,15,11,0|z3bpfz,15,11,0|z3bpg0,16,6,1|ze4lfz,16,6,1|ze4lg0,15,11,0\",\"Europe/Minsk|,0,356,0|-1ayy7rs,21,357,0|-nu113d,21,357,0|-nu113c,15,11,0|-kmr1k1,15,11,0|-kmr1k0,148,6,0|-evpf01,148,6,0|-evpf00,11,11,1|-e6dzw1,11,11,1|-e6dzw0,10,10,0|-dytrw1,10,10,0|-dytrw0,11,11,1|-dp3rw1,11,11,1|-dp3rw0,10,10,0|-dfqqk1,10,10,0|-dfqqk0,11,11,1|-db2g81,11,11,1|-db2g80,148,6,0|5vb6bz,148,6,0|5vb6c0,149,209,1|64pzjz,149,209,1|64pzk0,148,6,0|6e33nz,148,6,0|6e33o0,149,209,1|6nhwvz,149,209,1|6nhww0,148,6,0|6wv0zz,148,6,0|6wv100,149,209,1|769u7z,149,209,1|769u80,148,6,0|7foszz,148,6,0|7fot00,149,209,1|7p1zvz,149,209,1|7p1zw0,148,6,0|7yf17z,148,6,0|7yf180,149,209,1|87s2jz,149,209,1|87s2k0,148,6,0|8h53vz,148,6,0|8h53w0,149,209,1|8qi57z,149,209,1|8qi580,148,6,0|8zv6jz,148,6,0|8zv6k0,149,209,1|9987vz,149,209,1|9987w0,148,6,0|9il97z,148,6,0|9il980,149,209,1|9ryajz,149,209,1|9ryak0,148,6,0|a1bbvz,148,6,0|a1bbw0,149,209,1|aaod7z,149,209,1|aaod80,148,6,0|b34fvz,148,6,0|b34fw0,16,6,1|bchjzz,16,6,1|bchk00,15,11,0|blulbz,15,11,0|blulc0,16,6,1|bv7mnz,16,6,1|bv7mo0,15,11,0|c4knzz,15,11,0|c4ko00,16,6,1|cdxpbz,16,6,1|cdxpc0,15,11,0|cnaqnz,15,11,0|cnaqo0,16,6,1|cwnrzz,16,6,1|cwns00,15,11,0|d60tbz,15,11,0|d60tc0,16,6,1|dfdunz,16,6,1|dfduo0,15,11,0|dp3unz,15,11,0|dp3uo0,16,6,1|dzwqnz,16,6,1|dzwqo0,15,11,0|e7txbz,15,11,0|e7txc0,16,6,1|eimtbz,16,6,1|eimtc0,15,11,0|eqjzzz,15,11,0|eqk000,16,6,1|f1cvzz,16,6,1|f1cw00,15,11,0|f9a2nz,15,11,0|f9a2o0,16,6,1|fkfxbz,16,6,1|fkfxc0,15,11,0|fs05bz,15,11,0|fs05c0,16,6,1|g35zzz,16,6,1|g36000,15,11,0|gaq7zz,15,11,0|gaq800,16,6,1|glw2nz,16,6,1|glw2o0,15,11,0|gtt9bz,15,11,0|gtt9c0,16,6,1|h4m5bz,16,6,1|h4m5c0,15,11,0|hcjbzz,15,11,0|hcjc00,16,6,1|hnc7zz,16,6,1|hnc800,15,11,0|hv9enz,15,11,0|hv9eo0,16,6,1|i6f9bz,16,6,1|i6f9c0,15,11,0|idzhbz,15,11,0|idzhc0,16,6,1|ip5bzz,16,6,1|ip5c00,15,11,0|iwpjzz,15,11,0|iwpk00,16,6,1|j7venz,16,6,1|j7veo0,15,11,0|jffmnz,15,11,0|jffmo0,16,6,1|jqlhbz,16,6,1|jqlhc0,15,11,0|jyinzz,15,11,0|jyio00,16,6,1|k9bjzz,16,6,1|k9bk00,15,11,0|kh8qnz,15,11,0|kh8qo0,16,6,1|ks1mnz,16,6,1|ks1mo0,15,11,0|kzytbz,15,11,0|kzytc0,16,6,1|lb4nzz,16,6,1|lb4o00,15,11,0|liovzz,15,11,0|liow00,100,6,0\",\"Europe/Monaco|,0,358,0|-14hnyp8,7,9,0|-uo2b3m,7,9,0|-uo2b3l,8,1,0|-ry2lg1,8,1,0|-ry2lg0,9,10,1|-rsgqs1,9,10,1|-rsgqs0,8,1,0|-rjiis1,8,1,0|-rjiis0,9,10,1|-r9dpg1,9,10,1|-r9dpg0,8,1,0|-r1idg1,8,1,0|-r1idg0,9,10,1|-qqnms1,9,10,1|-qqnms0,8,1,0|-qj59g1,8,1,0|-qj59g0,9,10,1|-q7xk41,9,10,1|-q7xk40,8,1,0|-q15441,8,1,0|-q15440,9,10,1|-po6g41,9,10,1|-po6g40,8,1,0|-pgvhg1,8,1,0|-pgvhg0,9,10,1|-p5atg1,9,10,1|-p5atg0,8,1,0|-oxj6s1,8,1,0|-oxj6s0,9,10,1|-ong841,9,10,1|-ong840,8,1,0|-obkg41,8,1,0|-obkg40,9,10,1|-o4q5g1,9,10,1|-o4q5g0,8,1,0|-nvq2s1,8,1,0|-nvq2s0,9,10,1|-nm02s1,9,10,1|-nm02s0,8,1,0|-ncn1g1,8,1,0|-ncn1g0,9,10,1|-n3a041,9,10,1|-n3a040,8,1,0|-mt71g1,8,1,0|-mt71g0,9,10,1|-mkjxg1,9,10,1|-mkjxg0,8,1,0|-matxg1,8,1,0|-matxg0,9,10,1|-m1tus1,9,10,1|-m1tus0,8,1,0|-lrqw41,8,1,0|-lrqw40,9,10,1|-liqtg1,9,10,1|-liqtg0,8,1,0|-l8nus1,8,1,0|-l8nus0,9,10,1|-l00qs1,9,10,1|-l00qs0,8,1,0|-kqaqs1,8,1,0|-kqaqs0,9,10,1|-khao41,9,10,1|-khao40,8,1,0|-k77pg1,8,1,0|-k77pg0,9,10,1|-jyklg1,9,10,1|-jyklg0,8,1,0|-jp7k41,8,1,0|-jp7k40,9,10,1|-jfuis1,9,10,1|-jfuis0,8,1,0|-j6ug41,8,1,0|-j6ug40,9,10,1|-iwrhg1,9,10,1|-iwrhg0,8,1,0|-ineg41,8,1,0|-ineg40,9,10,1|-ie1es1,9,10,1|-ie1es0,8,1,0|-i51c41,8,1,0|-i51c40,9,10,1|-hvbc41,9,10,1|-hvbc40,8,1,0|-hl8dg1,8,1,0|-hl8dg0,9,10,1|-hcl9g1,9,10,1|-hcl9g0,8,1,0|-h38841,8,1,0|-h38840,9,10,1|-gtv6s1,9,10,1|-gtv6s0,8,1,0|-gkv441,8,1,0|-gkv440,9,10,1|-gb5441,9,10,1|-gb5440,8,1,0|-g125g1,8,1,0|-g125g0,9,10,1|-fpwas1,9,10,1|-fpwas0,8,1,0|-fkul41,8,1,0|-fkul40,9,10,1|-eyh9g1,9,10,1|-eyh9g0,152,11,1|-eqk5k1,152,11,1|-eqk5k0,9,10,1|-eimw41,9,10,1|-eimw40,152,11,1|-e6dzw1,152,11,1|-e6dzw0,9,10,1|-dytrw1,9,10,1|-dytrw0,152,11,1|-dp3rw1,152,11,1|-dp3rw0,9,10,1|-dfqqk1,9,10,1|-dfqqk0,152,11,1|-d62qs1,152,11,1|-d62qs0,9,10,1|-cx0nw1,9,10,1|-cx0nw0,152,11,1|-cofek1,152,11,1|-cofek0,10,10,0|396inz,10,10,0|396io0,11,11,1|3ijh7z,11,11,1|3ijh80,10,10,0|3s9mrz,10,10,0|3s9ms0,11,11,1|419pfz,11,11,1|419pg0,10,10,0|4azpfz,10,10,0|4azpg0,11,11,1|4kcqrz,11,11,1|4kcqs0,10,10,0|4tps3z,10,10,0|4tps40,11,11,1|532tfz,11,11,1|532tg0,10,10,0|5cstfz,10,10,0|5cstg0,11,11,1|5lsw3z,11,11,1|5lsw40,10,10,0|5v5xfz,10,10,0|5v5xg0,11,11,1|64iyrz,11,11,1|64iys0,10,10,0|6dw03z,10,10,0|6dw040,11,11,1|6n91fz,11,11,1|6n91g0,10,10,0|6wm2rz,10,10,0|6wm2s0,11,11,1|75z43z,11,11,1|75z440,10,10,0|7fc5fz,10,10,0|7fc5g0,11,11,1|7p25fz,11,11,1|7p25g0,10,10,0|7yf6rz,10,10,0|7yf6s0,11,11,1|87s83z,11,11,1|87s840,10,10,0|8h59fz,10,10,0|8h59g0,11,11,1|8qiarz,11,11,1|8qias0,10,10,0|8zvc3z,10,10,0|8zvc40,11,11,1|998dfz,11,11,1|998dg0,10,10,0|9ilerz,10,10,0|9iles0,11,11,1|9ryg3z,11,11,1|9ryg40,10,10,0|a1bhfz,10,10,0|a1bhg0,11,11,1|aaoirz,11,11,1|aaois0,10,10,0|ak1k3z,10,10,0|ak1k40,11,11,1|atrk3z,11,11,1|atrk40,10,10,0|b34lfz,10,10,0|b34lg0,11,11,1|bchmrz,11,11,1|bchms0,10,10,0|bluo3z,10,10,0|bluo40,11,11,1|bv7pfz,11,11,1|bv7pg0,10,10,0|c4kqrz,10,10,0|c4kqs0,11,11,1|cdxs3z,11,11,1|cdxs40,10,10,0|cnatfz,10,10,0|cnatg0,11,11,1|cwnurz,11,11,1|cwnus0,10,10,0|d60w3z,10,10,0|d60w40,11,11,1|dfdxfz,11,11,1|dfdxg0,10,10,0|dp3xfz,10,10,0|dp3xg0,11,11,1|dzwtfz,11,11,1|dzwtg0,10,10,0|e7u03z,10,10,0|e7u040,11,11,1|eimw3z,11,11,1|eimw40,10,10,0|eqk2rz,10,10,0|eqk2s0,11,11,1|f1cyrz,11,11,1|f1cys0,10,10,0|f9a5fz,10,10,0|f9a5g0,11,11,1|fkg03z,11,11,1|fkg040,10,10,0|fs083z,10,10,0|fs0840,11,11,1|g362rz,11,11,1|g362s0,10,10,0|gaqarz,10,10,0|gaqas0,11,11,1|glw5fz,11,11,1|glw5g0,10,10,0|gttc3z,10,10,0|gttc40,11,11,1|h4m83z,11,11,1|h4m840,10,10,0|hcjerz,10,10,0|hcjes0,11,11,1|hncarz,11,11,1|hncas0,10,10,0|hv9hfz,10,10,0|hv9hg0,11,11,1|i6fc3z,11,11,1|i6fc40,10,10,0|idzk3z,10,10,0|idzk40,11,11,1|ip5erz,11,11,1|ip5es0,10,10,0|iwpmrz,10,10,0|iwpms0,11,11,1|j7vhfz,11,11,1|j7vhg0,10,10,0|jffpfz,10,10,0|jffpg0,11,11,1|jqlk3z,11,11,1|jqlk40,10,10,0|jyiqrz,10,10,0|jyiqs0,11,11,1|k9bmrz,11,11,1|k9bms0,10,10,0|kh8tfz,10,10,0|kh8tg0,11,11,1|ks1pfz,11,11,1|ks1pg0,10,10,0|kzyw3z,10,10,0|kzyw40,11,11,1|lb4qrz,11,11,1|lb4qs0,10,10,0|lioyrz,10,10,0|lioys0,11,11,1|ltutfz,11,11,1|ltutg0,10,10,0|m1f1fz,10,10,0|m1f1g0,11,11,1|mckw3z,11,11,1|mckw40,10,10,0|mki2rz,10,10,0|mki2s0,11,11,1|mvayrz,11,11,1|mvays0,10,10,0|n385fz,10,10,0|n385g0,11,11,1|ne11fz,11,11,1|ne11g0,10,10,0|nly83z,10,10,0|nly840,11,11,1|nwr43z,11,11,1|nwr440,10,10,0|o4oarz,10,10,0|o4oas0,11,11,1|ofu5fz,11,11,1|ofu5g0,10,10,0|onedfz,10,10,0|onedg0,11,11,1|oyk83z,11,11,1|oyk840,10,10,0|p64g3z,10,10,0|p64g40,11,11,1|phaarz,11,11,1|phaas0,10,10,0|pp7hfz,10,10,0|pp7hg0,11,11,1|q00dfz,11,11,1|q00dg0,10,10,0|q7xk3z,10,10,0|q7xk40,11,11,1|qiqg3z,11,11,1|qiqg40,10,10,0|qqnmrz,10,10,0|qqnms0,11,11,1|r1thfz,11,11,1|r1thg0,10,10,0|r9dpfz,10,10,0|r9dpg0,11,11,1|rkjk3z,11,11,1|rkjk40,10,10,0|rs3s3z,10,10,0|rs3s40,11,11,1|s39mrz,11,11,1|s39ms0,10,10,0|sb6tfz,10,10,0|sb6tg0,11,11,1|slzpfz,11,11,1|slzpg0,10,10,0|stww3z,10,10,0|stww40,11,11,1|t4ps3z,11,11,1|t4ps40,10,10,0|tcmyrz,10,10,0|tcmys0,11,11,1|tnfurz,11,11,1|tnfus0,10,10,0|tvd1fz,10,10,0|tvd1g0,11,11,1|u6iw3z,11,11,1|u6iw40,10,10,0|ue343z,10,10,0|ue3440,11,11,1|up8yrz,11,11,1|up8ys0,10,10,0|uwt6rz,10,10,0|uwt6s0,11,11,1|v7z1fz,11,11,1|v7z1g0,10,10,0|vfw83z,10,10,0|vfw840,11,11,1|vqp43z,11,11,1|vqp440,10,10,0|vymarz,10,10,0|vymas0,11,11,1|w9f6rz,11,11,1|w9f6s0,10,10,0|whcdfz,10,10,0|whcdg0,11,11,1|wsi83z,11,11,1|wsi840,10,10,0|x02g3z,10,10,0|x02g40,11,11,1|xb8arz,11,11,1|xb8as0,10,10,0|xisirz,10,10,0|xisis0,11,11,1|xtydfz,11,11,1|xtydg0,10,10,0|y1ilfz,10,10,0|y1ilg0,11,11,1|ycog3z,11,11,1|ycog40,10,10,0|yklmrz,10,10,0|yklms0,11,11,1|yveirz,11,11,1|yveis0,10,10,0|z3bpfz,10,10,0|z3bpg0,11,11,1|ze4lfz,11,11,1|ze4lg0,10,10,0\",\"Europe/Moscow|,0,359,0|-1ayy9mh,21,359,0|-rx5dmi,21,359,0|-rx5dmh,21,360,0|-refds8,21,360,0|-refds7,50,361,1|-r57wg8,50,361,1|-r57wg7,21,360,0|-qx8xw8,21,360,0|-qx8xw7,153,362,1|-qrqps8,153,362,1|-qrqps7,50,361,1|-qeh0k8,50,361,1|-qeh0k7,153,362,1|-qcx401,153,362,1|-qcx400,149,209,1|-qak8g1,149,209,1|-qak8g0,148,6,0|-pibkg1,148,6,0|-pibkg0,149,209,1|-pgkok1,149,209,1|-pgkok0,92,194,1|-p84z81,92,194,1|-p84z80,149,209,1|-p6lcg1,149,209,1|-p6lcg0,148,6,0|-ontcc1,148,6,0|-ontcc0,15,11,0|-kmr1k1,15,11,0|-kmr1k0,148,6,0|5vb6bz,148,6,0|5vb6c0,149,209,1|64pzjz,149,209,1|64pzk0,148,6,0|6e33nz,148,6,0|6e33o0,149,209,1|6nhwvz,149,209,1|6nhww0,148,6,0|6wv0zz,148,6,0|6wv100,149,209,1|769u7z,149,209,1|769u80,148,6,0|7foszz,148,6,0|7fot00,149,209,1|7p1zvz,149,209,1|7p1zw0,148,6,0|7yf17z,148,6,0|7yf180,149,209,1|87s2jz,149,209,1|87s2k0,148,6,0|8h53vz,148,6,0|8h53w0,149,209,1|8qi57z,149,209,1|8qi580,148,6,0|8zv6jz,148,6,0|8zv6k0,149,209,1|9987vz,149,209,1|9987w0,148,6,0|9il97z,148,6,0|9il980,149,209,1|9ryajz,149,209,1|9ryak0,148,6,0|a1bbvz,148,6,0|a1bbw0,149,209,1|aaod7z,149,209,1|aaod80,148,6,0|ak1ejz,148,6,0|ak1ek0,149,209,1|atrejz,149,209,1|atrek0,148,6,0|b34fvz,148,6,0|b34fw0,16,6,1|bchjzz,16,6,1|bchk00,15,11,0|bi8ynz,15,11,0|bi8yo0,148,6,0|bluijz,148,6,0|bluik0,149,209,1|bv7jvz,149,209,1|bv7jw0,148,6,0|c4kl7z,148,6,0|c4kl80,149,209,1|cdxmjz,149,209,1|cdxmk0,148,6,0|cnanvz,148,6,0|cnanw0,149,209,1|cwnp7z,149,209,1|cwnp80,148,6,0|d60qjz,148,6,0|d60qk0,149,209,1|dfdrvz,149,209,1|dfdrw0,148,6,0|dp3rvz,148,6,0|dp3rw0,149,209,1|dzwnvz,149,209,1|dzwnw0,148,6,0|e7tujz,148,6,0|e7tuk0,149,209,1|eimqjz,149,209,1|eimqk0,148,6,0|eqjx7z,148,6,0|eqjx80,149,209,1|f1ct7z,149,209,1|f1ct80,148,6,0|f99zvz,148,6,0|f99zw0,149,209,1|fkfujz,149,209,1|fkfuk0,148,6,0|fs02jz,148,6,0|fs02k0,149,209,1|g35x7z,149,209,1|g35x80,148,6,0|gaq57z,148,6,0|gaq580,149,209,1|glvzvz,149,209,1|glvzw0,148,6,0|gtt6jz,148,6,0|gtt6k0,149,209,1|h4m2jz,149,209,1|h4m2k0,148,6,0|hcj97z,148,6,0|hcj980,149,209,1|hnc57z,149,209,1|hnc580,148,6,0|hv9bvz,148,6,0|hv9bw0,149,209,1|i6f6jz,149,209,1|i6f6k0,148,6,0|idzejz,148,6,0|idzek0,149,209,1|ip597z,149,209,1|ip5980,148,6,0|iwph7z,148,6,0|iwph80,149,209,1|j7vbvz,149,209,1|j7vbw0,148,6,0|jffjvz,148,6,0|jffjw0,149,209,1|jqlejz,149,209,1|jqlek0,148,6,0|jyil7z,148,6,0|jyil80,149,209,1|k9bh7z,149,209,1|k9bh80,148,6,0|kh8nvz,148,6,0|kh8nw0,149,209,1|ks1jvz,149,209,1|ks1jw0,148,6,0|kzyqjz,148,6,0|kzyqk0,149,209,1|lb4l7z,149,209,1|lb4l80,148,6,0|liot7z,148,6,0|liot80,148,209,0|ne0t3z,148,209,0|ne0t40,148,6,0\",\"Europe/Oslo|,0,202,0|-1353tzo,10,10,0|-rzayo1,10,10,0|-rzayo0,11,11,1|-rskiw1,11,11,1|-rskiw0,10,10,0|-fc7s81,10,10,0|-fc7s80,11,11,1|-e6dzw1,11,11,1|-e6dzw0,10,10,0|-dytrw1,10,10,0|-dytrw0,11,11,1|-dp3rw1,11,11,1|-dp3rw0,10,10,0|-dfqqk1,10,10,0|-dfqqk0,11,11,1|-d6dp81,11,11,1|-d6dp80,10,10,0|-cx0nw1,10,10,0|-cx0nw0,11,11,1|-cnnmk1,11,11,1|-cnnmk0,10,10,0|-5mxh81,10,10,0|-5mxh80,11,11,1|-5d7h81,11,11,1|-5d7h80,10,10,0|-53ufw1,10,10,0|-53ufw0,11,11,1|-4uhek1,11,11,1|-4uhek0,10,10,0|-4l4d81,10,10,0|-4l4d80,11,11,1|-4brbw1,11,11,1|-4brbw0,10,10,0|-42eak1,10,10,0|-42eak0,11,11,1|-3t1981,11,11,1|-3t1980,10,10,0|-3jo7w1,10,10,0|-3jo7w0,11,11,1|-3ab6k1,11,11,1|-3ab6k0,10,10,0|-30y581,10,10,0|-30y580,11,11,1|-2r8581,11,11,1|-2r8580,10,10,0|-2g2ak1,10,10,0|-2g2ak0,11,11,1|-28i2k1,11,11,1|-28i2k0,10,10,0|5cstfz,10,10,0|5cstg0,11,11,1|5lsw3z,11,11,1|5lsw40,10,10,0|5v5xfz,10,10,0|5v5xg0,11,11,1|64iyrz,11,11,1|64iys0,10,10,0|6dw03z,10,10,0|6dw040,11,11,1|6n91fz,11,11,1|6n91g0,10,10,0|6wm2rz,10,10,0|6wm2s0,11,11,1|75z43z,11,11,1|75z440,10,10,0|7fc5fz,10,10,0|7fc5g0,11,11,1|7p25fz,11,11,1|7p25g0,10,10,0|7yf6rz,10,10,0|7yf6s0,11,11,1|87s83z,11,11,1|87s840,10,10,0|8h59fz,10,10,0|8h59g0,11,11,1|8qiarz,11,11,1|8qias0,10,10,0|8zvc3z,10,10,0|8zvc40,11,11,1|998dfz,11,11,1|998dg0,10,10,0|9ilerz,10,10,0|9iles0,11,11,1|9ryg3z,11,11,1|9ryg40,10,10,0|a1bhfz,10,10,0|a1bhg0,11,11,1|aaoirz,11,11,1|aaois0,10,10,0|ak1k3z,10,10,0|ak1k40,11,11,1|atrk3z,11,11,1|atrk40,10,10,0|b34lfz,10,10,0|b34lg0,11,11,1|bchmrz,11,11,1|bchms0,10,10,0|bluo3z,10,10,0|bluo40,11,11,1|bv7pfz,11,11,1|bv7pg0,10,10,0|c4kqrz,10,10,0|c4kqs0,11,11,1|cdxs3z,11,11,1|cdxs40,10,10,0|cnatfz,10,10,0|cnatg0,11,11,1|cwnurz,11,11,1|cwnus0,10,10,0|d60w3z,10,10,0|d60w40,11,11,1|dfdxfz,11,11,1|dfdxg0,10,10,0|dp3xfz,10,10,0|dp3xg0,11,11,1|dzwtfz,11,11,1|dzwtg0,10,10,0|e7u03z,10,10,0|e7u040,11,11,1|eimw3z,11,11,1|eimw40,10,10,0|eqk2rz,10,10,0|eqk2s0,11,11,1|f1cyrz,11,11,1|f1cys0,10,10,0|f9a5fz,10,10,0|f9a5g0,11,11,1|fkg03z,11,11,1|fkg040,10,10,0|fs083z,10,10,0|fs0840,11,11,1|g362rz,11,11,1|g362s0,10,10,0|gaqarz,10,10,0|gaqas0,11,11,1|glw5fz,11,11,1|glw5g0,10,10,0|gttc3z,10,10,0|gttc40,11,11,1|h4m83z,11,11,1|h4m840,10,10,0|hcjerz,10,10,0|hcjes0,11,11,1|hncarz,11,11,1|hncas0,10,10,0|hv9hfz,10,10,0|hv9hg0,11,11,1|i6fc3z,11,11,1|i6fc40,10,10,0|idzk3z,10,10,0|idzk40,11,11,1|ip5erz,11,11,1|ip5es0,10,10,0|iwpmrz,10,10,0|iwpms0,11,11,1|j7vhfz,11,11,1|j7vhg0,10,10,0|jffpfz,10,10,0|jffpg0,11,11,1|jqlk3z,11,11,1|jqlk40,10,10,0|jyiqrz,10,10,0|jyiqs0,11,11,1|k9bmrz,11,11,1|k9bms0,10,10,0|kh8tfz,10,10,0|kh8tg0,11,11,1|ks1pfz,11,11,1|ks1pg0,10,10,0|kzyw3z,10,10,0|kzyw40,11,11,1|lb4qrz,11,11,1|lb4qs0,10,10,0|lioyrz,10,10,0|lioys0,11,11,1|ltutfz,11,11,1|ltutg0,10,10,0|m1f1fz,10,10,0|m1f1g0,11,11,1|mckw3z,11,11,1|mckw40,10,10,0|mki2rz,10,10,0|mki2s0,11,11,1|mvayrz,11,11,1|mvays0,10,10,0|n385fz,10,10,0|n385g0,11,11,1|ne11fz,11,11,1|ne11g0,10,10,0|nly83z,10,10,0|nly840,11,11,1|nwr43z,11,11,1|nwr440,10,10,0|o4oarz,10,10,0|o4oas0,11,11,1|ofu5fz,11,11,1|ofu5g0,10,10,0|onedfz,10,10,0|onedg0,11,11,1|oyk83z,11,11,1|oyk840,10,10,0|p64g3z,10,10,0|p64g40,11,11,1|phaarz,11,11,1|phaas0,10,10,0|pp7hfz,10,10,0|pp7hg0,11,11,1|q00dfz,11,11,1|q00dg0,10,10,0|q7xk3z,10,10,0|q7xk40,11,11,1|qiqg3z,11,11,1|qiqg40,10,10,0|qqnmrz,10,10,0|qqnms0,11,11,1|r1thfz,11,11,1|r1thg0,10,10,0|r9dpfz,10,10,0|r9dpg0,11,11,1|rkjk3z,11,11,1|rkjk40,10,10,0|rs3s3z,10,10,0|rs3s40,11,11,1|s39mrz,11,11,1|s39ms0,10,10,0|sb6tfz,10,10,0|sb6tg0,11,11,1|slzpfz,11,11,1|slzpg0,10,10,0|stww3z,10,10,0|stww40,11,11,1|t4ps3z,11,11,1|t4ps40,10,10,0|tcmyrz,10,10,0|tcmys0,11,11,1|tnfurz,11,11,1|tnfus0,10,10,0|tvd1fz,10,10,0|tvd1g0,11,11,1|u6iw3z,11,11,1|u6iw40,10,10,0|ue343z,10,10,0|ue3440,11,11,1|up8yrz,11,11,1|up8ys0,10,10,0|uwt6rz,10,10,0|uwt6s0,11,11,1|v7z1fz,11,11,1|v7z1g0,10,10,0|vfw83z,10,10,0|vfw840,11,11,1|vqp43z,11,11,1|vqp440,10,10,0|vymarz,10,10,0|vymas0,11,11,1|w9f6rz,11,11,1|w9f6s0,10,10,0|whcdfz,10,10,0|whcdg0,11,11,1|wsi83z,11,11,1|wsi840,10,10,0|x02g3z,10,10,0|x02g40,11,11,1|xb8arz,11,11,1|xb8as0,10,10,0|xisirz,10,10,0|xisis0,11,11,1|xtydfz,11,11,1|xtydg0,10,10,0|y1ilfz,10,10,0|y1ilg0,11,11,1|ycog3z,11,11,1|ycog40,10,10,0|yklmrz,10,10,0|yklms0,11,11,1|yveirz,11,11,1|yveis0,10,10,0|z3bpfz,10,10,0|z3bpg0,11,11,1|ze4lfz,11,11,1|ze4lg0,10,10,0\",\"Europe/Paris|,0,9,0|-154gb3l,7,9,0|-uozn3m,7,9,0|-uozn3l,8,1,0|-ry2lg1,8,1,0|-ry2lg0,9,10,1|-rsgqs1,9,10,1|-rsgqs0,8,1,0|-rjiis1,8,1,0|-rjiis0,9,10,1|-r9dpg1,9,10,1|-r9dpg0,8,1,0|-r1idg1,8,1,0|-r1idg0,9,10,1|-qqnms1,9,10,1|-qqnms0,8,1,0|-qj59g1,8,1,0|-qj59g0,9,10,1|-q7xk41,9,10,1|-q7xk40,8,1,0|-q15441,8,1,0|-q15440,9,10,1|-po6g41,9,10,1|-po6g40,8,1,0|-pgvhg1,8,1,0|-pgvhg0,9,10,1|-p5atg1,9,10,1|-p5atg0,8,1,0|-oxj6s1,8,1,0|-oxj6s0,9,10,1|-ong841,9,10,1|-ong840,8,1,0|-obkg41,8,1,0|-obkg40,9,10,1|-o4q5g1,9,10,1|-o4q5g0,8,1,0|-nvq2s1,8,1,0|-nvq2s0,9,10,1|-nm02s1,9,10,1|-nm02s0,8,1,0|-ncn1g1,8,1,0|-ncn1g0,9,10,1|-n3a041,9,10,1|-n3a040,8,1,0|-mt71g1,8,1,0|-mt71g0,9,10,1|-mkjxg1,9,10,1|-mkjxg0,8,1,0|-matxg1,8,1,0|-matxg0,9,10,1|-m1tus1,9,10,1|-m1tus0,8,1,0|-lrqw41,8,1,0|-lrqw40,9,10,1|-liqtg1,9,10,1|-liqtg0,8,1,0|-l8nus1,8,1,0|-l8nus0,9,10,1|-l00qs1,9,10,1|-l00qs0,8,1,0|-kqaqs1,8,1,0|-kqaqs0,9,10,1|-khao41,9,10,1|-khao40,8,1,0|-k77pg1,8,1,0|-k77pg0,9,10,1|-jyklg1,9,10,1|-jyklg0,8,1,0|-jp7k41,8,1,0|-jp7k40,9,10,1|-jfuis1,9,10,1|-jfuis0,8,1,0|-j6ug41,8,1,0|-j6ug40,9,10,1|-iwrhg1,9,10,1|-iwrhg0,8,1,0|-ineg41,8,1,0|-ineg40,9,10,1|-ie1es1,9,10,1|-ie1es0,8,1,0|-i51c41,8,1,0|-i51c40,9,10,1|-hvbc41,9,10,1|-hvbc40,8,1,0|-hl8dg1,8,1,0|-hl8dg0,9,10,1|-hcl9g1,9,10,1|-hcl9g0,8,1,0|-h38841,8,1,0|-h38840,9,10,1|-gtv6s1,9,10,1|-gtv6s0,8,1,0|-gkv441,8,1,0|-gkv440,9,10,1|-gb5441,9,10,1|-gb5440,8,1,0|-g125g1,8,1,0|-g125g0,9,10,1|-fpwas1,9,10,1|-fpwas0,8,1,0|-fkul41,8,1,0|-fkul40,9,10,1|-ff5c81,9,10,1|-ff5c80,11,11,1|-e6dzw1,11,11,1|-e6dzw0,10,10,0|-dytrw1,10,10,0|-dytrw0,11,11,1|-dp3rw1,11,11,1|-dp3rw0,10,10,0|-dfqqk1,10,10,0|-dfqqk0,11,11,1|-d8caw1,11,11,1|-d8caw0,152,11,1|-d62qs1,152,11,1|-d62qs0,9,10,1|-cx0nw1,9,10,1|-cx0nw0,152,11,1|-cofek1,152,11,1|-cofek0,10,10,0|396inz,10,10,0|396io0,11,11,1|3ijh7z,11,11,1|3ijh80,10,10,0|3s9mrz,10,10,0|3s9ms0,11,11,1|419pfz,11,11,1|419pg0,10,10,0|4azpfz,10,10,0|4azpg0,11,11,1|4kcqrz,11,11,1|4kcqs0,10,10,0|4tps3z,10,10,0|4tps40,11,11,1|532tfz,11,11,1|532tg0,10,10,0|5cstfz,10,10,0|5cstg0,11,11,1|5lsw3z,11,11,1|5lsw40,10,10,0|5v5xfz,10,10,0|5v5xg0,11,11,1|64iyrz,11,11,1|64iys0,10,10,0|6dw03z,10,10,0|6dw040,11,11,1|6n91fz,11,11,1|6n91g0,10,10,0|6wm2rz,10,10,0|6wm2s0,11,11,1|75z43z,11,11,1|75z440,10,10,0|7fc5fz,10,10,0|7fc5g0,11,11,1|7p25fz,11,11,1|7p25g0,10,10,0|7yf6rz,10,10,0|7yf6s0,11,11,1|87s83z,11,11,1|87s840,10,10,0|8h59fz,10,10,0|8h59g0,11,11,1|8qiarz,11,11,1|8qias0,10,10,0|8zvc3z,10,10,0|8zvc40,11,11,1|998dfz,11,11,1|998dg0,10,10,0|9ilerz,10,10,0|9iles0,11,11,1|9ryg3z,11,11,1|9ryg40,10,10,0|a1bhfz,10,10,0|a1bhg0,11,11,1|aaoirz,11,11,1|aaois0,10,10,0|ak1k3z,10,10,0|ak1k40,11,11,1|atrk3z,11,11,1|atrk40,10,10,0|b34lfz,10,10,0|b34lg0,11,11,1|bchmrz,11,11,1|bchms0,10,10,0|bluo3z,10,10,0|bluo40,11,11,1|bv7pfz,11,11,1|bv7pg0,10,10,0|c4kqrz,10,10,0|c4kqs0,11,11,1|cdxs3z,11,11,1|cdxs40,10,10,0|cnatfz,10,10,0|cnatg0,11,11,1|cwnurz,11,11,1|cwnus0,10,10,0|d60w3z,10,10,0|d60w40,11,11,1|dfdxfz,11,11,1|dfdxg0,10,10,0|dp3xfz,10,10,0|dp3xg0,11,11,1|dzwtfz,11,11,1|dzwtg0,10,10,0|e7u03z,10,10,0|e7u040,11,11,1|eimw3z,11,11,1|eimw40,10,10,0|eqk2rz,10,10,0|eqk2s0,11,11,1|f1cyrz,11,11,1|f1cys0,10,10,0|f9a5fz,10,10,0|f9a5g0,11,11,1|fkg03z,11,11,1|fkg040,10,10,0|fs083z,10,10,0|fs0840,11,11,1|g362rz,11,11,1|g362s0,10,10,0|gaqarz,10,10,0|gaqas0,11,11,1|glw5fz,11,11,1|glw5g0,10,10,0|gttc3z,10,10,0|gttc40,11,11,1|h4m83z,11,11,1|h4m840,10,10,0|hcjerz,10,10,0|hcjes0,11,11,1|hncarz,11,11,1|hncas0,10,10,0|hv9hfz,10,10,0|hv9hg0,11,11,1|i6fc3z,11,11,1|i6fc40,10,10,0|idzk3z,10,10,0|idzk40,11,11,1|ip5erz,11,11,1|ip5es0,10,10,0|iwpmrz,10,10,0|iwpms0,11,11,1|j7vhfz,11,11,1|j7vhg0,10,10,0|jffpfz,10,10,0|jffpg0,11,11,1|jqlk3z,11,11,1|jqlk40,10,10,0|jyiqrz,10,10,0|jyiqs0,11,11,1|k9bmrz,11,11,1|k9bms0,10,10,0|kh8tfz,10,10,0|kh8tg0,11,11,1|ks1pfz,11,11,1|ks1pg0,10,10,0|kzyw3z,10,10,0|kzyw40,11,11,1|lb4qrz,11,11,1|lb4qs0,10,10,0|lioyrz,10,10,0|lioys0,11,11,1|ltutfz,11,11,1|ltutg0,10,10,0|m1f1fz,10,10,0|m1f1g0,11,11,1|mckw3z,11,11,1|mckw40,10,10,0|mki2rz,10,10,0|mki2s0,11,11,1|mvayrz,11,11,1|mvays0,10,10,0|n385fz,10,10,0|n385g0,11,11,1|ne11fz,11,11,1|ne11g0,10,10,0|nly83z,10,10,0|nly840,11,11,1|nwr43z,11,11,1|nwr440,10,10,0|o4oarz,10,10,0|o4oas0,11,11,1|ofu5fz,11,11,1|ofu5g0,10,10,0|onedfz,10,10,0|onedg0,11,11,1|oyk83z,11,11,1|oyk840,10,10,0|p64g3z,10,10,0|p64g40,11,11,1|phaarz,11,11,1|phaas0,10,10,0|pp7hfz,10,10,0|pp7hg0,11,11,1|q00dfz,11,11,1|q00dg0,10,10,0|q7xk3z,10,10,0|q7xk40,11,11,1|qiqg3z,11,11,1|qiqg40,10,10,0|qqnmrz,10,10,0|qqnms0,11,11,1|r1thfz,11,11,1|r1thg0,10,10,0|r9dpfz,10,10,0|r9dpg0,11,11,1|rkjk3z,11,11,1|rkjk40,10,10,0|rs3s3z,10,10,0|rs3s40,11,11,1|s39mrz,11,11,1|s39ms0,10,10,0|sb6tfz,10,10,0|sb6tg0,11,11,1|slzpfz,11,11,1|slzpg0,10,10,0|stww3z,10,10,0|stww40,11,11,1|t4ps3z,11,11,1|t4ps40,10,10,0|tcmyrz,10,10,0|tcmys0,11,11,1|tnfurz,11,11,1|tnfus0,10,10,0|tvd1fz,10,10,0|tvd1g0,11,11,1|u6iw3z,11,11,1|u6iw40,10,10,0|ue343z,10,10,0|ue3440,11,11,1|up8yrz,11,11,1|up8ys0,10,10,0|uwt6rz,10,10,0|uwt6s0,11,11,1|v7z1fz,11,11,1|v7z1g0,10,10,0|vfw83z,10,10,0|vfw840,11,11,1|vqp43z,11,11,1|vqp440,10,10,0|vymarz,10,10,0|vymas0,11,11,1|w9f6rz,11,11,1|w9f6s0,10,10,0|whcdfz,10,10,0|whcdg0,11,11,1|wsi83z,11,11,1|wsi840,10,10,0|x02g3z,10,10,0|x02g40,11,11,1|xb8arz,11,11,1|xb8as0,10,10,0|xisirz,10,10,0|xisis0,11,11,1|xtydfz,11,11,1|xtydg0,10,10,0|y1ilfz,10,10,0|y1ilg0,11,11,1|ycog3z,11,11,1|ycog40,10,10,0|yklmrz,10,10,0|yklms0,11,11,1|yveirz,11,11,1|yveis0,10,10,0|z3bpfz,10,10,0|z3bpg0,11,11,1|ze4lfz,11,11,1|ze4lg0,10,10,0\",\"Europe/Podgorica|,0,332,0|-18vsmgo,10,10,0|-ezayw1,10,10,0|-ezayw0,11,11,1|-e6dzw1,11,11,1|-e6dzw0,10,10,0|-dytrw1,10,10,0|-dytrw0,11,11,1|-dp3rw1,11,11,1|-dp3rw0,10,10,0|-dfqqk1,10,10,0|-dfqqk0,11,11,1|-d6dp81,11,11,1|-d6dp80,10,10,0|-cv5zw1,10,10,0|-cv5zw0,11,11,1|-cofek1,11,11,1|-cofek0,10,10,0|6wm2rz,10,10,0|6wm2s0,11,11,1|75z43z,11,11,1|75z440,10,10,0|7fc5fz,10,10,0|7fc5g0,11,11,1|7p25fz,11,11,1|7p25g0,10,10,0|7yf6rz,10,10,0|7yf6s0,11,11,1|87s83z,11,11,1|87s840,10,10,0|8h59fz,10,10,0|8h59g0,11,11,1|8qiarz,11,11,1|8qias0,10,10,0|8zvc3z,10,10,0|8zvc40,11,11,1|998dfz,11,11,1|998dg0,10,10,0|9ilerz,10,10,0|9iles0,11,11,1|9ryg3z,11,11,1|9ryg40,10,10,0|a1bhfz,10,10,0|a1bhg0,11,11,1|aaoirz,11,11,1|aaois0,10,10,0|ak1k3z,10,10,0|ak1k40,11,11,1|atrk3z,11,11,1|atrk40,10,10,0|b34lfz,10,10,0|b34lg0,11,11,1|bchmrz,11,11,1|bchms0,10,10,0|bluo3z,10,10,0|bluo40,11,11,1|bv7pfz,11,11,1|bv7pg0,10,10,0|c4kqrz,10,10,0|c4kqs0,11,11,1|cdxs3z,11,11,1|cdxs40,10,10,0|cnatfz,10,10,0|cnatg0,11,11,1|cwnurz,11,11,1|cwnus0,10,10,0|d60w3z,10,10,0|d60w40,11,11,1|dfdxfz,11,11,1|dfdxg0,10,10,0|dp3xfz,10,10,0|dp3xg0,11,11,1|dzwtfz,11,11,1|dzwtg0,10,10,0|e7u03z,10,10,0|e7u040,11,11,1|eimw3z,11,11,1|eimw40,10,10,0|eqk2rz,10,10,0|eqk2s0,11,11,1|f1cyrz,11,11,1|f1cys0,10,10,0|f9a5fz,10,10,0|f9a5g0,11,11,1|fkg03z,11,11,1|fkg040,10,10,0|fs083z,10,10,0|fs0840,11,11,1|g362rz,11,11,1|g362s0,10,10,0|gaqarz,10,10,0|gaqas0,11,11,1|glw5fz,11,11,1|glw5g0,10,10,0|gttc3z,10,10,0|gttc40,11,11,1|h4m83z,11,11,1|h4m840,10,10,0|hcjerz,10,10,0|hcjes0,11,11,1|hncarz,11,11,1|hncas0,10,10,0|hv9hfz,10,10,0|hv9hg0,11,11,1|i6fc3z,11,11,1|i6fc40,10,10,0|idzk3z,10,10,0|idzk40,11,11,1|ip5erz,11,11,1|ip5es0,10,10,0|iwpmrz,10,10,0|iwpms0,11,11,1|j7vhfz,11,11,1|j7vhg0,10,10,0|jffpfz,10,10,0|jffpg0,11,11,1|jqlk3z,11,11,1|jqlk40,10,10,0|jyiqrz,10,10,0|jyiqs0,11,11,1|k9bmrz,11,11,1|k9bms0,10,10,0|kh8tfz,10,10,0|kh8tg0,11,11,1|ks1pfz,11,11,1|ks1pg0,10,10,0|kzyw3z,10,10,0|kzyw40,11,11,1|lb4qrz,11,11,1|lb4qs0,10,10,0|lioyrz,10,10,0|lioys0,11,11,1|ltutfz,11,11,1|ltutg0,10,10,0|m1f1fz,10,10,0|m1f1g0,11,11,1|mckw3z,11,11,1|mckw40,10,10,0|mki2rz,10,10,0|mki2s0,11,11,1|mvayrz,11,11,1|mvays0,10,10,0|n385fz,10,10,0|n385g0,11,11,1|ne11fz,11,11,1|ne11g0,10,10,0|nly83z,10,10,0|nly840,11,11,1|nwr43z,11,11,1|nwr440,10,10,0|o4oarz,10,10,0|o4oas0,11,11,1|ofu5fz,11,11,1|ofu5g0,10,10,0|onedfz,10,10,0|onedg0,11,11,1|oyk83z,11,11,1|oyk840,10,10,0|p64g3z,10,10,0|p64g40,11,11,1|phaarz,11,11,1|phaas0,10,10,0|pp7hfz,10,10,0|pp7hg0,11,11,1|q00dfz,11,11,1|q00dg0,10,10,0|q7xk3z,10,10,0|q7xk40,11,11,1|qiqg3z,11,11,1|qiqg40,10,10,0|qqnmrz,10,10,0|qqnms0,11,11,1|r1thfz,11,11,1|r1thg0,10,10,0|r9dpfz,10,10,0|r9dpg0,11,11,1|rkjk3z,11,11,1|rkjk40,10,10,0|rs3s3z,10,10,0|rs3s40,11,11,1|s39mrz,11,11,1|s39ms0,10,10,0|sb6tfz,10,10,0|sb6tg0,11,11,1|slzpfz,11,11,1|slzpg0,10,10,0|stww3z,10,10,0|stww40,11,11,1|t4ps3z,11,11,1|t4ps40,10,10,0|tcmyrz,10,10,0|tcmys0,11,11,1|tnfurz,11,11,1|tnfus0,10,10,0|tvd1fz,10,10,0|tvd1g0,11,11,1|u6iw3z,11,11,1|u6iw40,10,10,0|ue343z,10,10,0|ue3440,11,11,1|up8yrz,11,11,1|up8ys0,10,10,0|uwt6rz,10,10,0|uwt6s0,11,11,1|v7z1fz,11,11,1|v7z1g0,10,10,0|vfw83z,10,10,0|vfw840,11,11,1|vqp43z,11,11,1|vqp440,10,10,0|vymarz,10,10,0|vymas0,11,11,1|w9f6rz,11,11,1|w9f6s0,10,10,0|whcdfz,10,10,0|whcdg0,11,11,1|wsi83z,11,11,1|wsi840,10,10,0|x02g3z,10,10,0|x02g40,11,11,1|xb8arz,11,11,1|xb8as0,10,10,0|xisirz,10,10,0|xisis0,11,11,1|xtydfz,11,11,1|xtydg0,10,10,0|y1ilfz,10,10,0|y1ilg0,11,11,1|ycog3z,11,11,1|ycog40,10,10,0|yklmrz,10,10,0|yklms0,11,11,1|yveirz,11,11,1|yveis0,10,10,0|z3bpfz,10,10,0|z3bpg0,11,11,1|ze4lfz,11,11,1|ze4lg0,10,10,0\",\"Europe/Prague|,0,334,0|-1qmkw08,7,334,0|-14u7uo9,7,334,0|-14u7uo8,10,10,0|-s0e081,10,10,0|-s0e080,11,11,1|-rsilg1,11,11,1|-rsilg0,10,10,0|-ridmk1,10,10,0|-ridmk0,11,11,1|-ragfw1,11,11,1|-ragfw0,10,10,0|-qznjw1,10,10,0|-qznjw0,11,11,1|-qrqd81,11,11,1|-qrqd80,10,10,0|-fizzw1,10,10,0|-fizzw0,11,11,1|-e6dzw1,11,11,1|-e6dzw0,10,10,0|-dytrw1,10,10,0|-dytrw0,11,11,1|-dp3rw1,11,11,1|-dp3rw0,10,10,0|-dfqqk1,10,10,0|-dfqqk0,11,11,1|-d6dp81,11,11,1|-d6dp80,10,10,0|-cx0nw1,10,10,0|-cx0nw0,11,11,1|-cnnmk1,11,11,1|-cnnmk0,10,10,0|-cchrw1,10,10,0|-cchrw0,11,11,1|-c4mfw1,11,11,1|-c4mfw0,10,10,0|-c1qns1,10,10,0|-c1qns0,1,1,1|-bxf3s1,1,1,1|-bxf3s0,10,10,0|-bujh81,10,10,0|-bujh80,11,11,1|-blwd81,11,11,1|-blwd80,10,10,0|-bbtek1,10,10,0|-bbtek0,11,11,1|-b36ak1,11,11,1|-b36ak0,10,10,0|-ati581,10,10,0|-ati580,11,11,1|-akg7w1,11,11,1|-akg7w0,10,10,0|4tps3z,10,10,0|4tps40,11,11,1|532tfz,11,11,1|532tg0,10,10,0|5cstfz,10,10,0|5cstg0,11,11,1|5lsw3z,11,11,1|5lsw40,10,10,0|5v5xfz,10,10,0|5v5xg0,11,11,1|64iyrz,11,11,1|64iys0,10,10,0|6dw03z,10,10,0|6dw040,11,11,1|6n91fz,11,11,1|6n91g0,10,10,0|6wm2rz,10,10,0|6wm2s0,11,11,1|75z43z,11,11,1|75z440,10,10,0|7fc5fz,10,10,0|7fc5g0,11,11,1|7p25fz,11,11,1|7p25g0,10,10,0|7yf6rz,10,10,0|7yf6s0,11,11,1|87s83z,11,11,1|87s840,10,10,0|8h59fz,10,10,0|8h59g0,11,11,1|8qiarz,11,11,1|8qias0,10,10,0|8zvc3z,10,10,0|8zvc40,11,11,1|998dfz,11,11,1|998dg0,10,10,0|9ilerz,10,10,0|9iles0,11,11,1|9ryg3z,11,11,1|9ryg40,10,10,0|a1bhfz,10,10,0|a1bhg0,11,11,1|aaoirz,11,11,1|aaois0,10,10,0|ak1k3z,10,10,0|ak1k40,11,11,1|atrk3z,11,11,1|atrk40,10,10,0|b34lfz,10,10,0|b34lg0,11,11,1|bchmrz,11,11,1|bchms0,10,10,0|bluo3z,10,10,0|bluo40,11,11,1|bv7pfz,11,11,1|bv7pg0,10,10,0|c4kqrz,10,10,0|c4kqs0,11,11,1|cdxs3z,11,11,1|cdxs40,10,10,0|cnatfz,10,10,0|cnatg0,11,11,1|cwnurz,11,11,1|cwnus0,10,10,0|d60w3z,10,10,0|d60w40,11,11,1|dfdxfz,11,11,1|dfdxg0,10,10,0|dp3xfz,10,10,0|dp3xg0,11,11,1|dzwtfz,11,11,1|dzwtg0,10,10,0|e7u03z,10,10,0|e7u040,11,11,1|eimw3z,11,11,1|eimw40,10,10,0|eqk2rz,10,10,0|eqk2s0,11,11,1|f1cyrz,11,11,1|f1cys0,10,10,0|f9a5fz,10,10,0|f9a5g0,11,11,1|fkg03z,11,11,1|fkg040,10,10,0|fs083z,10,10,0|fs0840,11,11,1|g362rz,11,11,1|g362s0,10,10,0|gaqarz,10,10,0|gaqas0,11,11,1|glw5fz,11,11,1|glw5g0,10,10,0|gttc3z,10,10,0|gttc40,11,11,1|h4m83z,11,11,1|h4m840,10,10,0|hcjerz,10,10,0|hcjes0,11,11,1|hncarz,11,11,1|hncas0,10,10,0|hv9hfz,10,10,0|hv9hg0,11,11,1|i6fc3z,11,11,1|i6fc40,10,10,0|idzk3z,10,10,0|idzk40,11,11,1|ip5erz,11,11,1|ip5es0,10,10,0|iwpmrz,10,10,0|iwpms0,11,11,1|j7vhfz,11,11,1|j7vhg0,10,10,0|jffpfz,10,10,0|jffpg0,11,11,1|jqlk3z,11,11,1|jqlk40,10,10,0|jyiqrz,10,10,0|jyiqs0,11,11,1|k9bmrz,11,11,1|k9bms0,10,10,0|kh8tfz,10,10,0|kh8tg0,11,11,1|ks1pfz,11,11,1|ks1pg0,10,10,0|kzyw3z,10,10,0|kzyw40,11,11,1|lb4qrz,11,11,1|lb4qs0,10,10,0|lioyrz,10,10,0|lioys0,11,11,1|ltutfz,11,11,1|ltutg0,10,10,0|m1f1fz,10,10,0|m1f1g0,11,11,1|mckw3z,11,11,1|mckw40,10,10,0|mki2rz,10,10,0|mki2s0,11,11,1|mvayrz,11,11,1|mvays0,10,10,0|n385fz,10,10,0|n385g0,11,11,1|ne11fz,11,11,1|ne11g0,10,10,0|nly83z,10,10,0|nly840,11,11,1|nwr43z,11,11,1|nwr440,10,10,0|o4oarz,10,10,0|o4oas0,11,11,1|ofu5fz,11,11,1|ofu5g0,10,10,0|onedfz,10,10,0|onedg0,11,11,1|oyk83z,11,11,1|oyk840,10,10,0|p64g3z,10,10,0|p64g40,11,11,1|phaarz,11,11,1|phaas0,10,10,0|pp7hfz,10,10,0|pp7hg0,11,11,1|q00dfz,11,11,1|q00dg0,10,10,0|q7xk3z,10,10,0|q7xk40,11,11,1|qiqg3z,11,11,1|qiqg40,10,10,0|qqnmrz,10,10,0|qqnms0,11,11,1|r1thfz,11,11,1|r1thg0,10,10,0|r9dpfz,10,10,0|r9dpg0,11,11,1|rkjk3z,11,11,1|rkjk40,10,10,0|rs3s3z,10,10,0|rs3s40,11,11,1|s39mrz,11,11,1|s39ms0,10,10,0|sb6tfz,10,10,0|sb6tg0,11,11,1|slzpfz,11,11,1|slzpg0,10,10,0|stww3z,10,10,0|stww40,11,11,1|t4ps3z,11,11,1|t4ps40,10,10,0|tcmyrz,10,10,0|tcmys0,11,11,1|tnfurz,11,11,1|tnfus0,10,10,0|tvd1fz,10,10,0|tvd1g0,11,11,1|u6iw3z,11,11,1|u6iw40,10,10,0|ue343z,10,10,0|ue3440,11,11,1|up8yrz,11,11,1|up8ys0,10,10,0|uwt6rz,10,10,0|uwt6s0,11,11,1|v7z1fz,11,11,1|v7z1g0,10,10,0|vfw83z,10,10,0|vfw840,11,11,1|vqp43z,11,11,1|vqp440,10,10,0|vymarz,10,10,0|vymas0,11,11,1|w9f6rz,11,11,1|w9f6s0,10,10,0|whcdfz,10,10,0|whcdg0,11,11,1|wsi83z,11,11,1|wsi840,10,10,0|x02g3z,10,10,0|x02g40,11,11,1|xb8arz,11,11,1|xb8as0,10,10,0|xisirz,10,10,0|xisis0,11,11,1|xtydfz,11,11,1|xtydg0,10,10,0|y1ilfz,10,10,0|y1ilg0,11,11,1|ycog3z,11,11,1|ycog40,10,10,0|yklmrz,10,10,0|yklms0,11,11,1|yveirz,11,11,1|yveis0,10,10,0|z3bpfz,10,10,0|z3bpg0,11,11,1|ze4lfz,11,11,1|ze4lg0,10,10,0\",\"Europe/Riga|,0,363,0|-1ayy74y,136,363,0|-qznlkz,136,363,0|-qznlky,154,364,1|-qrqewz,154,364,1|-qrqewy,136,363,0|-qhllkz,136,363,0|-qhllky,154,364,1|-qez5kz,154,364,1|-qez5ky,136,363,0|-ms0hsz,136,363,0|-ms0hsy,15,11,0|-fciw81,15,11,0|-fciw80,148,6,0|-evjv01,148,6,0|-evjv00,11,11,1|-e6dzw1,11,11,1|-e6dzw0,10,10,0|-dytrw1,10,10,0|-dytrw0,11,11,1|-dp3rw1,11,11,1|-dp3rw0,10,10,0|-dfqqk1,10,10,0|-dfqqk0,11,11,1|-d6dp81,11,11,1|-d6dp80,10,10,0|-d5thg1,10,10,0|-d5thg0,148,6,0|5vb6bz,148,6,0|5vb6c0,149,209,1|64pzjz,149,209,1|64pzk0,148,6,0|6e33nz,148,6,0|6e33o0,149,209,1|6nhwvz,149,209,1|6nhww0,148,6,0|6wv0zz,148,6,0|6wv100,149,209,1|769u7z,149,209,1|769u80,148,6,0|7foszz,148,6,0|7fot00,149,209,1|7p1zvz,149,209,1|7p1zw0,148,6,0|7yf17z,148,6,0|7yf180,149,209,1|87s2jz,149,209,1|87s2k0,148,6,0|8h53vz,148,6,0|8h53w0,149,209,1|8qi57z,149,209,1|8qi580,148,6,0|8zv6jz,148,6,0|8zv6k0,149,209,1|9987vz,149,209,1|9987w0,148,6,0|9il97z,148,6,0|9il980,149,209,1|9ryajz,149,209,1|9ryak0,148,6,0|a1bbvz,148,6,0|a1bbw0,16,6,1|aaofzz,16,6,1|aaog00,15,11,0|ak1hbz,15,11,0|ak1hc0,16,6,1|atrhbz,16,6,1|atrhc0,15,11,0|b34inz,15,11,0|b34io0,16,6,1|bchjzz,16,6,1|bchk00,15,11,0|blulbz,15,11,0|blulc0,16,6,1|bv7mnz,16,6,1|bv7mo0,15,11,0|c4knzz,15,11,0|c4ko00,16,6,1|cdxpbz,16,6,1|cdxpc0,15,11,0|cnaqnz,15,11,0|cnaqo0,16,6,1|cwnrzz,16,6,1|cwns00,15,11,0|d60tbz,15,11,0|d60tc0,16,6,1|dfdunz,16,6,1|dfduo0,15,11,0|dp3unz,15,11,0|dp3uo0,16,6,1|dygvzz,16,6,1|dygw00,15,11,0|e7u03z,15,11,0|e7u040,16,6,1|eimw3z,16,6,1|eimw40,15,11,0|eqk2rz,15,11,0|eqk2s0,16,6,1|f1cyrz,16,6,1|f1cys0,15,11,0|f9a5fz,15,11,0|f9a5g0,16,6,1|fkg03z,16,6,1|fkg040,15,11,0|gaqarz,15,11,0|gaqas0,16,6,1|glw5fz,16,6,1|glw5g0,15,11,0|gttc3z,15,11,0|gttc40,16,6,1|h4m83z,16,6,1|h4m840,15,11,0|hcjerz,15,11,0|hcjes0,16,6,1|hncarz,16,6,1|hncas0,15,11,0|hv9hfz,15,11,0|hv9hg0,16,6,1|i6fc3z,16,6,1|i6fc40,15,11,0|idzk3z,15,11,0|idzk40,16,6,1|ip5erz,16,6,1|ip5es0,15,11,0|iwpmrz,15,11,0|iwpms0,16,6,1|j7vhfz,16,6,1|j7vhg0,15,11,0|jffpfz,15,11,0|jffpg0,16,6,1|jqlk3z,16,6,1|jqlk40,15,11,0|jyiqrz,15,11,0|jyiqs0,16,6,1|k9bmrz,16,6,1|k9bms0,15,11,0|kh8tfz,15,11,0|kh8tg0,16,6,1|ks1pfz,16,6,1|ks1pg0,15,11,0|kzyw3z,15,11,0|kzyw40,16,6,1|lb4qrz,16,6,1|lb4qs0,15,11,0|lioyrz,15,11,0|lioys0,16,6,1|ltutfz,16,6,1|ltutg0,15,11,0|m1f1fz,15,11,0|m1f1g0,16,6,1|mckw3z,16,6,1|mckw40,15,11,0|mki2rz,15,11,0|mki2s0,16,6,1|mvayrz,16,6,1|mvays0,15,11,0|n385fz,15,11,0|n385g0,16,6,1|ne11fz,16,6,1|ne11g0,15,11,0|nly83z,15,11,0|nly840,16,6,1|nwr43z,16,6,1|nwr440,15,11,0|o4oarz,15,11,0|o4oas0,16,6,1|ofu5fz,16,6,1|ofu5g0,15,11,0|onedfz,15,11,0|onedg0,16,6,1|oyk83z,16,6,1|oyk840,15,11,0|p64g3z,15,11,0|p64g40,16,6,1|phaarz,16,6,1|phaas0,15,11,0|pp7hfz,15,11,0|pp7hg0,16,6,1|q00dfz,16,6,1|q00dg0,15,11,0|q7xk3z,15,11,0|q7xk40,16,6,1|qiqg3z,16,6,1|qiqg40,15,11,0|qqnmrz,15,11,0|qqnms0,16,6,1|r1thfz,16,6,1|r1thg0,15,11,0|r9dpfz,15,11,0|r9dpg0,16,6,1|rkjk3z,16,6,1|rkjk40,15,11,0|rs3s3z,15,11,0|rs3s40,16,6,1|s39mrz,16,6,1|s39ms0,15,11,0|sb6tfz,15,11,0|sb6tg0,16,6,1|slzpfz,16,6,1|slzpg0,15,11,0|stww3z,15,11,0|stww40,16,6,1|t4ps3z,16,6,1|t4ps40,15,11,0|tcmyrz,15,11,0|tcmys0,16,6,1|tnfurz,16,6,1|tnfus0,15,11,0|tvd1fz,15,11,0|tvd1g0,16,6,1|u6iw3z,16,6,1|u6iw40,15,11,0|ue343z,15,11,0|ue3440,16,6,1|up8yrz,16,6,1|up8ys0,15,11,0|uwt6rz,15,11,0|uwt6s0,16,6,1|v7z1fz,16,6,1|v7z1g0,15,11,0|vfw83z,15,11,0|vfw840,16,6,1|vqp43z,16,6,1|vqp440,15,11,0|vymarz,15,11,0|vymas0,16,6,1|w9f6rz,16,6,1|w9f6s0,15,11,0|whcdfz,15,11,0|whcdg0,16,6,1|wsi83z,16,6,1|wsi840,15,11,0|x02g3z,15,11,0|x02g40,16,6,1|xb8arz,16,6,1|xb8as0,15,11,0|xisirz,15,11,0|xisis0,16,6,1|xtydfz,16,6,1|xtydg0,15,11,0|y1ilfz,15,11,0|y1ilg0,16,6,1|ycog3z,16,6,1|ycog40,15,11,0|yklmrz,15,11,0|yklms0,16,6,1|yveirz,16,6,1|yveis0,15,11,0|z3bpfz,15,11,0|z3bpg0,16,6,1|ze4lfz,16,6,1|ze4lg0,15,11,0\",\"Europe/Rome|,0,365,0|-1hs7rn8,136,365,0|-13r0qs1,136,365,0|-13r0qs0,10,10,0|-rymys1,10,10,0|-rymys0,11,11,1|-rsio81,11,11,1|-rsio80,10,10,0|-rj5k41,10,10,0|-rj5k40,11,11,1|-r9qqw1,11,11,1|-r9qqw0,10,10,0|-r1idg1,10,10,0|-r1idg0,11,11,1|-qqnpk1,11,11,1|-qqnpk0,10,10,0|-qj59g1,10,10,0|-qj59g0,11,11,1|-q7zhk1,11,11,1|-q7zhk0,10,10,0|-pzcas1,10,10,0|-pzcas0,11,11,1|-ppzc81,11,11,1|-ppzc80,10,10,0|-ff59g1,10,10,0|-ff59g0,11,11,1|-e6dzw1,11,11,1|-e6dzw0,10,10,0|-dytrw1,10,10,0|-dytrw0,11,11,1|-dp3rw1,11,11,1|-dp3rw0,10,10,0|-dfqqk1,10,10,0|-dfqqk0,11,11,1|-d75h81,11,11,1|-d75h80,10,10,0|-cx0nw1,10,10,0|-cx0nw0,11,11,1|-cohes1,11,11,1|-cohes0,10,10,0|-cf2d81,10,10,0|-cf2d80,11,11,1|-c4mfw1,11,11,1|-c4mfw0,10,10,0|-bwcg41,10,10,0|-bwcg40,11,11,1|-blwis1,11,11,1|-blwis0,10,10,0|-bec581,10,10,0|-bec580,11,11,1|-b36ak1,11,11,1|-b36ak0,10,10,0|-1vwis1,10,10,0|-1vwis0,11,11,1|-1pf9k1,11,11,1|-1pf9k0,10,10,0|-1cthg1,10,10,0|-1cthg0,11,11,1|-16p441,11,11,1|-16p440,10,10,0|-u3es1,10,10,0|-u3es0,11,11,1|-nz1g1,11,11,1|-nz1g0,10,10,0|-b0dg1,10,10,0|-b0dg0,11,11,1|-4w041,11,11,1|-4w040,10,10,0|7pp7z,10,10,0|7pp80,11,11,1|du2jz,11,11,1|du2k0,10,10,0|q2t7z,10,10,0|q2t80,11,11,1|wk57z,11,11,1|wk580,10,10,0|195ujz,10,10,0|195uk0,11,11,1|1fn6jz,11,11,1|1fn6k0,10,10,0|1s8vvz,10,10,0|1s8vw0,11,11,1|1yd97z,11,11,1|1yd980,10,10,0|2alzvz,10,10,0|2alzw0,11,11,1|2h3bvz,11,11,1|2h3bw0,10,10,0|2tp17z,10,10,0|2tp180,11,11,1|2ztejz,11,11,1|2ztek0,10,10,0|3cf3vz,10,10,0|3cf3w0,11,11,1|3ijh7z,11,11,1|3ijh80,10,10,0|3us7vz,10,10,0|3us7w0,11,11,1|419jvz,11,11,1|419jw0,10,10,0|4dv97z,10,10,0|4dv980,11,11,1|4kcl7z,11,11,1|4kcl80,10,10,0|4wlbvz,10,10,0|4wlbw0,11,11,1|532nvz,11,11,1|532nw0,10,10,0|5cstfz,10,10,0|5cstg0,11,11,1|5lsw3z,11,11,1|5lsw40,10,10,0|5v5xfz,10,10,0|5v5xg0,11,11,1|64iyrz,11,11,1|64iys0,10,10,0|6dw03z,10,10,0|6dw040,11,11,1|6n91fz,11,11,1|6n91g0,10,10,0|6wm2rz,10,10,0|6wm2s0,11,11,1|75z43z,11,11,1|75z440,10,10,0|7fc5fz,10,10,0|7fc5g0,11,11,1|7p25fz,11,11,1|7p25g0,10,10,0|7yf6rz,10,10,0|7yf6s0,11,11,1|87s83z,11,11,1|87s840,10,10,0|8h59fz,10,10,0|8h59g0,11,11,1|8qiarz,11,11,1|8qias0,10,10,0|8zvc3z,10,10,0|8zvc40,11,11,1|998dfz,11,11,1|998dg0,10,10,0|9ilerz,10,10,0|9iles0,11,11,1|9ryg3z,11,11,1|9ryg40,10,10,0|a1bhfz,10,10,0|a1bhg0,11,11,1|aaoirz,11,11,1|aaois0,10,10,0|ak1k3z,10,10,0|ak1k40,11,11,1|atrk3z,11,11,1|atrk40,10,10,0|b34lfz,10,10,0|b34lg0,11,11,1|bchmrz,11,11,1|bchms0,10,10,0|bluo3z,10,10,0|bluo40,11,11,1|bv7pfz,11,11,1|bv7pg0,10,10,0|c4kqrz,10,10,0|c4kqs0,11,11,1|cdxs3z,11,11,1|cdxs40,10,10,0|cnatfz,10,10,0|cnatg0,11,11,1|cwnurz,11,11,1|cwnus0,10,10,0|d60w3z,10,10,0|d60w40,11,11,1|dfdxfz,11,11,1|dfdxg0,10,10,0|dp3xfz,10,10,0|dp3xg0,11,11,1|dzwtfz,11,11,1|dzwtg0,10,10,0|e7u03z,10,10,0|e7u040,11,11,1|eimw3z,11,11,1|eimw40,10,10,0|eqk2rz,10,10,0|eqk2s0,11,11,1|f1cyrz,11,11,1|f1cys0,10,10,0|f9a5fz,10,10,0|f9a5g0,11,11,1|fkg03z,11,11,1|fkg040,10,10,0|fs083z,10,10,0|fs0840,11,11,1|g362rz,11,11,1|g362s0,10,10,0|gaqarz,10,10,0|gaqas0,11,11,1|glw5fz,11,11,1|glw5g0,10,10,0|gttc3z,10,10,0|gttc40,11,11,1|h4m83z,11,11,1|h4m840,10,10,0|hcjerz,10,10,0|hcjes0,11,11,1|hncarz,11,11,1|hncas0,10,10,0|hv9hfz,10,10,0|hv9hg0,11,11,1|i6fc3z,11,11,1|i6fc40,10,10,0|idzk3z,10,10,0|idzk40,11,11,1|ip5erz,11,11,1|ip5es0,10,10,0|iwpmrz,10,10,0|iwpms0,11,11,1|j7vhfz,11,11,1|j7vhg0,10,10,0|jffpfz,10,10,0|jffpg0,11,11,1|jqlk3z,11,11,1|jqlk40,10,10,0|jyiqrz,10,10,0|jyiqs0,11,11,1|k9bmrz,11,11,1|k9bms0,10,10,0|kh8tfz,10,10,0|kh8tg0,11,11,1|ks1pfz,11,11,1|ks1pg0,10,10,0|kzyw3z,10,10,0|kzyw40,11,11,1|lb4qrz,11,11,1|lb4qs0,10,10,0|lioyrz,10,10,0|lioys0,11,11,1|ltutfz,11,11,1|ltutg0,10,10,0|m1f1fz,10,10,0|m1f1g0,11,11,1|mckw3z,11,11,1|mckw40,10,10,0|mki2rz,10,10,0|mki2s0,11,11,1|mvayrz,11,11,1|mvays0,10,10,0|n385fz,10,10,0|n385g0,11,11,1|ne11fz,11,11,1|ne11g0,10,10,0|nly83z,10,10,0|nly840,11,11,1|nwr43z,11,11,1|nwr440,10,10,0|o4oarz,10,10,0|o4oas0,11,11,1|ofu5fz,11,11,1|ofu5g0,10,10,0|onedfz,10,10,0|onedg0,11,11,1|oyk83z,11,11,1|oyk840,10,10,0|p64g3z,10,10,0|p64g40,11,11,1|phaarz,11,11,1|phaas0,10,10,0|pp7hfz,10,10,0|pp7hg0,11,11,1|q00dfz,11,11,1|q00dg0,10,10,0|q7xk3z,10,10,0|q7xk40,11,11,1|qiqg3z,11,11,1|qiqg40,10,10,0|qqnmrz,10,10,0|qqnms0,11,11,1|r1thfz,11,11,1|r1thg0,10,10,0|r9dpfz,10,10,0|r9dpg0,11,11,1|rkjk3z,11,11,1|rkjk40,10,10,0|rs3s3z,10,10,0|rs3s40,11,11,1|s39mrz,11,11,1|s39ms0,10,10,0|sb6tfz,10,10,0|sb6tg0,11,11,1|slzpfz,11,11,1|slzpg0,10,10,0|stww3z,10,10,0|stww40,11,11,1|t4ps3z,11,11,1|t4ps40,10,10,0|tcmyrz,10,10,0|tcmys0,11,11,1|tnfurz,11,11,1|tnfus0,10,10,0|tvd1fz,10,10,0|tvd1g0,11,11,1|u6iw3z,11,11,1|u6iw40,10,10,0|ue343z,10,10,0|ue3440,11,11,1|up8yrz,11,11,1|up8ys0,10,10,0|uwt6rz,10,10,0|uwt6s0,11,11,1|v7z1fz,11,11,1|v7z1g0,10,10,0|vfw83z,10,10,0|vfw840,11,11,1|vqp43z,11,11,1|vqp440,10,10,0|vymarz,10,10,0|vymas0,11,11,1|w9f6rz,11,11,1|w9f6s0,10,10,0|whcdfz,10,10,0|whcdg0,11,11,1|wsi83z,11,11,1|wsi840,10,10,0|x02g3z,10,10,0|x02g40,11,11,1|xb8arz,11,11,1|xb8as0,10,10,0|xisirz,10,10,0|xisis0,11,11,1|xtydfz,11,11,1|xtydg0,10,10,0|y1ilfz,10,10,0|y1ilg0,11,11,1|ycog3z,11,11,1|ycog40,10,10,0|yklmrz,10,10,0|yklms0,11,11,1|yveirz,11,11,1|yveis0,10,10,0|z3bpfz,10,10,0|z3bpg0,11,11,1|ze4lfz,11,11,1|ze4lg0,10,10,0\",\"Europe/Samara|,0,366,0|-qcx400,100,6,0|-kmr4c1,100,6,0|-kmr4c0,105,209,0|5vb3jz,105,209,0|5vb3k0,92,194,1|64pwrz,92,194,1|64pws0,105,209,0|6e30vz,105,209,0|6e30w0,92,194,1|6nhu3z,92,194,1|6nhu40,105,209,0|6wuy7z,105,209,0|6wuy80,92,194,1|769rfz,92,194,1|769rg0,105,209,0|7foq7z,105,209,0|7foq80,92,194,1|7p1x3z,92,194,1|7p1x40,105,209,0|7yeyfz,105,209,0|7yeyg0,92,194,1|87rzrz,92,194,1|87rzs0,105,209,0|8h513z,105,209,0|8h5140,92,194,1|8qi2fz,92,194,1|8qi2g0,105,209,0|8zv3rz,105,209,0|8zv3s0,92,194,1|99853z,92,194,1|998540,105,209,0|9il6fz,105,209,0|9il6g0,92,194,1|9ry7rz,92,194,1|9ry7s0,105,209,0|a1b93z,105,209,0|a1b940,105,209,1|aaod7z,105,209,1|aaod80,100,6,0|ak1ejz,100,6,0|ak1ek0,105,209,1|atrejz,105,209,1|atrek0,100,6,0|b34fvz,100,6,0|b34fw0,100,6,1|bchjzz,100,6,1|bchk00,100,6,0|bdkfzz,100,6,0|bdkg00,105,209,0|blufrz,105,209,0|blufs0,92,194,1|bv7h3z,92,194,1|bv7h40,105,209,0|c4kifz,105,209,0|c4kig0,92,194,1|cdxjrz,92,194,1|cdxjs0,105,209,0|cnal3z,105,209,0|cnal40,92,194,1|cwnmfz,92,194,1|cwnmg0,105,209,0|d60nrz,105,209,0|d60ns0,92,194,1|dfdp3z,92,194,1|dfdp40,105,209,0|dp3p3z,105,209,0|dp3p40,92,194,1|dzwl3z,92,194,1|dzwl40,105,209,0|e7trrz,105,209,0|e7trs0,92,194,1|eimnrz,92,194,1|eimns0,105,209,0|eqjufz,105,209,0|eqjug0,92,194,1|f1cqfz,92,194,1|f1cqg0,105,209,0|f99x3z,105,209,0|f99x40,92,194,1|fkfrrz,92,194,1|fkfrs0,105,209,0|frzzrz,105,209,0|frzzs0,92,194,1|g35ufz,92,194,1|g35ug0,105,209,0|gaq2fz,105,209,0|gaq2g0,92,194,1|glvx3z,92,194,1|glvx40,105,209,0|gtt3rz,105,209,0|gtt3s0,92,194,1|h4lzrz,92,194,1|h4lzs0,105,209,0|hcj6fz,105,209,0|hcj6g0,92,194,1|hnc2fz,92,194,1|hnc2g0,105,209,0|hv993z,105,209,0|hv9940,92,194,1|i6f3rz,92,194,1|i6f3s0,105,209,0|idzbrz,105,209,0|idzbs0,92,194,1|ip56fz,92,194,1|ip56g0,105,209,0|iwpefz,105,209,0|iwpeg0,92,194,1|j7v93z,92,194,1|j7v940,105,209,0|jffh3z,105,209,0|jffh40,92,194,1|jqlbrz,92,194,1|jqlbs0,105,209,0|jyiifz,105,209,0|jyiig0,92,194,1|k9befz,92,194,1|k9beg0,105,209,0|kh8l3z,105,209,0|kh8l40,92,194,1|ks1h3z,92,194,1|ks1h40,105,209,0|kzynrz,105,209,0|kzyns0,105,209,1|lb4l7z,105,209,1|lb4l80,100,6,0|liot7z,100,6,0|liot80,105,209,0\",\"Europe/San_Marino|,0,365,0|-1hs7rn8,136,365,0|-13r0qs1,136,365,0|-13r0qs0,10,10,0|-rymys1,10,10,0|-rymys0,11,11,1|-rsio81,11,11,1|-rsio80,10,10,0|-rj5k41,10,10,0|-rj5k40,11,11,1|-r9qqw1,11,11,1|-r9qqw0,10,10,0|-r1idg1,10,10,0|-r1idg0,11,11,1|-qqnpk1,11,11,1|-qqnpk0,10,10,0|-qj59g1,10,10,0|-qj59g0,11,11,1|-q7zhk1,11,11,1|-q7zhk0,10,10,0|-pzcas1,10,10,0|-pzcas0,11,11,1|-ppzc81,11,11,1|-ppzc80,10,10,0|-ff59g1,10,10,0|-ff59g0,11,11,1|-e6dzw1,11,11,1|-e6dzw0,10,10,0|-dytrw1,10,10,0|-dytrw0,11,11,1|-dp3rw1,11,11,1|-dp3rw0,10,10,0|-dfqqk1,10,10,0|-dfqqk0,11,11,1|-d75h81,11,11,1|-d75h80,10,10,0|-cx0nw1,10,10,0|-cx0nw0,11,11,1|-cohes1,11,11,1|-cohes0,10,10,0|-cf2d81,10,10,0|-cf2d80,11,11,1|-c4mfw1,11,11,1|-c4mfw0,10,10,0|-bwcg41,10,10,0|-bwcg40,11,11,1|-blwis1,11,11,1|-blwis0,10,10,0|-bec581,10,10,0|-bec580,11,11,1|-b36ak1,11,11,1|-b36ak0,10,10,0|-1vwis1,10,10,0|-1vwis0,11,11,1|-1pf9k1,11,11,1|-1pf9k0,10,10,0|-1cthg1,10,10,0|-1cthg0,11,11,1|-16p441,11,11,1|-16p440,10,10,0|-u3es1,10,10,0|-u3es0,11,11,1|-nz1g1,11,11,1|-nz1g0,10,10,0|-b0dg1,10,10,0|-b0dg0,11,11,1|-4w041,11,11,1|-4w040,10,10,0|7pp7z,10,10,0|7pp80,11,11,1|du2jz,11,11,1|du2k0,10,10,0|q2t7z,10,10,0|q2t80,11,11,1|wk57z,11,11,1|wk580,10,10,0|195ujz,10,10,0|195uk0,11,11,1|1fn6jz,11,11,1|1fn6k0,10,10,0|1s8vvz,10,10,0|1s8vw0,11,11,1|1yd97z,11,11,1|1yd980,10,10,0|2alzvz,10,10,0|2alzw0,11,11,1|2h3bvz,11,11,1|2h3bw0,10,10,0|2tp17z,10,10,0|2tp180,11,11,1|2ztejz,11,11,1|2ztek0,10,10,0|3cf3vz,10,10,0|3cf3w0,11,11,1|3ijh7z,11,11,1|3ijh80,10,10,0|3us7vz,10,10,0|3us7w0,11,11,1|419jvz,11,11,1|419jw0,10,10,0|4dv97z,10,10,0|4dv980,11,11,1|4kcl7z,11,11,1|4kcl80,10,10,0|4wlbvz,10,10,0|4wlbw0,11,11,1|532nvz,11,11,1|532nw0,10,10,0|5cstfz,10,10,0|5cstg0,11,11,1|5lsw3z,11,11,1|5lsw40,10,10,0|5v5xfz,10,10,0|5v5xg0,11,11,1|64iyrz,11,11,1|64iys0,10,10,0|6dw03z,10,10,0|6dw040,11,11,1|6n91fz,11,11,1|6n91g0,10,10,0|6wm2rz,10,10,0|6wm2s0,11,11,1|75z43z,11,11,1|75z440,10,10,0|7fc5fz,10,10,0|7fc5g0,11,11,1|7p25fz,11,11,1|7p25g0,10,10,0|7yf6rz,10,10,0|7yf6s0,11,11,1|87s83z,11,11,1|87s840,10,10,0|8h59fz,10,10,0|8h59g0,11,11,1|8qiarz,11,11,1|8qias0,10,10,0|8zvc3z,10,10,0|8zvc40,11,11,1|998dfz,11,11,1|998dg0,10,10,0|9ilerz,10,10,0|9iles0,11,11,1|9ryg3z,11,11,1|9ryg40,10,10,0|a1bhfz,10,10,0|a1bhg0,11,11,1|aaoirz,11,11,1|aaois0,10,10,0|ak1k3z,10,10,0|ak1k40,11,11,1|atrk3z,11,11,1|atrk40,10,10,0|b34lfz,10,10,0|b34lg0,11,11,1|bchmrz,11,11,1|bchms0,10,10,0|bluo3z,10,10,0|bluo40,11,11,1|bv7pfz,11,11,1|bv7pg0,10,10,0|c4kqrz,10,10,0|c4kqs0,11,11,1|cdxs3z,11,11,1|cdxs40,10,10,0|cnatfz,10,10,0|cnatg0,11,11,1|cwnurz,11,11,1|cwnus0,10,10,0|d60w3z,10,10,0|d60w40,11,11,1|dfdxfz,11,11,1|dfdxg0,10,10,0|dp3xfz,10,10,0|dp3xg0,11,11,1|dzwtfz,11,11,1|dzwtg0,10,10,0|e7u03z,10,10,0|e7u040,11,11,1|eimw3z,11,11,1|eimw40,10,10,0|eqk2rz,10,10,0|eqk2s0,11,11,1|f1cyrz,11,11,1|f1cys0,10,10,0|f9a5fz,10,10,0|f9a5g0,11,11,1|fkg03z,11,11,1|fkg040,10,10,0|fs083z,10,10,0|fs0840,11,11,1|g362rz,11,11,1|g362s0,10,10,0|gaqarz,10,10,0|gaqas0,11,11,1|glw5fz,11,11,1|glw5g0,10,10,0|gttc3z,10,10,0|gttc40,11,11,1|h4m83z,11,11,1|h4m840,10,10,0|hcjerz,10,10,0|hcjes0,11,11,1|hncarz,11,11,1|hncas0,10,10,0|hv9hfz,10,10,0|hv9hg0,11,11,1|i6fc3z,11,11,1|i6fc40,10,10,0|idzk3z,10,10,0|idzk40,11,11,1|ip5erz,11,11,1|ip5es0,10,10,0|iwpmrz,10,10,0|iwpms0,11,11,1|j7vhfz,11,11,1|j7vhg0,10,10,0|jffpfz,10,10,0|jffpg0,11,11,1|jqlk3z,11,11,1|jqlk40,10,10,0|jyiqrz,10,10,0|jyiqs0,11,11,1|k9bmrz,11,11,1|k9bms0,10,10,0|kh8tfz,10,10,0|kh8tg0,11,11,1|ks1pfz,11,11,1|ks1pg0,10,10,0|kzyw3z,10,10,0|kzyw40,11,11,1|lb4qrz,11,11,1|lb4qs0,10,10,0|lioyrz,10,10,0|lioys0,11,11,1|ltutfz,11,11,1|ltutg0,10,10,0|m1f1fz,10,10,0|m1f1g0,11,11,1|mckw3z,11,11,1|mckw40,10,10,0|mki2rz,10,10,0|mki2s0,11,11,1|mvayrz,11,11,1|mvays0,10,10,0|n385fz,10,10,0|n385g0,11,11,1|ne11fz,11,11,1|ne11g0,10,10,0|nly83z,10,10,0|nly840,11,11,1|nwr43z,11,11,1|nwr440,10,10,0|o4oarz,10,10,0|o4oas0,11,11,1|ofu5fz,11,11,1|ofu5g0,10,10,0|onedfz,10,10,0|onedg0,11,11,1|oyk83z,11,11,1|oyk840,10,10,0|p64g3z,10,10,0|p64g40,11,11,1|phaarz,11,11,1|phaas0,10,10,0|pp7hfz,10,10,0|pp7hg0,11,11,1|q00dfz,11,11,1|q00dg0,10,10,0|q7xk3z,10,10,0|q7xk40,11,11,1|qiqg3z,11,11,1|qiqg40,10,10,0|qqnmrz,10,10,0|qqnms0,11,11,1|r1thfz,11,11,1|r1thg0,10,10,0|r9dpfz,10,10,0|r9dpg0,11,11,1|rkjk3z,11,11,1|rkjk40,10,10,0|rs3s3z,10,10,0|rs3s40,11,11,1|s39mrz,11,11,1|s39ms0,10,10,0|sb6tfz,10,10,0|sb6tg0,11,11,1|slzpfz,11,11,1|slzpg0,10,10,0|stww3z,10,10,0|stww40,11,11,1|t4ps3z,11,11,1|t4ps40,10,10,0|tcmyrz,10,10,0|tcmys0,11,11,1|tnfurz,11,11,1|tnfus0,10,10,0|tvd1fz,10,10,0|tvd1g0,11,11,1|u6iw3z,11,11,1|u6iw40,10,10,0|ue343z,10,10,0|ue3440,11,11,1|up8yrz,11,11,1|up8ys0,10,10,0|uwt6rz,10,10,0|uwt6s0,11,11,1|v7z1fz,11,11,1|v7z1g0,10,10,0|vfw83z,10,10,0|vfw840,11,11,1|vqp43z,11,11,1|vqp440,10,10,0|vymarz,10,10,0|vymas0,11,11,1|w9f6rz,11,11,1|w9f6s0,10,10,0|whcdfz,10,10,0|whcdg0,11,11,1|wsi83z,11,11,1|wsi840,10,10,0|x02g3z,10,10,0|x02g40,11,11,1|xb8arz,11,11,1|xb8as0,10,10,0|xisirz,10,10,0|xisis0,11,11,1|xtydfz,11,11,1|xtydg0,10,10,0|y1ilfz,10,10,0|y1ilg0,11,11,1|ycog3z,11,11,1|ycog40,10,10,0|yklmrz,10,10,0|yklms0,11,11,1|yveirz,11,11,1|yveis0,10,10,0|z3bpfz,10,10,0|z3bpg0,11,11,1|ze4lfz,11,11,1|ze4lg0,10,10,0\",\"Europe/Sarajevo|,0,332,0|-18vsmgo,10,10,0|-ezayw1,10,10,0|-ezayw0,11,11,1|-e6dzw1,11,11,1|-e6dzw0,10,10,0|-dytrw1,10,10,0|-dytrw0,11,11,1|-dp3rw1,11,11,1|-dp3rw0,10,10,0|-dfqqk1,10,10,0|-dfqqk0,11,11,1|-d6dp81,11,11,1|-d6dp80,10,10,0|-cv5zw1,10,10,0|-cv5zw0,11,11,1|-cofek1,11,11,1|-cofek0,10,10,0|6wm2rz,10,10,0|6wm2s0,11,11,1|75z43z,11,11,1|75z440,10,10,0|7fc5fz,10,10,0|7fc5g0,11,11,1|7p25fz,11,11,1|7p25g0,10,10,0|7yf6rz,10,10,0|7yf6s0,11,11,1|87s83z,11,11,1|87s840,10,10,0|8h59fz,10,10,0|8h59g0,11,11,1|8qiarz,11,11,1|8qias0,10,10,0|8zvc3z,10,10,0|8zvc40,11,11,1|998dfz,11,11,1|998dg0,10,10,0|9ilerz,10,10,0|9iles0,11,11,1|9ryg3z,11,11,1|9ryg40,10,10,0|a1bhfz,10,10,0|a1bhg0,11,11,1|aaoirz,11,11,1|aaois0,10,10,0|ak1k3z,10,10,0|ak1k40,11,11,1|atrk3z,11,11,1|atrk40,10,10,0|b34lfz,10,10,0|b34lg0,11,11,1|bchmrz,11,11,1|bchms0,10,10,0|bluo3z,10,10,0|bluo40,11,11,1|bv7pfz,11,11,1|bv7pg0,10,10,0|c4kqrz,10,10,0|c4kqs0,11,11,1|cdxs3z,11,11,1|cdxs40,10,10,0|cnatfz,10,10,0|cnatg0,11,11,1|cwnurz,11,11,1|cwnus0,10,10,0|d60w3z,10,10,0|d60w40,11,11,1|dfdxfz,11,11,1|dfdxg0,10,10,0|dp3xfz,10,10,0|dp3xg0,11,11,1|dzwtfz,11,11,1|dzwtg0,10,10,0|e7u03z,10,10,0|e7u040,11,11,1|eimw3z,11,11,1|eimw40,10,10,0|eqk2rz,10,10,0|eqk2s0,11,11,1|f1cyrz,11,11,1|f1cys0,10,10,0|f9a5fz,10,10,0|f9a5g0,11,11,1|fkg03z,11,11,1|fkg040,10,10,0|fs083z,10,10,0|fs0840,11,11,1|g362rz,11,11,1|g362s0,10,10,0|gaqarz,10,10,0|gaqas0,11,11,1|glw5fz,11,11,1|glw5g0,10,10,0|gttc3z,10,10,0|gttc40,11,11,1|h4m83z,11,11,1|h4m840,10,10,0|hcjerz,10,10,0|hcjes0,11,11,1|hncarz,11,11,1|hncas0,10,10,0|hv9hfz,10,10,0|hv9hg0,11,11,1|i6fc3z,11,11,1|i6fc40,10,10,0|idzk3z,10,10,0|idzk40,11,11,1|ip5erz,11,11,1|ip5es0,10,10,0|iwpmrz,10,10,0|iwpms0,11,11,1|j7vhfz,11,11,1|j7vhg0,10,10,0|jffpfz,10,10,0|jffpg0,11,11,1|jqlk3z,11,11,1|jqlk40,10,10,0|jyiqrz,10,10,0|jyiqs0,11,11,1|k9bmrz,11,11,1|k9bms0,10,10,0|kh8tfz,10,10,0|kh8tg0,11,11,1|ks1pfz,11,11,1|ks1pg0,10,10,0|kzyw3z,10,10,0|kzyw40,11,11,1|lb4qrz,11,11,1|lb4qs0,10,10,0|lioyrz,10,10,0|lioys0,11,11,1|ltutfz,11,11,1|ltutg0,10,10,0|m1f1fz,10,10,0|m1f1g0,11,11,1|mckw3z,11,11,1|mckw40,10,10,0|mki2rz,10,10,0|mki2s0,11,11,1|mvayrz,11,11,1|mvays0,10,10,0|n385fz,10,10,0|n385g0,11,11,1|ne11fz,11,11,1|ne11g0,10,10,0|nly83z,10,10,0|nly840,11,11,1|nwr43z,11,11,1|nwr440,10,10,0|o4oarz,10,10,0|o4oas0,11,11,1|ofu5fz,11,11,1|ofu5g0,10,10,0|onedfz,10,10,0|onedg0,11,11,1|oyk83z,11,11,1|oyk840,10,10,0|p64g3z,10,10,0|p64g40,11,11,1|phaarz,11,11,1|phaas0,10,10,0|pp7hfz,10,10,0|pp7hg0,11,11,1|q00dfz,11,11,1|q00dg0,10,10,0|q7xk3z,10,10,0|q7xk40,11,11,1|qiqg3z,11,11,1|qiqg40,10,10,0|qqnmrz,10,10,0|qqnms0,11,11,1|r1thfz,11,11,1|r1thg0,10,10,0|r9dpfz,10,10,0|r9dpg0,11,11,1|rkjk3z,11,11,1|rkjk40,10,10,0|rs3s3z,10,10,0|rs3s40,11,11,1|s39mrz,11,11,1|s39ms0,10,10,0|sb6tfz,10,10,0|sb6tg0,11,11,1|slzpfz,11,11,1|slzpg0,10,10,0|stww3z,10,10,0|stww40,11,11,1|t4ps3z,11,11,1|t4ps40,10,10,0|tcmyrz,10,10,0|tcmys0,11,11,1|tnfurz,11,11,1|tnfus0,10,10,0|tvd1fz,10,10,0|tvd1g0,11,11,1|u6iw3z,11,11,1|u6iw40,10,10,0|ue343z,10,10,0|ue3440,11,11,1|up8yrz,11,11,1|up8ys0,10,10,0|uwt6rz,10,10,0|uwt6s0,11,11,1|v7z1fz,11,11,1|v7z1g0,10,10,0|vfw83z,10,10,0|vfw840,11,11,1|vqp43z,11,11,1|vqp440,10,10,0|vymarz,10,10,0|vymas0,11,11,1|w9f6rz,11,11,1|w9f6s0,10,10,0|whcdfz,10,10,0|whcdg0,11,11,1|wsi83z,11,11,1|wsi840,10,10,0|x02g3z,10,10,0|x02g40,11,11,1|xb8arz,11,11,1|xb8as0,10,10,0|xisirz,10,10,0|xisis0,11,11,1|xtydfz,11,11,1|xtydg0,10,10,0|y1ilfz,10,10,0|y1ilg0,11,11,1|ycog3z,11,11,1|ycog40,10,10,0|yklmrz,10,10,0|yklms0,11,11,1|yveirz,11,11,1|yveis0,10,10,0|z3bpfz,10,10,0|z3bpg0,11,11,1|ze4lfz,11,11,1|ze4lg0,10,10,0\",\"Europe/Saratov|,0,367,0|-qcx400,100,6,0|-kmr4c1,100,6,0|-kmr4c0,105,209,0|5vb3jz,105,209,0|5vb3k0,92,194,1|64pwrz,92,194,1|64pws0,105,209,0|6e30vz,105,209,0|6e30w0,92,194,1|6nhu3z,92,194,1|6nhu40,105,209,0|6wuy7z,105,209,0|6wuy80,92,194,1|769rfz,92,194,1|769rg0,105,209,0|7foq7z,105,209,0|7foq80,92,194,1|7p1x3z,92,194,1|7p1x40,105,209,0|7yeyfz,105,209,0|7yeyg0,92,194,1|87rzrz,92,194,1|87rzs0,105,209,0|8h513z,105,209,0|8h5140,92,194,1|8qi2fz,92,194,1|8qi2g0,105,209,0|8zv3rz,105,209,0|8zv3s0,92,194,1|99853z,92,194,1|998540,105,209,0|9il6fz,105,209,0|9il6g0,105,209,1|9ryajz,105,209,1|9ryak0,100,6,0|a1bbvz,100,6,0|a1bbw0,105,209,1|aaod7z,105,209,1|aaod80,100,6,0|ak1ejz,100,6,0|ak1ek0,105,209,1|atrejz,105,209,1|atrek0,100,6,0|b34fvz,100,6,0|b34fw0,105,209,0|blufrz,105,209,0|blufs0,105,209,1|bv7jvz,105,209,1|bv7jw0,100,6,0|c4kl7z,100,6,0|c4kl80,105,209,1|cdxmjz,105,209,1|cdxmk0,100,6,0|cnanvz,100,6,0|cnanw0,105,209,1|cwnp7z,105,209,1|cwnp80,100,6,0|d60qjz,100,6,0|d60qk0,105,209,1|dfdrvz,105,209,1|dfdrw0,100,6,0|dp3rvz,100,6,0|dp3rw0,105,209,1|dzwnvz,105,209,1|dzwnw0,100,6,0|e7tujz,100,6,0|e7tuk0,105,209,1|eimqjz,105,209,1|eimqk0,100,6,0|eqjx7z,100,6,0|eqjx80,105,209,1|f1ct7z,105,209,1|f1ct80,100,6,0|f99zvz,100,6,0|f99zw0,105,209,1|fkfujz,105,209,1|fkfuk0,100,6,0|fs02jz,100,6,0|fs02k0,105,209,1|g35x7z,105,209,1|g35x80,100,6,0|gaq57z,100,6,0|gaq580,105,209,1|glvzvz,105,209,1|glvzw0,100,6,0|gtt6jz,100,6,0|gtt6k0,105,209,1|h4m2jz,105,209,1|h4m2k0,100,6,0|hcj97z,100,6,0|hcj980,105,209,1|hnc57z,105,209,1|hnc580,100,6,0|hv9bvz,100,6,0|hv9bw0,105,209,1|i6f6jz,105,209,1|i6f6k0,100,6,0|idzejz,100,6,0|idzek0,105,209,1|ip597z,105,209,1|ip5980,100,6,0|iwph7z,100,6,0|iwph80,105,209,1|j7vbvz,105,209,1|j7vbw0,100,6,0|jffjvz,100,6,0|jffjw0,105,209,1|jqlejz,105,209,1|jqlek0,100,6,0|jyil7z,100,6,0|jyil80,105,209,1|k9bh7z,105,209,1|k9bh80,100,6,0|kh8nvz,100,6,0|kh8nw0,105,209,1|ks1jvz,105,209,1|ks1jw0,100,6,0|kzyqjz,100,6,0|kzyqk0,105,209,1|lb4l7z,105,209,1|lb4l80,100,6,0|liot7z,100,6,0|liot80,105,209,0|ne0t3z,105,209,0|ne0t40,100,6,0|ohmt7z,100,6,0|ohmt80,105,209,0\",\"Europe/Simferopol|,0,368,0|-1ayy8zc,85,369,0|-nu12ap,85,369,0|-nu12ao,15,11,0|-kmr1k1,15,11,0|-kmr1k0,148,6,0|-ep8301,148,6,0|-ep8300,11,11,1|-e6dzw1,11,11,1|-e6dzw0,10,10,0|-dytrw1,10,10,0|-dytrw0,11,11,1|-dp3rw1,11,11,1|-dp3rw0,10,10,0|-dfqqk1,10,10,0|-dfqqk0,11,11,1|-df8g81,11,11,1|-df8g80,148,6,0|5vb6bz,148,6,0|5vb6c0,149,209,1|64pzjz,149,209,1|64pzk0,148,6,0|6e33nz,148,6,0|6e33o0,149,209,1|6nhwvz,149,209,1|6nhww0,148,6,0|6wv0zz,148,6,0|6wv100,149,209,1|769u7z,149,209,1|769u80,148,6,0|7foszz,148,6,0|7fot00,149,209,1|7p1zvz,149,209,1|7p1zw0,148,6,0|7yf17z,148,6,0|7yf180,149,209,1|87s2jz,149,209,1|87s2k0,148,6,0|8h53vz,148,6,0|8h53w0,149,209,1|8qi57z,149,209,1|8qi580,148,6,0|8zv6jz,148,6,0|8zv6k0,149,209,1|9987vz,149,209,1|9987w0,148,6,0|9il97z,148,6,0|9il980,149,209,1|9ryajz,149,209,1|9ryak0,148,6,0|a1bbvz,148,6,0|a1bbw0,149,209,1|aaod7z,149,209,1|aaod80,148,6,0|ap2vvz,148,6,0|ap2vw0,15,11,0|blufrz,15,11,0|blufs0,16,6,1|bv7ebz,16,6,1|bv7ec0,15,11,0|c4kifz,15,11,0|c4kig0,16,6,1|cdxgzz,16,6,1|cdxh00,15,11,0|cnal3z,15,11,0|cnal40,16,6,1|cp3bnz,16,6,1|cp3bo0,149,209,1|cwngvz,149,209,1|cwngw0,148,6,0|d60kzz,148,6,0|d60l00,149,209,1|dfdjjz,149,209,1|dfdjk0,148,6,0|dp3mbz,148,6,0|dp3mc0,149,209,1|dzwqnz,149,209,1|dzwqo0,148,6,0|e7u03z,148,6,0|e7u040,16,6,1|eimw3z,16,6,1|eimw40,15,11,0|eqk2rz,15,11,0|eqk2s0,16,6,1|f1cyrz,16,6,1|f1cys0,15,11,0|f9a5fz,15,11,0|f9a5g0,16,6,1|fkg03z,16,6,1|fkg040,15,11,0|fs083z,15,11,0|fs0840,16,6,1|g362rz,16,6,1|g362s0,15,11,0|gaqarz,15,11,0|gaqas0,16,6,1|glw5fz,16,6,1|glw5g0,15,11,0|gttc3z,15,11,0|gttc40,16,6,1|h4m83z,16,6,1|h4m840,15,11,0|hcjerz,15,11,0|hcjes0,16,6,1|hncarz,16,6,1|hncas0,15,11,0|hv9hfz,15,11,0|hv9hg0,16,6,1|i6fc3z,16,6,1|i6fc40,15,11,0|idzk3z,15,11,0|idzk40,16,6,1|ip5erz,16,6,1|ip5es0,15,11,0|iwpmrz,15,11,0|iwpms0,16,6,1|j7vhfz,16,6,1|j7vhg0,15,11,0|jffpfz,15,11,0|jffpg0,16,6,1|jqlk3z,16,6,1|jqlk40,15,11,0|jyiqrz,15,11,0|jyiqs0,16,6,1|k9bmrz,16,6,1|k9bms0,15,11,0|kh8tfz,15,11,0|kh8tg0,16,6,1|ks1pfz,16,6,1|ks1pg0,15,11,0|kzyw3z,15,11,0|kzyw40,16,6,1|lb4qrz,16,6,1|lb4qs0,15,11,0|lioyrz,15,11,0|lioys0,16,6,1|ltutfz,16,6,1|ltutg0,15,11,0|m1f1fz,15,11,0|m1f1g0,16,6,1|mckw3z,16,6,1|mckw40,15,11,0|mki2rz,15,11,0|mki2s0,16,6,1|mvayrz,16,6,1|mvays0,15,11,0|n382nz,15,11,0|n382o0,148,209,0|ne0t3z,148,209,0|ne0t40,148,6,0\",\"Europe/Skopje|,0,332,0|-18vsmgo,10,10,0|-ezayw1,10,10,0|-ezayw0,11,11,1|-e6dzw1,11,11,1|-e6dzw0,10,10,0|-dytrw1,10,10,0|-dytrw0,11,11,1|-dp3rw1,11,11,1|-dp3rw0,10,10,0|-dfqqk1,10,10,0|-dfqqk0,11,11,1|-d6dp81,11,11,1|-d6dp80,10,10,0|-cv5zw1,10,10,0|-cv5zw0,11,11,1|-cofek1,11,11,1|-cofek0,10,10,0|6wm2rz,10,10,0|6wm2s0,11,11,1|75z43z,11,11,1|75z440,10,10,0|7fc5fz,10,10,0|7fc5g0,11,11,1|7p25fz,11,11,1|7p25g0,10,10,0|7yf6rz,10,10,0|7yf6s0,11,11,1|87s83z,11,11,1|87s840,10,10,0|8h59fz,10,10,0|8h59g0,11,11,1|8qiarz,11,11,1|8qias0,10,10,0|8zvc3z,10,10,0|8zvc40,11,11,1|998dfz,11,11,1|998dg0,10,10,0|9ilerz,10,10,0|9iles0,11,11,1|9ryg3z,11,11,1|9ryg40,10,10,0|a1bhfz,10,10,0|a1bhg0,11,11,1|aaoirz,11,11,1|aaois0,10,10,0|ak1k3z,10,10,0|ak1k40,11,11,1|atrk3z,11,11,1|atrk40,10,10,0|b34lfz,10,10,0|b34lg0,11,11,1|bchmrz,11,11,1|bchms0,10,10,0|bluo3z,10,10,0|bluo40,11,11,1|bv7pfz,11,11,1|bv7pg0,10,10,0|c4kqrz,10,10,0|c4kqs0,11,11,1|cdxs3z,11,11,1|cdxs40,10,10,0|cnatfz,10,10,0|cnatg0,11,11,1|cwnurz,11,11,1|cwnus0,10,10,0|d60w3z,10,10,0|d60w40,11,11,1|dfdxfz,11,11,1|dfdxg0,10,10,0|dp3xfz,10,10,0|dp3xg0,11,11,1|dzwtfz,11,11,1|dzwtg0,10,10,0|e7u03z,10,10,0|e7u040,11,11,1|eimw3z,11,11,1|eimw40,10,10,0|eqk2rz,10,10,0|eqk2s0,11,11,1|f1cyrz,11,11,1|f1cys0,10,10,0|f9a5fz,10,10,0|f9a5g0,11,11,1|fkg03z,11,11,1|fkg040,10,10,0|fs083z,10,10,0|fs0840,11,11,1|g362rz,11,11,1|g362s0,10,10,0|gaqarz,10,10,0|gaqas0,11,11,1|glw5fz,11,11,1|glw5g0,10,10,0|gttc3z,10,10,0|gttc40,11,11,1|h4m83z,11,11,1|h4m840,10,10,0|hcjerz,10,10,0|hcjes0,11,11,1|hncarz,11,11,1|hncas0,10,10,0|hv9hfz,10,10,0|hv9hg0,11,11,1|i6fc3z,11,11,1|i6fc40,10,10,0|idzk3z,10,10,0|idzk40,11,11,1|ip5erz,11,11,1|ip5es0,10,10,0|iwpmrz,10,10,0|iwpms0,11,11,1|j7vhfz,11,11,1|j7vhg0,10,10,0|jffpfz,10,10,0|jffpg0,11,11,1|jqlk3z,11,11,1|jqlk40,10,10,0|jyiqrz,10,10,0|jyiqs0,11,11,1|k9bmrz,11,11,1|k9bms0,10,10,0|kh8tfz,10,10,0|kh8tg0,11,11,1|ks1pfz,11,11,1|ks1pg0,10,10,0|kzyw3z,10,10,0|kzyw40,11,11,1|lb4qrz,11,11,1|lb4qs0,10,10,0|lioyrz,10,10,0|lioys0,11,11,1|ltutfz,11,11,1|ltutg0,10,10,0|m1f1fz,10,10,0|m1f1g0,11,11,1|mckw3z,11,11,1|mckw40,10,10,0|mki2rz,10,10,0|mki2s0,11,11,1|mvayrz,11,11,1|mvays0,10,10,0|n385fz,10,10,0|n385g0,11,11,1|ne11fz,11,11,1|ne11g0,10,10,0|nly83z,10,10,0|nly840,11,11,1|nwr43z,11,11,1|nwr440,10,10,0|o4oarz,10,10,0|o4oas0,11,11,1|ofu5fz,11,11,1|ofu5g0,10,10,0|onedfz,10,10,0|onedg0,11,11,1|oyk83z,11,11,1|oyk840,10,10,0|p64g3z,10,10,0|p64g40,11,11,1|phaarz,11,11,1|phaas0,10,10,0|pp7hfz,10,10,0|pp7hg0,11,11,1|q00dfz,11,11,1|q00dg0,10,10,0|q7xk3z,10,10,0|q7xk40,11,11,1|qiqg3z,11,11,1|qiqg40,10,10,0|qqnmrz,10,10,0|qqnms0,11,11,1|r1thfz,11,11,1|r1thg0,10,10,0|r9dpfz,10,10,0|r9dpg0,11,11,1|rkjk3z,11,11,1|rkjk40,10,10,0|rs3s3z,10,10,0|rs3s40,11,11,1|s39mrz,11,11,1|s39ms0,10,10,0|sb6tfz,10,10,0|sb6tg0,11,11,1|slzpfz,11,11,1|slzpg0,10,10,0|stww3z,10,10,0|stww40,11,11,1|t4ps3z,11,11,1|t4ps40,10,10,0|tcmyrz,10,10,0|tcmys0,11,11,1|tnfurz,11,11,1|tnfus0,10,10,0|tvd1fz,10,10,0|tvd1g0,11,11,1|u6iw3z,11,11,1|u6iw40,10,10,0|ue343z,10,10,0|ue3440,11,11,1|up8yrz,11,11,1|up8ys0,10,10,0|uwt6rz,10,10,0|uwt6s0,11,11,1|v7z1fz,11,11,1|v7z1g0,10,10,0|vfw83z,10,10,0|vfw840,11,11,1|vqp43z,11,11,1|vqp440,10,10,0|vymarz,10,10,0|vymas0,11,11,1|w9f6rz,11,11,1|w9f6s0,10,10,0|whcdfz,10,10,0|whcdg0,11,11,1|wsi83z,11,11,1|wsi840,10,10,0|x02g3z,10,10,0|x02g40,11,11,1|xb8arz,11,11,1|xb8as0,10,10,0|xisirz,10,10,0|xisis0,11,11,1|xtydfz,11,11,1|xtydg0,10,10,0|y1ilfz,10,10,0|y1ilg0,11,11,1|ycog3z,11,11,1|ycog40,10,10,0|yklmrz,10,10,0|yklms0,11,11,1|yveirz,11,11,1|yveis0,10,10,0|z3bpfz,10,10,0|z3bpg0,11,11,1|ze4lfz,11,11,1|ze4lg0,10,10,0\",\"Europe/Sofia|,0,370,0|-1ayy6zg,117,350,0|-136r6qx,117,350,0|-136r6qw,15,11,0|-e6dzw1,15,11,0|-e6dzw0,10,10,0|-dytrw1,10,10,0|-dytrw0,11,11,1|-dp3rw1,11,11,1|-dp3rw0,10,10,0|-dfqqk1,10,10,0|-dfqqk0,11,11,1|-d6dp81,11,11,1|-d6dp80,10,10,0|-cx0l41,10,10,0|-cx0l40,15,11,0|4tpgzz,15,11,0|4tph00,16,6,1|534frz,16,6,1|534fs0,15,11,0|5csibz,15,11,0|5csic0,16,6,1|5luifz,16,6,1|5luig0,15,11,0|5vikzz,15,11,0|5vil00,16,6,1|64it7z,16,6,1|64it80,15,11,0|6e8nnz,15,11,0|6e8no0,16,6,1|6n8ynz,16,6,1|6n8yo0,15,11,0|6wlzzz,15,11,0|6wm000,16,6,1|75z1bz,16,6,1|75z1c0,15,11,0|7fc2nz,15,11,0|7fc2o0,16,6,1|7p22nz,16,6,1|7p22o0,15,11,0|7yf3zz,15,11,0|7yf400,16,6,1|87s5bz,16,6,1|87s5c0,15,11,0|8h56nz,15,11,0|8h56o0,16,6,1|8qi7zz,16,6,1|8qi800,15,11,0|8zv9bz,15,11,0|8zv9c0,16,6,1|998anz,16,6,1|998ao0,15,11,0|9ilbzz,15,11,0|9ilc00,16,6,1|9rydbz,16,6,1|9rydc0,15,11,0|a1benz,15,11,0|a1beo0,16,6,1|aaofzz,16,6,1|aaog00,15,11,0|ak1hbz,15,11,0|ak1hc0,16,6,1|atrhbz,16,6,1|atrhc0,15,11,0|b34d3z,15,11,0|b34d40,16,6,1|bchbnz,16,6,1|bchbo0,15,11,0|blufrz,15,11,0|blufs0,16,6,1|bv7ebz,16,6,1|bv7ec0,15,11,0|c4kifz,15,11,0|c4kig0,16,6,1|cdxgzz,16,6,1|cdxh00,15,11,0|cnal3z,15,11,0|cnal40,16,6,1|cwnjnz,16,6,1|cwnjo0,15,11,0|d60nrz,15,11,0|d60ns0,16,6,1|dfdmbz,16,6,1|dfdmc0,15,11,0|dp3p3z,15,11,0|dp3p40,16,6,1|dzwibz,16,6,1|dzwic0,15,11,0|e7u03z,15,11,0|e7u040,16,6,1|eimw3z,16,6,1|eimw40,15,11,0|eqk2rz,15,11,0|eqk2s0,16,6,1|f1cyrz,16,6,1|f1cys0,15,11,0|f9a5fz,15,11,0|f9a5g0,16,6,1|fkg03z,16,6,1|fkg040,15,11,0|fs083z,15,11,0|fs0840,16,6,1|g362rz,16,6,1|g362s0,15,11,0|gaqarz,15,11,0|gaqas0,16,6,1|glw5fz,16,6,1|glw5g0,15,11,0|gttc3z,15,11,0|gttc40,16,6,1|h4m83z,16,6,1|h4m840,15,11,0|hcjerz,15,11,0|hcjes0,16,6,1|hncarz,16,6,1|hncas0,15,11,0|hv9hfz,15,11,0|hv9hg0,16,6,1|i6fc3z,16,6,1|i6fc40,15,11,0|idzk3z,15,11,0|idzk40,16,6,1|ip5erz,16,6,1|ip5es0,15,11,0|iwpmrz,15,11,0|iwpms0,16,6,1|j7vhfz,16,6,1|j7vhg0,15,11,0|jffpfz,15,11,0|jffpg0,16,6,1|jqlk3z,16,6,1|jqlk40,15,11,0|jyiqrz,15,11,0|jyiqs0,16,6,1|k9bmrz,16,6,1|k9bms0,15,11,0|kh8tfz,15,11,0|kh8tg0,16,6,1|ks1pfz,16,6,1|ks1pg0,15,11,0|kzyw3z,15,11,0|kzyw40,16,6,1|lb4qrz,16,6,1|lb4qs0,15,11,0|lioyrz,15,11,0|lioys0,16,6,1|ltutfz,16,6,1|ltutg0,15,11,0|m1f1fz,15,11,0|m1f1g0,16,6,1|mckw3z,16,6,1|mckw40,15,11,0|mki2rz,15,11,0|mki2s0,16,6,1|mvayrz,16,6,1|mvays0,15,11,0|n385fz,15,11,0|n385g0,16,6,1|ne11fz,16,6,1|ne11g0,15,11,0|nly83z,15,11,0|nly840,16,6,1|nwr43z,16,6,1|nwr440,15,11,0|o4oarz,15,11,0|o4oas0,16,6,1|ofu5fz,16,6,1|ofu5g0,15,11,0|onedfz,15,11,0|onedg0,16,6,1|oyk83z,16,6,1|oyk840,15,11,0|p64g3z,15,11,0|p64g40,16,6,1|phaarz,16,6,1|phaas0,15,11,0|pp7hfz,15,11,0|pp7hg0,16,6,1|q00dfz,16,6,1|q00dg0,15,11,0|q7xk3z,15,11,0|q7xk40,16,6,1|qiqg3z,16,6,1|qiqg40,15,11,0|qqnmrz,15,11,0|qqnms0,16,6,1|r1thfz,16,6,1|r1thg0,15,11,0|r9dpfz,15,11,0|r9dpg0,16,6,1|rkjk3z,16,6,1|rkjk40,15,11,0|rs3s3z,15,11,0|rs3s40,16,6,1|s39mrz,16,6,1|s39ms0,15,11,0|sb6tfz,15,11,0|sb6tg0,16,6,1|slzpfz,16,6,1|slzpg0,15,11,0|stww3z,15,11,0|stww40,16,6,1|t4ps3z,16,6,1|t4ps40,15,11,0|tcmyrz,15,11,0|tcmys0,16,6,1|tnfurz,16,6,1|tnfus0,15,11,0|tvd1fz,15,11,0|tvd1g0,16,6,1|u6iw3z,16,6,1|u6iw40,15,11,0|ue343z,15,11,0|ue3440,16,6,1|up8yrz,16,6,1|up8ys0,15,11,0|uwt6rz,15,11,0|uwt6s0,16,6,1|v7z1fz,16,6,1|v7z1g0,15,11,0|vfw83z,15,11,0|vfw840,16,6,1|vqp43z,16,6,1|vqp440,15,11,0|vymarz,15,11,0|vymas0,16,6,1|w9f6rz,16,6,1|w9f6s0,15,11,0|whcdfz,15,11,0|whcdg0,16,6,1|wsi83z,16,6,1|wsi840,15,11,0|x02g3z,15,11,0|x02g40,16,6,1|xb8arz,16,6,1|xb8as0,15,11,0|xisirz,15,11,0|xisis0,16,6,1|xtydfz,16,6,1|xtydg0,15,11,0|y1ilfz,15,11,0|y1ilg0,16,6,1|ycog3z,16,6,1|ycog40,15,11,0|yklmrz,15,11,0|yklms0,16,6,1|yveirz,16,6,1|yveis0,15,11,0|z3bpfz,15,11,0|z3bpg0,16,6,1|ze4lfz,16,6,1|ze4lg0,15,11,0\",\"Europe/Stockholm|,0,371,0|-1bhq3cc,155,372,0|-10j6dgf,155,372,0|-10j6dge,10,10,0|-rzo2w1,10,10,0|-rzo2w0,11,11,1|-rsilg1,11,11,1|-rsilg0,10,10,0|5cstfz,10,10,0|5cstg0,11,11,1|5lsw3z,11,11,1|5lsw40,10,10,0|5v5xfz,10,10,0|5v5xg0,11,11,1|64iyrz,11,11,1|64iys0,10,10,0|6dw03z,10,10,0|6dw040,11,11,1|6n91fz,11,11,1|6n91g0,10,10,0|6wm2rz,10,10,0|6wm2s0,11,11,1|75z43z,11,11,1|75z440,10,10,0|7fc5fz,10,10,0|7fc5g0,11,11,1|7p25fz,11,11,1|7p25g0,10,10,0|7yf6rz,10,10,0|7yf6s0,11,11,1|87s83z,11,11,1|87s840,10,10,0|8h59fz,10,10,0|8h59g0,11,11,1|8qiarz,11,11,1|8qias0,10,10,0|8zvc3z,10,10,0|8zvc40,11,11,1|998dfz,11,11,1|998dg0,10,10,0|9ilerz,10,10,0|9iles0,11,11,1|9ryg3z,11,11,1|9ryg40,10,10,0|a1bhfz,10,10,0|a1bhg0,11,11,1|aaoirz,11,11,1|aaois0,10,10,0|ak1k3z,10,10,0|ak1k40,11,11,1|atrk3z,11,11,1|atrk40,10,10,0|b34lfz,10,10,0|b34lg0,11,11,1|bchmrz,11,11,1|bchms0,10,10,0|bluo3z,10,10,0|bluo40,11,11,1|bv7pfz,11,11,1|bv7pg0,10,10,0|c4kqrz,10,10,0|c4kqs0,11,11,1|cdxs3z,11,11,1|cdxs40,10,10,0|cnatfz,10,10,0|cnatg0,11,11,1|cwnurz,11,11,1|cwnus0,10,10,0|d60w3z,10,10,0|d60w40,11,11,1|dfdxfz,11,11,1|dfdxg0,10,10,0|dp3xfz,10,10,0|dp3xg0,11,11,1|dzwtfz,11,11,1|dzwtg0,10,10,0|e7u03z,10,10,0|e7u040,11,11,1|eimw3z,11,11,1|eimw40,10,10,0|eqk2rz,10,10,0|eqk2s0,11,11,1|f1cyrz,11,11,1|f1cys0,10,10,0|f9a5fz,10,10,0|f9a5g0,11,11,1|fkg03z,11,11,1|fkg040,10,10,0|fs083z,10,10,0|fs0840,11,11,1|g362rz,11,11,1|g362s0,10,10,0|gaqarz,10,10,0|gaqas0,11,11,1|glw5fz,11,11,1|glw5g0,10,10,0|gttc3z,10,10,0|gttc40,11,11,1|h4m83z,11,11,1|h4m840,10,10,0|hcjerz,10,10,0|hcjes0,11,11,1|hncarz,11,11,1|hncas0,10,10,0|hv9hfz,10,10,0|hv9hg0,11,11,1|i6fc3z,11,11,1|i6fc40,10,10,0|idzk3z,10,10,0|idzk40,11,11,1|ip5erz,11,11,1|ip5es0,10,10,0|iwpmrz,10,10,0|iwpms0,11,11,1|j7vhfz,11,11,1|j7vhg0,10,10,0|jffpfz,10,10,0|jffpg0,11,11,1|jqlk3z,11,11,1|jqlk40,10,10,0|jyiqrz,10,10,0|jyiqs0,11,11,1|k9bmrz,11,11,1|k9bms0,10,10,0|kh8tfz,10,10,0|kh8tg0,11,11,1|ks1pfz,11,11,1|ks1pg0,10,10,0|kzyw3z,10,10,0|kzyw40,11,11,1|lb4qrz,11,11,1|lb4qs0,10,10,0|lioyrz,10,10,0|lioys0,11,11,1|ltutfz,11,11,1|ltutg0,10,10,0|m1f1fz,10,10,0|m1f1g0,11,11,1|mckw3z,11,11,1|mckw40,10,10,0|mki2rz,10,10,0|mki2s0,11,11,1|mvayrz,11,11,1|mvays0,10,10,0|n385fz,10,10,0|n385g0,11,11,1|ne11fz,11,11,1|ne11g0,10,10,0|nly83z,10,10,0|nly840,11,11,1|nwr43z,11,11,1|nwr440,10,10,0|o4oarz,10,10,0|o4oas0,11,11,1|ofu5fz,11,11,1|ofu5g0,10,10,0|onedfz,10,10,0|onedg0,11,11,1|oyk83z,11,11,1|oyk840,10,10,0|p64g3z,10,10,0|p64g40,11,11,1|phaarz,11,11,1|phaas0,10,10,0|pp7hfz,10,10,0|pp7hg0,11,11,1|q00dfz,11,11,1|q00dg0,10,10,0|q7xk3z,10,10,0|q7xk40,11,11,1|qiqg3z,11,11,1|qiqg40,10,10,0|qqnmrz,10,10,0|qqnms0,11,11,1|r1thfz,11,11,1|r1thg0,10,10,0|r9dpfz,10,10,0|r9dpg0,11,11,1|rkjk3z,11,11,1|rkjk40,10,10,0|rs3s3z,10,10,0|rs3s40,11,11,1|s39mrz,11,11,1|s39ms0,10,10,0|sb6tfz,10,10,0|sb6tg0,11,11,1|slzpfz,11,11,1|slzpg0,10,10,0|stww3z,10,10,0|stww40,11,11,1|t4ps3z,11,11,1|t4ps40,10,10,0|tcmyrz,10,10,0|tcmys0,11,11,1|tnfurz,11,11,1|tnfus0,10,10,0|tvd1fz,10,10,0|tvd1g0,11,11,1|u6iw3z,11,11,1|u6iw40,10,10,0|ue343z,10,10,0|ue3440,11,11,1|up8yrz,11,11,1|up8ys0,10,10,0|uwt6rz,10,10,0|uwt6s0,11,11,1|v7z1fz,11,11,1|v7z1g0,10,10,0|vfw83z,10,10,0|vfw840,11,11,1|vqp43z,11,11,1|vqp440,10,10,0|vymarz,10,10,0|vymas0,11,11,1|w9f6rz,11,11,1|w9f6s0,10,10,0|whcdfz,10,10,0|whcdg0,11,11,1|wsi83z,11,11,1|wsi840,10,10,0|x02g3z,10,10,0|x02g40,11,11,1|xb8arz,11,11,1|xb8as0,10,10,0|xisirz,10,10,0|xisis0,11,11,1|xtydfz,11,11,1|xtydg0,10,10,0|y1ilfz,10,10,0|y1ilg0,11,11,1|ycog3z,11,11,1|ycog40,10,10,0|yklmrz,10,10,0|yklms0,11,11,1|yveirz,11,11,1|yveis0,10,10,0|z3bpfz,10,10,0|z3bpg0,11,11,1|ze4lfz,11,11,1|ze4lg0,10,10,0\",\"Europe/Tallinn|,0,373,0|-1ayy790,133,373,0|-r3exx1,133,373,0|-r3exx0,10,10,0|-qznjw1,10,10,0|-qznjw0,11,11,1|-qrqd81,11,11,1|-qrqd80,10,10,0|-qcx6s1,10,10,0|-qcx6s0,133,373,0|-peghx1,133,373,0|-peghx0,15,11,0|-fch1k1,15,11,0|-fch1k0,148,6,0|-ern4c1,148,6,0|-ern4c0,11,11,1|-e6dzw1,11,11,1|-e6dzw0,10,10,0|-dytrw1,10,10,0|-dytrw0,11,11,1|-dp3rw1,11,11,1|-dp3rw0,10,10,0|-dfqqk1,10,10,0|-dfqqk0,11,11,1|-d6wg81,11,11,1|-d6wg80,148,6,0|5vb6bz,148,6,0|5vb6c0,149,209,1|64pzjz,149,209,1|64pzk0,148,6,0|6e33nz,148,6,0|6e33o0,149,209,1|6nhwvz,149,209,1|6nhww0,148,6,0|6wv0zz,148,6,0|6wv100,149,209,1|769u7z,149,209,1|769u80,148,6,0|7foszz,148,6,0|7fot00,149,209,1|7p1zvz,149,209,1|7p1zw0,148,6,0|7yf17z,148,6,0|7yf180,149,209,1|87s2jz,149,209,1|87s2k0,148,6,0|8h53vz,148,6,0|8h53w0,149,209,1|8qi57z,149,209,1|8qi580,148,6,0|8zv6jz,148,6,0|8zv6k0,149,209,1|9987vz,149,209,1|9987w0,148,6,0|9il97z,148,6,0|9il980,149,209,1|9ryajz,149,209,1|9ryak0,148,6,0|a1bbvz,148,6,0|a1bbw0,16,6,1|aaofzz,16,6,1|aaog00,15,11,0|ak1hbz,15,11,0|ak1hc0,16,6,1|atrhbz,16,6,1|atrhc0,15,11,0|b34inz,15,11,0|b34io0,16,6,1|bchjzz,16,6,1|bchk00,15,11,0|blulbz,15,11,0|blulc0,16,6,1|bv7mnz,16,6,1|bv7mo0,15,11,0|c4knzz,15,11,0|c4ko00,16,6,1|cdxpbz,16,6,1|cdxpc0,15,11,0|cnaqnz,15,11,0|cnaqo0,16,6,1|cwnrzz,16,6,1|cwns00,15,11,0|d60tbz,15,11,0|d60tc0,16,6,1|dfdunz,16,6,1|dfduo0,15,11,0|dp3unz,15,11,0|dp3uo0,16,6,1|dzwqnz,16,6,1|dzwqo0,15,11,0|e7txbz,15,11,0|e7txc0,16,6,1|eimtbz,16,6,1|eimtc0,15,11,0|eqjzzz,15,11,0|eqk000,16,6,1|f1cyrz,16,6,1|f1cys0,15,11,0|f9a5fz,15,11,0|f9a5g0,16,6,1|fkg03z,16,6,1|fkg040,15,11,0|gttc3z,15,11,0|gttc40,16,6,1|h4m83z,16,6,1|h4m840,15,11,0|hcjerz,15,11,0|hcjes0,16,6,1|hncarz,16,6,1|hncas0,15,11,0|hv9hfz,15,11,0|hv9hg0,16,6,1|i6fc3z,16,6,1|i6fc40,15,11,0|idzk3z,15,11,0|idzk40,16,6,1|ip5erz,16,6,1|ip5es0,15,11,0|iwpmrz,15,11,0|iwpms0,16,6,1|j7vhfz,16,6,1|j7vhg0,15,11,0|jffpfz,15,11,0|jffpg0,16,6,1|jqlk3z,16,6,1|jqlk40,15,11,0|jyiqrz,15,11,0|jyiqs0,16,6,1|k9bmrz,16,6,1|k9bms0,15,11,0|kh8tfz,15,11,0|kh8tg0,16,6,1|ks1pfz,16,6,1|ks1pg0,15,11,0|kzyw3z,15,11,0|kzyw40,16,6,1|lb4qrz,16,6,1|lb4qs0,15,11,0|lioyrz,15,11,0|lioys0,16,6,1|ltutfz,16,6,1|ltutg0,15,11,0|m1f1fz,15,11,0|m1f1g0,16,6,1|mckw3z,16,6,1|mckw40,15,11,0|mki2rz,15,11,0|mki2s0,16,6,1|mvayrz,16,6,1|mvays0,15,11,0|n385fz,15,11,0|n385g0,16,6,1|ne11fz,16,6,1|ne11g0,15,11,0|nly83z,15,11,0|nly840,16,6,1|nwr43z,16,6,1|nwr440,15,11,0|o4oarz,15,11,0|o4oas0,16,6,1|ofu5fz,16,6,1|ofu5g0,15,11,0|onedfz,15,11,0|onedg0,16,6,1|oyk83z,16,6,1|oyk840,15,11,0|p64g3z,15,11,0|p64g40,16,6,1|phaarz,16,6,1|phaas0,15,11,0|pp7hfz,15,11,0|pp7hg0,16,6,1|q00dfz,16,6,1|q00dg0,15,11,0|q7xk3z,15,11,0|q7xk40,16,6,1|qiqg3z,16,6,1|qiqg40,15,11,0|qqnmrz,15,11,0|qqnms0,16,6,1|r1thfz,16,6,1|r1thg0,15,11,0|r9dpfz,15,11,0|r9dpg0,16,6,1|rkjk3z,16,6,1|rkjk40,15,11,0|rs3s3z,15,11,0|rs3s40,16,6,1|s39mrz,16,6,1|s39ms0,15,11,0|sb6tfz,15,11,0|sb6tg0,16,6,1|slzpfz,16,6,1|slzpg0,15,11,0|stww3z,15,11,0|stww40,16,6,1|t4ps3z,16,6,1|t4ps40,15,11,0|tcmyrz,15,11,0|tcmys0,16,6,1|tnfurz,16,6,1|tnfus0,15,11,0|tvd1fz,15,11,0|tvd1g0,16,6,1|u6iw3z,16,6,1|u6iw40,15,11,0|ue343z,15,11,0|ue3440,16,6,1|up8yrz,16,6,1|up8ys0,15,11,0|uwt6rz,15,11,0|uwt6s0,16,6,1|v7z1fz,16,6,1|v7z1g0,15,11,0|vfw83z,15,11,0|vfw840,16,6,1|vqp43z,16,6,1|vqp440,15,11,0|vymarz,15,11,0|vymas0,16,6,1|w9f6rz,16,6,1|w9f6s0,15,11,0|whcdfz,15,11,0|whcdg0,16,6,1|wsi83z,16,6,1|wsi840,15,11,0|x02g3z,15,11,0|x02g40,16,6,1|xb8arz,16,6,1|xb8as0,15,11,0|xisirz,15,11,0|xisis0,16,6,1|xtydfz,16,6,1|xtydg0,15,11,0|y1ilfz,15,11,0|y1ilg0,16,6,1|ycog3z,16,6,1|ycog40,15,11,0|yklmrz,15,11,0|yklms0,16,6,1|yveirz,16,6,1|yveis0,15,11,0|z3bpfz,15,11,0|z3bpg0,16,6,1|ze4lfz,16,6,1|ze4lg0,15,11,0\",\"Europe/Tirane|,0,374,0|-t85vo8,10,10,0|-ff3es1,10,10,0|-ff3es0,11,11,1|-e6dzw1,11,11,1|-e6dzw0,10,10,0|-dytrw1,10,10,0|-dytrw0,11,11,1|-dy7jw1,11,11,1|-dy7jw0,10,10,0|29h97z,10,10,0|29h980,11,11,1|2h8t3z,11,11,1|2h8t40,10,10,0|2s3mjz,10,10,0|2s3mk0,11,11,1|300qfz,11,11,1|300qg0,10,10,0|3az97z,10,10,0|3az980,11,11,1|3iwd3z,11,11,1|3iwd40,10,10,0|3u2ajz,10,10,0|3u2ak0,11,11,1|41mfrz,11,11,1|41mfs0,10,10,0|4cqijz,10,10,0|4cqik0,11,11,1|4kcifz,11,11,1|4kcig0,10,10,0|4vgl7z,10,10,0|4vgl80,11,11,1|532l3z,11,11,1|532l40,10,10,0|5e6nvz,10,10,0|5e6nw0,11,11,1|5m3rrz,11,11,1|5m3rs0,10,10,0|5wlmjz,10,10,0|5wlmk0,11,11,1|64iqfz,11,11,1|64iqg0,10,10,0|6fonvz,10,10,0|6fonw0,11,11,1|6nlrrz,11,11,1|6nlrs0,10,10,0|6xqnvz,10,10,0|6xqnw0,11,11,1|769zrz,11,11,1|769zs0,10,10,0|7foyjz,10,10,0|7foyk0,11,11,1|7p25fz,11,11,1|7p25g0,10,10,0|7yf6rz,10,10,0|7yf6s0,11,11,1|87s83z,11,11,1|87s840,10,10,0|8h59fz,10,10,0|8h59g0,11,11,1|8qiarz,11,11,1|8qias0,10,10,0|8zvc3z,10,10,0|8zvc40,11,11,1|998dfz,11,11,1|998dg0,10,10,0|9ilerz,10,10,0|9iles0,11,11,1|9ryg3z,11,11,1|9ryg40,10,10,0|a1bhfz,10,10,0|a1bhg0,11,11,1|aaoirz,11,11,1|aaois0,10,10,0|ak1k3z,10,10,0|ak1k40,11,11,1|atrk3z,11,11,1|atrk40,10,10,0|b34lfz,10,10,0|b34lg0,11,11,1|bchmrz,11,11,1|bchms0,10,10,0|bluo3z,10,10,0|bluo40,11,11,1|bv7pfz,11,11,1|bv7pg0,10,10,0|c4kqrz,10,10,0|c4kqs0,11,11,1|cdxs3z,11,11,1|cdxs40,10,10,0|cnatfz,10,10,0|cnatg0,11,11,1|cwnurz,11,11,1|cwnus0,10,10,0|d60w3z,10,10,0|d60w40,11,11,1|dfdxfz,11,11,1|dfdxg0,10,10,0|dp3xfz,10,10,0|dp3xg0,11,11,1|dzwtfz,11,11,1|dzwtg0,10,10,0|e7u03z,10,10,0|e7u040,11,11,1|eimw3z,11,11,1|eimw40,10,10,0|eqk2rz,10,10,0|eqk2s0,11,11,1|f1cyrz,11,11,1|f1cys0,10,10,0|f9a5fz,10,10,0|f9a5g0,11,11,1|fkg03z,11,11,1|fkg040,10,10,0|fs083z,10,10,0|fs0840,11,11,1|g362rz,11,11,1|g362s0,10,10,0|gaqarz,10,10,0|gaqas0,11,11,1|glw5fz,11,11,1|glw5g0,10,10,0|gttc3z,10,10,0|gttc40,11,11,1|h4m83z,11,11,1|h4m840,10,10,0|hcjerz,10,10,0|hcjes0,11,11,1|hncarz,11,11,1|hncas0,10,10,0|hv9hfz,10,10,0|hv9hg0,11,11,1|i6fc3z,11,11,1|i6fc40,10,10,0|idzk3z,10,10,0|idzk40,11,11,1|ip5erz,11,11,1|ip5es0,10,10,0|iwpmrz,10,10,0|iwpms0,11,11,1|j7vhfz,11,11,1|j7vhg0,10,10,0|jffpfz,10,10,0|jffpg0,11,11,1|jqlk3z,11,11,1|jqlk40,10,10,0|jyiqrz,10,10,0|jyiqs0,11,11,1|k9bmrz,11,11,1|k9bms0,10,10,0|kh8tfz,10,10,0|kh8tg0,11,11,1|ks1pfz,11,11,1|ks1pg0,10,10,0|kzyw3z,10,10,0|kzyw40,11,11,1|lb4qrz,11,11,1|lb4qs0,10,10,0|lioyrz,10,10,0|lioys0,11,11,1|ltutfz,11,11,1|ltutg0,10,10,0|m1f1fz,10,10,0|m1f1g0,11,11,1|mckw3z,11,11,1|mckw40,10,10,0|mki2rz,10,10,0|mki2s0,11,11,1|mvayrz,11,11,1|mvays0,10,10,0|n385fz,10,10,0|n385g0,11,11,1|ne11fz,11,11,1|ne11g0,10,10,0|nly83z,10,10,0|nly840,11,11,1|nwr43z,11,11,1|nwr440,10,10,0|o4oarz,10,10,0|o4oas0,11,11,1|ofu5fz,11,11,1|ofu5g0,10,10,0|onedfz,10,10,0|onedg0,11,11,1|oyk83z,11,11,1|oyk840,10,10,0|p64g3z,10,10,0|p64g40,11,11,1|phaarz,11,11,1|phaas0,10,10,0|pp7hfz,10,10,0|pp7hg0,11,11,1|q00dfz,11,11,1|q00dg0,10,10,0|q7xk3z,10,10,0|q7xk40,11,11,1|qiqg3z,11,11,1|qiqg40,10,10,0|qqnmrz,10,10,0|qqnms0,11,11,1|r1thfz,11,11,1|r1thg0,10,10,0|r9dpfz,10,10,0|r9dpg0,11,11,1|rkjk3z,11,11,1|rkjk40,10,10,0|rs3s3z,10,10,0|rs3s40,11,11,1|s39mrz,11,11,1|s39ms0,10,10,0|sb6tfz,10,10,0|sb6tg0,11,11,1|slzpfz,11,11,1|slzpg0,10,10,0|stww3z,10,10,0|stww40,11,11,1|t4ps3z,11,11,1|t4ps40,10,10,0|tcmyrz,10,10,0|tcmys0,11,11,1|tnfurz,11,11,1|tnfus0,10,10,0|tvd1fz,10,10,0|tvd1g0,11,11,1|u6iw3z,11,11,1|u6iw40,10,10,0|ue343z,10,10,0|ue3440,11,11,1|up8yrz,11,11,1|up8ys0,10,10,0|uwt6rz,10,10,0|uwt6s0,11,11,1|v7z1fz,11,11,1|v7z1g0,10,10,0|vfw83z,10,10,0|vfw840,11,11,1|vqp43z,11,11,1|vqp440,10,10,0|vymarz,10,10,0|vymas0,11,11,1|w9f6rz,11,11,1|w9f6s0,10,10,0|whcdfz,10,10,0|whcdg0,11,11,1|wsi83z,11,11,1|wsi840,10,10,0|x02g3z,10,10,0|x02g40,11,11,1|xb8arz,11,11,1|xb8as0,10,10,0|xisirz,10,10,0|xisis0,11,11,1|xtydfz,11,11,1|xtydg0,10,10,0|y1ilfz,10,10,0|y1ilg0,11,11,1|ycog3z,11,11,1|ycog40,10,10,0|yklmrz,10,10,0|yklms0,11,11,1|yveirz,11,11,1|yveis0,10,10,0|z3bpfz,10,10,0|z3bpg0,11,11,1|ze4lfz,11,11,1|ze4lg0,10,10,0\",\"Europe/Ulyanovsk|,0,375,0|-qcx400,100,6,0|-kmr4c1,100,6,0|-kmr4c0,105,209,0|5vb3jz,105,209,0|5vb3k0,92,194,1|64pwrz,92,194,1|64pws0,105,209,0|6e30vz,105,209,0|6e30w0,92,194,1|6nhu3z,92,194,1|6nhu40,105,209,0|6wuy7z,105,209,0|6wuy80,92,194,1|769rfz,92,194,1|769rg0,105,209,0|7foq7z,105,209,0|7foq80,92,194,1|7p1x3z,92,194,1|7p1x40,105,209,0|7yeyfz,105,209,0|7yeyg0,92,194,1|87rzrz,92,194,1|87rzs0,105,209,0|8h513z,105,209,0|8h5140,92,194,1|8qi2fz,92,194,1|8qi2g0,105,209,0|8zv3rz,105,209,0|8zv3s0,92,194,1|99853z,92,194,1|998540,105,209,0|9il6fz,105,209,0|9il6g0,92,194,1|9ry7rz,92,194,1|9ry7s0,105,209,0|a1b93z,105,209,0|a1b940,105,209,1|aaod7z,105,209,1|aaod80,100,6,0|ak1ejz,100,6,0|ak1ek0,105,209,1|atrejz,105,209,1|atrek0,100,6,0|b34fvz,100,6,0|b34fw0,100,6,1|bchjzz,100,6,1|bchk00,101,11,0|bi8ynz,101,11,0|bi8yo0,100,6,0|bluijz,100,6,0|bluik0,105,209,1|bv7jvz,105,209,1|bv7jw0,100,6,0|c4kl7z,100,6,0|c4kl80,105,209,1|cdxmjz,105,209,1|cdxmk0,100,6,0|cnanvz,100,6,0|cnanw0,105,209,1|cwnp7z,105,209,1|cwnp80,100,6,0|d60qjz,100,6,0|d60qk0,105,209,1|dfdrvz,105,209,1|dfdrw0,100,6,0|dp3rvz,100,6,0|dp3rw0,105,209,1|dzwnvz,105,209,1|dzwnw0,100,6,0|e7tujz,100,6,0|e7tuk0,105,209,1|eimqjz,105,209,1|eimqk0,100,6,0|eqjx7z,100,6,0|eqjx80,105,209,1|f1ct7z,105,209,1|f1ct80,100,6,0|f99zvz,100,6,0|f99zw0,105,209,1|fkfujz,105,209,1|fkfuk0,100,6,0|fs02jz,100,6,0|fs02k0,105,209,1|g35x7z,105,209,1|g35x80,100,6,0|gaq57z,100,6,0|gaq580,105,209,1|glvzvz,105,209,1|glvzw0,100,6,0|gtt6jz,100,6,0|gtt6k0,105,209,1|h4m2jz,105,209,1|h4m2k0,100,6,0|hcj97z,100,6,0|hcj980,105,209,1|hnc57z,105,209,1|hnc580,100,6,0|hv9bvz,100,6,0|hv9bw0,105,209,1|i6f6jz,105,209,1|i6f6k0,100,6,0|idzejz,100,6,0|idzek0,105,209,1|ip597z,105,209,1|ip5980,100,6,0|iwph7z,100,6,0|iwph80,105,209,1|j7vbvz,105,209,1|j7vbw0,100,6,0|jffjvz,100,6,0|jffjw0,105,209,1|jqlejz,105,209,1|jqlek0,100,6,0|jyil7z,100,6,0|jyil80,105,209,1|k9bh7z,105,209,1|k9bh80,100,6,0|kh8nvz,100,6,0|kh8nw0,105,209,1|ks1jvz,105,209,1|ks1jw0,100,6,0|kzyqjz,100,6,0|kzyqk0,105,209,1|lb4l7z,105,209,1|lb4l80,100,6,0|liot7z,100,6,0|liot80,105,209,0|ne0t3z,105,209,0|ne0t40,100,6,0|o4o57z,100,6,0|o4o580,105,209,0\",\"Europe/Uzhgorod|,0,376,0|-15cztgo,10,10,0|-fizzw1,10,10,0|-fizzw0,11,11,1|-e6dzw1,11,11,1|-e6dzw0,10,10,0|-dytrw1,10,10,0|-dytrw0,11,11,1|-dp3rw1,11,11,1|-dp3rw0,10,10,0|-dfqqk1,10,10,0|-dfqqk0,11,11,1|-d55hk1,11,11,1|-d55hk0,10,10,0|-cshus1,10,10,0|-cshus0,148,6,0|5vb6bz,148,6,0|5vb6c0,149,209,1|64pzjz,149,209,1|64pzk0,148,6,0|6e33nz,148,6,0|6e33o0,149,209,1|6nhwvz,149,209,1|6nhww0,148,6,0|6wv0zz,148,6,0|6wv100,149,209,1|769u7z,149,209,1|769u80,148,6,0|7foszz,148,6,0|7fot00,149,209,1|7p1zvz,149,209,1|7p1zw0,148,6,0|7yf17z,148,6,0|7yf180,149,209,1|87s2jz,149,209,1|87s2k0,148,6,0|8h53vz,148,6,0|8h53w0,149,209,1|8qi57z,149,209,1|8qi580,148,6,0|8zv6jz,148,6,0|8zv6k0,149,209,1|9987vz,149,209,1|9987w0,148,6,0|9il97z,148,6,0|9il980,149,209,1|9ryajz,149,209,1|9ryak0,148,6,0|a1bbvz,148,6,0|a1bbw0,149,209,1|aaod7z,149,209,1|aaod80,148,6,0|ap2vvz,148,6,0|ap2vw0,10,10,0|b34o7z,10,10,0|b34o80,15,11,0|blufrz,15,11,0|blufs0,16,6,1|bv7ebz,16,6,1|bv7ec0,15,11,0|c4kifz,15,11,0|c4kig0,16,6,1|cdxgzz,16,6,1|cdxh00,15,11,0|cnal3z,15,11,0|cnal40,16,6,1|cwnjnz,16,6,1|cwnjo0,15,11,0|d60w3z,15,11,0|d60w40,16,6,1|dfdxfz,16,6,1|dfdxg0,15,11,0|dp3xfz,15,11,0|dp3xg0,16,6,1|dzwtfz,16,6,1|dzwtg0,15,11,0|e7u03z,15,11,0|e7u040,16,6,1|eimw3z,16,6,1|eimw40,15,11,0|eqk2rz,15,11,0|eqk2s0,16,6,1|f1cyrz,16,6,1|f1cys0,15,11,0|f9a5fz,15,11,0|f9a5g0,16,6,1|fkg03z,16,6,1|fkg040,15,11,0|fs083z,15,11,0|fs0840,16,6,1|g362rz,16,6,1|g362s0,15,11,0|gaqarz,15,11,0|gaqas0,16,6,1|glw5fz,16,6,1|glw5g0,15,11,0|gttc3z,15,11,0|gttc40,16,6,1|h4m83z,16,6,1|h4m840,15,11,0|hcjerz,15,11,0|hcjes0,16,6,1|hncarz,16,6,1|hncas0,15,11,0|hv9hfz,15,11,0|hv9hg0,16,6,1|i6fc3z,16,6,1|i6fc40,15,11,0|idzk3z,15,11,0|idzk40,16,6,1|ip5erz,16,6,1|ip5es0,15,11,0|iwpmrz,15,11,0|iwpms0,16,6,1|j7vhfz,16,6,1|j7vhg0,15,11,0|jffpfz,15,11,0|jffpg0,16,6,1|jqlk3z,16,6,1|jqlk40,15,11,0|jyiqrz,15,11,0|jyiqs0,16,6,1|k9bmrz,16,6,1|k9bms0,15,11,0|kh8tfz,15,11,0|kh8tg0,16,6,1|ks1pfz,16,6,1|ks1pg0,15,11,0|kzyw3z,15,11,0|kzyw40,16,6,1|lb4qrz,16,6,1|lb4qs0,15,11,0|lioyrz,15,11,0|lioys0,16,6,1|ltutfz,16,6,1|ltutg0,15,11,0|m1f1fz,15,11,0|m1f1g0,16,6,1|mckw3z,16,6,1|mckw40,15,11,0|mki2rz,15,11,0|mki2s0,16,6,1|mvayrz,16,6,1|mvays0,15,11,0|n385fz,15,11,0|n385g0,16,6,1|ne11fz,16,6,1|ne11g0,15,11,0|nly83z,15,11,0|nly840,16,6,1|nwr43z,16,6,1|nwr440,15,11,0|o4oarz,15,11,0|o4oas0,16,6,1|ofu5fz,16,6,1|ofu5g0,15,11,0|onedfz,15,11,0|onedg0,16,6,1|oyk83z,16,6,1|oyk840,15,11,0|p64g3z,15,11,0|p64g40,16,6,1|phaarz,16,6,1|phaas0,15,11,0|pp7hfz,15,11,0|pp7hg0,16,6,1|q00dfz,16,6,1|q00dg0,15,11,0|q7xk3z,15,11,0|q7xk40,16,6,1|qiqg3z,16,6,1|qiqg40,15,11,0|qqnmrz,15,11,0|qqnms0,16,6,1|r1thfz,16,6,1|r1thg0,15,11,0|r9dpfz,15,11,0|r9dpg0,16,6,1|rkjk3z,16,6,1|rkjk40,15,11,0|rs3s3z,15,11,0|rs3s40,16,6,1|s39mrz,16,6,1|s39ms0,15,11,0|sb6tfz,15,11,0|sb6tg0,16,6,1|slzpfz,16,6,1|slzpg0,15,11,0|stww3z,15,11,0|stww40,16,6,1|t4ps3z,16,6,1|t4ps40,15,11,0|tcmyrz,15,11,0|tcmys0,16,6,1|tnfurz,16,6,1|tnfus0,15,11,0|tvd1fz,15,11,0|tvd1g0,16,6,1|u6iw3z,16,6,1|u6iw40,15,11,0|ue343z,15,11,0|ue3440,16,6,1|up8yrz,16,6,1|up8ys0,15,11,0|uwt6rz,15,11,0|uwt6s0,16,6,1|v7z1fz,16,6,1|v7z1g0,15,11,0|vfw83z,15,11,0|vfw840,16,6,1|vqp43z,16,6,1|vqp440,15,11,0|vymarz,15,11,0|vymas0,16,6,1|w9f6rz,16,6,1|w9f6s0,15,11,0|whcdfz,15,11,0|whcdg0,16,6,1|wsi83z,16,6,1|wsi840,15,11,0|x02g3z,15,11,0|x02g40,16,6,1|xb8arz,16,6,1|xb8as0,15,11,0|xisirz,15,11,0|xisis0,16,6,1|xtydfz,16,6,1|xtydg0,15,11,0|y1ilfz,15,11,0|y1ilg0,16,6,1|ycog3z,16,6,1|ycog40,15,11,0|yklmrz,15,11,0|yklms0,16,6,1|yveirz,16,6,1|yveis0,15,11,0|z3bpfz,15,11,0|z3bpg0,16,6,1|ze4lfz,16,6,1|ze4lg0,15,11,0\",\"Europe/Vaduz|,0,338,0|-1os49kw,53,339,0|-13g441n,53,339,0|-13g441m,10,10,0|-eyh6o1,10,10,0|-eyh6o0,11,11,1|-eqk001,11,11,1|-eqk000,10,10,0|-efr401,10,10,0|-efr400,11,11,1|-e7txc1,11,11,1|-e7txc0,10,10,0|5v5xfz,10,10,0|5v5xg0,11,11,1|64iyrz,11,11,1|64iys0,10,10,0|6dw03z,10,10,0|6dw040,11,11,1|6n91fz,11,11,1|6n91g0,10,10,0|6wm2rz,10,10,0|6wm2s0,11,11,1|75z43z,11,11,1|75z440,10,10,0|7fc5fz,10,10,0|7fc5g0,11,11,1|7p25fz,11,11,1|7p25g0,10,10,0|7yf6rz,10,10,0|7yf6s0,11,11,1|87s83z,11,11,1|87s840,10,10,0|8h59fz,10,10,0|8h59g0,11,11,1|8qiarz,11,11,1|8qias0,10,10,0|8zvc3z,10,10,0|8zvc40,11,11,1|998dfz,11,11,1|998dg0,10,10,0|9ilerz,10,10,0|9iles0,11,11,1|9ryg3z,11,11,1|9ryg40,10,10,0|a1bhfz,10,10,0|a1bhg0,11,11,1|aaoirz,11,11,1|aaois0,10,10,0|ak1k3z,10,10,0|ak1k40,11,11,1|atrk3z,11,11,1|atrk40,10,10,0|b34lfz,10,10,0|b34lg0,11,11,1|bchmrz,11,11,1|bchms0,10,10,0|bluo3z,10,10,0|bluo40,11,11,1|bv7pfz,11,11,1|bv7pg0,10,10,0|c4kqrz,10,10,0|c4kqs0,11,11,1|cdxs3z,11,11,1|cdxs40,10,10,0|cnatfz,10,10,0|cnatg0,11,11,1|cwnurz,11,11,1|cwnus0,10,10,0|d60w3z,10,10,0|d60w40,11,11,1|dfdxfz,11,11,1|dfdxg0,10,10,0|dp3xfz,10,10,0|dp3xg0,11,11,1|dzwtfz,11,11,1|dzwtg0,10,10,0|e7u03z,10,10,0|e7u040,11,11,1|eimw3z,11,11,1|eimw40,10,10,0|eqk2rz,10,10,0|eqk2s0,11,11,1|f1cyrz,11,11,1|f1cys0,10,10,0|f9a5fz,10,10,0|f9a5g0,11,11,1|fkg03z,11,11,1|fkg040,10,10,0|fs083z,10,10,0|fs0840,11,11,1|g362rz,11,11,1|g362s0,10,10,0|gaqarz,10,10,0|gaqas0,11,11,1|glw5fz,11,11,1|glw5g0,10,10,0|gttc3z,10,10,0|gttc40,11,11,1|h4m83z,11,11,1|h4m840,10,10,0|hcjerz,10,10,0|hcjes0,11,11,1|hncarz,11,11,1|hncas0,10,10,0|hv9hfz,10,10,0|hv9hg0,11,11,1|i6fc3z,11,11,1|i6fc40,10,10,0|idzk3z,10,10,0|idzk40,11,11,1|ip5erz,11,11,1|ip5es0,10,10,0|iwpmrz,10,10,0|iwpms0,11,11,1|j7vhfz,11,11,1|j7vhg0,10,10,0|jffpfz,10,10,0|jffpg0,11,11,1|jqlk3z,11,11,1|jqlk40,10,10,0|jyiqrz,10,10,0|jyiqs0,11,11,1|k9bmrz,11,11,1|k9bms0,10,10,0|kh8tfz,10,10,0|kh8tg0,11,11,1|ks1pfz,11,11,1|ks1pg0,10,10,0|kzyw3z,10,10,0|kzyw40,11,11,1|lb4qrz,11,11,1|lb4qs0,10,10,0|lioyrz,10,10,0|lioys0,11,11,1|ltutfz,11,11,1|ltutg0,10,10,0|m1f1fz,10,10,0|m1f1g0,11,11,1|mckw3z,11,11,1|mckw40,10,10,0|mki2rz,10,10,0|mki2s0,11,11,1|mvayrz,11,11,1|mvays0,10,10,0|n385fz,10,10,0|n385g0,11,11,1|ne11fz,11,11,1|ne11g0,10,10,0|nly83z,10,10,0|nly840,11,11,1|nwr43z,11,11,1|nwr440,10,10,0|o4oarz,10,10,0|o4oas0,11,11,1|ofu5fz,11,11,1|ofu5g0,10,10,0|onedfz,10,10,0|onedg0,11,11,1|oyk83z,11,11,1|oyk840,10,10,0|p64g3z,10,10,0|p64g40,11,11,1|phaarz,11,11,1|phaas0,10,10,0|pp7hfz,10,10,0|pp7hg0,11,11,1|q00dfz,11,11,1|q00dg0,10,10,0|q7xk3z,10,10,0|q7xk40,11,11,1|qiqg3z,11,11,1|qiqg40,10,10,0|qqnmrz,10,10,0|qqnms0,11,11,1|r1thfz,11,11,1|r1thg0,10,10,0|r9dpfz,10,10,0|r9dpg0,11,11,1|rkjk3z,11,11,1|rkjk40,10,10,0|rs3s3z,10,10,0|rs3s40,11,11,1|s39mrz,11,11,1|s39ms0,10,10,0|sb6tfz,10,10,0|sb6tg0,11,11,1|slzpfz,11,11,1|slzpg0,10,10,0|stww3z,10,10,0|stww40,11,11,1|t4ps3z,11,11,1|t4ps40,10,10,0|tcmyrz,10,10,0|tcmys0,11,11,1|tnfurz,11,11,1|tnfus0,10,10,0|tvd1fz,10,10,0|tvd1g0,11,11,1|u6iw3z,11,11,1|u6iw40,10,10,0|ue343z,10,10,0|ue3440,11,11,1|up8yrz,11,11,1|up8ys0,10,10,0|uwt6rz,10,10,0|uwt6s0,11,11,1|v7z1fz,11,11,1|v7z1g0,10,10,0|vfw83z,10,10,0|vfw840,11,11,1|vqp43z,11,11,1|vqp440,10,10,0|vymarz,10,10,0|vymas0,11,11,1|w9f6rz,11,11,1|w9f6s0,10,10,0|whcdfz,10,10,0|whcdg0,11,11,1|wsi83z,11,11,1|wsi840,10,10,0|x02g3z,10,10,0|x02g40,11,11,1|xb8arz,11,11,1|xb8as0,10,10,0|xisirz,10,10,0|xisis0,11,11,1|xtydfz,11,11,1|xtydg0,10,10,0|y1ilfz,10,10,0|y1ilg0,11,11,1|ycog3z,11,11,1|ycog40,10,10,0|yklmrz,10,10,0|yklms0,11,11,1|yveirz,11,11,1|yveis0,10,10,0|z3bpfz,10,10,0|z3bpg0,11,11,1|ze4lfz,11,11,1|ze4lg0,10,10,0\",\"Europe/Vatican|,0,365,0|-1hs7rn8,136,365,0|-13r0qs1,136,365,0|-13r0qs0,10,10,0|-rymys1,10,10,0|-rymys0,11,11,1|-rsio81,11,11,1|-rsio80,10,10,0|-rj5k41,10,10,0|-rj5k40,11,11,1|-r9qqw1,11,11,1|-r9qqw0,10,10,0|-r1idg1,10,10,0|-r1idg0,11,11,1|-qqnpk1,11,11,1|-qqnpk0,10,10,0|-qj59g1,10,10,0|-qj59g0,11,11,1|-q7zhk1,11,11,1|-q7zhk0,10,10,0|-pzcas1,10,10,0|-pzcas0,11,11,1|-ppzc81,11,11,1|-ppzc80,10,10,0|-ff59g1,10,10,0|-ff59g0,11,11,1|-e6dzw1,11,11,1|-e6dzw0,10,10,0|-dytrw1,10,10,0|-dytrw0,11,11,1|-dp3rw1,11,11,1|-dp3rw0,10,10,0|-dfqqk1,10,10,0|-dfqqk0,11,11,1|-d75h81,11,11,1|-d75h80,10,10,0|-cx0nw1,10,10,0|-cx0nw0,11,11,1|-cohes1,11,11,1|-cohes0,10,10,0|-cf2d81,10,10,0|-cf2d80,11,11,1|-c4mfw1,11,11,1|-c4mfw0,10,10,0|-bwcg41,10,10,0|-bwcg40,11,11,1|-blwis1,11,11,1|-blwis0,10,10,0|-bec581,10,10,0|-bec580,11,11,1|-b36ak1,11,11,1|-b36ak0,10,10,0|-1vwis1,10,10,0|-1vwis0,11,11,1|-1pf9k1,11,11,1|-1pf9k0,10,10,0|-1cthg1,10,10,0|-1cthg0,11,11,1|-16p441,11,11,1|-16p440,10,10,0|-u3es1,10,10,0|-u3es0,11,11,1|-nz1g1,11,11,1|-nz1g0,10,10,0|-b0dg1,10,10,0|-b0dg0,11,11,1|-4w041,11,11,1|-4w040,10,10,0|7pp7z,10,10,0|7pp80,11,11,1|du2jz,11,11,1|du2k0,10,10,0|q2t7z,10,10,0|q2t80,11,11,1|wk57z,11,11,1|wk580,10,10,0|195ujz,10,10,0|195uk0,11,11,1|1fn6jz,11,11,1|1fn6k0,10,10,0|1s8vvz,10,10,0|1s8vw0,11,11,1|1yd97z,11,11,1|1yd980,10,10,0|2alzvz,10,10,0|2alzw0,11,11,1|2h3bvz,11,11,1|2h3bw0,10,10,0|2tp17z,10,10,0|2tp180,11,11,1|2ztejz,11,11,1|2ztek0,10,10,0|3cf3vz,10,10,0|3cf3w0,11,11,1|3ijh7z,11,11,1|3ijh80,10,10,0|3us7vz,10,10,0|3us7w0,11,11,1|419jvz,11,11,1|419jw0,10,10,0|4dv97z,10,10,0|4dv980,11,11,1|4kcl7z,11,11,1|4kcl80,10,10,0|4wlbvz,10,10,0|4wlbw0,11,11,1|532nvz,11,11,1|532nw0,10,10,0|5cstfz,10,10,0|5cstg0,11,11,1|5lsw3z,11,11,1|5lsw40,10,10,0|5v5xfz,10,10,0|5v5xg0,11,11,1|64iyrz,11,11,1|64iys0,10,10,0|6dw03z,10,10,0|6dw040,11,11,1|6n91fz,11,11,1|6n91g0,10,10,0|6wm2rz,10,10,0|6wm2s0,11,11,1|75z43z,11,11,1|75z440,10,10,0|7fc5fz,10,10,0|7fc5g0,11,11,1|7p25fz,11,11,1|7p25g0,10,10,0|7yf6rz,10,10,0|7yf6s0,11,11,1|87s83z,11,11,1|87s840,10,10,0|8h59fz,10,10,0|8h59g0,11,11,1|8qiarz,11,11,1|8qias0,10,10,0|8zvc3z,10,10,0|8zvc40,11,11,1|998dfz,11,11,1|998dg0,10,10,0|9ilerz,10,10,0|9iles0,11,11,1|9ryg3z,11,11,1|9ryg40,10,10,0|a1bhfz,10,10,0|a1bhg0,11,11,1|aaoirz,11,11,1|aaois0,10,10,0|ak1k3z,10,10,0|ak1k40,11,11,1|atrk3z,11,11,1|atrk40,10,10,0|b34lfz,10,10,0|b34lg0,11,11,1|bchmrz,11,11,1|bchms0,10,10,0|bluo3z,10,10,0|bluo40,11,11,1|bv7pfz,11,11,1|bv7pg0,10,10,0|c4kqrz,10,10,0|c4kqs0,11,11,1|cdxs3z,11,11,1|cdxs40,10,10,0|cnatfz,10,10,0|cnatg0,11,11,1|cwnurz,11,11,1|cwnus0,10,10,0|d60w3z,10,10,0|d60w40,11,11,1|dfdxfz,11,11,1|dfdxg0,10,10,0|dp3xfz,10,10,0|dp3xg0,11,11,1|dzwtfz,11,11,1|dzwtg0,10,10,0|e7u03z,10,10,0|e7u040,11,11,1|eimw3z,11,11,1|eimw40,10,10,0|eqk2rz,10,10,0|eqk2s0,11,11,1|f1cyrz,11,11,1|f1cys0,10,10,0|f9a5fz,10,10,0|f9a5g0,11,11,1|fkg03z,11,11,1|fkg040,10,10,0|fs083z,10,10,0|fs0840,11,11,1|g362rz,11,11,1|g362s0,10,10,0|gaqarz,10,10,0|gaqas0,11,11,1|glw5fz,11,11,1|glw5g0,10,10,0|gttc3z,10,10,0|gttc40,11,11,1|h4m83z,11,11,1|h4m840,10,10,0|hcjerz,10,10,0|hcjes0,11,11,1|hncarz,11,11,1|hncas0,10,10,0|hv9hfz,10,10,0|hv9hg0,11,11,1|i6fc3z,11,11,1|i6fc40,10,10,0|idzk3z,10,10,0|idzk40,11,11,1|ip5erz,11,11,1|ip5es0,10,10,0|iwpmrz,10,10,0|iwpms0,11,11,1|j7vhfz,11,11,1|j7vhg0,10,10,0|jffpfz,10,10,0|jffpg0,11,11,1|jqlk3z,11,11,1|jqlk40,10,10,0|jyiqrz,10,10,0|jyiqs0,11,11,1|k9bmrz,11,11,1|k9bms0,10,10,0|kh8tfz,10,10,0|kh8tg0,11,11,1|ks1pfz,11,11,1|ks1pg0,10,10,0|kzyw3z,10,10,0|kzyw40,11,11,1|lb4qrz,11,11,1|lb4qs0,10,10,0|lioyrz,10,10,0|lioys0,11,11,1|ltutfz,11,11,1|ltutg0,10,10,0|m1f1fz,10,10,0|m1f1g0,11,11,1|mckw3z,11,11,1|mckw40,10,10,0|mki2rz,10,10,0|mki2s0,11,11,1|mvayrz,11,11,1|mvays0,10,10,0|n385fz,10,10,0|n385g0,11,11,1|ne11fz,11,11,1|ne11g0,10,10,0|nly83z,10,10,0|nly840,11,11,1|nwr43z,11,11,1|nwr440,10,10,0|o4oarz,10,10,0|o4oas0,11,11,1|ofu5fz,11,11,1|ofu5g0,10,10,0|onedfz,10,10,0|onedg0,11,11,1|oyk83z,11,11,1|oyk840,10,10,0|p64g3z,10,10,0|p64g40,11,11,1|phaarz,11,11,1|phaas0,10,10,0|pp7hfz,10,10,0|pp7hg0,11,11,1|q00dfz,11,11,1|q00dg0,10,10,0|q7xk3z,10,10,0|q7xk40,11,11,1|qiqg3z,11,11,1|qiqg40,10,10,0|qqnmrz,10,10,0|qqnms0,11,11,1|r1thfz,11,11,1|r1thg0,10,10,0|r9dpfz,10,10,0|r9dpg0,11,11,1|rkjk3z,11,11,1|rkjk40,10,10,0|rs3s3z,10,10,0|rs3s40,11,11,1|s39mrz,11,11,1|s39ms0,10,10,0|sb6tfz,10,10,0|sb6tg0,11,11,1|slzpfz,11,11,1|slzpg0,10,10,0|stww3z,10,10,0|stww40,11,11,1|t4ps3z,11,11,1|t4ps40,10,10,0|tcmyrz,10,10,0|tcmys0,11,11,1|tnfurz,11,11,1|tnfus0,10,10,0|tvd1fz,10,10,0|tvd1g0,11,11,1|u6iw3z,11,11,1|u6iw40,10,10,0|ue343z,10,10,0|ue3440,11,11,1|up8yrz,11,11,1|up8ys0,10,10,0|uwt6rz,10,10,0|uwt6s0,11,11,1|v7z1fz,11,11,1|v7z1g0,10,10,0|vfw83z,10,10,0|vfw840,11,11,1|vqp43z,11,11,1|vqp440,10,10,0|vymarz,10,10,0|vymas0,11,11,1|w9f6rz,11,11,1|w9f6s0,10,10,0|whcdfz,10,10,0|whcdg0,11,11,1|wsi83z,11,11,1|wsi840,10,10,0|x02g3z,10,10,0|x02g40,11,11,1|xb8arz,11,11,1|xb8as0,10,10,0|xisirz,10,10,0|xisis0,11,11,1|xtydfz,11,11,1|xtydg0,10,10,0|y1ilfz,10,10,0|y1ilg0,11,11,1|ycog3z,11,11,1|ycog40,10,10,0|yklmrz,10,10,0|yklms0,11,11,1|yveirz,11,11,1|yveis0,10,10,0|z3bpfz,10,10,0|z3bpg0,11,11,1|ze4lfz,11,11,1|ze4lg0,10,10,0\",\"Europe/Vienna|,0,377,0|-14211ox,10,10,0|-s0e081,10,10,0|-s0e080,11,11,1|-rsilg1,11,11,1|-rsilg0,10,10,0|-ridmk1,10,10,0|-ridmk0,11,11,1|-ragfw1,11,11,1|-ragfw0,10,10,0|-qznjw1,10,10,0|-qznjw0,11,11,1|-qrqd81,11,11,1|-qrqd80,10,10,0|-pykd81,10,10,0|-pykd80,11,11,1|-pqa7w1,11,11,1|-pqa7w0,10,10,0|-fizzw1,10,10,0|-fizzw0,11,11,1|-e6dzw1,11,11,1|-e6dzw0,10,10,0|-dytrw1,10,10,0|-dytrw0,11,11,1|-dp3rw1,11,11,1|-dp3rw0,10,10,0|-dfqqk1,10,10,0|-dfqqk0,11,11,1|-d6dp81,11,11,1|-d6dp80,10,10,0|-cx0nw1,10,10,0|-cx0nw0,11,11,1|-cwi581,11,11,1|-cwi580,10,10,0|-cdmik1,10,10,0|-cdmik0,11,11,1|-c4kl81,11,11,1|-c4kl80,10,10,0|-bv9ek1,10,10,0|-bv9ek0,11,11,1|-blwd81,11,11,1|-blwd80,10,10,0|-bbtek1,10,10,0|-bbtek0,11,11,1|-b36ak1,11,11,1|-b36ak0,10,10,0|5csnvz,10,10,0|5csnw0,11,11,1|5lsnrz,11,11,1|5lsns0,10,10,0|5v5xfz,10,10,0|5v5xg0,11,11,1|64iyrz,11,11,1|64iys0,10,10,0|6dw03z,10,10,0|6dw040,11,11,1|6n91fz,11,11,1|6n91g0,10,10,0|6wm2rz,10,10,0|6wm2s0,11,11,1|75z43z,11,11,1|75z440,10,10,0|7fc5fz,10,10,0|7fc5g0,11,11,1|7p25fz,11,11,1|7p25g0,10,10,0|7yf6rz,10,10,0|7yf6s0,11,11,1|87s83z,11,11,1|87s840,10,10,0|8h59fz,10,10,0|8h59g0,11,11,1|8qiarz,11,11,1|8qias0,10,10,0|8zvc3z,10,10,0|8zvc40,11,11,1|998dfz,11,11,1|998dg0,10,10,0|9ilerz,10,10,0|9iles0,11,11,1|9ryg3z,11,11,1|9ryg40,10,10,0|a1bhfz,10,10,0|a1bhg0,11,11,1|aaoirz,11,11,1|aaois0,10,10,0|ak1k3z,10,10,0|ak1k40,11,11,1|atrk3z,11,11,1|atrk40,10,10,0|b34lfz,10,10,0|b34lg0,11,11,1|bchmrz,11,11,1|bchms0,10,10,0|bluo3z,10,10,0|bluo40,11,11,1|bv7pfz,11,11,1|bv7pg0,10,10,0|c4kqrz,10,10,0|c4kqs0,11,11,1|cdxs3z,11,11,1|cdxs40,10,10,0|cnatfz,10,10,0|cnatg0,11,11,1|cwnurz,11,11,1|cwnus0,10,10,0|d60w3z,10,10,0|d60w40,11,11,1|dfdxfz,11,11,1|dfdxg0,10,10,0|dp3xfz,10,10,0|dp3xg0,11,11,1|dzwtfz,11,11,1|dzwtg0,10,10,0|e7u03z,10,10,0|e7u040,11,11,1|eimw3z,11,11,1|eimw40,10,10,0|eqk2rz,10,10,0|eqk2s0,11,11,1|f1cyrz,11,11,1|f1cys0,10,10,0|f9a5fz,10,10,0|f9a5g0,11,11,1|fkg03z,11,11,1|fkg040,10,10,0|fs083z,10,10,0|fs0840,11,11,1|g362rz,11,11,1|g362s0,10,10,0|gaqarz,10,10,0|gaqas0,11,11,1|glw5fz,11,11,1|glw5g0,10,10,0|gttc3z,10,10,0|gttc40,11,11,1|h4m83z,11,11,1|h4m840,10,10,0|hcjerz,10,10,0|hcjes0,11,11,1|hncarz,11,11,1|hncas0,10,10,0|hv9hfz,10,10,0|hv9hg0,11,11,1|i6fc3z,11,11,1|i6fc40,10,10,0|idzk3z,10,10,0|idzk40,11,11,1|ip5erz,11,11,1|ip5es0,10,10,0|iwpmrz,10,10,0|iwpms0,11,11,1|j7vhfz,11,11,1|j7vhg0,10,10,0|jffpfz,10,10,0|jffpg0,11,11,1|jqlk3z,11,11,1|jqlk40,10,10,0|jyiqrz,10,10,0|jyiqs0,11,11,1|k9bmrz,11,11,1|k9bms0,10,10,0|kh8tfz,10,10,0|kh8tg0,11,11,1|ks1pfz,11,11,1|ks1pg0,10,10,0|kzyw3z,10,10,0|kzyw40,11,11,1|lb4qrz,11,11,1|lb4qs0,10,10,0|lioyrz,10,10,0|lioys0,11,11,1|ltutfz,11,11,1|ltutg0,10,10,0|m1f1fz,10,10,0|m1f1g0,11,11,1|mckw3z,11,11,1|mckw40,10,10,0|mki2rz,10,10,0|mki2s0,11,11,1|mvayrz,11,11,1|mvays0,10,10,0|n385fz,10,10,0|n385g0,11,11,1|ne11fz,11,11,1|ne11g0,10,10,0|nly83z,10,10,0|nly840,11,11,1|nwr43z,11,11,1|nwr440,10,10,0|o4oarz,10,10,0|o4oas0,11,11,1|ofu5fz,11,11,1|ofu5g0,10,10,0|onedfz,10,10,0|onedg0,11,11,1|oyk83z,11,11,1|oyk840,10,10,0|p64g3z,10,10,0|p64g40,11,11,1|phaarz,11,11,1|phaas0,10,10,0|pp7hfz,10,10,0|pp7hg0,11,11,1|q00dfz,11,11,1|q00dg0,10,10,0|q7xk3z,10,10,0|q7xk40,11,11,1|qiqg3z,11,11,1|qiqg40,10,10,0|qqnmrz,10,10,0|qqnms0,11,11,1|r1thfz,11,11,1|r1thg0,10,10,0|r9dpfz,10,10,0|r9dpg0,11,11,1|rkjk3z,11,11,1|rkjk40,10,10,0|rs3s3z,10,10,0|rs3s40,11,11,1|s39mrz,11,11,1|s39ms0,10,10,0|sb6tfz,10,10,0|sb6tg0,11,11,1|slzpfz,11,11,1|slzpg0,10,10,0|stww3z,10,10,0|stww40,11,11,1|t4ps3z,11,11,1|t4ps40,10,10,0|tcmyrz,10,10,0|tcmys0,11,11,1|tnfurz,11,11,1|tnfus0,10,10,0|tvd1fz,10,10,0|tvd1g0,11,11,1|u6iw3z,11,11,1|u6iw40,10,10,0|ue343z,10,10,0|ue3440,11,11,1|up8yrz,11,11,1|up8ys0,10,10,0|uwt6rz,10,10,0|uwt6s0,11,11,1|v7z1fz,11,11,1|v7z1g0,10,10,0|vfw83z,10,10,0|vfw840,11,11,1|vqp43z,11,11,1|vqp440,10,10,0|vymarz,10,10,0|vymas0,11,11,1|w9f6rz,11,11,1|w9f6s0,10,10,0|whcdfz,10,10,0|whcdg0,11,11,1|wsi83z,11,11,1|wsi840,10,10,0|x02g3z,10,10,0|x02g40,11,11,1|xb8arz,11,11,1|xb8as0,10,10,0|xisirz,10,10,0|xisis0,11,11,1|xtydfz,11,11,1|xtydg0,10,10,0|y1ilfz,10,10,0|y1ilg0,11,11,1|ycog3z,11,11,1|ycog40,10,10,0|yklmrz,10,10,0|yklms0,11,11,1|yveirz,11,11,1|yveis0,10,10,0|z3bpfz,10,10,0|z3bpg0,11,11,1|ze4lfz,11,11,1|ze4lg0,10,10,0\",\"Europe/Vilnius|,0,378,0|-1ayy7cs,156,379,0|-rns981,156,379,0|-rns980,74,380,0|-q7q73d,74,380,0|-q7q73c,10,10,0|-ptj1g1,10,10,0|-ptj1g0,15,11,0|-poyaw1,15,11,0|-poyaw0,10,10,0|-fcmis1,10,10,0|-fcmis0,148,6,0|-evwto1,148,6,0|-evwto0,11,11,1|-e6dzw1,11,11,1|-e6dzw0,10,10,0|-dytrw1,10,10,0|-dytrw0,11,11,1|-dp3rw1,11,11,1|-dp3rw0,10,10,0|-dfqqk1,10,10,0|-dfqqk0,11,11,1|-d9kqw1,11,11,1|-d9kqw0,148,6,0|5vb6bz,148,6,0|5vb6c0,149,209,1|64pzjz,149,209,1|64pzk0,148,6,0|6e33nz,148,6,0|6e33o0,149,209,1|6nhwvz,149,209,1|6nhww0,148,6,0|6wv0zz,148,6,0|6wv100,149,209,1|769u7z,149,209,1|769u80,148,6,0|7foszz,148,6,0|7fot00,149,209,1|7p1zvz,149,209,1|7p1zw0,148,6,0|7yf17z,148,6,0|7yf180,149,209,1|87s2jz,149,209,1|87s2k0,148,6,0|8h53vz,148,6,0|8h53w0,149,209,1|8qi57z,149,209,1|8qi580,148,6,0|8zv6jz,148,6,0|8zv6k0,149,209,1|9987vz,149,209,1|9987w0,148,6,0|9il97z,148,6,0|9il980,149,209,1|9ryajz,149,209,1|9ryak0,148,6,0|a1bbvz,148,6,0|a1bbw0,16,6,1|aaofzz,16,6,1|aaog00,15,11,0|ak1hbz,15,11,0|ak1hc0,16,6,1|atrhbz,16,6,1|atrhc0,15,11,0|b34inz,15,11,0|b34io0,16,6,1|bchjzz,16,6,1|bchk00,15,11,0|blulbz,15,11,0|blulc0,16,6,1|bv7mnz,16,6,1|bv7mo0,15,11,0|c4knzz,15,11,0|c4ko00,16,6,1|cdxpbz,16,6,1|cdxpc0,15,11,0|cnaqnz,15,11,0|cnaqo0,16,6,1|cwnrzz,16,6,1|cwns00,15,11,0|d60tbz,15,11,0|d60tc0,16,6,1|dfdunz,16,6,1|dfduo0,15,11,0|dp3unz,15,11,0|dp3uo0,16,6,1|dzwqnz,16,6,1|dzwqo0,15,11,0|e7txbz,15,11,0|e7txc0,16,6,1|eimtbz,16,6,1|eimtc0,15,11,0|eqk2rz,15,11,0|eqk2s0,11,11,1|f1cyrz,11,11,1|f1cys0,10,10,0|f9a5fz,10,10,0|f9a5g0,11,11,1|fkg03z,11,11,1|fkg040,15,11,0|hcjerz,15,11,0|hcjes0,16,6,1|hncarz,16,6,1|hncas0,15,11,0|hv9hfz,15,11,0|hv9hg0,16,6,1|i6fc3z,16,6,1|i6fc40,15,11,0|idzk3z,15,11,0|idzk40,16,6,1|ip5erz,16,6,1|ip5es0,15,11,0|iwpmrz,15,11,0|iwpms0,16,6,1|j7vhfz,16,6,1|j7vhg0,15,11,0|jffpfz,15,11,0|jffpg0,16,6,1|jqlk3z,16,6,1|jqlk40,15,11,0|jyiqrz,15,11,0|jyiqs0,16,6,1|k9bmrz,16,6,1|k9bms0,15,11,0|kh8tfz,15,11,0|kh8tg0,16,6,1|ks1pfz,16,6,1|ks1pg0,15,11,0|kzyw3z,15,11,0|kzyw40,16,6,1|lb4qrz,16,6,1|lb4qs0,15,11,0|lioyrz,15,11,0|lioys0,16,6,1|ltutfz,16,6,1|ltutg0,15,11,0|m1f1fz,15,11,0|m1f1g0,16,6,1|mckw3z,16,6,1|mckw40,15,11,0|mki2rz,15,11,0|mki2s0,16,6,1|mvayrz,16,6,1|mvays0,15,11,0|n385fz,15,11,0|n385g0,16,6,1|ne11fz,16,6,1|ne11g0,15,11,0|nly83z,15,11,0|nly840,16,6,1|nwr43z,16,6,1|nwr440,15,11,0|o4oarz,15,11,0|o4oas0,16,6,1|ofu5fz,16,6,1|ofu5g0,15,11,0|onedfz,15,11,0|onedg0,16,6,1|oyk83z,16,6,1|oyk840,15,11,0|p64g3z,15,11,0|p64g40,16,6,1|phaarz,16,6,1|phaas0,15,11,0|pp7hfz,15,11,0|pp7hg0,16,6,1|q00dfz,16,6,1|q00dg0,15,11,0|q7xk3z,15,11,0|q7xk40,16,6,1|qiqg3z,16,6,1|qiqg40,15,11,0|qqnmrz,15,11,0|qqnms0,16,6,1|r1thfz,16,6,1|r1thg0,15,11,0|r9dpfz,15,11,0|r9dpg0,16,6,1|rkjk3z,16,6,1|rkjk40,15,11,0|rs3s3z,15,11,0|rs3s40,16,6,1|s39mrz,16,6,1|s39ms0,15,11,0|sb6tfz,15,11,0|sb6tg0,16,6,1|slzpfz,16,6,1|slzpg0,15,11,0|stww3z,15,11,0|stww40,16,6,1|t4ps3z,16,6,1|t4ps40,15,11,0|tcmyrz,15,11,0|tcmys0,16,6,1|tnfurz,16,6,1|tnfus0,15,11,0|tvd1fz,15,11,0|tvd1g0,16,6,1|u6iw3z,16,6,1|u6iw40,15,11,0|ue343z,15,11,0|ue3440,16,6,1|up8yrz,16,6,1|up8ys0,15,11,0|uwt6rz,15,11,0|uwt6s0,16,6,1|v7z1fz,16,6,1|v7z1g0,15,11,0|vfw83z,15,11,0|vfw840,16,6,1|vqp43z,16,6,1|vqp440,15,11,0|vymarz,15,11,0|vymas0,16,6,1|w9f6rz,16,6,1|w9f6s0,15,11,0|whcdfz,15,11,0|whcdg0,16,6,1|wsi83z,16,6,1|wsi840,15,11,0|x02g3z,15,11,0|x02g40,16,6,1|xb8arz,16,6,1|xb8as0,15,11,0|xisirz,15,11,0|xisis0,16,6,1|xtydfz,16,6,1|xtydg0,15,11,0|y1ilfz,15,11,0|y1ilg0,16,6,1|ycog3z,16,6,1|ycog40,15,11,0|yklmrz,15,11,0|yklms0,16,6,1|yveirz,16,6,1|yveis0,15,11,0|z3bpfz,15,11,0|z3bpg0,16,6,1|ze4lfz,16,6,1|ze4lg0,15,11,0\",\"Europe/Volgograd|,0,213,0|-q3cw84,100,6,0|-kmr4c1,100,6,0|-kmr4c0,105,209,0|5vb3jz,105,209,0|5vb3k0,92,194,1|64pwrz,92,194,1|64pws0,105,209,0|6e30vz,105,209,0|6e30w0,92,194,1|6nhu3z,92,194,1|6nhu40,105,209,0|6wuy7z,105,209,0|6wuy80,92,194,1|769rfz,92,194,1|769rg0,105,209,0|7foq7z,105,209,0|7foq80,92,194,1|7p1x3z,92,194,1|7p1x40,105,209,0|7yeyfz,105,209,0|7yeyg0,92,194,1|87rzrz,92,194,1|87rzs0,105,209,0|8h513z,105,209,0|8h5140,92,194,1|8qi2fz,92,194,1|8qi2g0,105,209,0|8zv3rz,105,209,0|8zv3s0,92,194,1|99853z,92,194,1|998540,105,209,0|9il6fz,105,209,0|9il6g0,105,209,1|9ryajz,105,209,1|9ryak0,100,6,0|a1bbvz,100,6,0|a1bbw0,105,209,1|aaod7z,105,209,1|aaod80,100,6,0|ak1ejz,100,6,0|ak1ek0,105,209,1|atrejz,105,209,1|atrek0,100,6,0|b34fvz,100,6,0|b34fw0,105,209,0|blufrz,105,209,0|blufs0,105,209,1|bv7jvz,105,209,1|bv7jw0,100,6,0|c4kl7z,100,6,0|c4kl80,105,209,1|cdxmjz,105,209,1|cdxmk0,100,6,0|cnanvz,100,6,0|cnanw0,105,209,1|cwnp7z,105,209,1|cwnp80,100,6,0|d60qjz,100,6,0|d60qk0,105,209,1|dfdrvz,105,209,1|dfdrw0,100,6,0|dp3rvz,100,6,0|dp3rw0,105,209,1|dzwnvz,105,209,1|dzwnw0,100,6,0|e7tujz,100,6,0|e7tuk0,105,209,1|eimqjz,105,209,1|eimqk0,100,6,0|eqjx7z,100,6,0|eqjx80,105,209,1|f1ct7z,105,209,1|f1ct80,100,6,0|f99zvz,100,6,0|f99zw0,105,209,1|fkfujz,105,209,1|fkfuk0,100,6,0|fs02jz,100,6,0|fs02k0,105,209,1|g35x7z,105,209,1|g35x80,100,6,0|gaq57z,100,6,0|gaq580,105,209,1|glvzvz,105,209,1|glvzw0,100,6,0|gtt6jz,100,6,0|gtt6k0,105,209,1|h4m2jz,105,209,1|h4m2k0,100,6,0|hcj97z,100,6,0|hcj980,105,209,1|hnc57z,105,209,1|hnc580,100,6,0|hv9bvz,100,6,0|hv9bw0,105,209,1|i6f6jz,105,209,1|i6f6k0,100,6,0|idzejz,100,6,0|idzek0,105,209,1|ip597z,105,209,1|ip5980,100,6,0|iwph7z,100,6,0|iwph80,105,209,1|j7vbvz,105,209,1|j7vbw0,100,6,0|jffjvz,100,6,0|jffjw0,105,209,1|jqlejz,105,209,1|jqlek0,100,6,0|jyil7z,100,6,0|jyil80,105,209,1|k9bh7z,105,209,1|k9bh80,100,6,0|kh8nvz,100,6,0|kh8nw0,105,209,1|ks1jvz,105,209,1|ks1jw0,100,6,0|kzyqjz,100,6,0|kzyqk0,105,209,1|lb4l7z,105,209,1|lb4l80,100,6,0|liot7z,100,6,0|liot80,105,209,0|ne0t3z,105,209,0|ne0t40,100,6,0|pha57z,100,6,0|pha580,105,209,0|qlyvrz,105,209,0|qlyvs0,100,6,0\",\"Europe/Warsaw|,0,379,0|-1ayy6k0,156,379,0|-se9yk1,156,379,0|-se9yk0,10,10,0|-s0e081,10,10,0|-s0e080,11,11,1|-rsilg1,11,11,1|-rsilg0,10,10,0|-ridmk1,10,10,0|-ridmk0,11,11,1|-ragfw1,11,11,1|-ragfw0,10,10,0|-qznjw1,10,10,0|-qznjw0,11,11,1|-qrqd81,11,11,1|-qrqd80,15,11,0|-qgvpc1,15,11,0|-qgvpc0,16,6,1|-q8yio1,16,6,1|-q8yio0,15,11,0|-ou36w1,15,11,0|-ou36w0,10,10,0|-feqak1,10,10,0|-feqak0,11,11,1|-e6dzw1,11,11,1|-e6dzw0,10,10,0|-dytrw1,10,10,0|-dytrw0,11,11,1|-dp3rw1,11,11,1|-dp3rw0,10,10,0|-dfqqk1,10,10,0|-dfqqk0,11,11,1|-d6a2o1,11,11,1|-d6a2o0,10,10,0|-cvmtg1,10,10,0|-cvmtg0,11,11,1|-cm2g81,11,11,1|-cm2g80,10,10,0|-cdmo41,10,10,0|-cdmo40,11,11,1|-c4kl81,11,11,1|-c4kl80,10,10,0|-bttjw1,10,10,0|-bttjw0,11,11,1|-blwd81,11,11,1|-blwd80,10,10,0|-bbtek1,10,10,0|-bbtek0,11,11,1|-b36ak1,11,11,1|-b36ak0,10,10,0|-atgak1,10,10,0|-atgak0,11,11,1|-akg7w1,11,11,1|-akg7w0,10,10,0|-6kf401,10,10,0|-6kf400,11,11,1|-6eaqo1,11,11,1|-6eaqo0,10,10,0|-64xpc1,10,10,0|-64xpc0,11,11,1|-5vko01,11,11,1|-5vko00,10,10,0|-5iyyo1,10,10,0|-5iyyo0,11,11,1|-5chmo1,11,11,1|-5chmo0,10,10,0|-534lc1,10,10,0|-534lc0,11,11,1|-4trk01,11,11,1|-4trk00,10,10,0|-4hitc1,10,10,0|-4hitc0,11,11,1|-4b1hc1,11,11,1|-4b1hc0,10,10,0|-3ysqo1,10,10,0|-3ysqo0,11,11,1|-3sbeo1,11,11,1|-3sbeo0,10,10,0|-3g2o01,10,10,0|-3g2o00,11,11,1|-39lc01,11,11,1|-39lc00,10,10,0|-2wzmo1,10,10,0|-2wzmo0,11,11,1|-2qv9c1,11,11,1|-2qv9c0,10,10,0|3s9jzz,10,10,0|3s9k00,11,11,1|419mnz,11,11,1|419mo0,10,10,0|4azmnz,10,10,0|4azmo0,11,11,1|4kcnzz,11,11,1|4kco00,10,10,0|4tppbz,10,10,0|4tppc0,11,11,1|532qnz,11,11,1|532qo0,10,10,0|5csqnz,10,10,0|5csqo0,11,11,1|5lstbz,11,11,1|5lstc0,10,10,0|5v5unz,10,10,0|5v5uo0,11,11,1|64ivzz,11,11,1|64iw00,10,10,0|6dvxbz,10,10,0|6dvxc0,11,11,1|6n8ynz,11,11,1|6n8yo0,10,10,0|6wlzzz,10,10,0|6wm000,11,11,1|75z1bz,11,11,1|75z1c0,10,10,0|7fc2nz,10,10,0|7fc2o0,11,11,1|7p22nz,11,11,1|7p22o0,10,10,0|7yf3zz,10,10,0|7yf400,11,11,1|87s5bz,11,11,1|87s5c0,10,10,0|8h56nz,10,10,0|8h56o0,11,11,1|8qi7zz,11,11,1|8qi800,10,10,0|8zv9bz,10,10,0|8zv9c0,11,11,1|998anz,11,11,1|998ao0,10,10,0|9ilerz,10,10,0|9iles0,11,11,1|9ryg3z,11,11,1|9ryg40,10,10,0|a1bhfz,10,10,0|a1bhg0,11,11,1|aaoirz,11,11,1|aaois0,10,10,0|ak1k3z,10,10,0|ak1k40,11,11,1|atrk3z,11,11,1|atrk40,10,10,0|b34lfz,10,10,0|b34lg0,11,11,1|bchmrz,11,11,1|bchms0,10,10,0|bluo3z,10,10,0|bluo40,11,11,1|bv7pfz,11,11,1|bv7pg0,10,10,0|c4kqrz,10,10,0|c4kqs0,11,11,1|cdxs3z,11,11,1|cdxs40,10,10,0|cnatfz,10,10,0|cnatg0,11,11,1|cwnurz,11,11,1|cwnus0,10,10,0|d60w3z,10,10,0|d60w40,11,11,1|dfdxfz,11,11,1|dfdxg0,10,10,0|dp3xfz,10,10,0|dp3xg0,11,11,1|dzwtfz,11,11,1|dzwtg0,10,10,0|e7u03z,10,10,0|e7u040,11,11,1|eimw3z,11,11,1|eimw40,10,10,0|eqk2rz,10,10,0|eqk2s0,11,11,1|f1cyrz,11,11,1|f1cys0,10,10,0|f9a5fz,10,10,0|f9a5g0,11,11,1|fkg03z,11,11,1|fkg040,10,10,0|fs083z,10,10,0|fs0840,11,11,1|g362rz,11,11,1|g362s0,10,10,0|gaqarz,10,10,0|gaqas0,11,11,1|glw5fz,11,11,1|glw5g0,10,10,0|gttc3z,10,10,0|gttc40,11,11,1|h4m83z,11,11,1|h4m840,10,10,0|hcjerz,10,10,0|hcjes0,11,11,1|hncarz,11,11,1|hncas0,10,10,0|hv9hfz,10,10,0|hv9hg0,11,11,1|i6fc3z,11,11,1|i6fc40,10,10,0|idzk3z,10,10,0|idzk40,11,11,1|ip5erz,11,11,1|ip5es0,10,10,0|iwpmrz,10,10,0|iwpms0,11,11,1|j7vhfz,11,11,1|j7vhg0,10,10,0|jffpfz,10,10,0|jffpg0,11,11,1|jqlk3z,11,11,1|jqlk40,10,10,0|jyiqrz,10,10,0|jyiqs0,11,11,1|k9bmrz,11,11,1|k9bms0,10,10,0|kh8tfz,10,10,0|kh8tg0,11,11,1|ks1pfz,11,11,1|ks1pg0,10,10,0|kzyw3z,10,10,0|kzyw40,11,11,1|lb4qrz,11,11,1|lb4qs0,10,10,0|lioyrz,10,10,0|lioys0,11,11,1|ltutfz,11,11,1|ltutg0,10,10,0|m1f1fz,10,10,0|m1f1g0,11,11,1|mckw3z,11,11,1|mckw40,10,10,0|mki2rz,10,10,0|mki2s0,11,11,1|mvayrz,11,11,1|mvays0,10,10,0|n385fz,10,10,0|n385g0,11,11,1|ne11fz,11,11,1|ne11g0,10,10,0|nly83z,10,10,0|nly840,11,11,1|nwr43z,11,11,1|nwr440,10,10,0|o4oarz,10,10,0|o4oas0,11,11,1|ofu5fz,11,11,1|ofu5g0,10,10,0|onedfz,10,10,0|onedg0,11,11,1|oyk83z,11,11,1|oyk840,10,10,0|p64g3z,10,10,0|p64g40,11,11,1|phaarz,11,11,1|phaas0,10,10,0|pp7hfz,10,10,0|pp7hg0,11,11,1|q00dfz,11,11,1|q00dg0,10,10,0|q7xk3z,10,10,0|q7xk40,11,11,1|qiqg3z,11,11,1|qiqg40,10,10,0|qqnmrz,10,10,0|qqnms0,11,11,1|r1thfz,11,11,1|r1thg0,10,10,0|r9dpfz,10,10,0|r9dpg0,11,11,1|rkjk3z,11,11,1|rkjk40,10,10,0|rs3s3z,10,10,0|rs3s40,11,11,1|s39mrz,11,11,1|s39ms0,10,10,0|sb6tfz,10,10,0|sb6tg0,11,11,1|slzpfz,11,11,1|slzpg0,10,10,0|stww3z,10,10,0|stww40,11,11,1|t4ps3z,11,11,1|t4ps40,10,10,0|tcmyrz,10,10,0|tcmys0,11,11,1|tnfurz,11,11,1|tnfus0,10,10,0|tvd1fz,10,10,0|tvd1g0,11,11,1|u6iw3z,11,11,1|u6iw40,10,10,0|ue343z,10,10,0|ue3440,11,11,1|up8yrz,11,11,1|up8ys0,10,10,0|uwt6rz,10,10,0|uwt6s0,11,11,1|v7z1fz,11,11,1|v7z1g0,10,10,0|vfw83z,10,10,0|vfw840,11,11,1|vqp43z,11,11,1|vqp440,10,10,0|vymarz,10,10,0|vymas0,11,11,1|w9f6rz,11,11,1|w9f6s0,10,10,0|whcdfz,10,10,0|whcdg0,11,11,1|wsi83z,11,11,1|wsi840,10,10,0|x02g3z,10,10,0|x02g40,11,11,1|xb8arz,11,11,1|xb8as0,10,10,0|xisirz,10,10,0|xisis0,11,11,1|xtydfz,11,11,1|xtydg0,10,10,0|y1ilfz,10,10,0|y1ilg0,11,11,1|ycog3z,11,11,1|ycog40,10,10,0|yklmrz,10,10,0|yklms0,11,11,1|yveirz,11,11,1|yveis0,10,10,0|z3bpfz,10,10,0|z3bpg0,11,11,1|ze4lfz,11,11,1|ze4lg0,10,10,0\",\"Europe/Zagreb|,0,332,0|-18vsmgo,10,10,0|-ezayw1,10,10,0|-ezayw0,11,11,1|-e6dzw1,11,11,1|-e6dzw0,10,10,0|-dytrw1,10,10,0|-dytrw0,11,11,1|-dp3rw1,11,11,1|-dp3rw0,10,10,0|-dfqqk1,10,10,0|-dfqqk0,11,11,1|-d6dp81,11,11,1|-d6dp80,10,10,0|-cv5zw1,10,10,0|-cv5zw0,11,11,1|-cofek1,11,11,1|-cofek0,10,10,0|6wm2rz,10,10,0|6wm2s0,11,11,1|75z43z,11,11,1|75z440,10,10,0|7fc5fz,10,10,0|7fc5g0,11,11,1|7p25fz,11,11,1|7p25g0,10,10,0|7yf6rz,10,10,0|7yf6s0,11,11,1|87s83z,11,11,1|87s840,10,10,0|8h59fz,10,10,0|8h59g0,11,11,1|8qiarz,11,11,1|8qias0,10,10,0|8zvc3z,10,10,0|8zvc40,11,11,1|998dfz,11,11,1|998dg0,10,10,0|9ilerz,10,10,0|9iles0,11,11,1|9ryg3z,11,11,1|9ryg40,10,10,0|a1bhfz,10,10,0|a1bhg0,11,11,1|aaoirz,11,11,1|aaois0,10,10,0|ak1k3z,10,10,0|ak1k40,11,11,1|atrk3z,11,11,1|atrk40,10,10,0|b34lfz,10,10,0|b34lg0,11,11,1|bchmrz,11,11,1|bchms0,10,10,0|bluo3z,10,10,0|bluo40,11,11,1|bv7pfz,11,11,1|bv7pg0,10,10,0|c4kqrz,10,10,0|c4kqs0,11,11,1|cdxs3z,11,11,1|cdxs40,10,10,0|cnatfz,10,10,0|cnatg0,11,11,1|cwnurz,11,11,1|cwnus0,10,10,0|d60w3z,10,10,0|d60w40,11,11,1|dfdxfz,11,11,1|dfdxg0,10,10,0|dp3xfz,10,10,0|dp3xg0,11,11,1|dzwtfz,11,11,1|dzwtg0,10,10,0|e7u03z,10,10,0|e7u040,11,11,1|eimw3z,11,11,1|eimw40,10,10,0|eqk2rz,10,10,0|eqk2s0,11,11,1|f1cyrz,11,11,1|f1cys0,10,10,0|f9a5fz,10,10,0|f9a5g0,11,11,1|fkg03z,11,11,1|fkg040,10,10,0|fs083z,10,10,0|fs0840,11,11,1|g362rz,11,11,1|g362s0,10,10,0|gaqarz,10,10,0|gaqas0,11,11,1|glw5fz,11,11,1|glw5g0,10,10,0|gttc3z,10,10,0|gttc40,11,11,1|h4m83z,11,11,1|h4m840,10,10,0|hcjerz,10,10,0|hcjes0,11,11,1|hncarz,11,11,1|hncas0,10,10,0|hv9hfz,10,10,0|hv9hg0,11,11,1|i6fc3z,11,11,1|i6fc40,10,10,0|idzk3z,10,10,0|idzk40,11,11,1|ip5erz,11,11,1|ip5es0,10,10,0|iwpmrz,10,10,0|iwpms0,11,11,1|j7vhfz,11,11,1|j7vhg0,10,10,0|jffpfz,10,10,0|jffpg0,11,11,1|jqlk3z,11,11,1|jqlk40,10,10,0|jyiqrz,10,10,0|jyiqs0,11,11,1|k9bmrz,11,11,1|k9bms0,10,10,0|kh8tfz,10,10,0|kh8tg0,11,11,1|ks1pfz,11,11,1|ks1pg0,10,10,0|kzyw3z,10,10,0|kzyw40,11,11,1|lb4qrz,11,11,1|lb4qs0,10,10,0|lioyrz,10,10,0|lioys0,11,11,1|ltutfz,11,11,1|ltutg0,10,10,0|m1f1fz,10,10,0|m1f1g0,11,11,1|mckw3z,11,11,1|mckw40,10,10,0|mki2rz,10,10,0|mki2s0,11,11,1|mvayrz,11,11,1|mvays0,10,10,0|n385fz,10,10,0|n385g0,11,11,1|ne11fz,11,11,1|ne11g0,10,10,0|nly83z,10,10,0|nly840,11,11,1|nwr43z,11,11,1|nwr440,10,10,0|o4oarz,10,10,0|o4oas0,11,11,1|ofu5fz,11,11,1|ofu5g0,10,10,0|onedfz,10,10,0|onedg0,11,11,1|oyk83z,11,11,1|oyk840,10,10,0|p64g3z,10,10,0|p64g40,11,11,1|phaarz,11,11,1|phaas0,10,10,0|pp7hfz,10,10,0|pp7hg0,11,11,1|q00dfz,11,11,1|q00dg0,10,10,0|q7xk3z,10,10,0|q7xk40,11,11,1|qiqg3z,11,11,1|qiqg40,10,10,0|qqnmrz,10,10,0|qqnms0,11,11,1|r1thfz,11,11,1|r1thg0,10,10,0|r9dpfz,10,10,0|r9dpg0,11,11,1|rkjk3z,11,11,1|rkjk40,10,10,0|rs3s3z,10,10,0|rs3s40,11,11,1|s39mrz,11,11,1|s39ms0,10,10,0|sb6tfz,10,10,0|sb6tg0,11,11,1|slzpfz,11,11,1|slzpg0,10,10,0|stww3z,10,10,0|stww40,11,11,1|t4ps3z,11,11,1|t4ps40,10,10,0|tcmyrz,10,10,0|tcmys0,11,11,1|tnfurz,11,11,1|tnfus0,10,10,0|tvd1fz,10,10,0|tvd1g0,11,11,1|u6iw3z,11,11,1|u6iw40,10,10,0|ue343z,10,10,0|ue3440,11,11,1|up8yrz,11,11,1|up8ys0,10,10,0|uwt6rz,10,10,0|uwt6s0,11,11,1|v7z1fz,11,11,1|v7z1g0,10,10,0|vfw83z,10,10,0|vfw840,11,11,1|vqp43z,11,11,1|vqp440,10,10,0|vymarz,10,10,0|vymas0,11,11,1|w9f6rz,11,11,1|w9f6s0,10,10,0|whcdfz,10,10,0|whcdg0,11,11,1|wsi83z,11,11,1|wsi840,10,10,0|x02g3z,10,10,0|x02g40,11,11,1|xb8arz,11,11,1|xb8as0,10,10,0|xisirz,10,10,0|xisis0,11,11,1|xtydfz,11,11,1|xtydg0,10,10,0|y1ilfz,10,10,0|y1ilg0,11,11,1|ycog3z,11,11,1|ycog40,10,10,0|yklmrz,10,10,0|yklms0,11,11,1|yveirz,11,11,1|yveis0,10,10,0|z3bpfz,10,10,0|z3bpg0,11,11,1|ze4lfz,11,11,1|ze4lg0,10,10,0\",\"Europe/Zaporozhye|,0,250,0|-1ayy96g,157,381,0|-nu12hd,157,381,0|-nu12hc,15,11,0|-kmr1k1,15,11,0|-kmr1k0,148,6,0|-esq0c1,148,6,0|-esq0c0,11,11,1|-e6dzw1,11,11,1|-e6dzw0,10,10,0|-dytrw1,10,10,0|-dytrw0,11,11,1|-dp3rw1,11,11,1|-dp3rw0,10,10,0|-do11g1,10,10,0|-do11g0,148,6,0|5vb6bz,148,6,0|5vb6c0,149,209,1|64pzjz,149,209,1|64pzk0,148,6,0|6e33nz,148,6,0|6e33o0,149,209,1|6nhwvz,149,209,1|6nhww0,148,6,0|6wv0zz,148,6,0|6wv100,149,209,1|769u7z,149,209,1|769u80,148,6,0|7foszz,148,6,0|7fot00,149,209,1|7p1zvz,149,209,1|7p1zw0,148,6,0|7yf17z,148,6,0|7yf180,149,209,1|87s2jz,149,209,1|87s2k0,148,6,0|8h53vz,148,6,0|8h53w0,149,209,1|8qi57z,149,209,1|8qi580,148,6,0|8zv6jz,148,6,0|8zv6k0,149,209,1|9987vz,149,209,1|9987w0,148,6,0|9il97z,148,6,0|9il980,149,209,1|9ryajz,149,209,1|9ryak0,148,6,0|a1bbvz,148,6,0|a1bbw0,149,209,1|aaod7z,149,209,1|aaod80,148,6,0|ak1ejz,148,6,0|ak1ek0,149,209,1|atrejz,149,209,1|atrek0,148,6,0|b34fvz,148,6,0|b34fw0,16,6,1|bchbnz,16,6,1|bchbo0,15,11,0|blufrz,15,11,0|blufs0,16,6,1|bv7ebz,16,6,1|bv7ec0,15,11,0|c4kifz,15,11,0|c4kig0,16,6,1|cdxgzz,16,6,1|cdxh00,15,11,0|cnal3z,15,11,0|cnal40,16,6,1|cwnjnz,16,6,1|cwnjo0,15,11,0|d60w3z,15,11,0|d60w40,16,6,1|dfdxfz,16,6,1|dfdxg0,15,11,0|dp3xfz,15,11,0|dp3xg0,16,6,1|dzwtfz,16,6,1|dzwtg0,15,11,0|e7u03z,15,11,0|e7u040,16,6,1|eimw3z,16,6,1|eimw40,15,11,0|eqk2rz,15,11,0|eqk2s0,16,6,1|f1cyrz,16,6,1|f1cys0,15,11,0|f9a5fz,15,11,0|f9a5g0,16,6,1|fkg03z,16,6,1|fkg040,15,11,0|fs083z,15,11,0|fs0840,16,6,1|g362rz,16,6,1|g362s0,15,11,0|gaqarz,15,11,0|gaqas0,16,6,1|glw5fz,16,6,1|glw5g0,15,11,0|gttc3z,15,11,0|gttc40,16,6,1|h4m83z,16,6,1|h4m840,15,11,0|hcjerz,15,11,0|hcjes0,16,6,1|hncarz,16,6,1|hncas0,15,11,0|hv9hfz,15,11,0|hv9hg0,16,6,1|i6fc3z,16,6,1|i6fc40,15,11,0|idzk3z,15,11,0|idzk40,16,6,1|ip5erz,16,6,1|ip5es0,15,11,0|iwpmrz,15,11,0|iwpms0,16,6,1|j7vhfz,16,6,1|j7vhg0,15,11,0|jffpfz,15,11,0|jffpg0,16,6,1|jqlk3z,16,6,1|jqlk40,15,11,0|jyiqrz,15,11,0|jyiqs0,16,6,1|k9bmrz,16,6,1|k9bms0,15,11,0|kh8tfz,15,11,0|kh8tg0,16,6,1|ks1pfz,16,6,1|ks1pg0,15,11,0|kzyw3z,15,11,0|kzyw40,16,6,1|lb4qrz,16,6,1|lb4qs0,15,11,0|lioyrz,15,11,0|lioys0,16,6,1|ltutfz,16,6,1|ltutg0,15,11,0|m1f1fz,15,11,0|m1f1g0,16,6,1|mckw3z,16,6,1|mckw40,15,11,0|mki2rz,15,11,0|mki2s0,16,6,1|mvayrz,16,6,1|mvays0,15,11,0|n385fz,15,11,0|n385g0,16,6,1|ne11fz,16,6,1|ne11g0,15,11,0|nly83z,15,11,0|nly840,16,6,1|nwr43z,16,6,1|nwr440,15,11,0|o4oarz,15,11,0|o4oas0,16,6,1|ofu5fz,16,6,1|ofu5g0,15,11,0|onedfz,15,11,0|onedg0,16,6,1|oyk83z,16,6,1|oyk840,15,11,0|p64g3z,15,11,0|p64g40,16,6,1|phaarz,16,6,1|phaas0,15,11,0|pp7hfz,15,11,0|pp7hg0,16,6,1|q00dfz,16,6,1|q00dg0,15,11,0|q7xk3z,15,11,0|q7xk40,16,6,1|qiqg3z,16,6,1|qiqg40,15,11,0|qqnmrz,15,11,0|qqnms0,16,6,1|r1thfz,16,6,1|r1thg0,15,11,0|r9dpfz,15,11,0|r9dpg0,16,6,1|rkjk3z,16,6,1|rkjk40,15,11,0|rs3s3z,15,11,0|rs3s40,16,6,1|s39mrz,16,6,1|s39ms0,15,11,0|sb6tfz,15,11,0|sb6tg0,16,6,1|slzpfz,16,6,1|slzpg0,15,11,0|stww3z,15,11,0|stww40,16,6,1|t4ps3z,16,6,1|t4ps40,15,11,0|tcmyrz,15,11,0|tcmys0,16,6,1|tnfurz,16,6,1|tnfus0,15,11,0|tvd1fz,15,11,0|tvd1g0,16,6,1|u6iw3z,16,6,1|u6iw40,15,11,0|ue343z,15,11,0|ue3440,16,6,1|up8yrz,16,6,1|up8ys0,15,11,0|uwt6rz,15,11,0|uwt6s0,16,6,1|v7z1fz,16,6,1|v7z1g0,15,11,0|vfw83z,15,11,0|vfw840,16,6,1|vqp43z,16,6,1|vqp440,15,11,0|vymarz,15,11,0|vymas0,16,6,1|w9f6rz,16,6,1|w9f6s0,15,11,0|whcdfz,15,11,0|whcdg0,16,6,1|wsi83z,16,6,1|wsi840,15,11,0|x02g3z,15,11,0|x02g40,16,6,1|xb8arz,16,6,1|xb8as0,15,11,0|xisirz,15,11,0|xisis0,16,6,1|xtydfz,16,6,1|xtydg0,15,11,0|y1ilfz,15,11,0|y1ilg0,16,6,1|ycog3z,16,6,1|ycog40,15,11,0|yklmrz,15,11,0|yklms0,16,6,1|yveirz,16,6,1|yveis0,15,11,0|z3bpfz,15,11,0|z3bpg0,16,6,1|ze4lfz,16,6,1|ze4lg0,15,11,0\",\"Europe/Zurich|,0,338,0|-1os49kw,53,339,0|-13g441n,53,339,0|-13g441m,10,10,0|-eyh6o1,10,10,0|-eyh6o0,11,11,1|-eqk001,11,11,1|-eqk000,10,10,0|-efr401,10,10,0|-efr400,11,11,1|-e7txc1,11,11,1|-e7txc0,10,10,0|5v5xfz,10,10,0|5v5xg0,11,11,1|64iyrz,11,11,1|64iys0,10,10,0|6dw03z,10,10,0|6dw040,11,11,1|6n91fz,11,11,1|6n91g0,10,10,0|6wm2rz,10,10,0|6wm2s0,11,11,1|75z43z,11,11,1|75z440,10,10,0|7fc5fz,10,10,0|7fc5g0,11,11,1|7p25fz,11,11,1|7p25g0,10,10,0|7yf6rz,10,10,0|7yf6s0,11,11,1|87s83z,11,11,1|87s840,10,10,0|8h59fz,10,10,0|8h59g0,11,11,1|8qiarz,11,11,1|8qias0,10,10,0|8zvc3z,10,10,0|8zvc40,11,11,1|998dfz,11,11,1|998dg0,10,10,0|9ilerz,10,10,0|9iles0,11,11,1|9ryg3z,11,11,1|9ryg40,10,10,0|a1bhfz,10,10,0|a1bhg0,11,11,1|aaoirz,11,11,1|aaois0,10,10,0|ak1k3z,10,10,0|ak1k40,11,11,1|atrk3z,11,11,1|atrk40,10,10,0|b34lfz,10,10,0|b34lg0,11,11,1|bchmrz,11,11,1|bchms0,10,10,0|bluo3z,10,10,0|bluo40,11,11,1|bv7pfz,11,11,1|bv7pg0,10,10,0|c4kqrz,10,10,0|c4kqs0,11,11,1|cdxs3z,11,11,1|cdxs40,10,10,0|cnatfz,10,10,0|cnatg0,11,11,1|cwnurz,11,11,1|cwnus0,10,10,0|d60w3z,10,10,0|d60w40,11,11,1|dfdxfz,11,11,1|dfdxg0,10,10,0|dp3xfz,10,10,0|dp3xg0,11,11,1|dzwtfz,11,11,1|dzwtg0,10,10,0|e7u03z,10,10,0|e7u040,11,11,1|eimw3z,11,11,1|eimw40,10,10,0|eqk2rz,10,10,0|eqk2s0,11,11,1|f1cyrz,11,11,1|f1cys0,10,10,0|f9a5fz,10,10,0|f9a5g0,11,11,1|fkg03z,11,11,1|fkg040,10,10,0|fs083z,10,10,0|fs0840,11,11,1|g362rz,11,11,1|g362s0,10,10,0|gaqarz,10,10,0|gaqas0,11,11,1|glw5fz,11,11,1|glw5g0,10,10,0|gttc3z,10,10,0|gttc40,11,11,1|h4m83z,11,11,1|h4m840,10,10,0|hcjerz,10,10,0|hcjes0,11,11,1|hncarz,11,11,1|hncas0,10,10,0|hv9hfz,10,10,0|hv9hg0,11,11,1|i6fc3z,11,11,1|i6fc40,10,10,0|idzk3z,10,10,0|idzk40,11,11,1|ip5erz,11,11,1|ip5es0,10,10,0|iwpmrz,10,10,0|iwpms0,11,11,1|j7vhfz,11,11,1|j7vhg0,10,10,0|jffpfz,10,10,0|jffpg0,11,11,1|jqlk3z,11,11,1|jqlk40,10,10,0|jyiqrz,10,10,0|jyiqs0,11,11,1|k9bmrz,11,11,1|k9bms0,10,10,0|kh8tfz,10,10,0|kh8tg0,11,11,1|ks1pfz,11,11,1|ks1pg0,10,10,0|kzyw3z,10,10,0|kzyw40,11,11,1|lb4qrz,11,11,1|lb4qs0,10,10,0|lioyrz,10,10,0|lioys0,11,11,1|ltutfz,11,11,1|ltutg0,10,10,0|m1f1fz,10,10,0|m1f1g0,11,11,1|mckw3z,11,11,1|mckw40,10,10,0|mki2rz,10,10,0|mki2s0,11,11,1|mvayrz,11,11,1|mvays0,10,10,0|n385fz,10,10,0|n385g0,11,11,1|ne11fz,11,11,1|ne11g0,10,10,0|nly83z,10,10,0|nly840,11,11,1|nwr43z,11,11,1|nwr440,10,10,0|o4oarz,10,10,0|o4oas0,11,11,1|ofu5fz,11,11,1|ofu5g0,10,10,0|onedfz,10,10,0|onedg0,11,11,1|oyk83z,11,11,1|oyk840,10,10,0|p64g3z,10,10,0|p64g40,11,11,1|phaarz,11,11,1|phaas0,10,10,0|pp7hfz,10,10,0|pp7hg0,11,11,1|q00dfz,11,11,1|q00dg0,10,10,0|q7xk3z,10,10,0|q7xk40,11,11,1|qiqg3z,11,11,1|qiqg40,10,10,0|qqnmrz,10,10,0|qqnms0,11,11,1|r1thfz,11,11,1|r1thg0,10,10,0|r9dpfz,10,10,0|r9dpg0,11,11,1|rkjk3z,11,11,1|rkjk40,10,10,0|rs3s3z,10,10,0|rs3s40,11,11,1|s39mrz,11,11,1|s39ms0,10,10,0|sb6tfz,10,10,0|sb6tg0,11,11,1|slzpfz,11,11,1|slzpg0,10,10,0|stww3z,10,10,0|stww40,11,11,1|t4ps3z,11,11,1|t4ps40,10,10,0|tcmyrz,10,10,0|tcmys0,11,11,1|tnfurz,11,11,1|tnfus0,10,10,0|tvd1fz,10,10,0|tvd1g0,11,11,1|u6iw3z,11,11,1|u6iw40,10,10,0|ue343z,10,10,0|ue3440,11,11,1|up8yrz,11,11,1|up8ys0,10,10,0|uwt6rz,10,10,0|uwt6s0,11,11,1|v7z1fz,11,11,1|v7z1g0,10,10,0|vfw83z,10,10,0|vfw840,11,11,1|vqp43z,11,11,1|vqp440,10,10,0|vymarz,10,10,0|vymas0,11,11,1|w9f6rz,11,11,1|w9f6s0,10,10,0|whcdfz,10,10,0|whcdg0,11,11,1|wsi83z,11,11,1|wsi840,10,10,0|x02g3z,10,10,0|x02g40,11,11,1|xb8arz,11,11,1|xb8as0,10,10,0|xisirz,10,10,0|xisis0,11,11,1|xtydfz,11,11,1|xtydg0,10,10,0|y1ilfz,10,10,0|y1ilg0,11,11,1|ycog3z,11,11,1|ycog40,10,10,0|yklmrz,10,10,0|yklms0,11,11,1|yveirz,11,11,1|yveis0,10,10,0|z3bpfz,10,10,0|z3bpg0,11,11,1|ze4lfz,11,11,1|ze4lg0,10,10,0\",\"Indian/Antananarivo|,0,4,0|-w6p5hg,4,5,0|-lnsey1,4,5,0|-lnsey0,5,6,0|-kvcdo1,5,6,0|-kvcdo0,4,5,0|-h80ka1,4,5,0|-h80ka0,6,7,0|-eb6ib1,6,7,0|-eb6ib0,5,6,0\",\"Indian/Chagos|,0,382,0|-wvpc2s,92,194,0|dkgsrz,92,194,0|dkgss0,96,196,0\",\"Indian/Christmas|,0,383,0|-133iwws,91,193,0\",\"Indian/Cocos|,0,384,0|-10j6sm4,109,229,0\",\"Indian/Comoro|,0,4,0|-w6p5hg,4,5,0|-lnsey1,4,5,0|-lnsey0,5,6,0|-kvcdo1,5,6,0|-kvcdo0,4,5,0|-h80ka1,4,5,0|-h80ka0,6,7,0|-eb6ib1,6,7,0|-eb6ib0,5,6,0\",\"Indian/Kerguelen|,60,1,0|-afrs00,92,194,0\",\"Indian/Mahe|,0,385,0|-wvp8xo,105,209,0\",\"Indian/Maldives|,0,386,0|-1ayyga0,21,386,0|-57x6y1,21,386,0|-57x6y0,92,194,0\",\"Indian/Mauritius|,0,387,0|-wvp9bc,105,209,0|6nykvz,105,209,0|6nykw0,92,194,1|6wai3z,92,194,1|6wai40,105,209,0|k9befz,105,209,0|k9beg0,92,194,1|kh8ibz,92,194,1|kh8ic0,105,209,0\",\"Indian/Mayotte|,0,4,0|-w6p5hg,4,5,0|-lnsey1,4,5,0|-lnsey0,5,6,0|-kvcdo1,5,6,0|-kvcdo0,4,5,0|-h80ka1,4,5,0|-h80ka0,6,7,0|-eb6ib1,6,7,0|-eb6ib0,5,6,0\",\"Indian/Reunion|,0,388,0|-uks29s,105,209,0\",\"Pacific/Apia|,0,389,0|-14fxxj4,0,390,0|-usiiv5,0,390,0|-usiiv4,158,391,0|-afqw21,158,391,0|-afqw20,159,35,0|l9cp7z,159,35,0|l9cp80,160,36,1|lj12vz,160,36,1|lj12w0,159,35,0|ls15jz,159,35,0|ls15k0,160,36,1|lx0h3z,160,36,1|lx0h40,104,207,1|m1r5jz,104,207,1|m1r5k0,103,201,0|mb46vz,103,201,0|mb46w0,104,207,1|mku6vz,104,207,1|mku6w0,103,201,0|mtu9jz,103,201,0|mtu9k0,104,207,1|n3k9jz,104,207,1|n3k9k0,103,201,0|nckc7z,103,201,0|nckc80,104,207,1|nmac7z,104,207,1|nmac80,103,201,0|nvaevz,103,201,0|nvaew0,104,207,1|o50evz,104,207,1|o50ew0,103,201,0|oe0hjz,103,201,0|oe0hk0,104,207,1|onqhjz,104,207,1|onqhk0,103,201,0|owqk7z,103,201,0|owqk80,104,207,1|p6gk7z,104,207,1|p6gk80,103,201,0|pftljz,103,201,0|pftlk0,104,207,1|ppjljz,104,207,1|ppjlk0,103,201,0|pyjo7z,103,201,0|pyjo80,104,207,1|q89o7z,104,207,1|q89o80,103,201,0|qh9qvz,103,201,0|qh9qw0,104,207,1|qqzqvz,104,207,1|qqzqw0,103,201,0|qzztjz,103,201,0|qzztk0,104,207,1|r9ptjz,104,207,1|r9ptk0,103,201,0|ripw7z,103,201,0|ripw80,104,207,1|rsfw7z,104,207,1|rsfw80,103,201,0|s1fyvz,103,201,0|s1fyw0,104,207,1|sbixjz,104,207,1|sbixk0,103,201,0|skj07z,103,201,0|skj080,104,207,1|su907z,104,207,1|su9080,103,201,0|t392vz,103,201,0|t392w0,104,207,1|tcz2vz,104,207,1|tcz2w0,103,201,0|tlz5jz,103,201,0|tlz5k0,104,207,1|tvp5jz,104,207,1|tvp5k0,103,201,0|u4p87z,103,201,0|u4p880,104,207,1|uef87z,104,207,1|uef880,103,201,0|unfavz,103,201,0|unfaw0,104,207,1|ux5avz,104,207,1|ux5aw0,103,201,0|v6ic7z,103,201,0|v6ic80,104,207,1|vg8c7z,104,207,1|vg8c80,103,201,0|vp8evz,103,201,0|vp8ew0,104,207,1|vyyevz,104,207,1|vyyew0,103,201,0|w7yhjz,103,201,0|w7yhk0,104,207,1|whohjz,104,207,1|whohk0,103,201,0|wqok7z,103,201,0|wqok80,104,207,1|x0ek7z,104,207,1|x0ek80,103,201,0|x9emvz,103,201,0|x9emw0,104,207,1|xj4mvz,104,207,1|xj4mw0,103,201,0|xs4pjz,103,201,0|xs4pk0,104,207,1|y1upjz,104,207,1|y1upk0,103,201,0|yb7qvz,103,201,0|yb7qw0,104,207,1|ykxqvz,104,207,1|ykxqw0,103,201,0|ytxtjz,103,201,0|ytxtk0,104,207,1|z3ntjz,104,207,1|z3ntk0,103,201,0|zcnw7z,103,201,0|zcnw80,104,207,1\",\"Pacific/Auckland|,0,197,0|-1gsoz14,97,198,0|-m01p21,97,198,0|-m01p20,98,199,1|-ltxei1,98,199,1|-ltxei0,97,198,0|-lieie1,97,198,0|-lieie0,98,200,1|-lahd41,98,200,1|-lahd40,97,198,0|-kzofq1,97,198,0|-kzofq0,98,200,1|-krrag1,98,200,1|-krrag0,97,198,0|-kgyd21,97,198,0|-kgyd20,98,200,1|-k917s1,98,200,1|-k917s0,97,198,0|-jy8ae1,97,198,0|-jy8ae0,98,200,1|-jpy6g1,98,200,1|-jpy6g0,97,198,0|-jfi7q1,97,198,0|-jfi7q0,98,200,1|-j783s1,98,200,1|-j783s0,97,198,0|-iws521,97,198,0|-iws520,98,200,1|-imc941,98,200,1|-imc940,97,198,0|-ief121,97,198,0|-ief120,98,200,1|-i3m6g1,98,200,1|-i3m6g0,97,198,0|-hvoye1,97,198,0|-hvoye0,98,200,1|-hkw3s1,98,200,1|-hkw3s0,97,198,0|-hcyvq1,97,198,0|-hcyvq0,98,200,1|-h26141,98,200,1|-h26140,97,198,0|-gu8t21,97,198,0|-gu8t20,98,200,1|-gjfyg1,98,200,1|-gjfyg0,97,198,0|-gbiqe1,97,198,0|-gbiqe0,98,200,1|-g0cx41,98,200,1|-g0cx40,97,198,0|-fssnq1,97,198,0|-fssnq0,98,200,1|-fhmug1,98,200,1|-fhmug0,97,198,0|-f9pme1,97,198,0|-f9pme0,98,200,1|-ciy9c1,98,200,1|-ciy9c0,98,200,0|2ivg7z,98,200,0|2ivg80,99,201,1|2omuvz,99,201,1|2omuw0,98,200,0|318k7z,98,200,0|318k80,99,201,1|382uvz,99,201,1|382uw0,98,200,0|3kbljz,98,200,0|3kblk0,99,201,1|3qsxjz,99,201,1|3qsxk0,98,200,0|431o7z,98,200,0|431o80,99,201,1|49j07z,99,201,1|49j080,98,200,0|4lrqvz,98,200,0|4lrqw0,99,201,1|4s92vz,99,201,1|4s92w0,98,200,0|54htjz,98,200,0|54htk0,99,201,1|5az5jz,99,201,1|5az5k0,98,200,0|5n7w7z,98,200,0|5n7w80,99,201,1|5tp87z,99,201,1|5tp880,98,200,0|65xyvz,98,200,0|65xyw0,99,201,1|6cs9jz,99,201,1|6cs9k0,98,200,0|6p107z,98,200,0|6p1080,99,201,1|6vic7z,99,201,1|6vic80,98,200,0|77r2vz,98,200,0|77r2w0,99,201,1|7e8evz,99,201,1|7e8ew0,98,200,0|7qh5jz,98,200,0|7qh5k0,99,201,1|7wyhjz,99,201,1|7wyhk0,98,200,0|89787z,98,200,0|897880,99,201,1|8fok7z,99,201,1|8fok80,98,200,0|8rxavz,98,200,0|8rxaw0,99,201,1|8yemvz,99,201,1|8yemw0,98,200,0|9andjz,98,200,0|9andk0,99,201,1|9hho7z,99,201,1|9hho80,98,200,0|9tqevz,98,200,0|9tqew0,99,201,1|a07qvz,99,201,1|a07qw0,98,200,0|abdljz,98,200,0|abdlk0,99,201,1|ajnqvz,99,201,1|ajnqw0,98,200,0|au3o7z,98,200,0|au3o80,99,201,1|b2dtjz,99,201,1|b2dtk0,98,200,0|bctqvz,98,200,0|bctqw0,99,201,1|bl3w7z,99,201,1|bl3w80,98,200,0|bvjtjz,98,200,0|bvjtk0,99,201,1|c46xjz,99,201,1|c46xk0,98,200,0|ce9w7z,98,200,0|ce9w80,99,201,1|cmx07z,99,201,1|cmx080,98,200,0|cwzyvz,98,200,0|cwzyw0,99,201,1|d5n2vz,99,201,1|d5n2w0,98,200,0|dfq1jz,98,200,0|dfq1k0,99,201,1|dod5jz,99,201,1|dod5k0,98,200,0|dyt2vz,98,200,0|dyt2w0,99,201,1|e7387z,99,201,1|e73880,98,200,0|ehj5jz,98,200,0|ehj5k0,99,201,1|eptavz,99,201,1|eptaw0,98,200,0|f0987z,98,200,0|f09880,99,201,1|f8wc7z,99,201,1|f8wc80,98,200,0|fizavz,98,200,0|fizaw0,99,201,1|frmevz,99,201,1|frmew0,98,200,0|g1pdjz,98,200,0|g1pdk0,99,201,1|gachjz,99,201,1|gachk0,98,200,0|gksevz,98,200,0|gksew0,99,201,1|gt2k7z,99,201,1|gt2k80,98,200,0|h3ihjz,98,200,0|h3ihk0,99,201,1|hbsmvz,99,201,1|hbsmw0,98,200,0|hm8k7z,98,200,0|hm8k80,99,201,1|huvo7z,99,201,1|huvo80,98,200,0|i4ymvz,98,200,0|i4ymw0,99,201,1|idlqvz,99,201,1|idlqw0,98,200,0|inopjz,98,200,0|inopk0,99,201,1|iwbtjz,99,201,1|iwbtk0,98,200,0|j6es7z,98,200,0|j6es80,99,201,1|jf1w7z,99,201,1|jf1w80,98,200,0|jp4uvz,98,200,0|jp4uw0,99,201,1|jyuuvz,99,201,1|jyuuw0,98,200,0|k7uxjz,98,200,0|k7uxk0,99,201,1|khkxjz,99,201,1|khkxk0,98,200,0|kql07z,98,200,0|kql080,99,201,1|l0b07z,99,201,1|l0b080,98,200,0|l9b2vz,98,200,0|l9b2w0,99,201,1|lj12vz,99,201,1|lj12w0,98,200,0|ls15jz,98,200,0|ls15k0,99,201,1|m1r5jz,99,201,1|m1r5k0,98,200,0|mb46vz,98,200,0|mb46w0,99,201,1|mku6vz,99,201,1|mku6w0,98,200,0|mtu9jz,98,200,0|mtu9k0,99,201,1|n3k9jz,99,201,1|n3k9k0,98,200,0|nckc7z,98,200,0|nckc80,99,201,1|nmac7z,99,201,1|nmac80,98,200,0|nvaevz,98,200,0|nvaew0,99,201,1|o50evz,99,201,1|o50ew0,98,200,0|oe0hjz,98,200,0|oe0hk0,99,201,1|onqhjz,99,201,1|onqhk0,98,200,0|owqk7z,98,200,0|owqk80,99,201,1|p6gk7z,99,201,1|p6gk80,98,200,0|pftljz,98,200,0|pftlk0,99,201,1|ppjljz,99,201,1|ppjlk0,98,200,0|pyjo7z,98,200,0|pyjo80,99,201,1|q89o7z,99,201,1|q89o80,98,200,0|qh9qvz,98,200,0|qh9qw0,99,201,1|qqzqvz,99,201,1|qqzqw0,98,200,0|qzztjz,98,200,0|qzztk0,99,201,1|r9ptjz,99,201,1|r9ptk0,98,200,0|ripw7z,98,200,0|ripw80,99,201,1|rsfw7z,99,201,1|rsfw80,98,200,0|s1fyvz,98,200,0|s1fyw0,99,201,1|sbixjz,99,201,1|sbixk0,98,200,0|skj07z,98,200,0|skj080,99,201,1|su907z,99,201,1|su9080,98,200,0|t392vz,98,200,0|t392w0,99,201,1|tcz2vz,99,201,1|tcz2w0,98,200,0|tlz5jz,98,200,0|tlz5k0,99,201,1|tvp5jz,99,201,1|tvp5k0,98,200,0|u4p87z,98,200,0|u4p880,99,201,1|uef87z,99,201,1|uef880,98,200,0|unfavz,98,200,0|unfaw0,99,201,1|ux5avz,99,201,1|ux5aw0,98,200,0|v6ic7z,98,200,0|v6ic80,99,201,1|vg8c7z,99,201,1|vg8c80,98,200,0|vp8evz,98,200,0|vp8ew0,99,201,1|vyyevz,99,201,1|vyyew0,98,200,0|w7yhjz,98,200,0|w7yhk0,99,201,1|whohjz,99,201,1|whohk0,98,200,0|wqok7z,98,200,0|wqok80,99,201,1|x0ek7z,99,201,1|x0ek80,98,200,0|x9emvz,98,200,0|x9emw0,99,201,1|xj4mvz,99,201,1|xj4mw0,98,200,0|xs4pjz,98,200,0|xs4pk0,99,201,1|y1upjz,99,201,1|y1upk0,98,200,0|yb7qvz,98,200,0|yb7qw0,99,201,1|ykxqvz,99,201,1|ykxqw0,98,200,0|ytxtjz,98,200,0|ytxtk0,99,201,1|z3ntjz,99,201,1|z3ntk0,98,200,0|zcnw7z,98,200,0|zcnw80,99,201,1\",\"Pacific/Bougainville|,0,392,0|-1ayyvh4,161,393,0|-1354j8x,161,393,0|-1354j8w,93,195,0|-ecsh41,93,195,0|-ecsh40,107,224,0|-cpsbo1,107,224,0|-cpsbo0,93,195,0|nh90fz,93,195,0|nh90g0,90,192,0\",\"Pacific/Chatham|,0,394,0|-1gsp0n0,162,395,0|-ciya11,162,395,0|-ciya10,163,396,0|2ivg7z,163,396,0|2ivg80,164,397,1|2omuvz,164,397,1|2omuw0,163,396,0|318k7z,163,396,0|318k80,164,397,1|382uvz,164,397,1|382uw0,163,396,0|3kbljz,163,396,0|3kblk0,164,397,1|3qsxjz,164,397,1|3qsxk0,163,396,0|431o7z,163,396,0|431o80,164,397,1|49j07z,164,397,1|49j080,163,396,0|4lrqvz,163,396,0|4lrqw0,164,397,1|4s92vz,164,397,1|4s92w0,163,396,0|54htjz,163,396,0|54htk0,164,397,1|5az5jz,164,397,1|5az5k0,163,396,0|5n7w7z,163,396,0|5n7w80,164,397,1|5tp87z,164,397,1|5tp880,163,396,0|65xyvz,163,396,0|65xyw0,164,397,1|6cs9jz,164,397,1|6cs9k0,163,396,0|6p107z,163,396,0|6p1080,164,397,1|6vic7z,164,397,1|6vic80,163,396,0|77r2vz,163,396,0|77r2w0,164,397,1|7e8evz,164,397,1|7e8ew0,163,396,0|7qh5jz,163,396,0|7qh5k0,164,397,1|7wyhjz,164,397,1|7wyhk0,163,396,0|89787z,163,396,0|897880,164,397,1|8fok7z,164,397,1|8fok80,163,396,0|8rxavz,163,396,0|8rxaw0,164,397,1|8yemvz,164,397,1|8yemw0,163,396,0|9andjz,163,396,0|9andk0,164,397,1|9hho7z,164,397,1|9hho80,163,396,0|9tqevz,163,396,0|9tqew0,164,397,1|a07qvz,164,397,1|a07qw0,163,396,0|abdljz,163,396,0|abdlk0,164,397,1|ajnqvz,164,397,1|ajnqw0,163,396,0|au3o7z,163,396,0|au3o80,164,397,1|b2dtjz,164,397,1|b2dtk0,163,396,0|bctqvz,163,396,0|bctqw0,164,397,1|bl3w7z,164,397,1|bl3w80,163,396,0|bvjtjz,163,396,0|bvjtk0,164,397,1|c46xjz,164,397,1|c46xk0,163,396,0|ce9w7z,163,396,0|ce9w80,164,397,1|cmx07z,164,397,1|cmx080,163,396,0|cwzyvz,163,396,0|cwzyw0,164,397,1|d5n2vz,164,397,1|d5n2w0,163,396,0|dfq1jz,163,396,0|dfq1k0,164,397,1|dod5jz,164,397,1|dod5k0,163,396,0|dyt2vz,163,396,0|dyt2w0,164,397,1|e7387z,164,397,1|e73880,163,396,0|ehj5jz,163,396,0|ehj5k0,164,397,1|eptavz,164,397,1|eptaw0,163,396,0|f0987z,163,396,0|f09880,164,397,1|f8wc7z,164,397,1|f8wc80,163,396,0|fizavz,163,396,0|fizaw0,164,397,1|frmevz,164,397,1|frmew0,163,396,0|g1pdjz,163,396,0|g1pdk0,164,397,1|gachjz,164,397,1|gachk0,163,396,0|gksevz,163,396,0|gksew0,164,397,1|gt2k7z,164,397,1|gt2k80,163,396,0|h3ihjz,163,396,0|h3ihk0,164,397,1|hbsmvz,164,397,1|hbsmw0,163,396,0|hm8k7z,163,396,0|hm8k80,164,397,1|huvo7z,164,397,1|huvo80,163,396,0|i4ymvz,163,396,0|i4ymw0,164,397,1|idlqvz,164,397,1|idlqw0,163,396,0|inopjz,163,396,0|inopk0,164,397,1|iwbtjz,164,397,1|iwbtk0,163,396,0|j6es7z,163,396,0|j6es80,164,397,1|jf1w7z,164,397,1|jf1w80,163,396,0|jp4uvz,163,396,0|jp4uw0,164,397,1|jyuuvz,164,397,1|jyuuw0,163,396,0|k7uxjz,163,396,0|k7uxk0,164,397,1|khkxjz,164,397,1|khkxk0,163,396,0|kql07z,163,396,0|kql080,164,397,1|l0b07z,164,397,1|l0b080,163,396,0|l9b2vz,163,396,0|l9b2w0,164,397,1|lj12vz,164,397,1|lj12w0,163,396,0|ls15jz,163,396,0|ls15k0,164,397,1|m1r5jz,164,397,1|m1r5k0,163,396,0|mb46vz,163,396,0|mb46w0,164,397,1|mku6vz,164,397,1|mku6w0,163,396,0|mtu9jz,163,396,0|mtu9k0,164,397,1|n3k9jz,164,397,1|n3k9k0,163,396,0|nckc7z,163,396,0|nckc80,164,397,1|nmac7z,164,397,1|nmac80,163,396,0|nvaevz,163,396,0|nvaew0,164,397,1|o50evz,164,397,1|o50ew0,163,396,0|oe0hjz,163,396,0|oe0hk0,164,397,1|onqhjz,164,397,1|onqhk0,163,396,0|owqk7z,163,396,0|owqk80,164,397,1|p6gk7z,164,397,1|p6gk80,163,396,0|pftljz,163,396,0|pftlk0,164,397,1|ppjljz,164,397,1|ppjlk0,163,396,0|pyjo7z,163,396,0|pyjo80,164,397,1|q89o7z,164,397,1|q89o80,163,396,0|qh9qvz,163,396,0|qh9qw0,164,397,1|qqzqvz,164,397,1|qqzqw0,163,396,0|qzztjz,163,396,0|qzztk0,164,397,1|r9ptjz,164,397,1|r9ptk0,163,396,0|ripw7z,163,396,0|ripw80,164,397,1|rsfw7z,164,397,1|rsfw80,163,396,0|s1fyvz,163,396,0|s1fyw0,164,397,1|sbixjz,164,397,1|sbixk0,163,396,0|skj07z,163,396,0|skj080,164,397,1|su907z,164,397,1|su9080,163,396,0|t392vz,163,396,0|t392w0,164,397,1|tcz2vz,164,397,1|tcz2w0,163,396,0|tlz5jz,163,396,0|tlz5k0,164,397,1|tvp5jz,164,397,1|tvp5k0,163,396,0|u4p87z,163,396,0|u4p880,164,397,1|uef87z,164,397,1|uef880,163,396,0|unfavz,163,396,0|unfaw0,164,397,1|ux5avz,164,397,1|ux5aw0,163,396,0|v6ic7z,163,396,0|v6ic80,164,397,1|vg8c7z,164,397,1|vg8c80,163,396,0|vp8evz,163,396,0|vp8ew0,164,397,1|vyyevz,164,397,1|vyyew0,163,396,0|w7yhjz,163,396,0|w7yhk0,164,397,1|whohjz,164,397,1|whohk0,163,396,0|wqok7z,163,396,0|wqok80,164,397,1|x0ek7z,164,397,1|x0ek80,163,396,0|x9emvz,163,396,0|x9emw0,164,397,1|xj4mvz,164,397,1|xj4mw0,163,396,0|xs4pjz,163,396,0|xs4pk0,164,397,1|y1upjz,164,397,1|y1upk0,163,396,0|yb7qvz,163,396,0|yb7qw0,164,397,1|ykxqvz,164,397,1|ykxqw0,163,396,0|ytxtjz,163,396,0|ytxtk0,164,397,1|z3ntjz,164,397,1|z3ntk0,163,396,0|zcnw7z,163,396,0|zcnw80,164,397,1\",\"Pacific/Chuuk|,0,398,0|-1t8j2rw,0,399,0|-100f5fx,0,399,0|-100f5fw,93,195,0|-su4zs1,93,195,0|-su4zs0,107,224,0|-qknl01,107,224,0|-qknl00,93,195,0|-f08x41,93,195,0|-f08x40,107,224,0|-cqtd01,107,224,0|-cqtd00,93,195,0\",\"Pacific/Easter|,0,400,0|-15r0p2w,165,400,0|-jhfaex,165,400,0|-jhfaew,166,66,0|-lsvk1,166,66,0|-lsvk0,167,62,1|-e8qc1,167,62,1|-e8qc0,166,66,0|-1zww1,166,66,0|-1zww0,167,62,1|4hcbz,167,62,1|4hcc0,166,66,0|ekdrz,166,66,0|ekds0,167,62,1|mhhnz,167,62,1|mhho0,166,66,0|xagfz,166,66,0|xagg0,167,62,1|157kbz,167,62,1|157kc0,166,66,0|1gdhrz,166,66,0|1gdhs0,167,62,1|1nxmzz,167,62,1|1nxn00,166,66,0|1ydn3z,166,66,0|1ydn40,167,62,1|26npnz,167,62,1|26npo0,166,66,0|2htn3z,166,66,0|2htn40,167,62,1|2pdsbz,167,62,1|2pdsc0,166,66,0|30jprz,166,66,0|30jps0,167,62,1|38gtnz,167,62,1|38gto0,166,66,0|3j9sfz,166,66,0|3j9sg0,167,62,1|3r6wbz,167,62,1|3r6wc0,166,66,0|41zv3z,166,66,0|41zv40,167,62,1|49wyzz,167,62,1|49wz00,166,66,0|4l2wfz,166,66,0|4l2wg0,167,62,1|4sn1nz,167,62,1|4sn1o0,166,66,0|53sz3z,166,66,0|53sz40,167,62,1|5bd4bz,167,62,1|5bd4c0,166,66,0|5mj1rz,166,66,0|5mj1s0,167,62,1|5ug5nz,167,62,1|5ug5o0,166,66,0|6594fz,166,66,0|6594g0,167,62,1|6d68bz,167,62,1|6d68c0,167,62,0|6nz73z,167,62,0|6nz740,56,63,1|6vwazz,56,63,1|6vwb00,167,62,0|76p9rz,167,62,0|76p9s0,56,63,1|7emdnz,56,63,1|7emdo0,167,62,0|7psb3z,167,62,0|7psb40,56,63,1|7xcgbz,56,63,1|7xcgc0,167,62,0|88idrz,167,62,0|88ids0,56,63,1|8g2izz,56,63,1|8g2j00,167,62,0|8r8gfz,167,62,0|8r8gg0,56,63,1|90lezz,56,63,1|90lf00,167,62,0|99yj3z,167,62,0|99yj40,56,63,1|9hvmzz,56,63,1|9hvn00,167,62,0|9solrz,167,62,0|9sols0,56,63,1|a0lpnz,56,63,1|a0lpo0,167,62,0|abrn3z,167,62,0|abrn40,56,63,1|ajbsbz,56,63,1|ajbsc0,167,62,0|at1v3z,167,62,0|at1v40,56,63,1|b21uzz,56,63,1|b21v00,167,62,0|bd7sfz,167,62,0|bd7sg0,56,63,1|bl4wbz,56,63,1|bl4wc0,167,62,0|bvxv3z,167,62,0|bvxv40,56,63,1|c3uyzz,56,63,1|c3uz00,167,62,0|cenxrz,167,62,0|cenxs0,56,63,1|cml1nz,56,63,1|cml1o0,167,62,0|cxe0fz,167,62,0|cxe0g0,56,63,1|d5b4bz,56,63,1|d5b4c0,167,62,0|dgh1rz,167,62,0|dgh1s0,56,63,1|do16zz,56,63,1|do1700,167,62,0|dz74fz,167,62,0|dz74g0,56,63,1|e7u5nz,56,63,1|e7u5o0,167,62,0|ehx73z,167,62,0|ehx740,56,63,1|epuazz,56,63,1|epub00,167,62,0|ezxcfz,167,62,0|ezxcg0,56,63,1|f9n9nz,56,63,1|f9n9o0,167,62,0|fjdcfz,167,62,0|fjdcg0,56,63,1|fragbz,56,63,1|fragc0,167,62,0|g2gdrz,167,62,0|g2gds0,56,63,1|ga0izz,56,63,1|ga0j00,167,62,0|gl6gfz,167,62,0|gl6gg0,56,63,1|gsqlnz,56,63,1|gsqlo0,167,62,0|h3wj3z,167,62,0|h3wj40,56,63,1|hbgobz,56,63,1|hbgoc0,167,62,0|hmmlrz,167,62,0|hmmls0,56,63,1|hujpnz,56,63,1|hujpo0,167,62,0|i5cofz,167,62,0|i5cog0,56,63,1|id9sbz,56,63,1|id9sc0,167,62,0|io2r3z,167,62,0|io2r40,56,63,1|ivzuzz,56,63,1|ivzv00,167,62,0|j75sfz,167,62,0|j75sg0,56,63,1|jepxnz,56,63,1|jepxo0,167,62,0|jpvv3z,167,62,0|jpvv40,56,63,1|jyiwbz,56,63,1|jyiwc0,167,62,0|k8lxrz,167,62,0|k8lxs0,56,63,1|kgj1nz,56,63,1|kgj1o0,167,62,0|krc0fz,167,62,0|krc0g0,56,63,1|l0c0bz,56,63,1|l0c0c0,167,62,0|la233z,167,62,0|la2340,56,63,1|lkuwbz,56,63,1|lkuwc0,167,62,0|lq9f3z,167,62,0|lq9f40,56,63,1|m380bz,56,63,1|m380c0,167,62,0|m9pf3z,167,62,0|m9pf40,56,63,1|mly2zz,56,63,1|mly300,167,62,0|mssgfz,167,62,0|mssgg0,56,63,1|n4o5nz,56,63,1|n4o5o0,167,62,0|nbij3z,167,62,0|nbij40,56,63,1|o776zz,56,63,1|o77700,167,62,0|obvsfz,167,62,0|obvsg0,56,63,1|opx9nz,56,63,1|opx9o0,167,62,0|oulv3z,167,62,0|oulv40,56,63,1|p8ncbz,56,63,1|p8ncc0,167,62,0|pdbxrz,167,62,0|pdbxs0,56,63,1|ppklnz,56,63,1|ppklo0,167,62,0|pxhv3z,167,62,0|pxhv40,56,63,1|q8aobz,56,63,1|q8aoc0,167,62,0|qg7xrz,167,62,0|qg7xs0,56,63,1|qr0qzz,56,63,1|qr0r00,167,62,0|qyy0fz,167,62,0|qyy0g0,56,63,1|r9qtnz,56,63,1|r9qto0,167,62,0|rho33z,167,62,0|rho340,56,63,1|rsgwbz,56,63,1|rsgwc0,167,62,0|s0e5rz,167,62,0|s0e5s0,56,63,1|sbjxnz,56,63,1|sbjxo0,167,62,0|sjh73z,167,62,0|sjh740,56,63,1|sua0bz,56,63,1|sua0c0,167,62,0|t279rz,167,62,0|t279s0,56,63,1|td02zz,56,63,1|td0300,167,62,0|tkxcfz,167,62,0|tkxcg0,56,63,1|tvq5nz,56,63,1|tvq5o0,167,62,0|u3nf3z,167,62,0|u3nf40,56,63,1|ueg8bz,56,63,1|ueg8c0,167,62,0|umdhrz,167,62,0|umdhs0,56,63,1|uxj9nz,56,63,1|uxj9o0,167,62,0|v53kfz,167,62,0|v53kg0,56,63,1|vg9cbz,56,63,1|vg9cc0,167,62,0|vo6lrz,167,62,0|vo6ls0,56,63,1|vyzezz,56,63,1|vyzf00,167,62,0|w6wofz,167,62,0|w6wog0,56,63,1|whphnz,56,63,1|whpho0,167,62,0|wpmr3z,167,62,0|wpmr40,56,63,1|x0fkbz,56,63,1|x0fkc0,167,62,0|x8ctrz,167,62,0|x8cts0,56,63,1|xj5mzz,56,63,1|xj5n00,167,62,0|xr2wfz,167,62,0|xr2wg0,56,63,1|y28obz,56,63,1|y28oc0,167,62,0|y9sz3z,167,62,0|y9sz40,56,63,1|ykyqzz,56,63,1|ykyr00,167,62,0|ysw0fz,167,62,0|ysw0g0,56,63,1|z3otnz,56,63,1|z3oto0,167,62,0|zbm33z,167,62,0|zbm340,56,63,1\",\"Pacific/Efate|,0,401,0|-u964i4,90,192,0|22nynz,90,192,0|22nyo0,102,200,1|27pfzz,102,200,1|27pg00,90,192,0|75y6rz,90,192,0|75y6s0,102,200,1|7fb5bz,102,200,1|7fb5c0,90,192,0|7oo9fz,90,192,0|7oo9g0,102,200,1|7y17zz,102,200,1|7y1800,90,192,0|87rarz,90,192,0|87ras0,102,200,1|8granz,102,200,1|8grao0,90,192,0|8qhdfz,90,192,0|8qhdg0,102,200,1|8zubzz,102,200,1|8zuc00,90,192,0|997g3z,90,192,0|997g40,102,200,1|9ikenz,102,200,1|9ikeo0,90,192,0|9rxirz,90,192,0|9rxis0,102,200,1|a1ahbz,102,200,1|a1ahc0,90,192,0|aanlfz,90,192,0|aanlg0,102,200,1|ak0jzz,102,200,1|ak0k00,90,192,0|atdo3z,90,192,0|atdo40,102,200,1|b2qmnz,102,200,1|b2qmo0,90,192,0|bcgpfz,90,192,0|bcgpg0,102,200,1|bikzzz,102,200,1|bil000,90,192,0|bwmmrz,90,192,0|bwmms0,102,200,1|c1b2nz,102,200,1|c1b2o0,90,192,0\",\"Pacific/Enderbury|,0,402,0|-100dhng,168,403,0|535inz,168,403,0|535io0,159,35,0|d1o97z,159,35,0|d1o980,103,201,0\",\"Pacific/Fakaofo|,0,404,0|-100dhmg,159,35,0|lx0jvz,159,35,0|lx0jw0,103,201,0\",\"Pacific/Fiji|,0,405,0|-sa2x4w,102,200,0|f1p2vz,102,200,0|f1p2w0,103,201,1|f7tg7z,103,201,1|f7tg80,102,200,0|fks47z,102,200,0|fks480,103,201,1|fqjivz,103,201,1|fqjiw0,102,200,0|ktto7z,102,200,0|ktto80,103,201,1|kzy1jz,103,201,1|kzy1k0,102,200,0|laqxjz,102,200,0|laqxk0,103,201,1|lhl87z,103,201,1|lhl880,102,200,0|lth07z,102,200,0|lth080,103,201,1|ly5ivz,103,201,1|ly5iw0,102,200,0|mc72vz,102,200,0|mc72w0,103,201,1|mgvljz,103,201,1|mgvlk0,102,200,0|mva47z,102,200,0|mva480,103,201,1|mzllfz,103,201,1|mzllg0,102,200,0|ned5jz,102,200,0|ned5k0,103,201,1|nibqvz,103,201,1|nibqw0,102,200,0|nx387z,102,200,0|nx3880,103,201,1|o11tjz,103,201,1|o11tk0,102,200,0|og69jz,102,200,0|og69k0,103,201,1|ojrw7z,103,201,1|ojrw80,102,200,0|oywc7z,102,200,0|oywc80,103,201,1|p2hyvz,103,201,1|p2hyw0,102,200,0|phmevz,102,200,0|phmew0,103,201,1|pl81jz,103,201,1|pl81k0,102,200,0|q0pg7z,102,200,0|q0pg80,103,201,1|q3y47z,103,201,1|q3y480,102,200,0|qllavz,102,200,0|qllaw0,103,201,1|qn15jz,103,201,1|qn15k0,102,200,0|r2ik7z,102,200,0|r2ik80,103,201,1|r5r87z,103,201,1|r5r880,102,200,0|rl8mvz,102,200,0|rl8mw0,103,201,1|rohavz,103,201,1|rohaw0,102,200,0|s3ypjz,102,200,0|s3ypk0,103,201,1|s77djz,103,201,1|s77dk0,102,200,0|smos7z,102,200,0|smos80,103,201,1|spxg7z,103,201,1|spxg80,102,200,0|t5euvz,102,200,0|t5euw0,103,201,1|t90hjz,103,201,1|t90hk0,102,200,0|to4xjz,102,200,0|to4xk0,103,201,1|trqk7z,103,201,1|trqk80,102,200,0|u77yvz,102,200,0|u77yw0,103,201,1|uagmvz,103,201,1|uagmw0,102,200,0|upy1jz,102,200,0|upy1k0,103,201,1|ut6pjz,103,201,1|ut6pk0,102,200,0|v8o47z,102,200,0|v8o480,103,201,1|vbws7z,103,201,1|vbws80,102,200,0|vre6vz,102,200,0|vre6w0,103,201,1|vumuvz,103,201,1|vumuw0,102,200,0|wa49jz,102,200,0|wa49k0,103,201,1|wdpw7z,103,201,1|wdpw80,102,200,0|wt7avz,102,200,0|wt7aw0,103,201,1|wwfyvz,103,201,1|wwfyw0,102,200,0|xbxdjz,102,200,0|xbxdk0,103,201,1|xf61jz,103,201,1|xf61k0,102,200,0|xung7z,102,200,0|xung80,103,201,1|xxw47z,103,201,1|xxw480,102,200,0|yddivz,102,200,0|yddiw0,103,201,1|ygm6vz,103,201,1|ygm6w0,102,200,0|yw3ljz,102,200,0|yw3lk0,103,201,1|yzp87z,103,201,1|yzp880,102,200,0|zeto7z,102,200,0|zeto80,103,201,1\",\"Pacific/Funafuti|,0,406,0|-100fais,102,200,0\",\"Pacific/Galapagos|,0,407,0|-kcr62o,56,63,0|8cmlvz,56,63,0|8cmlw0,167,62,0|byewnz,167,62,0|byewo0,56,63,1|c1ylvz,56,63,1|c1ylw0,167,62,0\",\"Pacific/Gambier|,0,408,0|-tvndoc,169,37,0\",\"Pacific/Guadalcanal|,0,409,0|-tvowac,90,192,0\",\"Pacific/Guam|,0,410,0|-1t8j1h0,0,411,0|-100f451,0,411,0|-100f450,170,195,0|-en8eg1,170,195,0|-en8eg0,107,224,0|-d9n501,107,224,0|-d9n500,170,195,0|-5hlkw1,170,195,0|-5hlkw0,171,192,1|-4nnvo1,171,192,1|-4nnvo0,170,195,0|-17w8w1,170,195,0|-17w8w0,171,192,1|-hih6d,171,192,1|-hih6c,170,195,0|-9y0w1,170,195,0|-9y0w0,171,192,1|-6ch01,171,192,1|-6ch00,170,195,0|5wcfz,170,195,0|5wcg0,171,192,1|cqkbz,171,192,1|cqkc0,170,195,0|omf3z,170,195,0|omf40,171,192,1|vgmzz,171,192,1|vgn00,170,195,0|22bb3z,170,195,0|22bb40,171,192,1|25wuzz,171,192,1|25wv00,170,195,0|3c75rz,170,195,0|3c75s0,171,192,1|3gq1pn,171,192,1|3gq1po,170,195,0|3tbtrz,170,195,0|3tbts0,171,192,1|3zt2zz,171,192,1|3zt300,170,195,0|g5z2vz,170,195,0|g5z2w0,172,195,0\",\"Pacific/Honolulu|,0,412,0|-12lnw3m,30,413,0|-j50la1,30,413,0|-j50la0,31,414,1|-j3x0a1,31,414,1|-j3x0a0,30,413,0|-ek1pa1,30,413,0|-ek1pa0,173,414,1|-cq2tg1,173,414,1|-cq2tg0,174,414,1|-cnoo21,174,414,1|-cnoo20,30,413,0|-brzum1,30,413,0|-brzum0,30,36,0\",\"Pacific/Kiritimati|,0,415,0|-100dk74,175,416,0|535eyn,175,416,0|535eyo,160,36,0|d1o6fz,160,36,0|d1o6g0,104,207,0\",\"Pacific/Kosrae|,0,417,0|-1t8j4uk,0,418,0|-100f7il,0,418,0|-100f7ik,90,192,0|-su52k1,90,192,0|-su52k0,107,224,0|-qknl01,107,224,0|-qknl00,90,192,0|-h817w1,90,192,0|-h817w0,93,195,0|-f08x41,93,195,0|-f08x40,107,224,0|-cqtd01,107,224,0|-cqtd00,90,192,0|-4r7w1,90,192,0|-4r7w0,102,200,0|f4tvzz,102,200,0|f4tw00,90,192,0\",\"Pacific/Kwajalein|,0,419,0|-100f8bk,90,192,0|-h817w1,90,192,0|-h817w0,93,195,0|-f08x41,93,195,0|-f08x40,107,224,0|-dip2c1,107,224,0|-dip2c0,90,192,0|-4r7w1,90,192,0|-4r7w0,168,403,0|cc3ynz,168,403,0|cc3yo0,102,200,0\",\"Pacific/Majuro|,0,420,0|-100f91c,90,192,0|-su52k1,90,192,0|-su52k0,107,224,0|-qknl01,107,224,0|-qknl00,90,192,0|-h817w1,90,192,0|-h817w0,93,195,0|-f08x41,93,195,0|-f08x40,107,224,0|-dj2101,107,224,0|-dj2100,90,192,0|-4r7w1,90,192,0|-4r7w0,102,200,0\",\"Pacific/Marquesas|,0,421,0|-tvncu0,176,414,0\",\"Pacific/Midway|,0,422,0|-14fxxq0,0,423,0|-usij21,0,423,0|-usij20,177,35,0\",\"Pacific/Nauru|,0,424,0|-pjxiws,143,198,0|-e9rby1,143,198,0|-e9rby0,107,224,0|-couzo1,107,224,0|-couzo0,143,198,0|4r4dlz,143,198,0|4r4dm0,102,200,0\",\"Pacific/Niue|,0,425,0|-100dhv8,178,426,0|-9wyz6p,178,426,0|-9wyz6o,158,391,0|4kdjxz,158,391,0|4kdjy0,159,35,0\",\"Pacific/Norfolk|,0,427,0|-100f8fs,179,428,0|-9x0ps1,179,428,0|-9x0ps0,143,198,0|2iiixz,143,198,0|2iiiy0,180,199,1|2ozuxz,180,199,1|2ozuy0,143,198,0|nvnexz,143,198,0|nvney0,90,192,0|pywpnz,90,192,0|pywpo0,102,200,1|q89qzz,102,200,1|q89r00,90,192,0|qhmsbz,90,192,0|qhmsc0,102,200,1|qqztnz,102,200,1|qqzto0,90,192,0|r0cuzz,90,192,0|r0cv00,102,200,1|r9pwbz,102,200,1|r9pwc0,90,192,0|rj2xnz,90,192,0|rj2xo0,102,200,1|rsfyzz,102,200,1|rsfz00,90,192,0|s1t0bz,90,192,0|s1t0c0,102,200,1|sbj0bz,102,200,1|sbj0c0,90,192,0|skw1nz,90,192,0|skw1o0,102,200,1|su92zz,102,200,1|su9300,90,192,0|t3m4bz,90,192,0|t3m4c0,102,200,1|tcz5nz,102,200,1|tcz5o0,90,192,0|tmc6zz,90,192,0|tmc700,102,200,1|tvp8bz,102,200,1|tvp8c0,90,192,0|u529nz,90,192,0|u529o0,102,200,1|uefazz,102,200,1|uefb00,90,192,0|unscbz,90,192,0|unscc0,102,200,1|ux5dnz,102,200,1|ux5do0,90,192,0|v6vdnz,90,192,0|v6vdo0,102,200,1|vg8ezz,102,200,1|vg8f00,90,192,0|vplgbz,90,192,0|vplgc0,102,200,1|vyyhnz,102,200,1|vyyho0,90,192,0|w8bizz,90,192,0|w8bj00,102,200,1|whokbz,102,200,1|whokc0,90,192,0|wr1lnz,90,192,0|wr1lo0,102,200,1|x0emzz,102,200,1|x0en00,90,192,0|x9robz,90,192,0|x9roc0,102,200,1|xj4pnz,102,200,1|xj4po0,90,192,0|xshqzz,90,192,0|xshr00,102,200,1|y1usbz,102,200,1|y1usc0,90,192,0|ybksbz,90,192,0|ybksc0,102,200,1|ykxtnz,102,200,1|ykxto0,90,192,0|yuauzz,90,192,0|yuav00,102,200,1|z3nwbz,102,200,1|z3nwc0,90,192,0|zd0xnz,90,192,0|zd0xo0,102,200,1\",\"Pacific/Noumea|,0,429,0|-u9645o,90,192,0|44uerz,90,192,0|44ues0,102,200,1|497qnz,102,200,1|497qo0,90,192,0|4nkhfz,90,192,0|4nkhg0,102,200,1|4rznzz,102,200,1|4rzo00,90,192,0|e1ouzz,90,192,0|e1ov00,102,200,1|e6ddnz,102,200,1|e6ddo0,90,192,0\",\"Pacific/Pago_Pago|,0,422,0|-14fxxq0,0,423,0|-usij21,0,423,0|-usij20,177,35,0\",\"Pacific/Palau|,0,430,0|-1t8izkk,0,431,0|-100f28l,0,431,0|-100f28k,107,224,0\",\"Pacific/Pitcairn|,0,432,0|-100dp8s,181,433,0|es2cxz,181,433,0|es2cy0,182,40,0\",\"Pacific/Pohnpei|,0,434,0|-1t8j3ys,0,435,0|-100f6mt,0,435,0|-100f6ms,90,192,0|-su52k1,90,192,0|-su52k0,107,224,0|-qknl01,107,224,0|-qknl00,90,192,0|-h817w1,90,192,0|-h817w0,93,195,0|-f08x41,93,195,0|-f08x40,107,224,0|-cqtd01,107,224,0|-cqtd00,90,192,0\",\"Pacific/Port_Moresby|,0,436,0|-1ayytx4,161,393,0|-1354j8x,161,393,0|-1354j8w,93,195,0\",\"Pacific/Rarotonga|,0,437,0|-100djqw,183,413,0|4mj95z,183,413,0|4mj960,176,414,1|4sal1z,176,414,1|4sal20,160,36,0|54jd3z,160,36,0|54jd40,176,414,1|5b0npz,176,414,1|5b0nq0,160,36,0|5n9frz,160,36,0|5n9fs0,176,414,1|5tqqdz,176,414,1|5tqqe0,160,36,0|65zifz,160,36,0|65zig0,176,414,1|6ctrpz,176,414,1|6ctrq0,160,36,0|6p2jrz,160,36,0|6p2js0,176,414,1|6vjudz,176,414,1|6vjue0,160,36,0|77smfz,160,36,0|77smg0,176,414,1|7e9x1z,176,414,1|7e9x20,160,36,0|7qip3z,160,36,0|7qip40,176,414,1|7wzzpz,176,414,1|7wzzq0,160,36,0|898rrz,160,36,0|898rs0,176,414,1|8fq2dz,176,414,1|8fq2e0,160,36,0|8ryufz,160,36,0|8ryug0,176,414,1|8yg51z,176,414,1|8yg520,160,36,0|9aox3z,160,36,0|9aox40,176,414,1|9hj6dz,176,414,1|9hj6e0,160,36,0|9tryfz,160,36,0|9tryg0,176,414,1|a0991z,176,414,1|a09920,160,36,0|aci13z,160,36,0|aci140,176,414,1|aizbpz,176,414,1|aizbq0,160,36,0|av83rz,160,36,0|av83s0,176,414,1|b1pedz,176,414,1|b1pee0,160,36,0\",\"Pacific/Saipan|,0,410,0|-1t8j1h0,0,411,0|-100f451,0,411,0|-100f450,170,195,0|-en8eg1,170,195,0|-en8eg0,107,224,0|-d9n501,107,224,0|-d9n500,170,195,0|-5hlkw1,170,195,0|-5hlkw0,171,192,1|-4nnvo1,171,192,1|-4nnvo0,170,195,0|-17w8w1,170,195,0|-17w8w0,171,192,1|-hih6d,171,192,1|-hih6c,170,195,0|-9y0w1,170,195,0|-9y0w0,171,192,1|-6ch01,171,192,1|-6ch00,170,195,0|5wcfz,170,195,0|5wcg0,171,192,1|cqkbz,171,192,1|cqkc0,170,195,0|omf3z,170,195,0|omf40,171,192,1|vgmzz,171,192,1|vgn00,170,195,0|22bb3z,170,195,0|22bb40,171,192,1|25wuzz,171,192,1|25wv00,170,195,0|3c75rz,170,195,0|3c75s0,171,192,1|3gq1pn,171,192,1|3gq1po,170,195,0|3tbtrz,170,195,0|3tbts0,171,192,1|3zt2zz,171,192,1|3zt300,170,195,0|g5z2vz,170,195,0|g5z2w0,172,195,0\",\"Pacific/Tahiti|,0,438,0|-tvnayw,160,36,0\",\"Pacific/Tarawa|,0,439,0|-100f9dg,102,200,0\",\"Pacific/Tongatapu|,0,440,0|-100fbk8,184,441,0|-f4vrld,184,441,0|-f4vrlc,103,201,0|fj6mrz,103,201,0|fj6ms0,104,207,1|frmc3z,104,207,1|frmc40,103,201,0|g3i43z,103,201,0|g3i440,104,207,1|g7tlbz,104,207,1|g7tlc0,103,201,0|gm86rz,103,201,0|gm86s0,104,207,1|gqjnzz,104,207,1|gqjo00,103,201,0|og66rz,103,201,0|og66s0,104,207,1|ojrtfz,104,207,1|ojrtg0,103,201,0\",\"Pacific/Wake|,0,442,0|-100f86s,102,200,0\",\"Pacific/Wallis|,0,443,0|-100fbdk,102,200,0\"],\"abbrvs\":\"LMT|GMT|+0020|+0030|+0230|EAT|+0245|PMT|WET|WEST|CET|CEST|WAT|-01|CAT|EET|EEST|+00|+01|SAST|CAST|MMT|WAST|+0130|NST|NWT|NPT|BST|BDT|AHST|HST|HDT|AST|AWT|APT|AHDT|YST|AKST|AKDT|-03|-02|CMT|-04|-0430|AMT|CST|CDT|CWT|CPT|EST|MST|PST|MDT|BMT|ADT|-0530|-05|PDT|MWT|MPT|-00|MDDT|EDT|SJMT|YDT|YWT|YPT|YDDT|PWT|PPT|EWT|EPT|NDT|ADDT|KMT|QMT|-0345|HMT|PDDT|EDDT|FFMT|-0330|-0230|-0130|PPMT|SMT|CDDT|SDMT|NDDT|+08|+11|+07|+05|+10|AEST|AEDT|+06|NZMT|NZST|NZDT|+03|+02|+12|+13|+14|+04|+0730|+09|+0530|+0630|IST|IDT|PLMT|HKT|HKST|HKWT|JST|IMT|+0720|WIB|+0930|WIT|JMT|IDDT|+0430|PKT|PKST|+0545|+0820|WITA|KST|KDT|TBMT|TMT|+0330|JDT|RMT|FMT|ACST|ACDT|+0845|+0945|+1030|+1130|AWST|AWDT|+0120|CEMT|MSK|MSD|DMT|BDST|WEMT|MDST|LST|SET|WMT|+0220|-1130|-11|-10|PMMT|+1215|+1245|+1345|EMT|-07|-06|-12|-09|GST|GDT|ChST|HWT|HPT|-1040|-0930|SST|-1120|+1112|+1230|-0830|-08|-1030|+1220|GMT+14|GMT+13|GMT+12|GMT+11|GMT+10|GMT+9|GMT+8|GMT+7|GMT+6|GMT+5|GMT+4|GMT+3|GMT+2|GMT+1|GMT-1|GMT-2|GMT-3|GMT-4|GMT-5|GMT-6|GMT-7|GMT-8|GMT-9|GMT-10|GMT-11|GMT-12\",\"offsets\":\"-1g|0|xc|1e0|6tg|6y0|8c0|7n0|kc|fl|2s0|5k0|-qw|mn|-2vw|-2s0|618|5sl|-1ek|-zg|-2g0|56o|460|5us|60w|-1zw|-226|2sc|18w|-1p9|2fw|1vw|360|xya|-wpq|-uk0|-rs0|-p00|12wo|-rrc|-m80|-be4|-b40|-8xc|-8c0|-5k0|-ato|-bw0|-c6k|-c3c|-cdo|-cqs|-ctg|-c44|-cos|-cac|-c2s|-cnc|-crn|-ci0|-aog|-gys|-go0|-dw0|-74s|-jho|-jg0|-b1h|-8z8|-gc0|-fa0|-aks|-b8g|-dps|-lip|-a44|-g2g|-ce8|-ce4|-9ow|-eq8|-eso|-g8c|-jn8|-fkd|-lks|-adw|-3gg|-ptg|-m9k|-jfw|-fdn|-l0g|-cxs|-gio|-mpz|-74o|-b3o|-b6s|-9rg|-6zg|-9q0|-6y0|-d68|-e7y|-grg|-es8|-ejc|-ars|-af0|-bs0|-f94|-f9c|-kjs|-fye|-g1i|-fzn|-g5v|-g2f|-fr4|-g7j|-g1d|15rv|-ow5|-fvq|-fpo|-cmc|-9uc|-e9o|-eac|-lwa|-6m4|-fz8|-fzc|-b44|-bb8|-iio|-jpg|-g83|-glg|16au|-od6|-id0|-aeg|-bzw|-iks|-aer|-460|-ebu|-dpe|-gcg|101a|-umq|-604|-iuj|-irc|-is3|-9kw|-jc4|-a7s|-a84|-a7o|-kr6|-de8|-ddo|-bu0|-c8p|-d4s|-d3a|-hig|-6go|-jdo|-ck0|-a4o|-cy0|-cyo|-8ms|-42g|15lz|-p21|-jyw|-g5g|-cqk|-gj0|-lo4|-ep8|-mss|-p0c|-hzo|14sh|-pvj|m80|uk0|jg0|dw0|rs0|go0|wd4|vy0|yq0|xc0|1040|1zo|8ng|e90|6nk|wv8|12w0|9b4|b40|al4|at8|9m8|884|880|9jk|98c|im4|fic|6ko|dtc|la4|ku0|l0g|p00|l7c|esc|esk|fa0|i20|6q0|gqs|gcw|n98|a8o|cqo|6ac|6ds|6hz|jr4|jqu|l56|nm0|gz0|jb5|js0|kdc|q20|qe0|6iu|6ig|ctc|ci0|tdo|cf0|fss|fz0|p3p|gd4|eva|h72|ity|j8d|kfk|n5c|l0y|rxc|m40|-189c|meo|66g|g5c|fcs|dl6|9ic|k8w|nac|bs4|c4g|qfc|ceh|nig|mhj|sgs|mi0|ctz|8an|9iw|9q0|glo|pvn|fqf|jsk|g7w|qiu|of7|o0y|htb|b89|af5|88o|-4r4|-5aw|-c06|-986|-2uo|-4cs|-194|-34o|-42o|-6rk|-apo|pnw|t60|sc8|q70|ra4|o88|nv4|ob0|r30|rl8|tgk|qug|lgc|s04|wk|3ok|3pc|a4|8wc|4e4|3so|2h4|2o8|t6|4u0|3j8|1kw|1dm|5c8|5bo|2bw|-15o|-169|1lr|-zo|-23|4md|5d4|5ew|5ng|97c|150|-ok|2os|53s|53c|1d8|6yh|707|9s7|ck7|4gy|78y|2b8|99w|8j6|6bc|6ao|4bg|3cc|2se|4l0|3o8|8yo|44o|30x|4os|3w0|4fc|6hc|des|jks|hy4|a9o|dm0|anc|a9s|yv4|-vsw|-vy0|st4|r8w|xz0|y10|zf0|1270|-12k4|s3w|-k94|v64|-vok|-xc0|-vpk|x4w|x6s|-glc|-ozo|tmc|-13v0|qt0|-t8e|-t60|-qe0|-t4w|-tmo|-10hg|u6k|uzk|vpc|-pu0|z20|-vm0|uws|-vgs|-vhc|v3s|v40|uto|-15rg|owk|-o38|-nm0|-11d8|tas|r94|-tl4|-rp4|w1g|y88|y9c|uus|y1k\"}) \n}","// This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment.\nrequire('../../js/transition.js')\nrequire('../../js/alert.js')\nrequire('../../js/button.js')\nrequire('../../js/carousel.js')\nrequire('../../js/collapse.js')\nrequire('../../js/dropdown.js')\nrequire('../../js/modal.js')\nrequire('../../js/tooltip.js')\nrequire('../../js/popover.js')\nrequire('../../js/scrollspy.js')\nrequire('../../js/tab.js')\nrequire('../../js/affix.js')","/* ========================================================================\n * Bootstrap: transition.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#transitions\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // CSS TRANSITION SUPPORT (Shoutout: https://modernizr.com/)\n // ============================================================\n\n function transitionEnd() {\n var el = document.createElement('bootstrap')\n\n var transEndEventNames = {\n WebkitTransition : 'webkitTransitionEnd',\n MozTransition : 'transitionend',\n OTransition : 'oTransitionEnd otransitionend',\n transition : 'transitionend'\n }\n\n for (var name in transEndEventNames) {\n if (el.style[name] !== undefined) {\n return { end: transEndEventNames[name] }\n }\n }\n\n return false // explicit for ie8 ( ._.)\n }\n\n // https://blog.alexmaccaw.com/css-transitions\n $.fn.emulateTransitionEnd = function (duration) {\n var called = false\n var $el = this\n $(this).one('bsTransitionEnd', function () { called = true })\n var callback = function () { if (!called) $($el).trigger($.support.transition.end) }\n setTimeout(callback, duration)\n return this\n }\n\n $(function () {\n $.support.transition = transitionEnd()\n\n if (!$.support.transition) return\n\n $.event.special.bsTransitionEnd = {\n bindType: $.support.transition.end,\n delegateType: $.support.transition.end,\n handle: function (e) {\n if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)\n }\n }\n })\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: alert.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#alerts\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // ALERT CLASS DEFINITION\n // ======================\n\n var dismiss = '[data-dismiss=\"alert\"]'\n var Alert = function (el) {\n $(el).on('click', dismiss, this.close)\n }\n\n Alert.VERSION = '3.4.1'\n\n Alert.TRANSITION_DURATION = 150\n\n Alert.prototype.close = function (e) {\n var $this = $(this)\n var selector = $this.attr('data-target')\n\n if (!selector) {\n selector = $this.attr('href')\n selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n }\n\n selector = selector === '#' ? [] : selector\n var $parent = $(document).find(selector)\n\n if (e) e.preventDefault()\n\n if (!$parent.length) {\n $parent = $this.closest('.alert')\n }\n\n $parent.trigger(e = $.Event('close.bs.alert'))\n\n if (e.isDefaultPrevented()) return\n\n $parent.removeClass('in')\n\n function removeElement() {\n // detach from parent, fire event then clean up data\n $parent.detach().trigger('closed.bs.alert').remove()\n }\n\n $.support.transition && $parent.hasClass('fade') ?\n $parent\n .one('bsTransitionEnd', removeElement)\n .emulateTransitionEnd(Alert.TRANSITION_DURATION) :\n removeElement()\n }\n\n\n // ALERT PLUGIN DEFINITION\n // =======================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.alert')\n\n if (!data) $this.data('bs.alert', (data = new Alert(this)))\n if (typeof option == 'string') data[option].call($this)\n })\n }\n\n var old = $.fn.alert\n\n $.fn.alert = Plugin\n $.fn.alert.Constructor = Alert\n\n\n // ALERT NO CONFLICT\n // =================\n\n $.fn.alert.noConflict = function () {\n $.fn.alert = old\n return this\n }\n\n\n // ALERT DATA-API\n // ==============\n\n $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: button.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#buttons\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // BUTTON PUBLIC CLASS DEFINITION\n // ==============================\n\n var Button = function (element, options) {\n this.$element = $(element)\n this.options = $.extend({}, Button.DEFAULTS, options)\n this.isLoading = false\n }\n\n Button.VERSION = '3.4.1'\n\n Button.DEFAULTS = {\n loadingText: 'loading...'\n }\n\n Button.prototype.setState = function (state) {\n var d = 'disabled'\n var $el = this.$element\n var val = $el.is('input') ? 'val' : 'html'\n var data = $el.data()\n\n state += 'Text'\n\n if (data.resetText == null) $el.data('resetText', $el[val]())\n\n // push to event loop to allow forms to submit\n setTimeout($.proxy(function () {\n $el[val](data[state] == null ? this.options[state] : data[state])\n\n if (state == 'loadingText') {\n this.isLoading = true\n $el.addClass(d).attr(d, d).prop(d, true)\n } else if (this.isLoading) {\n this.isLoading = false\n $el.removeClass(d).removeAttr(d).prop(d, false)\n }\n }, this), 0)\n }\n\n Button.prototype.toggle = function () {\n var changed = true\n var $parent = this.$element.closest('[data-toggle=\"buttons\"]')\n\n if ($parent.length) {\n var $input = this.$element.find('input')\n if ($input.prop('type') == 'radio') {\n if ($input.prop('checked')) changed = false\n $parent.find('.active').removeClass('active')\n this.$element.addClass('active')\n } else if ($input.prop('type') == 'checkbox') {\n if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false\n this.$element.toggleClass('active')\n }\n $input.prop('checked', this.$element.hasClass('active'))\n if (changed) $input.trigger('change')\n } else {\n this.$element.attr('aria-pressed', !this.$element.hasClass('active'))\n this.$element.toggleClass('active')\n }\n }\n\n\n // BUTTON PLUGIN DEFINITION\n // ========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.button')\n var options = typeof option == 'object' && option\n\n if (!data) $this.data('bs.button', (data = new Button(this, options)))\n\n if (option == 'toggle') data.toggle()\n else if (option) data.setState(option)\n })\n }\n\n var old = $.fn.button\n\n $.fn.button = Plugin\n $.fn.button.Constructor = Button\n\n\n // BUTTON NO CONFLICT\n // ==================\n\n $.fn.button.noConflict = function () {\n $.fn.button = old\n return this\n }\n\n\n // BUTTON DATA-API\n // ===============\n\n $(document)\n .on('click.bs.button.data-api', '[data-toggle^=\"button\"]', function (e) {\n var $btn = $(e.target).closest('.btn')\n Plugin.call($btn, 'toggle')\n if (!($(e.target).is('input[type=\"radio\"], input[type=\"checkbox\"]'))) {\n // Prevent double click on radios, and the double selections (so cancellation) on checkboxes\n e.preventDefault()\n // The target component still receive the focus\n if ($btn.is('input,button')) $btn.trigger('focus')\n else $btn.find('input:visible,button:visible').first().trigger('focus')\n }\n })\n .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^=\"button\"]', function (e) {\n $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))\n })\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: carousel.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#carousel\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // CAROUSEL CLASS DEFINITION\n // =========================\n\n var Carousel = function (element, options) {\n this.$element = $(element)\n this.$indicators = this.$element.find('.carousel-indicators')\n this.options = options\n this.paused = null\n this.sliding = null\n this.interval = null\n this.$active = null\n this.$items = null\n\n this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this))\n\n this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element\n .on('mouseenter.bs.carousel', $.proxy(this.pause, this))\n .on('mouseleave.bs.carousel', $.proxy(this.cycle, this))\n }\n\n Carousel.VERSION = '3.4.1'\n\n Carousel.TRANSITION_DURATION = 600\n\n Carousel.DEFAULTS = {\n interval: 5000,\n pause: 'hover',\n wrap: true,\n keyboard: true\n }\n\n Carousel.prototype.keydown = function (e) {\n if (/input|textarea/i.test(e.target.tagName)) return\n switch (e.which) {\n case 37: this.prev(); break\n case 39: this.next(); break\n default: return\n }\n\n e.preventDefault()\n }\n\n Carousel.prototype.cycle = function (e) {\n e || (this.paused = false)\n\n this.interval && clearInterval(this.interval)\n\n this.options.interval\n && !this.paused\n && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))\n\n return this\n }\n\n Carousel.prototype.getItemIndex = function (item) {\n this.$items = item.parent().children('.item')\n return this.$items.index(item || this.$active)\n }\n\n Carousel.prototype.getItemForDirection = function (direction, active) {\n var activeIndex = this.getItemIndex(active)\n var willWrap = (direction == 'prev' && activeIndex === 0)\n || (direction == 'next' && activeIndex == (this.$items.length - 1))\n if (willWrap && !this.options.wrap) return active\n var delta = direction == 'prev' ? -1 : 1\n var itemIndex = (activeIndex + delta) % this.$items.length\n return this.$items.eq(itemIndex)\n }\n\n Carousel.prototype.to = function (pos) {\n var that = this\n var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active'))\n\n if (pos > (this.$items.length - 1) || pos < 0) return\n\n if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, \"slid\"\n if (activeIndex == pos) return this.pause().cycle()\n\n return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos))\n }\n\n Carousel.prototype.pause = function (e) {\n e || (this.paused = true)\n\n if (this.$element.find('.next, .prev').length && $.support.transition) {\n this.$element.trigger($.support.transition.end)\n this.cycle(true)\n }\n\n this.interval = clearInterval(this.interval)\n\n return this\n }\n\n Carousel.prototype.next = function () {\n if (this.sliding) return\n return this.slide('next')\n }\n\n Carousel.prototype.prev = function () {\n if (this.sliding) return\n return this.slide('prev')\n }\n\n Carousel.prototype.slide = function (type, next) {\n var $active = this.$element.find('.item.active')\n var $next = next || this.getItemForDirection(type, $active)\n var isCycling = this.interval\n var direction = type == 'next' ? 'left' : 'right'\n var that = this\n\n if ($next.hasClass('active')) return (this.sliding = false)\n\n var relatedTarget = $next[0]\n var slideEvent = $.Event('slide.bs.carousel', {\n relatedTarget: relatedTarget,\n direction: direction\n })\n this.$element.trigger(slideEvent)\n if (slideEvent.isDefaultPrevented()) return\n\n this.sliding = true\n\n isCycling && this.pause()\n\n if (this.$indicators.length) {\n this.$indicators.find('.active').removeClass('active')\n var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)])\n $nextIndicator && $nextIndicator.addClass('active')\n }\n\n var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, \"slid\"\n if ($.support.transition && this.$element.hasClass('slide')) {\n $next.addClass(type)\n if (typeof $next === 'object' && $next.length) {\n $next[0].offsetWidth // force reflow\n }\n $active.addClass(direction)\n $next.addClass(direction)\n $active\n .one('bsTransitionEnd', function () {\n $next.removeClass([type, direction].join(' ')).addClass('active')\n $active.removeClass(['active', direction].join(' '))\n that.sliding = false\n setTimeout(function () {\n that.$element.trigger(slidEvent)\n }, 0)\n })\n .emulateTransitionEnd(Carousel.TRANSITION_DURATION)\n } else {\n $active.removeClass('active')\n $next.addClass('active')\n this.sliding = false\n this.$element.trigger(slidEvent)\n }\n\n isCycling && this.cycle()\n\n return this\n }\n\n\n // CAROUSEL PLUGIN DEFINITION\n // ==========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.carousel')\n var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)\n var action = typeof option == 'string' ? option : options.slide\n\n if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))\n if (typeof option == 'number') data.to(option)\n else if (action) data[action]()\n else if (options.interval) data.pause().cycle()\n })\n }\n\n var old = $.fn.carousel\n\n $.fn.carousel = Plugin\n $.fn.carousel.Constructor = Carousel\n\n\n // CAROUSEL NO CONFLICT\n // ====================\n\n $.fn.carousel.noConflict = function () {\n $.fn.carousel = old\n return this\n }\n\n\n // CAROUSEL DATA-API\n // =================\n\n var clickHandler = function (e) {\n var $this = $(this)\n var href = $this.attr('href')\n if (href) {\n href = href.replace(/.*(?=#[^\\s]+$)/, '') // strip for ie7\n }\n\n var target = $this.attr('data-target') || href\n var $target = $(document).find(target)\n\n if (!$target.hasClass('carousel')) return\n\n var options = $.extend({}, $target.data(), $this.data())\n var slideIndex = $this.attr('data-slide-to')\n if (slideIndex) options.interval = false\n\n Plugin.call($target, options)\n\n if (slideIndex) {\n $target.data('bs.carousel').to(slideIndex)\n }\n\n e.preventDefault()\n }\n\n $(document)\n .on('click.bs.carousel.data-api', '[data-slide]', clickHandler)\n .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler)\n\n $(window).on('load', function () {\n $('[data-ride=\"carousel\"]').each(function () {\n var $carousel = $(this)\n Plugin.call($carousel, $carousel.data())\n })\n })\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: collapse.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#collapse\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n/* jshint latedef: false */\n\n+function ($) {\n 'use strict';\n\n // COLLAPSE PUBLIC CLASS DEFINITION\n // ================================\n\n var Collapse = function (element, options) {\n this.$element = $(element)\n this.options = $.extend({}, Collapse.DEFAULTS, options)\n this.$trigger = $('[data-toggle=\"collapse\"][href=\"#' + element.id + '\"],' +\n '[data-toggle=\"collapse\"][data-target=\"#' + element.id + '\"]')\n this.transitioning = null\n\n if (this.options.parent) {\n this.$parent = this.getParent()\n } else {\n this.addAriaAndCollapsedClass(this.$element, this.$trigger)\n }\n\n if (this.options.toggle) this.toggle()\n }\n\n Collapse.VERSION = '3.4.1'\n\n Collapse.TRANSITION_DURATION = 350\n\n Collapse.DEFAULTS = {\n toggle: true\n }\n\n Collapse.prototype.dimension = function () {\n var hasWidth = this.$element.hasClass('width')\n return hasWidth ? 'width' : 'height'\n }\n\n Collapse.prototype.show = function () {\n if (this.transitioning || this.$element.hasClass('in')) return\n\n var activesData\n var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing')\n\n if (actives && actives.length) {\n activesData = actives.data('bs.collapse')\n if (activesData && activesData.transitioning) return\n }\n\n var startEvent = $.Event('show.bs.collapse')\n this.$element.trigger(startEvent)\n if (startEvent.isDefaultPrevented()) return\n\n if (actives && actives.length) {\n Plugin.call(actives, 'hide')\n activesData || actives.data('bs.collapse', null)\n }\n\n var dimension = this.dimension()\n\n this.$element\n .removeClass('collapse')\n .addClass('collapsing')[dimension](0)\n .attr('aria-expanded', true)\n\n this.$trigger\n .removeClass('collapsed')\n .attr('aria-expanded', true)\n\n this.transitioning = 1\n\n var complete = function () {\n this.$element\n .removeClass('collapsing')\n .addClass('collapse in')[dimension]('')\n this.transitioning = 0\n this.$element\n .trigger('shown.bs.collapse')\n }\n\n if (!$.support.transition) return complete.call(this)\n\n var scrollSize = $.camelCase(['scroll', dimension].join('-'))\n\n this.$element\n .one('bsTransitionEnd', $.proxy(complete, this))\n .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize])\n }\n\n Collapse.prototype.hide = function () {\n if (this.transitioning || !this.$element.hasClass('in')) return\n\n var startEvent = $.Event('hide.bs.collapse')\n this.$element.trigger(startEvent)\n if (startEvent.isDefaultPrevented()) return\n\n var dimension = this.dimension()\n\n this.$element[dimension](this.$element[dimension]())[0].offsetHeight\n\n this.$element\n .addClass('collapsing')\n .removeClass('collapse in')\n .attr('aria-expanded', false)\n\n this.$trigger\n .addClass('collapsed')\n .attr('aria-expanded', false)\n\n this.transitioning = 1\n\n var complete = function () {\n this.transitioning = 0\n this.$element\n .removeClass('collapsing')\n .addClass('collapse')\n .trigger('hidden.bs.collapse')\n }\n\n if (!$.support.transition) return complete.call(this)\n\n this.$element\n [dimension](0)\n .one('bsTransitionEnd', $.proxy(complete, this))\n .emulateTransitionEnd(Collapse.TRANSITION_DURATION)\n }\n\n Collapse.prototype.toggle = function () {\n this[this.$element.hasClass('in') ? 'hide' : 'show']()\n }\n\n Collapse.prototype.getParent = function () {\n return $(document).find(this.options.parent)\n .find('[data-toggle=\"collapse\"][data-parent=\"' + this.options.parent + '\"]')\n .each($.proxy(function (i, element) {\n var $element = $(element)\n this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)\n }, this))\n .end()\n }\n\n Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {\n var isOpen = $element.hasClass('in')\n\n $element.attr('aria-expanded', isOpen)\n $trigger\n .toggleClass('collapsed', !isOpen)\n .attr('aria-expanded', isOpen)\n }\n\n function getTargetFromTrigger($trigger) {\n var href\n var target = $trigger.attr('data-target')\n || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '') // strip for ie7\n\n return $(document).find(target)\n }\n\n\n // COLLAPSE PLUGIN DEFINITION\n // ==========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.collapse')\n var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false\n if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.collapse\n\n $.fn.collapse = Plugin\n $.fn.collapse.Constructor = Collapse\n\n\n // COLLAPSE NO CONFLICT\n // ====================\n\n $.fn.collapse.noConflict = function () {\n $.fn.collapse = old\n return this\n }\n\n\n // COLLAPSE DATA-API\n // =================\n\n $(document).on('click.bs.collapse.data-api', '[data-toggle=\"collapse\"]', function (e) {\n var $this = $(this)\n\n if (!$this.attr('data-target')) e.preventDefault()\n\n var $target = getTargetFromTrigger($this)\n var data = $target.data('bs.collapse')\n var option = data ? 'toggle' : $this.data()\n\n Plugin.call($target, option)\n })\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: dropdown.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#dropdowns\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // DROPDOWN CLASS DEFINITION\n // =========================\n\n var backdrop = '.dropdown-backdrop'\n var toggle = '[data-toggle=\"dropdown\"]'\n var Dropdown = function (element) {\n $(element).on('click.bs.dropdown', this.toggle)\n }\n\n Dropdown.VERSION = '3.4.1'\n\n function getParent($this) {\n var selector = $this.attr('data-target')\n\n if (!selector) {\n selector = $this.attr('href')\n selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n }\n\n var $parent = selector !== '#' ? $(document).find(selector) : null\n\n return $parent && $parent.length ? $parent : $this.parent()\n }\n\n function clearMenus(e) {\n if (e && e.which === 3) return\n $(backdrop).remove()\n $(toggle).each(function () {\n var $this = $(this)\n var $parent = getParent($this)\n var relatedTarget = { relatedTarget: this }\n\n if (!$parent.hasClass('open')) return\n\n if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return\n\n $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))\n\n if (e.isDefaultPrevented()) return\n\n $this.attr('aria-expanded', 'false')\n $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget))\n })\n }\n\n Dropdown.prototype.toggle = function (e) {\n var $this = $(this)\n\n if ($this.is('.disabled, :disabled')) return\n\n var $parent = getParent($this)\n var isActive = $parent.hasClass('open')\n\n clearMenus()\n\n if (!isActive) {\n if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {\n // if mobile we use a backdrop because click events don't delegate\n $(document.createElement('div'))\n .addClass('dropdown-backdrop')\n .insertAfter($(this))\n .on('click', clearMenus)\n }\n\n var relatedTarget = { relatedTarget: this }\n $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))\n\n if (e.isDefaultPrevented()) return\n\n $this\n .trigger('focus')\n .attr('aria-expanded', 'true')\n\n $parent\n .toggleClass('open')\n .trigger($.Event('shown.bs.dropdown', relatedTarget))\n }\n\n return false\n }\n\n Dropdown.prototype.keydown = function (e) {\n if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return\n\n var $this = $(this)\n\n e.preventDefault()\n e.stopPropagation()\n\n if ($this.is('.disabled, :disabled')) return\n\n var $parent = getParent($this)\n var isActive = $parent.hasClass('open')\n\n if (!isActive && e.which != 27 || isActive && e.which == 27) {\n if (e.which == 27) $parent.find(toggle).trigger('focus')\n return $this.trigger('click')\n }\n\n var desc = ' li:not(.disabled):visible a'\n var $items = $parent.find('.dropdown-menu' + desc)\n\n if (!$items.length) return\n\n var index = $items.index(e.target)\n\n if (e.which == 38 && index > 0) index-- // up\n if (e.which == 40 && index < $items.length - 1) index++ // down\n if (!~index) index = 0\n\n $items.eq(index).trigger('focus')\n }\n\n\n // DROPDOWN PLUGIN DEFINITION\n // ==========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.dropdown')\n\n if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))\n if (typeof option == 'string') data[option].call($this)\n })\n }\n\n var old = $.fn.dropdown\n\n $.fn.dropdown = Plugin\n $.fn.dropdown.Constructor = Dropdown\n\n\n // DROPDOWN NO CONFLICT\n // ====================\n\n $.fn.dropdown.noConflict = function () {\n $.fn.dropdown = old\n return this\n }\n\n\n // APPLY TO STANDARD DROPDOWN ELEMENTS\n // ===================================\n\n $(document)\n .on('click.bs.dropdown.data-api', clearMenus)\n .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })\n .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)\n .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)\n .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown)\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: modal.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#modals\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // MODAL CLASS DEFINITION\n // ======================\n\n var Modal = function (element, options) {\n this.options = options\n this.$body = $(document.body)\n this.$element = $(element)\n this.$dialog = this.$element.find('.modal-dialog')\n this.$backdrop = null\n this.isShown = null\n this.originalBodyPad = null\n this.scrollbarWidth = 0\n this.ignoreBackdropClick = false\n this.fixedContent = '.navbar-fixed-top, .navbar-fixed-bottom'\n\n if (this.options.remote) {\n this.$element\n .find('.modal-content')\n .load(this.options.remote, $.proxy(function () {\n this.$element.trigger('loaded.bs.modal')\n }, this))\n }\n }\n\n Modal.VERSION = '3.4.1'\n\n Modal.TRANSITION_DURATION = 300\n Modal.BACKDROP_TRANSITION_DURATION = 150\n\n Modal.DEFAULTS = {\n backdrop: true,\n keyboard: true,\n show: true\n }\n\n Modal.prototype.toggle = function (_relatedTarget) {\n return this.isShown ? this.hide() : this.show(_relatedTarget)\n }\n\n Modal.prototype.show = function (_relatedTarget) {\n var that = this\n var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })\n\n this.$element.trigger(e)\n\n if (this.isShown || e.isDefaultPrevented()) return\n\n this.isShown = true\n\n this.checkScrollbar()\n this.setScrollbar()\n this.$body.addClass('modal-open')\n\n this.escape()\n this.resize()\n\n this.$element.on('click.dismiss.bs.modal', '[data-dismiss=\"modal\"]', $.proxy(this.hide, this))\n\n this.$dialog.on('mousedown.dismiss.bs.modal', function () {\n that.$element.one('mouseup.dismiss.bs.modal', function (e) {\n if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true\n })\n })\n\n this.backdrop(function () {\n var transition = $.support.transition && that.$element.hasClass('fade')\n\n if (!that.$element.parent().length) {\n that.$element.appendTo(that.$body) // don't move modals dom position\n }\n\n that.$element\n .show()\n .scrollTop(0)\n\n that.adjustDialog()\n\n if (transition) {\n that.$element[0].offsetWidth // force reflow\n }\n\n that.$element.addClass('in')\n\n that.enforceFocus()\n\n var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })\n\n transition ?\n that.$dialog // wait for modal to slide in\n .one('bsTransitionEnd', function () {\n that.$element.trigger('focus').trigger(e)\n })\n .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n that.$element.trigger('focus').trigger(e)\n })\n }\n\n Modal.prototype.hide = function (e) {\n if (e) e.preventDefault()\n\n e = $.Event('hide.bs.modal')\n\n this.$element.trigger(e)\n\n if (!this.isShown || e.isDefaultPrevented()) return\n\n this.isShown = false\n\n this.escape()\n this.resize()\n\n $(document).off('focusin.bs.modal')\n\n this.$element\n .removeClass('in')\n .off('click.dismiss.bs.modal')\n .off('mouseup.dismiss.bs.modal')\n\n this.$dialog.off('mousedown.dismiss.bs.modal')\n\n $.support.transition && this.$element.hasClass('fade') ?\n this.$element\n .one('bsTransitionEnd', $.proxy(this.hideModal, this))\n .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n this.hideModal()\n }\n\n Modal.prototype.enforceFocus = function () {\n $(document)\n .off('focusin.bs.modal') // guard against infinite focus loop\n .on('focusin.bs.modal', $.proxy(function (e) {\n if (document !== e.target &&\n this.$element[0] !== e.target &&\n !this.$element.has(e.target).length) {\n this.$element.trigger('focus')\n }\n }, this))\n }\n\n Modal.prototype.escape = function () {\n if (this.isShown && this.options.keyboard) {\n this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {\n e.which == 27 && this.hide()\n }, this))\n } else if (!this.isShown) {\n this.$element.off('keydown.dismiss.bs.modal')\n }\n }\n\n Modal.prototype.resize = function () {\n if (this.isShown) {\n $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))\n } else {\n $(window).off('resize.bs.modal')\n }\n }\n\n Modal.prototype.hideModal = function () {\n var that = this\n this.$element.hide()\n this.backdrop(function () {\n that.$body.removeClass('modal-open')\n that.resetAdjustments()\n that.resetScrollbar()\n that.$element.trigger('hidden.bs.modal')\n })\n }\n\n Modal.prototype.removeBackdrop = function () {\n this.$backdrop && this.$backdrop.remove()\n this.$backdrop = null\n }\n\n Modal.prototype.backdrop = function (callback) {\n var that = this\n var animate = this.$element.hasClass('fade') ? 'fade' : ''\n\n if (this.isShown && this.options.backdrop) {\n var doAnimate = $.support.transition && animate\n\n this.$backdrop = $(document.createElement('div'))\n .addClass('modal-backdrop ' + animate)\n .appendTo(this.$body)\n\n this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {\n if (this.ignoreBackdropClick) {\n this.ignoreBackdropClick = false\n return\n }\n if (e.target !== e.currentTarget) return\n this.options.backdrop == 'static'\n ? this.$element[0].focus()\n : this.hide()\n }, this))\n\n if (doAnimate) this.$backdrop[0].offsetWidth // force reflow\n\n this.$backdrop.addClass('in')\n\n if (!callback) return\n\n doAnimate ?\n this.$backdrop\n .one('bsTransitionEnd', callback)\n .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n callback()\n\n } else if (!this.isShown && this.$backdrop) {\n this.$backdrop.removeClass('in')\n\n var callbackRemove = function () {\n that.removeBackdrop()\n callback && callback()\n }\n $.support.transition && this.$element.hasClass('fade') ?\n this.$backdrop\n .one('bsTransitionEnd', callbackRemove)\n .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n callbackRemove()\n\n } else if (callback) {\n callback()\n }\n }\n\n // these following methods are used to handle overflowing modals\n\n Modal.prototype.handleUpdate = function () {\n this.adjustDialog()\n }\n\n Modal.prototype.adjustDialog = function () {\n var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight\n\n this.$element.css({\n paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',\n paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''\n })\n }\n\n Modal.prototype.resetAdjustments = function () {\n this.$element.css({\n paddingLeft: '',\n paddingRight: ''\n })\n }\n\n Modal.prototype.checkScrollbar = function () {\n var fullWindowWidth = window.innerWidth\n if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8\n var documentElementRect = document.documentElement.getBoundingClientRect()\n fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left)\n }\n this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth\n this.scrollbarWidth = this.measureScrollbar()\n }\n\n Modal.prototype.setScrollbar = function () {\n var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)\n this.originalBodyPad = document.body.style.paddingRight || ''\n var scrollbarWidth = this.scrollbarWidth\n if (this.bodyIsOverflowing) {\n this.$body.css('padding-right', bodyPad + scrollbarWidth)\n $(this.fixedContent).each(function (index, element) {\n var actualPadding = element.style.paddingRight\n var calculatedPadding = $(element).css('padding-right')\n $(element)\n .data('padding-right', actualPadding)\n .css('padding-right', parseFloat(calculatedPadding) + scrollbarWidth + 'px')\n })\n }\n }\n\n Modal.prototype.resetScrollbar = function () {\n this.$body.css('padding-right', this.originalBodyPad)\n $(this.fixedContent).each(function (index, element) {\n var padding = $(element).data('padding-right')\n $(element).removeData('padding-right')\n element.style.paddingRight = padding ? padding : ''\n })\n }\n\n Modal.prototype.measureScrollbar = function () { // thx walsh\n var scrollDiv = document.createElement('div')\n scrollDiv.className = 'modal-scrollbar-measure'\n this.$body.append(scrollDiv)\n var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth\n this.$body[0].removeChild(scrollDiv)\n return scrollbarWidth\n }\n\n\n // MODAL PLUGIN DEFINITION\n // =======================\n\n function Plugin(option, _relatedTarget) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.modal')\n var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n if (!data) $this.data('bs.modal', (data = new Modal(this, options)))\n if (typeof option == 'string') data[option](_relatedTarget)\n else if (options.show) data.show(_relatedTarget)\n })\n }\n\n var old = $.fn.modal\n\n $.fn.modal = Plugin\n $.fn.modal.Constructor = Modal\n\n\n // MODAL NO CONFLICT\n // =================\n\n $.fn.modal.noConflict = function () {\n $.fn.modal = old\n return this\n }\n\n\n // MODAL DATA-API\n // ==============\n\n $(document).on('click.bs.modal.data-api', '[data-toggle=\"modal\"]', function (e) {\n var $this = $(this)\n var href = $this.attr('href')\n var target = $this.attr('data-target') ||\n (href && href.replace(/.*(?=#[^\\s]+$)/, '')) // strip for ie7\n\n var $target = $(document).find(target)\n var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())\n\n if ($this.is('a')) e.preventDefault()\n\n $target.one('show.bs.modal', function (showEvent) {\n if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown\n $target.one('hidden.bs.modal', function () {\n $this.is(':visible') && $this.trigger('focus')\n })\n })\n Plugin.call($target, option, this)\n })\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: tooltip.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#tooltip\n * Inspired by the original jQuery.tipsy by Jason Frame\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n+function ($) {\n 'use strict';\n\n var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn']\n\n var uriAttrs = [\n 'background',\n 'cite',\n 'href',\n 'itemtype',\n 'longdesc',\n 'poster',\n 'src',\n 'xlink:href'\n ]\n\n var ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\n var DefaultWhitelist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n }\n\n /**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\n var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi\n\n /**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\n var DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i\n\n function allowedAttribute(attr, allowedAttributeList) {\n var attrName = attr.nodeName.toLowerCase()\n\n if ($.inArray(attrName, allowedAttributeList) !== -1) {\n if ($.inArray(attrName, uriAttrs) !== -1) {\n return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN))\n }\n\n return true\n }\n\n var regExp = $(allowedAttributeList).filter(function (index, value) {\n return value instanceof RegExp\n })\n\n // Check if a regular expression validates the attribute.\n for (var i = 0, l = regExp.length; i < l; i++) {\n if (attrName.match(regExp[i])) {\n return true\n }\n }\n\n return false\n }\n\n function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {\n if (unsafeHtml.length === 0) {\n return unsafeHtml\n }\n\n if (sanitizeFn && typeof sanitizeFn === 'function') {\n return sanitizeFn(unsafeHtml)\n }\n\n // IE 8 and below don't support createHTMLDocument\n if (!document.implementation || !document.implementation.createHTMLDocument) {\n return unsafeHtml\n }\n\n var createdDocument = document.implementation.createHTMLDocument('sanitization')\n createdDocument.body.innerHTML = unsafeHtml\n\n var whitelistKeys = $.map(whiteList, function (el, i) { return i })\n var elements = $(createdDocument.body).find('*')\n\n for (var i = 0, len = elements.length; i < len; i++) {\n var el = elements[i]\n var elName = el.nodeName.toLowerCase()\n\n if ($.inArray(elName, whitelistKeys) === -1) {\n el.parentNode.removeChild(el)\n\n continue\n }\n\n var attributeList = $.map(el.attributes, function (el) { return el })\n var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || [])\n\n for (var j = 0, len2 = attributeList.length; j < len2; j++) {\n if (!allowedAttribute(attributeList[j], whitelistedAttributes)) {\n el.removeAttribute(attributeList[j].nodeName)\n }\n }\n }\n\n return createdDocument.body.innerHTML\n }\n\n // TOOLTIP PUBLIC CLASS DEFINITION\n // ===============================\n\n var Tooltip = function (element, options) {\n this.type = null\n this.options = null\n this.enabled = null\n this.timeout = null\n this.hoverState = null\n this.$element = null\n this.inState = null\n\n this.init('tooltip', element, options)\n }\n\n Tooltip.VERSION = '3.4.1'\n\n Tooltip.TRANSITION_DURATION = 150\n\n Tooltip.DEFAULTS = {\n animation: true,\n placement: 'top',\n selector: false,\n template: '
',\n trigger: 'hover focus',\n title: '',\n delay: 0,\n html: false,\n container: false,\n viewport: {\n selector: 'body',\n padding: 0\n },\n sanitize : true,\n sanitizeFn : null,\n whiteList : DefaultWhitelist\n }\n\n Tooltip.prototype.init = function (type, element, options) {\n this.enabled = true\n this.type = type\n this.$element = $(element)\n this.options = this.getOptions(options)\n this.$viewport = this.options.viewport && $(document).find($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport))\n this.inState = { click: false, hover: false, focus: false }\n\n if (this.$element[0] instanceof document.constructor && !this.options.selector) {\n throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!')\n }\n\n var triggers = this.options.trigger.split(' ')\n\n for (var i = triggers.length; i--;) {\n var trigger = triggers[i]\n\n if (trigger == 'click') {\n this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))\n } else if (trigger != 'manual') {\n var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin'\n var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'\n\n this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))\n this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))\n }\n }\n\n this.options.selector ?\n (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :\n this.fixTitle()\n }\n\n Tooltip.prototype.getDefaults = function () {\n return Tooltip.DEFAULTS\n }\n\n Tooltip.prototype.getOptions = function (options) {\n var dataAttributes = this.$element.data()\n\n for (var dataAttr in dataAttributes) {\n if (dataAttributes.hasOwnProperty(dataAttr) && $.inArray(dataAttr, DISALLOWED_ATTRIBUTES) !== -1) {\n delete dataAttributes[dataAttr]\n }\n }\n\n options = $.extend({}, this.getDefaults(), dataAttributes, options)\n\n if (options.delay && typeof options.delay == 'number') {\n options.delay = {\n show: options.delay,\n hide: options.delay\n }\n }\n\n if (options.sanitize) {\n options.template = sanitizeHtml(options.template, options.whiteList, options.sanitizeFn)\n }\n\n return options\n }\n\n Tooltip.prototype.getDelegateOptions = function () {\n var options = {}\n var defaults = this.getDefaults()\n\n this._options && $.each(this._options, function (key, value) {\n if (defaults[key] != value) options[key] = value\n })\n\n return options\n }\n\n Tooltip.prototype.enter = function (obj) {\n var self = obj instanceof this.constructor ?\n obj : $(obj.currentTarget).data('bs.' + this.type)\n\n if (!self) {\n self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n $(obj.currentTarget).data('bs.' + this.type, self)\n }\n\n if (obj instanceof $.Event) {\n self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true\n }\n\n if (self.tip().hasClass('in') || self.hoverState == 'in') {\n self.hoverState = 'in'\n return\n }\n\n clearTimeout(self.timeout)\n\n self.hoverState = 'in'\n\n if (!self.options.delay || !self.options.delay.show) return self.show()\n\n self.timeout = setTimeout(function () {\n if (self.hoverState == 'in') self.show()\n }, self.options.delay.show)\n }\n\n Tooltip.prototype.isInStateTrue = function () {\n for (var key in this.inState) {\n if (this.inState[key]) return true\n }\n\n return false\n }\n\n Tooltip.prototype.leave = function (obj) {\n var self = obj instanceof this.constructor ?\n obj : $(obj.currentTarget).data('bs.' + this.type)\n\n if (!self) {\n self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n $(obj.currentTarget).data('bs.' + this.type, self)\n }\n\n if (obj instanceof $.Event) {\n self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false\n }\n\n if (self.isInStateTrue()) return\n\n clearTimeout(self.timeout)\n\n self.hoverState = 'out'\n\n if (!self.options.delay || !self.options.delay.hide) return self.hide()\n\n self.timeout = setTimeout(function () {\n if (self.hoverState == 'out') self.hide()\n }, self.options.delay.hide)\n }\n\n Tooltip.prototype.show = function () {\n var e = $.Event('show.bs.' + this.type)\n\n if (this.hasContent() && this.enabled) {\n this.$element.trigger(e)\n\n var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0])\n if (e.isDefaultPrevented() || !inDom) return\n var that = this\n\n var $tip = this.tip()\n\n var tipId = this.getUID(this.type)\n\n this.setContent()\n $tip.attr('id', tipId)\n this.$element.attr('aria-describedby', tipId)\n\n if (this.options.animation) $tip.addClass('fade')\n\n var placement = typeof this.options.placement == 'function' ?\n this.options.placement.call(this, $tip[0], this.$element[0]) :\n this.options.placement\n\n var autoToken = /\\s?auto?\\s?/i\n var autoPlace = autoToken.test(placement)\n if (autoPlace) placement = placement.replace(autoToken, '') || 'top'\n\n $tip\n .detach()\n .css({ top: 0, left: 0, display: 'block' })\n .addClass(placement)\n .data('bs.' + this.type, this)\n\n this.options.container ? $tip.appendTo($(document).find(this.options.container)) : $tip.insertAfter(this.$element)\n this.$element.trigger('inserted.bs.' + this.type)\n\n var pos = this.getPosition()\n var actualWidth = $tip[0].offsetWidth\n var actualHeight = $tip[0].offsetHeight\n\n if (autoPlace) {\n var orgPlacement = placement\n var viewportDim = this.getPosition(this.$viewport)\n\n placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top' :\n placement == 'top' && pos.top - actualHeight < viewportDim.top ? 'bottom' :\n placement == 'right' && pos.right + actualWidth > viewportDim.width ? 'left' :\n placement == 'left' && pos.left - actualWidth < viewportDim.left ? 'right' :\n placement\n\n $tip\n .removeClass(orgPlacement)\n .addClass(placement)\n }\n\n var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)\n\n this.applyPlacement(calculatedOffset, placement)\n\n var complete = function () {\n var prevHoverState = that.hoverState\n that.$element.trigger('shown.bs.' + that.type)\n that.hoverState = null\n\n if (prevHoverState == 'out') that.leave(that)\n }\n\n $.support.transition && this.$tip.hasClass('fade') ?\n $tip\n .one('bsTransitionEnd', complete)\n .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n complete()\n }\n }\n\n Tooltip.prototype.applyPlacement = function (offset, placement) {\n var $tip = this.tip()\n var width = $tip[0].offsetWidth\n var height = $tip[0].offsetHeight\n\n // manually read margins because getBoundingClientRect includes difference\n var marginTop = parseInt($tip.css('margin-top'), 10)\n var marginLeft = parseInt($tip.css('margin-left'), 10)\n\n // we must check for NaN for ie 8/9\n if (isNaN(marginTop)) marginTop = 0\n if (isNaN(marginLeft)) marginLeft = 0\n\n offset.top += marginTop\n offset.left += marginLeft\n\n // $.fn.offset doesn't round pixel values\n // so we use setOffset directly with our own function B-0\n $.offset.setOffset($tip[0], $.extend({\n using: function (props) {\n $tip.css({\n top: Math.round(props.top),\n left: Math.round(props.left)\n })\n }\n }, offset), 0)\n\n $tip.addClass('in')\n\n // check to see if placing tip in new offset caused the tip to resize itself\n var actualWidth = $tip[0].offsetWidth\n var actualHeight = $tip[0].offsetHeight\n\n if (placement == 'top' && actualHeight != height) {\n offset.top = offset.top + height - actualHeight\n }\n\n var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight)\n\n if (delta.left) offset.left += delta.left\n else offset.top += delta.top\n\n var isVertical = /top|bottom/.test(placement)\n var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight\n var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight'\n\n $tip.offset(offset)\n this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical)\n }\n\n Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) {\n this.arrow()\n .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')\n .css(isVertical ? 'top' : 'left', '')\n }\n\n Tooltip.prototype.setContent = function () {\n var $tip = this.tip()\n var title = this.getTitle()\n\n if (this.options.html) {\n if (this.options.sanitize) {\n title = sanitizeHtml(title, this.options.whiteList, this.options.sanitizeFn)\n }\n\n $tip.find('.tooltip-inner').html(title)\n } else {\n $tip.find('.tooltip-inner').text(title)\n }\n\n $tip.removeClass('fade in top bottom left right')\n }\n\n Tooltip.prototype.hide = function (callback) {\n var that = this\n var $tip = $(this.$tip)\n var e = $.Event('hide.bs.' + this.type)\n\n function complete() {\n if (that.hoverState != 'in') $tip.detach()\n if (that.$element) { // TODO: Check whether guarding this code with this `if` is really necessary.\n that.$element\n .removeAttr('aria-describedby')\n .trigger('hidden.bs.' + that.type)\n }\n callback && callback()\n }\n\n this.$element.trigger(e)\n\n if (e.isDefaultPrevented()) return\n\n $tip.removeClass('in')\n\n $.support.transition && $tip.hasClass('fade') ?\n $tip\n .one('bsTransitionEnd', complete)\n .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n complete()\n\n this.hoverState = null\n\n return this\n }\n\n Tooltip.prototype.fixTitle = function () {\n var $e = this.$element\n if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') {\n $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')\n }\n }\n\n Tooltip.prototype.hasContent = function () {\n return this.getTitle()\n }\n\n Tooltip.prototype.getPosition = function ($element) {\n $element = $element || this.$element\n\n var el = $element[0]\n var isBody = el.tagName == 'BODY'\n\n var elRect = el.getBoundingClientRect()\n if (elRect.width == null) {\n // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093\n elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })\n }\n var isSvg = window.SVGElement && el instanceof window.SVGElement\n // Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3.\n // See https://github.com/twbs/bootstrap/issues/20280\n var elOffset = isBody ? { top: 0, left: 0 } : (isSvg ? null : $element.offset())\n var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }\n var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null\n\n return $.extend({}, elRect, scroll, outerDims, elOffset)\n }\n\n Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {\n return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } :\n placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :\n placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :\n /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }\n\n }\n\n Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) {\n var delta = { top: 0, left: 0 }\n if (!this.$viewport) return delta\n\n var viewportPadding = this.options.viewport && this.options.viewport.padding || 0\n var viewportDimensions = this.getPosition(this.$viewport)\n\n if (/right|left/.test(placement)) {\n var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll\n var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight\n if (topEdgeOffset < viewportDimensions.top) { // top overflow\n delta.top = viewportDimensions.top - topEdgeOffset\n } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow\n delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset\n }\n } else {\n var leftEdgeOffset = pos.left - viewportPadding\n var rightEdgeOffset = pos.left + viewportPadding + actualWidth\n if (leftEdgeOffset < viewportDimensions.left) { // left overflow\n delta.left = viewportDimensions.left - leftEdgeOffset\n } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow\n delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset\n }\n }\n\n return delta\n }\n\n Tooltip.prototype.getTitle = function () {\n var title\n var $e = this.$element\n var o = this.options\n\n title = $e.attr('data-original-title')\n || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title)\n\n return title\n }\n\n Tooltip.prototype.getUID = function (prefix) {\n do prefix += ~~(Math.random() * 1000000)\n while (document.getElementById(prefix))\n return prefix\n }\n\n Tooltip.prototype.tip = function () {\n if (!this.$tip) {\n this.$tip = $(this.options.template)\n if (this.$tip.length != 1) {\n throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!')\n }\n }\n return this.$tip\n }\n\n Tooltip.prototype.arrow = function () {\n return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow'))\n }\n\n Tooltip.prototype.enable = function () {\n this.enabled = true\n }\n\n Tooltip.prototype.disable = function () {\n this.enabled = false\n }\n\n Tooltip.prototype.toggleEnabled = function () {\n this.enabled = !this.enabled\n }\n\n Tooltip.prototype.toggle = function (e) {\n var self = this\n if (e) {\n self = $(e.currentTarget).data('bs.' + this.type)\n if (!self) {\n self = new this.constructor(e.currentTarget, this.getDelegateOptions())\n $(e.currentTarget).data('bs.' + this.type, self)\n }\n }\n\n if (e) {\n self.inState.click = !self.inState.click\n if (self.isInStateTrue()) self.enter(self)\n else self.leave(self)\n } else {\n self.tip().hasClass('in') ? self.leave(self) : self.enter(self)\n }\n }\n\n Tooltip.prototype.destroy = function () {\n var that = this\n clearTimeout(this.timeout)\n this.hide(function () {\n that.$element.off('.' + that.type).removeData('bs.' + that.type)\n if (that.$tip) {\n that.$tip.detach()\n }\n that.$tip = null\n that.$arrow = null\n that.$viewport = null\n that.$element = null\n })\n }\n\n Tooltip.prototype.sanitizeHtml = function (unsafeHtml) {\n return sanitizeHtml(unsafeHtml, this.options.whiteList, this.options.sanitizeFn)\n }\n\n // TOOLTIP PLUGIN DEFINITION\n // =========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.tooltip')\n var options = typeof option == 'object' && option\n\n if (!data && /destroy|hide/.test(option)) return\n if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.tooltip\n\n $.fn.tooltip = Plugin\n $.fn.tooltip.Constructor = Tooltip\n\n\n // TOOLTIP NO CONFLICT\n // ===================\n\n $.fn.tooltip.noConflict = function () {\n $.fn.tooltip = old\n return this\n }\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: popover.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#popovers\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // POPOVER PUBLIC CLASS DEFINITION\n // ===============================\n\n var Popover = function (element, options) {\n this.init('popover', element, options)\n }\n\n if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')\n\n Popover.VERSION = '3.4.1'\n\n Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {\n placement: 'right',\n trigger: 'click',\n content: '',\n template: '

'\n })\n\n\n // NOTE: POPOVER EXTENDS tooltip.js\n // ================================\n\n Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)\n\n Popover.prototype.constructor = Popover\n\n Popover.prototype.getDefaults = function () {\n return Popover.DEFAULTS\n }\n\n Popover.prototype.setContent = function () {\n var $tip = this.tip()\n var title = this.getTitle()\n var content = this.getContent()\n\n if (this.options.html) {\n var typeContent = typeof content\n\n if (this.options.sanitize) {\n title = this.sanitizeHtml(title)\n\n if (typeContent === 'string') {\n content = this.sanitizeHtml(content)\n }\n }\n\n $tip.find('.popover-title').html(title)\n $tip.find('.popover-content').children().detach().end()[\n typeContent === 'string' ? 'html' : 'append'\n ](content)\n } else {\n $tip.find('.popover-title').text(title)\n $tip.find('.popover-content').children().detach().end().text(content)\n }\n\n $tip.removeClass('fade top bottom left right in')\n\n // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do\n // this manually by checking the contents.\n if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()\n }\n\n Popover.prototype.hasContent = function () {\n return this.getTitle() || this.getContent()\n }\n\n Popover.prototype.getContent = function () {\n var $e = this.$element\n var o = this.options\n\n return $e.attr('data-content')\n || (typeof o.content == 'function' ?\n o.content.call($e[0]) :\n o.content)\n }\n\n Popover.prototype.arrow = function () {\n return (this.$arrow = this.$arrow || this.tip().find('.arrow'))\n }\n\n\n // POPOVER PLUGIN DEFINITION\n // =========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.popover')\n var options = typeof option == 'object' && option\n\n if (!data && /destroy|hide/.test(option)) return\n if (!data) $this.data('bs.popover', (data = new Popover(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.popover\n\n $.fn.popover = Plugin\n $.fn.popover.Constructor = Popover\n\n\n // POPOVER NO CONFLICT\n // ===================\n\n $.fn.popover.noConflict = function () {\n $.fn.popover = old\n return this\n }\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: scrollspy.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#scrollspy\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // SCROLLSPY CLASS DEFINITION\n // ==========================\n\n function ScrollSpy(element, options) {\n this.$body = $(document.body)\n this.$scrollElement = $(element).is(document.body) ? $(window) : $(element)\n this.options = $.extend({}, ScrollSpy.DEFAULTS, options)\n this.selector = (this.options.target || '') + ' .nav li > a'\n this.offsets = []\n this.targets = []\n this.activeTarget = null\n this.scrollHeight = 0\n\n this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this))\n this.refresh()\n this.process()\n }\n\n ScrollSpy.VERSION = '3.4.1'\n\n ScrollSpy.DEFAULTS = {\n offset: 10\n }\n\n ScrollSpy.prototype.getScrollHeight = function () {\n return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)\n }\n\n ScrollSpy.prototype.refresh = function () {\n var that = this\n var offsetMethod = 'offset'\n var offsetBase = 0\n\n this.offsets = []\n this.targets = []\n this.scrollHeight = this.getScrollHeight()\n\n if (!$.isWindow(this.$scrollElement[0])) {\n offsetMethod = 'position'\n offsetBase = this.$scrollElement.scrollTop()\n }\n\n this.$body\n .find(this.selector)\n .map(function () {\n var $el = $(this)\n var href = $el.data('target') || $el.attr('href')\n var $href = /^#./.test(href) && $(href)\n\n return ($href\n && $href.length\n && $href.is(':visible')\n && [[$href[offsetMethod]().top + offsetBase, href]]) || null\n })\n .sort(function (a, b) { return a[0] - b[0] })\n .each(function () {\n that.offsets.push(this[0])\n that.targets.push(this[1])\n })\n }\n\n ScrollSpy.prototype.process = function () {\n var scrollTop = this.$scrollElement.scrollTop() + this.options.offset\n var scrollHeight = this.getScrollHeight()\n var maxScroll = this.options.offset + scrollHeight - this.$scrollElement.height()\n var offsets = this.offsets\n var targets = this.targets\n var activeTarget = this.activeTarget\n var i\n\n if (this.scrollHeight != scrollHeight) {\n this.refresh()\n }\n\n if (scrollTop >= maxScroll) {\n return activeTarget != (i = targets[targets.length - 1]) && this.activate(i)\n }\n\n if (activeTarget && scrollTop < offsets[0]) {\n this.activeTarget = null\n return this.clear()\n }\n\n for (i = offsets.length; i--;) {\n activeTarget != targets[i]\n && scrollTop >= offsets[i]\n && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1])\n && this.activate(targets[i])\n }\n }\n\n ScrollSpy.prototype.activate = function (target) {\n this.activeTarget = target\n\n this.clear()\n\n var selector = this.selector +\n '[data-target=\"' + target + '\"],' +\n this.selector + '[href=\"' + target + '\"]'\n\n var active = $(selector)\n .parents('li')\n .addClass('active')\n\n if (active.parent('.dropdown-menu').length) {\n active = active\n .closest('li.dropdown')\n .addClass('active')\n }\n\n active.trigger('activate.bs.scrollspy')\n }\n\n ScrollSpy.prototype.clear = function () {\n $(this.selector)\n .parentsUntil(this.options.target, '.active')\n .removeClass('active')\n }\n\n\n // SCROLLSPY PLUGIN DEFINITION\n // ===========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.scrollspy')\n var options = typeof option == 'object' && option\n\n if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.scrollspy\n\n $.fn.scrollspy = Plugin\n $.fn.scrollspy.Constructor = ScrollSpy\n\n\n // SCROLLSPY NO CONFLICT\n // =====================\n\n $.fn.scrollspy.noConflict = function () {\n $.fn.scrollspy = old\n return this\n }\n\n\n // SCROLLSPY DATA-API\n // ==================\n\n $(window).on('load.bs.scrollspy.data-api', function () {\n $('[data-spy=\"scroll\"]').each(function () {\n var $spy = $(this)\n Plugin.call($spy, $spy.data())\n })\n })\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: tab.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#tabs\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // TAB CLASS DEFINITION\n // ====================\n\n var Tab = function (element) {\n // jscs:disable requireDollarBeforejQueryAssignment\n this.element = $(element)\n // jscs:enable requireDollarBeforejQueryAssignment\n }\n\n Tab.VERSION = '3.4.1'\n\n Tab.TRANSITION_DURATION = 150\n\n Tab.prototype.show = function () {\n var $this = this.element\n var $ul = $this.closest('ul:not(.dropdown-menu)')\n var selector = $this.data('target')\n\n if (!selector) {\n selector = $this.attr('href')\n selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n }\n\n if ($this.parent('li').hasClass('active')) return\n\n var $previous = $ul.find('.active:last a')\n var hideEvent = $.Event('hide.bs.tab', {\n relatedTarget: $this[0]\n })\n var showEvent = $.Event('show.bs.tab', {\n relatedTarget: $previous[0]\n })\n\n $previous.trigger(hideEvent)\n $this.trigger(showEvent)\n\n if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return\n\n var $target = $(document).find(selector)\n\n this.activate($this.closest('li'), $ul)\n this.activate($target, $target.parent(), function () {\n $previous.trigger({\n type: 'hidden.bs.tab',\n relatedTarget: $this[0]\n })\n $this.trigger({\n type: 'shown.bs.tab',\n relatedTarget: $previous[0]\n })\n })\n }\n\n Tab.prototype.activate = function (element, container, callback) {\n var $active = container.find('> .active')\n var transition = callback\n && $.support.transition\n && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length)\n\n function next() {\n $active\n .removeClass('active')\n .find('> .dropdown-menu > .active')\n .removeClass('active')\n .end()\n .find('[data-toggle=\"tab\"]')\n .attr('aria-expanded', false)\n\n element\n .addClass('active')\n .find('[data-toggle=\"tab\"]')\n .attr('aria-expanded', true)\n\n if (transition) {\n element[0].offsetWidth // reflow for transition\n element.addClass('in')\n } else {\n element.removeClass('fade')\n }\n\n if (element.parent('.dropdown-menu').length) {\n element\n .closest('li.dropdown')\n .addClass('active')\n .end()\n .find('[data-toggle=\"tab\"]')\n .attr('aria-expanded', true)\n }\n\n callback && callback()\n }\n\n $active.length && transition ?\n $active\n .one('bsTransitionEnd', next)\n .emulateTransitionEnd(Tab.TRANSITION_DURATION) :\n next()\n\n $active.removeClass('in')\n }\n\n\n // TAB PLUGIN DEFINITION\n // =====================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.tab')\n\n if (!data) $this.data('bs.tab', (data = new Tab(this)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.tab\n\n $.fn.tab = Plugin\n $.fn.tab.Constructor = Tab\n\n\n // TAB NO CONFLICT\n // ===============\n\n $.fn.tab.noConflict = function () {\n $.fn.tab = old\n return this\n }\n\n\n // TAB DATA-API\n // ============\n\n var clickHandler = function (e) {\n e.preventDefault()\n Plugin.call($(this), 'show')\n }\n\n $(document)\n .on('click.bs.tab.data-api', '[data-toggle=\"tab\"]', clickHandler)\n .on('click.bs.tab.data-api', '[data-toggle=\"pill\"]', clickHandler)\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: affix.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#affix\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // AFFIX CLASS DEFINITION\n // ======================\n\n var Affix = function (element, options) {\n this.options = $.extend({}, Affix.DEFAULTS, options)\n\n var target = this.options.target === Affix.DEFAULTS.target ? $(this.options.target) : $(document).find(this.options.target)\n\n this.$target = target\n .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))\n .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this))\n\n this.$element = $(element)\n this.affixed = null\n this.unpin = null\n this.pinnedOffset = null\n\n this.checkPosition()\n }\n\n Affix.VERSION = '3.4.1'\n\n Affix.RESET = 'affix affix-top affix-bottom'\n\n Affix.DEFAULTS = {\n offset: 0,\n target: window\n }\n\n Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) {\n var scrollTop = this.$target.scrollTop()\n var position = this.$element.offset()\n var targetHeight = this.$target.height()\n\n if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false\n\n if (this.affixed == 'bottom') {\n if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom'\n return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom'\n }\n\n var initializing = this.affixed == null\n var colliderTop = initializing ? scrollTop : position.top\n var colliderHeight = initializing ? targetHeight : height\n\n if (offsetTop != null && scrollTop <= offsetTop) return 'top'\n if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom'\n\n return false\n }\n\n Affix.prototype.getPinnedOffset = function () {\n if (this.pinnedOffset) return this.pinnedOffset\n this.$element.removeClass(Affix.RESET).addClass('affix')\n var scrollTop = this.$target.scrollTop()\n var position = this.$element.offset()\n return (this.pinnedOffset = position.top - scrollTop)\n }\n\n Affix.prototype.checkPositionWithEventLoop = function () {\n setTimeout($.proxy(this.checkPosition, this), 1)\n }\n\n Affix.prototype.checkPosition = function () {\n if (!this.$element.is(':visible')) return\n\n var height = this.$element.height()\n var offset = this.options.offset\n var offsetTop = offset.top\n var offsetBottom = offset.bottom\n var scrollHeight = Math.max($(document).height(), $(document.body).height())\n\n if (typeof offset != 'object') offsetBottom = offsetTop = offset\n if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element)\n if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)\n\n var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom)\n\n if (this.affixed != affix) {\n if (this.unpin != null) this.$element.css('top', '')\n\n var affixType = 'affix' + (affix ? '-' + affix : '')\n var e = $.Event(affixType + '.bs.affix')\n\n this.$element.trigger(e)\n\n if (e.isDefaultPrevented()) return\n\n this.affixed = affix\n this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null\n\n this.$element\n .removeClass(Affix.RESET)\n .addClass(affixType)\n .trigger(affixType.replace('affix', 'affixed') + '.bs.affix')\n }\n\n if (affix == 'bottom') {\n this.$element.offset({\n top: scrollHeight - height - offsetBottom\n })\n }\n }\n\n\n // AFFIX PLUGIN DEFINITION\n // =======================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.affix')\n var options = typeof option == 'object' && option\n\n if (!data) $this.data('bs.affix', (data = new Affix(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.affix\n\n $.fn.affix = Plugin\n $.fn.affix.Constructor = Affix\n\n\n // AFFIX NO CONFLICT\n // =================\n\n $.fn.affix.noConflict = function () {\n $.fn.affix = old\n return this\n }\n\n\n // AFFIX DATA-API\n // ==============\n\n $(window).on('load', function () {\n $('[data-spy=\"affix\"]').each(function () {\n var $spy = $(this)\n var data = $spy.data()\n\n data.offset = data.offset || {}\n\n if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom\n if (data.offsetTop != null) data.offset.top = data.offsetTop\n\n Plugin.call($spy, data)\n })\n })\n\n}(jQuery);\n","/*! ========================================================================\n * Bootstrap Toggle: bootstrap-toggle.js v2.2.0\n * http://www.bootstraptoggle.com\n * ========================================================================\n * Copyright 2014 Min Hur, The New York Times Company\n * Licensed under MIT\n * ======================================================================== */\n\n\n +function ($) {\n \t'use strict';\n\n\t// TOGGLE PUBLIC CLASS DEFINITION\n\t// ==============================\n\n\tvar Toggle = function (element, options) {\n\t\tthis.$element = $(element)\n\t\tthis.options = $.extend({}, this.defaults(), options)\n\t\tthis.render()\n\t}\n\n\tToggle.VERSION = '2.2.0'\n\n\tToggle.DEFAULTS = {\n\t\ton: 'On',\n\t\toff: 'Off',\n\t\tonstyle: 'primary',\n\t\toffstyle: 'default',\n\t\tsize: 'normal',\n\t\tstyle: '',\n\t\twidth: null,\n\t\theight: null\n\t}\n\n\tToggle.prototype.defaults = function() {\n\t\treturn {\n\t\t\ton: this.$element.attr('data-on') || Toggle.DEFAULTS.on,\n\t\t\toff: this.$element.attr('data-off') || Toggle.DEFAULTS.off,\n\t\t\tonstyle: this.$element.attr('data-onstyle') || Toggle.DEFAULTS.onstyle,\n\t\t\toffstyle: this.$element.attr('data-offstyle') || Toggle.DEFAULTS.offstyle,\n\t\t\tsize: this.$element.attr('data-size') || Toggle.DEFAULTS.size,\n\t\t\tstyle: this.$element.attr('data-style') || Toggle.DEFAULTS.style,\n\t\t\twidth: this.$element.attr('data-width') || Toggle.DEFAULTS.width,\n\t\t\theight: this.$element.attr('data-height') || Toggle.DEFAULTS.height\n\t\t}\n\t}\n\n\tToggle.prototype.render = function () {\n\t\tthis._onstyle = 'btn-' + this.options.onstyle\n\t\tthis._offstyle = 'btn-' + this.options.offstyle\n\t\tvar size = this.options.size === 'large' ? 'btn-lg'\n\t\t\t: this.options.size === 'small' ? 'btn-sm'\n\t\t\t: this.options.size === 'mini' ? 'btn-xs'\n\t\t\t: ''\n\t\tvar $toggleOn = $('