From f4e2fa81c2881a32025b9318826cad08f63ae594 Mon Sep 17 00:00:00 2001 From: Erdi Rowlands Date: Fri, 30 Jun 2023 17:10:29 +0100 Subject: [PATCH] FFM-8364 Use Elixir based Murmur3 / Add retries to all network calls (#56) * FFM-8300 Macro and config for verbose evaluation mode * FFM-8300 Macro and config for verbose evaluation mode * FFM-8300 Macro and config for verbose evaluation mode * FFM-8300 Macro and config for verbose evaluation mode * Revert "FFM-8300 Macro and config for verbose evaluation mode" This reverts commit c5defa4026459de5603630ea569fa7aa7d7b3787. * FFM-8300 Macro and config for verbose evaluation mode * FFM-8300 Use destructuring * FFM-8300 Use destructuring * FFM-8300 Update readme * FFM-8300 1.2.0 release prep * FFM-8300 1.2.0 release prep * FFM-8364 remove Add retries to auth, polling, and metrics FFM-8300 Temp use branched change for CFAPI for adding error clause * FFM-8300 Add new murmur3 lib * FFM-8300 Add new murmur3 lib * FFM-8300 Add new murmur3 lib * FFM-8300 Add new murmur3 lib * FFM-8300 Add new murmur3 lib * FFM-8300 Add new murmur3 lib * FFM-8300 Add new murmur3 lib * FFM-8300 Got elixir lib working * FFM-8300 Got elixir lib working * FFM-8300 Got elixir lib working * FFM-8300 Got elixir lib working * FFM-8300 Use hash * FFM-8300 Fix hash * FFM-8300 comment * FFM-8300 comment * FFM-8300 fix readme * FFM-8300 fix readme * FFM-8300 steamroll * FFM-8300 steamroll * FFM-8300 2.0.0 release prep * FFM-8300 2.0.0 release prep * FFM-8364 Use 1.0.1 of client api * FFM-8364 Increase intensity of root supervisor to 4 over 5 seconds * FFM-8364 2.0.0 release notes --- CHANGELOG.md | 15 + README.md | 80 +- doc/.build | 43 - doc/404.html | 144 ---- doc/api-reference.html | 262 ------- doc/cfclient.epub | Bin 39385 -> 0 bytes doc/cfclient.html | 636 --------------- doc/cfclient_app.html | 245 ------ doc/cfclient_cache.html | 605 -------------- doc/cfclient_config.html | 741 ------------------ doc/cfclient_ets.html | 257 ------ doc/cfclient_evaluator.html | 739 ----------------- doc/cfclient_instance.html | 377 --------- doc/cfclient_metrics.html | 316 -------- doc/cfclient_retrieve.html | 388 --------- doc/cfclient_sup.html | 251 ------ doc/dist/handlebars.runtime-NWIB6V2M.js | 30 - doc/dist/handlebars.templates-IV5W3OL2.js | 185 ----- doc/dist/html-XN2TSG4M.js | 52 -- doc/dist/html-erlang-6FXMBT73.css | 2 - ...nconsolata-latin-400-normal-RGKDDNDD.woff2 | Bin 16244 -> 0 bytes ...nconsolata-latin-700-normal-DTS2D7TO.woff2 | Bin 16368 -> 0 bytes ...solata-latin-ext-400-normal-K7HVGTP7.woff2 | Bin 14772 -> 0 bytes ...solata-latin-ext-700-normal-4MPBLFZC.woff2 | Bin 14908 -> 0 bytes ...olata-vietnamese-400-normal-IGQPHHJH.woff2 | Bin 6836 -> 0 bytes ...olata-vietnamese-700-normal-LHEGSN35.woff2 | Bin 6944 -> 0 bytes doc/dist/lato-latin-300-normal-YUMVEFOL.woff2 | Bin 23236 -> 0 bytes doc/dist/lato-latin-700-normal-2XVSBPG4.woff2 | Bin 23040 -> 0 bytes .../lato-latin-ext-300-normal-VPGGJKJL.woff2 | Bin 5624 -> 0 bytes .../lato-latin-ext-700-normal-Q2L5DVMW.woff2 | Bin 5368 -> 0 bytes ...weather-cyrillic-300-italic-M6KMXZSZ.woff2 | Bin 15244 -> 0 bytes ...weather-cyrillic-300-normal-7PAAHU3N.woff2 | Bin 15084 -> 0 bytes ...her-cyrillic-ext-300-italic-JP3ZEV2P.woff2 | Bin 20308 -> 0 bytes ...her-cyrillic-ext-300-normal-5LF5LCEK.woff2 | Bin 19320 -> 0 bytes ...rriweather-latin-300-italic-353COS6Q.woff2 | Bin 19720 -> 0 bytes ...rriweather-latin-300-normal-RWDJH4FN.woff2 | Bin 19752 -> 0 bytes ...eather-latin-ext-300-italic-MWCA36KE.woff2 | Bin 18676 -> 0 bytes ...eather-latin-ext-300-normal-K6L27CZ5.woff2 | Bin 18688 -> 0 bytes ...ather-vietnamese-300-italic-EHHNZPUO.woff2 | Bin 7996 -> 0 bytes ...ather-vietnamese-300-normal-U376L4Z4.woff2 | Bin 7796 -> 0 bytes doc/dist/remixicon-NKANDIL5.woff2 | Bin 1956 -> 0 bytes doc/dist/search_items-9462DBD2.js | 1 - doc/dist/sidebar_items-32BCB229.js | 1 - doc/index.html | 10 - doc/license.html | 366 --------- doc/readme.html | 614 --------------- doc/search.html | 142 ---- rebar.config | 19 +- rebar.lock | 22 +- src/cfclient.app.src | 2 +- src/cfclient.erl | 28 +- src/cfclient_app.erl | 11 +- src/cfclient_config.erl | 89 ++- src/cfclient_evaluator.erl | 125 ++- src/cfclient_instance.erl | 31 +- src/cfclient_metrics.erl | 44 +- src/cfclient_retrieve.erl | 78 +- src/cfclient_sup.erl | 2 +- test/cfclient_evaluator_tests.erl | 8 +- test/cfclient_ff_test_cases.erl | 8 +- 60 files changed, 406 insertions(+), 6563 deletions(-) delete mode 100644 doc/.build delete mode 100644 doc/404.html delete mode 100644 doc/api-reference.html delete mode 100644 doc/cfclient.epub delete mode 100644 doc/cfclient.html delete mode 100644 doc/cfclient_app.html delete mode 100644 doc/cfclient_cache.html delete mode 100644 doc/cfclient_config.html delete mode 100644 doc/cfclient_ets.html delete mode 100644 doc/cfclient_evaluator.html delete mode 100644 doc/cfclient_instance.html delete mode 100644 doc/cfclient_metrics.html delete mode 100644 doc/cfclient_retrieve.html delete mode 100644 doc/cfclient_sup.html delete mode 100644 doc/dist/handlebars.runtime-NWIB6V2M.js delete mode 100644 doc/dist/handlebars.templates-IV5W3OL2.js delete mode 100644 doc/dist/html-XN2TSG4M.js delete mode 100644 doc/dist/html-erlang-6FXMBT73.css delete mode 100644 doc/dist/inconsolata-latin-400-normal-RGKDDNDD.woff2 delete mode 100644 doc/dist/inconsolata-latin-700-normal-DTS2D7TO.woff2 delete mode 100644 doc/dist/inconsolata-latin-ext-400-normal-K7HVGTP7.woff2 delete mode 100644 doc/dist/inconsolata-latin-ext-700-normal-4MPBLFZC.woff2 delete mode 100644 doc/dist/inconsolata-vietnamese-400-normal-IGQPHHJH.woff2 delete mode 100644 doc/dist/inconsolata-vietnamese-700-normal-LHEGSN35.woff2 delete mode 100644 doc/dist/lato-latin-300-normal-YUMVEFOL.woff2 delete mode 100644 doc/dist/lato-latin-700-normal-2XVSBPG4.woff2 delete mode 100644 doc/dist/lato-latin-ext-300-normal-VPGGJKJL.woff2 delete mode 100644 doc/dist/lato-latin-ext-700-normal-Q2L5DVMW.woff2 delete mode 100644 doc/dist/merriweather-cyrillic-300-italic-M6KMXZSZ.woff2 delete mode 100644 doc/dist/merriweather-cyrillic-300-normal-7PAAHU3N.woff2 delete mode 100644 doc/dist/merriweather-cyrillic-ext-300-italic-JP3ZEV2P.woff2 delete mode 100644 doc/dist/merriweather-cyrillic-ext-300-normal-5LF5LCEK.woff2 delete mode 100644 doc/dist/merriweather-latin-300-italic-353COS6Q.woff2 delete mode 100644 doc/dist/merriweather-latin-300-normal-RWDJH4FN.woff2 delete mode 100644 doc/dist/merriweather-latin-ext-300-italic-MWCA36KE.woff2 delete mode 100644 doc/dist/merriweather-latin-ext-300-normal-K6L27CZ5.woff2 delete mode 100644 doc/dist/merriweather-vietnamese-300-italic-EHHNZPUO.woff2 delete mode 100644 doc/dist/merriweather-vietnamese-300-normal-U376L4Z4.woff2 delete mode 100644 doc/dist/remixicon-NKANDIL5.woff2 delete mode 100644 doc/dist/search_items-9462DBD2.js delete mode 100644 doc/dist/sidebar_items-32BCB229.js delete mode 100644 doc/index.html delete mode 100644 doc/license.html delete mode 100644 doc/readme.html delete mode 100644 doc/search.html diff --git a/CHANGELOG.md b/CHANGELOG.md index 85ffbf6..4e9d570 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,21 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/) and this project adheres to [Semantic Versioning](http://semver.org/). +## [2.0.0] - 2023-06-30 +## ** Breaking for Erlang applications (not affecting Elixir applications) ** + +- Due to a new dependency on a murmur3 hashing library implemented in Elixir, the following is now required to use the SDK in Erlang applications: + - Elixir is now required to be installed on your build system when compiling your application. Version 1.13.4 and above is required. + - Rebar3 `rebar_mix` plugin installed in your Rebar3 plugins + - For full details, see the [Erlang SDK reference](https://developer.harness.io/docs/feature-flags/ff-sdks/server-sdks/erlang-sdk-reference/#for-erlang-applications) + +### Enhancements +- Implemented retry logic for authentication, polling, and metrics services for resilience and fault tolerance. +- Changes supervisor +### Fixes +- Swaps out murmur3 nif library which was giving unpredictable runtime behaviour in favour of pure Elixir implementation + + ## [1.2.1] - 2023-06-29 ### Fixes The optional configuration option introduced in 1.2.0 would only work if the application level was set to `info` - this change now sets the `cfclient_evaluation` module to `info` level if `verbose_evaluation_logs` is enabled. diff --git a/README.md b/README.md index dff2a97..0c8fce8 100644 --- a/README.md +++ b/README.md @@ -31,9 +31,18 @@ For a sample FF Erlang SDK Project for Elixir, see our ![FeatureFlags](https://github.com/harness/ff-erlang-server-sdk/raw/main/docs/images/ff-gui.png) -## Requirements +* **For Erlang** applications, install: + + * Erlang/OTP 24 or later + * Rebar3 3.20.0 or later + * Important, since version 2.0.0 the SDK depends on an Elixir hashing library, so the following is also required for Erlang applications: + * Elixir 1.13.4 or later available on your build system + * Rebar3 `rebar_mix` plugin installed in your Rebar3 plugins + +* **For Elixir** applications, install: + * Elixir version 1.13.4 or later + * OTP 24 or later -Erlang OTP 22 or newer. ## Quickstart @@ -52,17 +61,26 @@ To install the SDK for Erlang based applications: 1. Add the SDK as a dependency to your `rebar.config` file: ``` - {deps, [{cfclient, "1.2.0", {pkg, harness_ff_erlang_server_sdk}}]}. + {deps, [{cfclient, "2.0.0", {pkg, harness_ff_erlang_server_sdk}}]}. ``` 2. Add the dependency to your project's `app.src`. ```erlang {applications, - [kernel, stdlib, cfclient] - }, +[kernel, stdlib, cfclient] +}, ``` +2. Add the `rebar_mix` plugin to your `rebar.config` file: + + ```erlang + {project_plugins, [rebar_mix]}. + ``` + +Imporatant: for this plugin to work ensure you have Elixir 1.13.4 or later installed onto your build system + + ### For Elixir applications To install the SDK for Elixir based applications: @@ -72,7 +90,7 @@ To install the SDK for Elixir based applications: ``` defp deps do [ - {:cfclient, "~> 1.1.0", hex: :harness_ff_erlang_server_sdk} + {:cfclient, "~> 2.0.0", hex: :harness_ff_erlang_server_sdk} ] ``` @@ -84,9 +102,9 @@ Provide your API key in `sys.config` using an environment variable: ```erlang [ - {cfclient, [ - {api_key, {environment_variable, "YOUR_API_KEY_ENV_VARIABLE"}, - ]} +{cfclient, [ +{api_key, {environment_variable, "YOUR_API_KEY_ENV_VARIABLE"}, +]} ]. ``` @@ -94,9 +112,9 @@ Or you may provide the API key directly if required: ```erlang [ - {cfclient, [ - {api_key, "YOUR_API_KEY"}, - ]} +{cfclient, [ +{api_key, "YOUR_API_KEY"}, +]} ]. ``` @@ -140,21 +158,21 @@ config :cfclient, ```erlang [{cfclient, [ - %% Set the log level of the SDK to debug - {log_level, debug}, - {api_key, {envrionment_variable, "YOUR_API_KEY_ENV_VARIABLE"}, - {config, [ - {config_url, "https://config.ff.harness.io/api/1.0"}, - {events_url, "https://config.ff.harness.io/api/1.0"}, - {poll_interval, 60}, - {analytics_enabled, true}, - ]}, - ]}] +%% Set the log level of the SDK to debug +{log_level, debug}, +{api_key, {envrionment_variable, "YOUR_API_KEY_ENV_VARIABLE"}, +{config, [ +{config_url, "https://config.ff.harness.io/api/1.0"}, +{events_url, "https://config.ff.harness.io/api/1.0"}, +{poll_interval, 60}, +{analytics_enabled, true}, +]}, +]}] ``` ### Enable Verbose Evaluation Logs -Evaluation logs are `debug` level by default. If required, they can be changed to `info` level. This is useful if production environments do not use `debug` level, but there is a requirement to check low level evaluation logs. +Evaluation logs are `debug` level by default. If required, they can be changed to `info` level. This is useful if production environments do not use `debug` level, but there is a requirement to check low level evaluation logs. Note that this will only affect evaluation log statements. #### Elixir @@ -174,7 +192,7 @@ config :cfclient, ]] ``` -#### Erlang +#### Erlang ```erlang [{cfclient, [ @@ -194,11 +212,11 @@ config :cfclient, ## Run multiple instances of the SDK The SDK by default starts up a single instance called `default` which is configured with your project API key. -If different parts of your application need to use specific [projects](https://developer.harness.io/docs/feature-flags/ff-using-flags/ff-creating-flag/create-a-project/), you can start up additional client instances using by defining additional configuration for each unique project. +If different parts of your application need to use specific [projects](https://developer.harness.io/docs/feature-flags/ff-using-flags/ff-creating-flag/create-a-project/), you can start up additional client instances using by defining additional configuration for each unique project. -### Erlang Project Config +### Erlang Project Config -The additional project config is defined in `sys.config` +The additional project config is defined in `sys.config` The following `sys.config` snippet starts up two additional instances as well along with the default instance: @@ -259,7 +277,7 @@ If you don't require the default instance to be started up, you can do: ``` In your application supervisor, e.g. `src/myapp_sup.erl`, start up a `cfclient_instance` -for each additional project. As the default instance is booted when your application starts, you cannot (and don't need to) start it here. +for each additional project. As the default instance is booted when your application starts, you cannot (and don't need to) start it here. ```erlang init(Args) -> @@ -334,8 +352,8 @@ multi_instance_evaluations() -> ] ``` -2. In your application supervisor, e.g. `lib/myapp/supervisor.ex`, start up `cfclient_instance` -for each of the additional project configurations you provided above. As the default instance is booted when your application starts, you cannot (and don't need to) start it here: +2. In your application supervisor, e.g. `lib/myapp/supervisor.ex`, start up `cfclient_instance` + for each of the additional project configurations you provided above. As the default instance is booted when your application starts, you cannot (and don't need to) start it here: ```elixir def init(_opts) do @@ -533,4 +551,4 @@ In order to run the tests, pull the submodules: ```command git submodule update --init -``` +``` \ No newline at end of file diff --git a/doc/.build b/doc/.build deleted file mode 100644 index 56e9298..0000000 --- a/doc/.build +++ /dev/null @@ -1,43 +0,0 @@ -404.html -api-reference.html -cfclient.html -cfclient_app.html -cfclient_cache.html -cfclient_config.html -cfclient_ets.html -cfclient_evaluator.html -cfclient_instance.html -cfclient_metrics.html -cfclient_retrieve.html -cfclient_sup.html -dist/handlebars.runtime-NWIB6V2M.js -dist/handlebars.templates-IV5W3OL2.js -dist/html-XN2TSG4M.js -dist/html-erlang-6FXMBT73.css -dist/inconsolata-latin-400-normal-RGKDDNDD.woff2 -dist/inconsolata-latin-700-normal-DTS2D7TO.woff2 -dist/inconsolata-latin-ext-400-normal-K7HVGTP7.woff2 -dist/inconsolata-latin-ext-700-normal-4MPBLFZC.woff2 -dist/inconsolata-vietnamese-400-normal-IGQPHHJH.woff2 -dist/inconsolata-vietnamese-700-normal-LHEGSN35.woff2 -dist/lato-latin-300-normal-YUMVEFOL.woff2 -dist/lato-latin-700-normal-2XVSBPG4.woff2 -dist/lato-latin-ext-300-normal-VPGGJKJL.woff2 -dist/lato-latin-ext-700-normal-Q2L5DVMW.woff2 -dist/merriweather-cyrillic-300-italic-M6KMXZSZ.woff2 -dist/merriweather-cyrillic-300-normal-7PAAHU3N.woff2 -dist/merriweather-cyrillic-ext-300-italic-JP3ZEV2P.woff2 -dist/merriweather-cyrillic-ext-300-normal-5LF5LCEK.woff2 -dist/merriweather-latin-300-italic-353COS6Q.woff2 -dist/merriweather-latin-300-normal-RWDJH4FN.woff2 -dist/merriweather-latin-ext-300-italic-MWCA36KE.woff2 -dist/merriweather-latin-ext-300-normal-K6L27CZ5.woff2 -dist/merriweather-vietnamese-300-italic-EHHNZPUO.woff2 -dist/merriweather-vietnamese-300-normal-U376L4Z4.woff2 -dist/remixicon-NKANDIL5.woff2 -dist/search_items-9462DBD2.js -dist/sidebar_items-32BCB229.js -index.html -license.html -readme.html -search.html diff --git a/doc/404.html b/doc/404.html deleted file mode 100644 index 14567d8..0000000 --- a/doc/404.html +++ /dev/null @@ -1,144 +0,0 @@ - - - - - - - - - - 404 — cfclient v1.2.1 - - - - - - - - - - - - - - - - -
- - - - - -
- -
-
- -

- - - Page not found -

- -

Sorry, but the page you were trying to get to, does not exist. You -may want to try searching this site using the sidebar - - or using our API Reference page - -to find what you were looking for.

- -
-
-
-
- - - - diff --git a/doc/api-reference.html b/doc/api-reference.html deleted file mode 100644 index 986f312..0000000 --- a/doc/api-reference.html +++ /dev/null @@ -1,262 +0,0 @@ - - - - - - - - - - API Reference — cfclient v1.2.1 - - - - - - - - - - - - - - - - -
- - - - - -
- -
-
- -

- - - - - API Reference cfclient v1.2.1 -

- - -
-

- -

modules

-
- Modules -

- -
-
-
- cfclient - -
- -
Public interface for client.
- -
-
-
- cfclient_app - -
- -
cfclient application.
- -
-
- - -
Functions to manage cache of Flag and Segment data from server.
- -
-
- - -
Functions to manage client configuration.
- -
-
-
- cfclient_ets - -
- -
Functions to make it easier to mock ETS
- -
-
- - -
Functions to evaluate flag rules.
- -
-
- - -

Feature flags client instance.

- -
-
- - -
Functions to record, process, and send cached metric data.
- -
-
- - -
Funcctions to pull feature and target configuration from server via the API.
- -
-
-
- cfclient_sup - -
- -

Top level supervisor for cfclient.

- -
- -
-
- - - - -
-
-
-
- - - - diff --git a/doc/cfclient.epub b/doc/cfclient.epub deleted file mode 100644 index 35a7df7f343a9bd552d844921daee3bab9c9b435..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39385 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�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 - - - - - - - - - cfclient — cfclient v1.2.1 - - - - - - - - - - - - - - - - -
- - - - - -
- -
-
- -

- - - - - - View Source - - - cfclient - (cfclient v1.2.1) - -

- - -
-Public interface for client. -
- - -
-

- - - Link to this section - - Summary -

-
-

- Types -

- -
-
- config/0 - -
- -
- -
-
- target/0 - -
- -
- -
-
-

- Functions -

- -
- - -
Evaluate variation which returns a boolean.
- -
- - - -
-
- close() - -
- -
- -
-
- close(Name) - -
- -
- -
- - -
Evaluate variation which returns a JSON object.
- -
- - - -
- - -
Evaluate variation which returns a number.
- -
- - - -
- - -
Evaluate variation which returns a string.
- -
- - - -
- -
- - -
-

- - - Link to this section - -Types -

-
-
- - - -
- -
- -
-type config() :: map().
- -
- - -
-
-
- - - -
- -
- -
-type target() ::
-    #{identifier := binary(),
-      name := binary(),
-      anonymous => boolean(),
-      attributes := #{atom() := binary() | atom() | list()} | null}.
- -
- - -
-
- -
-
- -
-

- - - Link to this section - -Functions -

-
-
- -
- - - Link to this function - -

bool_variation(FlagKey, Target, Default)

- - - - View Source - - - -
- -
- -
- -
-spec bool_variation(binary() | string(), target(), boolean()) -> boolean().
- -
- -Evaluate variation which returns a boolean. -
-
-
- -
- - - Link to this function - -

bool_variation(Config, FlagKey, Target, Default)

- - - - View Source - - - -
- -
- -
- -
-spec bool_variation(atom() | config(), binary() | string(), target(), boolean()) -> boolean().
- -
- - -
-
-
- - - -
- - -
-
-
- - - -
- - -
-
-
- -
- - - Link to this function - -

json_variation(FlagKey, Target, Default)

- - - - View Source - - - -
- -
- -
- -
-spec json_variation(binary() | string(), target(), map()) -> map().
- -
- -Evaluate variation which returns a JSON object. -
-
-
- -
- - - Link to this function - -

json_variation(Config, FlagKey, Target, Default)

- - - - View Source - - - -
- -
- -
- -
-spec json_variation(atom() | config(), binary() | list(), target(), map()) -> map().
- -
- - -
-
-
- -
- - - Link to this function - -

number_variation(FlagKey, Target, Default)

- - - - View Source - - - -
- -
- -
- -
-spec number_variation(binary() | list(), target(), number()) -> number().
- -
- -Evaluate variation which returns a number. -
-
-
- -
- - - Link to this function - -

number_variation(Config, FlagKey, Target, Default)

- - - - View Source - - - -
- -
- -
- -
-spec number_variation(atom() | config(), binary() | list(), target(), number()) -> number().
- -
- - -
-
-
- -
- - - Link to this function - -

string_variation(FlagKey, Target, Default)

- - - - View Source - - - -
- -
- -
- -
-spec string_variation(binary() | string(), target(), binary()) -> binary().
- -
- -Evaluate variation which returns a string. -
-
-
- -
- - - Link to this function - -

string_variation(Config, FlagKey, Target, Default)

- - - - View Source - - - -
- -
- -
- -
-spec string_variation(atom() | config(), binary() | list(), target(), binary()) -> binary().
- -
- - -
-
- -
-
- - -
-
-
-
- - - - diff --git a/doc/cfclient_app.html b/doc/cfclient_app.html deleted file mode 100644 index c74de45..0000000 --- a/doc/cfclient_app.html +++ /dev/null @@ -1,245 +0,0 @@ - - - - - - - - - - cfclient_app — cfclient v1.2.1 - - - - - - - - - - - - - - - - -
- - - - - -
- -
-
- -

- - - - - - View Source - - - cfclient_app - (cfclient v1.2.1) - -

- - -
-cfclient application. -
- - -
-

- - - Link to this section - - Summary -

-
-

- Functions -

- - - -
-
- stop(State) - -
- -
- -
- -
- - -
-

- - - Link to this section - -Functions -

-
-
- -
- - - Link to this function - -

start(StartType, StartArgs)

- - - - View Source - - - -
- -
- - -
-
-
- - - -
- - -
-
- -
-
- - -
-
-
-
- - - - diff --git a/doc/cfclient_cache.html b/doc/cfclient_cache.html deleted file mode 100644 index d4b9157..0000000 --- a/doc/cfclient_cache.html +++ /dev/null @@ -1,605 +0,0 @@ - - - - - - - - - - cfclient_cache — cfclient v1.2.1 - - - - - - - - - - - - - - - - -
- - - - - -
- -
-
- -

- - - - - - View Source - - - cfclient_cache - (cfclient v1.2.1) - -

- - -
-Functions to manage cache of Flag and Segment data from server. -
- - -
-

- - - Link to this section - - Summary -

-
-

- Types -

- -
-
- config/0 - -
- -
- -
-
- flag/0 - -
- -
- -
-
- segment/0 - -
- -
- -
-
-

- Functions -

- -
- - -
- - - -
- - -
- - - -
-
- get_value(_) - -
- -
Get Flag or Segment from cache.
- -
- -
- - -
- -
-
- set_pid(_) - -
- -
- -
- - -
Store flag or segment into cache with new value.
- -
- -
- -
- - -
-

- - - Link to this section - -Types -

-
-
- - - -
- -
- -
-type config() :: cfclient:config().
- -
- - -
-
-
- - - -
- -
- -
-type flag() :: cfclient_evaluator:flag().
- -
- - -
-
-
- - - -
- -
- -
-type segment() :: cfapi_segment:cfapi_segment().
- -
- - -
-
- -
-
- -
-

- - - Link to this section - -Functions -

-
-
- - - -
- -
- -
-spec cache_flag(flag()) -> ok | {error, outdated}.
- -
- - -
-
-
- -
- - - Link to this function - -

cache_flag(Value, Config)

- - - - View Source - - - -
- -
- -
- -
-spec cache_flag(flag(), config()) -> ok | {error, outdated}.
- -
- - -
-
-
- -
- - - Link to this function - -

cache_segment(Value)

- - - - View Source - - - -
- -
- -
- -
-spec cache_segment(segment()) -> ok | {error, outdated}.
- -
- - -
-
-
- -
- - - Link to this function - -

cache_segment(Value, Config)

- - - - View Source - - - -
- -
- -
- -
-spec cache_segment(segment(), config()) -> ok | {error, outdated}.
- -
- - -
-
-
- - - -
- -
- -
-spec get_value({flag, binary()} | {segment, binary()}) -> {ok, flag() | segment()} | {error, undefined}.
- -
- -Get Flag or Segment from cache. -
-
-
- -
- - - Link to this function - -

get_value(_, Config)

- - - - View Source - - - -
- -
- -
- -
-spec get_value({flag, binary()} | {segment, binary()}, config()) ->
-             {ok, flag() | segment()} | {error, undefined}.
- -
- - -
-
-
- - - -
- -
- -
-spec set_pid(pid()) -> ok.
- -
- - -
-
-
- -
- - - Link to this function - -

set_value(_, Value)

- - - - View Source - - - -
- -
- -
- -
-spec set_value({flag, binary()} | {segment, binary()}, flag() | segment()) -> ok | {error, outdated}.
- -
- -Store flag or segment into cache with new value. -
-
- -
-
- - -
-
-
-
- - - - diff --git a/doc/cfclient_config.html b/doc/cfclient_config.html deleted file mode 100644 index 1789fdf..0000000 --- a/doc/cfclient_config.html +++ /dev/null @@ -1,741 +0,0 @@ - - - - - - - - - - cfclient_config — cfclient v1.2.1 - - - - - - - - - - - - - - - - -
- - - - - -
- -
-
- -

- - - - - - View Source - - - cfclient_config - (cfclient v1.2.1) - -

- - -
-Functions to manage client configuration. -
- - -
-

- - - Link to this section - - Summary -

-
-

- Types -

- -
-
- config/0 - -
- -
- -
-
-

- Functions -

- -
- - -
with Authenticate with server and merge project attributes into config
- -
- -
- - -
- -
-
- defaults() - -
- -
- -
- - -
- -
-
- get_config() - -
- -
- -
- - -
- - - -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- - - -
- -
- - -
-

- - - Link to this section - -Types -

-
-
- - - -
- -
- -
-type config() :: map().
- -
- - -
-
- -
-
- -
-

- - - Link to this section - -Functions -

-
-
- -
- - - Link to this function - -

authenticate(ApiKey, Config)

- - - - View Source - - - -
- -
- -
- -
-spec authenticate(binary() | string() | undefined | nil, map()) ->
-                {ok, Config :: map()} | {error, Response :: term()}.
- -
- -with Authenticate with server and merge project attributes into config -
-
-
- -
- - - Link to this function - -

create_tables(Config)

- - - - View Source - - - -
- -
- -
- -
-spec create_tables(config()) -> ok.
- -
- - -
-
-
- - - -
- -
- -
-spec defaults() -> map().
- -
- - -
-
-
- - - -
- -
- -
-spec delete_tables(list()) -> ok.
- -
- - -
-
-
- - - -
- -
- -
-spec get_config() -> config().
- -
- - -
-
-
- - - -
- -
- -
-spec get_config(atom()) -> config().
- -
- - -
-
-
- -
- - - Link to this function - -

get_table_names(Config)

- - - - View Source - - - -
- -
- - -
-
-
- - - -
- -
- -
-spec get_value(atom() | binary() | string()) -> term().
- -
- - -
-
-
- -
- - - Link to this function - -

get_value(Key, Opts)

- - - - View Source - - - -
- -
- -
- -
-spec get_value(atom(), map()) -> term().
- -
- - -
-
-
- - - -
- -
- -
-spec init(proplists:proplist()) -> ok.
- -
- - -
-
-
- -
- - - Link to this function - -

normalize(Config0)

- - - - View Source - - - -
- -
- -
- -
-spec normalize(proplists:proplist()) -> map().
- -
- - -
-
-
- -
- - - Link to this function - -

parse_jwt(JwtToken)

- - - - View Source - - - -
- -
- -
- -
-spec parse_jwt(binary()) -> {ok, map()} | {error, Reason :: term()}.
- -
- - -
-
-
- -
- - - Link to this function - -

set_config(Config)

- - - - View Source - - - -
- -
- -
- -
-spec set_config(config()) -> ok.
- -
- - -
-
-
- -
- - - Link to this function - -

set_config(Name, Config)

- - - - View Source - - - -
- -
- -
- -
-spec set_config(atom(), config()) -> ok.
- -
- - -
-
- -
-
- - -
-
-
-
- - - - diff --git a/doc/cfclient_ets.html b/doc/cfclient_ets.html deleted file mode 100644 index a2bdc91..0000000 --- a/doc/cfclient_ets.html +++ /dev/null @@ -1,257 +0,0 @@ - - - - - - - - - - cfclient_ets — cfclient v1.2.1 - - - - - - - - - - - - - - - - -
- - - - - -
- -
-
- -

- - - - - - View Source - - - cfclient_ets - (cfclient v1.2.1) - -

- - -
-Functions to make it easier to mock ETS -
- - -
-

- - - Link to this section - - Summary -

-
-

- Functions -

- -
- - -
- -
- - -
- -
- -
- - -
-

- - - Link to this section - -Functions -

-
-
- - - -
- -
- -
-spec get(atom(), binary()) -> term().
- -
- - -
-
-
- -
- - - Link to this function - -

lookup(Table, Key)

- - - - View Source - - - -
- -
- -
- -
-spec lookup(atom(), term()) -> list().
- -
- - -
-
- -
-
- - -
-
-
-
- - - - diff --git a/doc/cfclient_evaluator.html b/doc/cfclient_evaluator.html deleted file mode 100644 index 35ff491..0000000 --- a/doc/cfclient_evaluator.html +++ /dev/null @@ -1,739 +0,0 @@ - - - - - - - - - - cfclient_evaluator — cfclient v1.2.1 - - - - - - - - - - - - - - - - -
- - - - - -
- -
-
- -

- - - - - - View Source - - - cfclient_evaluator - (cfclient v1.2.1) - -

- - -
-Functions to evaluate flag rules. -
- - -
-

- - - Link to this section - - Summary -

-
-

- Types -

- -
-
- config/0 - -
- -
- -
-
- flag/0 - -
- -
- -
-
- rule/0 - -
- -
- -
- - -
- -
-
- rule_serve/0 - -
- -
- -
-
- segment/0 - -
- -
- -
-
- target/0 - -
- -
- -
- - -
- -
- - -
- - -
-

- - - Link to this section - -Types -

-
-
- - - -
- -
- -
-type config() :: map().
- -
- - -
-
-
- - - -
- -
- -
-type flag() ::
-    #{createdAt => integer(),
-      defaultServe := cfapi_serve:cfapi_serve(),
-      environment := binary(),
-      excluded => list(),
-      feature := binary(),
-      identifier => binary(),
-      included => list(),
-      kind := binary(),
-      modifiedAt => integer(),
-      name => binary(),
-      offVariation := binary(),
-      prerequisites => list(),
-      project := binary(),
-      rules => [map()],
-      state := binary() | map(),
-      tags => list(),
-      variationToTargetMap => [variation_map()] | null,
-      variations := list(),
-      version => integer()}.
- -
- - -
-
-
- - - -
- -
- -
-type rule() ::
-    #{priority := non_neg_integer(),
-      clauses := [rule_clause()],
-      serve => rule_serve(),
-      op => binary(),
-      values => [binary()],
-      excluded => [map()] | null,
-      included => [map()] | null}.
- -
- - -
-
-
- - - -
- -
- -
-type rule_clause() :: #{op := binary(), values := [binary()]}.
- -
- - -
-
-
- - - -
- -
- -
-type rule_serve() :: #{variation := binary(), distribution => boolean()}.
- -
- - -
-
-
- - - -
- -
- -
-type segment() :: cfapi_segment:cfapi_segment().
- -
- - -
-
-
- - - -
- -
- -
-type target() :: cfclient:target().
- -
- - -
-
-
- - - -
- -
- -
-type variation_map() ::
-    #{variation := binary(), targets := [cfapi_variation_map:cfapi_variation_map()]}.
- -
- - -
-
- -
-
- -
-

- - - Link to this section - -Functions -

-
-
- -
- - - Link to this function - -

bool_variation(FlagId, Target, Config)

- - - - View Source - - - -
- -
- -
- -
-spec bool_variation(binary(), target(), config()) ->
-                  {ok, Id :: binary(), Value :: boolean()} | {error, Reason :: atom()}.
- -
- - -
-
-
- -
- - - Link to this function - -

custom_attribute_to_binary(Value)

- - - - View Source - - - -
- -
- -
- -
-spec custom_attribute_to_binary(binary() | atom() | number() | string()) -> binary() | [binary()].
- -
- - -
-
-
- -
- - - Link to this function - -

is_rule_included_or_excluded(Clauses, Target)

- - - - View Source - - - -
- -
- -
- -
-spec is_rule_included_or_excluded([rule_clause()], target()) -> included | excluded | false.
- -
- - -
-
-
- -
- - - Link to this function - -

json_variation(FlagId, Target, Config)

- - - - View Source - - - -
- -
- -
- -
-spec json_variation(binary(), target(), config()) ->
-                  {ok, Id :: binary(), Value :: map()} | {error, Reason :: atom()}.
- -
- - -
-
-
- -
- - - Link to this function - -

number_variation(FlagId, Target, Config)

- - - - View Source - - - -
- -
- -
- -
-spec number_variation(binary(), target(), config()) ->
-                    {ok, Id :: binary(), Value :: number()} | {error, Reason :: atom()}.
- -
- - -
-
-
- -
- - - Link to this function - -

string_variation(FlagId, Target, Config)

- - - - View Source - - - -
- -
- -
- -
-spec string_variation(binary(), target(), config()) ->
-                    {ok, Id :: binary(), Value :: binary()} | {error, Reason :: atom()}.
- -
- - -
-
- -
-
- - -
-
-
-
- - - - diff --git a/doc/cfclient_instance.html b/doc/cfclient_instance.html deleted file mode 100644 index 96e0f96..0000000 --- a/doc/cfclient_instance.html +++ /dev/null @@ -1,377 +0,0 @@ - - - - - - - - - - cfclient_instance — cfclient v1.2.1 - - - - - - - - - - - - - - - - -
- - - - - -
- -
-
- -

- - - - - - View Source - - - cfclient_instance - (cfclient v1.2.1) - -

- - -
-

Feature flags client instance.

It creates the ETS tables used to cache flag data from the server and flag usage metrics. It runs periodic tasks to pull data from the server and send metrics to it.

An default instance is started by the cfclient application. Additional instances can be started if multiple Harness projects need to be used. project. -
- - -
-

- - - Link to this section - - Summary -

-
-

- Functions -

- - - -
- - -
- - - -
-
- init(Args) - -
- -
- -
- - -
- -
-
- stop(Config) - -
- -
- -
- -
- - -
-

- - - Link to this section - -Functions -

-
-
- -
- - - Link to this function - -

handle_call(_, From, State)

- - - - View Source - - - -
- -
- - -
-
-
- -
- - - Link to this function - -

handle_cast(_, State)

- - - - View Source - - - -
- -
- - -
-
-
- -
- - - Link to this function - -

handle_info(_, Config)

- - - - View Source - - - -
- -
- - -
-
-
- - - -
- - -
-
-
- - - -
- -
- -
-spec start_link(proplists:proplist()) -> {ok, pid()} | ignore | {error, term()}.
- -
- - -
-
-
- - - -
- -
- -
-spec stop(map()) -> ok | {error, not_found, term()}.
- -
- - -
-
- -
-
- - -
-
-
-
- - - - diff --git a/doc/cfclient_metrics.html b/doc/cfclient_metrics.html deleted file mode 100644 index a1ada39..0000000 --- a/doc/cfclient_metrics.html +++ /dev/null @@ -1,316 +0,0 @@ - - - - - - - - - - cfclient_metrics — cfclient v1.2.1 - - - - - - - - - - - - - - - - -
- - - - - -
- -
-
- -

- - - - - - View Source - - - cfclient_metrics - (cfclient v1.2.1) - -

- - -
-Functions to record, process, and send cached metric data. -
- - -
-

- - - Link to this section - - Summary -

-
-

- Types -

- -
-
- config/0 - -
- -
- -
-
-

- Functions -

- -
- - -
Gather metrics and send them to server. Called periodically by cfclient_instance.
- -
- -
- - -
Record metrics for request.
- -
- -
- -
- - -
-

- - - Link to this section - -Types -

-
-
- - - -
- -
- -
-type config() :: map().
- -
- - -
-
- -
-
- -
-

- - - Link to this section - -Functions -

-
-
- -
- - - Link to this function - -

process_metrics(Config)

- - - - View Source - - - -
- -
- -
- -
-spec process_metrics(config()) -> ok | {error, api}.
- -
- -Gather metrics and send them to server. Called periodically by cfclient_instance. -
-
-
- -
- - - Link to this function - -

record(FlagId, Target, VariationId, VariationValue, Config)

- - - - View Source - - - -
- -
- -
- -
-spec record(binary(), cfclient:target(), binary(), binary(), config()) -> atom().
- -
- -Record metrics for request. -
-
- -
-
- - -
-
-
-
- - - - diff --git a/doc/cfclient_retrieve.html b/doc/cfclient_retrieve.html deleted file mode 100644 index db3ea85..0000000 --- a/doc/cfclient_retrieve.html +++ /dev/null @@ -1,388 +0,0 @@ - - - - - - - - - - cfclient_retrieve — cfclient v1.2.1 - - - - - - - - - - - - - - - - -
- - - - - -
- -
-
- -

- - - - - - View Source - - - cfclient_retrieve - (cfclient v1.2.1) - -

- - -
-Funcctions to pull feature and target configuration from server via the API. -
- - -
-

- - - Link to this section - - Summary -

-
-

- Types -

- -
-
- config/0 - -
- -
- -
-
- flag/0 - -
- -
- -
-
- segment/0 - -
- -
- -
-
-

- Functions -

- -
- - -
Retrieve all features from Feature Flags API.
- -
- -
- - -
Retrieve all segments from Feature Flags API.
- -
- -
- -
- - -
-

- - - Link to this section - -Types -

-
-
- - - -
- -
- -
-type config() :: map().
- -
- - -
-
-
- - - -
- -
- -
-type flag() :: cfapi_feature_config:cfapi_feature_config().
- -
- - -
-
-
- - - -
- -
- -
-type segment() :: cfapi_segment:cfapi_segment().
- -
- - -
-
- -
-
- -
-

- - - Link to this section - -Functions -

-
-
- -
- - - Link to this function - -

retrieve_flags(Config)

- - - - View Source - - - -
- -
- -
- -
-spec retrieve_flags(config()) -> {ok, [flag()]} | {error, Reason :: term()}.
- -
- -Retrieve all features from Feature Flags API. -
-
-
- -
- - - Link to this function - -

retrieve_segments(Config)

- - - - View Source - - - -
- -
- -
- -
-spec retrieve_segments(config()) -> {ok, [segment()]} | {error, Reason :: term()}.
- -
- -Retrieve all segments from Feature Flags API. -
-
- -
-
- - -
-
-
-
- - - - diff --git a/doc/cfclient_sup.html b/doc/cfclient_sup.html deleted file mode 100644 index c9b1390..0000000 --- a/doc/cfclient_sup.html +++ /dev/null @@ -1,251 +0,0 @@ - - - - - - - - - - cfclient_sup — cfclient v1.2.1 - - - - - - - - - - - - - - - - -
- - - - - -
- -
-
- -

- - - - - - View Source - - - cfclient_sup - (cfclient v1.2.1) - -

- - -
-

Top level supervisor for cfclient.

Called by application, starting up the default client instance. -
- - -
-

- - - Link to this section - - Summary -

-
-

- Functions -

- -
-
- init(Args) - -
- -
- -
- - -
- -
- -
- - -
-

- - - Link to this section - -Functions -

-
-
- - - -
- - -
-
-
- - - -
- -
- -
-spec start_link(proplists:proplist()) -> supervisor:startlink_ret().
- -
- - -
-
- -
-
- - -
-
-
-
- - - - diff --git a/doc/dist/handlebars.runtime-NWIB6V2M.js b/doc/dist/handlebars.runtime-NWIB6V2M.js deleted file mode 100644 index 117dc6c..0000000 --- a/doc/dist/handlebars.runtime-NWIB6V2M.js +++ /dev/null @@ -1,30 +0,0 @@ -/**! - - @license - handlebars v4.7.7 - -Copyright (C) 2011-2019 by Yehuda Katz - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - -*/(function(r,e){typeof exports=="object"&&typeof module=="object"?module.exports=e():typeof define=="function"&&define.amd?define([],e):typeof exports=="object"?exports.Handlebars=e():r.Handlebars=e()})(this,function(){return function(u){var r={};function e(n){if(r[n])return r[n].exports;var t=r[n]={exports:{},id:n,loaded:!1};return u[n].call(t.exports,t,t.exports,e),t.loaded=!0,t.exports}return e.m=u,e.c=r,e.p="",e(0)}([function(u,r,e){"use strict";var n=e(1).default,t=e(2).default;r.__esModule=!0;var f=e(3),a=n(f),i=e(36),l=t(i),h=e(5),v=t(h),P=e(4),H=n(P),C=e(37),E=n(C),I=e(43),o=t(I);function g(){var y=new a.HandlebarsEnvironment;return H.extend(y,a),y.SafeString=l.default,y.Exception=v.default,y.Utils=H,y.escapeExpression=H.escapeExpression,y.VM=E,y.template=function(p){return E.template(p,y)},y}var w=g();w.create=g,o.default(w),w.default=w,r.default=w,u.exports=r.default},function(u,r){"use strict";r.default=function(e){if(e&&e.__esModule)return e;var n={};if(e!=null)for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(n[t]=e[t]);return n.default=e,n},r.__esModule=!0},function(u,r){"use strict";r.default=function(e){return e&&e.__esModule?e:{default:e}},r.__esModule=!0},function(u,r,e){"use strict";var n=e(2).default;r.__esModule=!0,r.HandlebarsEnvironment=g;var t=e(4),f=e(5),a=n(f),i=e(9),l=e(29),h=e(31),v=n(h),P=e(32),H="4.7.7";r.VERSION=H;var C=8;r.COMPILER_REVISION=C;var E=7;r.LAST_COMPATIBLE_COMPILER_REVISION=E;var I={1:"<= 1.0.rc.2",2:"== 1.0.0-rc.3",3:"== 1.0.0-rc.4",4:"== 1.x.x",5:"== 2.0.0-alpha.x",6:">= 2.0.0-beta.1",7:">= 4.0.0 <4.3.0",8:">= 4.3.0"};r.REVISION_CHANGES=I;var o="[object Object]";function g(y,p,R){this.helpers=y||{},this.partials=p||{},this.decorators=R||{},i.registerDefaultHelpers(this),l.registerDefaultDecorators(this)}g.prototype={constructor:g,logger:v.default,log:v.default.log,registerHelper:function(p,R){if(t.toString.call(p)===o){if(R)throw new a.default("Arg not supported with multiple helpers");t.extend(this.helpers,p)}else this.helpers[p]=R},unregisterHelper:function(p){delete this.helpers[p]},registerPartial:function(p,R){if(t.toString.call(p)===o)t.extend(this.partials,p);else{if(typeof R>"u")throw new a.default('Attempting to register a partial called "'+p+'" as undefined');this.partials[p]=R}},unregisterPartial:function(p){delete this.partials[p]},registerDecorator:function(p,R){if(t.toString.call(p)===o){if(R)throw new a.default("Arg not supported with multiple decorators");t.extend(this.decorators,p)}else this.decorators[p]=R},unregisterDecorator:function(p){delete this.decorators[p]},resetLoggedPropertyAccesses:function(){P.resetLoggedProperties()}};var w=v.default.log;r.log=w,r.createFrame=t.createFrame,r.logger=v.default},function(u,r){"use strict";r.__esModule=!0,r.extend=a,r.indexOf=v,r.escapeExpression=P,r.isEmpty=H,r.createFrame=C,r.blockParams=E,r.appendContextPath=I;var e={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`","=":"="},n=/[&<>"'`=]/g,t=/[&<>"'`=]/;function f(o){return e[o]}function a(o){for(var g=1;g0?(a.ids&&(a.ids=[a.name]),t.helpers.each(f,a)):i(this);if(a.data&&a.ids){var h=n.createFrame(a.data);h.contextPath=n.appendContextPath(a.data.contextPath,a.name),a={data:h}}return l(f,a)})},u.exports=r.default},function(u,r,e){(function(n){"use strict";var t=e(12).default,f=e(2).default;r.__esModule=!0;var a=e(4),i=e(5),l=f(i);r.default=function(h){h.registerHelper("each",function(v,P){if(!P)throw new l.default("Must pass iterator to #each");var H=P.fn,C=P.inverse,E=0,I="",o=void 0,g=void 0;P.data&&P.ids&&(g=a.appendContextPath(P.data.contextPath,P.ids[0])+"."),a.isFunction(v)&&(v=v.call(this)),P.data&&(o=a.createFrame(P.data));function w(b,F,c){o&&(o.key=b,o.index=F,o.first=F===0,o.last=!!c,g&&(o.contextPath=g+b)),I=I+H(v[b],{data:o,blockParams:a.blockParams([v[b],b],[g+b,null])})}if(v&&typeof v=="object")if(a.isArray(v))for(var y=v.length;E=0?a=i:a=parseInt(a,10)}return a},log:function(a){if(a=t.lookupLevel(a),typeof console<"u"&&t.lookupLevel(t.level)<=a){var i=t.methodMap[a];console[i]||(i="log");for(var l=arguments.length,h=Array(l>1?l-1:0),v=1;v=P.LAST_COMPATIBLE_COMPILER_REVISION&&O<=P.COMPILER_REVISION))if(O{(function(){var d=Handlebars.template,y=Handlebars.templates=Handlebars.templates||{};y["autocomplete-suggestions"]=d({1:function(n,l,a,c,s){var e,o,u=l??(n.nullContext||{}),r=n.hooks.helperMissing,i="function",t=n.escapeExpression,f=n.lookupProperty||function(p,m){if(Object.prototype.hasOwnProperty.call(p,m))return p[m]};return' -
- `+((e=(o=(o=f(a,"title")||(l!=null?f(l,"title"):l))!=null?o:r,typeof o===i?o.call(u,{name:"title",hash:{},data:s,loc:{start:{line:9,column:29},end:{line:9,column:40}}}):o))!=null?e:"")+` -`+((e=f(a,"if").call(u,l!=null?f(l,"label"):l,{name:"if",hash:{},fn:n.program(2,s,0),inverse:n.noop,data:s,loc:{start:{line:10,column:8},end:{line:12,column:15}}}))!=null?e:"")+`
- -`+((e=f(a,"if").call(u,l!=null?f(l,"description"):l,{name:"if",hash:{},fn:n.program(4,s,0),inverse:n.noop,data:s,loc:{start:{line:15,column:6},end:{line:19,column:13}}}))!=null?e:"")+`
-`},2:function(n,l,a,c,s){var e,o=n.lookupProperty||function(u,r){if(Object.prototype.hasOwnProperty.call(u,r))return u[r]};return' ('+n.escapeExpression((e=(e=o(a,"label")||(l!=null?o(l,"label"):l))!=null?e:n.hooks.helperMissing,typeof e=="function"?e.call(l??(n.nullContext||{}),{name:"label",hash:{},data:s,loc:{start:{line:11,column:31},end:{line:11,column:40}}}):e))+`) -`},4:function(n,l,a,c,s){var e,o,u=n.lookupProperty||function(r,i){if(Object.prototype.hasOwnProperty.call(r,i))return r[i]};return`
- `+((e=(o=(o=u(a,"description")||(l!=null?u(l,"description"):l))!=null?o:n.hooks.helperMissing,typeof o=="function"?o.call(l??(n.nullContext||{}),{name:"description",hash:{},data:s,loc:{start:{line:17,column:10},end:{line:17,column:27}}}):o))!=null?e:"")+` -
-`},compiler:[8,">= 4.3.0"],main:function(n,l,a,c,s){var e,o,u=l??(n.nullContext||{}),r=n.hooks.helperMissing,i="function",t=n.escapeExpression,f=n.lookupProperty||function(p,m){if(Object.prototype.hasOwnProperty.call(p,m))return p[m]};return`
- -
"`+t((o=(o=f(a,"term")||(l!=null?f(l,"term"):l))!=null?o:r,typeof o===i?o.call(u,{name:"term",hash:{},data:s,loc:{start:{line:3,column:28},end:{line:3,column:36}}}):o))+`"
-
Search the documentation
-
-`+((e=f(a,"each").call(u,l!=null?f(l,"suggestions"):l,{name:"each",hash:{},fn:n.program(1,s,0),inverse:n.noop,data:s,loc:{start:{line:6,column:2},end:{line:21,column:11}}}))!=null?e:"")+`
-`},useData:!0}),y["modal-layout"]=d({compiler:[8,">= 4.3.0"],main:function(n,l,a,c,s){return` -`},useData:!0}),y["quick-switch-modal-body"]=d({compiler:[8,">= 4.3.0"],main:function(n,l,a,c,s){return`
- - -
-
-`},useData:!0}),y["quick-switch-results"]=d({1:function(n,l,a,c,s){var e,o=l??(n.nullContext||{}),u=n.hooks.helperMissing,r="function",i=n.escapeExpression,t=n.lookupProperty||function(f,p){if(Object.prototype.hasOwnProperty.call(f,p))return f[p]};return'
- `+i((e=(e=t(a,"name")||(l!=null?t(l,"name"):l))!=null?e:u,typeof e===r?e.call(o,{name:"name",hash:{},data:s,loc:{start:{line:3,column:4},end:{line:3,column:12}}}):e))+` -
-`},compiler:[8,">= 4.3.0"],main:function(n,l,a,c,s){var e,o=n.lookupProperty||function(u,r){if(Object.prototype.hasOwnProperty.call(u,r))return u[r]};return(e=o(a,"each").call(l??(n.nullContext||{}),l!=null?o(l,"results"):l,{name:"each",hash:{},fn:n.program(1,s,0),inverse:n.noop,data:s,loc:{start:{line:1,column:0},end:{line:5,column:9}}}))!=null?e:""},useData:!0}),y["search-results"]=d({1:function(n,l,a,c,s){var e,o=n.lookupProperty||function(u,r){if(Object.prototype.hasOwnProperty.call(u,r))return u[r]};return" Search results for "+n.escapeExpression((e=(e=o(a,"value")||(l!=null?o(l,"value"):l))!=null?e:n.hooks.helperMissing,typeof e=="function"?e.call(l??(n.nullContext||{}),{name:"value",hash:{},data:s,loc:{start:{line:3,column:27},end:{line:3,column:36}}}):e))+` -`},3:function(n,l,a,c,s){return` Invalid search -`},5:function(n,l,a,c,s){var e,o=n.lookupProperty||function(u,r){if(Object.prototype.hasOwnProperty.call(u,r))return u[r]};return(e=o(a,"each").call(l??(n.nullContext||{}),l!=null?o(l,"results"):l,{name:"each",hash:{},fn:n.program(6,s,0),inverse:n.noop,data:s,loc:{start:{line:15,column:2},end:{line:26,column:11}}}))!=null?e:""},6:function(n,l,a,c,s){var e,o=n.lambda,u=n.escapeExpression,r=n.lookupProperty||function(i,t){if(Object.prototype.hasOwnProperty.call(i,t))return i[t]};return`
-

- - `+u(o(l!=null?r(l,"title"):l,l))+" ("+u(o(l!=null?r(l,"type"):l,l))+`) - -

-`+((e=r(a,"each").call(l??(n.nullContext||{}),l!=null?r(l,"excerpts"):l,{name:"each",hash:{},fn:n.program(7,s,0),inverse:n.noop,data:s,loc:{start:{line:22,column:8},end:{line:24,column:17}}}))!=null?e:"")+`
-`},7:function(n,l,a,c,s){var e;return'

'+((e=n.lambda(l,l))!=null?e:"")+`

-`},9:function(n,l,a,c,s){var e,o=n.lookupProperty||function(u,r){if(Object.prototype.hasOwnProperty.call(u,r))return u[r]};return((e=(o(a,"isArray")||l&&o(l,"isArray")||n.hooks.helperMissing).call(l??(n.nullContext||{}),l!=null?o(l,"results"):l,{name:"isArray",hash:{},fn:n.program(10,s,0),inverse:n.program(12,s,0),data:s,loc:{start:{line:28,column:2},end:{line:34,column:14}}}))!=null?e:"")+` -

The search functionality is full-text based. Here are some tips:

- -
    -
  • Multiple words (such as foo bar) are searched as OR
  • -
  • Use * anywhere (such as fo*) as wildcard
  • -
  • Use + before a word (such as +foo) to make its presence required
  • -
  • Use - before a word (such as -foo) to make its absence required
  • -
  • Use : to search on a particular field (such as field:word). The available fields are title and doc
  • -
  • Use WORD^NUMBER (such as foo^2) to boost the given word
  • -
  • Use WORD~NUMBER (such as foo~2) to do a search with edit distance on word
  • -
- -

To quickly go to a module, type, or function, use the autocompletion feature in the sidebar search.

-`},10:function(n,l,a,c,s){var e,o=n.lookupProperty||function(u,r){if(Object.prototype.hasOwnProperty.call(u,r))return u[r]};return"

Sorry, we couldn't find anything for "+n.escapeExpression((e=(e=o(a,"value")||(l!=null?o(l,"value"):l))!=null?e:n.hooks.helperMissing,typeof e=="function"?e.call(l??(n.nullContext||{}),{name:"value",hash:{},data:s,loc:{start:{line:29,column:48},end:{line:29,column:57}}}):e))+`.

-`},12:function(n,l,a,c,s){var e,o=n.lookupProperty||function(u,r){if(Object.prototype.hasOwnProperty.call(u,r))return u[r]};return(e=o(a,"if").call(l??(n.nullContext||{}),l!=null?o(l,"value"):l,{name:"if",hash:{},fn:n.program(13,s,0),inverse:n.program(15,s,0),data:s,loc:{start:{line:30,column:2},end:{line:34,column:2}}}))!=null?e:""},13:function(n,l,a,c,s){var e,o=n.lookupProperty||function(u,r){if(Object.prototype.hasOwnProperty.call(u,r))return u[r]};return"

Invalid search: "+n.escapeExpression((e=(e=o(a,"errorMessage")||(l!=null?o(l,"errorMessage"):l))!=null?e:n.hooks.helperMissing,typeof e=="function"?e.call(l??(n.nullContext||{}),{name:"errorMessage",hash:{},data:s,loc:{start:{line:31,column:23},end:{line:31,column:39}}}):e))+`.

-`},15:function(n,l,a,c,s){return`

Please type something into the search bar to perform a search.

- `},compiler:[8,">= 4.3.0"],main:function(n,l,a,c,s){var e,o=l??(n.nullContext||{}),u=n.lookupProperty||function(r,i){if(Object.prototype.hasOwnProperty.call(r,i))return r[i]};return`

-`+((e=u(a,"if").call(o,l!=null?u(l,"value"):l,{name:"if",hash:{},fn:n.program(1,s,0),inverse:n.program(3,s,0),data:s,loc:{start:{line:2,column:2},end:{line:6,column:9}}}))!=null?e:"")+` - -

- -`+((e=(u(a,"isNonEmptyArray")||l&&u(l,"isNonEmptyArray")||n.hooks.helperMissing).call(o,l!=null?u(l,"results"):l,{name:"isNonEmptyArray",hash:{},fn:n.program(5,s,0),inverse:n.program(9,s,0),data:s,loc:{start:{line:14,column:0},end:{line:49,column:20}}}))!=null?e:"")},useData:!0}),y["settings-modal-body"]=d({1:function(n,l,a,c,s){var e,o=n.lookupProperty||function(u,r){if(Object.prototype.hasOwnProperty.call(u,r))return u[r]};return(e=o(a,"if").call(l??(n.nullContext||{}),l!=null?o(l,"description"):l,{name:"if",hash:{},fn:n.program(2,s,0),inverse:n.noop,data:s,loc:{start:{line:40,column:6},end:{line:53,column:13}}}))!=null?e:""},2:function(n,l,a,c,s){var e,o=n.lookupProperty||function(u,r){if(Object.prototype.hasOwnProperty.call(u,r))return u[r]};return`
-
- `+n.escapeExpression(n.lambda(l!=null?o(l,"description"):l,l))+` -
-
-`+((e=o(a,"if").call(l??(n.nullContext||{}),l!=null?o(l,"displayAs"):l,{name:"if",hash:{},fn:n.program(3,s,0),inverse:n.program(5,s,0),data:s,loc:{start:{line:46,column:12},end:{line:50,column:19}}}))!=null?e:"")+`
-
-`},3:function(n,l,a,c,s){var e,o=n.lookupProperty||function(u,r){if(Object.prototype.hasOwnProperty.call(u,r))return u[r]};return" "+((e=n.lambda(l!=null?o(l,"displayAs"):l,l))!=null?e:"")+` -`},5:function(n,l,a,c,s){var e=n.lookupProperty||function(o,u){if(Object.prototype.hasOwnProperty.call(o,u))return o[u]};return" "+n.escapeExpression(n.lambda(l!=null?e(l,"key"):l,l))+` -`},compiler:[8,">= 4.3.0"],main:function(n,l,a,c,s){var e,o=n.lookupProperty||function(u,r){if(Object.prototype.hasOwnProperty.call(u,r))return u[r]};return`
-
- - - - -
- -
-`},useData:!0}),y["sidebar-items"]=d({1:function(n,l,a,c,s,e,o){var u,r=l??(n.nullContext||{}),i=n.hooks.helperMissing,t=n.lookupProperty||function(f,p){if(Object.prototype.hasOwnProperty.call(f,p))return f[p]};return((u=(t(a,"groupChanged")||l&&t(l,"groupChanged")||i).call(r,o[1],(u=e[0][0])!=null?t(u,"group"):u,{name:"groupChanged",hash:{},fn:n.program(2,s,0,e,o),inverse:n.noop,data:s,blockParams:e,loc:{start:{line:2,column:2},end:{line:6,column:19}}}))!=null?u:"")+` -`+((u=(t(a,"nestingChanged")||l&&t(l,"nestingChanged")||i).call(r,o[1],e[0][0],{name:"nestingChanged",hash:{},fn:n.program(7,s,0,e,o),inverse:n.noop,data:s,blockParams:e,loc:{start:{line:8,column:2},end:{line:10,column:21}}}))!=null?u:"")+` -
  • - -`+((u=t(a,"if").call(r,(u=e[0][0])!=null?t(u,"nested_title"):u,{name:"if",hash:{},fn:n.program(13,s,0,e,o),inverse:n.program(15,s,0,e,o),data:s,blockParams:e,loc:{start:{line:14,column:6},end:{line:18,column:13}}}))!=null?u:"")+` - - -
      -`+((u=(t(a,"isArray")||l&&t(l,"isArray")||i).call(r,(u=e[0][0])!=null?t(u,"headers"):u,{name:"isArray",hash:{},fn:n.program(17,s,0,e,o),inverse:n.program(20,s,0,e,o),data:s,blockParams:e,loc:{start:{line:23,column:6},end:{line:65,column:18}}}))!=null?u:"")+`
    -
  • -`},2:function(n,l,a,c,s,e){var o,u=n.lookupProperty||function(r,i){if(Object.prototype.hasOwnProperty.call(r,i))return r[i]};return'
  • - `+n.escapeExpression(n.lambda((o=e[1][0])!=null?u(o,"group"):o,l))+` -
  • -`},3:function(n,l,a,c,s){return""},5:function(n,l,a,c,s){return'translate="no"'},7:function(n,l,a,c,s,e){var o,u=n.lookupProperty||function(r,i){if(Object.prototype.hasOwnProperty.call(r,i))return r[i]};return' -`},9:function(n,l,a,c,s){return"current-page open"},11:function(n,l,a,c,s){return"#content"},13:function(n,l,a,c,s,e){var o,u=n.lookupProperty||function(r,i){if(Object.prototype.hasOwnProperty.call(r,i))return r[i]};return" "+((o=n.lambda((o=e[1][0])!=null?u(o,"nested_title"):o,l))!=null?o:"")+` -`},15:function(n,l,a,c,s,e){var o,u=n.lookupProperty||function(r,i){if(Object.prototype.hasOwnProperty.call(r,i))return r[i]};return" "+((o=n.lambda((o=e[1][0])!=null?u(o,"title"):o,l))!=null?o:"")+` -`},17:function(n,l,a,c,s,e){var o,u=n.lookupProperty||function(r,i){if(Object.prototype.hasOwnProperty.call(r,i))return r[i]};return(o=u(a,"each").call(l??(n.nullContext||{}),(o=e[1][0])!=null?u(o,"headers"):o,{name:"each",hash:{},fn:n.program(18,s,0,e),inverse:n.noop,data:s,blockParams:e,loc:{start:{line:24,column:8},end:{line:28,column:17}}}))!=null?o:""},18:function(n,l,a,c,s,e){var o,u,r=l??(n.nullContext||{}),i=n.hooks.helperMissing,t="function",f=n.lookupProperty||function(p,m){if(Object.prototype.hasOwnProperty.call(p,m))return p[m]};return`
  • - '+((o=(u=(u=f(a,"id")||(l!=null?f(l,"id"):l))!=null?u:i,typeof u===t?u.call(r,{name:"id",hash:{},data:s,blockParams:e,loc:{start:{line:26,column:52},end:{line:26,column:60}}}):u))!=null?o:"")+` -
  • -`},20:function(n,l,a,c,s,e){var o,u=l??(n.nullContext||{}),r=n.hooks.helperMissing,i=n.lookupProperty||function(t,f){if(Object.prototype.hasOwnProperty.call(t,f))return t[f]};return((o=(i(a,"showSections")||l&&i(l,"showSections")||r).call(u,e[1][0],{name:"showSections",hash:{},fn:n.program(21,s,0,e),inverse:n.noop,data:s,blockParams:e,loc:{start:{line:30,column:8},end:{line:44,column:25}}}))!=null?o:"")+((o=(i(a,"showSummary")||l&&i(l,"showSummary")||r).call(u,e[1][0],{name:"showSummary",hash:{},fn:n.program(26,s,0,e),inverse:n.noop,data:s,blockParams:e,loc:{start:{line:45,column:8},end:{line:49,column:24}}}))!=null?o:"")+((o=i(a,"each").call(u,(o=e[1][0])!=null?i(o,"nodeGroups"):o,{name:"each",hash:{},fn:n.program(28,s,1,e),inverse:n.noop,data:s,blockParams:e,loc:{start:{line:50,column:8},end:{line:64,column:17}}}))!=null?o:"")},21:function(n,l,a,c,s,e){var o,u=l??(n.nullContext||{}),r=n.lookupProperty||function(i,t){if(Object.prototype.hasOwnProperty.call(i,t))return i[t]};return'
  • - - Sections - - -
      -`+((o=r(a,"each").call(u,l!=null?r(l,"sections"):l,{name:"each",hash:{},fn:n.program(24,s,0,e),inverse:n.noop,data:s,blockParams:e,loc:{start:{line:37,column:14},end:{line:41,column:23}}}))!=null?o:"")+`
    -
  • -`},22:function(n,l,a,c,s){return"open"},24:function(n,l,a,c,s,e){var o,u,r=n.escapeExpression,i=l??(n.nullContext||{}),t=n.hooks.helperMissing,f="function",p=n.lookupProperty||function(m,v){if(Object.prototype.hasOwnProperty.call(m,v))return m[v]};return`
  • - '+((o=(u=(u=p(a,"id")||(l!=null?p(l,"id"):l))!=null?u:t,typeof u===f?u.call(i,{name:"id",hash:{},data:s,blockParams:e,loc:{start:{line:39,column:56},end:{line:39,column:64}}}):u))!=null?o:"")+` -
  • -`},26:function(n,l,a,c,s,e){var o,u=n.lookupProperty||function(r,i){if(Object.prototype.hasOwnProperty.call(r,i))return r[i]};return`
  • - Summary -
  • -`},28:function(n,l,a,c,s,e){var o,u=n.lambda,r=n.escapeExpression,i=n.lookupProperty||function(t,f){if(Object.prototype.hasOwnProperty.call(t,f))return t[f]};return`
  • - - `+r(u((o=e[0][0])!=null?i(o,"name"):o,l))+` - - -
      -`+((o=i(a,"each").call(l??(n.nullContext||{}),(o=e[0][0])!=null?i(o,"nodes"):o,{name:"each",hash:{},fn:n.program(29,s,0,e),inverse:n.noop,data:s,blockParams:e,loc:{start:{line:57,column:14},end:{line:61,column:23}}}))!=null?o:"")+`
    -
  • -`},29:function(n,l,a,c,s,e){var o,u,r=n.escapeExpression,i=l??(n.nullContext||{}),t=n.hooks.helperMissing,f="function",p=n.lookupProperty||function(m,v){if(Object.prototype.hasOwnProperty.call(m,v))return m[v]};return`
  • - '+r((u=(u=p(a,"id")||(l!=null?p(l,"id"):l))!=null?u:t,typeof u===f?u.call(i,{name:"id",hash:{},data:s,blockParams:e,loc:{start:{line:59,column:89},end:{line:59,column:95}}}):u))+` -
  • -`},compiler:[8,">= 4.3.0"],main:function(n,l,a,c,s,e,o){var u,r=n.lookupProperty||function(i,t){if(Object.prototype.hasOwnProperty.call(i,t))return i[t]};return(u=r(a,"each").call(l??(n.nullContext||{}),l!=null?r(l,"nodes"):l,{name:"each",hash:{},fn:n.program(1,s,2,e,o),inverse:n.noop,data:s,blockParams:e,loc:{start:{line:1,column:0},end:{line:68,column:9}}}))!=null?u:""},useData:!0,useDepths:!0,useBlockParams:!0}),y["tooltip-body"]=d({1:function(n,l,a,c,s){var e,o=n.lookupProperty||function(u,r){if(Object.prototype.hasOwnProperty.call(u,r))return u[r]};return`
    - `+n.escapeExpression(n.lambda((e=l!=null?o(l,"hint"):l)!=null?o(e,"description"):e,l))+` -
    -`},3:function(n,l,a,c,s){var e,o=n.lambda,u=n.escapeExpression,r=n.lookupProperty||function(i,t){if(Object.prototype.hasOwnProperty.call(i,t))return i[t]};return`
    -

    - `+u(o((e=l!=null?r(l,"hint"):l)!=null?r(e,"title"):e,l))+` -
    `+u(o((e=l!=null?r(l,"hint"):l)!=null?r(e,"version"):e,l))+`
    -

    -
    -`+((e=r(a,"if").call(l??(n.nullContext||{}),(e=l!=null?r(l,"hint"):l)!=null?r(e,"description"):e,{name:"if",hash:{},fn:n.program(4,s,0),inverse:n.noop,data:s,loc:{start:{line:12,column:2},end:{line:16,column:9}}}))!=null?e:"")},4:function(n,l,a,c,s){var e,o=n.lookupProperty||function(u,r){if(Object.prototype.hasOwnProperty.call(u,r))return u[r]};return`
    - `+n.escapeExpression(n.lambda((e=l!=null?o(l,"hint"):l)!=null?o(e,"description"):e,l))+` -
    -`},compiler:[8,">= 4.3.0"],main:function(n,l,a,c,s){var e,o=n.lookupProperty||function(u,r){if(Object.prototype.hasOwnProperty.call(u,r))return u[r]};return(e=o(a,"if").call(l??(n.nullContext||{}),l!=null?o(l,"isPlain"):l,{name:"if",hash:{},fn:n.program(1,s,0),inverse:n.program(3,s,0),data:s,loc:{start:{line:1,column:0},end:{line:17,column:7}}}))!=null?e:""},useData:!0}),y["tooltip-layout"]=d({compiler:[8,">= 4.3.0"],main:function(n,l,a,c,s){return`
    -
    -
    -`},useData:!0}),y["versions-dropdown"]=d({1:function(n,l,a,c,s){var e,o,u=l??(n.nullContext||{}),r=n.hooks.helperMissing,i="function",t=n.escapeExpression,f=n.lookupProperty||function(p,m){if(Object.prototype.hasOwnProperty.call(p,m))return p[m]};return' -`},2:function(n,l,a,c,s){return" selected disabled"},compiler:[8,">= 4.3.0"],main:function(n,l,a,c,s){var e,o=n.lookupProperty||function(u,r){if(Object.prototype.hasOwnProperty.call(u,r))return u[r]};return`
    - -
    -`},useData:!0})})();})(); diff --git a/doc/dist/html-XN2TSG4M.js b/doc/dist/html-XN2TSG4M.js deleted file mode 100644 index 48d9711..0000000 --- a/doc/dist/html-XN2TSG4M.js +++ /dev/null @@ -1,52 +0,0 @@ -(()=>{var Cn=Object.create;var Ze=Object.defineProperty;var Pn=Object.getOwnPropertyDescriptor;var Rn=Object.getOwnPropertyNames;var An=Object.getPrototypeOf,Qn=Object.prototype.hasOwnProperty;var et=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Nn=(e,t,n,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of Rn(t))!Qn.call(e,r)&&r!==n&&Ze(e,r,{get:()=>t[r],enumerable:!(i=Pn(t,r))||i.enumerable});return e};var tt=(e,t,n)=>(n=e!=null?Cn(An(e)):{},Nn(t||!e||!e.__esModule?Ze(n,"default",{value:e,enumerable:!0}):n,e));var mt=et((ds,pt)=>{var ht="Expected a function",dt=NaN,$n="[object Symbol]",Un=/^\s+|\s+$/g,Wn=/^[-+]0x[0-9a-f]+$/i,Gn=/^0b[01]+$/i,Kn=/^0o[0-7]+$/i,Yn=parseInt,Jn=typeof global=="object"&&global&&global.Object===Object&&global,Xn=typeof self=="object"&&self&&self.Object===Object&&self,Zn=Jn||Xn||Function("return this")(),ei=Object.prototype,ti=ei.toString,ni=Math.max,ii=Math.min,ke=function(){return Zn.Date.now()};function ri(e,t,n){var i,r,s,o,a,u,l=0,f=!1,y=!1,g=!0;if(typeof e!="function")throw new TypeError(ht);t=ft(t)||0,pe(n)&&(f=!!n.leading,y="maxWait"in n,s=y?ni(ft(n.maxWait)||0,t):s,g="trailing"in n?!!n.trailing:g);function L(x){var C=i,D=r;return i=r=void 0,l=x,o=e.apply(D,C),o}function S(x){return l=x,a=setTimeout(p,t),f?L(x):o}function T(x){var C=x-u,D=x-l,V=t-C;return y?ii(V,s-D):V}function m(x){var C=x-u,D=x-l;return u===void 0||C>=t||C<0||y&&D>=s}function p(){var x=ke();if(m(x))return _(x);a=setTimeout(p,T(x))}function _(x){return a=void 0,g&&i?L(x):(i=r=void 0,o)}function w(){a!==void 0&&clearTimeout(a),l=0,i=u=r=a=void 0}function Q(){return a===void 0?o:_(ke())}function N(){var x=ke(),C=m(x);if(i=arguments,r=this,u=x,C){if(a===void 0)return S(u);if(y)return a=setTimeout(p,t),L(u)}return a===void 0&&(a=setTimeout(p,t)),o}return N.cancel=w,N.flush=Q,N}function si(e,t,n){var i=!0,r=!0;if(typeof e!="function")throw new TypeError(ht);return pe(n)&&(i="leading"in n?!!n.leading:i,r="trailing"in n?!!n.trailing:r),ri(e,t,{leading:i,maxWait:t,trailing:r})}function pe(e){var t=typeof e;return!!e&&(t=="object"||t=="function")}function oi(e){return!!e&&typeof e=="object"}function ai(e){return typeof e=="symbol"||oi(e)&&ti.call(e)==$n}function ft(e){if(typeof e=="number")return e;if(ai(e))return dt;if(pe(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=pe(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=e.replace(Un,"");var n=Gn.test(e);return n||Kn.test(e)?Yn(e.slice(2),n?2:8):Wn.test(e)?dt:+e}pt.exports=si});var Vt=et((Mt,Bt)=>{(function(){var e=function(t){var n=new e.Builder;return n.pipeline.add(e.trimmer,e.stopWordFilter,e.stemmer),n.searchPipeline.add(e.stemmer),t.call(n,n),n.build()};e.version="2.3.9";e.utils={},e.utils.warn=function(t){return function(n){t.console&&console.warn&&console.warn(n)}}(this),e.utils.asString=function(t){return t==null?"":t.toString()},e.utils.clone=function(t){if(t==null)return t;for(var n=Object.create(null),i=Object.keys(t),r=0;r0){var f=e.utils.clone(n)||{};f.position=[a,l],f.index=s.length,s.push(new e.Token(i.slice(a,o),f))}a=o+1}}return s},e.tokenizer.separator=/[\s\-]+/;e.Pipeline=function(){this._stack=[]},e.Pipeline.registeredFunctions=Object.create(null),e.Pipeline.registerFunction=function(t,n){n in this.registeredFunctions&&e.utils.warn("Overwriting existing registered function: "+n),t.label=n,e.Pipeline.registeredFunctions[t.label]=t},e.Pipeline.warnIfFunctionNotRegistered=function(t){var n=t.label&&t.label in this.registeredFunctions;n||e.utils.warn(`Function is not registered with pipeline. This may cause problems when serialising the index. -`,t)},e.Pipeline.load=function(t){var n=new e.Pipeline;return t.forEach(function(i){var r=e.Pipeline.registeredFunctions[i];if(r)n.add(r);else throw new Error("Cannot load unregistered function: "+i)}),n},e.Pipeline.prototype.add=function(){var t=Array.prototype.slice.call(arguments);t.forEach(function(n){e.Pipeline.warnIfFunctionNotRegistered(n),this._stack.push(n)},this)},e.Pipeline.prototype.after=function(t,n){e.Pipeline.warnIfFunctionNotRegistered(n);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");i=i+1,this._stack.splice(i,0,n)},e.Pipeline.prototype.before=function(t,n){e.Pipeline.warnIfFunctionNotRegistered(n);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");this._stack.splice(i,0,n)},e.Pipeline.prototype.remove=function(t){var n=this._stack.indexOf(t);n!=-1&&this._stack.splice(n,1)},e.Pipeline.prototype.run=function(t){for(var n=this._stack.length,i=0;i1&&(ot&&(i=s),o!=t);)r=i-n,s=n+Math.floor(r/2),o=this.elements[s*2];if(o==t||o>t)return s*2;if(ou?f+=2:a==u&&(n+=i[l+1]*r[f+1],l+=2,f+=2);return n},e.Vector.prototype.similarity=function(t){return this.dot(t)/this.magnitude()||0},e.Vector.prototype.toArray=function(){for(var t=new Array(this.elements.length/2),n=1,i=0;n0){var o=s.str.charAt(0),a;o in s.node.edges?a=s.node.edges[o]:(a=new e.TokenSet,s.node.edges[o]=a),s.str.length==1&&(a.final=!0),r.push({node:a,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(s.editsRemaining!=0){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new e.TokenSet;s.node.edges["*"]=u}if(s.str.length==0&&(u.final=!0),r.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&r.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),s.str.length==1&&(s.node.final=!0),s.str.length>=1){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new e.TokenSet;s.node.edges["*"]=l}s.str.length==1&&(l.final=!0),r.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var f=s.str.charAt(0),y=s.str.charAt(1),g;y in s.node.edges?g=s.node.edges[y]:(g=new e.TokenSet,s.node.edges[y]=g),s.str.length==1&&(g.final=!0),r.push({node:g,editsRemaining:s.editsRemaining-1,str:f+s.str.slice(2)})}}}return i},e.TokenSet.fromString=function(t){for(var n=new e.TokenSet,i=n,r=0,s=t.length;r=t;n--){var i=this.uncheckedNodes[n],r=i.child.toString();r in this.minimizedNodes?i.parent.edges[i.char]=this.minimizedNodes[r]:(i.child._str=r,this.minimizedNodes[r]=i.child),this.uncheckedNodes.pop()}};e.Index=function(t){this.invertedIndex=t.invertedIndex,this.fieldVectors=t.fieldVectors,this.tokenSet=t.tokenSet,this.fields=t.fields,this.pipeline=t.pipeline},e.Index.prototype.search=function(t){return this.query(function(n){var i=new e.QueryParser(t,n);i.parse()})},e.Index.prototype.query=function(t){for(var n=new e.Query(this.fields),i=Object.create(null),r=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),u=0;u1?this._b=1:this._b=t},e.Builder.prototype.k1=function(t){this._k1=t},e.Builder.prototype.add=function(t,n){var i=t[this._ref],r=Object.keys(this._fields);this._documents[i]=n||{},this.documentCount+=1;for(var s=0;s=this.length)return e.QueryLexer.EOS;var t=this.str.charAt(this.pos);return this.pos+=1,t},e.QueryLexer.prototype.width=function(){return this.pos-this.start},e.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},e.QueryLexer.prototype.backup=function(){this.pos-=1},e.QueryLexer.prototype.acceptDigitRun=function(){var t,n;do t=this.next(),n=t.charCodeAt(0);while(n>47&&n<58);t!=e.QueryLexer.EOS&&this.backup()},e.QueryLexer.prototype.more=function(){return this.pos1&&(t.backup(),t.emit(e.QueryLexer.TERM)),t.ignore(),t.more())return e.QueryLexer.lexText},e.QueryLexer.lexEditDistance=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.EDIT_DISTANCE),e.QueryLexer.lexText},e.QueryLexer.lexBoost=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.BOOST),e.QueryLexer.lexText},e.QueryLexer.lexEOS=function(t){t.width()>0&&t.emit(e.QueryLexer.TERM)},e.QueryLexer.termSeparator=e.tokenizer.separator,e.QueryLexer.lexText=function(t){for(;;){var n=t.next();if(n==e.QueryLexer.EOS)return e.QueryLexer.lexEOS;if(n.charCodeAt(0)==92){t.escapeCharacter();continue}if(n==":")return e.QueryLexer.lexField;if(n=="~")return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexEditDistance;if(n=="^")return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexBoost;if(n=="+"&&t.width()===1||n=="-"&&t.width()===1)return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if(n.match(e.QueryLexer.termSeparator))return e.QueryLexer.lexTerm}},e.QueryParser=function(t,n){this.lexer=new e.QueryLexer(t),this.query=n,this.currentClause={},this.lexemeIdx=0},e.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var t=e.QueryParser.parseClause;t;)t=t(this);return this.query},e.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},e.QueryParser.prototype.consumeLexeme=function(){var t=this.peekLexeme();return this.lexemeIdx+=1,t},e.QueryParser.prototype.nextClause=function(){var t=this.currentClause;this.query.clause(t),this.currentClause={}},e.QueryParser.parseClause=function(t){var n=t.peekLexeme();if(n!=null)switch(n.type){case e.QueryLexer.PRESENCE:return e.QueryParser.parsePresence;case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expected either a field or a term, found "+n.type;throw n.str.length>=1&&(i+=" with value '"+n.str+"'"),new e.QueryParseError(i,n.start,n.end)}},e.QueryParser.parsePresence=function(t){var n=t.consumeLexeme();if(n!=null){switch(n.str){case"-":t.currentClause.presence=e.Query.presence.PROHIBITED;break;case"+":t.currentClause.presence=e.Query.presence.REQUIRED;break;default:var i="unrecognised presence operator'"+n.str+"'";throw new e.QueryParseError(i,n.start,n.end)}var r=t.peekLexeme();if(r==null){var i="expecting term or field, found nothing";throw new e.QueryParseError(i,n.start,n.end)}switch(r.type){case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expecting term or field, found '"+r.type+"'";throw new e.QueryParseError(i,r.start,r.end)}}},e.QueryParser.parseField=function(t){var n=t.consumeLexeme();if(n!=null){if(t.query.allFields.indexOf(n.str)==-1){var i=t.query.allFields.map(function(o){return"'"+o+"'"}).join(", "),r="unrecognised field '"+n.str+"', possible fields: "+i;throw new e.QueryParseError(r,n.start,n.end)}t.currentClause.fields=[n.str];var s=t.peekLexeme();if(s==null){var r="expecting term, found nothing";throw new e.QueryParseError(r,n.start,n.end)}switch(s.type){case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var r="expecting term, found '"+s.type+"'";throw new e.QueryParseError(r,s.start,s.end)}}},e.QueryParser.parseTerm=function(t){var n=t.consumeLexeme();if(n!=null){t.currentClause.term=n.str.toLowerCase(),n.str.indexOf("*")!=-1&&(t.currentClause.usePipeline=!1);var i=t.peekLexeme();if(i==null){t.nextClause();return}switch(i.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var r="Unexpected lexeme type '"+i.type+"'";throw new e.QueryParseError(r,i.start,i.end)}}},e.QueryParser.parseEditDistance=function(t){var n=t.consumeLexeme();if(n!=null){var i=parseInt(n.str,10);if(isNaN(i)){var r="edit distance must be numeric";throw new e.QueryParseError(r,n.start,n.end)}t.currentClause.editDistance=i;var s=t.peekLexeme();if(s==null){t.nextClause();return}switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var r="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(r,s.start,s.end)}}},e.QueryParser.parseBoost=function(t){var n=t.consumeLexeme();if(n!=null){var i=parseInt(n.str,10);if(isNaN(i)){var r="boost must be numeric";throw new e.QueryParseError(r,n.start,n.end)}t.currentClause.boost=i;var s=t.peekLexeme();if(s==null){t.nextClause();return}switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var r="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(r,s.start,s.end)}}},function(t,n){typeof define=="function"&&define.amd?define(n):typeof Mt=="object"?Bt.exports=n():t.lunr=n()}(this,function(){return e})})()});Handlebars.registerHelper("groupChanged",function(e,t,n){let i=t||"";if(e.group!==i)return delete e.nestedContext,e.group=i,n.fn(this)});Handlebars.registerHelper("nestingChanged",function(e,t,n){if(t.nested_context&&t.nested_context!==e.nestedContext){if(e.nestedContext=t.nested_context,e.lastModuleSeenInGroup!==t.nested_context)return n.fn(this)}else e.lastModuleSeenInGroup=t.title});Handlebars.registerHelper("showSections",function(e,t){if(e.sections.length>0)return t.fn(this)});Handlebars.registerHelper("showSummary",function(e,t){if(e.nodeGroups)return t.fn(this)});Handlebars.registerHelper("isArray",function(e,t){return Array.isArray(e)?t.fn(this):t.inverse(this)});Handlebars.registerHelper("isNonEmptyArray",function(e,t){return Array.isArray(e)&&e.length>0?t.fn(this):t.inverse(this)});Handlebars.registerHelper("isLocal",function(e,t){let n=window.location.pathname.split("/").pop();return e+".html"===n?t.fn(this):t.inverse(this)});var c=document.querySelector.bind(document),k=document.querySelectorAll.bind(document);function nt(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function de(e){return String(e).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}function re(){return document.body.dataset.type}function it(e,t){if(!!e){for(let n of e){let i=n.nodeGroups&&n.nodeGroups.find(r=>r.nodes.some(s=>s.anchor===t));if(i)return i.key}return null}}function fe(){return window.location.hash.replace(/^#/,"")}function rt(e){return new URLSearchParams(window.location.search).get(e)}function st(e){return fetch(e).then(t=>t.ok).catch(()=>!1)}function ot(e){document.readyState!=="loading"?e():document.addEventListener("DOMContentLoaded",e)}function K(e){return!e||e.trim()===""}function at(e,t){let n;return function(...r){clearTimeout(n),n=setTimeout(()=>{n=null,e(...r)},t)}}function he(){return document.head.querySelector("meta[name=project][content]").content}var ct="ex_doc:settings",Dn={tooltips:!0,theme:null,livebookUrl:null},we=class{constructor(){this._subscribers=[],this._settings=Dn,this._loadSettings()}get(){return this._settings}update(t){let n=this._settings;this._settings={...this._settings,...t},this._subscribers.forEach(i=>i(this._settings,n)),this._storeSettings()}getAndSubscribe(t){this._subscribers.push(t),t(this._settings)}_loadSettings(){try{let t=localStorage.getItem(ct);if(t){let n=JSON.parse(t);this._settings={...this._settings,...n}}this._loadSettingsLegacy()}catch(t){console.error(`Failed to load settings: ${t}`)}}_storeSettings(){try{this._storeSettingsLegacy(),localStorage.setItem(ct,JSON.stringify(this._settings))}catch(t){console.error(`Failed to persist settings: ${t}`)}}_loadSettingsLegacy(){localStorage.getItem("tooltipsDisabled")!==null&&(this._settings={...this._settings,tooltips:!1}),localStorage.getItem("night-mode")==="true"&&(this._settings={...this._settings,nightMode:!0}),this._settings.nightMode===!0&&(this._settings={...this._settings,theme:"dark"})}_storeSettingsLegacy(){this._settings.tooltips?localStorage.removeItem("tooltipsDisabled"):localStorage.setItem("tooltipsDisabled","true"),this._settings.nightMode!==null?localStorage.setItem("night-mode",this._settings.nightMode===!0?"true":"false"):localStorage.removeItem("night-mode"),this._settings.theme!==null?(localStorage.setItem("night-mode",this._settings.theme==="dark"?"true":"false"),this._settings.nightMode=this._settings.theme==="dark"):(delete this._settings.nightMode,localStorage.removeItem("night-mode"))}},O=new we;var Hn=".content",lt=".content-inner",Fn=".livebook-badge";function ut(){Mn(),Vn(),jn(),Bn()}function Mn(){c(Hn).querySelectorAll("a").forEach(e=>{e.querySelector("code, img")&&e.classList.add("no-underline")})}function Bn(){["warning","info","error","neutral","tip"].forEach(t=>{k(`blockquote h3.${t}, blockquote h4.${t}`).forEach(n=>{n.closest("blockquote").classList.add(t)})})}function Vn(){c(lt).setAttribute("tabindex",-1),c(lt).focus()}function jn(){let t=window.location.pathname.replace(/\.html$/,".livemd"),n=new URL(t,window.location.href).toString();O.getAndSubscribe(i=>{let r=i.livebookUrl?zn(i.livebookUrl,n):qn(n);for(let s of k(Fn))s.href=r})}function qn(e){return`https://livebook.dev/run?url=${encodeURIComponent(e)}`}function zn(e,t){return`${e}/import?url=${encodeURIComponent(t)}`}var gt=tt(mt());var ci=768,yt=300,li=".sidebar-toggle",ui=".content",H={CLOSED:"closed",OPEN:"open",NO_PREF:"no_pref"},F={opened:"sidebar-opened",opening:"sidebar-opening",closed:"sidebar-closed",closing:"sidebar-closing"},di=Object.values(F),P={togglingTimeout:null,lastWindowWidth:window.innerWidth,sidebarPreference:H.NO_PREF};function vt(){St(),fi()}function St(){if(sessionStorage.getItem("sidebar_state")==="closed")return Y(F.closed);Y(xt()?F.closed:F.opened)}function xt(){return window.matchMedia(`screen and (max-width: ${ci}px)`).matches}function Y(...e){document.body.classList.remove(...di),document.body.classList.add(...e)}function fi(){c(li).addEventListener("click",e=>{_e(),mi()}),c(ui).addEventListener("click",e=>{pi()}),window.addEventListener("resize",(0,gt.default)(e=>{hi()},100))}function _e(){return Oe()?Et():Ie()}function Oe(){return document.body.classList.contains(F.opened)||document.body.classList.contains(F.opening)}function Ie(){return bt(),Y(F.opening),sessionStorage.setItem("sidebar_state","opened"),new Promise((e,t)=>{P.togglingTimeout=setTimeout(()=>{Y(F.opened),e()},yt)})}function Et(){return bt(),Y(F.closing),sessionStorage.setItem("sidebar_state","closed"),new Promise((e,t)=>{P.togglingTimeout=setTimeout(()=>{Y(F.closed),e()},yt)})}function bt(){P.togglingTimeout&&(clearTimeout(P.togglingTimeout),P.togglingTimeout=null)}function hi(){P.lastWindowWidth!==window.innerWidth&&(P.lastWindowWidth=window.innerWidth,(P.sidebarPreference===H.OPEN||P.sidebarPreference===H.NO_PREF)&&St())}function pi(){xt()&&Oe()&&Et()}function mi(){switch(P.sidebarPreference){case H.OPEN:P.sidebarPreference=H.CLOSED;break;case H.CLOSED:P.sidebarPreference=H.OPEN;break;case H.NO_PREF:Oe()?P.sidebarPreference=H.OPEN:P.sidebarPreference=H.CLOSED}}function J(){return window.sidebarNodes||{}}function Lt(){return window.versionNodes||[]}var Ce={search:"search",extras:"extras",modules:"modules",tasks:"tasks"},Tt=[Ce.extras,Ce.modules,Ce.tasks],me="#full-list";function wt(){kt(J(),re()),Ot(),_t(),yi()}function kt(e,t){let n=e[t]||[],i=c(me),r=Handlebars.templates["sidebar-items"]({nodes:n,group:""});i.innerHTML=r,gi(t),i.querySelectorAll("ul").forEach(s=>{if(s.innerHTML.trim()===""){let o=s.previousElementSibling;o.classList.contains("expand")&&o.classList.remove("expand")}}),i.querySelectorAll("li a").forEach(s=>{s.addEventListener("click",o=>{let a=o.target,u=a.closest("li"),l=i.querySelector(".current-section");if(a.matches(".icon-expand")){o.preventDefault(),u.classList.toggle("open");return}l&&l.classList.remove("current-section"),s.matches(".expand")&&s.pathname===window.location.pathname&&u.classList.add("open")})})}function gi(e){Tt.forEach(t=>{let n=c(`#${t}-list-link`);n&&n.parentElement.classList.toggle("selected",t===e)})}function _t(){let e=c(me),t=e.querySelector("li.current-page");t&&(t.scrollIntoView(),e.scrollTop-=40)}function Ot(){let e=fe()||"content",n=J()[re()]||[],i=it(n,e),r=c(me),s=r.querySelector(`li.current-page a.expand[href$="#${i}"]`);s&&s.closest("li").classList.add("open");let o=r.querySelector(`li.current-page a[href$="#${e}"]`);if(o){let a=o.closest("ul");a.classList.contains("deflist")&&a.closest("li").classList.add("current-section"),o.closest("li").classList.add("current-hash")}}function yi(){Tt.forEach(e=>{let t=c(`#${e}-list-link`);t&&t.addEventListener("click",n=>{n.preventDefault(),kt(J(),e),_t()})}),window.addEventListener("hashchange",e=>{let n=c(me).querySelector("li.current-page li.current-hash");n&&n.classList.remove("current-hash"),Ot()})}var $={module:"module",moduleChild:"module-child",mixTask:"mix-task",extra:"extra"};function Ct(e,t=5){if(K(e))return[];let n=J(),i=[...Pe(n.modules,e,$.module),...vi(n.modules,e,$.moduleChild),...Pe(n.tasks,e,$.mixTask),...Pe(n.extras,e,$.extra)];return Li(i).slice(0,t)}function Pe(e,t,n){return e.map(i=>Si(i,t,n)).filter(i=>i!==null)}function vi(e,t,n){return e.filter(i=>i.nodeGroups).flatMap(i=>i.nodeGroups.flatMap(({key:r,nodes:s})=>{let o=bi(r);return s.map(a=>xi(a,i.id,t,n,o)||Ei(a,i.id,t,n,o))})).filter(i=>i!==null)}function Si(e,t,n){return Re(e.title,t)?{link:`${e.id}.html`,title:Qe(e.title,t),label:null,description:null,matchQuality:Ae(e.title,t),category:n}:null}function xi(e,t,n,i,r){return Re(e.id,n)?{link:`${t}.html#${e.anchor}`,title:Qe(e.id,n),label:r,description:t,matchQuality:Ae(e.id,n),category:i}:null}function Ei(e,t,n,i,r){let s=`${t}.${e.id}`;if(!Re(s,n))return null;let o=n.replace(/\./g," ");return Ti(e.id,o)?{link:`${t}.html#${e.anchor}`,title:Qe(e.id,o),label:r,description:t,matchQuality:Ae(s,n),category:i}:null}function bi(e){switch(e){case"callbacks":return"callback";case"types":return"type";default:return null}}function Li(e){return e.slice().sort((t,n)=>t.matchQuality!==n.matchQuality?n.matchQuality-t.matchQuality:It(t.category)-It(n.category))}function It(e){switch(e){case $.module:return 1;case $.moduleChild:return 2;case $.mixTask:return 3;default:return 4}}function Ti(e,t){return ye(t).some(i=>Pt(e,i))}function Re(e,t){return ye(t).every(i=>Pt(e,i))}function Pt(e,t){return e.toLowerCase().includes(t.toLowerCase())}function Ae(e,t){let n=ye(t),r=n.map(o=>o.length).reduce((o,a)=>o+a,0)/e.length,s=wi(e,n[0])?1:0;return r+s}function wi(e,t){return e.toLowerCase().startsWith(t.toLowerCase())}function ye(e){return e.trim().split(/\s+/)}function Qe(e,t){let n=ye(t).sort((i,r)=>r.length-i.length);return ge(e,n)}function ge(e,t){if(t.length===0)return e;let[n,...i]=t,r=e.match(new RegExp(`(.*)(${nt(n)})(.*)`,"i"));if(r){let[,s,o,a]=r;return ge(s,t)+""+de(o)+""+ge(a,t)}else return ge(e,i)}var X=".autocomplete",ve=".autocomplete-suggestion",M={autocompleteSuggestions:[],selectedIdx:-1};function ki(){c(X).classList.add("shown")}function Ne(){c(X).classList.remove("shown")}function Rt(){return c(X).classList.contains("shown")}function De(e){M.autocompleteSuggestions=Ct(e),M.selectedIdx=-1,K(e)?Ne():(_i({term:e,suggestions:M.autocompleteSuggestions}),Se(0),ki())}function _i({term:e,suggestions:t}){let n=Handlebars.templates["autocomplete-suggestions"]({suggestions:t,term:e}),i=c(X);i.innerHTML=n}function At(){return M.selectedIdx===-1?null:M.autocompleteSuggestions[M.selectedIdx]}function Se(e){M.selectedIdx=Oi(e);let t=c(`${ve}.selected`),n=c(`${ve}[data-index="${M.selectedIdx}"]`);t&&t.classList.remove("selected"),n&&n.classList.add("selected")}function Oi(e){let t=M.autocompleteSuggestions.length+1;return(M.selectedIdx+e+1+t)%t-1}var se="form.sidebar-search input",Ii="form.sidebar-search .search-close-button";function Qt(){Ci()}function Nt(e){let t=c(se);t.value=e}function Dt(){c(se).focus()}function Ci(){let e=c(se);e.addEventListener("keydown",t=>{t.key==="Escape"?(xe(),e.blur()):t.key==="Enter"?Pi(t):t.key==="ArrowUp"?(Se(-1),t.preventDefault()):t.key==="ArrowDown"&&(Se(1),t.preventDefault())}),e.addEventListener("input",t=>{De(t.target.value)}),e.addEventListener("focus",t=>{document.body.classList.add("search-focused"),De(t.target.value)}),e.addEventListener("blur",t=>{let n=t.relatedTarget;if(n){if(n.matches(ve))return setTimeout(()=>{Rt()&&e.focus()},1e3),null;n.matches(Ii)&&xe()}He()}),c(X).addEventListener("click",t=>{t.shiftKey||t.ctrlKey?e.focus():(xe(),He())})}function Pi(e){let t=c(se),n=e.shiftKey||e.ctrlKey,i=At();e.preventDefault();let r=n?"_blank":"_self",s=document.createElement("a");s.setAttribute("target",r),i?s.setAttribute("href",i.link):s.setAttribute("href",`search.html?q=${encodeURIComponent(t.value)}`),s.click(),n||(xe(),He())}function xe(){let e=c(se);e.value=""}function He(){document.body.classList.remove("search-focused"),Ne()}var Ht=".sidebar-projectVersion",Ri=".sidebar-projectVersionsDropdown";function Ft(){let e=Lt();if(e.length>0){let n=c(Ht).textContent.trim(),i=Qi(e,n);Ai({nodes:i})}}function Ai({nodes:e}){let t=c(Ht),n=Handlebars.templates["versions-dropdown"]({nodes:e});t.innerHTML=n,c(Ri).addEventListener("change",Di)}function Qi(e,t){return Ni(e,t).map(i=>({...i,isCurrentVersion:i.version===t}))}function Ni(e,t){return e.some(i=>i.version===t)?e:[{version:t,url:"#"},...e]}function Di(e){let t=e.target.value,n=window.location.pathname.split("/").pop()+window.location.hash,i=`${t}/${n}`;st(i).then(r=>{r?window.location.href=i:window.location.href=t})}var I=tt(Vt());var Ee=80,Hi="#search";function qt(){if(window.location.pathname.endsWith("/search.html")){let e=rt("q");Fi(e)}}function Fi(e){if(K(e))Fe({value:e});else{Nt(e);let t=Mi();try{let n=Ui(t.search(e));Fe({value:e,results:n})}catch(n){Fe({value:e,errorMessage:n.message})}}}function Fe({value:e,results:t,errorMessage:n}){let i=c(Hi),r=Handlebars.templates["search-results"]({value:e,results:t,errorMessage:n});i.innerHTML=r}function Mi(){I.default.QueryLexer.termSeparator=/\s+/,I.default.Pipeline.registerFunction(Me,"elixirTokenSplitter"),I.default.Pipeline.registerFunction(Be,"elixirTrimmer"),I.default.Pipeline.registerFunction(Ve,"hyphenSearch");let e=Bi();if(e)return e;let t=ji();return Vi(t),t}function Bi(){try{let e=sessionStorage.getItem(zt());return e?I.default.Index.load(JSON.parse(e)):null}catch(e){return console.error("Failed to load index: ",e),null}}function Vi(e){try{let t=JSON.stringify(e);sessionStorage.setItem(zt(),t)}catch(t){console.error("Failed to save index: ",t)}}function zt(){return`index:${he()}`}function ji(){return(0,I.default)(function(){this.tokenizer.separator=/\s+/,this.ref("ref"),this.field("title",{boost:3}),this.field("doc"),this.metadataWhitelist=["position"],this.pipeline.remove(I.default.stopWordFilter),this.use($i),this.use(qi),this.pipeline.remove(I.default.trimmer),this.use(zi),searchNodes.forEach(e=>{this.add(e)})})}function qi(e){e.pipeline.before(I.default.stemmer,Me),e.searchPipeline.before(I.default.stemmer,Me)}function Me(e){let t=e.toString().split(/\.|\/|_/).map(n=>e.clone().update(()=>n));return t.length>1?[...t,e]:t}function zi(e){e.pipeline.after(I.default.stemmer,Be),e.searchPipeline.after(I.default.stemmer,Be)}function Be(e){return e.update(function(t){return t.replace(/^@?\W+/,"").replace(/\W+$/,"")})}function Ve(e){if(e.toString().indexOf("-")<0)return e;let n=[];return n.push(e.clone(function(i){return i.replace("-","")})),n.push(e),n}function $i(e){e.pipeline.before(I.default.stemmer,Ve),e.searchPipeline.before(I.default.stemmer,Ve)}function Ui(e){return e.filter(t=>jt(t.ref)).map(t=>{let n=jt(t.ref),i=t.matchData.metadata;return{...n,metadata:i,excerpts:Wi(n,i)}})}function jt(e){return searchNodes.find(t=>t.ref===e)||null}function Wi(e,t){let{doc:n}=e,r=Object.keys(t).filter(s=>"doc"in t[s]).map(s=>t[s].doc.position.map(([o,a])=>Gi(n,o,a))).reduce((s,o)=>s.concat(o),[]);return r.length===0?[n.slice(0,Ee*2)+(Ee*20?"...":"",e.slice(i,t),""+de(e.slice(t,t+n))+"",e.slice(t+n,r),r{clearTimeout(be),e.target.classList.remove("show")});function je(e){Z&&(clearTimeout(be),Z.innerText=e,Z.classList.add("show"),be=setTimeout(()=>{Z.classList.remove("show"),be=setTimeout(function(){Z.innerText=""},1e3)},5e3))}var $t="dark",qe=["system","dark","light"];function Ut(){O.getAndSubscribe(e=>{document.body.classList.toggle($t,Gt(e))}),Yi()}function Wt(){let t=O.get().theme||"system",n=qe[qe.indexOf(t)+1]||qe[0];O.update({theme:n}),je(`Set theme to "${n}"`)}function Gt(e){return e.theme==="dark"||Ki()&&(e.theme==null||e.theme==="system")}function Ki(){return window.matchMedia("(prefers-color-scheme: dark)").matches}function Yi(){window.matchMedia("(prefers-color-scheme: dark)").addListener(e=>{let t=O.get(),n=Gt(t);(t.theme==null||t.theme==="system")&&(document.body.classList.toggle($t,n),je(`Browser changed theme to "${n?"dark":"light"}"`))})}var Ji="hll";function Yt(){Xi()}function Xi(){k("[data-group-id]").forEach(t=>{let n=t.getAttribute("data-group-id");t.addEventListener("mouseenter",i=>{Kt(n,!0)}),t.addEventListener("mouseleave",i=>{Kt(n,!1)})})}function Kt(e,t){k(`[data-group-id="${e}"]`).forEach(i=>{i.classList.toggle(Ji,t)})}var ee="#modal",Zi="#modal .modal-close",er="#modal .modal-title",tr="#modal .modal-body",Jt='button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])',B={prevFocus:null,lastFocus:null,ignoreFocusChanges:!1};function Xt(){nr()}function nr(){let e=Handlebars.templates["modal-layout"]();document.body.insertAdjacentHTML("beforeend",e),c(ee).addEventListener("keydown",t=>{t.key==="Escape"&&oe()}),c(Zi).addEventListener("click",t=>{oe()})}function Zt(e){if(B.ignoreFocusChanges)return;let t=c(ee);if(t.contains(e.target))B.lastFocus=e.target;else{B.ignoreFocusChanges=!0;let n=ir(t);B.lastFocus===n?rr(t).focus():n.focus(),B.ignoreFocusChanges=!1,B.lastFocus=document.activeElement}}function ir(e){return e.querySelector(Jt)}function rr(e){let t=e.querySelectorAll(Jt);return t[t.length-1]}function Le({title:e,body:t}){B.prevFocus=document.activeElement,document.addEventListener("focus",Zt,!0),c(er).innerHTML=e,c(tr).innerHTML=t,c(ee).classList.add("shown"),c(ee).focus()}function oe(){c(ee).classList.remove("shown"),document.addEventListener("focus",Zt,!0),B.prevFocus&&B.prevFocus.focus(),B.prevFocus=null}function en(){return c(ee).classList.contains("shown")}var sr="https://hexdocs.pm/%%",or="https://hex.pm/api/packages?search=name:%%*",ar=".display-quick-switch",ze="#quick-switch-input",nn="#quick-switch-results",cr=".quick-switch-result",lr=300,ur=9,dr=["elixir","eex","ex_unit","hex","iex","logger","mix"].map(e=>({name:e})),rn=2,R={autocompleteResults:[],selectedIdx:null};function sn(){fr()}function fr(){k(ar).forEach(e=>{e.addEventListener("click",t=>{Ue()})})}function hr(e){if(e.key==="Enter"){let t=e.target.value;mr(t),e.preventDefault()}else e.key==="ArrowUp"?(tn(-1),e.preventDefault()):e.key==="ArrowDown"&&(tn(1),e.preventDefault())}function pr(e){let t=e.target.value;if(t.lengthn.json()).then(n=>{Array.isArray(n)&&(R.autocompleteResults=Sr(e,n),R.selectedIdx=null,c(ze).value.length>=rn&&vr({results:R.autocompleteResults}))})}function vr({results:e}){let t=c(nn),n=Handlebars.templates["quick-switch-results"]({results:e});t.innerHTML=n,k(cr).forEach(i=>{i.addEventListener("click",r=>{let s=i.getAttribute("data-index"),o=R.autocompleteResults[s];$e(o.name)})})}function Sr(e,t){return dr.concat(t).filter(n=>n.name.toLowerCase().includes(e.toLowerCase())).filter(n=>n.releases===void 0||n.releases[0].has_docs===!0).slice(0,ur)}function tn(e){R.selectedIdx=xr(e);let t=c(".quick-switch-result.selected"),n=c(`.quick-switch-result[data-index="${R.selectedIdx}"]`);t&&t.classList.remove("selected"),n&&n.classList.add("selected")}function xr(e){let t=R.autocompleteResults.length;if(R.selectedIdx===null){if(e>=0)return 0;if(e<0)return t-1}return(R.selectedIdx+e+t)%t}var Er=".display-settings",br="#settings-modal-content",We="#modal-settings-tab",Ge="#modal-keyboard-shortcuts-tab",an="#settings-content",cn="#keyboard-shortcuts-content",Lr=[{title:"Settings",id:"modal-settings-tab"},{title:"Keyboard shortcuts",id:"modal-keyboard-shortcuts-tab"}];function ln(){Tr()}function Tr(){k(Er).forEach(e=>{e.addEventListener("click",t=>{Ke()})})}function on(){c(Ge).classList.remove("active"),c(We).classList.add("active"),c(an).classList.remove("hidden"),c(cn).classList.add("hidden")}function wr(){c(Ge).classList.add("active"),c(We).classList.remove("active"),c(cn).classList.remove("hidden"),c(an).classList.add("hidden")}function Ke(){Le({title:Lr.map(({id:s,title:o})=>``).join(""),body:Handlebars.templates["settings-modal-body"]({shortcuts:Ye})});let e=c(br),t=e.querySelector('[name="theme"]'),n=e.querySelector('[name="tooltips"]'),i=e.querySelector('[name="direct_livebook_url"]'),r=e.querySelector('[name="livebook_url"]');O.getAndSubscribe(s=>{t.value=s.theme||"system",n.checked=s.tooltips,s.livebookUrl===null?(i.checked=!1,r.classList.add("hidden"),r.tabIndex=-1):(i.checked=!0,r.classList.remove("hidden"),r.tabIndex=0,r.value=s.livebookUrl)}),t.addEventListener("change",s=>{O.update({theme:s.target.value})}),n.addEventListener("change",s=>{O.update({tooltips:s.target.checked})}),i.addEventListener("change",s=>{let o=s.target.checked?r.value:null;O.update({livebookUrl:o})}),r.addEventListener("input",s=>{O.update({livebookUrl:s.target.value})}),c(We).addEventListener("click",s=>{on()}),c(Ge).addEventListener("click",s=>{wr()}),on()}var kr="#settings-modal-content",Ye=[{key:"c",description:"Toggle sidebar",action:_e},{key:"n",description:"Cycle themes",action:Wt},{key:"s",description:"Focus search bar",displayAs:"/ or s",action:un},{key:"/",action:un},{key:"g",description:"Search HexDocs package",displayAs:"g",action:Ue},{key:"?",displayAs:"?",description:"Bring up this modal",action:Cr}],Je={shortcutBeingPressed:null};function dn(){_r()}function _r(){document.addEventListener("keydown",Or),document.addEventListener("keyup",Ir)}function Or(e){if(Je.shortcutBeingPressed||e.target.matches("input, textarea")||e.ctrlKey||e.metaKey||e.altKey)return;let t=Ye.find(n=>n.key===e.key);!t||(Je.shortcutBeingPressed=t,e.preventDefault(),t.action(e))}function Ir(e){Je.shortcutBeingPressed=null}function un(e){oe(),Ie().then(()=>{Dt()})}function Cr(){Pr()?oe():Ke()}function Pr(){return en()&&c(kr)}var U={plain:"plain",function:"function",module:"module"},Rr=[{href:"typespecs.html#basic-types",hint:{kind:U.plain,description:"Basic type"}},{href:"typespecs.html#literals",hint:{kind:U.plain,description:"Literal"}},{href:"typespecs.html#built-in-types",hint:{kind:U.plain,description:"Built-in type"}}],Te={cancelHintFetching:null};function fn(e){if(pn(e))return!0;let t=/#.*\//;return e.includes("#")&&!t.test(e)?!1:e.includes(".html")}function hn(e){let t=pn(e);return t?Promise.resolve(t):Ar(e)}function pn(e){let t=Rr.find(n=>e.includes(n.href));return t?t.hint:null}function Ar(e){let t=e.replace(".html",".html?hint=true");return new Promise((n,i)=>{let r=document.createElement("iframe");r.setAttribute("sandbox","allow-scripts allow-same-origin"),r.setAttribute("src",t),r.style.display="none";function s(a){let{href:u,hint:l}=a.data;t===u&&(o(),n(l))}Te.cancelHintFetching=()=>{o(),i(new Error("cancelled"))};function o(){r.remove(),window.removeEventListener("message",s),Te.cancelHintFetching=null}window.addEventListener("message",s),document.body.appendChild(r)})}function mn(){Te.cancelHintFetching&&Te.cancelHintFetching()}function gn(e){let n=e.querySelector("h1").textContent,i=e.querySelector(".docstring > p"),r=i?i.textContent:"";return{kind:U.function,title:n.trim(),description:r.trim()}}function yn(e){let n=e.querySelector("h1 > span").textContent,i=e.querySelector("#moduledoc p"),r=i?i.textContent:"";return{kind:U.module,title:n.trim(),description:r.trim()}}var Qr=".content a",Xe="#tooltip",Nr="#tooltip .tooltip-body",Sn="body .content-inner",Dr="#content",xn="tooltip-shown",ae=10,Hr=ae*4,vn={height:450,width:768},Fr=100,te={currentLinkElement:null,hoverDelayTimeout:null};function En(){Mr(),Br()}function Mr(){let e=Handlebars.templates["tooltip-layout"]();c(Sn).insertAdjacentHTML("beforeend",e)}function Br(){k(Qr).forEach(e=>{!Vr(e)||(e.addEventListener("mouseenter",t=>{qr(e)}),e.addEventListener("mouseleave",t=>{Wr(e)}))})}function Vr(e){return!(e.classList.contains("detail-link")||jr(e.href)||!fn(e.href))}function jr(e){let t=e.replace(Dr,"");return window.location.href.split("#")[0]===t}function qr(e){!zr()||(te.currentLinkElement=e,te.hoverDelayTimeout=setTimeout(()=>{hn(e.href).then(t=>{$r(t),Ur()}).catch(()=>{})},Fr))}function zr(){let e=window.innerWidthe.firstElementChild&&e.firstElementChild.tagName==="CODE").forEach(e=>e.insertAdjacentHTML("beforeend",is)),Array.from(k(".copy-button")).forEach(e=>{let t;e.addEventListener("click",()=>{t&&clearTimeout(t);let n=Array.from(e.parentElement.querySelector("code").childNodes).filter(i=>!(i.tagName==="SPAN"&&i.classList.contains("unselectable"))).map(i=>i.textContent).join("");navigator.clipboard.writeText(n),e.classList.add("clicked"),t=setTimeout(()=>e.classList.remove("clicked"),3e3)})})}ot(()=>{Ut(),vt(),wt(),Qt(),Ft(),ut(),Yt(),Xt(),dn(),sn(),En(),Tn(),qt(),wn(),ln()});})(); -/*! - * lunr.Builder - * Copyright (C) 2020 Oliver Nightingale - */ -/*! - * lunr.Index - * Copyright (C) 2020 Oliver Nightingale - */ -/*! - * lunr.Pipeline - * Copyright (C) 2020 Oliver Nightingale - */ -/*! - * lunr.Set - * Copyright (C) 2020 Oliver Nightingale - */ -/*! - * lunr.TokenSet - * Copyright (C) 2020 Oliver Nightingale - */ -/*! - * lunr.Vector - * Copyright (C) 2020 Oliver Nightingale - */ -/*! - * lunr.stemmer - * Copyright (C) 2020 Oliver Nightingale - * Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt - */ -/*! - * lunr.stopWordFilter - * Copyright (C) 2020 Oliver Nightingale - */ -/*! - * lunr.tokenizer - * Copyright (C) 2020 Oliver Nightingale - */ -/*! - * lunr.trimmer - * Copyright (C) 2020 Oliver Nightingale - */ -/*! - * lunr.utils - * Copyright (C) 2020 Oliver Nightingale - */ -/** - * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.9 - * Copyright (C) 2020 Oliver Nightingale - * @license MIT - */ diff --git a/doc/dist/html-erlang-6FXMBT73.css b/doc/dist/html-erlang-6FXMBT73.css deleted file mode 100644 index 391e389..0000000 --- a/doc/dist/html-erlang-6FXMBT73.css +++ /dev/null @@ -1,2 +0,0 @@ -:root{--main: hsl(0, 100%, 64%);--main-darkened-10: hsl(0, 100%, 54%);--main-darkened-20: hsl(0, 100%, 44%);--main-lightened-05: hsl(0, 100%, 69%);--main-lightened-10: hsl(0, 100%, 74%)}@font-face{font-family:Lato;font-style:normal;font-display:swap;font-weight:300;src:url(./lato-latin-ext-300-normal-VPGGJKJL.woff2) format("woff2"),url(./lato-all-300-normal-GIV56FBX.woff) format("woff");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Lato;font-style:normal;font-display:swap;font-weight:300;src:url(./lato-latin-300-normal-YUMVEFOL.woff2) format("woff2"),url(./lato-all-300-normal-GIV56FBX.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Lato;font-style:normal;font-display:swap;font-weight:700;src:url(./lato-latin-ext-700-normal-Q2L5DVMW.woff2) format("woff2"),url(./lato-all-700-normal-XMT5XFBS.woff) format("woff");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Lato;font-style:normal;font-display:swap;font-weight:700;src:url(./lato-latin-700-normal-2XVSBPG4.woff2) format("woff2"),url(./lato-all-700-normal-XMT5XFBS.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Merriweather;font-style:normal;font-display:swap;font-weight:300;src:url(./merriweather-cyrillic-ext-300-normal-5LF5LCEK.woff2) format("woff2"),url(./merriweather-all-300-normal-VL6BT3UN.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Merriweather;font-style:normal;font-display:swap;font-weight:300;src:url(./merriweather-cyrillic-300-normal-7PAAHU3N.woff2) format("woff2"),url(./merriweather-all-300-normal-VL6BT3UN.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Merriweather;font-style:normal;font-display:swap;font-weight:300;src:url(./merriweather-vietnamese-300-normal-U376L4Z4.woff2) format("woff2"),url(./merriweather-all-300-normal-VL6BT3UN.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB}@font-face{font-family:Merriweather;font-style:normal;font-display:swap;font-weight:300;src:url(./merriweather-latin-ext-300-normal-K6L27CZ5.woff2) format("woff2"),url(./merriweather-all-300-normal-VL6BT3UN.woff) format("woff");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Merriweather;font-style:normal;font-display:swap;font-weight:300;src:url(./merriweather-latin-300-normal-RWDJH4FN.woff2) format("woff2"),url(./merriweather-all-300-normal-VL6BT3UN.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Merriweather;font-style:italic;font-display:swap;font-weight:300;src:url(./merriweather-cyrillic-ext-300-italic-JP3ZEV2P.woff2) format("woff2"),url(./merriweather-all-300-italic-CMQNB6FA.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Merriweather;font-style:italic;font-display:swap;font-weight:300;src:url(./merriweather-cyrillic-300-italic-M6KMXZSZ.woff2) format("woff2"),url(./merriweather-all-300-italic-CMQNB6FA.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Merriweather;font-style:italic;font-display:swap;font-weight:300;src:url(./merriweather-vietnamese-300-italic-EHHNZPUO.woff2) format("woff2"),url(./merriweather-all-300-italic-CMQNB6FA.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB}@font-face{font-family:Merriweather;font-style:italic;font-display:swap;font-weight:300;src:url(./merriweather-latin-ext-300-italic-MWCA36KE.woff2) format("woff2"),url(./merriweather-all-300-italic-CMQNB6FA.woff) format("woff");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Merriweather;font-style:italic;font-display:swap;font-weight:300;src:url(./merriweather-latin-300-italic-353COS6Q.woff2) format("woff2"),url(./merriweather-all-300-italic-CMQNB6FA.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inconsolata;font-style:normal;font-display:swap;font-weight:400;src:url(./inconsolata-vietnamese-400-normal-IGQPHHJH.woff2) format("woff2"),url(./inconsolata-all-400-normal-HMVRHNDU.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inconsolata;font-style:normal;font-display:swap;font-weight:400;src:url(./inconsolata-latin-ext-400-normal-K7HVGTP7.woff2) format("woff2"),url(./inconsolata-all-400-normal-HMVRHNDU.woff) format("woff");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inconsolata;font-style:normal;font-display:swap;font-weight:400;src:url(./inconsolata-latin-400-normal-RGKDDNDD.woff2) format("woff2"),url(./inconsolata-all-400-normal-HMVRHNDU.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inconsolata;font-style:normal;font-display:swap;font-weight:700;src:url(./inconsolata-vietnamese-700-normal-LHEGSN35.woff2) format("woff2"),url(./inconsolata-all-700-normal-WFUKXZPS.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inconsolata;font-style:normal;font-display:swap;font-weight:700;src:url(./inconsolata-latin-ext-700-normal-4MPBLFZC.woff2) format("woff2"),url(./inconsolata-all-700-normal-WFUKXZPS.woff) format("woff");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inconsolata;font-style:normal;font-display:swap;font-weight:700;src:url(./inconsolata-latin-700-normal-DTS2D7TO.woff2) format("woff2"),url(./inconsolata-all-700-normal-WFUKXZPS.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--serifFontFamily: "Merriweather", "Book Antiqua", Georgia, "Century Schoolbook", serif;--sansFontFamily: "Lato", sans-serif;--monoFontFamily: "Inconsolata", Menlo, Courier, monospace;--baseFontSize: 18px;--baseLineHeight: 1.5em;--gray50-lightened-2: hsl(207, 43%, 98% );--gray50: hsl(207, 43%, 96% );--gray100: hsl(212, 33%, 91% );--gray200: hsl(210, 26%, 84% );--gray300: hsl(210, 21%, 64% );--gray500: hsl(210, 21%, 34% );--gray600: hsl(210, 27%, 26% );--gray700: hsl(212, 35%, 17% );--gray800: hsl(216, 52%, 11% );--gray800-opacity-0: hsla(216, 52%, 11%, 0%);--gray900: hsl(218, 73%, 4% );--coldGrayFaint: hsl(240, 5%, 97% );--coldGrayLight: hsl(240, 5%, 88% );--coldGray-lightened-10: hsl(240, 5%, 56% );--coldGray: hsl(240, 5%, 46% );--coldGrayDark: hsl(240, 5%, 28% );--coldGrayDim: hsl(240, 5%, 18% );--yellowLight: hsl( 60, 100%, 81% );--yellowDark: hsl(60deg 100% 43% / 62%);--yellow: hsl( 60, 100%, 43% );--green-lightened-10: hsl( 90, 100%, 45% );--green: hsl( 90, 100%, 35% );--white: hsl( 0, 0%, 100% );--white-opacity-10: hsla( 0, 0%, 100%, 10%);--black: hsl( 0, 0%, 0% );--black-opacity-10: hsla( 0, 0%, 0%, 10%);--black-opacity-50: hsla( 0, 0%, 0%, 50%)}:root{--background: var(--white);--contrast: var(--black);--textBody: var(--gray700);--textHeaders: var(--gray800);--textDetailBackground: var(--coldGrayFaint);--textFooter: var(--coldGray);--links: var(--black);--linksVisited: var(--black);--linksNoUnderline: var(--main-darkened-10);--linksNoUnderlineVisited: var(--main-darkened-20);--iconAction: var(--coldGray);--iconActionHover: var(--gray800);--blockquoteBackground: var(--coldGrayFaint);--blockquoteBorder: var(--coldGrayLight);--warningBackground: hsl( 33, 100%, 97%);--warningHeadingBackground: hsl( 33, 87%, 64%);--warningHeading: var(--black);--errorBackground: hsl( 7, 81%, 96%);--errorHeadingBackground: hsl( 6, 80%, 60%);--errorHeading: var(--white);--infoBackground: hsl(206, 91%, 96%);--infoHeadingBackground: hsl(213, 92%, 62%);--infoHeading: var(--white);--neutralBackground: hsl(212, 29%, 92%);--neutralHeadingBackground: hsl(220, 43%, 11%);--neutralHeading: var(--white);--tipBackground: hsl(142, 31%, 93%);--tipHeadingBackground: hsl(134, 39%, 36%);--tipHeading: var(--white);--fnSpecAttr: var(--coldGray);--fnDeprecated: var(--yellowLight);--blink: var(--yellowLight);--codeBackground: var(--gray50-lightened-2);--codeBorder: var(--gray100);--inlineCodeBackground: var(--codeBackground);--inlineCodeBorder: var(--codeBorder);--codeScrollThumb: var(--gray300);--codeScrollBackground: var(--codeBorder);--bottomActionsBtnBorder: var(--black-opacity-10);--bottomActionsBtnSubheader: var(--main-darkened-10);--modalBackground: var(--white);--settingsInput: var(--gray500);--settingsInputBackground: var(--white);--settingsInputBorder: var(--gray200);--settingsSectionBorder: var(--gray200);--quickSwitchInput: var(--gray500);--quickSwitchContour: var(--coldGray);--success: var(--green);--sidebarButton: var(--gray100)}body.dark{--background: var(--gray900);--contrast: var(--white);--textBody: var(--gray200);--textHeaders: var(--gray100);--textDetailBackground: var(--gray700);--textFooter: var(--gray300);--links: var(--gray100);--linksVisited: var(--gray100);--linksNoUnderline: var(--main-lightened-10);--linksNoUnderlineVisited: var(--main-lightened-05);--iconAction: var(--coldGray-lightened-10);--iconActionHover: var(--white);--blockquoteBackground: var(--coldGrayDim);--blockquoteBorder: var(--coldGrayDark);--warningBackground: hsl( 40, 67%, 79%);--warningHeadingBackground: hsl( 27, 66%, 29%);--warningHeading: var(--white);--errorBackground: hsl(358, 52%, 78%);--errorHeadingBackground: hsl(349, 55%, 34%);--errorHeading: var(--white);--infoBackground: hsl(222, 57%, 77%);--infoHeadingBackground: hsl(243, 65%, 26%);--infoHeading: var(--white);--neutralBackground: hsl(220, 23%, 82%);--neutralHeadingBackground: hsl(224, 24%, 16%);--neutralHeading: var(--white);--tipBackground: hsl(139, 26%, 69%);--tipHeadingBackground: hsl(158, 35%, 17%);--tipHeading: var(--white);--fnSpecAttr: var(--gray500);--fnDeprecated: var(--yellowDark);--blink: var(--gray600);--codeBackground: var(--gray800);--codeBorder: var(--gray700);--inlineCodeBackground: var(--gray50);--inlineCodeBorder: var(--gray100);--codeScrollThumb: var(--gray500);--codeScrollBackground: var(--codeBorder);--bottomActionsBtnBorder: var(--white-opacity-10);--bottomActionsBtnSubheader: var(--main);--modalBackground: var(--gray800);--settingsInput: var(--white);--settingsInputBackground: var(--gray700);--settingsInputBorder: var(--gray700);--settingsSectionBorder: var(--gray700);--quickSwitchInput: var(--gray200);--quickSwitchContour: var(--gray500);--success: var(--green-lightened-10);--sidebarButton: var(--gray50)}html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}@font-face{font-family:remixicon;src:url(./remixicon-NKANDIL5.woff2) format("woff2");font-display:swap}[class^=ri-],[class*=" ri-"],.remix-icon{font-family:remixicon;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}:root{--icon-arrow-up-s: "\ea78";--icon-arrow-down-s: "\ea4e";--icon-arrow-right-s: "\ea6e";--icon-add: "\ea13";--icon-subtract: "\f1af";--icon-error-warning: "\eca1";--icon-information: "\ee59";--icon-alert: "\ea21";--icon-double-quotes-l: "\ec51";--icon-link-m: "\eeaf";--icon-close-line: "\eb99";--icon-code-s-slash-line: "\ebad";--icon-menu-line: "\ef3e";--icon-search-2-line: "\f0cd";--icon-settings-3-line: "\f0e6";--icon-printer-line: "\f029"}.ri-lg{font-size:1.3333em;line-height:.75em;vertical-align:-.0667em}.ri-settings-3-line:before{content:var(--icon-settings-3-line)}.ri-add-line:before{content:var(--icon-add)}.ri-subtract-line:before{content:var(--icon-subtract)}.ri-arrow-up-s-line:before{content:var(--icon-arrow-up-s)}.ri-arrow-down-s-line:before{content:var(--icon-arrow-down-s)}.ri-arrow-right-s-line:before{content:var(--icon-arrow-right-s)}.ri-search-2-line:before{content:var(--icon-search-2-line)}.ri-menu-line:before{content:var(--icon-menu-line)}.ri-close-line:before{content:var(--icon-close-line)}.ri-link-m:before{content:var(--icon-link-m)}.ri-code-s-slash-line:before{content:var(--icon-code-s-slash-line)}.ri-error-warning-line:before{content:var(--icon-error-warning)}.ri-information-line:before{content:var(--icon-information)}.ri-alert-line:before{content:var(--icon-alert)}.ri-double-quotes-l:before{content:var(--icon-double-quotes-l)}.ri-printer-line:before{content:var(--icon-printer-line)}html,body{box-sizing:border-box;height:100%;width:100%}body{background-color:var(--background);color:var(--textBody);font-size:16px;font-family:var(--sansFontFamily);line-height:1.6875em}*,*:before,*:after{box-sizing:inherit}.main{display:flex;justify-content:flex-end;height:100%}.sidebar{display:flex;flex-direction:column;width:300px;height:100%;position:fixed;top:0;left:0;z-index:4}.sidebar-button{position:fixed;z-index:99;left:0;top:7px;transition:color .3s ease-in-out,transform .15s ease-out .1s,opacity .15s ease-out .1s;will-change:transform;transform:translate(250px)}.content{width:calc(100% - 300px);left:300px;height:100%;position:absolute;z-index:3}body.sidebar-opening .sidebar-button{transition:transform .3s ease-in-out}body.sidebar-opening .sidebar{left:0;transition:left .3s ease-in-out}body.sidebar-opening .content{width:calc(100% - 300px);left:300px;transition:all .3s ease-in-out}body.sidebar-closing .sidebar-button{transform:translate(0)}body.sidebar-closing .sidebar{left:-300px;transition:left .3s ease-in-out}body.sidebar-closing .content{width:100%;left:0;transition:all .3s ease-in-out}body.sidebar-closed .sidebar-button{transition:transform .3s ease-in-out;transform:translateY(-8px)}body.sidebar-closed .sidebar{left:-300px}body.sidebar-closed .content{width:100%;left:0}body.search-focused .sidebar-button{transform:translate(250px) scaleY(0);transition:all .15s ease-out;opacity:0}body.search-focused .sidebar-search .search-close-button{transform:scaleY(1);transition:transform .15s ease-out .15s}.content-inner{max-width:949px;margin:0 auto;padding:3px 60px}.content-inner:focus{outline:none}.content-outer{min-height:100%}@media screen and (max-width: 768px){.content,body.sidebar-opening .content{left:0;width:100%}.content-inner{padding:27px 20px 27px 40px;max-width:100%;overflow-x:auto}}.sidebar{font-family:var(--sansFontFamily);font-size:16px;line-height:18px;background-color:var(--gray800);color:var(--gray50);overflow:hidden;scrollbar-color:var(--coldGray) var(--gray800)}.sidebar .gradient{background:linear-gradient(var(--gray800),var(--gray800-opacity-0));height:20px;margin-top:-20px;pointer-events:none;position:relative;top:20px;z-index:100}.sidebar ul{list-style:none}.sidebar ul li{margin:0;padding:0 10px}.sidebar a{color:var(--gray50);text-decoration:none;transition:color .3s ease-in-out}.sidebar a:hover{color:var(--white)}.sidebar .sidebar-header{margin:12px;border-radius:4px;background-color:var(--gray700);width:276px}.sidebar .sidebar-projectDetails{display:inline-block;text-align:left;vertical-align:top;margin:6px 0 0 10px}.sidebar .sidebar-projectImage{display:inline-block;max-width:48px;max-height:48px;margin:0 0 0 10px;vertical-align:bottom}.sidebar .sidebar-projectName{font-weight:700;font-size:20px;line-height:30px;color:var(--gray50);margin:0;padding:0;max-width:230px;word-wrap:break-word}.sidebar .sidebar-projectVersion{display:block;position:relative;margin:0;padding:0;font-weight:300;font-size:16px;line-height:20px;color:var(--gray300)}.sidebar .sidebar-projectVersionsDropdown{cursor:pointer;position:relative;margin:0;padding:0 0 0 12px;border:none;-webkit-appearance:none;appearance:none;background-color:transparent;color:var(--white);z-index:2}.sidebar .sidebar-projectVersionsDropdown option{color:initial}.sidebar .sidebar-projectVersionsDropdown:focus{outline:none}.sidebar .sidebar-projectVersion form:after{position:absolute;left:0;top:2px;content:"\25bc";z-index:1;font-size:8px;color:var(--white)}.sidebar .sidebar-projectVersionsDropdown::-ms-expand{display:none}.sidebar .sidebar-listNav{padding:12px 0 0;margin:0}.sidebar .sidebar-listNav :is(li,li a){text-transform:uppercase;font-weight:300;font-size:14px;color:var(--gray300)}.sidebar .sidebar-listNav li{display:inline-block;border-bottom:3px solid transparent;line-height:27px}.sidebar .sidebar-listNav li:is(:hover,.selected){border-color:var(--main)}.sidebar .sidebar-listNav li:is(:hover,.selected) a{color:var(--gray50)}.sidebar .sidebar-search{margin-top:12px}.sidebar .sidebar-search.selected .search-button,.sidebar .sidebar-search .search-button:hover{color:var(--main);opacity:1}.sidebar .sidebar-search .search-label{position:relative;width:100%}.sidebar .sidebar-search .search-button{font-size:14px;color:var(--gray50);background-color:transparent;border:none;cursor:pointer;left:22px;margin:0;opacity:.5;padding:3px 1px 3px 0;position:absolute;top:18px;z-index:2}.sidebar .sidebar-search .search-close-button{font-size:16px;color:var(--gray50);background-color:transparent;border:none;cursor:pointer;right:18px;margin:0;opacity:.5;padding:5px 1px 5px 0;position:absolute;transform:scaleY(0);top:17px;transition:.15s transform ease-out;z-index:2}.sidebar .sidebar-search .search-close-button:hover{opacity:.7}.sidebar .sidebar-search .search-close-button:is(:focus,:hover){outline:none}.sidebar .sidebar-search .search-input{background-color:var(--gray700);border:none;border-radius:4px;color:var(--gray50);margin-left:12px;padding:8px 6px 8px 38px;width:276px}.sidebar .sidebar-search .search-input:is(:focus,:hover){outline:none}.sidebar .sidebar-search .ri-search-2-line{font-weight:700}.sidebar #full-list{margin:0;padding:20px 0;overflow-y:auto;position:relative;-webkit-overflow-scrolling:touch;flex:1 1 .01%}.sidebar #full-list li{padding:0;margin-right:30px;line-height:27px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar #full-list li.docs{margin-right:0}.sidebar #full-list li.open>ul{display:block;margin-left:10px}.sidebar #full-list li a span.icon-expand:after{font-family:remixicon;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.sidebar #full-list li a.expand>span.icon-expand:after{content:var(--icon-arrow-down-s);margin-right:10px;font-size:1.2em;position:absolute;right:0}.sidebar #full-list li.open>a.expand>span.icon-expand:after{content:var(--icon-arrow-up-s)}.sidebar #full-list li.docs>a>span.icon-expand:after{margin-right:12px;content:var(--icon-add);font-size:1em;position:absolute;right:0}.sidebar #full-list li.docs.open>a>span.icon-expand:after{content:var(--icon-subtract)}.sidebar #full-list li.nesting-context{font-weight:700;font-size:.9em;line-height:1.8em;color:var(--gray300);padding-left:15px}.sidebar #full-list li.group{text-transform:uppercase;font-weight:700;font-size:.8em;margin:2em 0 0;line-height:1.8em;color:var(--gray300);padding-left:15px}.sidebar #full-list li a{padding:3px 0 3px 15px;color:var(--gray200)}.sidebar #full-list li a.expand,.sidebar #full-list li .sections-list>li{text-overflow:ellipsis}.sidebar #full-list li .current-section>a{color:var(--main)}.sidebar #full-list>li.current-page>a{color:var(--main);border-left:3px solid var(--main);padding-left:12px}.sidebar #full-list>li.current-page>a:after,.sidebar #full-list>li.current-page{color:var(--main)}.sidebar #full-list>li:last-child{margin-bottom:30px}.sidebar #full-list>li.group:first-child{margin-top:0}.sidebar #full-list ul{display:none;margin:9px 0 9px 15px;padding:0}.sidebar #full-list ul li{font-weight:300;line-height:20px;padding:2px 8px;margin-right:0;color:var(--gray50)}.sidebar #full-list ul li.current-hash{color:var(--main)}.sidebar #full-list ul li.current-hash:before{content:"\2022";color:var(--main)}.sidebar #full-list ul li.current-hash>a{color:var(--main);margin-left:-12px}.sidebar #full-list ul li a{padding-left:15px}.sidebar #full-list ul li ul{display:none;margin:9px 0 9px 20px}.sidebar #full-list ul li ul li{border-left:1px solid var(--gray600);padding:0 10px;margin-left:8px;margin-right:0;color:var(--gray50)}.sidebar #full-list ul li ul li a{padding-left:0}.sidebar #full-list ul li ul li.current-hash:before{content:none}.sidebar #full-list ul li ul li.current-hash{color:var(--main);border-color:var(--main)}.sidebar #full-list ul li ul li.current-hash>a{color:var(--main);margin-left:0}.sidebar ::-webkit-scrollbar{width:14px}::-webkit-scrollbar-track{background-color:var(--gray800)}.sidebar ::-webkit-scrollbar-thumb{background-color:var(--coldGray);border-radius:10px;border:3px solid var(--gray800)}.sidebar-button{cursor:pointer;background-color:transparent;border:none;padding:15px 11px;font-size:16px}.sidebar-button:hover{color:var(--white)}.sidebar-button:is(:active,:hover,:focus){outline:none}.sidebar-button{color:var(--sidebarButton)}.sidebar-closed .sidebar-button{color:var(--contrast)}@media screen and (max-height: 500px){.sidebar{overflow-y:auto}.sidebar #full-list{overflow:visible}}.content-inner{font-family:var(--serifFontFamily);font-size:1em;line-height:1.6875em;position:relative;background-color:var(--background);color:var(--textBody)}.content-inner :is(h1,h2,h3,h4,h5,h6){font-family:var(--sansFontFamily);font-weight:700;line-height:1.5em;word-wrap:break-word;color:var(--textHeaders)}.content-inner h1{font-size:2em;margin:1em 0 .5em}.content-inner h1.signature{margin:0}.content-inner h1.section-heading{margin:1.5em 0 .5em}.content-inner h1 small{font-weight:300}.content-inner h1 .icon-action{font-size:1.2rem;font-weight:400}.content-inner h2{font-size:1.6em;margin:1em 0 .5em;font-weight:700}.content-inner h3{font-size:1.375em;margin:1em 0 .5em;font-weight:700}.content-inner :is(a,.a-main){color:var(--links);text-decoration:underline;text-decoration-skip-ink:auto}.content-inner :is(a:visited,.a-main:visited){color:var(--linksVisited)}.content-inner .icon-action{float:right;color:var(--iconAction);text-decoration:none;border:none;transition:color .3s ease-in-out;background-color:transparent;cursor:pointer;padding:0 0 0 6px}.content-inner button.icon-action{margin-top:12px}.content-inner .icon-action:hover{color:var(--iconActionHover)}.content-inner .icon-action:visited{color:var(--iconAction)}.content-inner .livebook-badge-container{display:flex}.content-inner a.livebook-badge{display:inline-flex}.content-inner .note{color:var(--iconAction);margin-right:5px;font-size:14px;font-weight:400}.content-inner h1 .note{float:right}.content-inner blockquote{border-left:3px solid var(--blockquoteBorder);position:relative;margin:1.5625em 0;padding:0 1.2rem;overflow:auto;background-color:var(--blockquoteBackground);border-radius:3px}.content-inner blockquote p:last-child{padding-bottom:1em;margin-bottom:0}.content-inner table{margin:2em 0}.content-inner th{text-align:left;font-family:var(--sansFontFamily);text-transform:uppercase;font-weight:700;padding-bottom:.5em}.content-inner tr{border-bottom:1px solid var(--gray50);vertical-align:bottom;height:2.5em}.content-inner :is(td,th){padding-left:1em;line-height:2em;vertical-align:top}.content-inner .section-heading:hover a.hover-link{opacity:1;text-decoration:none}.content-inner .section-heading a.hover-link{transition:opacity .3s ease-in-out;display:inline-block;opacity:0;padding:.3em .6em .6em;line-height:1em;margin-left:-2.7em;text-decoration:none;border:none;font-size:16px;vertical-align:middle}.content-inner .detail :is(h1,h2,h3,h4,h5,h6).section-heading{margin-left:.3em}.content-inner .app-vsn{display:none!important;font-size:.6em;line-height:1.5em}@media screen and (max-width: 768px){.content-inner .app-vsn{display:block!important}}.content-inner img{max-width:100%}.content-inner code{font-family:var(--monoFontFamily);font-style:normal;line-height:24px;font-weight:400}.content-inner blockquote:is(.warning,.error,.info,.neutral,.tip){color:var(--black);border-radius:10px;border-left:0}.content-inner blockquote:is(.warning,.error,.info,.neutral,.tip) a{color:var(--black)}.content-inner blockquote.warning{background-color:var(--warningBackground)}.content-inner blockquote.error{background-color:var(--errorBackground)}.content-inner blockquote.info{background-color:var(--infoBackground)}.content-inner blockquote.neutral{background-color:var(--neutralBackground)}.content-inner blockquote.tip{background-color:var(--tipBackground)}.content-inner blockquote :is(h3,h4):is(.warning,.error,.info,.neutral,.tip){color:var(--contrast);margin:0 -1.2rem;padding:.7rem 1.2rem .7rem 3.3rem;font-weight:700;font-style:normal}.content-inner blockquote :is(h3,h4):is(.warning,.error,.info,.neutral,.tip):before{color:var(--contrast);position:absolute;left:1rem;font-size:1.8rem;font-family:remixicon;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.content-inner blockquote :is(h3,h4).warning{background-color:var(--warningHeadingBackground);color:var(--warningHeading)}.content-inner blockquote :is(h3,h4).warning:before{content:var(--icon-error-warning);color:var(--warningHeading)}.content-inner blockquote :is(h3,h4).error{background-color:var(--errorHeadingBackground);color:var(--errorHeading)}.content-inner blockquote :is(h3,h4).error:before{content:var(--icon-error-warning);color:var(--errorHeading)}.content-inner blockquote :is(h3,h4).info{background-color:var(--infoHeadingBackground);color:var(--infoHeading)}.content-inner blockquote :is(h3,h4).info:before{content:var(--icon-information);color:var(--infoHeading)}.content-inner blockquote :is(h3,h4).neutral{background-color:var(--neutralHeadingBackground);color:var(--neutralHeading)}.content-inner blockquote :is(h3,h4).neutral:before{content:var(--icon-double-quotes-l);color:var(--neutralHeading)}.content-inner blockquote :is(h3,h4).tip{background-color:var(--tipHeadingBackground);color:var(--tipHeading)}.content-inner blockquote :is(h3,h4).tip:before{content:var(--icon-information);color:var(--tipHeading)}.content-inner blockquote:is(.warning,.error,.info,.neutral,.tip) code{background-color:var(--inlineCodeBackground);border:1px solid var(--inlineCodeBorder);color:var(--black)}.content-inner .summary h2{font-weight:700}.content-inner .summary h2 a{text-decoration:none;border:none}.content-inner .summary span.deprecated{color:var(--darkDeprecated);font-weight:400;font-style:italic}.content-inner .summary .summary-row .summary-signature{font-family:var(--monoFontFamily);font-weight:700}.content-inner .summary .summary-row .summary-signature a{text-decoration:none;border:none}.content-inner .summary .summary-row .summary-synopsis{font-family:var(--serifFontFamily);font-style:italic;padding:0 1.2em;margin:0 0 .5em}.content-inner .summary .summary-row .summary-synopsis p{margin:0;padding:0}.content-inner :is(a.no-underline,pre a){color:var(--linksNoUnderline);text-shadow:none;text-decoration:none;background-image:none}.content-inner :is(a.no-underline,pre a):is(:visited,:active,:focus,:hover){color:var(--linksNoUnderlineVisited)}.content-inner code{background-color:var(--codeBackground);vertical-align:baseline;border-radius:2px;padding:.1em .2em;border:1px solid var(--codeBorder);text-transform:none}.content-inner pre{margin:var(--baseLineHeight) 0}.content-inner pre code{display:block;overflow-x:auto;white-space:inherit;padding:.5em 1em;background-color:var(--codeBackground)}.content-inner pre code::-webkit-scrollbar{width:.4rem;height:.4rem}.content-inner pre code::-webkit-scrollbar-thumb{border-radius:.25rem;background-color:var(--codeScrollThumb)}.content-inner pre code::-webkit-scrollbar-track{background-color:var(--codeScrollBackground)}.content-inner pre code::-webkit-scrollbar-corner{background-color:var(--codeScrollBackground)}.content-inner pre code.output{margin:0 12px;max-height:400px;overflow:auto}.content-inner pre code.output+.copy-button{margin-right:12px}.content-inner pre code.output:before{content:"Output";display:block;position:absolute;top:-16px;left:12px;padding:2px 4px;font-size:12px;font-family:var(--monoFontFamily);line-height:1;color:var(--textHeaders);background-color:var(--codeBackground);border:1px solid var(--codeBorder);border-bottom:0;border-radius:2px}@keyframes blink-background{0%{background-color:var(--textDetailBackground)}to{background-color:var(--blink)}}.content-inner .detail:target .detail-header{animation-duration:.55s;animation-name:blink-background;animation-iteration-count:1;animation-timing-function:ease-in-out}.content-inner .detail-header{margin:2em 0 1em;padding:.5em 1em;background-color:var(--textDetailBackground);border-left:3px solid var(--main);font-size:1em;font-family:var(--monoFontFamily);position:relative}.content-inner .detail-header .note{float:right}.content-inner .detail-header .signature{display:inline-block;font-family:var(--monoFontFamily);font-size:1rem;font-weight:700}.content-inner .detail-header:hover a.detail-link{opacity:1;text-decoration:none}.content-inner .detail-header a.detail-link{transition:opacity .3s ease-in-out;position:absolute;top:0;left:0;display:block;opacity:0;padding:.6em;line-height:1.5em;margin-left:-2.5em;text-decoration:none;border:none}.content-inner .specs pre{font-family:var(--monoFontFamily);font-size:.9em;font-style:normal;line-height:24px;white-space:pre-wrap;margin:0;padding:0}.content-inner .specs .attribute{color:var(--fnSpecAttr)}.content-inner .docstring{margin:1.2em 0 3em 1.2em}.content-inner .docstring:is(h2,h3,h4,h5){font-weight:700}.content-inner .docstring h2{font-size:1.1em}.content-inner .docstring h3{font-size:1em}.content-inner .docstring h4{font-size:.95em}.content-inner .docstring h5{font-size:.9em}.content-inner div.deprecated{display:block;padding:9px 15px;background-color:var(--fnDeprecated)}.content-inner .footer{margin:4em auto 1em;text-align:center;font-style:italic;font-size:14px}.content-inner .footer,.content-inner .footer :is(a,.footer-button){color:var(--textFooter)}.content-inner .footer .line{display:inline-block}.content-inner .footer .footer-button{background-color:transparent;border:0;cursor:pointer;font-style:italic;outline:none;padding:0 4px}.content-inner .footer .footer-hex-package{margin-right:4px}.content-inner .bottom-actions{display:flex;justify-content:space-between;margin-top:4em}.content-inner .bottom-actions .bottom-actions-button{display:flex;text-decoration:none;flex-direction:column;border-radius:4px;border:1px solid var(--bottomActionsBtnBorder);padding:8px 16px;min-width:150px}.content-inner .bottom-actions .bottom-actions-button .subheader{font-size:.8em;color:var(--bottomActionsBtnSubheader);white-space:nowrap}.content-inner .bottom-actions .bottom-actions-button[rel=prev] .subheader{text-align:right}@media screen and (max-width: 768px){.content-inner .bottom-actions{flex-direction:column-reverse}.content-inner .bottom-actions .bottom-actions-item:not(:first-child){margin-bottom:16px}}@media screen{.page-cheatmd .content-inner{max-width:1200px}.page-cheatmd h1{margin-bottom:1em}.page-cheatmd h2{margin:1em 0;column-span:all;padding-left:3px;color:var(--gray700);font-weight:500}.page-cheatmd.dark h2{color:var(--gray200)}.page-cheatmd h3{white-space:nowrap;overflow:hidden;margin:0 0 1em;padding-left:5px;color:var(--main);font-weight:400}.page-cheatmd section.h3{min-width:300px;margin:0 0 2em;break-inside:avoid;-webkit-column-break-inside:avoid}.page-cheatmd h3:after{margin-left:24px;content:"";vertical-align:middle;display:inline-block;width:100%;height:1px;background:linear-gradient(to right,rgba(116,95,181,.2),transparent 80%)}.page-cheatmd h4{display:block;margin:0;padding:.25em 1.5em;font-weight:400;background:var(--gray100);color:#567;border:solid 1px 1px 0 1px var(--gray100)}.page-cheatmd.dark h4{background:#192f50;color:var(--textBody);border:1px solid #192f50;border-bottom:0}.page-cheatmd .h2 p{margin:0;display:block;background:var(--gray50);padding:1.5em}.page-cheatmd.dark .h2 p{background:var(--gray700)}.page-cheatmd .h2 p>code{color:#eb5757;border-radius:3px;padding:.2em .4em}.page-cheatmd pre code{padding:1em 1.5em}.page-cheatmd pre code::-webkit-scrollbar{width:.4rem;height:.6rem}.page-cheatmd .h2 pre{margin:0}.page-cheatmd pre.wrap{white-space:break-spaces}.page-cheatmd .h2 table{display:table;box-sizing:border-box;width:100%;border-collapse:collapse;margin:0}.page-cheatmd .h2 table th{padding:.75em 1.5em;line-height:2em;margin-bottom:-1px;vertical-align:middle;border-bottom:1px solid var(--codeBorder)}.page-cheatmd .h2 table td{padding:.75em 1.5em;border:0;border-bottom:1px solid var(--codeBorder)}.page-cheatmd .h2 table tr:first-child{border-top:1px solid var(--codeBorder)}.page-cheatmd .h2 table td code{color:#eb5757;border-radius:3px;padding:.2em .4em}.page-cheatmd .h2 thead{background-color:var(--gray50)}.page-cheatmd.dark .h2 thead{background-color:var(--gray700)}.page-cheatmd .h2 tbody{background-color:var(--codeBackground)}.page-cheatmd .h2 ul,.page-cheatmd .h2 ol{margin:0;padding:0}.page-cheatmd .h2 li{list-style-position:inside;padding:.5em 1.5em;line-height:2em;vertical-align:middle;background-color:var(--codeBackground);border-bottom:1px solid var(--codeBorder)}.page-cheatmd .h2 ul+pre code,.page-cheatmd .h2 ol+pre code{border-top:0}.page-cheatmd .h2 li>code{color:#eb5757;border-radius:3px;padding:.2em .4em}.page-cheatmd section.width-50{display:block;width:50%;margin:0}.page-cheatmd section.width-50>section>table{width:100%}.page-cheatmd section.col-2{column-count:2;column-gap:40px;height:auto}.page-cheatmd section.col-2-left{display:grid;grid-template-columns:33% 63.2%;column-gap:40px}.page-cheatmd section.col-2-left>h2{display:block;grid-column-end:span 2}.page-cheatmd section.col-3{column-count:3;column-gap:40px;height:auto}.page-cheatmd section.list-4>ul{display:flex;flex-wrap:wrap}.page-cheatmd section.list-4>ul>li{flex:0 0 25%}.page-cheatmd section.list-6>ul{display:flex;flex-wrap:wrap}.page-cheatmd section.list-6>ul>li{flex:0 0 16.6667%}@media (max-width: 1400px){.page-cheatmd section.col-3{column-count:2;column-gap:40px}.page-cheatmd section.col-2-left{display:block;column-count:1}}@media (max-width: 1200px){.page-cheatmd section.col-3,.page-cheatmd section.col-2{column-count:1}.page-cheatmd section.list-6>ul>li{flex:0 0 25%}}@media (max-width: 1000px){.page-cheatmd section.list-4>ul>li{flex:0 0 33%}.page-cheatmd section.list-6>ul>li{flex:0 0 33%}}@media (max-width: 600px){.page-cheatmd section.list-4>ul>li{flex:0 0 50%}.page-cheatmd section.list-6>ul>li{flex:0 0 50%}}}#search{min-height:200px;position:relative}#search .loading{height:64px;width:64px;vertical-align:middle;position:absolute;top:50%;left:18%}#search .loading div{box-sizing:border-box;display:block;position:absolute;width:51px;height:51px;margin:6px;border:6px solid var(--coldGray);border-radius:50%;animation:loading 1.2s cubic-bezier(.5,0,.5,1) infinite;border-color:var(--coldGray) transparent transparent transparent}#search .loading div:nth-child(1){animation-delay:-.45s}#search .loading div:nth-child(2){animation-delay:-.3s}#search .loading div:nth-child(3){animation-delay:-.15s}@keyframes loading{0%{transform:rotate(0)}to{transform:rotate(360deg)}}#search .result{margin:2em 0 2.5em}#search .result p{margin:0}#search .result-id{font-size:1.4em;margin:0}#search .result-id a{text-decoration:none;transition:color .1s ease-in-out;color:var(--links)}#search .result-id a:is(:visited,:active,:focus){color:var(--linksVisited)}#search .result-id a:hover{color:var(--main)}#search :is(.result-id,.result-elem) em{font-style:normal;color:var(--main)}#search .result-id small{font-weight:400}@keyframes keyboard-shortcuts-show{0%{opacity:0}to{opacity:1}}.modal{animation-duration:.15s;animation-name:keyboard-shortcuts-show;animation-iteration-count:1;animation-timing-function:ease-in-out;display:none;background-color:#000000bf;position:fixed;inset:0;z-index:300}.modal.shown{display:block}.modal .modal-contents{margin:75px auto 0;max-width:500px;background-color:var(--modalBackground);border-radius:3px;box-shadow:2px 2px 8px #0003;padding:25px 35px 35px}@media screen and (max-width: 768px){.modal .modal-contents{padding:20px}}.modal .modal-header{display:flex;align-items:start}.modal .modal-title{display:inline-block;flex-grow:1;font-size:1.2rem;font-weight:700;margin-bottom:20px}.modal .modal-title button{border:none;background-color:transparent;color:var(--textHeaders);font-weight:700;margin-right:30px;padding-left:0;text-align:left;transition:color .15s}.modal .modal-title button:hover{color:var(--main);cursor:pointer}.modal .modal-title button.active{color:var(--main)}.modal .modal-close{cursor:pointer;display:block;font-size:1.5rem;margin:-8px -8px 0 0;padding:8px;opacity:.7;background-color:transparent;color:var(--textHeaders);border:none;transition:opacity .15s}.modal .modal-close:hover{opacity:1}#keyboard-shortcuts-content dl.shortcut-row{display:flex;align-items:center;justify-content:space-between;margin:0;padding:6px 0 8px;border-bottom:1px solid var(--settingsSectionBorder)}#keyboard-shortcuts-content dl.shortcut-row:last-of-type{border-bottom-style:none}#keyboard-shortcuts-content dl.shortcut-row:first-child{padding-top:0}#keyboard-shortcuts-content :is(.shortcut-keys,.shortcut-description){display:inline-block}#keyboard-shortcuts-content kbd>kbd{background-color:var(--settingsInputBorder);color:var(--contrast);border-radius:3px;font-family:inherit;font-weight:700;display:inline-block;line-height:1;padding:4px 7px 6px;min-width:26px;text-align:center}#keyboard-shortcuts-content :is(.shortcut-keys,.shortcut-description){margin:0}#quick-switch-modal-body{width:100%;position:relative}#quick-switch-modal-body .ri-search-2-line{position:absolute;left:0;top:0;padding:4px 10px;color:var(--quickSwitchContour);font-weight:700}#quick-switch-modal-body #quick-switch-input{width:100%;padding:8px 6px 8px 38px;border:none;color:var(--quickSwitchInput);background-color:transparent;border-bottom:1px solid var(--quickSwitchContour);box-sizing:border-box;transition:all .12s ease-out}#quick-switch-modal-body #quick-switch-input:focus{outline:none}#quick-switch-modal-body #quick-switch-results{margin:0}#quick-switch-modal-body .quick-switch-result{padding:2px 5px;border-bottom:1px dotted var(--quickSwitchContour);transition:all .12s ease-out}#quick-switch-modal-body .quick-switch-result:last-child{border-bottom:none}#quick-switch-modal-body .quick-switch-result:hover{cursor:pointer}#quick-switch-modal-body .quick-switch-result:is(:hover,.selected){border-left:4px solid var(--main);background-color:var(--codeBackground)}.autocomplete{display:none;height:0;margin:0 5px 0 12px;overflow:visible;position:relative;width:100%}.autocomplete.shown{display:block}.autocomplete-suggestions{box-shadow:2px 2px 10px #00000040;background-color:var(--gray700);border-top:1px solid var(--gray800);left:0;position:absolute;top:-2px;width:276px;z-index:200}.autocomplete-suggestion{color:inherit;display:block;padding:10px;text-decoration:none}.autocomplete-suggestion:hover,.autocomplete-suggestion.selected{background-color:var(--gray600);border-left:3px solid var(--main)}.autocomplete-suggestion em{font-style:normal;font-weight:700}.autocomplete-suggestion .description{opacity:.6;padding-top:3px}.autocomplete-suggestion .label{padding-left:2px;opacity:.75}.autocomplete-suggestion .title,.autocomplete-suggestion .description{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}#tooltip{box-shadow:0 0 10px var(--black-opacity-10);max-height:300px;max-width:500px;padding:0;position:absolute;pointer-events:none;margin:0;z-index:99;top:0;left:0;visibility:hidden;transform:translateY(20px);opacity:0;transition:.2s visibility ease-out,.2s transform ease-out,.2s opacity ease-out}#tooltip.tooltip-shown{visibility:visible;transform:translateY(0);opacity:1}#tooltip .tooltip-body{border:1px solid var(--codeBorder)}#tooltip .tooltip-body .signature{min-width:320px;width:100%}#tooltip .tooltip-body .detail-header{border-left:0;margin-bottom:0;margin-top:0}#tooltip .tooltip-body .docstring{background-color:var(--background);padding:1.2em;margin:0;width:498px}#tooltip .tooltip-body .docstring-plain{max-width:498px;width:auto}#tooltip .tooltip-body .version-info{float:right;line-height:1.6rem;font-family:var(--monoFontFamily);font-size:.9rem;font-weight:400;margin-bottom:-6px;opacity:.3;padding-left:.3em}pre{position:relative}pre:hover .copy-button{display:block}.copy-button{display:none;position:absolute;top:9px;right:9px;background-color:transparent;border:none;cursor:pointer;padding:0;opacity:.5;transition:all .15s;font-family:var(--serifFontFamily);font-size:14px;line-height:24px;color:currentColor}.copy-button:hover{opacity:1}.copy-button svg{width:20px}.copy-button.clicked{display:block;opacity:1;color:var(--success)}.copy-button.clicked:after{content:"Copied! \2713"}.copy-button.clicked svg{display:none;color:currentColor}#settings-modal-content{margin-top:10px}#settings-modal-content .hidden{display:none}#settings-modal-content .input{box-sizing:border-box;width:80%;padding:8px;font-size:14px;background-color:var(--settingsInputBackground);color:var(--settingsInput);border:1px solid var(--settingsInputBorder);border-radius:8px;transition:border-color .15s}#settings-modal-content .input:focus{outline:none;border-color:var(--main)}#settings-modal-content .input::placeholder{color:var(--gray300)}#settings-modal-content .switch-button-container{display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--settingsSectionBorder);padding:10px 0}#settings-modal-content .switch-button-container:first-of-type{border-top-style:none;padding-top:0}#settings-modal-content .switch-button-container>div>span{font-size:18px}#settings-modal-content .switch-button-container>div>p{font-size:14px;line-height:1.4;margin:0;padding-bottom:6px;padding-right:10px}#settings-modal-content .switch-button{position:relative;display:inline-block;flex-shrink:0;width:40px;height:20px;user-select:none;transition:all .15s}#settings-modal-content .switch-button__checkbox{appearance:none;position:absolute;display:block;width:20px;height:20px;border-radius:1000px;background-color:#91a4b7;border:3px solid #e5edf5;cursor:pointer;transition:all .3s}#settings-modal-content .switch-button__bg{display:block;width:100%;height:100%;border-radius:1000px;background-color:#e5edf5;cursor:pointer;transition:all .3s}#settings-modal-content .switch-button__checkbox:checked{background-color:#fff;border-color:var(--main);transform:translate(100%)}#settings-modal-content .switch-button__checkbox:checked+.switch-button__bg{background-color:var(--main)}#settings-modal-content .settings-select{cursor:pointer;position:relative;border:none;background-color:transparent;color:var(--textBody)}#settings-modal-content .settings-select option{color:initial}#settings-modal-content .settings-select:focus{outline:none}#toast{opacity:0;position:fixed;z-index:1;left:50%;bottom:1rem;min-width:3rem;margin:0 -1.2rem;padding:.7rem 1.2rem;text-align:center;font-weight:700;border-radius:10px;border:1px solid var(--codeBorder);background-color:var(--codeBackground);color:var(--textBody);transition:opacity .4s ease-in-out,transform .3s ease-out}#toast.show{opacity:1;transform:translateY(-.75rem)}@media (prefers-reduced-motion: reduce){#toast{transition:none}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0;user-select:none}@media print{.main{display:block}.sidebar,.sidebar-button{display:none}.content{padding-left:0;overflow:visible;left:0;width:100%}.summary-row{page-break-inside:avoid}#toast,.content-inner .section-heading a.hover-link,.content-inner button.icon-action,.content-inner a.icon-action,.content-inner .bottom-actions{display:none}.footer p:first-of-type{display:none}.content-inner blockquote:is(.warning,.error,.info,.neutral,.tip){border:2px solid var(--gray300)}.content-inner blockquote :is(h3,h4):is(.warning,.error,.info,.neutral,.tip){color:var(--textHeaders);border-bottom:2px solid var(--gray300)}.content-inner pre code.makeup{border-color:var(--gray300);white-space:break-spaces;page-break-inside:avoid;break-inside:avoid}.content-inner blockquote code.inline,.content-inner code.inline{border-color:var(--gray300)}}@media print{.page-cheatmd .content-inner{max-width:100%;width:100%;padding:0;font-size:.85em}.page-cheatmd section.col-2{column-count:2;column-gap:20px;height:auto}.page-cheatmd section.col-2-left{display:grid;grid-template-columns:33% 63.2%;column-gap:20px}.page-cheatmd section.col-2-left>h2{display:block;grid-column-end:span 2}.page-cheatmd section.col-3{column-count:3;column-gap:10px;height:auto}.page-cheatmd section.list-4>ul>li{flex:0 0 25%}.page-cheatmd section.list-6>ul>li{flex:0 0 16.6667%}.page-cheatmd section.list-4>ul{display:flex;flex-wrap:wrap}.page-cheatmd section.list-6>ul{display:flex;flex-wrap:wrap}.page-cheatmd section.width-50{display:block;width:50%;margin:0}.page-cheatmd section.width-50>section>table{width:100%}.page-cheatmd h1{margin-top:0;margin-bottom:.5em}.page-cheatmd h2.section-heading{margin:1em 0 .25em;column-span:all}.page-cheatmd h2.section-heading:before{border-left:solid 6px var(--gray100);margin-right:8px;content:" "}.page-cheatmd section.h2{page-break-inside:avoid}.page-cheatmd h3{white-space:nowrap;overflow:hidden;margin:0 0 .25em;padding-left:5px}.page-cheatmd h3.section-heading{overflow:hidden}.page-cheatmd section.h3{min-width:300px;margin:0 0 .75em;break-inside:avoid;page-break-inside:avoid;-webkit-column-break-inside:avoid}.page-cheatmd h4{display:block;margin:-1px 0;padding:.5em;border:solid 1px var(--gray300)}.page-cheatmd .content-inner p{font-size:.95em;line-height:1.5em;padding:.5em}.page-cheatmd .content-inner section p{display:block;margin:-1px 0;font-size:.95em;line-height:1.5em;padding:.5em;border:solid;border-color:var(--gray300);border-width:1px 1px 0px 1px}.page-cheatmd .content-inner section p+p{border-width:0px 1px 0px 1px}.page-cheatmd .content-inner section p:last-of-type{border-width:0px 1px 1px 1px}.page-cheatmd .content-inner section p:only-of-type{border-width:1px}.page-cheatmd table{width:100%;border-collapse:collapse;margin:0;font-variant-numeric:tabular-nums;page-break-inside:avoid}.page-cheatmd th,.page-cheatmd td{text-align:left;vertical-align:top;padding:.5em;font-size:.95em}.page-cheatmd thead{border:1px solid var(--gray300)}.page-cheatmd .content-inner tbody tr{border-width:0px 1px 1px 1px;border-style:solid;border-color:var(--gray200)}.page-cheatmd .content-inner thead tr{border-bottom:none}.page-cheatmd th{font-weight:700}.page-cheatmd td{text-align:left}.page-cheatmd pre{margin:-1px 0}.page-cheatmd ul,.page-cheatmd ol{margin:0;padding:0;list-style-position:inside}.page-cheatmd .h2 li{padding:.5em .75em;vertical-align:middle;border-bottom:1px solid var(--gray200)}.page-cheatmd .h2 li:last-of-type{border-bottom:0}pre:hover button.copy-button,.page-cheatmd div#tooltip{display:none}.page-cheatmd footer p{display:none}.page-cheatmd footer p.built-using{display:block}}code.makeup .unselectable{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.makeup .hll{background-color:#ffc}.makeup .bp{color:#3465a4}.makeup .c,.makeup .c1,.makeup .ch,.makeup .cm,.makeup .cp,.makeup .cpf,.makeup .cs{color:#4d4d4d}.makeup .dl{color:#408200}.makeup .err{color:#a40000;border:#ef2929}.makeup .fm,.makeup .g{color:#4d4d4c}.makeup .gd{color:#a40000}.makeup .ge{color:#4d4d4c;font-style:italic}.makeup .gh{color:navy;font-weight:700}.makeup .gi{color:#00a000}.makeup .go{color:#4d4d4c;font-style:italic}.makeup .gp{color:#4d4d4d}.makeup .gr{color:#ef2929}.makeup .gs{color:#4d4d4c;font-weight:700}.makeup .gt{color:#a40000;font-weight:700}.makeup .gu{color:purple;font-weight:700}.makeup .il{color:#0000cf;font-weight:700}.makeup .k,.makeup .kc,.makeup .kd,.makeup .kn,.makeup .kp,.makeup .kr,.makeup .kt{color:#204a87}.makeup .l{color:#4d4d4c}.makeup .ld{color:#c00}.makeup .m,.makeup .mb,.makeup .mf,.makeup .mh,.makeup .mi,.makeup .mo{color:#2937ab}.makeup .n{color:#4d4d4c}.makeup .na{color:#8a7000}.makeup .nb{color:#204a87}.makeup .nc{color:#0000cf}.makeup .nd{color:#5c35cc;font-weight:700}.makeup .ne{color:#c00;font-weight:700}.makeup .nf{color:#b65800}.makeup .ni{color:#bc5400}.makeup .nl{color:#b65800}.makeup .nn{color:#4d4d4c}.makeup .no{color:#a06600}.makeup .nt{color:#204a87;font-weight:700}.makeup .nv,.makeup .nx{color:#4d4d4c}.makeup .o{color:#bc5400}.makeup .ow{color:#204a87}.makeup .p,.makeup .py{color:#4d4d4c}.makeup .s,.makeup .s1,.makeup .s2,.makeup .sa,.makeup .sb,.makeup .sc{color:#408200}.makeup .sd{color:#8f5902;font-style:italic}.makeup .se{color:#204a87}.makeup .sh{color:#408200}.makeup .si{color:#204a87}.makeup .sr{color:#c00}.makeup .ss{color:#a06600}.makeup .sx{color:#408200}.makeup .vc,.makeup .vg,.makeup .vi,.makeup .vm,.makeup .x{color:#4d4d4c}.dark .makeup{color:#dce1e6}.dark .makeup .hll{background-color:#49483e}.dark .makeup .bp{color:#dce1e6}.dark .makeup .c,.dark .makeup .c1,.dark .makeup .ch,.dark .makeup .cm,.dark .makeup .cp,.dark .makeup .cpf,.dark .makeup .cs{color:#969386}.dark .makeup .dl{color:#e6db74}.dark .makeup .err{color:#960050;background-color:#1e0010}.dark .makeup .fm{color:#a6e22e}.dark .makeup .gd{color:#ff5385}.dark .makeup .ge{font-style:italic}.dark .makeup .gi{color:#a6e22e}.dark .makeup .gp{color:#969386}.dark .makeup .gs{font-weight:700}.dark .makeup .gu{color:#969386}.dark .makeup .gt{color:#ff5385;font-weight:700}.dark .makeup .il{color:#ae81ff}.dark .makeup .k,.dark .makeup .kc,.dark .makeup .kd{color:#66d9ef}.dark .makeup .kn{color:#ff5385}.dark .makeup .kp,.dark .makeup .kr,.dark .makeup .kt{color:#66d9ef}.dark .makeup .l,.dark .makeup .ld,.dark .makeup .m,.dark .makeup .mb,.dark .makeup .mf,.dark .makeup .mh,.dark .makeup .mi,.dark .makeup .mo{color:#ae81ff}.dark .makeup .n{color:#dce1e6}.dark .makeup .na{color:#a6e22e}.dark .makeup .nb{color:#dce1e6}.dark .makeup .nc,.dark .makeup .nd,.dark .makeup .ne,.dark .makeup .nf{color:#a6e22e}.dark .makeup .ni,.dark .makeup .nl,.dark .makeup .nn{color:#dce1e6}.dark .makeup .no{color:#66d9ef}.dark .makeup .nt{color:#ff5385}.dark .makeup .nv{color:#dce1e6}.dark .makeup .nx{color:#a6e22e}.dark .makeup .o,.dark .makeup .ow{color:#ff5385}.dark .makeup .p,.dark .makeup .py{color:#dce1e6}.dark .makeup .s,.dark .makeup .s1,.dark .makeup .s2,.dark .makeup .sa,.dark .makeup .sb,.dark .makeup .sc,.dark .makeup .sd{color:#e6db74}.dark .makeup .se{color:#ae81ff}.dark .makeup .sh,.dark .makeup .si,.dark .makeup .sr,.dark .makeup .ss,.dark .makeup .sx{color:#e6db74}.dark .makeup .vc,.dark .makeup .vg,.dark .makeup .vi,.dark .makeup .vm{color:#dce1e6}body:not(.dark) .content-inner img[src*="#gh-dark-mode-only"],body.dark .content-inner img[src*="#gh-light-mode-only"]{display:none} -/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */ diff --git a/doc/dist/inconsolata-latin-400-normal-RGKDDNDD.woff2 b/doc/dist/inconsolata-latin-400-normal-RGKDDNDD.woff2 deleted file mode 100644 index 6119e5971bfa1b7c5e50dc64d751d21f10038e8d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16244 zcmV-)Ka0S3Pew8T0RR9106%m95&!@I0Duqx06z)<0RR9100000000000000000000 z0000Qfd(5O9EK3 zW(Ob)g*zKAY$an`2FGp(N!Wg6SB#=;&fbL45f(NMz-}yJ_W$1!IV3l21a_? zXXi?Lnx&0q)EW&rs5fV>wqbF;OnvinQ{O+r?YB`J<1rktzfz6%xd!h~?s65hNi~oB^ICXeQ>~iI<{C|RC ztnJ;SRlIbnHweWn{!l-3)Jhhe4wa!%p%KZP|D~&Z|Enb)I6xWtEVm3mU8_CdLEmU` zz(CLjl8K`YGFO|YE;eSI#1|QGesZ(##TG`efe9>2f+SAz2?HyvF<-4Z(WVnE>Z{6K zFVD*4ir(5^)C>Q_mA>~EgUNV8cAb=2irtq<6u077ZiM@Pb2dXeYumu{DlnD6J z49=<0_7}cHG@xYTr1d{_rF|CyU#gu^;A?)V-PD9$3@pv%%NLLqCpAHdzpI{tzB1&8 zYoD3T-@?56wuFj69RMepg`+({A&aqzE-OG?Rz#ZS)49KUf4gIhVj`<}ugClOm@f;g zbTvg1k|q`K*0C=(A^&Hp+0N_`rzI{C7kTGIIZ7SRp@%aaa?!deX8z1_cV>3U#R58E z0g(bp`3!*4y#)!L04Nc>UolbITFO*n>_ID(m>*Q;@4DK z+w^81Q#!Tg7T|zE9%I=+r1o3h#x>^@jr@P__J`JHp;)-x%{$~_Ve~uyJ&dUif@#y2 z^;~njJVChu6w|F55R4=(t5Zo@I3Wy0h))SgY6%U(gb8uNj5XmaAQ2=i5g{>=EH6Q$ z6Ge&=r5fbjTLSq%5FUXEv=bbFG(9yOtSm|vS@_IwULw9NieQ_0zV1rOieX1# zihSLbEQX)qJ%&GntP3@{95mstX`d1YKKaECA?*InGQ}v1A*3ifvyz1{z#_);h}3je z8UfMP5+gzpaUw!QiI|qG8^Sy%;L_y^myLk7pBN{de!3QKkBRMy&Bx|EjXwQqgL)8O zEny~bqE<5U6x@#JUnlZ9QP)Z6ItgPDjqej=Uf3Q&0iTJzFJUl8?khzHAVp9}IHCff z4^d4x;0>`|n7pSINXZy4)0+%1B7|pn^GE=2apwC`JxnG>$(+(zpVHLOxYwHzLdz9! zW2{@s!w^#fA{cuvC%IQt#85yX#gu@TiA}<-qy(%^84(S#i$v*tz7oxPz$R<;$Tq+< zG1H=>6Y&>LLIP|j`2d8;O0^CG;qXT6MJ2JOK5p- zU=mUJeCUZa_`cT^1`@0obm38MC@1ng-{!kggjHiTB0uU!Ni>d%=rDRDYvqPmH~uxA zp2#Nr?tfK4ZLCejXu~aM<@lBAkrxHGQAE{L_*|HD=wk2hSsk|*0UxftatRH{>;p0Nu5;Uiph z(HZBQcQ#i+<(&{&I=+8Q$seG8nR(TG^*2lr2`V6vACD#Bg1(2<5b;tlC#IXU7oKjOxAK3XhOykW*+3z}RhUX@NF+003-${`xf*4# zXgB}To@=Z0QctKC8cwI6OI9?JCvC=kq=&}*cIXd`nLTTuzpuBayQ{OKy{)ySxv8;% zqN#E6q=x#5b+t9s6UL7lTU9xxqI~qIk!7VN#YKe$`FXiH*`X1^KxT$NJ1r?yxk>%yD8Y?2l4~%3Siko*fN(zJ=Jfnu#%& zGJ3I{bpB$ulDY{iU+l?OCN73Id^%aD4oRX71_TF&T%YaF_jin-;7zUf5u?QkM>CU} zuqOf9H3@y}Hn|u%Q!)36G2Ii3zM#*)jVO{hjSWJsqlCG)W@oz_ge&I2}Zj*aycXDp`TltGNTr7!)i{Yt(is8RaP zy6VQ?XV7Yvi4UE@E=^+=tSX46gExGL97&G0f{FB-3dZ`?_qWEtvtCLPUK;jk<3_!! zOwH!affl36&-lJNjrQfisk?!bWx2TE>for}oZF#2#Sm(hz2EG7o5&d(*{4iJTX%Vc ziqOaA=d0|fL_+0PXIFnr>?JnJmNyV*H)>D2CcDP)kiP}AS>x~Fl1pkl(FxCppog+H zD<2^z&>SJM8zu?NS?e45SxqVv4!K*c=3tccJvZEu0?`m@HBaR|d7Q`Xf?L+G)#?Y# z=5P7lPU(EBEi!b?(sNppE5)50X`$ASAQS;z{sdLkKRT^Mlk2kOWtd3P*K|blXlU+@ zmUC?vZnc{Ein5lyiOE8W!#z~<)n9cjF%CRCfxujH-*ye<%FqM@?(^cGgi5-P%S9Jn zo#=OSijG)Xcy|fVN*NciLozv3(~9z>Hm^8}5hHfK7iw=r>uyr**YyEHo#iOViRwNU zw;0^!U30GpGbWWyzQAuB6L(NYy8k&diIGWpe#d@rzm{ZXtcS=Cj;Xg%V!1uYJ>m{W zkH^!w)Eii^8cPJGMZvE!D5&jQBiPN+DmoU#Tz5E?+^~`fhf%v@0m|^1g5MkL@|QfI z>^TiW^B~`vLiK^J0BKcal_g54_Rczjo5Ra{Z`d{5NRWrb-XiB!e z${6$rN}H}3<2Qez$Ef8cSq=`a+S2uvyi5nXST3^JpKsUZv!#OCWM)5_3>2Vx!1otH zbTUK5N%_k@Ic|4pdA~XnAaked7!UFb63`K}nw1Y>@7!I4yyaX2MxLe4!mNdn0ys^6 zFN`1^SVK5N;2!kEqw3*#<_vHI;4xR(zoW8}*y5xF}yP|HU#7lQC$^_-6U8Zq_k$h&L{0t4!Rw+gsGZ$Ve<7DfyA z2M*K#wf2h(Nc_g23CC zyhEb-IZyM^N~3N^tYy1DtzfQ>gs#)cwA@b`b^D2dZF^C^E6aAlMOkb{%w>D>qL4{T zJ_Y`^zZ>`~gM#ebEehu*Cg0NLNE9iKCe?)3Ojyj)l|un8O)u3!5h~n(UDX3|XVD)#D}}VRQ4l42B44S7ujU33>b*BO(N$q|$iagND=Dn;=!eCQzN%im6IjY?V`S)^mPjpHr<>ulbz1 z33z!AHf7bBs_FxhHyq(={{$lcHRc@h@{q8vuI}Ow&S+9Z+6c;O+{CY}9xA3-;n%jT zB7>9rW4=`iD(SakgUyo8dkKrM}?v-Lq{L#}%Y zKM2#Ys!RF0-w5YhK#L>ZN*jxtxzr-t2=;4*t<)u5V9O0vUUMk6h1*CH8p6gH)9WD| zs*(u_G)f8^+tA=L@;wly`~!f0L^K!3{#CRV^AV&WgE5N+P%LQ+wa7JY-PvXrjuzAA zU}rK=GAWUwe{ns@cGv@t7=cnx?vRlLikRwr1Qz<0{}@T>kiIr@cvQ zKbP#9=nT3m!)?MBj=8=r*ik;1n!~Hb(;d_1SSZ?Nu};M-mtE*94~%8((P1R@)N)Io`TXP>pw;sT`NIa!p2^g7Zb5-&XwXnPDFJ{vFwL9jH5!IENjB+f6 zd7FwUt?#2eXicBe%OPWK@NsO;cpkHi`MN?1XD=bK5okt=h(C9MNm7+^8-`WU2f-n3 z_uOY6V46(0os~l0{ZJLwIG){F<`5Ep=7#GA-ItZx~~Wa1g8tX@J3o26 zh!u_ zr5X}}ZqUJDb` z!FMkO7a7U|R*>cF45-)~K2zNr8>p@}Ymw$L010Y=KX}cY^0ul>sT?LaF?c(-mjGT* zj`8WM(WZ~T%dcbr-Dw_fM*QcVM|q*yYl)`W2na^XxajHcK|U}M2SyCXQ^eN!A@$l0 zyF@;l+ir&s1REVpfTR+PrKY>17D65?ZFzpoZhP3hSTR z)W1Z2W((jWbRM`~#Jb?iUn17Yg0U30+D;R6JXLVS3^zIl1^6Rg6gE(1;9}dCX4s5t z;dGNSp`K1)L54Zu6xF(74dwCgacnhFjAY;whA<^1J;eAq5v2^3L%%zr&tj;iy}g}^ z_p(-SC-m63LtBH{X1XVUG#}gy?&1cxE4XQhzfz|92EL{jZHEJTigQbT=ylHwj3KO= zp>Xs$F_JcIq%1%GABN^3;g52XT3lSevD<9` zX_ws6F!Lo+056r14V}56b|%>+%J5};V^d~}?3UuJkaEekM9-kVE@bjwJs$C?HjM^900dvm;ig7LP#4%)FFJMZ{L&Jo7{^*9}B%E*zo9 zl2gh-( zWh`U}fq5FSHh}H1LWh4Z)x6~chb{iat&}(#Wt?dm%S*e;&-ThOL^(npiL*6|=NJ8x zDkG>xx8Y}1taa$UMD-8^!Q?HyJq2ydH`{4Ar=1%qCP8DCLB!HNSWu=m3ZxYD4SH41 z3a+OF2li2%TYN4|87;pvoE^t=~E%t?E0aHJD z=YjhMmGTJ88!N;mBxH=JBgYf;Gmcf|fi&p{BG-Ke&exf1YdeU=erf)qxTE9^B$I=| zWsw$M*69&l9~ktiR+Nz65L6UAKb$|&s9_=Xc{CfnzL?!>G&p@Y`g$gbkunSbaP@X- z(negV^-8}@b38kw-U*?`Sv_JD65Ig$;SuC%=rRk-7%$!f9TO+k!N>&@8F5R(rY9bM z7$4tnjz55;D}e=fN3}V;QRT37AoGA$!Lzc}Ui=f=Sox;1ODiQvCV?->HO=Jj%DHqk z6bcLLFCUbqdM5ov7cRcQ$!DpXq8;gRFGSrK)?EfBNu1Lu3bXz=6iVb!*$rcOZlw zFHoqeX@=O9&>QfT)@}P^wbq(}zq5vHG2wz=GnM7rY29cnYVZ_=1Ha_0eYZ6zdPZYg zw;4XZ0h`x(d>kMBd-$Q_<9C2fjDkUChNexGgu&KOLRf)SCqA>26lU|j9 z+2A+ysl&|%Er&JIK7k!@mYL?ck5Zf6`IlUZm617~Z;Pm0<0bzWz0 ztCGzP$$5@Goit$oXTj$ydx?8QzE4GtjzmnWy7{20xUKKtzZ2pyD*GHOq%Z20RKKZI z5;I~CeTO*5R&Cc;WrY&xJhzZAnJJ?dtud-rdaPaD1zWSi0=pgCo*|Mf+qI+;xf(>r z=gt6y+1;DnF z2pXM$#-nlH)X^;cmlj(W|Gv}m+s*4%}p0Rmf0y~DJE)}!u2Z;e$?=@`dUbv!bS%tE>7~15>4q;7bZ&`;bGRN1}Y>z zdy>^#Xpq*0&BO{PWv95)@tI-GHb!;ae5Hf*FLbB}K>Ia5&Ln&0NU`OX*_vyV)nx_+ zlSZUiJ(tEA$FWTlyDa8Q(bnkS4Hg)UPC#c)tV&^j`z+;|1|-L)Rc9C$mWIu0PSpB_ ztvH15rtZPTH0fficRzd+0wRnh!}yTF29B0F9*eL~{|4tRLlx%ga7ZsZ$ zC*1!}^lKGIn)tQY2ahnd4^KAf=KT9<#=+ip-=JhZ&YAiuM_kQ$jGV$*OL7`3T1<4) z$Z`Y@{dbrRY)y`iNUuv{aO~HSdcncdS7WI!FduRXBB?eWuV<{x+=vy|C9hJgQR^n! zf1dRo>3n-bRbA_hzI55nebr>*v*!*FJuDhj?$a)+EWc8*qTKKCj`oXF3Ef8fJZ6>M z#BB%#V#J=RQaV!64}>7+FyUo<9?cdXXgan0$~w#sM+Uk-hX0*7lhT|uUa-*XNd%^n z=)YTbUh1*-{J!1t8#A*0Beiv8#b7Rzq~C?B@Ml4j{*;^Q&bo7yqD(cf>T|%E$FyKnxZ}tVRQ(QWp*@>6{)Gn;uH-w3 zd8z=v#qEIgbw|?*rQ$#mm*JW|t_R4ROKc^LXmxz4W-jTJx6+5=Jw^)M7JWG-*uUHf z%V-Z}0t#V*UuLk3vAou1-%{R0sc6w}GmWlA#`jhC(ZxGcwyD#*|D5`#d#!4~5|}$QbBK0# z=x|GLrF^bDZJ=d{ipCp0DN?7Y6F;jEZsf$GENkKGsLYT%nQ#0f1Skot(RK>at|st~ zA8AB@KYN9M@a#UoC3iB@|5mf#t&)F^3zc#oV5jBSUT3<`26_(*C8N{F`$Cj*>25x6 zM^XS#%ZBANO7&0AuBA;b51H@!N}!h6Z}hdI|fpSen7P%+Aqj*m(wrhcBR>Z~FI5 zo%5?HTxJ#WXEaY3#8vOHPoSZ*p;KZvEs&6_G*d@uoauZz{L~LPRKnpEq9PI$Jpr^z z#elsGrsLu@BN+Y6e1nlyu)xoh3LP++HbNg4W}YLkb!9mdTJ3(=B*3jZihN*2Jl%vq z`!v&I`H?sFlpD$gDUytIo?4p5=*f1)56k~Qi1eSA$OL_czFrqH)UWbmt1mEU?bVgn zs5xuM1f$KzQFIRgln-<*clo`i|I1Ua%%rX!$c)ENzp2yN@XA{-V*NRtlI~V}Bm%EY zCh$mBt#K#pal9}bp`Txi(AJ!%zYJ?=$lCK8w+~!=zG+^>sub@^mm=RvZ;-f3n)p{v z$OX7bs{DM2SR~y40f}|P=n7+FPMz^c&jceV|2qhcKC?&aXRdF|3xTEmw=+P-^OcH@ zU8dIuT*}-`p^EhV(<6I)p7E*J^z=q>@btr2>ZyYd@Wqj|fN?f|n(=(uEF&N|XP0j{ zD<_iiHQMPfr&2&d>FT&LyHm2&h#^Hds0xS0;G&~zjYp_zzW1Da1oEzrDLBNHE&@K8 zJe?iOwZlT5rDolDmpf9?mNM>kMem5d;sg>CaoY)z@Zv*oi6s8>REtF-mlW-LMN-2+ zPeOAJP7lHF3pnv0wb+|4t#ZpnjNf9CC``#wW-!I_G~7)||B}Ug6=Ayi{A&*s`F3Y~ z1PV?zfkdGuBPzb`0tE#QAl?)!7}_!I$qv=9kxs2GRGPL;^c8NJU%?VMX+B1t*~}`c zb~1PftM|>5mfO(PJiw_lcS*JB^j7`HD0C|YKvSr&EcH*{T=GJGNMPL#9N0JQ)%QhvRxq|*cgAXo6e?3 z%vehF1|_;_Oc8YajAH-q4A=vO?&{4}sQx=Pm`GJwU-7-h5!# zk|A8i;bx`Ll3Dt}wD4(F&e+;rqn03|FX%Xbhh>_R_cvQ0vV{azDilw*)CpghD8P(2 z90tP7S}I}~c(}8R4f`on)U|p@kV(zb?{sbt$*MDTiAmWibwEkuiWZzb^GQfsC(9k7 zVM}6Uo%iF)!fj|*T3m08y9OUOksY%oB0V9?!eEOJC8)#2UQU{yTmv%7ospteeH9sb` zTn!XNEDaw%z3}aD!!J_d51Digdg9`1*o}*)qIt?wFgflP5t+9CDOcm!#)by8zs>!P zE4R~mUi)dAX7Q}MKdx1jB$dd9BQ4x=QC4ztq%t8_xJn9LZ_uW;i$ra`2-4doQ|-M= zD)z1pjbDYztwm)uw_0+1vPG5UF`MJJB;@ZeudMOi6%^4LLID_7CJ>a-8UmsBZ4v!9 zxRW=uDO)`e^d{#P6uA9rCv4}lKAbP5Kwq^*FSNuaP8KE|N=Kx+fJ7ch7SsJ&pUan- zx%!V0{u?W$7Wf;bF5tfUxzHI~+K=7O6s4}@@uuB65LMi<3{ z4n`+)xJmpQ2(ZWZYLIL;r-sMxk45naVh2rt_*GVIah_UFkBYbCdSufJCnl{L9k2_X z$i=}bXKc;+MnHqXw|DZ%+2~(-2~_UgU#V#di?Sr3)yRR-H==n0{;QEBqHJi-Vl~Et z0a)}eXl3T3)+3xElzo&C@#uQgi)Bm5X{6zJw``d_UBP46nt~^HH#4L>r&pY8^awe2 zG38F5YC`|Pj}dBWg+E)iNNC=`042PHoB7oT-+_$5(nJ;fqV8)Vlz)uPUg-hB$h)o7 zC-Dj&?ZSpCXKcrpH{U9V7IHK2WttFNog;ylJbkUhVEi);C#Kg{8S4JyCRidVdh&>KL#%C7D@s> zCDG}mQk_Jn(kBUkzrXR%0#DcK#M3FAjOSh}ZzBRBAIRkN7i(%_6B}!@JOVjy-alOC zk)dbSGYws@_$>eLUwT71vGm`Q_VZh2;RVf1+7-WD%9`6S7fTr0O$4fO_{vRm-5V*B z@hn&5Mp#eQO6lx3B?tMZ!iL{^g}!+A+@|%+;lGTX40BJDE_VL$Z9fnJM-COq2|?H+ zi&je$ez>dH6FuhlBm(UrLCFvs?+d}OPxoD;LoR-qQ>{So_SaR;*d4!&7>LEfe>&kc z`{N1h%(o%|dLoZbdXk6$mmPC4xVy_1(ty!a%7Hfq@kCi|{9L zeo7!3BEe^WGt07us+_Sq&(^;}>GlI2aU$MoK`2BX0$TB8%DXKa?8G59Z(%f#4{zY6 zI*T$I{B^D{rdj+K@kdAZP|@qS^dGk)aGD-- zY_@nD(sf<(OY`we$b8oFvx2YXBDr@)UCv~}4~@SXw#r7DE&M>0Ble4PS+7tUcR@=2 zoUaA&5ThQIFzCbLpWVI4`K%-}a^VA2vvh3!WG%0ON`pGAvNn6tiO@}tl$R)o0D=Sv ze1G*&-*2ZMODCZo2A(Fs;Z*8cKKcCK2GmO}s0N`q1Z~jsb`}^99dxp>ou>%T_7VIO zq_!)p5r@GYVQutVmzT*aUL5%6Gf)pSFcOase#@ZFgfBwu=O7n?v_%d1=Q*0+dEcpD zrL)9#&NoAqK%9xEIdpa^m-62U%k!=ru(%*izu0qQ{mdNkC1LVNg{`%5!#9*F$55cg z$mG)%q>Rapo7+}2ZTap**t#(tH;_pfSm#-@OWWBue!^BHAs#qfN8Z1IJUGf+PTEx? zuOsa`L*7+O+IE$+wWzd+yrbM-4jk%vP)pufXKNGh)^9zDX%!nb?=@`2%&W>0v~}CJ z6cpGtG0h+`))oITkmRqQeTB)6m(6Qf>n1)hs z8BLKM;fgGmSsUnNJ&8FpQxNVkiu^%=In|J*c&ZC`@kL`Vp7qM55h3}qMwwO*7MAk# zTKSk|@`#XBo`3Y>SP?(mrTbBtWk^j42tA@0%HzTF3!8;@ps9tRpTSay)dzaRMp(QsPRs(AnQdV$cr*Puz|> z(VgAHt9b$BFFWb@Um_AvkBTP~X;a$%=7M_*T5HJ<{14Nc1Tr4H!iN1GtcrbTUb_Qa zv1DvZG z2=~Ul2~I3MqE5`bDtq_9Rhu;}H|~MZy(e=t%_;X`@KQ#Trs?TR7=C%9Qd4QU2f_C< z3nBJ}8Y->&0-JfEgNDdoNSNn}6wPB>Rlf$y4bQ*aeOK+2h~Q27IkK=)kdUhFHcXxnB*R_92R0f1 zxu-~yCoEl-NX1?XrT~;B(w8?^8&->!8I}o~R_pz{Q@<=>lv8-zo7o#RBQkA|M^~|m zM4sM5#@wqqKA1AtpW5G_(tn&R7va_zYUfnkkW~ zj+3ZGx!}sr&8$z}k$XXK8zIsYT@YOqnNIoaYe2y1%+^0M3j{HA!Jt&YIWjw& zI9>4ZfQ0uygH~qua;wbFG?s{N?b-0!MaKOBhUdlGR26BYA{M`0ydIsDXUP4LEq9BA zPB9CPd~r&`&EU`iStOeH5S0VHx|rWqx90NjEDt7!4^zdO!-<(Or&(f&EblPY`@=nQK%z_X9+l(U|ojH2P-X)k*AvFH@%=+z7eT=A9u}v&+ zi&>Lf06591S*1xr!F%3McA~M*4v}C+&u%LIe0j}@fQ>7z)Z_~7E?#k>j$dqZDEI1$QF|LA4)ln!ezFJq!^dp>Bl}gGL-4hj(noV3!Z(1+gB>BZO9-lP+7wPA!(G4@79&|(@ z{BQkyp84BcN^~Ls@M0)rftCU!0{BdY|EkDQgvD|g4?)Jy z>&7g`5H=o*OC;j3hi!!s_OTrts^XB6ev0<`(8}`N-v7fh0`ayKqA-s20|-pI^4*dD z>n@_=PGC-<$-4j`iVmXthN zQyCQHcUK66&0j`eqYEjxLsy7+2eL^E+#{3k1LS+Bs&&9c0Ju~Zu>Tta@?udgQGmYy z;APyWKby0vLd!7!i=^;tR)x)t&Z{gPm(nty(!2owneb+>fS?t#A$Y|s7;4)H^GKw5 z1VS6U7us-biTY3aIP|wvM%`S+UYOcIzz={7RJN@2nghXcx=9_2q8E*#^o_nT%>{1Q zM;0Yc2I6bUqFfDAv2>?d=vtYN{buR775V(G#J(?qSImZ>6)PZk_G}nzo;{DyN+P!s z2y@A#xtIt+7y?j-6JCaa5yY?&xX&Z-uUbiUnhc0&JUX68jvx%R62S;uTpa&_D0UDY zgAv3xBXIx4@jdi^D|5(Jw(QC5WOg#Ul}(ncOjafeTlJyek)IAoC%KaB(!%p ze}TC8ojBrdgLp>J>;#TDyA}~hU<9{<{|j%4!aqka?gH=6zCtcHug(Z@i-6&_mP{|X zB)KG3VnKUKt<_}7)ydV#)nsy-{wzg1!Uj6AIK>l!mh^MKy%opaN)THWTTRvsc<5z} z`)G-mN*vL$e(trmyq)yxfejfXLu8mNCQHatvWzSzE67T+imWDU$S!?+V05v||Mv{t zxC5X7&C=BWHjn~7aY}d~J_!;bzUUa}Iv|2wo7rW}uLaOSYFc9uCO$Y<%`4qXSL0TC4cEHbez;O&&jgGk7{D~*yCJa6GmV)B| z#3S0Df^h&~&G0ve4pKk7yA)^x0A|4&d};|e4!}H3SYNE3IG9~9wx`{yy4ay}_TyY` zo}=qn;OzpjJ>#pu!hC@C(hCyD$dktw0o$xB>VuD?w`M)k{!C_ZC*+N=W1 zvfjIXxKF^?p7B-ie8r0OIAE}Lb$zqjsSMU9SvJs=uiaw@&Gp@Or_o)1Y&zk(Qm5TC zfz!4vO%m4BZ64iblfX=?NnoafIoyOR@HCcFG}B`GY^KvB zV1ViIswa)`C%=2QUaw74(*ROW!Q3V^w}%(MbzkKmg6^*O=ZMMs{(*S+vp zo?FrRi_d3|G|_~p4F{)ffYZNHtICRa=v97Au|b@?38&?cQKxUXFmAM#&FZRd0l?pP zU+iuy>ryGXsVkcR4Lt&)nxl8yDC0$Se!ui*D`xwB9c>V+_ zH9Y{uD|$rSiXUT{zM;Z+)LJ%YB%#qvA9z=#^EuvJ5__bFUDjAfO<97)RU~9r?qNj~ z1&m};)>s8VDz-x^)usdY5|WjdrMaQ$D08tz5Bp!K9ba#Xy!Q} zK-G>k*8gLs1fsj}mfT<6qCAo$@Sc|tWC=DD6i*J$q@HbSPOkUpZxA#Byc?IR#f#M~M0 zbCb4FDBGl^t=NfiM|3ixlaspQ0T2UuHRs#K&>XV}Sk$yDgiC3+A#`Zy94G&GNQh82{C?)BblUkITLX%UzYSPJZ@YW`y5e!o$T;16L(kOzB(=l(I z8b{*C8^#8u@rhNJd=$Ha?-?)O7#Tc%^e931?!`$0&u4+BRVG|JIGC~yG93;?lF0}ocoOPaTvnGDJ*+!-7O3gSo@8Y zh5)+4eFwSgT3fj9#qWR=h{nO~AmGkayJxf8nQ;^z)73+>6{;jLOu)A7gp1fSY}BVN zFi};FKBk!tsAhE2&)Ro~KHXDtH=YrWY6;tB48nOM>~Ju!Uz`pPsVzW7yPxV%`XKMG zzc58{;zF(PJuLJzU8odp-c&Bqu`v!cVq@&)oh25A2%S>1WLu}RE*TQhyu!|zbs?;) zr$I_s_c^O}Sl63jdsg?(^s@|1=B;>v%{Q&)B3Lnzxa**u{mz<@c^;UGfeZHlR?`-M z2dE4PtHyuI_Qsn&G67n()v7y!PKYzF0x(yS)B|f#6p8kMs#Ay}-nLN@!)B1eMBJ&R zhg13LUTV6WPwA~B^wZ87%WuWcT{R_9B+iE$KV=P7B~C$z`k~=4pl7EogEnCRhfS{* zVW{3ex}{oGBBIhFrL@`e5FWm=Q`=o@!+o<8)}SdqN|#4dLGP5EwO|32D=-jBC0|eJ zpUnRv282w+`fF*&J_x!8f<=G)4XS&I;d-7_j%^PGonQH8SegI7sD-zjWJ-GtOQ#8HfT>FqBB6^pdeEdcZxvy1pye^XaZ1I|~Pb(6nN z91>UPoIfYx4XgDP*Mb1G^PAQZJ^d>*aYTt9InWdUiSmVU3`XJQNwMg&8YVHpMs4UH zVmkl~zD|@nBY$HD^V@!L1^_a=1ILT|_q&7P@F=hKvq$W)ip#OlEW5vSTa75KZzjog zXn1(Iaot?~#U`;Y%J!CZ6FuFT;3HeZJ^#d>MK=ze3Ah=X(FqQ7Zv zHaGU;%HK_#5we=Px-3=H=S^epL;#sA+R9Y>%%vzrB4}1?Qp|z?P~ip@{dBM{0!fE0 zpih#sa%||Gfy&y$evPK)on#+bTL6Q4uVK%v@1GL~aB;g(Vhu!rFV~ESp(|cF)6?TP zbTKK-JVnZp2Z zF<)ARJ$wB6z5h{|>|?k(uFFK&Jr4~Fj^z2JTRi{x=-|>4^HL9BO0uysH`kky%QnYp z^hgOA>G5kTyL_26}95CYIAW7C9O#BrLY12R_DW=m@ z#{(5ycV@wlSz$SNV=*<`^?G6S;q-w`h({Z8BIl#$vJ38)BojpA=&%LpD}p`}<|Xx0iP5B5u|h>^Y12?GGHH|91*R)~D&(nr;hL~a zjz#87VNi80OZqy`DYU5*S%k9Ml-DNmMkmQ+p)2K*uToq)TPK$#ljVvo4=!nR%77)z z9E?@KgE4_*tUX_-&YrDiN3jRu#}0;4#0t15{WcbE7X@*hv}Ixjd#H<1t=hpZegHcv zLdr=F;_ooblD70I%LJk*3w!$p1PYggK1DJKb-vP(2wfhzG)@ok&S=~?X9l% zC$mx^{ul+winKwwB9%E>?vIki4Mxf;m}OGGRN6C3q_SB2A_@A15{wi`wlnj^7|9c8 zn7N`6KSzXqwgCK)0L(0*KSC&xpg_+I@G+9f&t_)u`lg>J)6q}kj+s8L@8#kK9&R?% z&55{}ET)r;QPls9xbSB!PJD^YOl7hnwZ0Y*rI-Opm~`;7 z7LBrOJYLc^=B+IGn9! zYdA)QXCLT0k8?jLxjYtshz&k*3 zP6r?ig*zK~Yz5<(iQ55d)9bUWBN4*J0nLVOA&R<1IW3(1e>&iXM54cdw!IZZF)}qX zA(o@fqG*a0B^i`hE0ox1<+3Le%lr(T?e2;$cT$OPmnq(28QsF`p?q?GK5OgwWy`Ct zGH!`(5bb`lE_LQ+r+qnFXsB0*7Mh0(4K)AN9pZ0BNHW{{&$FvP_l2o7Tj@h~^9i+( zYJj#GMp1RtaYwa;f`ycTNU0!Y%&1wh&9#e)Uu6EWzH{0CgXiOh@4a7F77Sz~n?UCS zl#%UxRR8PLKD7yC2*Isl0~Vx`JS*4gm?`g;vD9(4`*>}%Z<(@&C&nK4?tW;CWsJef zK&-Pmunb!>6;n1v`%UJ|r1mHEX;`Er?E#}@b=F6@z2na(efJx{Wf|oF+Y3N}zqjf8 z=Um_g)UIe(K(=hz)&rJb!X-nO*WD1gtAlMyPoES`Cew#2;Q#N{z22P#rXV{{l}a$O zUK}O|s6gZbxj1&qu&RK|)M@K5e!tgNsb0c9Fv?JR6>8>UqUk}?fY+s7gEaUqHgJfQ zMPJ6=(6qGH`^oHGA-T1!W8qrMd`%_`4?)P%j-9b30)_bh;G7Drr*8`k=?If<{J{UO z%g^>bX%x%jma6Os6NPQ>IK`G8Ju`K7Re2*=}BbVcTO+G845jP8RrO57n{mRGB}gfSm(j z4xVgp(~o4sS{$-oGpARRqIwD>^X9tc!ZHy%d%G4K!SG%Wmj}& z5CTNn``KrY{nCC1kMvHqX_{?qnxG;gpdg^&k?elHvlavf8|<7ZuR%L;FsZZ*tIn{2 zr{PUxgpn8#Ohyw0MoUFTdu2v1wZ?Gu#wbn3Si_v3vq307fJkZwoyY;OL!0A()h*zF zEUwwDT{oa*5qz}UFp3UwQ!f6}#=Hhkn}9)KHl> z2h?Ng8TF!iefhiJ)5lN2H=HeZY&FifX590l?Sqq4bTpODLWxR$gJ21<@keuo$JfT) zRLeD$gI<&Ws?yoNzY;+mE>&0^%vH4-jDm85XdlP0=w!oPu6j z>Sy~Tk;el0Z-i^~R>#mHGz(3<5%ER?{p_V*E`07dSe#_ZSNvoAbDoeV=9%&&k;!$b zyLWW3dnPYJ+KhqW!SY+DI7=0fCcW&~@E(w-kTc<$2;Yto(vFcMJa_CyFv&LG16P1# z)>aTjSXsw@bNam5)TejAcyOJb;bEuoljSZE!EVgTv*_<1FA3xmg}(qx>EKSVNI6+nQ9iq_=4gc_?m**UPM; z)Xpd5nl{=%2;aj!rZ>~4dZxYA-e{KqK>N|wYEQMD+HmbztB?zus8&SPiYa^3|A;>5cm6G4UrtY8C2 zWE50PEFd-rhlGrrf|80(hD>@{&bsZ96wf1}4hyRS4sIS^K4ropqGBr4Yt*D!i&kB_ z_2@OsX~lRT$yb;C^w%%{lpu#hIA ztj0rx1WP!;g~e(H01e%EpREF1JR*F*38s}!O~XKHD5D&?O!DM2vnk?K$R(&)iBfju zs#U5|YlzF%kD;G6D96LdKsded=N#)s{66hCY_^# zGPGcow;E2_6S1Gy)hu!p$yJgQU=k~jBj&sB6%Bo-xn#fH6`3daff2)p_4oDmba!=jw70dk3~g>|Y^blRt*IVTRasFUi$=ns zvS6UJ*zfat+(oWJr^7CW9QyJoZC9~33RCrLb+o%>zJ$@!k9Q|#_lVTVQ84BSb}Vi* zk*Z^z3zi)$n6CEz$ScxPk6*Nd&@m094XUp;n(}B|3st&?Xf$hfVik4W#+x50P}-%@ z>$|BNwa&=(dVUgNc9+CYZ-DzjtmvKK@Un&8C@ik}O%v2|+hvTrOd9&Zq~s*kR8gcy01jVOk)m|`qp2{DWLv0U4ReWkMM z3gQvmJ>SU;M!C4hN8I{0urZZUOUCccueju21W*vZ#aM&l!f1|uK@zbG)#@oC^%T1$ z-yBl}lD)usjX%T{SM>68JpIS|)61`^I-NjlS2}Q3;>4m}1y+~CiBbpCrxb;H4Gw$OI2({2?TGP8CAlNk#d?`geQf7CXK*@!&< z1|xIY?YtZ0tOYGd@~|m(RB=!Txmp%sZzme#rIX@l8SF)ZKV+Q567gtL%GEXZYvsKY z4Jp#$Jk*_z+s=sY{-6k^Z?RY!s&$gXIg1Oy=dYBIZ;&P>-{m(}5%*Bf;YTJvo;;Hf zZbvV8xGu@ux&UUnQJsw-4J|I`#3f%J^QV5e zSG?C1x*N4nI_XrKgvj{GLr%|E1uJe4?wnYzd64fSnH~a41;8u{r4BKvyOj+DZXnEH zhx?{0p3@3Rbj4t=NSmHK0dOTA?A>c)RMyRVBi5^x*oMR%>!c=dYlm zG!?<(B2~?fO6pQS2gwGY05O0d+yh=p4>Y4?uM-R|`n`QL&&8rfiL@=H& zB!aDdHA+*%?F_WMfRhWNcp(A;89qgP3eKw zc*^eq+vn+@Mx;6B&`EU0TT=LY!8=W~7_zh&uQY;7Y0R_RXC^S!Cc>20pI`kdmNx>!XQ(B|u-@zC%G}CX^2AJyE1QMHk0;>yFDw zy8Jx>7+UV9K@lQ|z^vkyU#beoZp%)@UP$EK?oZboAlHfsOK&Em7KIOO3J(li!2k|` z7CxXj3kts>CQ0={uH4xGe;5pKVHp%#4sL01#~9 zmFJn1%rOBufkb!j#E0mDIg0$_5jtNS@XfkW0I$>Jba72E$@|QVp9C58CCy}~WjEqN zLnSDmS6B@y&~-7Rqa{r}KOUbNI1(DRfec4PC zDzBx9x38P*x_hBo6Yugl(R~nxfSxqptpy24-gH96&=kzvjM+!z9FcW(b%sCh%o9Z0 z3{(v?@mEd{Wxt`4zjmoIg@itong9@&d0q=zB&$$2QsIRhSPnvz4hxb~%U8@~EGtY~n+6M|k%zU8{43+y-}iuKuY zS=cGEfr=oEvY-)hAY%?#gFH#H8YgmH#_0rv`yC*-PY$({4*xl`jVKU=pd)4`l1y4p zt<4nL4aSOQCgvZl+_n!`JQIA%pI=>`b0(chZl7h)wFGz0_pGxg|87Pm?9j)9$N5aE zmW`!@)~=YxsbulY+A$30(IwD!am1J`JR{4;uc>Esa(-11lDF+T|lH(=2P##4w$>#G_)Y$=)J6qVtQP%gHm{TVU_I+ycuxaBQn z$CP%t18N*gXb}lq9Q7F-HP6RmSurhFr4<}oP3<#9U%7?PXyy zV;?7gT#EYvvK}q?<)Ony_?B3qm}A6Chh>IMe3jS}DA@JM1(=+rSYXi>lQYdzYf^Rrl3U*x8++=Z8Y1_ryfnfUEy)0}yC*i{TVH z^7kf2aq#<+pl^m&;3L49=cxswEfZzKIbF}WlRTQzJA|0QJTHUej1%L!HPYCwhesQW z@uTpGqP7FTdNEUPco2k$5VS6COSyNF`MuU2>1kvU#cd5d2CB$dC+X&0oiFy24NReQ zubU;Nk3muGNMcV>HU%h=>tt}6autlcty7|+T`#l4{8$HalJFpx5;cLM^7rOrf0o5; zXx5orBjo-!W2|QZ2csH9*H809<=XV;QHO}ewHi)0Cvp@)`g-W|!7hZv5(xY@e(-3+ z1xtg`?#M#9ZSMgzjZU;-NAHdl;tJ&LHbh=tQV zq)m*fTsj)Bem;B&7Z^Y!Z{f>T?nQAW4Ua|5Dz3OByUT_-i=Qh9g4u}w*~$V${%eI2 z$fWt8)-Jk7;~cb0E^KyKTc{R1EMx)d8#7|#VKY$#JEM+2inNxr$zavKAP_;Db5@+I#TlQy^dzHllc!9~y zo+u{@l3JjlHu09YQ%2q~3{6gzhc996wzg1N)kAeF;;R+!X~Ll#3CG9oH6rkg8tDrr zixFP5CY)9sm3hDG`vb?)O9hkT%~lBiTMe2x~UlrPhNREX#nwudNQjL|*!Ir_44 zZCX##v&1Q-=){QkATu3ddVx9FJ<0}Rm~LLnqVd|&Oa)$?AE@z<&+P}0C=_!@L06#H zYlw8m^!6Gz&7;_r`1XIR0E3`+O}^sFdyxm@F&IZ(bjrhYxLdKOcO z_+cXvWx9>V8%;I}IX(e1?(u_DHaWNsOHuteL3kt9{+#dr!fsmnI$zjI34+NmwNU6Y zNnu=o-lmfbQwY>&4Q)z5n!q7J^V?U2OuIE5Fi4Bo#-In15A_;q_BhagxJBB_;$eot z4z7`%dg$CMD!Sgu>UHszW5)BLUw2>2vexgWROSAnW6q4=k&*Z8MRp}BZ8ImnM&5%JI>beQPMp3`zL0fH z{L5Vh2BQx_mRa+VNY4hC7ke=v`3Yr>-gEv4F(HbBB{~Ud12~8;$6lrES}3J{@8}?d zkao;Qvcq1q3wnmr#dx0pcxS+suXJt*2Z3H|7zPFzDFfL!_*X;)HM2WQz-KmvzBkv+ zIV7uW_Qon+gF8N~b&we+<=8Wn<#tpBwv>#jOT{2!*>QlUc|zmM&$2&FxaYo`PaO;v zF(-eVutPrGKx^{;E2poDx1&0atRJtTVRCepbqK4u;7zh=5-n!t zg!Q|eVoN(J>MHL~O+_u^UNsr>X?#fxw*!Sii7!~NnN%i0@&QtqkqO6&j+jrA+vlqY z{@V$=Lmp0Q+jE|PvT5#{OEy7NP9Y2dqO!8kEJ_CwnZs5)LLm0k)?soq_KDR*lsGQI3mp;`Xcnn#i1E!n&(qA&fch z_JwMDpII%Qhw$XqKn7N^+_{)HgbKRLS_*eW^4K=kQJQP_E!2#o0`hT2wpUGxEx1Um zEEJ4+U8bchP*XNG{n)K8{T~sOcFH3fnb)g|!yv+IE=ogNk7{x-graRc`ZfKf%5w7z znaa48wUmW|RT_6v>;893``ni}|DEd7qt|xc?asX0-OWUyFep3gk_5w*$5 zHX7mh;7FDiq$0HuzRe>TURnsYXdL1dA(a~QSVD2(%z>rA}6sg#> zS>QLGEK!BZ%t1*z*6LlPf}$dp9apT5v%{ShU$fLD4Dn6wOinez)SOlC&>K~F14|qg zzgwkr5IlAJ{~()?UZoxCws@PRZediATa+%SEO5XzPF=QYSw*yhqwQE+E?)DZ;>9sR zIUR+r7~K^;fX-i1sHDhRjE{MVh976b|A9@-gNH{Bi^INB2n zFX7l&^q8N;rUyBn>%)#-pz8Ry?}-dKL$2?M<;TkNkzhb?W^ySf=#&2F=x9$%D^L*b z+)V7^m`TaHyNN$FjZ0)0c-+!I+2wPwa7XQMa5%fRvu1zwANttu`xyN8{=3VPmetc; zS#$HZ2M#s>s1KH&h9cdZ#(LfC2DiuUh`&uFuA-RG!fNmqvg&O@VZa21-awY% zCHyE0>1Pf*KkDw%N`L*cQG1d_CV|{b8&)z@Jj>@WU{F_a|My+7enM=*iDj|>@K;#z zRirktCo+MGTSP*ZnH~5#k|Mq1i^6iXyjUxsnP4|Fqamrb5{|GkSMMTFmcLOp1p11E!)9o=P1M z7(JX3h>|uyo5F2Uj9@PrNh(f=t2q8UuqBZc$hDB7!X-5Djj(p>57gEo*{BY ziJr@{X5>x63>zI^lu#W@|0tr{H^VXT8PeFw&&Vv-Po#Dn8@!kfH1GePj1K;BVCjD! z+GIgysZ!&JNU}v%!u$bqQCVM#cROc0NO@O%5seP~e*SCrpKskSISNH-wax>a#&4;* zP_-9NdWUXoA81|F*<;tB$s{k#%2v263)<)VGa84eO}+7J?d!Npot=XRM;vUs&`ByU zZm*F{_62i&0eDimzugfU8yO3N>+;s5_cmRxzuvw`wbeMh{i~L*Sl3=39o{=Gp(~+d z+lW^Tl+XcPqExMLGA@54+zTR+m51mTP@aG@TYxnys%iPDv^{&{J#+V*L5f?*9|`!4 z@e>Tde%-Iw!;n!Bu+QF$R%NZaJONyIMgU9DJc;Rt|PId|8}R^tPd zfgRe;zpYf#mXT|J?2Cv0okS#T`H)3L(SK}x!7cmD>OWV%*tz7Xh$ypxNJc2f#ICHc zu|?Dn#lQc(RQUbU0vfo1Qh*R{YvR*56qL4%XUgY=GPJyi$xh@12`O_~)foj|fhJ1UY{!$=oMC8MKP$1zAPA=8J;{ELsa;HKe zcY0-Nja!!818#|?n98$Ksb(IP%rB-;to)5LHym;R^O2q}m*r)y?y~c{>&MhnDw@I~ z#p_F%(-`aCy{_p&OCD94lpi}l^>b#XmsR>eK0~{ z->KrBUT_&p_-<FNolBy-PCk}{!W)EsVkl( zu?i(YJG~1Kefmozd4HraD0I|Y*;tpG)#fa4JL>X{`8%@P3Y;Xq5MzY%nq^a{Sk{*u zcH&Z{QZQ}Fq`vrQv-+eWUa{=>Kh=K6uu;t@mcK4=n+Y}?VpKT8@}Y$)DQiFZ`JW7> zS~|4XNN$&Yf( z*x$;&=O|Z?g2nt&<@9@QCx4BTIHjBJ&C~AyR4#5lGm>dwMtnsa6(#vp-7IDM@SD%c zghfBfWZ%t)$kfjB@1&9khiW%W{`+m_T%`m}>wHzf31&x*O|L+K(9(bZ!!W z32>K>u?v&U9vSeYOmLp9QZ*9g`#oN)IUhKHk%+UzsYJ19x zcoWwCFBO*ffnu7QA%F5+10p<iRFV}b7?(cWwjZ0M2n0ROrTy5>ZQmTTtYjk<$v>Z=Lsu>xpVw0Iek_suG zF;-!mwWbd_ADFB)|E&IdSnZthIoxX+iA*#^~J~`vjrKFhMlya%}>Vd|}r9 zI@W!%kKUZisljyTFblo88I|L@rq*N+XP_`5D?;_CVua&^{7=HYU>dSw1O0ZK;U9(g zc#vyJdWuwLN=}E9#XHk**nN5o`MP2bNA~D86=*9E{b;8OWOjzcmVc*;yCQ$+f))JM zvR3)qcx9nn7RWNl0xp$8vH zaBU0)IsilIl1Q1wek01E?yf^pD1`~PXL?i0>O46OCasq#%M8i1e!Yll6Pt3Zg|6)v z+WBv_@+p-2D19UUm7yfm3;2#h@gRJp6@*+&YSw+7~BAu|^Cy|@^znIMWO0G&D zkf0cCDd@9~=Y?5Pzi3457T z|LzZT*26W`bW-$>Gd2RX$P;^#I`iOnFR@Z9gUs-#t(n#3x;!ueX{{(!O^mkZE^jKf zNdl}-dA3kr%JR##FP_ObAn7vEq&gegK@phf&lyEpqq;g|FvLYk&pJ}PrJzIZfYP8;Rd2TthI7BDEc(im$>gC)uWJc5BblSJ!2cvOhC6PvZ z#wL+|nnq>(j8uha#;g)YFEI01s+a=a`j1eoi3?I1cJe6jxEmnjujL?#u|ob0a>y^s z6`;6)p<_7}O32;hf~1y^MLw>gN4K)p??BKOcN{!%@8F4mTVYo4!uk2Uh*_mjm{q*U z%MQo?>ANQ2IV`eAh+Z1vzu3Ze0N=e*x@eTn%)CKruM*|V`(-E%e{MOMaOu$Yw$%Dy zq}Ih(3a+Yopn1ro^j5;XKw6p^Lw@pDY^R2Xh5AxvT-~q;2ZMCl0Nt8@yP<6mg*`t& zq_jQxX~06}7+iWe+&Wc2D`Rm;j}##GRqsvO!>@AwF<1=Y)k^|B(1*uL2dHdqC`+Aj zY+)aU{0oLi`SeV}Oe!CN!QT2Se|@6w5P)SpK@7vvToWt>K0W@pu)f459^%v}S$l$W z8tPLn{Fy#333G7~6<#*#B9<3@BNKu9#Smfs6AEDo&Vj--rH_Okd_|_Nd!?5&$s6mo z+mhu=(%a=-xrBF*&7K?;L&zSQHtlDE)Rvu{Ytl<7`-Y|!{`8Uxt4&OaiE`pkEFp{6 z_jk=pbSOBN71t~m^$kYt(M3#zbXpf6t%@LsE5k|d7=Bt^qNkC# zE*3{xS3+D}g&?jfPWAc;Q$mUE2zkw-`=x}b0rMhhqg=bRUW=}k>lW3g>lUMDv{Xta z44OAYqvp@Xjx856D^lH7ou5%{(6eeYgI=oyJ)s4RNW9j}AgfkyU{ve;Zfh#DqFg+7 ztogHO)VyJE5Zw~6H?T9k2s?`kk{<$`Figk2P~w8wDsMz&ER4j2c2Qg@Ocu`?NRtTS zUEIiT0%HiM4y1>S!n+Y}yh|WS8<-^~!*Qh|yD%0h%nyrH-t4#_`~srEVGi|UvLHT+ zu-EW5u<5;#H(9ZpmYY%Z?nqXYmWXAco3NGq%GCTG4MS<@mmha_UGz{iwdPbey!RO% za|ZsB050V~TnU?Apml8(Un(OXoKk~7OYL`{ulY0%%oD>5o3`ks2&#aBk{Zq)*yk(! zyACl5G_F@-I0FEk@!P;&E9vG)asWiPT@?0L<);0d^{XiTBgV|`(7u*hx2kDm|KKb% zPgxrg#-{K&j%WYE3rW~b=^O_QOUoC+UBB9F?P~2Gn|elSweI9e-pTc6U~cM#rA@i< z4u7l4qH3**ccxODLn;qf#C*4NOVfK7o3b0{9VJti>~A;L6olQdC)5p-WR{Z%3rNO0R(dvR2)d5zlAh|-s>UA53DXUIh2Lbrx$h@WLk!4pZSq)^eo1n&O; z9*g|Tl7r2wRGBI;79%+Vrx4?lGs#iaMWyFcp(Ike;a|Ds6VLwEC1p~_$flP+fTQ0e zV~MCsoXCpFx+V@e0z6fC;Uc!mg65S~-?1t1k#K%ksSu+LYG0{bBPn42lvQ-ERX~0v zW+BD!sPIs`lRzo>e6A*HDkl?Q3(xy?BTQKN^GPzRPxjr<^USmTGt4vGJ@ZWSJTpu) za4l`Dqa~wyAGAE^+vdp_ztTq~Pgv#y&^H_QZVqo=SG8_kc->yI2ncTpr*_Zk9n~|; zYV8}|H_~qF9??DAX&yeRyRy{0l-d!shgSfI4vj#i#RCAMbO3nT$)Nzm8{3f%3$F{W zy%ky)!j`t=?9E!$xa*HR;vL?ePkB54XzWJi?jqh?ymxbm7YhA~OI{G$5(7hT=^cqr z9Th>H~AKA!d{kfS>NNT&=<(nt}^M;cZQj7gVM4k0A?93J<*ip zkFU%~>R>=qQ=75WOFwg1Z2?Tpl~iQ0YmCHOfo2eHIx9P0j{-;oDf37PDe+_$ucAFL zr2TywRD%`@&@~XJ^rJxdpaiyIlq<=^Rd^iQxPwgDVf;n|mlSsjQKj(Fgre_@xdm4e z*SO|w8d|xEOkSxJT-X%p^4mUtl(Uh2M7VP!c)q%IBU#@`;s1063Q)Qs;v&C%prk}H zyucF@q$^yk99GQua~S%qhbi3867dJ5K58dnC%}aVuF#_<6T8x50|kt(4H6sRXOP~J zc0KD8{@UF`vVmsMdmqhH8v;W$+ZBGizDFnL~mV&as6g=?mHeO|9RP*@_ zfwUw*=hH84s5zrAL<58mU;R`+`~L8UWAMaP{25U8-+}uhvD85te$HhqW}Jq1%{C~w zxo0L%t}JR*R_^?{c5=>S{3CG zkeKt`an27V%SRbgQ47)^i@un~{y0YR4aX*eESawuS=OxWPBJAW#Wkf&h)Ofyw-Tve z9weikPqR&s#w=E}YQiFO0l!?AA&glHA|j0@EV32|V;M49(XB@=dZF0DPGUMFV$dNl zLjr-BEnqn%5|&+P25HhcswSwxm{=wucGIZ!&Dy59vmwBP!&K5)3?I`wk5!)kvB>nj z$@wvqn{61EJ5HbL*a6$vO!HRRr_lk6Kxh)Nd-{Ul6A2xmdnn98i67tbJ(2kR5InB) z8j*NyEFOzAQcqW>UR=y;1JSxn7jSXONh7O1Q-!UWT zOwQ3QT!!+X3Ovnvad5IdWybbP-{6Vg$!Jve(d`r_o%HL$dAJc5kSW`LT!UhifZ%Z+ zwe%P^adz9}RX9v$5rsXM$r}`du3OkCFMV^T3+GPvbu<8-D^6vF~sT3@i+pRxtho9V=(%e>=2#Nw~|@MWY#kw1C3FS{m&a*!eaM9tj#Re=G2dc<7asd zB^%M7%AYIQ=rv%=5tW1Ls*#gt!Q*D)-+p4t17~i&A`HK;{3qS zrL*=MmBF=D*t0VauB(&f&ho1oC{{jE_EbQ>PU>l{{W*5 z3M3b8F{ZykEQ%BbWeArvKumd#706IZk6j-Qp#ud%A^5nJF58;6x`7+p6j}oLsIO=PF;my4##m~S;VrAk>%}J4o}LJ9FZhHT8tH38DSMxV+{`C5Dw!A zj^Y?pm~k8@aE*^SSKj_mo-WwEUqFQOH@q5eTC_p#t&#|sAg#zKp(W4;z^n7FE`N1J z-L5%bItwYq7JHSJoSkUxF0u|z&0b*nVOxQ%F}#kDq(x6a089VmA8()mN*e#8rf88` zfL8IMf`L}mUz$Y=K`&c4Xo?m|0Nb5YC5|*jizI*r=l5-bAuZ3i2?8xZtJn$S!{9I1 zkK+%TqD58*K!Bh`Akx0a-ACHF`BYrj^Qb&zRlVmQmCpASaL~?mskr)X5OgRrXiv3s z^QaM(9u%-nS&C~qPbGt1EAR)$j@Ie?DoR&gp47V^Sy7i7ooH*k=LI5g(Ic1cdgmFl zOe5{mqX*YILl+FLaK3>SXOY4!c#YGh&U1qf^M`0!X9IL=lsh{|pPqK- zM6$FS9DM|^sq3A7_%pYoGU%v?uc{|v73o}xzPR%A=rmx0APPyn5z52}L;D2W0^rRc09^SXPO3ahzg|6OURZ*J&#Q#I+gXS__$f8?5~GsBwMm zON3mu2GDc|1e-CMvVC(-BH!#uY2Kk6zw2PARZMd791^0`I)XNw`Y95HiHo==qXLZC zR*L!|B`4(3F$lP5g_Na#@fGa1c^x%o~k!5yuyL(V}p1% znK+&YTAr_?2oU6977a&k3GcKGor9`}%Az8xE7{rwms{NOBHb#az6k{F`=H_d9r{Ey zM~-7NgqoS(S?rfes%g9 zngVfZ*6jL`pq4TQ3W+yDA>{fwX@e5aDFm_iFm)gZRVd`*2y%*`VAt0omSa0qxn?zPN^VCU>Zw)dwdKwmyb49kA7ueS@KVR-8RUSmrPvzQaiynlsmVF z_MhHk<0?09G+Qlrupb3RF8zh`^Ffw1$nIgFStFfoN-2MQT+Oc(E|;$4C3si1U_7^MJ_z~F=~vG#*6s6E?93R2Uspwd{a&}sGm4$)-Hg{;(ymTjvu|xd@HE2|VUi3M)u?d=HH?Fo zWVZ2am!5Gm+v{1;OiGW!k17T92D1dSi@h{Wi@YGV`uUK7M11uvbPSc;ONrcr#VzC4 z@h`u`4u)(PVE)RLYGw=u&IAdlGZ4($6*FKt`#cS8tf?vA4< z!gh~4x17!Tu@l*TI$DZ8Z?&x9Sga~xyzpWO0!=;RDIs~@dQDIs;t|Q^Fy*hWYk02U zx}6X%H6gBx5Husk&r~mAJ2f1x84N+8I_n9ag^&&RcYRUn8ed4}978h<7a~TxC%KKB zVj?Z-*(TD;- zeddpv0+aWQ1|pa~Q8iCR*k^@{giR1YEJ-*_07e52zyU-G+^8GAZzh^a+pqyDxzNO2 zLP!w%j(eaqX8|5q^Q2^j^CX!^WQ;5ml?+VUG4$D*&poV`ukKMr{& zAEN~cv}VTnO%S7udl5JpC29}sbRzv=OB3-b0@R_m&Fgjf=JLe~nRAayq9hk$-ywMV z%Jx-#frp#6;KvXsKI)p~fauraQx=2;TwH|$L6)<(disy-C2itC&~X}u zwcbZv5OIDh?&Y5Ac8ESW`8d6pz0Y^Tn^uw+&S?TRIS#uAb{1;+GR6(_W^?p$5Kc0` zpHKw3H14n;opwHE5)US2(^hc~ZwbbnQ+_2*9u!@E0B>D1#U7*k(+>HVkIxz1s3j!` zupynjId!kwmDG4FCH0ZCT=aQ@NGStgU^`~&rayVcs(fc1Rxp+VlV!H2DJ89yRmZ1G zpiXvHzL^8Mo0a+L>BYs>bupcmMNvMwZ6=L8ZhDk;;@3w01&J)q-Agfk$=P864;-6t zpI)afcEl~frB->jQv%k|I9oY4Op!=4#mgP2A#t>jqr;@X#sBZYcUu54^c}YA%;%Fy zU-Pa;8@E$RZ)P)w7y;6;Cpj1Tq&}uDiAIF0&{Af!76FJwIKBkBij8YUu59XxcAb7C zE8Zo9yLFhQ0r9E>d$a;_Yt&*q$hIS)+qKHJT8FUQsI}IZsu-SiTH|WQwQal26eWwT z=ycLoE*WwbAr}Pz?wr|4JT`8N++*N;6i9o*ec*6Rg7n#Qh`*t!*!IZ~pzwYfFHRV& zQN&_`?8JsF2ShSUX*x-eW&2s?&N0+$3`=pSe~sxHU>%x-gx1L3=*{f39iM>=_u+he zbDP@kbjs<>JUC6CDr`Dd*;Ia(T*&ggRybSOUPM`7Avn`YrI5nz zuZAr%ey|`$!X~Y!MgSqcS*988LsvaHFvFGgbyLgaG^oy;lrA+bI-P3<*WCAYms2{A zF`4;0<9r!fNJ$A{3X#Dkq`({GtVXovQYl6$cdnLoePe!J%dz9&+WG-utWv)QZDKzy zwRFL34;n??yruYkrO`LS+c^XcJ2J;l3?MS-0XEB}3qddL^%OI1o7R~M+g{oU$Rb=F ze6YgqJ=)=Ushkfjb6Q#fC<&qtmzT%Uvrno_q3avL)om7YX$p~20Cc3W_QJZ{Ctk2_ zlfZecMZGcz@6FJ~45WQyS$1BJW(at$*d zq8q;{rr!YozUhdEj*TBb{@|0-C-E=1Awd91fr9_F^a202pqIx})4D6e5`P85ZTfWp zv(T_d+-u8S)XaO`N5hP(v|-k72IYtoat@f#=`|(BFbD~Yey2v*+sZ^>9Qa5C2w|b` zHxPK}$cG*D{jx|2Di}miAR()l8qm^cU*iCAC_sP%smbwVqQ#61C5?=shb{(aX>YR@ z_zTS>lQXYPXKwcMYtYG zV6daI9N6z;DI5dj-J%L6W>$348RTrLwQAH{xZ9_OGLkk%Yq?9kl2#~Qbbdy~@iP*f zTF`DCEv4*>|Cqv5M2UjOJg+M#9#b?9S7qwEqs_&yU=B}Xy43llRC;vMvviu`rAlVf z>XWvlv2@eN&Ml)}A@Vw?O6HZaQml|kx%Ze}L4B0r!tq>nAkeIs&$fyaDJQ<|bB%;Moy@iQSS?ov+qN(uhXE`7g$^QHibJ9mrm;AH@%Pk>DT diff --git a/doc/dist/inconsolata-latin-ext-400-normal-K7HVGTP7.woff2 b/doc/dist/inconsolata-latin-ext-400-normal-K7HVGTP7.woff2 deleted file mode 100644 index 50cb547f74653d30dafe5455fb8323b72ae6af4e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14772 zcmV;lIZMWOPew8T0RR9106DY(5&!@I0E4su069$n0RR9100000000000000000000 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 z zvc78g|1DE=6ksYv0CuvA9Dn9|FN7NQiT&l@L}WHjwP3q2Wovo}*2upp*!04`Q!8c& z89SH@T5+{B{U&y<$U5TMU%Z*NqttxWlukgassDHjCnU;p2K zy(mU@|09Z8r3Q$N(-sJ>@r(63e(|*efhMz5zW;JhcS6nK0*ueem^D@`M(k@ElaZCB zzc*0x1!^h;!4UKzQQ+kC!zwH`e(5k5Q@|5+-$I=LA2mQoN$%#$%7{z4H<-%Z!GGA2 zWEbkt@EAGw?Z^K`22Rl$8Gm0QJFtY&$>m~{?=9g9y{$wG=ARxBg_378>fxkCFS|32 z@`h7F1|uzZ8V}J8J({Y+`)7OTpL+t|K(cZ|3rzpP(FqnkdHs{dyf&G+ zyd^i0H1U2~nuDZzfU@j&v*=k~jZY@>%jF{9+@sNYckuasa_=n8rBy8U%1fMET*+pw zy0mUf%a!)^GoqGRpj)4RsYg(6!QZTeo^0ux#;MQ$g9B<`SBdrAL7`ZOd!m6@&ZSO!~AtLx9)Aq$(kn= zYNdGn4`zJuVleLvxz|dVtFNT_^-nBl$-Rdh!nb&9XLDL#k5{K=ZM`SFp2A0xqsbw? zK0E!0M118`)kbyPuT#UUGKH*S=O2XJWxu`k7qX%z&FTECfy7F=FznyVDrEGj4Z`K^~!el{y zke$KH+!X}J_j1SAHg=oOlC0nmvqxFSyHmdMMG{AW$j)@C&B;+;tZy1 z!u44TMq#B)2!evZ{WDABY*iY#EXr;uJ%VFCv(Lj14~mu>Y&2wkY^vp~cbZE0qh%cb4s-x8 zSAmfX617d93d@EYM#ojey2Zr~sXTc^8P5@;k71os^h{#-=ypqN-blkZL=o$kl$^z& zckFL-Bo2O$+`o>dUTu1FzA}G9!aGcie3|f#Two}X*XNiu^kH40g*MB$2>5%BbJDBp z(6#D{bj5_2v_QhBwG<9j!KeLaRrG*Jew^QsNJ_ph@&qL&ld#y6(UoOV-|wF8O6R?{ zma8?@p($O~L-phfDMChjueR ztu{+@pX-t+IKG1_#AG-FaZ@jHVur;T4fEpCYspAl%)sdMr+EAh)i10L8BAC|c3tdq zUWxZiX1>_5a_TS&sbqU%;@r;ORjn9OTZi)hmfR~Th_7v$91X!qP}1B>4}B0#JXRSu zidTy9P-Zzsx?o7UA$=nakz`Of-2R>$CMxmlaght&B9$aplhWy{57kYk=8aa4Xy9S< z#wf-JDHLlbYvm9t!}?|=${0@U;zhI%BNoWgOVEX)2JV)|K(w9?KYcg#ttEZI@({4^Htz~ps+Bj0#^o8WRP_)5Bb?; z*vjn3?g#vbXX%t134-f;XRxz)*Us+$8M%T>IFfW6`rl9k=D7$nehrv0lTj56sI5Wf z?zEmMFXE|4#q5jBc>DgUZap) zEZYz`u1gFxUdP7&srfCDz`^5Z7I^3rSae4?X)`gSpI@a^`BfDef3$FEKbvV}Y8vNY z78UnA^ooFjOy(*f?b42c2_M+%hr=Zr(ldS1Rm#J9n4DBqO{PCZ7y&-R-H4;_?x5lf z%G#6PbM3^SfdW6l4dWOHhJ^Jx_z8{n6sA4dPg)IMf#J5W3*qO7Y0ZRR-)E-uDp;8G zGqG%5pcf&S$SIlsp<~MK%}2gNsX@`-X2li(Z~g9r$SW7EBc>yr{9_o5B{KtEGNFFz z2=a`KIwK*E!0&_+(TJ?fU$dc)CvId_?r4|;6H-gX#T90D{<>JifPJSV$Y|PaQbWFlG0&%=vedL zgvHOC)$=oaMd=Hg|Mq$D{b5UH24jg~pi^fQ89L7(56@`B6Y}(&I^C~6c1K#*Ql15t zC*h+xchLN zgpw5y)#9AdDh%|Tzjk(0ihxuZ(2_EW(p_gDGZ}FYYRU*5BDZN6>*RGx-Dq*AZ6saA ziUE4lePXmCB{uqRW4UnX*-t#zDvcmO6ly~ofQSwvHA*$QaH^dfY z+o*bQqvmT`s;hI1L4J)JE{BO~VU-q5Oh{qx`8P!}_k#X_7*!w^P>(@)!`|D#J-CIr zPm;h$H86yvazv1puz@`9X}+G<=5?gCjSheH>AdzTJ$q=DJqY`LHt_As#OB3uMN0kB z*t}dg^z1ctcbSaqJ2lL8l=Ufl(~5MrW}OB1#vk()?|n4%-HW8a-c7qFuon~q_h4HQ z?4|U*t$qe2**D;>d%Xgo$6}C2;qnw5tG&jnlY_v+3XtxByDG_%{)QlVGBghv;&rJ> zB5)5jl8<>}tdD6|Z8*g%SRb=K#*Rr_<4Bo9q75!obsJ0@KiKAWMwiPUH6d_^nwxrm zWiA9j%~}aOVB2eb;erUn7SfoIz%}+u*TVpzJ4iR>F|rz*pFrz!CIP0a!uz3xzfKxf z`6Qdvpxpu!7VKz$!{6wmjI2be7E?BV>VneLX!m@2*k;+CI}ElXKg7OKM)Vs&a{^`p zc2|X73@(G3V-mx5JY-GBe5(#n7a>+QMr7q*q6^btex zOkkVHIOdl()Lw2byIa||mBCo3<;(_{8##Z@Au&>4{@Pm&Z1v6Wyo9^^Z)lw?eC2{} z*+`^;>vV7v^B0o58X1lOY&Q_0pt%DN(v)ZZu@Cm6{kV$(J!QL&Dd6MqkoPfErU#I- zk~b6B9LJY#;AmX+-JdIz%%kj0*-y#`;`~AC{JSyc$P!lZR&NjL}k!B9q z*8YFuf;bcTXf{8A_~$rN-Cwbam>8F9O1PINvdy4bx$-@WPaFHS!t z_vZc?NW8MBS-#o%JCgV}0f1E>x{Mv||2p#K96SEwS<&y&cC+EXzumrHex7RQs&@YW zz4_?!-|;7j0CCgDiTI~4;{X7B0V*GL?}jU65*;-(qUkim^EVA4op}d<0?&zJw)Ap;roklHVn3C zX>WAhTHv)HL0Jx55HVpha4_IsPI%ne2Hn*8R1j(!(fZjTKmt9il#7%{@-hhwYrm25k9U=ztxtJ96N{giVLt z717+DAr)AIw`LH!C}DHx$WyNWXmjW`x|5)WP{v#F@D_uE`eK31j*EbnN_M6h_t}7A z=3gztmk7cZrIE0vAhc9+Y#QM{3RJ&O0VtvOEPDGY2V!9DCwa%$Sn zO~QI_RgOxzolG{0d4|sGH38B>&(CLhn}L!>ES#DITgD7C4}dS(N$9qKfUvZX=IRqj zL&IRB*t?gvI^~*KNAfc(0;Q%SLmV73+0s7sP;=1Kh@|gP92|ML!)6kkn)>MoWxWWq z7p6%&cPB{m{%VBV+_B6pqpzaF0#3tHFG}a0Fg4IkFIn}Jf^G|Gpu?~if$`?wtq$=n z-Yr7ip>Jx-xO_;{9t|w-heD_B6RH+J=D?x14zuZqMcnLVBX4#?0(c+ZB&K-MITwt4iEHvnVXeQKr`P3bgy*1hKC%nWyji2Ks z+-0xghj<3Bc8yoOhBvaW;TL!pe$8ItF>m1g?DP0B?!(*I&(KT0c^;5th*EKrBSFpa0I5WYT9kLGL*xNgATHewCFpL4s?u&npGbR9h@BEGvCKk0~ zQ+VO^LXath%=y+rMPEFG$jyXP<^s;AK=w>?v?e!?@!DX(*rec+Fpeu4ugwIW#iI@nlW{Uwu zG--W0RmVF@XI=uCB5Sl2YDbHm!wG z+W;6tt zB@kTY*cbdr1U%^dCOzcbmC_c?TK9%f+osxFq|{Ayj2qg`^q}hALj;o%PpLoW9)ocu z;4LxY@EjFbdqUf};Yfi2t?FE82Gp;g|C^m2D($7YZBGp?jH&Cknl*GI*v?VY9?R5# zHO-+ZosjYor{YNLvQ1m3PRAs`UGSzSG!u3VC-KBNX_vXqsr``sbQCRnVl6N2f;^bz`pk7Gh0cJuz6Y=^ zc*x=K9Oz5NxC7?t&DQrk$cy0&wucvLxHEiA8xVksU2+(?I(%?%gD=hbUc-*>GGbT5 zZt4jeN@59#lHi)iC#hXPC|%&vlF)U&Al9u2?q6kj&FrXSkNVlbIDGH?kG<&DTxde= z?o~g-X>9EdBsZK0JY-IT7X)-g&FR3Z#IG69h{8Y;dXvvs1Uv zF!3%yw=Wz=n+Qa1#njbXm!b)CcPMGW(hLhyhMp5jl=Ba|uC?$voRuBUudoBdd{=eW z^MWLS$t>q?)D19g%UFiaXI>fd0AC%Ub|fo6^o?=Y?&Q% z&=+}=@L&#LfT#zX-miWU97NjNY&^|X+C|{PjSW=^qJ1n)O}gtf(@K3DQqzQBxl|RL zNk{54cx*dc_R-tgxsf=o+}peCSD~!50~up5YhD>5R)QFItOrvY?3yj#svpklXGh>x zxV!7#(2H($e~s+TAgYT|10QFp8oy1T#726yeT*H$!D%As__qLhjm z*OG|itM`WepC0fuMGONdWlBpG&iGu}Q;1t_rh%vqU&w{NY_U1+xo(d%ehtRw$ZK_v z2UgrXgC9dDKdIAlxtIJ>5rC+(oD){Zll=fZKNH^+20o@x#qdWm_Rei1!XHL$QqjB5Li4hzGF z(4i~;WB&*d0`ziHb~?Ip)L+QG*wirDuXE*Sqiq=sj?D7|4|=3$W)ryi{1mY*(+KEA z&umpS-*=2)Wr864*pZ_a&4lX%OFVo;+GVcuf_*7tK>hG>b^%&;%N}^>t?I+GN^7de zooZtOh@%l$w5z`5&~^{mL<2pH^*yt0LA-LSBA^oMRr;M#LEm~e!|kc{h@HrQfY~_3 z&aSj;DSowH7{&}-iB+@QZ5}#Sd*Vzj1nD?;FB-;5{7OJ)6Y?gWm4I$kl}Q8kvFOv> z(*-@cLAXrg_WHQYI0S^!rCuQ$>(oqJ*4kqmL36uhyz6Tq%MpBg<-qPJO{j0G9N zexk#+?yK4_f!$QoM$cb?IG;O;i*Kj{|5%mPtN+^S@C%XDBEdK>@?w7AyKOI|2T@fk z?^L08@yk-LZcy+57}ftPA%WUvFvyR`ly41JraZqq`XnGuM3^o71Hlv{p)>)I@jO8; zB$)=hI-plP=e6RRi9e43+rQDNAiU!w8P|78UkJ0;Ck{*|Bt8L(o(Mk+^u4YRIqyqG z0zYB^Az#vCUJK3`3TX)z$=jVCA%OB$h7cAjm{KMy_2X4wZEGJ%M>izPl%5b{oqtezLtF>rKwEy4`fJ9f}QHr1%t?>7V;cWd@0RjMr%fTH26N*sS%*+)#SR z0M@!<$y!jXk9KY3^<}S33yO8sxVUx61O*6^6&p$e8BnpVA_#;4mUjGRfoec-ZPl(i z*}0~W@xZ1ExT1CO8#f-`VytQC_6EivxU>uaFId*an`{Tk`q~=Q9so1wokOxMGui}moHf>B2Mss7&W*Ml9=qwH{h4Fih5bbx zT(;bOWAw1eNZalY0Mos+F;~}PhykWJUL(G?SzmAgltR+p{VP0+&`rV|IU445DbOVqs=fagtlO zl7PMuTOa^D^@>#paC%oJ+z(CaytytBb%qrZeT$xORD}0c2V`x&L85HtwfJ4QYF;YUgsKgP3O9zxoWmKv`$I9$ytCM z_4;INh~AG4)>mVL^xv_8`VMS>ehXHo>%bzqxJ9kjkJV^te{IxHGts_k+D8@jR>=ju zl%uhp$|dTdgsKiLs+2aYyCUi)pIUU4S7TjLqt2-s?Ubr2m#9L@Fhg2*pm3!k76 z^ClN~FdpXSGjd@vbz;ha$j;Lu8;_BdXOApA3pI0Fm^js#krNp>j50atlnnNF`!g(^ zJ4T@>6t~ z?(-F{dS*gvMnkLiON$2VqkdnARLeT*jLK8e$;;SvKz;WLS;qTU#Uu4#+S^byr zJ7JI7M5AxLLMy|>dKi*h##B2 z|L_406a##&albOSEAWXZ9X&ufi;7RKj!`F+We!hpK<5c!uE?&DCOgIlFz`Rs%3krm O=l0uVfJ`3CtKbGC-+{#d diff --git a/doc/dist/inconsolata-latin-ext-700-normal-4MPBLFZC.woff2 b/doc/dist/inconsolata-latin-ext-700-normal-4MPBLFZC.woff2 deleted file mode 100644 index 8a20d54f18d011a61c005912388b1f72fcd237ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14908 zcmV-CI>W_xPew8T0RR9106IJX5&!@I0E3VK06EeC0RR9100000000000000000000 z0000Qf>IkG9DxJ|U_Vn-K~z8hhhzwWa0#Cj5eN!_xg>#~OACeu00A}vBm;~H1Rw>3 zP6r?ig*zL2auws4l_2f_+>v65WhBC8O;S&m{eQxNk}>uh-W~zStdvp}iA8Y7Se=r& zF)-$G9B7YFW}mLZzUGtL`E%`ew!eW$@(Y!`nxT@@xZ*$f{)nf?S~`YNVY`+_X%1)J zByRbJ5zdJZjX#k=!u5~tlx9dFfaa>Ki>%b&3f2foW)EnacMlj5?~8zipl@Vjp;$p# zi*#8mn?<=wSw*=_ad_J1yUl_J2Ym;3a8w$AVp9?ZA`0q(iiN0CQCHzI-2Nik<&X8R zDAxu5&##&1{-2%6l!z4)D3k!8P_3%10#?gVrsPp23s&_i1PKBXoFqX=g83Kvjj(@n zsVjHaB*SGKKnHZANC6;k0D%LfqDoWh0@OFxARZz95eGN110O_^L<0&UQSR@q ztq58SA_m)FnhefaiB0VA=oJ7Pb=+rrLO$C+JL~|+TC6S5bTqT@Q!PuDyLePw8I?ce0U zBv&_*Q&T_+2-4=@?cI9=Iw40_+u9M3W&PoQb^d!LU0bpwL+p_4Fh8KYPsr6de{P1k z(@Z#Zm~mM<_5VyY+nJpmY6y$(h|7`Z6ncni_^v5kI+weDW;r`MJK%B&m{>s6fyw|c z03>AtBo!#qHZDWXy2|e=S22^g%+rOGN{0}dHdW3=(Vks~RFsup@6LX?`ey%3@7bH| zCtT5ROAs#d$t|3MPG(zV!g+Bm`ktn7=dxX|MzRFduDh@>HN}V zr6$BKcnKS^P|SO#1oro;RbrW@ZZKrp!AM|1U%&45-+pO*U^VA9y(Zhb8c`7u5jl)t zwEf?yfDo8)`6nI+BcKuJf*4{7V!;Ap#TsIZf^c|3ya^z_f+3+oA<^O?i4q|xQXpw^ zAbG@)3RRFAO^_BHkO2lj1{n?+X%b|L>5!S`Ll#;BS#Awvz0HtqwnKJ04AD3VIqe+e zf*X)qZbR<64|(Vz!m=MgbTB-AqRNt?DE@JVcfKuc||y znX++9jTAgS69EE!9&)zM#H1-16nOn)XHq~jL$dq3A-TeNNQtoOW5uM^(2URu!bD+6 z255@m0Z50=xEMMn0ANKBF<60}kb$^-nZ^IfON14H>pLTCaRB2zr~ZIv zUZw%~R0RMO1_+`D0e}?(01jf$n#K+Uz&$HF8W912iJ63(l|!u>Rlxb~P|O)LgB3Wz zHO=%_zO$ubu;7=GN4XlI8B%G1R;pY3b(Yt>)A96YJo9;7Neg}9oA8r#CS6G`=}ijB zU^1LcCG*KLvWZlXL&%1=G>Cw>>z6w7`Cz2vLq!%e5gUB#4j?5rS$qG_R4kEjnp6ZEwJ!CaC-hS|Y zhs5O-*H+rW!;C^}Je>X|HXg?T$&>VoegC~pT& zRh|kYQmMqM&_n)vB_r!T1$rEW_$nZ+Km$JQ8;u}@oEAoX_eMI%M zl9sXQfHFf+WB{`CU`Un*XJJt0CdM{4(#Y&h$kphajE^!ko|$=>Wnr|%1z40nkU7Xc{)kp9KJJXm&AK0(PJr|$@E&5H*)ln_(PMw zg#94oJFyU&VnAEQ(4GlM(*=3@(2*$&%f|3*P0G!v^6_jSrj?B6MG(a$s2*BE=OZFim14h%4#xL~s*HQe`AbG;cvV zSSXId@kyF6p-Q>yaQ-ST*D#)Oo!r+dno+z)r}hyiSwBZ`PcY;NdMtK0k@}&r)*H6aaAp0z zB`&or^u16O12O#Omp7d9aNG#hx(sg7GRw%Sp{r!?s{qPff==glPe_-HaQ8gGJsg&0 z0t~CUn81>7EGJ_%K84bslWhHA$43hdRJUDeF%ayzf$|fGahXjvJrV9)7_AFS-sjfQiXSGn?N%aa zO9H=)BwctZDv<=CuUYU

    DD?!_feV3n2bp7iu_eL|n68f6Ld z>Z@MzKLSvM9|_iwLKT^m|6G)K7NzDX{$S?dqVeJ!dJ47!Ky)^MEkQ#X1p1;XP=O*>V0R9wV(yNA}W)#CRQ z?GHV*U#rM!i3&|td)}5}Vp|7CTC&Y!xRL;4yv9vKe{W`uXmXL4Je8#HYC(%=XyJ{{ zEVNyI*lv{(6)n4g$%_J-?}=QjFVi!JM&Nl4X67DW&Ub^tz$( z{b=Sm`9v%&y}QIP95NPJBNKh1v}}33re`t~UG4fyQF|p?bv5X`pAg{6D?Ex7wYrPN zb%UGUm3NA$8l*hs>-@nR;x6hc?@_GE=$Qh4+POPCXe5~%>*1=-tWGvZySWsy4{p2m zz@JXWaj_sdlp0jS6ns>HK_ihhckC5u9UTjNZa7khH7>dZ|9Pr+CH8|-J?bsSgV%c6V^z~&waRWrb8o2l7) z(zT#R7_|+Vpz(3@OBDrSAvkz)UsoA^N~e!tp(+kUi$iKETdJr-W{#rCU<86bME(Yd zS}c^DmA}nVxaHEqF?k~)cgNLCG4+N77!?ec>i{9ozgHx*{%QpVUck|2(yozWIAu{k zj36Cb!?=+^kpzW^MYkO|JziN53}uiXq|jqQ zkDTyc?*T(MhKQDD!aqea1?Z{Stmfv+tnJwVBvVd zY#e|n->g{o`#-NpM@R?q0vS{hdY3z?xl(Rvv?gM)2jZ9`KhH>S&Y?@_YPe)Dd%-&) zTKEzz#v6^M=VC3}V;O;IdL)cFE!7G?Ycw1L2KTuWm7QF4!i#3WIFZ&J)#CXA)C#%!TD5T|W}Q$?PT#BN2oc>>51wOH;;WH`|$U z7pDlHm{Y4yD3y`Jx}DiTivfc!uO<%t z5KSBbK(VsCRG87+X9BNWyQPNJi06BppwB#e7B;o3DDduuYLp|+w=VEl3PR&=cLkpO z^grC}?Mk(I-tql7>kq&}UJwQ3K{l$;WqNhbI6ae3prz!$^^UQ)D*LX?k4*@I>7Bph zR=L3^%c^%@1)nd>=}m;2mm*#cX~GK*RGux) z{tz2=Dt`uVCH4j|Qt+zE)0gh$&y>6zQSNrrV<*R@NK8~$-)O>q36MRMCKHblp zF*G3gjMHTLrf}7-G5@4dCyo4Z^>%;TQx*{GOrXecmET%D)MZ%Ycb2MSaQ;G$ECcup z0~fp+z69czRPIndp#&j12rH7dszHmkoR@Pb`2o~okz1QEVMVTbi=V((R*#Nd`xS7v z80S9u8&_jWhLaXVFWkK+wqECTmMvETW4|v#7M?{rG=$z*vzrlt*c^m3IRw2d22DRQ zx~K>|bJsF)l@*WQ9jF0h_Cg}7=9A{14LM61LBC*}$9pJ+q(XTzOZq{ypg=(_V1DI- zAPI0ydaYtdwhr7U~WnqjbZu@}Q4Qfdq#8Q+4Z{m0nhom&gDE$^17Uli7LrZIb~gN z{c@m45GZzdT?mX_$B(z~gwtGdh0IXXg(I3!|!uES5X+X2 zmz8wYY1-OOab)ZO)I0yb-c{BKIRt97Mzsctar=(-{~ACkDRn#pCVh4EJ?Fm8(hMi| zyvRc@iqLEJ0~kP|^}Tt(2%>rkHPxZspzMAEM^1{h1#y{t35`M0Y|t@o!<{L&ebDuQ zT%cDtCkPneoU4X2N`+j~a#icZuXWJzzk<;dg2LpEUP?L~gRI-3twA6b_AVaB?atq* zV1+*_>!Tgr_Ca+X=fs<^dRC#Dl9Xc;`kac$4uu~qu+p>f^H`Tc(9^W2-uT~|m;&}~ zh*nDT0U#I@l;_{(MgmCdk4@&G{Ew3bi7Jy^QsnrbQ&D|nT!R7U)csVy(9mp&&}kC0sl@-|(`_a)x{HM7<6iE$@AZ@O}1=Mzvm9FC17jl+s8%*!o;Utf1v_01)8JLPf>h$+t41%�#c@2U3#`>rMwF?6%z&ALOS3$_4zPHjx!@ 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 diff --git a/doc/dist/inconsolata-vietnamese-400-normal-IGQPHHJH.woff2 b/doc/dist/inconsolata-vietnamese-400-normal-IGQPHHJH.woff2 deleted file mode 100644 index ab70f18a843f16dfb1d3b54a2ea0442adadb29b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6836 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%0AweD$$Gt)CQ;s3M4>7q3!HjNDP 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 diff --git a/doc/dist/inconsolata-vietnamese-700-normal-LHEGSN35.woff2 b/doc/dist/inconsolata-vietnamese-700-normal-LHEGSN35.woff2 deleted file mode 100644 index a8140081e44d7ef2b1cd92a2dda930874c57fa73..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6944 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 diff --git a/doc/dist/lato-latin-300-normal-YUMVEFOL.woff2 b/doc/dist/lato-latin-300-normal-YUMVEFOL.woff2 deleted file mode 100644 index aad98a339043040c3bcb72f319e55a8f028562f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23236 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 diff --git a/doc/dist/lato-latin-700-normal-2XVSBPG4.woff2 b/doc/dist/lato-latin-700-normal-2XVSBPG4.woff2 deleted file mode 100644 index 11de83feaf0fb872c91fce89534fd4e2d8bbda28..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23040 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 diff --git a/doc/dist/lato-latin-ext-300-normal-VPGGJKJL.woff2 b/doc/dist/lato-latin-ext-300-normal-VPGGJKJL.woff2 deleted file mode 100644 index 486d3ecf0a97553e0ad751a183466d10bcb98167..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5624 zcmV0CIlb_g&GHf5Dan~ zB`pWU-S?0J-GOjb+H3A8q#Kk|jVMaurYHaZpA+a18I&35{C?Fykq`umK%kl!0y`#= zcXX$B5PfYVs3t}oFLvyL^IdtCyX1o7v&73>vv6PcVDGcld>v1wB`uLd;SDFveVrcC z=nh`*{)x|29h5H?Y~o2K4y3M({^?#lo`5uetNu%{>PoLV1KeT7t~`7{*VnmuY5bHS z&H#2-wHhE$uxx=q5*kgQ$Z={kkX!xj_8XqI`R}NMJ5nX=Lr>2_>|abW{v$T7VVENCm4BlH<&=cBKiTPH34vQRa6xj6~SqTZ1=CeYoKoS`2GxB zAh+`9_So2coVlz(0qsRysbd4n4mot>2ZE$Hbs4t~+eR%G=iY9E!*#8Ud}uG#eg*Jv z;JPWU7e9!65fBBs4HVq9pyxS6c|Je;8UPFCGB0Cc0NYZuPAwKEVAcD7YyYb|m=B34 z-uR(Hqf|<{_ddHj`%HGe`F!k)ctX6r(lOcd5~__u)5alm(fTW)C3yH+mePB_b$wdp zRi;}4L;$V;6NBo$tS7V&@%C92>hfDR|M$g15i9t+m*Sp z-T*v+hX<1Vg$^RXeBGv1B1NQ;ex8QSPmo}t#K^dL1~1>_tIj{<9-KTfIq)1<|ISL7 zp9KlZb|l>Vsi52=*l)dt6Q2WcBlN)cQ~Do@15}{(BGr!{7u(-RKU2oEAl+#V0qSt?A^0Jtzq>1-i;*9prC{cO zoqik~0fB@>L8YJj{}{)yERG8;UtWShCL@vb9AW z1P6(wl5oWR}Gu zyVW+E?35f-oYY+w-SQ~lRmi8P-{+MEB{Y;OsjQV$DACF>DzGYZHuDnD6EYAn7TY9| z)Y>wZ+o+I|g^HD$t;PnebZY3;GN@~`-Xyce7PeYvlU*x^Hcstb*1F}<#jBf7PrspT zfCT~!6a*M(aH}B%2@#5+t%4D(t>6rXX9Rl@jl{@=VkoNp(S*(g!*ERdVHulo7?<(v zi*EuVG?Ivk?L#6`qersjvxh>ICQzA7%`|q?nvUt2ff?;$GBdF_hSl+GcCwp;Iho52 zZu2lN@$uxhUBH4Y#KJ6Mo2bNiiJLBAtE2$tN|7|6j4iU3V|i9!MVpnZ%qpyElbY38 zgEZA^*{CfYExOuT-v$F2>N7HEY`uw1*^JHE!a7S^u{FD5*VfwDmh5cW^Wbo59PK#S zb9U(FSG$!v=kD19d$h`vJ+l|~%HFK>E+4p0_GN`{`(eNAk6kSH?*qtCY5o%#;D?8J zfOzs&kKddNkrd@yh@1-{e#xvuo@iRAR z0P^{cZI-TpMFC)Dd=N-?@LEH-KLW$kUW^OI3juv_mp4{+c9bioF_0hFAn}5R7^Z4e zdcrF4A`QKuEn@dnWsde2Y#XKr6H=3^6 z%VN&~Q((4Nt;r;pcu~0Km+TT)jx@2%Z$fUqEb*cai*Tzcvdma+^t@T1=YY}_C>CQX z&o5<0Wu;G;OvxBcEZVY7jUw3sPSCb+n9jtNl@D+&(>w2!RECQ^Z`OKTYfWWm^LqYn zj{z2DrMy_%rU;ccwqB^_tx$m)-l4@!fv@IDi5Fv7l#HvC0m#2h0w5$|;Jji6zyQES zKnVXt^nQyss{lD0AVbWof%1xjt|N(9Obh=uT4x!DfaK*gE}kT6#J$Fiy9s6 zPWje5hJGD#p1$?g5<2|g!2^K%x36EH6KN6s`1xD6?kz!s7Z=_{T=%^v5SPF{xQGtV zgE!|8*Mfs*=VtPpT<0)9eeVAK`-tn|!*`*<_m;@q^th4GJvDRlh&#X|0T9EGm&#ws zbi19yd-(Qoh=JM>SAb&-bP*@&97S9UUm!>Wkh^-Rd%f)B{0*8?Xz-zi&RJ@+nXaFL zP#u^Hj`ADF&iYTB4{UZHM^Pt$Xn+Sg1_Pa3$T>2CxMtq;DSm75t&AUiq7NZXw;Y8{ z#$VT;CLj>%AhtqFaq@`Uv%DbGszBjsAn)d0uX5*B(EtaqeYy=c#BpjzrVzw1aU8V| z^Mg<9g6ZCuUb+=~EWpe**0ZyITdvoy-v_vZ4qrR&c5s@;_XmtliZJ}daLW9#l=|HNXNlB1YwjN z;RQ?9^%*HV$}tK_Ehk2a=ITv_{j3xY;I_2TAYq`QPKu$tOiM%Vlg%q?*@E|v!R#jZ zk^-9-zXbLlTRbngy#EM*BjIa7S!>r=e?;mW3-yJLlxKsC&;4F^Zq9~I9jakmU3kV6)FexUxyN~CzJpM*ik#2T@%edAxP!MJjrfat+nGMnbRguD4owYf3XY}Ue z>N3T^+Pu{5^);i4s{6-7afT?pbyBUk;QC8!D zR#mbgqRwx%Wm4I(Eo0u^wPvH?&u5OfI)YKW5ly z+4%UD{X43T*JK;MT}i|0hE@(5^<;%ek!B3}EKC_GUDm`_h1Q2wMQUWyN=0^jyRm#w zTG{B%xnj$^hO#U#n?rLmEn)v*Ws)RmwnkDF+7Mb5p^-@|GEyZrZGku(70%eBfNY4Q5PoX`dv zG3j>|LIC3xyko%|K1C_W;KNccS|$UO0F=Cgk|us5ym*4MvlYn20vPXlvp zlOG(Fur?2sWg22@1?kC_;DYoxt1>gMd9?Ir=?QX!t8b(?zlKmruW`_K@|YUU>C)D+ z{-lx(#IDNS@;e)kg|_vVS%lmws))-=4<|oCz8=Rb%)6}}->i(gum$x)4E_ZD^R?wt)PwQ^oG9i zefpsPnsC(M z^n!0+H3ti?KEeC3Z<)vYq3%PT&xiFt@OaDpKNkOm6bUGRj;I0!3Ehoi%{8!fboj5q9ZB#SB2sqKnNq_nbNUKw9TUx4Mr;`k|F3}G^Tz9R|{utsyf=3$4i>Eq+t8H-0z7A1J?Q-_wom-R!6kNV_J= z=YRu%8^FI9`uVJpf;^aoAPYoso6=Coy7*YsjJK`ySo&463LL$>F=Z4ueHpsXR48qu zG}N0jVkMH^rXs-z?wht6G`qPt@_h-3nNcJ%Rzn;<<32$TdbyR&&xw&{vlIBI8$eG5 zWAt>k7|=VBin3ZhqXq+Z8+C%$>)!UYzyCh&ec7QzFLIvpqF2*mMIK)bVCsZ~uu2|- zdi{pD9e2%ZmVD)}DycuB9h?|-e|7-{?cS#o621IJioe*e8t|IUM$@>+v)&SP{K-DX z)iBXeT1tL^hS@PaF4k$*2uxFeX)tmD?}ZEBG`7LOXdt-3tukfEyve`1I59{_GNkTH z9Rahr62kUkl0rT%kAPtS>T&Yw?=>?i!x;vH!C){L3-sZcuT195m5o5m$LE35SQwLClktALd1SfK(qh|f zI5)ix)layqK9F_|MI3E7LZgeWd{8zc^OK&L34$O9A|iqy2qGr-M^r(V9mjE;)>?BM z$7!uo_XZ8*-tE>7g;D{)biPvj=4T6F(HtLHwp{k9s~LI$6Tc8m?k^VxYyhoLi&Ran zaDF87WP}hxV~l|iLSsyt-iQjS_U7H2Tel&G-mC6vSnU3`(VE_7s_By`#gnHuB(8_A zOB3c$`v3Qo!g7)%NwRI*mLy5CZ9DDWh#JT{r6%qn#zic4E)vhu=#eoK@(*SJE#$$v zRg=;v6a}Mxqpx@+UUdu+(Hm#>d|?O(-Z=Hb(6+fz6cS!-ac{}7nl*_bmH7A!w%wV! zFYXm@^OL;%E|vCbeT;-3Ou!HnX^YZw#(tPn@T6BlH4R^q8P7Nz4u`|xa5x+ehr{9U zg!e~O!INisFqoN{nZaN%m|0qH&_JG{{C^A_I(n|ZI%+-}&Q$w#qwNU8!uvHgj+ovw zv);Un=C*?Dbj(4gY%eYq2g+u7*{5voRqtSy_-}`SdMI4V|cUeE?J~sXJ z*s_l2$Hp;9l636Yv15|S-iR8=I({;-+Bm;+c{ECrB%{%2l$7dC71S}a!cJ$kIk(LI zm1#`Gn@_$chmuN!B#Ho(e(jl9T?>a>Uz;tt{Y9g@M)`&JD_-J zMmdwC2mk;?Q4|3rdLt^R0k7cz|1f>^lr`8c*6-26gsAZa*b9Ez!mOe;IAA##1A?!% zYdLa?z>D^3pxrL>LKam@ zn9$KbeBEq-&`D}e#Ss%9$MBp(7dK&hkGRb@2R}X0z_o2sAh5Ea3GSE3^hn0trL@Kl zz`7XI38fUd+U|ko2c6H9VWp&ZZMu;?M6lAJtm12q1D_eDmq*X)yhubKDHL#kPb`ch zKCJ1T{S4fC=XPvm*{v})PBFrP&m;g*#K>c!#S<@2O0Mp6ImP#Z12WtaDQ5XOx#s7# ztIbQ}wftJ|_<(uDhc&K3+bLGI6RGAT?qm=|Lc;+WB+JBF2RO~$xh&?m1M|v4YYekh z%B(mb(7u)ca7Bhn^wcMpX|9@WeptG%Q&~wR1vXb!EGT(sUd)w%g*93oer4ICrR6$O zTA<;8%Uq0-dJ8>Wpnhr_THc=q;%k10FMvAah(B>w$I9lxkC{{ zi&d7%KF?j|h@e>^#k&y4O8{`bwg8~L++N*;(g)dQeW>$NZOhUZo=7)~N`6U6j|RZ? zh7y2nQ`Po)%yQiq+q^5IPBBPS8IjhF)&js4dB3^lWW4)L+2n=U#8j^9#vC<4Q=Rvl zLhH^L0bBwAo`)>}Kf2%Ec3*X6WmA1r?b^fN$3weKU(h)0H=3G0x-Q*Mo6S#(O8%uAtE&_o`@34qJsp1 z5or@E5X1>c02RBtTzc@|>))kVIEp{${_t&pKR&&`!=6KK#5-1C{CL+vTLwT62|xgy z@5g$ednKo3dDj6TD!!=<7fIhrybZM802^ChyIb;sp*+vO{1tSkCmBmQIGol2Q`)Vt zC;+!w44m}0W{l6pyzXv#WZT97d0_-H9$Z6J1}t%s9pojh(G}>1zM=qN_H{1~-W}OA zrkfzZz#y0v<>7hh0|oL%Kmq}}>X1QY4~T_O2yB7)1+s;N?f)%gHAc5k_}Q_As!Yms zTAj_V26#}}2lW=NGRep9%{!Hv)R_p;G`!$LNRWX3Rd)4QJ-Zod}1 ztQof13snnh`_oEn)xABnw6@y?l?%ETnCCkh5pzv@kE5TJ5p&$-vuYY^e=a2bhFJ%3 z_CxT$T+MHbu@Sx^K2g2;?wl7D3l5VbO(zl+%~dOi790u1t3?9=vE;K S&~TTeYt5jdfCpaS$|L}V4$a&E diff --git a/doc/dist/lato-latin-ext-700-normal-Q2L5DVMW.woff2 b/doc/dist/lato-latin-ext-700-normal-Q2L5DVMW.woff2 deleted file mode 100644 index 2c8aaa866eee8bee09ee05a9809c2fda7cd87bd1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5368 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 diff --git a/doc/dist/merriweather-cyrillic-ext-300-italic-JP3ZEV2P.woff2 b/doc/dist/merriweather-cyrillic-ext-300-italic-JP3ZEV2P.woff2 deleted file mode 100644 index 0bc4aac166ffee04eb3e41210bd1f5e6231af70a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20308 zcmV(@K-Rx^Pew8T0RR9108dl^5dZ)H0IK8w08a7%0RR9100000000000000000000 z0000Qfm|CN9DytbU;u+i2!RR-nr#sX3WAO_f$S>_gDe06HUcCAhEfC|1%(y|k97=z zF&qDuC)hTPo?*9x`PjK^`6k>LZrC^oKQ`DJMX+%IpwO2h{{R1^q%wv!;Uq08ihjGN zvPnjP6$*i1n2aqWagPyoR8F*M!Wpy8{Y_tC+}0h!LZNt}`1%B&j%8PqO0L%cMrwCtlAyb$GJjGyma*P2QN|6p#ehEhd2x;QS%C+-Fk>W zBHF^OSDbt1VEbYGpW92m?M2@%ie7ZeogAUDPjY<-PygK|#k!16p>(ppAjF5)?Z3{A zDhYu=91A87{32g@UwoJq?V6pg+VytoZVAG*@Fx4foC5m#DA57hW;%=GKtO04K}wO3 zP!QpWBU@AiJLc52E?oFqyY=U~zIySIZu{83-;4U*c>e$Q``_H_ocr*~AmQ0V5%EkC z3zgAHT{SgIBL24>I0qq=nP1iaesA-%TmCK})5aq#iRjDC9W06=d76W1u z0QtV0HgHbX0S!GXo)+3tD$0b_jI!Z_02xqE3ER9Ilpb8vDQb1q=*(sg)y~*xEoJEB z3_W3gMukP)cG@0K3GBU2qelZcVeeWR4I(%pX$07dy&+%Xs;j%}x|I45Uw`+%|Np+O zckg||y-$KkBn4nXB0Gd2ah)oADlLr{>mf=U%2}_0viRk%JG=W4U{gtxy;7&Cl@0&M z85qpX=r`Tn3uuvBn2471sie*1`8)aHR+tGo*QDKFZC}n_--DR;h96UZbT_h}h#FVA z_J(D{sN5oIP1qU6sT6T(z|89L2%9hmzQX_iQ~7Hs7qBN(v8pEfp4Y)y*iF;sG%Dzr z7_UgdOZ`7n)AkP*FhNC}&Oyp2<&zvvPepSl$Iw;4pV40I2s$qT*zXh)pFfeV`_u8 zf14{p&Xc`kLrSZ$)1B8l*}Y3FAqhcIVCR7V;1rq^DxMt#Y7ppj0;74tM=(M~AWAgi zBqL2O@>QTp6>8O^Q4=)R9IdoLdmY)CK+sJm=xq}E>5qX1Vz6NtVI)QyjqxU6vdNfk z24-7^6}DiT9oS_T_SlPq4(TVHGARcr;QopvpUWRH|Pp6mgtcg<~)on2BrEOm}X$$*X$&$SQy_dqD6r@4PmF*`Tbkxal zC!9neg`OZ-e}jy<*~8rlfk?V;bSOY!}uA_-v|Ll3NqS_?*6|BLZo7)oQ#(X zWn#IckSkP`RtXpy6SB0n&e6LDZxier15;>@EU`7QrS{B`I}2Cot~|B3@wNUg&b z`=wsI%Rhl1ccNX?oa0&_zJ4(jg8npRm(>P;iEAPz$nfh3oFM;_JW#Y46iK&GR$MDs zMWW3uJ2FOv6XLTHcPfYxI(9|Y=qX)UVS+T{6(3?|(_|!m96*SVI-9W}3k*Qc(zGXe z?x-X+P>^oteRadqkb`*fm=^vX(1~X1PHn7okt=II*_+Q_b|NSLf1mdjr7C?eyoIyjIX71EMGpl#v?YWmRIttUs{A*!cL%<%^U^E)YXJX_w zGyz&(d6wgf3-O#+nvBSQ1WgUn(88AkE!uDZ)Wq??|D1IZ#1M^0AHh z7kk;?_nX@8zsKqbbJX2L5|fA|L`X`6WJE|#gcL+biwJ2GAsr&5OC&u2)-n}_ zqa&SyoW;GOb4bId`NEOvSlSBH0{;GbccaNCfjGK*yHqh$fCVPryvxTYm} z3N6vzS!=k$j*uh+h_O#7Odvf%+hat&p*ViZzl>xg2|9LT?N|-nDvH_7=RA51!lzBG zoINS#ri&6F%B*I2q`+EUe;mrD4K2$ExgaNqfqxuM8q!@oWe$r6cgm#2%EAzvm57`Z zJ(4nvYgEt)M$Ebl zrXlXacy#lYUM2Bjztmvd&|4JTP$=(s6r;8RHe}vnFe8#aH`eg6h5T{SHzu2uF9zTst8q~ zCaM$5Q{Sc-k{DGrp|P49#FE6S8k=gsJHZF=N$^GRP4GkTOZYw%SSeySl7>mMY$>)f zzn=xy^V|&@X9g4=l+puKosncrYPTefTgn#bBk9}%>D@wTxIAd%)uhPeR%CW7vbYsl zRe;R{>>jj(nlw4xnp|#8Znq|n3h;V>&%+8oPUE0h`bzBv5>0P6H+#!!ZuER9?cjre zh~f}S^EFq4tOlF~mp7n(4AA~Su0r6&_YP=uZz2k1D+be4iJGuHEX{C1tX|cFW)cKF)({6a{sRwn{4~tH)2-VDx00|zE-oQ{kxllE>ud&=;09I4-zd@D1I?j;iU(em{B=h)6wwm_=VdE(;hrw(vN&a0Tb&bZyZdK*6KAHPu=V1DF{cmo={3R(D7I;rmayEtwk1!N2hcGtt5RFr=&2t|5Xk9} z-@E1Ne_2OE*+Xfe{{I2eFpF|?a}ye%g)6F{i&8NZ+*l~KYP2ZPjAf^W;q#$$Nd&G-}EFZGYqQar&N6bu7xU*`YCy?3LIj5Z8Cxuord_Uq@X7 zG}1zb{@n_;w?#giWrdoh{^f>sh;eeTOjO*p_UByN z#8yCYBhXLqbQmK&tJe9y{Z>tA!W3^&wRjKo7gcZskACicYUKj{Z)VpF$6MshJ*i4M z8~(CFgHl#43ZyzjA4brpde{?`SDbvaRsOyiJmQ;>Wy_?u4!p4NMY?N_`CwZe|F63abxmcvh}Qn8*m=M8b+zgHbhnR*D`6qF&u8U`zf?odz*R+M%vhpv{JCq6MFt zEDzIDJxkgIhoy)aMa8r@AVIf(JY|Ke_^#ND&QIpf0G+bt%mC$xV^DGC=+*y=u}b9D zM3IPxt#M|D|7@t`E~7XWvuz3DDlq$O9FF!qONBC1;!*rP@}I%AhQAJ{kMC(#3DU84 zWgfg(6&yq>-%B*gn&aDBPSrSL!ax-RQR&znXp{rK6R;vemg}p`B&6pl(%nb=-tfo< zlpf`c1`DT#nJviz2_Ed_ij6qY*=3qVPqu3WEgHGbcaR!zugwYy%;2%ZgT)XUnT}-+N&hk65=MGF` zHWRrQ-k^lI@IWT>!f*8;JECWufm#Ar+4|(gd;E!)Mc8y>sHnKUPAi6uxdGiySsMIV zW(t{-ds)s@=EUgdIy^IRih5-{=|x*HWnCF0PjmY$TRm+zy&HWC4Lx9@;g?CfFy~{~ z2cqR>Rad++i(1Y%3B9r_`vtG&YiDg<)Jqaj*jh@ZJF0FJ4o>BeEX>ZTgP_J zYIViG>Dp3(4}tdN8NW2yy40~wr!*}*f7&z+y^^|WUQ=te{kWW|rZGGjIz>-ErE6?9 zjD|2g#8mObXq%Pya@d#-m|59kmD?lcAKa0OTXI{qZFjWkp&x5I^gyiyy9%?lUp_3R ztkXiL+A92}k8a*6mkHboxU-k>&8X`!sm4 zZ2tID$6M!6OiQ@T_E&LM^N5+5TRoO`mkSt2s<5Af3lpJDSbJDyhL$Os%pjQIrqM|! zk)}mPvhn9XZSIE5m^|TNz`!AM0#86@tbuZJ-c@ePi;+L{tgctv7S zlbT{#xWR>pU|SLuug`q;sUok(pi_Wip3#76-9(XJb*@lRl{41(q6%aE#5~v-fxU?w z_PuTAeu#_;!9I^Nv~WL!OfiATj5l{vPT^M!)^a_FG>i5c>8y7 zwIz3}g2d`_(#Vya-2$9ka+MBAaoj`c?N$*K^q=;oEre5d3P4ML<1kq}v1hj`rSfZ4 zJz0chWS;sD#WOjDF2=bin#H1y9UIuGVjx1BqS_ijmf~o|hw_*#Cfi?-omEcyzjNRC z{c?A#Z*vbF5t_VAXao)24oJ$0E7M1J^UQ-XYfNP7-BWL-%E@_Ydu#a~6j4EI;$xOj ziBwSHR}7A4hzi~%^zJZKWjL6riDiJI1}85)_&M<%_-YU_OfBI6kF|$K8F!yDJgibp zne404bQq{2FSD#j*;xOaxEIG*MhJp)cJv^|I(8(@axyi`_qDyVI0PP-^mKw+v-7WD z;H)hRw!w7-&6g4*Wa+r0<+9vLiV{cAX){kiUy|8Dcq{cPK5GmF+f4or7FHLQS*GkL zsVDx%;kiC5GI$9gGd|L}^ayb}jr8x~y^B-w7#~kvT&N$%KX`sY`u%P!kJ}C!N7Uva z3;wygGNozasF!d;OE1h@ISl465|t0hta9P%g5V1Co#o*wTwjdCv?|{*10bTW|OuQVVfSNF!Fv$a{Q9Y zmT(Z#o`c*SPv~Z(b3zNi!`fM3iwI~)PA$m$Gbu&=D3vW9K#9`nCeS%v@_O0foRygY z=eQN5&(e*cYa9aL{Ofl+y^^(|G5`D1{dLYxk9;aJ7JP48Z`391u2UcCSX4dj)pyoa z9_m;e-0CY*Znjg{#yAXN_~xW0pLlg}Eco7ZZ=I{dCs`XFu)VfoFaRKIY>4`QI1RT1 zKH(sVkS<^Q;?Uo0Dkk2YMA=YfmUfeTBD^H}$#X-|So?wjF4ES2IpGV%W24>+n>ok+(cF-X@Z$ymC#}BsdHKOuj#EN4*R>*-%5`1_3;|XtgC#n=&dSr4r3t>vq` z(bjm5&C2id_YATfCLue-{4-IaZ-|Q5>i4)L(fSuk^6U(T_PIqJ!K@FY*=f&dRxc}`-B_-ZMk*qIO>Y-+z~Mu2Up8SlNdyO}O6 z$~@^4iJb1<=vw|q!MvVz=ILVyYiWMJ4C$}4{Z55U4%v$c z%_-R=0V*R>oX~?nMg*sf*FUGqq%=%0ZO&4Z1|4Jzexw(7xWj@LYxMgCu3oG{&?Va~ ziw}1O4Lj$@oRNn9#MXomymvvp3l_LToE3(krdlO;1v$&~;fmVIqD{vJQb>t!2h)F| zmh$MpaZib0iGO}mCWF7!Uc>L_>*G<;l))x;74hA&CHw~U3y+l{N~w>@4y)diOxr5I zOF~f4MBM4%lb0dq(vQh%f~N1DeuFk8 z^ChuT82sZ90Pt>~Te~tRcSt3(vwvK$F<9Xh#DK$Zo=Vz&UOK=|5%Iz{(Vhx2k`{0@8mJ89^ro zee1y^YdN(#J*ixW!~z76`A{Mg)(X<)$P|>V-fDl)=U6o2rY?F;z)D9cGB7FcNUCss z*f%ntamr@D$>lw%(HArSIpDP)o?$tFw(iUpZtDwOFaV#Cg`QwJ%gbY=VxLbF&QXxh zYY_4onGuOyxPYOC^sFF$s!(hKWH$p4;2gJs^grn#uz)V0?NPM#1l=x6@1k-SA?8g6 zJLd6@)&R0wG8a%lzv>0r-*8{QRvhkVs!{v3cIhOubnD2w=DbNQS{xj+Lu+d1H-B)f zw}n0WtBstnn#D#`uXM6?gHHP49FbP^!pde+ku>1b<^|W-o|3 zusm~tg&!@irMVbv3z%_BWC9s1V}B9AdZXg{-AJKYmC z3tL>eb!pXWOqs90wkAD;;cl8UFF56XG^cu_ThkiQY)_6=Sh8-tHvb7O=c9=X58{xs zjEg%VY+8(Bnq{?LD85~NQ47fagyTTuJMx<1)$6AVvuE)?O6HvUDydNZaq*W0%v~T| zEpmbkrVkZj3O%4fcYC5GlUeVm3DiU9M*5wo2X6bKyz)>`ur*>SgLUjR70q;7Cn!o6 zIYGx#4`_H3e@imw#8*jdgTvGQP7=vU9T>ZimFgj3QVN`IdE4Zz-~h8U*grO9h@Gto zL8h-&N$^-}Y}w*g+(j0R_!ym7(58y>y#FfS64UdxjtOnmG*mKe5yHKT?erg9C@Pzo z;5AlzpYH(SuV54MsqH@LEN?9I=0ZQe(F)h&Sms!LNY>rflnsq zh8*(c2lW@py!mYvu_6y$qj=*y9G}4Qif^?%Q~L0y-+q7?uNgZzm3P=Ry#s3GdA?$6 zPP9rP)&_JKbg$eyM|eS6_}fDG7K-BC&QI7U5@=^4bzo|au&kPjP1#L%fDB_QxyrBV4YjTFYZO{kv7CKP3 zVz!Sn%YzLi`x}f($iVo0l38TKm~7#w>3(ui3)_`O?H|60?Lu7!w0NZQ0oEBWp6 zFL4OrS#=_fx9?T@4N>-u-KhsorFmB^mPZqF*XxAZR68D(e1Yymj*(s``a#i;A`S9S z<3^#pschzso+^bWvVM9J$a!B2A$)J6WWi6Ip1F< zd@nq@Ai=Su-@e$6l--s2kd6hT36ML5zG{OIQI`UxegV376+cYB!xzg(#V``x$3=H$ z^!Z?>>T^^NzQs>-GPck)I2*dJ(G6@8?LzIZhJ%umb2_K1qfU=F&~i%$v3)h7!228}DcNc%-$7=Y@h?uclO> zY}CR_(`&~JKTT?JM`!S^@J#rT)P(ANcEV?0zRc=EJ#aVPBPkmd611GCU- zlguGq*I)5PkO?WT@tC(uI>Lqeto3vU=$iZlaAP(@S@H8KTBZ%>o~t2qZ5zt|PG6U% zZ$`-oZ~$;kSddBmwkY6rA>ey54I{jtac?isHF;P<^x(5-^zpA(MK0zk&N8*~?G zw-q=VOkT5n;2CXgi3fM^xjn4C+=O`vJMOaJI=LWRs&X2P30ZGDuRhi4nH?qQgNKY* z&XRcd%-^F)91X7XR5V$2lR#+i^Rmpu(dvzERigu1gQ(go29SO42-6Sz4Ap{;r4i8o zZ6y1+{*mOIoRt6a!!M5(4}K0PdaW$0mmkokyczJmC8skFBk%s4!=kOp+kEN~d|Zi6 z=?sROa&Bqy|8^vU&BNcmN%GAP$ZztZ;Hm4(&8-`^N*rKDvOhnvzesnsZe3CE@j{fY z(SG|Gv1801G3t93RC3&9);6*0QHBgK+2RmZBSEx^j2r@khWiBPV zMl|-E@Lf5GKJxI^TDsxplmVM?E;L=RFg zA8|Q776L>4|0jSueZ2HPMzC_dg~qMGd6(yt`CLEUB)x}T?G)cEVL~7XsBRnUjuPZN z4Zqyz2dtR+%JdObYkPCR=62c$O#I#&L*J%`{)($htbA;aH&-@+!NAa>ad);Yp3R+X8(tK8LObVrF*JM>Ka`=gL zu@A6z;wjMzW%-s$o?N$LopsS7rkMek|CPRhv;Z6zjEe~JtqQpu%CDQv7R(p~z%1Es zKc3y@-RZ-$b{;RjiiM>kf6hL5K>PkpuVL&H*C@-o=p|DooJ6@12I-Hm?U~<8H$7w0 z8tr6l$`V2U7eeK_$~tLftm}~JB&}*Z=0$%G;p$^EI6rP$vTZd3zloQ&=zboOCRjn_WwnY8b!^R>33WgZXL#mIX9<&-`{1z&0Gsb`cA<|6HR$OR}9G(T!7<2q?(;fLDy z)OkG!?_YtYuMnV^S!wExr<2FB9^11Y&%4o;Iei9Zxxy8)a=QZpbqO|AX&Dsg#_u;`yO}asG3FpGT8x{rY>H8sr8kO9@`4%>|k3P~3Khh1_?6jvzbuP@cKbsMxsx7Wj1CH&`+rCg=90KC8l?{Sqo( zG{^n3&f7Si9*d;)B;tSzATH{O>ge0SOeY63-*Ereeydzo2H6;d?wupHJg!RNG>B9! zod(DdsB+R|Qqn@1@KYwQ-PI~+wW)u49B(FYP-6v84a;wei^l)epRLJ(rZcqCgyMEB zb@ioOy%5fK762Xw;L6v-BHhhHG;O5ilM$}M683StC$7AhpZ3QUFGu5JSy%6Sech$` zdtXVa-XW`>+YvPEnjd%8Gz_$d4SN>Eot>*xRTcWs2sTXkiAuTEfLn;8-9V!ME{jNU z30`%$qB7Wv^V}}ZBIxdQVYOf z<8Wf>8{C|Iti<613GmVStPQlUjL!@0vbb_?Ln!0cw=rQZzuFr1ge}{aRJroAMHMkk z*|5tjR)2G}v9^%kGF3d(po~M=``AgthY~EvgB_m?4U#dgD1pJ_DmueQ9BV{hi}cqR2e1|%}Zi%VVEB6F_(oTU)6QjDF{_Mepw-7ik>&l&zC z>zKS9)e97ocksBujI8b@Q60=3TXpS| zzft55j5`A7-hPQXfmsl78oZ#U)~`kwgjSA5278X@tklHRGc*Uuyn=L_?&$!6wN9Az zR&wq=f9+EvFZrul8rGs&gB6~nV(YfQ{E#F${w;Ia^t4kdB9g#x_eys)gZ`LZUXm zQe0uN>s?rvLm7Atr~{3?)y@j?^td?gZHtq6BHdvMdVB|#0jti1csTWRkaQ$MP0dD$M5(us zktR>81lLvwl2E9fxKpip;VM@KW=0IdSh+7WG(iSDEpGpU6--ib#Fd-=9JfdWpVA8> zuuly-^By~MZ|(#mti)#vdF`%{piP&rOugT@cU!>abx5K&gL;KCaqRo&dkSCTrcp_l z2jbI4S9xaE3=PQ>yw~{}bO-_Pp6pu~%FXTU(}mFixus-CaTBE8pDl~eGrQ-6`fLj= zyL@wIwf&G1SDkJ#Z6 zdK3#s&(YJ80@NpP-R61h(iN_ZEo|K8*ZT`{;L@nJ#X>f^mxJoUIW!d(HU#=RABGvZ zu&wl6+rh&5k>_r6o73h>IK_|cHK?=-Tq zwJwm5viaI~2oOqtX(`|8u9U~-3TzPga|SLTnn4mbzvKUb7@rFo>&s?3|JJro#&OA> z&Qgl_8lw}86L#|GDK@zHy5QzKG*w)$d!hx~Q;GZD&Q!NX19ylGfsTU$1od+YA}Q-r zN*5sCSFL3;bE(Z+)YMK)DF!vMJEOp;c+a$KJrU*UBV_Jq|L9i79_vRSHU0B#a9dsA z*u&CbN467{b0aZLk~*bYd!mow8>B6v?=3u6+;F*-g+L_X1M&8$e4FS^a!+3Xl)qtb zMF;bO2U?@aZ+ieB_NaT`bE+*bEU9;Fooi@JDz;Klqbdq(Z~oJRO_Jh0`(`gqewYhe zyeh4ucLK7}|K`@!4wOLk5?OVbXtX@*vy~q|{V9=R!nV=Pv$!1yQqkY_T>={U+Rz|2 zz!e#2MB-J+P&I+7;fVpD<-=uUq$kmjp@SSvftk*$S^2;Bi|0q#nd5m}Yu16~F-M-b z(q1m&bhYk(=rIWsvzT}I?B&!KKi1$=m*c>3Gn?jINJun3MudYbi&_c8T3pkceT$z1 z1pjjivpC#i`bQ&oL18YRlgj%AQ))6R6$*!pXipUm)h5j7wrxA`JB-xj?JK(fxg7Hg zHT&#JY!1JlddpUZ4^NukNTP*H=F%lkL&rLdFmFM;in)2SM;zUU)c1QdXXq>O;)0utXg zt>;`rwMM|;Dqj8Er!OhVE5(uu4`7=9+eN+ng4N})QL_MBy8HaVMrS`XvD;%?L8r3D zAX)5>I-`)xX+c^$IEEr$L?3J}E{nGta%mpDGelV%Eo z9GTLCm^K05BfMa?nv7KGcqV=kD>D7`S${DFQo41p#-wWWe9!GHG}QIjbx_D*OdgRy zypl3gBUdA^;Z*3U;*)Nq;(3|GT!UgTMhCAE;Q1RMt{ApYJNK z7u0?(QPO-3U;FCx5Qn6R1KS$pv$!dEe8fldJHUF;e4v|l6j24KdJ+;Zg|p<_60%+P zg(e0cVd2H;JVX*G+uQv$b1dsP?JLBG-$Mvxd}ja6VM3W1k0`j&YE2}ob%E~DHDRRhgVsE?z+zEqpAK`D=~&R0Bx?65*5LfgY|*CsvZ zOH7y9Ds}R2%f)tl0W~a7UBCFfttOzN*>5dlGj$ox1&bb7`475EPfK9|ch)MlQfGxV zQs%^KA05_V1a+Ft(}YX{nYf&gMWkMIw@Icvokd9nP3LcQj+%h#54NWCEs#(Vm%bVO zZb=%we(O070v(?k{bw}y z41f}TzKG8_5N^g6U6Rb<{37lCZA2i6Ok6=k5-1lZONJ_%BQ7^5=OdV(iY3@u;Rjhi zh%u|hR;|+#RNBHE@uwey)w4$4$7e6Aj*1i@GF&nR0fiMntiWeXUi?J?#59AM_Xnl| z&5B$6>Ug8U!!Dj1KVMc7MdFr6^ROruh6Sn=O&&MpuE$*g6p!m%tO53*40_BJr%?oo z*`rdJh8H7+?C}ay;9x|C3q@+t;6WjIl;pKIMO{VV6idZS${u77^iyA{%!c^6%6_mr zxX|c=s+^S83iz&+JlNnnQ{{oC*ckRCN{(Dy=AH36t9H2r%#|+TuH6(2XC)*XdH$KA zD9(nXsBS7k%4%#N(0g@9eN;+!W#siQI4yZ*{#pNx?xf0pqbFO^AE&UZC{BtCv8Bt? zRblsf?c%^m14KRU{acKKCjgk*Bjx$P9q8n|-~_bEIV2O^b2tSKUQ*!guNz@G=4u}W z=y34u>W!^TJw!8S2%bdK-xA7)5-6dheqIPG{tog6Ie?+e#D#YW>+f0Y3D-PGt0v-q zoyjqgH!Xag0ch7OC;lAIgFm%-Z(a!PybR1Irub)k&KVA%$rLnk*{rsW>xiswBo9UP z_soY4$1{Zf2(|k2l2F-p(J{X4fYGDu(@QmAZOt$o!>7@yz3IzVZL=Z;m(Mf2FK!A75HryTe*^vADr<1_keUy zPM#e0PIL)XuJJvxKh!TL%!9)o59<8M8d5H=q=;&{M|pgT1^kVI8VW*afC%vm0B()= zc>!r_*e>E!+D>yb*;yW4k-~`7?Yr!xq;aE@TnFi{471i>s%EcK-LV6LaiD1 z!KM2P}w%78=a}y(D zn)T`Qs@$PABv}B&2_M*`uFUU0un?_Drfi?M#tcGPMA$E zL*H)e3Bvvx&~E*5d$~zFe(?b2^AUj7Bxxj)w{lYv2Zc)l0z7Xwh**1vzFo{w9zS^` z_JUju%t+qD;bA@~I@IiHk49KV51UN^Xv~MIOCC8?a*VNiSlKBin~8PmHfmDq<)n3v z)y##jdS`k#;em4vs7U7^kDm|wx5tO$B=zzI?XOi@V+7m_S z(m25B`22KxX?ee^t0+J<4?dHd*Y*izR`lxwtFfd5x`1b59nXPhT{4qA4g)h^7vF-8 z1lAyc6Yf~#h%-%U$Mag#q%(yycG81fC$N2k%Q|#HWU_@uU5JTtC)H(kfKld(+j2RJ z++?VfG(-8cE%hcisvNc&o>KAgd@* zOOJwE_y(Oj=(7>0hnM6KLwB+IfWa>&);TZcQ2E*&m*h77L$00s65U{aFNzL(CfY3k zb%e3(BM%C0qqXog8-rda8N+$f=%feL$1UAP*0S^Vu$Lio81MXHX@L$~Ppr;AfY^RP zA8-Jp$5yRi4Q)cr9Tou=^Jt361@5it{bJ^M{1}nZ$rN0^r_ClB6;s*3$gteVq83Od z4^e|#6-GdFI^LVSb+bNfs$56H=FZg3T|w*#64eYb%>q`GJ4?rPePfO*ohyW8C(`ry zeWXCaw-w4tQi^Gg0N}x6dW!k{z0cV*KVIu{%9xYbHsxESvY`t~VgSH8Yy*Mf4W`f! zE;eP`ltZ7G8N=M)($o6oG2QZq5#u@~SPKYvt*Ajm-J^U0{!?wM6x{~yN$Fh9$HV&@ z(!_J5jd5}uVLc_yIe5<)9=)7SP{Lz$5BXA8A7Hv5(nEI(SLZt_c(+p5n(=tvJt5r- z(NH}-#y7&KA+4MG0M7XOw7R=UEQ|TDI_j@GVZTc{E;uI&Fwv$ET=}3V!clQEB`uh0 zFJz;4s;guUz}y8fx0qajAt($O4T{~#j$BNc7S8v(Qb;=xBctTdgEdAHx6u0~C6bEi zk`C^Qw>|?-!h)#mJFi=0<|~2wv@n9`yM|BoGQ%kqj#pwI)Ro`^v9zpXMpiH>M03vSY;D;~7A}5-W6x-lMLy&P^muzqFhy)00 z0BXO$n{m5?sg=|eOh*MLi!8c35$X@`*UKKMasqM1cvFY7q$Bt$O6L@TOFb9qYc{K@ zaO{IUBP1zr9p$4MnEMO@%*qmQEg2;zGt-Of&xG)ksLaChPH1gP!0U)G%v2Vl3n05j z=b=W%`I_f`RO8ypRvLufp!D|W8FpLdWa24Al6@Ny(TD$iY zJc-U$CF1qKrsP~rcJ@R~{E*TL^Ow2Rn8Zfpg!V>e3E6kY3$i*4$m+F*t(xxp$JUFs z%e%X#?5AjNH9T!{<@yZ5c*m1ig~Y+GkdWmx3s9~yUrJ+|AuZp)*ZHsJvpR>Q{58e? z9GLDmbmpWEL6vQaE-fq>vX&@YM6JqUHpi=NfhwC!PNuj)k64gpgRKm(IPO@0_0!{h z44>dIxtd(2g=gid6B0Xk(U#*CDc|MTA&Ulp3-}!jnQjE0vtz}iZmF>EQLc-znu$)7 zgZchO-bZQN2`s|jC$xC<81zACQIx!g88oxk?+Zk+0jH0-kN@Q@j|IDO9EKIp9lJy{ zwH>uUmdbe>Fv%qC;SRgN%!?||UZ0i*mA%n#0%j%ZEGWFl+%$)_=|M@HtcE4qX=xh- z>spK*i|6lIgR29V*TVF?W=OF@_bgxpU_Vt>r8NyFSA#x7uQ|Xq~pBP7v7CV{$ zOj``>8pBh8Zsb=Efn_ax5zz;(P&C{GIb=eOz9(ejtuEhs!=`a~s8DB{+Eu^Dj@Yqw zJqQ`KA@gJnhfzSs<}9?EnquPbPufZCKV~&f1nlJkggru8<8aZ7tSHo~pn}@eYe4hP zXGf1?7f#7`Z1x@40w7m(8!*dLV{2+xW3MUA>9*gRrN;Aa+35T`K3vRduWN%f`Lujo z#dy}aOw7FV>)=5JZ#BQ15CR&(qBo?`{ZasS+NuSwNSYb|t$e?YY6#p{J1rhKjVidj zJ8@J4{98B279iZ{w@f73**1x-aLbe-U6W1ipzK{%l2|3Y16+UfG1?Tev^gsivS!Oz zy8!XFQ2>Ko6UGEZjg=g}yfcOXKHKqO5`Wwiq=w7QyL-^g1cr-?^pZUSqg#)Py2jSS zB3ciccLZJsfD?}Mdn+AW_F($%`^q8a9@#0lC&(u0G3O15u?fZnb(0O$n1T+C`xioIdP8Qb?3e<8K3} z0V@yG@N!dXq==R=^9F9KnaL$Go2X|EfK$P9E3^0xc$wBJfJ=Q;4he!uie-!Sg&>t5 zTCp`O^FJ=U@{DR=|Mq&Wavt!Ep|;CerU`fi#M3RA&1&-*Na2$vRan1TB3jPP z<%7jUtuE~pV4UPYD}_X8Czl|^WUiS@pisYEMQ*Fap4-NGHlUtuvJFV(X$}pMVI+bT zBSj%T*u;8HV862H^K@_ zOB{RCbPMUMxf@Ph*w%*RbzPfY>P+oKhN+eM4cDl1X4^sj#8x>_WXhE=*Q1QEJSC_H z-t?@}RPFxoOjRaQYhII5ro|6Cp{3s+QP}qgFqtGC)H?A(Ygc>D^XNCpq5WOm%7}UD z?ebME_eZI@+B?Or@_TgBR%5NsX`}QfpR-WQ3cMn~xZ9kgwYcX`9vn~n;Z|oKFeUVk z#%P~OEW$Q7VO1&M+_uo**z!SEL~Iq@;y%u`(o&}91b<{4xjpWQxMFgwb`a9K6+tE0 z9Mv7~1WK_v&N?1Gj{OZ)bO9>xRUhnUK=@E?grEf)I={fL z+m#-dkGJQ(g+$n|zdL^Lp2o35Noy1 zw`rgweC<+*-hsj~ARiK3;2H z;@G|8_1kC0`j1bw0Mqu+S$!qda?%NL7Ld8g2VPJiBplU6>wWz2{PuP|?oYnq%Nrcb zPe)f46B^rMgHebsId7g$s~e78{OMjV?;%cyG!{^=i+$ zA}31_l~F-#I?vvX$ma1{5HLjBF#>fMHOp=5r-=EU`49blMeL~K{H(4xQ(a?RdHDsx zkFEB*qThS0~L>4n7gKqM?^A*;O!4D-FvVLE+wczLF|chSYnCbzU%KHlBZ zv<`b=rOy?72?Z5sD87i12c~zB3TvP3?#WL=-UZx) z6JZL?tPRc{w7U8mJ||;587_u@t8Mt;T?UjZ7y^wri0$6oDnj4b{YEeAg!Ip5K z+1}*uP5c|NXd18;vFE`w%XU;UDn$0dlNWm3ntL*%%`;=7gOU3ZBddd^;2j=|i9aCG zF|F}HJ!^YnF`S*W+fM8ARO$T*G(OdS2E@NTc)?E0e8A|&P2_+B$4Yp zrT7~B{}*c<&F?p{$<`#~^_eo&B4E%>|OyoroB-4Tp~L#1}O|k zP~5pfw^DQ+RoJ?M%-KWE;UP&`CH=^7<4RGL%}O`jMMK%VeIWBlgXq|IWUa;HSq$vC z-n4?C$;qBXbB@`5z3NBLvM(rO-onWLmwTm(S5Fo3u_OgW=XZSH)T)8R;NXtjY>Nv zj|)!9BsIh!lqH@o=P(*?&J(nkiZ#rNy}I&EH0=v%r#Y)0*V5l;Ij$p^BJ}#TVy!7n;EJ9A-$9!m5+=dN;80sg*J(`~)0e}5;+@@og`P>%E1N?63 zLJv&gH+$X|YNyyY912rX6At<(B&AX%>z`Tl@@|`s7LSFEGkM)0WnC4Dn2B-*47piS z_vjo?lvg?fn&1@fcAY-T!eP+t|7^gGh2nStQLHn3uZ%|UDh{SpsyqsGJcja?!TZ%n z$^)IFzSo5wD=(wGva1+lwj)H7qmfo5sGGN*xmG76J@)e zIbM7hjFV2_#;9yNx2L3!I*Hyqb(f9|dLhkw7k$+?%S6c@Dg$%=7KsT751#kgnP(;y z&S*3$f`C8O6Ag^7;?a~rh_?Wk!TWbGY!dx7dQjg_#S$(4nR5~3V!n=C{#y2l`Q zAYe1u0hFaNF!LtdmV-AOF8A;6+l$Zb^8i;;dSr|%Q{_Ivxx}s9XE_(#t`*M{1O#s% zyb)u*j%^x|Cw}l0QQvE8Ryi1#7tbP&PpvcS<2w}5qlbIlP7+SMTGn{-oUG+abIGh7 zA)a+Gw%&nRV;Axy{-|h^J1q8_7&zi&vAovRa7WO>8R*8I=)DK;m?6T#$ z241&Hr3uZk=jIY$#;0A#BlugZfZZQ|6)!MFbIx7RV|wsAMOpej44MbeGYuV7At8lh zk2og~02D*6H9wgRR?+|EY0OIiuJ39eTW!4CvG>3Klccgn6f)2bBxJuz#yE+v(PrHu zB^Xz@9O&wp(1!l*T$fJhqn_UzQ_Zw{Wi4Y)gK?yYLzW543ZdysGdi-O3EUG)82N({|^#=>Kh@KiV`h`2VOVAZ)I^G3U>Pz8l4!XzRlyEF)9xcqwNYpSi70p7` z=-qrHZv9y-$yv^$qM!K~yRk=^k|Z!w!{~PEaxF8hRlJ7Y^}K9N>80d6Tn88f`yGGF zqj|Ct!dTt>7ngd^oGF$t>iTm8Ede-)*LHw-(1uLX{!46<*P7Bb}9&$NzYU-Dt&aOr!g!_$YRO^m|l zj+>Dp-&H4C=J_+ZjA#y~6EDazU2`~@I(A2Ys(byl?lMhB?F%iarm9Vw$%lUFN(l*O zoTV)$hnH%YrZh#JZ0QopDSdlDSBht(se)$X-NDj^2E?UgHQ7z}lI`QK;x!2wLuhj! zvoQ#OYpTi6iUbtFQjGzO-_Z_>Amp!et_OrQ1Bim?R`(^)6y2AC!}om|q}sSIi$MMN zmB3ZgeWmahtXcLUprx*lJv)lzm#(vmCOT^sV%G*=UD(!ShXh-coXe9cTaIQrqq2v? zhH`1y82ZQ_(t<5B1{>h*R+=b9u-N@u2kr3!`SRy4@KDI_@GwpOOQRGimV_6j)XeJY zYDm&A_#(X!J;gc$`3n$wN-@!~JTvASVF#@P(u6!t&<#O#V3$!bgrd~t$QFl%6n4|t z*rb^45=;rSn`y6zIBcWUah#v%K_hRx9?U{sVM4levb({ir=$kOQi{1yX=liBs^hDE zs^W_R;!hB_3AB7%145Ca-x?F?G-Xib?-eMx7(|MeY@rU)q{~vMSh-3sLrYdvO*c%- zc3jW59k=57)u2`n8_g(A(kw4p?M}B>_6Nh!cru;M7t7Vtdb8c_562VLKw6#N02@ta zi`8a#I9+a!*XIueL*c4Obxm!wE*7tEXl!b3X>Duo=Fw(u7#x~AJa1%lZ2p3U zATR_9gCmeAGzN>q6Nn@-g-W9{m@GDj%i{}#BC$j&lPi=ewMMJc8;mBi#cH!VoUT|L ze|r*?$6Kvw1AmL)##S$KjYqVoB<2vEMp5Y$l1YRK<;7$jM9%h7YARMrsRb&8iCHX1 zmsc#-JClnkmk^zO5Me@jF>}BeV~jD@T5GM1-Spf65hj#ZaJoAnRid5&MY1Sho8LW! z9{<0P(E)jkO`W)1_0}4FWwBMmTOh?5jMT<}DW+V4wl1ceO3)TlE`e)101+mXHwRoy zxdd%pOt}PYT}-(IZCy;c1Z`amdca(ew#U8f;R;K1hO~oE6ln4@F5-X5qOLCiMcTpG zzumL=f6a30_;C7I&$Rz6ko6TOZ>3FyjDNV1{N^UkuQoxJ_zAIxJXr{3y(bh&3EHgQ z?68TIw;duy)XKDSUp8l+_{(MiGe`zvVWwc!j`(L3W*$g>SJcRx@UUTSlYvR9^(}$LRQ+9)53DX*Aj=l&A4|;TR-qkS4chsqkWme diff --git a/doc/dist/merriweather-cyrillic-ext-300-normal-5LF5LCEK.woff2 b/doc/dist/merriweather-cyrillic-ext-300-normal-5LF5LCEK.woff2 deleted file mode 100644 index 8874d2c433d25a26faaf10493f69959d19beedc9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19320 zcmV)AK*YayPew8T0RR91084lP5dZ)H0IVDU0817C0RR9100000000000000000000 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 diff --git a/doc/dist/merriweather-latin-300-normal-RWDJH4FN.woff2 b/doc/dist/merriweather-latin-300-normal-RWDJH4FN.woff2 deleted file mode 100644 index a11988387bd3d353ed0f1729f9b266fe4ddec444..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19752 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 H2iipd8BQ&h diff --git a/doc/dist/merriweather-latin-ext-300-italic-MWCA36KE.woff2 b/doc/dist/merriweather-latin-ext-300-italic-MWCA36KE.woff2 deleted file mode 100644 index 8a6b26f8b134b93d5a463d65badc39fae8e61710..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18676 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 diff --git a/doc/dist/merriweather-vietnamese-300-normal-U376L4Z4.woff2 b/doc/dist/merriweather-vietnamese-300-normal-U376L4Z4.woff2 deleted file mode 100644 index b250a2d450b9189c97056fba663983350ea1bff1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7796 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 G3r|PeQ0kEY diff --git a/doc/dist/remixicon-NKANDIL5.woff2 b/doc/dist/remixicon-NKANDIL5.woff2 deleted file mode 100644 index 57e6c7c12cabbcbff5522fa19a129dc751277cc8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1956 zcmV;V2V3}ePew8T0RR9100*Q13jhEB01$Kl00&n90RR9100000000000000000000 z0000SR0dW6g*pn36pTRuHUcCAL<=MU1Rw>5DhGlq8@CP-)ua`YeSvMm9>p?ALMogM zTwtmKVDkd%LW7ILIspIxAb27>-ZwLQ+P#keLM6FPNtJ0+bP%S0FM9=)3Qnb8gYp5}B#d-n~;fb`-S zRV4ty!Ak{_*0Oj(ZUzt?r{ENKA&rkK?sN-e1Vo_!Ef~P1Ad+^+O&oV7GWgcvIe`@L z;VFFFCwLjaVox?#05EEX0gVqQO+Hj=uYg6+IH10&qvJMElj`_;tRED3y1YnU39oKr zc4N<*m^Z8M65j25@Abj-+nsMOzVG}0U+)XAMW`un0ueb%F-9Q?1q3`9DMc3!-0(jy zhG_2bCmB+FV`K**f)Ba~IedsjQ201Adw1js@O`rj20P6+wZ9$G9;^{C;_Xvs* zA!W)43db&Q(nv}S1X9bF7A#7RT}i8`R7ujHa9tj+-HX%W#=)RlAHleBNjAB@-y_^C z>8m6h{mUxGF`|~lsT{HvBXYB`G#OC1(j>HiT)pKo>8jl+mdm)Y!`y5yv}L6#vYmj zEf!6W(PST^scb);y8;sZySO|1wsUqgQUodYs>89ITs%d*F*KF{#W)pf3Gy7fAp_`v z5#%G1#p!)-h{0$KyAR9Sv2i4horW}bVZF&DoFYn3+M=Bdo+N2I-4Th?KSF5|z!TKB zHYd&P3D>Tk`ROX;?m=zu}|@f8sig^w)kW!Z4m2@uA3 zudc}g#rBQ@AU5k=2i5V*(F5&T+(H9U6i0F-DLmX&5gg57^q-DU2&;)uEH77#b?V`x zK(uGxY~Hj8ratXy)NQ}GZH`@fx;`MYdMf?P{QS!ND`jo$<9PW>f7ya=cUEz-Q-Xs- zf>ZK3VZwyd!>>=X+xAgs6VBcIk1mOM+W%L~lnE#(rx~=rZNt?PJCR{JrP}X)Q*-;}pBiDMT zMy7_TqhZPvH3g20`))+Jx1Xu?KL@}~b`b!ulLBP|%j#Y?`S)Py0ssf4qniSrmt94# ziuO*)vLPl+=s9oYJg1~RGCAa=mSokl@_*J@FtQ;E(NT9DSWCH{v2kGor9f*U;SR(<` z*cD4KpBDm~n^W~aNo}PVP{CFdoyr`dV&{~g6NN;Ud)`_BAg7EvpgQv&Q7U}0_*2pEBr zCY=WZsT`=Gj5Pwl7-#{G8WyF>=Vb&Ii6rhqUZ}MNTFg^A9Wg8RqYlAyAkuCO323Lf z1F6b#zdNpnNLd%F>7=(zq5{oW9k~P!cN~jGIPXMkMVk}m^_7kN`|W{0V+m0)aS}-^ ziKLQ=mms+mNTC!-v6PUK>@FqLI0|Q$MVaXkRb?8Iqj9i;)qdJ|70~&@e@1BhsXL q3kxY4?d;kys!X?dVp*I diff --git a/doc/dist/search_items-9462DBD2.js b/doc/dist/search_items-9462DBD2.js deleted file mode 100644 index 4e89e84..0000000 --- a/doc/dist/search_items-9462DBD2.js +++ /dev/null @@ -1 +0,0 @@ -searchNodes=[{"doc":"Public interface for client.","ref":"cfclient.html","title":"cfclient","type":"module"},{"doc":"Evaluate variation which returns a boolean.","ref":"cfclient.html#bool_variation/3","title":"cfclient.bool_variation/3","type":"function"},{"doc":"","ref":"cfclient.html#bool_variation/4","title":"cfclient.bool_variation/4","type":"function"},{"doc":"","ref":"cfclient.html#close/0","title":"cfclient.close/0","type":"function"},{"doc":"","ref":"cfclient.html#close/1","title":"cfclient.close/1","type":"function"},{"doc":"Evaluate variation which returns a JSON object.","ref":"cfclient.html#json_variation/3","title":"cfclient.json_variation/3","type":"function"},{"doc":"","ref":"cfclient.html#json_variation/4","title":"cfclient.json_variation/4","type":"function"},{"doc":"Evaluate variation which returns a number.","ref":"cfclient.html#number_variation/3","title":"cfclient.number_variation/3","type":"function"},{"doc":"","ref":"cfclient.html#number_variation/4","title":"cfclient.number_variation/4","type":"function"},{"doc":"Evaluate variation which returns a string.","ref":"cfclient.html#string_variation/3","title":"cfclient.string_variation/3","type":"function"},{"doc":"","ref":"cfclient.html#string_variation/4","title":"cfclient.string_variation/4","type":"function"},{"doc":"","ref":"cfclient.html#t:config/0","title":"cfclient.config/0","type":"type"},{"doc":"","ref":"cfclient.html#t:target/0","title":"cfclient.target/0","type":"type"},{"doc":"cfclient application.","ref":"cfclient_app.html","title":"cfclient_app","type":"module"},{"doc":"","ref":"cfclient_app.html#start/2","title":"cfclient_app.start/2","type":"function"},{"doc":"","ref":"cfclient_app.html#stop/1","title":"cfclient_app.stop/1","type":"function"},{"doc":"Functions to manage cache of Flag and Segment data from server.","ref":"cfclient_cache.html","title":"cfclient_cache","type":"module"},{"doc":"","ref":"cfclient_cache.html#cache_flag/1","title":"cfclient_cache.cache_flag/1","type":"function"},{"doc":"","ref":"cfclient_cache.html#cache_flag/2","title":"cfclient_cache.cache_flag/2","type":"function"},{"doc":"","ref":"cfclient_cache.html#cache_segment/1","title":"cfclient_cache.cache_segment/1","type":"function"},{"doc":"","ref":"cfclient_cache.html#cache_segment/2","title":"cfclient_cache.cache_segment/2","type":"function"},{"doc":"Get Flag or Segment from cache.","ref":"cfclient_cache.html#get_value/1","title":"cfclient_cache.get_value/1","type":"function"},{"doc":"","ref":"cfclient_cache.html#get_value/2","title":"cfclient_cache.get_value/2","type":"function"},{"doc":"","ref":"cfclient_cache.html#set_pid/1","title":"cfclient_cache.set_pid/1","type":"function"},{"doc":"Store flag or segment into cache with new value.","ref":"cfclient_cache.html#set_value/2","title":"cfclient_cache.set_value/2","type":"function"},{"doc":"","ref":"cfclient_cache.html#t:config/0","title":"cfclient_cache.config/0","type":"type"},{"doc":"","ref":"cfclient_cache.html#t:flag/0","title":"cfclient_cache.flag/0","type":"type"},{"doc":"","ref":"cfclient_cache.html#t:segment/0","title":"cfclient_cache.segment/0","type":"type"},{"doc":"Functions to manage client configuration.","ref":"cfclient_config.html","title":"cfclient_config","type":"module"},{"doc":"with Authenticate with server and merge project attributes into config","ref":"cfclient_config.html#authenticate/2","title":"cfclient_config.authenticate/2","type":"function"},{"doc":"","ref":"cfclient_config.html#create_tables/1","title":"cfclient_config.create_tables/1","type":"function"},{"doc":"","ref":"cfclient_config.html#defaults/0","title":"cfclient_config.defaults/0","type":"function"},{"doc":"","ref":"cfclient_config.html#delete_tables/1","title":"cfclient_config.delete_tables/1","type":"function"},{"doc":"","ref":"cfclient_config.html#get_config/0","title":"cfclient_config.get_config/0","type":"function"},{"doc":"","ref":"cfclient_config.html#get_config/1","title":"cfclient_config.get_config/1","type":"function"},{"doc":"","ref":"cfclient_config.html#get_table_names/1","title":"cfclient_config.get_table_names/1","type":"function"},{"doc":"","ref":"cfclient_config.html#get_value/1","title":"cfclient_config.get_value/1","type":"function"},{"doc":"","ref":"cfclient_config.html#get_value/2","title":"cfclient_config.get_value/2","type":"function"},{"doc":"","ref":"cfclient_config.html#init/1","title":"cfclient_config.init/1","type":"function"},{"doc":"","ref":"cfclient_config.html#normalize/1","title":"cfclient_config.normalize/1","type":"function"},{"doc":"","ref":"cfclient_config.html#parse_jwt/1","title":"cfclient_config.parse_jwt/1","type":"function"},{"doc":"","ref":"cfclient_config.html#set_config/1","title":"cfclient_config.set_config/1","type":"function"},{"doc":"","ref":"cfclient_config.html#set_config/2","title":"cfclient_config.set_config/2","type":"function"},{"doc":"","ref":"cfclient_config.html#t:config/0","title":"cfclient_config.config/0","type":"type"},{"doc":"Functions to make it easier to mock ETS","ref":"cfclient_ets.html","title":"cfclient_ets","type":"module"},{"doc":"","ref":"cfclient_ets.html#get/2","title":"cfclient_ets.get/2","type":"function"},{"doc":"","ref":"cfclient_ets.html#lookup/2","title":"cfclient_ets.lookup/2","type":"function"},{"doc":"Functions to evaluate flag rules.","ref":"cfclient_evaluator.html","title":"cfclient_evaluator","type":"module"},{"doc":"","ref":"cfclient_evaluator.html#bool_variation/3","title":"cfclient_evaluator.bool_variation/3","type":"function"},{"doc":"","ref":"cfclient_evaluator.html#custom_attribute_to_binary/1","title":"cfclient_evaluator.custom_attribute_to_binary/1","type":"function"},{"doc":"","ref":"cfclient_evaluator.html#is_rule_included_or_excluded/2","title":"cfclient_evaluator.is_rule_included_or_excluded/2","type":"function"},{"doc":"","ref":"cfclient_evaluator.html#json_variation/3","title":"cfclient_evaluator.json_variation/3","type":"function"},{"doc":"","ref":"cfclient_evaluator.html#number_variation/3","title":"cfclient_evaluator.number_variation/3","type":"function"},{"doc":"","ref":"cfclient_evaluator.html#string_variation/3","title":"cfclient_evaluator.string_variation/3","type":"function"},{"doc":"","ref":"cfclient_evaluator.html#t:config/0","title":"cfclient_evaluator.config/0","type":"type"},{"doc":"","ref":"cfclient_evaluator.html#t:flag/0","title":"cfclient_evaluator.flag/0","type":"type"},{"doc":"","ref":"cfclient_evaluator.html#t:rule/0","title":"cfclient_evaluator.rule/0","type":"type"},{"doc":"","ref":"cfclient_evaluator.html#t:rule_clause/0","title":"cfclient_evaluator.rule_clause/0","type":"type"},{"doc":"","ref":"cfclient_evaluator.html#t:rule_serve/0","title":"cfclient_evaluator.rule_serve/0","type":"type"},{"doc":"","ref":"cfclient_evaluator.html#t:segment/0","title":"cfclient_evaluator.segment/0","type":"type"},{"doc":"","ref":"cfclient_evaluator.html#t:target/0","title":"cfclient_evaluator.target/0","type":"type"},{"doc":"","ref":"cfclient_evaluator.html#t:variation_map/0","title":"cfclient_evaluator.variation_map/0","type":"type"},{"doc":"Feature flags client instance. It creates the ETS tables used to cache flag data from the server and flag usage metrics. It runs periodic tasks to pull data from the server and send metrics to it. An default instance is started by the cfclient application. Additional instances can be started if multiple Harness projects need to be used. project.","ref":"cfclient_instance.html","title":"cfclient_instance","type":"module"},{"doc":"","ref":"cfclient_instance.html#handle_call/3","title":"cfclient_instance.handle_call/3","type":"function"},{"doc":"","ref":"cfclient_instance.html#handle_cast/2","title":"cfclient_instance.handle_cast/2","type":"function"},{"doc":"","ref":"cfclient_instance.html#handle_info/2","title":"cfclient_instance.handle_info/2","type":"function"},{"doc":"","ref":"cfclient_instance.html#init/1","title":"cfclient_instance.init/1","type":"function"},{"doc":"","ref":"cfclient_instance.html#start_link/1","title":"cfclient_instance.start_link/1","type":"function"},{"doc":"","ref":"cfclient_instance.html#stop/1","title":"cfclient_instance.stop/1","type":"function"},{"doc":"Functions to record, process, and send cached metric data.","ref":"cfclient_metrics.html","title":"cfclient_metrics","type":"module"},{"doc":"Gather metrics and send them to server. Called periodically by cfclient_instance.","ref":"cfclient_metrics.html#process_metrics/1","title":"cfclient_metrics.process_metrics/1","type":"function"},{"doc":"Record metrics for request.","ref":"cfclient_metrics.html#record/5","title":"cfclient_metrics.record/5","type":"function"},{"doc":"","ref":"cfclient_metrics.html#t:config/0","title":"cfclient_metrics.config/0","type":"type"},{"doc":"Funcctions to pull feature and target configuration from server via the API.","ref":"cfclient_retrieve.html","title":"cfclient_retrieve","type":"module"},{"doc":"Retrieve all features from Feature Flags API.","ref":"cfclient_retrieve.html#retrieve_flags/1","title":"cfclient_retrieve.retrieve_flags/1","type":"function"},{"doc":"Retrieve all segments from Feature Flags API.","ref":"cfclient_retrieve.html#retrieve_segments/1","title":"cfclient_retrieve.retrieve_segments/1","type":"function"},{"doc":"","ref":"cfclient_retrieve.html#t:config/0","title":"cfclient_retrieve.config/0","type":"type"},{"doc":"","ref":"cfclient_retrieve.html#t:flag/0","title":"cfclient_retrieve.flag/0","type":"type"},{"doc":"","ref":"cfclient_retrieve.html#t:segment/0","title":"cfclient_retrieve.segment/0","type":"type"},{"doc":"Top level supervisor for cfclient. Called by application, starting up the default client instance.","ref":"cfclient_sup.html","title":"cfclient_sup","type":"module"},{"doc":"","ref":"cfclient_sup.html#init/1","title":"cfclient_sup.init/1","type":"function"},{"doc":"","ref":"cfclient_sup.html#start_link/1","title":"cfclient_sup.start_link/1","type":"function"},{"doc":"Harness is a feature management platform that helps teams to build better software and to test features quicker. This repository contains our Feature Flags SDK for Erlang and other BEAM languages such as Elixir.","ref":"readme.html","title":"Erlang SDK For Harness Feature Flags","type":"extras"},{"doc":"Intro <br> Requirements <br> Quickstart <br> Further Reading <br> Build Instructions <br>","ref":"readme.html#table-of-contents","title":"Erlang SDK For Harness Feature Flags - Table of Contents","type":"extras"},{"doc":"This sample doesn’t include configuration options. For in depth steps and configuring the SDK, e.g. disabling streaming or using our Relay Proxy, see the Erlang SDK Reference For a sample FF Erlang SDK project, see our test Erlang project . For a sample FF Erlang SDK Project for Elixir, see our test Elixir Project .","ref":"readme.html#intro","title":"Erlang SDK For Harness Feature Flags - Intro","type":"extras"},{"doc":"Erlang OTP 22 or newer.","ref":"readme.html#requirements","title":"Erlang SDK For Harness Feature Flags - Requirements","type":"extras"},{"doc":"To follow along with our test code sample, make sure you have: Created a Feature Flag on the Harness Platform called harnessappdemodarkmode Created a server SDK key and made a copy of it","ref":"readme.html#quickstart","title":"Erlang SDK For Harness Feature Flags - Quickstart","type":"extras"},{"doc":"For Erlang applications To install the SDK for Erlang based applications: Add the SDK as a dependency to your rebar.config file: { deps , [ { cfclient , "1.2.0" , { pkg , harness_ff_erlang_server_sdk } } ] } . Add the dependency to your project's app.src . { applications , [ kernel , stdlib , cfclient ] } , For Elixir applications To install the SDK for Elixir based applications: Add the SDK as a dependency to mix.exs deps() : defp deps do [ { : cfclient , "~> 1.1.0" , hex : : harness_ff_erlang_server_sdk } ]","ref":"readme.html#install-the-sdk","title":"Erlang SDK For Harness Feature Flags - Install the SDK","type":"extras"},{"doc":"Erlang Provide your API key in sys.config using an environment variable: [ { cfclient , [ { api_key , { environment_variable , "YOUR_API_KEY_ENV_VARIABLE" } , ] } ] . Or you may provide the API key directly if required: [ { cfclient , [ { api_key , "YOUR_API_KEY" } , ] } ] . Elixir Provide your API key in config/prod.exs using an environment variable: : config :cfclient , api_key : System . get_env ( "YOUR_API_KEY_ENVIRONMENT_VARIABLE" ) Or you may provide the API key directly if required: config :cfclient , api_key : "YOUR_API_KEY"","ref":"readme.html#configuration","title":"Erlang SDK For Harness Feature Flags - Configuration","type":"extras"},{"doc":"Optionally you may set the required log level of the SDK. If not provided, the SDK will default to warning . Elixir logging configuration example config :cfclient , # Set the log level of the SDK to debug log_level : :debug [ api_key : System . get_env ( "FF_API_KEY_0" ) , # For additional config you can pass in, see Erlang SDK docs: https://github.com/harness/ff-erlang-server-sdk/blob/main/docs/further_reading.md#further-reading # we are just using the main config url here as an example. config : [ config_url : "https://config.ff.harness.io/api/1.0" , events_url : "https://events.ff.harness.io/api/1.0" , poll_interval : 60000 , analytics_enabled : true ] ] Erlang logging configuration example [ { cfclient , [ %% Set the log level of the SDK to debug { log_level , debug } , { api_key , { envrionment_variable , "YOUR_API_KEY_ENV_VARIABLE" } , { config , [ { config_url , "https://config.ff.harness.io/api/1.0" } , { events_url , "https://config.ff.harness.io/api/1.0" } , { poll_interval , 60 } , { analytics_enabled , true } , ] } , ] } ] Enable Verbose Evaluation Logs Evaluation logs are debug level by default. If required, they can be changed to info level. This is useful if production environments do not use debug level, but there is a requirement to check low level evaluation logs. Note that this will only affect evaluation log statements. Elixir config :cfclient , log_level : :error [ api_key : System . get_env ( "FF_API_KEY_0" ) , config : [ verbose_evaluation_logs : true ] ] Erlang [ { cfclient , [ { log_level , error } , { api_key , { envrionment_variable , "YOUR_API_KEY_ENV_VARIABLE" } , { config , [ { verbose_evaluation_logs , true } , ] } , ] } ]","ref":"readme.html#set-logging-level","title":"Erlang SDK For Harness Feature Flags - Set logging level","type":"extras"},{"doc":"The SDK by default starts up a single instance called default which is configured with your project API key. If different parts of your application need to use specific projects , you can start up additional client instances using by defining additional configuration for each unique project. Erlang Project Config The additional project config is defined in sys.config The following sys.config snippet starts up two additional instances as well along with the default instance: [ %% Project config name: This is an arbitrary identifier, but it must be unique per project config you define. { harness_project_1_config , [ { cfclient , [ { config , [ %% Instance name: This must be unique across all of the project configs. E.g. it cannot be the same as an instance name %% in another project config. %% It will be the name you use when calling SDK API functions like `bool_variation/4`, { name , instance_name_1 } ] } , %% The API key for the Harness project you want to use with this SDK instance. { api_key , { environment_variable , "PROJECT_1_API_KEY" } } ] } ] } , { harness_project_2_config , [ { cfclient , [ { config , [ { name , instance_name_2 } ] } , { api_key , { environment_variable , "PROJECT_2_API_KEY" } } ] } ] } , { cfclient , [ { api_key , { environment_variable , "FF_API_KEY" } } , { config , [ { config_url , "https://config.ff.harness.io/api/1.0" } , { events_url , "https://config.ff.harness.io/api/1.0" } ] } , { analytics_push_interval , 60000 } ] } ] . Note: if the default instance fails to start, for example due to an authentication error with the API key, then the SDK will fail to boot and the additional instances won't start. If you don't require the default instance to be started up, you can do: % ... additional project config { cfclient , [ { start_default_instance , false } , %% The remaining tuples will be ignored, so you can choose to include or omit them. { api_key , { environment_variable , "FF_API_KEY" } } , { config , [ { config_url , "https://config.ff.harness.io/api/1.0" } , { events_url , "https://config.ff.harness.io/api/1.0" } ] } , { analytics_push_interval , 60000 } ] } , In your application supervisor, e.g. src/myapp_sup.erl , start up a cfclient_instance for each additional project. As the default instance is booted when your application starts, you cannot (and don't need to) start it here. init ( Args ) -> HarnessProject1Args = application : get_env ( harness_project_1_config , cfclient , [ ] ) , HarnessProject2Args = application : get_env ( harness_project_2_config , cfclient , [ ] ) , ChildSpec1 = \#{ id => project1_cfclient_instance , start => { cfclient_instance , start_link , [ HarnessProject1Args ] } } , ChildSpec2 = \#{ id => project2_cfclient_instance , start => { cfclient_instance , start_link , [ HarnessProject2Args ] } } , MaxRestarts = 1000 , MaxSecondsBetweenRestarts = 3600 , SupFlags = \#{ strategy => one_for_one , intensity => MaxRestarts , period => MaxSecondsBetweenRestarts } , { ok , { SupFlags , [ ChildSpec1 , ChildSpec2 ] } } . Using a specific instance of the SDK To use a specific SDK instance, you provide the instance name to the public function you are calling. For example bool_variation/4 . The following is an example of referencing the instances we have created above: - module ( multi_instance_example ) . - export ( [ multi_instance_evaluations / 0 ] ) . multi_instance_evaluations ( ) -> Target = \#{ identifier => "Harness_Target_1" , name => "HT_1" , attributes => \#{ email => << "demo@harness.io" >> } } , %% Instance 1 Project1Flag = << "harnessappdemodarkmodeproject1" >> , Project1Result = cfclient : bool_variation ( instance_name_1 , Project1Flag , Target , false ) , logger : info ( "Instance Name 1 : Variation for Flag ~p with Target ~p is: ~p ~n " , [ Project1Flag , maps : get ( identifier , Target ) , Project1Result ] ) , %% Instance 2 Project2Flag = << "harnessappdemodarkmodeproject2" >> , Project2Result = cfclient : bool_variation ( instance_name_2 , Project2Flag , Target , false ) , logger : info ( "Instance name 2 Variation for Flag ~p with Target ~p is: ~p ~n " , [ Project2Flag , maps : get ( identifier , Target ) , Project2Result ] ) . %% Default instance DefaultProjectFlag = << "harnessappdemodarkmodeprojectdefault" >> , DefaultProjectResult = cfclient : bool_variation ( Project2Flag , Target , false ) , logger : info ( "Default instance Variation for Flag ~p with Target ~p is: ~p ~n " , [ DefaultProjectFlag , maps : get ( identifier , Target ) , DefaultProjectResult ] ) . Elixir Create project configurations for each new instance you would like to start in your config/config.exs file: # Config for "project 1" config :elixirsample , project1 : [ api_key : System . get_env ( "FF_API_KEY_1" ) , config : [ name : :project1 ] ] # Config for "project 2" config :elixirsample , project2 : [ api_key : System . get_env ( "FF_API_KEY_2" ) , config : [ name : :project2 ] ] In your application supervisor, e.g. lib/myapp/supervisor.ex , start up cfclient_instance for each of the additional project configurations you provided above. As the default instance is booted when your application starts, you cannot (and don't need to) start it here: def init ( _opts ) do project_1_config = Application . get_env ( :elixirsample , :project1 , [ ] ) project_2_config = Application . get_env ( :elixirsample , :project2 , [ ] ) children = [ %{ id : :project1_cfclient_instance , start : { :cfclient_instance , :start_link , [ project_1_config ] } , type : :supervisor } , %{ id : :project2_cfclient_instance , start : { :cfclient_instance , :start_link , [ project_2_config ] } , type : :supervisor } , ] Supervisor . init ( children , strategy : :one_for_one ) end To use a specific SDK instance, you provide the instance name to the public function you are calling. For example use bool_variation/4 instead of bool_variation/3 - see the following code sample: defmodule ElixirSample.EvaluationSample do require Logger def getFlagLoop ( ) do target = %{ identifier : "harness" , name : "Harness" , anonymous : false , attributes : %{ } } # Default instance flag = "projectflag" result = :cfclient . bool_variation ( flag , target , false ) Logger . info ( "SVariation for Flag \#{ flag } with Target \#{ inspect ( target ) } is: \#{ result } " ) # Instance 1 project_1_flag = "project1flag" project_1_result = :cfclient . number_variation ( :project1 , project_1_flag , target , 3 ) Logger . info ( "SDK instance 1: Variation for Flag \#{ project_1_flag } with Target \#{ inspect ( target ) } is: \#{ project_1_result } " ) # Instance 2 project_2_flag = "project2flag" project_2_result = :cfclient . bool_variation ( :project2 , project_2_flag , target , false ) Logger . info ( "SDK instance 2: Variation for Flag \#{ project_2_flag } with Target \#{ inspect ( target ) } is: \#{ project_2_result } " ) Process . sleep ( 10000 ) getFlagLoop ( ) # Default instance default_project_flag = "defaultflag" default_project_result = :cfclient . bool_variation ( default_project_flag , target , false ) Logger . info ( "Default instance: Variation for Flag \#{ default_project_flag } with Target \#{ inspect ( target ) } is: \#{ default_project_result } " ) Process . sleep ( 10000 ) getFlagLoop ( ) end end","ref":"readme.html#run-multiple-instances-of-the-sdk","title":"Erlang SDK For Harness Feature Flags - Run multiple instances of the SDK","type":"extras"},{"doc":"Erlang Call the API to get the value of the harnessappdemodarkmode flag you created via https://www.harness.io/ . get_flag_loop ( ) -> Target = \#{ identifier => "Harness_Target_1" , name => "HT_1" , %% Attribute keys must be atoms. %% Values must be either bitstrings, atoms, or a list of bitstrings/atoms - see Targets with custom attributes section below. attributes => \#{ email => << "demo@harness.io" >> } } , FlagIdentifier = "harnessappdemodarkmode" , Result = cfclient : bool_variation ( FlagIdentifier , Target , false ) , logger : info ( "Variation for Flag ~p witih Target ~p is: ~p ~n " , [ FlagIdentifier , maps : get ( identifier , Target ) , Result ] ) , timer : sleep ( 10000 ) , get_flag_loop ( ) . Elixir Call the API to get the value of the harnessappdemodarkmode flag you created via https://www.harness.io/ . def getFlagLoop ( ) do target = %{ identifier : "Harness_Target_1" , name : "HT_1" # Attribute keys must be atoms. # Values must be either binaries, atoms, or a list of binaries/atoms. # See "targets with custom attributes" below. attributes : %{ email : "demo@harness.io" } } flag_identifier = "harnessappdemodarkmode" result = :cfclient . bool_variation ( flag_identifier , target , false ) Logger . info ( "Variation for Flag \#{ flag_identifier } with Target \#{ inspect ( target ) } is: \#{result)" ) Process . sleep ( 10000 ) getFlagLoop ( )","ref":"readme.html#code-sample","title":"Erlang SDK For Harness Feature Flags - Code Sample","type":"extras"},{"doc":"You can use the attributes map to provide custom attributes. If the target isn't anonymous, the attributes will shortly appear in the Harness UI after an evaluation using the target. You can create Group Rules based on these attributes. Note: attribute keys must be atoms and the values must either be binaries or atoms or a list of binaries or atoms . Erlang: TargetBetaGroup = \#{ 'identifier' => << "my_target" >> , name => << "my_target_name" >> , anonymous => << "" >> , attributes => \#{ beta => << "beta_group_1" >> } } , TargetBetaGroups = \#{ 'identifier' => << "my_other_target" >> , name => << "my_other_target_name" >> , anonymous => << "" >> , attributes => \#{ beta => [ << "beta_group_1" >> , 'beta_group_2' ] } } } , TargetAlphaGroup = \#{ 'identifier' => << "my_alpha_target" >> , name => << "my_alpha_target_name" >> , anonymous => << "" >> , attributes => \#{ alpha => 'alpha_group_1' } } , Elixir target_beta_group = %{ identifier : "my_target" , name : "my_target_name" , anonymous : "" , attributes : %{ beta : "beta_group_1" } } target_beta_groups = %{ identifier : "my_other_target" , name : "my_other_target_name" , anonymous : "" , attributes : %{ beta : [ "beta_group_1" , :beta_group_2 ] } } target_alpha_group = %{ identifier : "my_alpha_target" , name : "my_alpha_target_name" , anonymous : "" , attributes : %{ alpha : :alpha_group_1 } }","ref":"readme.html#targets-with-custom-attributes","title":"Erlang SDK For Harness Feature Flags - Targets with custom attributes","type":"extras"},{"doc":"For further examples and config options, see the Erlang SDK Further Reading . For more information about Feature Flags, see our Feature Flags documentation .","ref":"readme.html#additional-reading","title":"Erlang SDK For Harness Feature Flags - Additional Reading","type":"extras"},{"doc":"In order to run the tests, pull the submodules: git submodule update --init","ref":"readme.html#contributing","title":"Erlang SDK For Harness Feature Flags - Contributing","type":"extras"},{"doc":"Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.","ref":"license.html","title":"LICENSE","type":"extras"}] \ No newline at end of file diff --git a/doc/dist/sidebar_items-32BCB229.js b/doc/dist/sidebar_items-32BCB229.js deleted file mode 100644 index 39a2a4f..0000000 --- a/doc/dist/sidebar_items-32BCB229.js +++ /dev/null @@ -1 +0,0 @@ -sidebarNodes={"extras":[{"group":"","headers":[{"anchor":"modules","id":"Modules"}],"id":"api-reference","title":"API Reference"},{"group":"","headers":[{"anchor":"table-of-contents","id":"Table of Contents"},{"anchor":"intro","id":"Intro"},{"anchor":"requirements","id":"Requirements"},{"anchor":"quickstart","id":"Quickstart"},{"anchor":"install-the-sdk","id":"Install the SDK"},{"anchor":"configuration","id":"Configuration"},{"anchor":"set-logging-level","id":"Set logging level"},{"anchor":"run-multiple-instances-of-the-sdk","id":"Run multiple instances of the SDK"},{"anchor":"code-sample","id":"Code Sample"},{"anchor":"targets-with-custom-attributes","id":"Targets with custom attributes"},{"anchor":"additional-reading","id":"Additional Reading"},{"anchor":"contributing","id":"Contributing"}],"id":"readme","title":"Erlang SDK For Harness Feature Flags"},{"group":"","headers":[],"id":"license","title":"LICENSE"}],"modules":[{"group":"","id":"cfclient","nodeGroups":[{"key":"types","name":"Types","nodes":[{"anchor":"t:config/0","id":"config/0","title":"config/0"},{"anchor":"t:target/0","id":"target/0","title":"target/0"}]},{"key":"functions","name":"Functions","nodes":[{"anchor":"bool_variation/3","id":"bool_variation/3","title":"bool_variation(FlagKey, Target, Default)"},{"anchor":"bool_variation/4","id":"bool_variation/4","title":"bool_variation(Config, FlagKey, Target, Default)"},{"anchor":"close/0","id":"close/0","title":"close()"},{"anchor":"close/1","id":"close/1","title":"close(Name)"},{"anchor":"json_variation/3","id":"json_variation/3","title":"json_variation(FlagKey, Target, Default)"},{"anchor":"json_variation/4","id":"json_variation/4","title":"json_variation(Config, FlagKey, Target, Default)"},{"anchor":"number_variation/3","id":"number_variation/3","title":"number_variation(FlagKey, Target, Default)"},{"anchor":"number_variation/4","id":"number_variation/4","title":"number_variation(Config, FlagKey, Target, Default)"},{"anchor":"string_variation/3","id":"string_variation/3","title":"string_variation(FlagKey, Target, Default)"},{"anchor":"string_variation/4","id":"string_variation/4","title":"string_variation(Config, FlagKey, Target, Default)"}]}],"sections":[],"title":"cfclient"},{"group":"","id":"cfclient_app","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"start/2","id":"start/2","title":"start(StartType, StartArgs)"},{"anchor":"stop/1","id":"stop/1","title":"stop(State)"}]}],"sections":[],"title":"cfclient_app"},{"group":"","id":"cfclient_cache","nodeGroups":[{"key":"types","name":"Types","nodes":[{"anchor":"t:config/0","id":"config/0","title":"config/0"},{"anchor":"t:flag/0","id":"flag/0","title":"flag/0"},{"anchor":"t:segment/0","id":"segment/0","title":"segment/0"}]},{"key":"functions","name":"Functions","nodes":[{"anchor":"cache_flag/1","id":"cache_flag/1","title":"cache_flag(Value)"},{"anchor":"cache_flag/2","id":"cache_flag/2","title":"cache_flag(Value, Config)"},{"anchor":"cache_segment/1","id":"cache_segment/1","title":"cache_segment(Value)"},{"anchor":"cache_segment/2","id":"cache_segment/2","title":"cache_segment(Value, Config)"},{"anchor":"get_value/1","id":"get_value/1","title":"get_value(_)"},{"anchor":"get_value/2","id":"get_value/2","title":"get_value(_, Config)"},{"anchor":"set_pid/1","id":"set_pid/1","title":"set_pid(_)"},{"anchor":"set_value/2","id":"set_value/2","title":"set_value(_, Value)"}]}],"sections":[],"title":"cfclient_cache"},{"group":"","id":"cfclient_config","nodeGroups":[{"key":"types","name":"Types","nodes":[{"anchor":"t:config/0","id":"config/0","title":"config/0"}]},{"key":"functions","name":"Functions","nodes":[{"anchor":"authenticate/2","id":"authenticate/2","title":"authenticate(ApiKey, Config)"},{"anchor":"create_tables/1","id":"create_tables/1","title":"create_tables(Config)"},{"anchor":"defaults/0","id":"defaults/0","title":"defaults()"},{"anchor":"delete_tables/1","id":"delete_tables/1","title":"delete_tables(T)"},{"anchor":"get_config/0","id":"get_config/0","title":"get_config()"},{"anchor":"get_config/1","id":"get_config/1","title":"get_config(Name)"},{"anchor":"get_table_names/1","id":"get_table_names/1","title":"get_table_names(Config)"},{"anchor":"get_value/1","id":"get_value/1","title":"get_value(Key)"},{"anchor":"get_value/2","id":"get_value/2","title":"get_value(Key, Opts)"},{"anchor":"init/1","id":"init/1","title":"init(Config0)"},{"anchor":"normalize/1","id":"normalize/1","title":"normalize(Config0)"},{"anchor":"parse_jwt/1","id":"parse_jwt/1","title":"parse_jwt(JwtToken)"},{"anchor":"set_config/1","id":"set_config/1","title":"set_config(Config)"},{"anchor":"set_config/2","id":"set_config/2","title":"set_config(Name, Config)"}]}],"sections":[],"title":"cfclient_config"},{"group":"","id":"cfclient_ets","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"get/2","id":"get/2","title":"get(Table, Key)"},{"anchor":"lookup/2","id":"lookup/2","title":"lookup(Table, Key)"}]}],"sections":[],"title":"cfclient_ets"},{"group":"","id":"cfclient_evaluator","nodeGroups":[{"key":"types","name":"Types","nodes":[{"anchor":"t:config/0","id":"config/0","title":"config/0"},{"anchor":"t:flag/0","id":"flag/0","title":"flag/0"},{"anchor":"t:rule/0","id":"rule/0","title":"rule/0"},{"anchor":"t:rule_clause/0","id":"rule_clause/0","title":"rule_clause/0"},{"anchor":"t:rule_serve/0","id":"rule_serve/0","title":"rule_serve/0"},{"anchor":"t:segment/0","id":"segment/0","title":"segment/0"},{"anchor":"t:target/0","id":"target/0","title":"target/0"},{"anchor":"t:variation_map/0","id":"variation_map/0","title":"variation_map/0"}]},{"key":"functions","name":"Functions","nodes":[{"anchor":"bool_variation/3","id":"bool_variation/3","title":"bool_variation(FlagId, Target, Config)"},{"anchor":"custom_attribute_to_binary/1","id":"custom_attribute_to_binary/1","title":"custom_attribute_to_binary(Value)"},{"anchor":"is_rule_included_or_excluded/2","id":"is_rule_included_or_excluded/2","title":"is_rule_included_or_excluded(Clauses, Target)"},{"anchor":"json_variation/3","id":"json_variation/3","title":"json_variation(FlagId, Target, Config)"},{"anchor":"number_variation/3","id":"number_variation/3","title":"number_variation(FlagId, Target, Config)"},{"anchor":"string_variation/3","id":"string_variation/3","title":"string_variation(FlagId, Target, Config)"}]}],"sections":[],"title":"cfclient_evaluator"},{"group":"","id":"cfclient_instance","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"handle_call/3","id":"handle_call/3","title":"handle_call(_, From, State)"},{"anchor":"handle_cast/2","id":"handle_cast/2","title":"handle_cast(_, State)"},{"anchor":"handle_info/2","id":"handle_info/2","title":"handle_info(_, Config)"},{"anchor":"init/1","id":"init/1","title":"init(Args)"},{"anchor":"start_link/1","id":"start_link/1","title":"start_link(Args)"},{"anchor":"stop/1","id":"stop/1","title":"stop(Config)"}]}],"sections":[],"title":"cfclient_instance"},{"group":"","id":"cfclient_metrics","nodeGroups":[{"key":"types","name":"Types","nodes":[{"anchor":"t:config/0","id":"config/0","title":"config/0"}]},{"key":"functions","name":"Functions","nodes":[{"anchor":"process_metrics/1","id":"process_metrics/1","title":"process_metrics(Config)"},{"anchor":"record/5","id":"record/5","title":"record(FlagId, Target, VariationId, VariationValue, Config)"}]}],"sections":[],"title":"cfclient_metrics"},{"group":"","id":"cfclient_retrieve","nodeGroups":[{"key":"types","name":"Types","nodes":[{"anchor":"t:config/0","id":"config/0","title":"config/0"},{"anchor":"t:flag/0","id":"flag/0","title":"flag/0"},{"anchor":"t:segment/0","id":"segment/0","title":"segment/0"}]},{"key":"functions","name":"Functions","nodes":[{"anchor":"retrieve_flags/1","id":"retrieve_flags/1","title":"retrieve_flags(Config)"},{"anchor":"retrieve_segments/1","id":"retrieve_segments/1","title":"retrieve_segments(Config)"}]}],"sections":[],"title":"cfclient_retrieve"},{"group":"","id":"cfclient_sup","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"init/1","id":"init/1","title":"init(Args)"},{"anchor":"start_link/1","id":"start_link/1","title":"start_link(Args)"}]}],"sections":[],"title":"cfclient_sup"}],"tasks":[]} \ No newline at end of file diff --git a/doc/index.html b/doc/index.html deleted file mode 100644 index 666d183..0000000 --- a/doc/index.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - - cfclient v1.2.1 — Documentation - - - - - diff --git a/doc/license.html b/doc/license.html deleted file mode 100644 index 88aca0b..0000000 --- a/doc/license.html +++ /dev/null @@ -1,366 +0,0 @@ - - - - - - - - - - LICENSE — cfclient v1.2.1 - - - - - - - - - - - - - - - - -

    - - - - - -
    - -
    -
    - -

    - - - - - - View Source - - - - LICENSE -

    - -
    -                                 Apache License
    -                           Version 2.0, January 2004
    -                        http://www.apache.org/licenses/
    -
    -   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
    -
    -   1. Definitions.
    -
    -      "License" shall mean the terms and conditions for use, reproduction,
    -      and distribution as defined by Sections 1 through 9 of this document.
    -
    -      "Licensor" shall mean the copyright owner or entity authorized by
    -      the copyright owner that is granting the License.
    -
    -      "Legal Entity" shall mean the union of the acting entity and all
    -      other entities that control, are controlled by, or are under common
    -      control with that entity. For the purposes of this definition,
    -      "control" means (i) the power, direct or indirect, to cause the
    -      direction or management of such entity, whether by contract or
    -      otherwise, or (ii) ownership of fifty percent (50%) or more of the
    -      outstanding shares, or (iii) beneficial ownership of such entity.
    -
    -      "You" (or "Your") shall mean an individual or Legal Entity
    -      exercising permissions granted by this License.
    -
    -      "Source" form shall mean the preferred form for making modifications,
    -      including but not limited to software source code, documentation
    -      source, and configuration files.
    -
    -      "Object" form shall mean any form resulting from mechanical
    -      transformation or translation of a Source form, including but
    -      not limited to compiled object code, generated documentation,
    -      and conversions to other media types.
    -
    -      "Work" shall mean the work of authorship, whether in Source or
    -      Object form, made available under the License, as indicated by a
    -      copyright notice that is included in or attached to the work
    -      (an example is provided in the Appendix below).
    -
    -      "Derivative Works" shall mean any work, whether in Source or Object
    -      form, that is based on (or derived from) the Work and for which the
    -      editorial revisions, annotations, elaborations, or other modifications
    -      represent, as a whole, an original work of authorship. For the purposes
    -      of this License, Derivative Works shall not include works that remain
    -      separable from, or merely link (or bind by name) to the interfaces of,
    -      the Work and Derivative Works thereof.
    -
    -      "Contribution" shall mean any work of authorship, including
    -      the original version of the Work and any modifications or additions
    -      to that Work or Derivative Works thereof, that is intentionally
    -      submitted to Licensor for inclusion in the Work by the copyright owner
    -      or by an individual or Legal Entity authorized to submit on behalf of
    -      the copyright owner. For the purposes of this definition, "submitted"
    -      means any form of electronic, verbal, or written communication sent
    -      to the Licensor or its representatives, including but not limited to
    -      communication on electronic mailing lists, source code control systems,
    -      and issue tracking systems that are managed by, or on behalf of, the
    -      Licensor for the purpose of discussing and improving the Work, but
    -      excluding communication that is conspicuously marked or otherwise
    -      designated in writing by the copyright owner as "Not a Contribution."
    -
    -      "Contributor" shall mean Licensor and any individual or Legal Entity
    -      on behalf of whom a Contribution has been received by Licensor and
    -      subsequently incorporated within the Work.
    -
    -   2. Grant of Copyright License. Subject to the terms and conditions of
    -      this License, each Contributor hereby grants to You a perpetual,
    -      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
    -      copyright license to reproduce, prepare Derivative Works of,
    -      publicly display, publicly perform, sublicense, and distribute the
    -      Work and such Derivative Works in Source or Object form.
    -
    -   3. Grant of Patent License. Subject to the terms and conditions of
    -      this License, each Contributor hereby grants to You a perpetual,
    -      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
    -      (except as stated in this section) patent license to make, have made,
    -      use, offer to sell, sell, import, and otherwise transfer the Work,
    -      where such license applies only to those patent claims licensable
    -      by such Contributor that are necessarily infringed by their
    -      Contribution(s) alone or by combination of their Contribution(s)
    -      with the Work to which such Contribution(s) was submitted. If You
    -      institute patent litigation against any entity (including a
    -      cross-claim or counterclaim in a lawsuit) alleging that the Work
    -      or a Contribution incorporated within the Work constitutes direct
    -      or contributory patent infringement, then any patent licenses
    -      granted to You under this License for that Work shall terminate
    -      as of the date such litigation is filed.
    -
    -   4. Redistribution. You may reproduce and distribute copies of the
    -      Work or Derivative Works thereof in any medium, with or without
    -      modifications, and in Source or Object form, provided that You
    -      meet the following conditions:
    -
    -      (a) You must give any other recipients of the Work or
    -          Derivative Works a copy of this License; and
    -
    -      (b) You must cause any modified files to carry prominent notices
    -          stating that You changed the files; and
    -
    -      (c) You must retain, in the Source form of any Derivative Works
    -          that You distribute, all copyright, patent, trademark, and
    -          attribution notices from the Source form of the Work,
    -          excluding those notices that do not pertain to any part of
    -          the Derivative Works; and
    -
    -      (d) If the Work includes a "NOTICE" text file as part of its
    -          distribution, then any Derivative Works that You distribute must
    -          include a readable copy of the attribution notices contained
    -          within such NOTICE file, excluding those notices that do not
    -          pertain to any part of the Derivative Works, in at least one
    -          of the following places: within a NOTICE text file distributed
    -          as part of the Derivative Works; within the Source form or
    -          documentation, if provided along with the Derivative Works; or,
    -          within a display generated by the Derivative Works, if and
    -          wherever such third-party notices normally appear. The contents
    -          of the NOTICE file are for informational purposes only and
    -          do not modify the License. You may add Your own attribution
    -          notices within Derivative Works that You distribute, alongside
    -          or as an addendum to the NOTICE text from the Work, provided
    -          that such additional attribution notices cannot be construed
    -          as modifying the License.
    -
    -      You may add Your own copyright statement to Your modifications and
    -      may provide additional or different license terms and conditions
    -      for use, reproduction, or distribution of Your modifications, or
    -      for any such Derivative Works as a whole, provided Your use,
    -      reproduction, and distribution of the Work otherwise complies with
    -      the conditions stated in this License.
    -
    -   5. Submission of Contributions. Unless You explicitly state otherwise,
    -      any Contribution intentionally submitted for inclusion in the Work
    -      by You to the Licensor shall be under the terms and conditions of
    -      this License, without any additional terms or conditions.
    -      Notwithstanding the above, nothing herein shall supersede or modify
    -      the terms of any separate license agreement you may have executed
    -      with Licensor regarding such Contributions.
    -
    -   6. Trademarks. This License does not grant permission to use the trade
    -      names, trademarks, service marks, or product names of the Licensor,
    -      except as required for reasonable and customary use in describing the
    -      origin of the Work and reproducing the content of the NOTICE file.
    -
    -   7. Disclaimer of Warranty. Unless required by applicable law or
    -      agreed to in writing, Licensor provides the Work (and each
    -      Contributor provides its Contributions) on an "AS IS" BASIS,
    -      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
    -      implied, including, without limitation, any warranties or conditions
    -      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
    -      PARTICULAR PURPOSE. You are solely responsible for determining the
    -      appropriateness of using or redistributing the Work and assume any
    -      risks associated with Your exercise of permissions under this License.
    -
    -   8. Limitation of Liability. In no event and under no legal theory,
    -      whether in tort (including negligence), contract, or otherwise,
    -      unless required by applicable law (such as deliberate and grossly
    -      negligent acts) or agreed to in writing, shall any Contributor be
    -      liable to You for damages, including any direct, indirect, special,
    -      incidental, or consequential damages of any character arising as a
    -      result of this License or out of the use or inability to use the
    -      Work (including but not limited to damages for loss of goodwill,
    -      work stoppage, computer failure or malfunction, or any and all
    -      other commercial damages or losses), even if such Contributor
    -      has been advised of the possibility of such damages.
    -
    -   9. Accepting Warranty or Additional Liability. While redistributing
    -      the Work or Derivative Works thereof, You may choose to offer,
    -      and charge a fee for, acceptance of support, warranty, indemnity,
    -      or other liability obligations and/or rights consistent with this
    -      License. However, in accepting such obligations, You may act only
    -      on Your own behalf and on Your sole responsibility, not on behalf
    -      of any other Contributor, and only if You agree to indemnify,
    -      defend, and hold each Contributor harmless for any liability
    -      incurred by, or claims asserted against, such Contributor by reason
    -      of your accepting any such warranty or additional liability.
    -
    -   END OF TERMS AND CONDITIONS
    -
    -   APPENDIX: How to apply the Apache License to your work.
    -
    -      To apply the Apache License to your work, attach the following
    -      boilerplate notice, with the fields enclosed by brackets "[]"
    -      replaced with your own identifying information. (Don't include
    -      the brackets!)  The text should be enclosed in the appropriate
    -      comment syntax for the file format. We also recommend that a
    -      file or class name and description of purpose be included on the
    -      same "printed page" as the copyright notice for easier
    -      identification within third-party archives.
    -
    -   Copyright [yyyy] [name of copyright owner]
    -
    -   Licensed under the Apache License, Version 2.0 (the "License");
    -   you may not use this file except in compliance with the License.
    -   You may obtain a copy of the License at
    -
    -       http://www.apache.org/licenses/LICENSE-2.0
    -
    -   Unless required by applicable law or agreed to in writing, software
    -   distributed under the License is distributed on an "AS IS" BASIS,
    -   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -   See the License for the specific language governing permissions and
    -   limitations under the License.
    - - -
    -
    -
    -
    - - - - diff --git a/doc/readme.html b/doc/readme.html deleted file mode 100644 index bf29d8e..0000000 --- a/doc/readme.html +++ /dev/null @@ -1,614 +0,0 @@ - - - - - - - - - - Erlang SDK For Harness Feature Flags — cfclient v1.2.1 - - - - - - - - - - - - - - - - -
    - - - - - -
    - -
    -
    - -

    - - - - - - View Source - - - - Erlang SDK For Harness Feature Flags -

    - -

    Harness is a feature management platform that helps -teams to build better software and to test features quicker.

    This repository contains our Feature Flags SDK for Erlang and other BEAM -languages such as Elixir.

    - -

    table-of-contents

    -
    - Table of Contents -

    -

    Intro<br> -Requirements<br> -Quickstart<br> -Further Reading<br> -Build Instructions<br>

    - -

    intro

    -
    - Intro -

    -

    This sample doesn’t include configuration -options. For in depth steps and configuring the SDK, e.g. disabling -streaming or using our Relay Proxy, see the -Erlang SDK Reference

    For a sample FF Erlang SDK project, see our -test Erlang project.

    For a sample FF Erlang SDK Project for Elixir, see our -test Elixir Project.

    FeatureFlags

    - -

    requirements

    -
    - Requirements -

    -

    Erlang OTP 22 or newer.

    - -

    quickstart

    -
    - Quickstart -

    -

    To follow along with our test code sample, make sure you have:

    - -

    install-the-sdk

    -
    - Install the SDK -

    -

    - -

    for-erlang-applications

    -
    - For Erlang applications -

    -

    To install the SDK for Erlang based applications:

    1. Add the SDK as a dependency to your rebar.config file:
      {deps, [{cfclient, "1.2.0", {pkg, harness_ff_erlang_server_sdk}}]}.
    1. Add the dependency to your project's app.src.
      {applications,
    -    [kernel, stdlib, cfclient]
    -  },

    - -

    for-elixir-applications

    -
    - For Elixir applications -

    -

    To install the SDK for Elixir based applications:

    • Add the SDK as a dependency to mix.exs deps():

        defp deps do
      -    [
      -        {:cfclient, "~> 1.1.0", hex: :harness_ff_erlang_server_sdk}
      -    ]

    - -

    configuration

    -
    - Configuration -

    -

    - -

    erlang

    -
    - Erlang -

    -

    Provide your API key in sys.config using an environment variable:

    [
    -  {cfclient, [
    -    {api_key, {environment_variable, "YOUR_API_KEY_ENV_VARIABLE"},
    -  ]}
    -].

    Or you may provide the API key directly if required:

    [
    -  {cfclient, [
    -      {api_key, "YOUR_API_KEY"},
    -  ]}
    -].

    - -

    elixir

    -
    - Elixir -

    -

    Provide your API key in config/prod.exs using an environment variable: :

    config :cfclient,
    -  api_key: System.get_env("YOUR_API_KEY_ENVIRONMENT_VARIABLE")

    Or you may provide the API key directly if required:

    config :cfclient,
    -  api_key: "YOUR_API_KEY"

    - -

    set-logging-level

    -
    - Set logging level -

    -

    Optionally you may set the required log level of the SDK. If not provided, the SDK will default to warning.

    Elixir logging configuration example

    config :cfclient,
    -  # Set the log level of the SDK to debug
    -    log_level: :debug
    -    [api_key: System.get_env("FF_API_KEY_0"),
    -    # For additional config you can pass in, see Erlang SDK docs: https://github.com/harness/ff-erlang-server-sdk/blob/main/docs/further_reading.md#further-reading
    -    # we are just using the main config url here as an example.
    -    config: [
    -      config_url: "https://config.ff.harness.io/api/1.0",
    -      events_url: "https://events.ff.harness.io/api/1.0",
    -      poll_interval: 60000,
    -      analytics_enabled: true
    -    ]]

    Erlang logging configuration example

    [{cfclient, [
    -    %% Set the log level of the SDK to debug
    -    {log_level, debug},
    -    {api_key, {envrionment_variable, "YOUR_API_KEY_ENV_VARIABLE"},
    -    {config, [
    -        {config_url, "https://config.ff.harness.io/api/1.0"},
    -        {events_url, "https://config.ff.harness.io/api/1.0"},
    -        {poll_interval, 60},
    -        {analytics_enabled, true},
    -    ]},
    -    ]}]

    - -

    enable-verbose-evaluation-logs

    -
    - Enable Verbose Evaluation Logs -

    -

    Evaluation logs are debug level by default. If required, they can be changed to info level. This is useful if production environments do not use debug level, but there is a requirement to check low level evaluation logs. -Note that this will only affect evaluation log statements.

    Elixir

    config :cfclient,
    -    log_level: :error
    -    [api_key: System.get_env("FF_API_KEY_0"),
    -    config: [
    -      verbose_evaluation_logs: true
    -    ]]

    Erlang

    [{cfclient, [
    -    {log_level, error},
    -    {api_key, {envrionment_variable, "YOUR_API_KEY_ENV_VARIABLE"},
    -    {config, [
    -        {verbose_evaluation_logs, true},
    -    ]},
    -    ]}]

    - -

    run-multiple-instances-of-the-sdk

    -
    - Run multiple instances of the SDK -

    -

    The SDK by default starts up a single instance called default which is configured with your project API key. -If different parts of your application need to use specific projects, you can start up additional client instances using by defining additional configuration for each unique project.

    - -

    erlang-project-config

    -
    - Erlang Project Config -

    -

    The additional project config is defined in sys.config

    The following sys.config snippet starts up two additional instances as well along with the default instance:

    [
    -  %% Project config name: This is an arbitrary identifier, but it must be unique per project config you define.
    -  {harness_project_1_config, [
    -    {cfclient, [
    -      {config, [
    -        %% Instance name: This must be unique across all of the project configs. E.g. it cannot be the same as an instance name
    -        %% in another project config.
    -        %% It will be the name you use when calling SDK API functions like `bool_variation/4`, 
    -        {name, instance_name_1}
    -      ]},
    -      %% The API key for the Harness project you want to use with this SDK instance.
    -      {api_key, {environment_variable, "PROJECT_1_API_KEY"}}]
    -    }
    -  ]},
    -  
    -  {harness_project_2_config, [
    -    {cfclient, [
    -      {config, [
    -        {name, instance_name_2}
    -      ]},
    -      {api_key, {environment_variable, "PROJECT_2_API_KEY"}}]
    -    }
    -  ]},
    -
    -  {cfclient, [
    -    {api_key, {environment_variable, "FF_API_KEY"}},
    -    {config, [
    -      {config_url, "https://config.ff.harness.io/api/1.0"},
    -      {events_url, "https://config.ff.harness.io/api/1.0"}
    -    ]},
    -    {analytics_push_interval, 60000}
    -  ]
    -}].

    Note: if the default instance fails to start, for example due to an authentication error with the API key, then the SDK -will fail to boot and the additional instances won't start.

    If you don't require the default instance to be started up, you can do:

      % ... additional project config
    -
    -  {cfclient, [
    -    {start_default_instance, false},
    -    %% The remaining tuples will be ignored, so you can choose to include or omit them.
    -    {api_key, {environment_variable, "FF_API_KEY"}},
    -    {config, [
    -      {config_url, "https://config.ff.harness.io/api/1.0"},
    -      {events_url, "https://config.ff.harness.io/api/1.0"}
    -    ]},
    -    {analytics_push_interval, 60000}
    -  ]
    -},

    In your application supervisor, e.g. src/myapp_sup.erl, start up a cfclient_instance -for each additional project. As the default instance is booted when your application starts, you cannot (and don't need to) start it here.

    init(Args) ->
    -  HarnessProject1Args = application:get_env(harness_project_1_config, cfclient, []),
    -  HarnessProject2Args = application:get_env(harness_project_2_config, cfclient, []),
    -  
    -  ChildSpec1 = #{id => project1_cfclient_instance, start => {cfclient_instance, start_link, [HarnessProject1Args]}},
    -  ChildSpec2 = #{id => project2_cfclient_instance, start => {cfclient_instance, start_link, [HarnessProject2Args]}},
    -
    -  MaxRestarts = 1000,
    -  MaxSecondsBetweenRestarts = 3600,
    -  SupFlags = #{strategy => one_for_one,
    -    intensity => MaxRestarts,
    -    period => MaxSecondsBetweenRestarts},
    -
    -  {ok, {SupFlags, [ChildSpec1, ChildSpec2]}}.

    - -

    using-a-specific-instance-of-the-sdk

    -
    - Using a specific instance of the SDK -

    -

    To use a specific SDK instance, you provide the instance name to the public function you are calling. For example bool_variation/4.

    The following is an example of referencing the instances we have created above:

    -module(multi_instance_example).
    -
    --export([multi_instance_evaluations/0]).
    -
    -multi_instance_evaluations() ->
    -  Target = #{
    -    identifier => "Harness_Target_1",
    -    name => "HT_1",
    -    attributes => #{email => <<"demo@harness.io">>}
    -  },
    -
    -  %% Instance 1
    -  Project1Flag = <<"harnessappdemodarkmodeproject1">>,
    -  Project1Result = cfclient:bool_variation(instance_name_1, Project1Flag, Target, false),
    -  logger:info("Instance Name 1 : Variation for Flag ~p with Target ~p is: ~p~n",
    -    [Project1Flag, maps:get(identifier, Target), Project1Result]),
    -
    -  %% Instance 2
    -  Project2Flag = <<"harnessappdemodarkmodeproject2">>,
    -  Project2Result = cfclient:bool_variation(instance_name_2, Project2Flag, Target, false),
    -  logger:info("Instance name 2 Variation for Flag ~p with Target ~p is: ~p~n",
    -  [Project2Flag, maps:get(identifier, Target), Project2Result]).
    -
    -  %% Default instance
    -  DefaultProjectFlag = <<"harnessappdemodarkmodeprojectdefault">>,
    -  DefaultProjectResult = cfclient:bool_variation(Project2Flag, Target, false),
    -  logger:info("Default instance Variation for Flag ~p with Target ~p is: ~p~n",
    -  [DefaultProjectFlag, maps:get(identifier, Target), DefaultProjectResult]).

    - -

    elixir-1

    -
    - Elixir -

    -
    1. Create project configurations for each new instance you would like to start in your config/config.exs file:

       # Config for "project 1"
      - config :elixirsample,  project1:
      -        [
      -         api_key: System.get_env("FF_API_KEY_1"),
      -         config: [name: :project1]
      -        ]
      - 
      - # Config for "project 2"
      - config :elixirsample,  project2:
      -   [
      -   api_key: System.get_env("FF_API_KEY_2"),
      -   config: [name: :project2]
      - ]
    2. In your application supervisor, e.g. lib/myapp/supervisor.ex, start up cfclient_instance -for each of the additional project configurations you provided above. As the default instance is booted when your application starts, you cannot (and don't need to) start it here:

         def init(_opts) do
      -     project_1_config = Application.get_env(:elixirsample, :project1, [])
      -     project_2_config = Application.get_env(:elixirsample, :project2, [])
      -     children = [
      -       %{
      -         id: :project1_cfclient_instance,
      -         start: {:cfclient_instance, :start_link, [project_1_config]},
      -         type: :supervisor
      -       },
      -       %{
      -         id: :project2_cfclient_instance,
      -         start: {:cfclient_instance, :start_link, [project_2_config]},
      -         type: :supervisor
      -       },
      -     ]
      -     Supervisor.init(children, strategy: :one_for_one)
      -   end
    3. To use a specific SDK instance, you provide the instance name to the public function you are calling. For example use bool_variation/4 instead of bool_variation/3 - see the following code sample:

       defmodule ElixirSample.EvaluationSample do
      -   require Logger
      - 
      -   def getFlagLoop() do
      -     target = %{
      -       identifier: "harness",
      -       name: "Harness",
      -       anonymous: false,
      -       attributes: %{}
      -     }
      - 
      -     # Default instance
      -     flag = "projectflag"
      -     result = :cfclient.bool_variation(flag, target, false)
      - 
      -     Logger.info(
      -       "SVariation for Flag #{flag} with Target #{inspect(target)} is: #{result}"
      -     )
      - 
      -     # Instance 1
      -     project_1_flag = "project1flag"
      -     project_1_result = :cfclient.number_variation(:project1, project_1_flag, target, 3)
      - 
      -     Logger.info(
      -       "SDK instance 1: Variation for Flag #{project_1_flag} with Target #{inspect(target)} is: #{project_1_result}"
      -     )
      - 
      -     # Instance 2
      -     project_2_flag = "project2flag"
      -     project_2_result = :cfclient.bool_variation(:project2, project_2_flag, target, false)
      - 
      -     Logger.info(
      -       "SDK instance 2: Variation for Flag #{project_2_flag} with Target #{inspect(target)} is: #{project_2_result}"
      -     )
      - 
      -     Process.sleep(10000)
      -     getFlagLoop()
      -
      -     # Default instance
      -     default_project_flag = "defaultflag"
      -     default_project_result = :cfclient.bool_variation(default_project_flag, target, false)
      - 
      -     Logger.info(
      -       "Default instance: Variation for Flag #{default_project_flag} with Target #{inspect(target)} is: #{default_project_result}"
      -     )
      - 
      -     Process.sleep(10000)
      -     getFlagLoop()
      -   end
      - end

    - -

    code-sample

    -
    - Code Sample -

    -

    - -

    erlang-1

    -
    - Erlang -

    -

    Call the API to get the value of the harnessappdemodarkmode flag you created -via https://www.harness.io/.

    get_flag_loop() ->
    -  Target = #{identifier => "Harness_Target_1",
    -    name => "HT_1",
    -    %% Attribute keys must be atoms. 
    -    %% Values must be either bitstrings, atoms, or a list of bitstrings/atoms - see Targets with custom attributes section below.
    -    attributes => #{email => <<"demo@harness.io">>}
    -  },
    -  FlagIdentifier = "harnessappdemodarkmode",
    -  Result = cfclient:bool_variation(FlagIdentifier, Target, false),
    -  logger:info("Variation for Flag ~p witih Target ~p is: ~p~n", [FlagIdentifier, maps:get(identifier, Target), Result]),
    -  timer:sleep(10000),
    -  get_flag_loop().

    - -

    elixir-2

    -
    - Elixir -

    -

    Call the API to get the value of the harnessappdemodarkmode flag you created -via https://www.harness.io/.

    def getFlagLoop() do
    -  target = %{
    -    identifier: "Harness_Target_1",
    -    name: "HT_1"
    -  
    -    # Attribute keys must be atoms. 
    -    # Values must be either binaries, atoms, or a list of binaries/atoms.
    -    # See "targets with custom attributes" below.
    -    attributes: %{email: "demo@harness.io"}
    -  }
    -  
    -  flag_identifier = "harnessappdemodarkmode"
    -  
    -  result = :cfclient.bool_variation(flag_identifier, target, false)
    -  Logger.info("Variation for Flag #{flag_identifier} with Target #{inspect(target)} is: #{result)")
    -  Process.sleep(10000)
    -  getFlagLoop()
    -

    - -

    targets-with-custom-attributes

    -
    - Targets with custom attributes -

    -

    You can use the attributes map to provide custom attributes. If the target -isn't anonymous, the attributes will shortly appear in the Harness UI after an -evaluation using the target.

    You can create Group Rules -based on these attributes.

    Note: attribute keys must be atoms and the values must either be binaries -or atoms or a list of binaries or atoms.

    - -

    erlang-2

    -
    - Erlang: -

    -
      TargetBetaGroup = #{'identifier' => <<"my_target">>,
    -    name => <<"my_target_name">>,
    -    anonymous => <<"">>,
    -    attributes => #{beta => <<"beta_group_1">>}
    -    },
    -  TargetBetaGroups = #{'identifier' => <<"my_other_target">>,
    -    name => <<"my_other_target_name">>,
    -    anonymous => <<"">>,
    -    attributes => #{beta => [<<"beta_group_1">>, 'beta_group_2']}}
    -    },
    -  TargetAlphaGroup = #{'identifier' => <<"my_alpha_target">>,
    -    name => <<"my_alpha_target_name">>,
    -    anonymous => <<"">>,
    -    attributes => #{alpha => 'alpha_group_1'}
    -    },

    - -

    elixir-3

    -
    - Elixir -

    -
    target_beta_group = %{
    -  identifier: "my_target",
    -  name: "my_target_name",
    -  anonymous: "",
    -  attributes: %{beta: "beta_group_1"}
    -}
    -
    -target_beta_groups = %{
    -  identifier: "my_other_target",
    -  name: "my_other_target_name",
    -  anonymous: "",
    -  attributes: %{
    -    beta: ["beta_group_1", :beta_group_2]
    -  }
    -}
    -
    -target_alpha_group = %{
    -  identifier: "my_alpha_target",
    -  name: "my_alpha_target_name",
    -  anonymous: "",
    -  attributes: %{alpha: :alpha_group_1}
    -}

    - -

    additional-reading

    -
    - Additional Reading -

    -

    For further examples and config options, see the Erlang SDK Further -Reading.

    For more information about Feature Flags, see our Feature Flags -documentation.

    - -

    contributing

    -
    - Contributing -

    -

    In order to run the tests, pull the submodules:

    git submodule update --init
    - - -
    -
    -
    -
    - - - - diff --git a/doc/search.html b/doc/search.html deleted file mode 100644 index eab2059..0000000 --- a/doc/search.html +++ /dev/null @@ -1,142 +0,0 @@ - - - - - - - - - - Search — cfclient v1.2.1 - - - - - - - - - - - - - - - - -
    - - - - - -
    - -
    -
    - - - - -
    -
    -
    -
    - - - - diff --git a/rebar.config b/rebar.config index 8bfe3ea..8589f6c 100644 --- a/rebar.config +++ b/rebar.config @@ -3,15 +3,15 @@ { deps, [ - {erlang_murmurhash, "1.0.0", {pkg, harness_erlang_murmurhash}}, - {cfapi, "1.0.0", {pkg, harness_ff_erlang_client_api}}, + {cfapi, "1.0.1", {pkg, harness_ff_erlang_client_api}}, + {murmur, "1.0.3"}, {ctx, "0.6.0"}, {mochiweb, "3.1.1"}, {base64url, "1.0.1"} ] }. -{project_plugins, [steamroller, rebar3_hex, rebar3_ex_doc]}. +{project_plugins, [steamroller, rebar3_hex, rebar3_ex_doc, rebar_mix]}. { profiles, @@ -33,11 +33,14 @@ {dialyzer, [all_deps]}. -{ex_doc, [ - {extras, ["README.md", "LICENSE"]}, - {main, "README.md"}, - {source_url, "https://github.com/harness/ff-erlang-server-sdk"} -]}. +{ + ex_doc, + [ + {extras, ["README.md", "LICENSE"]}, + {main, "README.md"}, + {source_url, "https://github.com/harness/ff-erlang-server-sdk"} + ] +}. {hex, [{doc, ex_doc}]}. diff --git a/rebar.lock b/rebar.lock index ff0bf5c..fe0a372 100644 --- a/rebar.lock +++ b/rebar.lock @@ -1,21 +1,15 @@ {"1.2.0", [{<<"base64url">>,{pkg,<<"base64url">>,<<"1.0.1">>},0}, {<<"certifi">>,{pkg,<<"certifi">>,<<"2.9.0">>},2}, - {<<"cfapi">>,{pkg,<<"harness_ff_erlang_client_api">>,<<"1.0.0">>},0}, + {<<"cfapi">>,{pkg,<<"harness_ff_erlang_client_api">>,<<"1.0.1">>},0}, {<<"ctx">>,{pkg,<<"ctx">>,<<"0.6.0">>},0}, - {<<"erlang_murmurhash">>,{pkg,<<"harness_erlang_murmurhash">>,<<"1.0.0">>},0}, {<<"hackney">>,{pkg,<<"hackney">>,<<"1.18.1">>},1}, - {<<"harness_erlang_murmurhash">>, - {pkg,<<"harness_erlang_murmurhash">>,<<"1.0.0">>}, - 0}, - {<<"harness_ff_erlang_client_api">>, - {pkg,<<"harness_ff_erlang_client_api">>,<<"1.0.0">>}, - 0}, {<<"idna">>,{pkg,<<"idna">>,<<"6.1.1">>},2}, {<<"jsx">>,{pkg,<<"jsx">>,<<"3.1.0">>},1}, {<<"metrics">>,{pkg,<<"metrics">>,<<"1.0.1">>},2}, {<<"mimerl">>,{pkg,<<"mimerl">>,<<"1.2.0">>},2}, {<<"mochiweb">>,{pkg,<<"mochiweb">>,<<"3.1.1">>},0}, + {<<"murmur">>,{pkg,<<"murmur">>,<<"1.0.3">>},0}, {<<"parse_trans">>,{pkg,<<"parse_trans">>,<<"3.3.1">>},2}, {<<"ssl_verify_fun">>,{pkg,<<"ssl_verify_fun">>,<<"1.1.6">>},2}, {<<"unicode_util_compat">>,{pkg,<<"unicode_util_compat">>,<<"0.7.0">>},2}]}. @@ -23,34 +17,30 @@ {pkg_hash,[ {<<"base64url">>, <<"F8C7F2DA04CA9A5D0F5F50258F055E1D699F0E8BF4CFDB30B750865368403CF6">>}, {<<"certifi">>, <<"6F2A475689DD47F19FB74334859D460A2DC4E3252A3324BD2111B8F0429E7E21">>}, - {<<"cfapi">>, <<"3FECA60093209AE774E2CC01F89D007668EF98F50FCC797F45C941B966956465">>}, + {<<"cfapi">>, <<"FAB3C9796A3B5AC35E3BF4C5925613A665C39810390AF2BD1F5331FA0AFFBC5E">>}, {<<"ctx">>, <<"8FF88B70E6400C4DF90142E7F130625B82086077A45364A78D208ED3ED53C7FE">>}, - {<<"erlang_murmurhash">>, <<"6044EF140C1F001CCD17BE4CFE707582526EB33C0FFE3DCAEFF4C4BDC79B0636">>}, {<<"hackney">>, <<"F48BF88F521F2A229FC7BAE88CF4F85ADC9CD9BCF23B5DC8EB6A1788C662C4F6">>}, - {<<"harness_erlang_murmurhash">>, <<"6044EF140C1F001CCD17BE4CFE707582526EB33C0FFE3DCAEFF4C4BDC79B0636">>}, - {<<"harness_ff_erlang_client_api">>, <<"3FECA60093209AE774E2CC01F89D007668EF98F50FCC797F45C941B966956465">>}, {<<"idna">>, <<"8A63070E9F7D0C62EB9D9FCB360A7DE382448200FBBD1B106CC96D3D8099DF8D">>}, {<<"jsx">>, <<"D12516BAA0BB23A59BB35DCCAF02A1BD08243FCBB9EFE24F2D9D056CCFF71268">>}, {<<"metrics">>, <<"25F094DEA2CDA98213CECC3AEFF09E940299D950904393B2A29D191C346A8486">>}, {<<"mimerl">>, <<"67E2D3F571088D5CFD3E550C383094B47159F3EEE8FFA08E64106CDF5E981BE3">>}, {<<"mochiweb">>, <<"C628CC4518A3CA0F2FB6B8973DCBDC9135635F834B64AEE846337583AFD42084">>}, + {<<"murmur">>, <<"ADE5E9CDB86300645ABF72ABBE064A87BC943678DF2567986D720A70C8F48214">>}, {<<"parse_trans">>, <<"16328AB840CC09919BD10DAB29E431DA3AF9E9E7E7E6F0089DD5A2D2820011D8">>}, {<<"ssl_verify_fun">>, <<"CF344F5692C82D2CD7554F5EC8FD961548D4FD09E7D22F5B62482E5AEAEBD4B0">>}, {<<"unicode_util_compat">>, <<"BC84380C9AB48177092F43AC89E4DFA2C6D62B40B8BD132B1059ECC7232F9A78">>}]}, {pkg_hash_ext,[ {<<"base64url">>, <<"F9B3ADD4731A02A9B0410398B475B33E7566A695365237A6BDEE1BB447719F5C">>}, {<<"certifi">>, <<"266DA46BDB06D6C6D35FDE799BCB28D36D985D424AD7C08B5BB48F5B5CDD4641">>}, - {<<"cfapi">>, <<"F6DE5DAA6DC8950787F9530D31042FAA76A9AEA7E4675246E4664CA8F9E93B4E">>}, + {<<"cfapi">>, <<"34177648F4BC938D7B836135CAA07B877AC422C3F8A255FF86B01F1575B1DEBB">>}, {<<"ctx">>, <<"A14ED2D1B67723DBEBBE423B28D7615EB0BDCBA6FF28F2D1F1B0A7E1D4AA5FC2">>}, - {<<"erlang_murmurhash">>, <<"BF831D4FCC76B830B2EF27C8277477A85ACAD076F45223D7277A714ACA5421D6">>}, {<<"hackney">>, <<"A4ECDAFF44297E9B5894AE499E9A070EA1888C84AFDD1FD9B7B2BC384950128E">>}, - {<<"harness_erlang_murmurhash">>, <<"BF831D4FCC76B830B2EF27C8277477A85ACAD076F45223D7277A714ACA5421D6">>}, - {<<"harness_ff_erlang_client_api">>, <<"F6DE5DAA6DC8950787F9530D31042FAA76A9AEA7E4675246E4664CA8F9E93B4E">>}, {<<"idna">>, <<"92376EB7894412ED19AC475E4A86F7B413C1B9FBB5BD16DCCD57934157944CEA">>}, {<<"jsx">>, <<"0C5CC8FDC11B53CC25CF65AC6705AD39E54ECC56D1C22E4ADB8F5A53FB9427F3">>}, {<<"metrics">>, <<"69B09ADDDC4F74A40716AE54D140F93BEB0FB8978D8636EADED0C31B6F099F16">>}, {<<"mimerl">>, <<"F278585650AA581986264638EBF698F8BB19DF297F66AD91B18910DFC6E19323">>}, {<<"mochiweb">>, <<"8B5ECFECC26D5D083F9BEC5CE969D717676B6A4FACBDF5915E0498CDFE035A26">>}, + {<<"murmur">>, <<"02B4DDA9327AC6650CC9A8D007EC5244B609397B9110C5AD8549224EEF9AFC60">>}, {<<"parse_trans">>, <<"07CD9577885F56362D414E8C4C4E6BDF10D43A8767ABB92D24CBE8B24C54888B">>}, {<<"ssl_verify_fun">>, <<"BDB0D2471F453C88FF3908E7686F86F9BE327D065CC1EC16FA4540197EA04680">>}, {<<"unicode_util_compat">>, <<"25EEE6D67DF61960CF6A794239566599B09E17E668D3700247BC498638152521">>}]} diff --git a/src/cfclient.app.src b/src/cfclient.app.src index 67aae6d..fde8ed7 100644 --- a/src/cfclient.app.src +++ b/src/cfclient.app.src @@ -4,7 +4,7 @@ [ {description, "Harness Feature Flags Server SDK"}, {pkg_name, "harness_ff_erlang_server_sdk"}, - {vsn, "1.2.1"}, + {vsn, "2.0.0"}, {registered, []}, {mod, {cfclient_app, []}}, {applications, [kernel, stdlib, cfapi]}, diff --git a/src/cfclient.erl b/src/cfclient.erl index 293ddbb..85119c2 100644 --- a/src/cfclient.erl +++ b/src/cfclient.erl @@ -8,17 +8,20 @@ -include("cfclient_config.hrl"). --export([ - bool_variation/3, - bool_variation/4, - string_variation/3, - string_variation/4, - number_variation/3, - number_variation/4, - json_variation/3, - json_variation/4, - close/0, - close/1]). +-export( + [ + bool_variation/3, + bool_variation/4, + string_variation/3, + string_variation/4, + number_variation/3, + number_variation/4, + json_variation/3, + json_variation/4, + close/0, + close/1 + ] +). -type target() :: #{ identifier := binary(), @@ -181,11 +184,14 @@ json_variation(Config, FlagKey, Target0, Default) when is_binary(FlagKey) -> Default end. + close() -> close(default). + close(Name) when is_atom(Name) -> Config = cfclient_config:get_config(Name), cfclient_instance:stop(Config). + % Convert target identifier to binary, as users can provide it as a string, % binary, or atom, but client API works in binary. normalize_target(#{identifier := Id} = Target) when is_binary(Id) -> Target; diff --git a/src/cfclient_app.erl b/src/cfclient_app.erl index 5adc89e..46fdfda 100644 --- a/src/cfclient_app.erl +++ b/src/cfclient_app.erl @@ -18,12 +18,13 @@ start(_StartType, _StartArgs) -> true -> logger:set_module_level(cfclient_evaluator, info), [{verbose_evaluation_logs, true}] ++ Config; - false -> - Config - end, + false -> Config + end, StartDefaultInstance = application:get_env(cfclient, start_default_instance, true), - cfclient_sup:start_link([{api_key, ApiKey}, {config, Config2}, {start_default_instance, StartDefaultInstance}]). + cfclient_sup:start_link( + [{api_key, ApiKey}, {config, Config2}, {start_default_instance, StartDefaultInstance}] + ). -stop(_State) -> ok. \ No newline at end of file +stop(_State) -> ok. diff --git a/src/cfclient_config.erl b/src/cfclient_config.erl index 8623324..a955191 100644 --- a/src/cfclient_config.erl +++ b/src/cfclient_config.erl @@ -8,20 +8,25 @@ -include("cfclient_config.hrl"). --export([ - authenticate/2, - create_tables/1, - defaults/0, - get_config/0, - get_config/1, - get_value/1, - get_value/2, - init/1, - normalize/1, - parse_jwt/1, - set_config/1, - set_config/2 - , delete_tables/1, get_table_names/1]). +-export( + [ + authenticate/2, + create_tables/1, + defaults/0, + get_config/0, + get_config/1, + get_value/1, + get_value/2, + init/1, + normalize/1, + parse_jwt/1, + set_config/1, + set_config/2, + delete_tables/1, + get_table_names/1, + is_retry_code/1 + ] +). -type config() :: map(). @@ -92,7 +97,7 @@ defaults() -> metrics_counter_table => ?METRICS_COUNTER_TABLE, % Enable to info log evaluation related logs - useful if customer production systems don't use debug logs verbose_evaluation_logs => ?DEFAULT_VERBOSE_EVALUATION_LOGS - }. + }. -spec normalize(proplists:proplist()) -> map(). @@ -159,8 +164,8 @@ authenticate({environment_variable, APIKeyEnvVar}, Config) -> false -> ?LOG_ERROR("Environment variable for API Key not found"), {error, not_configured}; - APIKey -> - authenticate(APIKey, Config) + + APIKey -> authenticate(APIKey, Config) end; authenticate(ApiKey, Config) when is_list(ApiKey) -> authenticate(list_to_binary(ApiKey), Config); @@ -168,6 +173,12 @@ authenticate(ApiKey, Config) when is_list(ApiKey) -> authenticate(list_to_binary authenticate(ApiKey, Config) -> #{config_url := ConfigUrl} = Config, Opts = #{cfg => #{host => ConfigUrl}, params => #{apiKey => ApiKey}}, + RetryLimit = 5, + RetryDelay = 1000, + authenticate_with_retry(Opts, Config, ApiKey, RetryLimit, RetryDelay). + + +authenticate_with_retry(Opts, Config, ApiKey, RetryLimit, RetryDelay) -> case cfapi_client_api:authenticate(ctx:new(), Opts) of {ok, #{authToken := AuthToken}, _} -> {ok, Project} = cfclient_config:parse_jwt(AuthToken), @@ -175,9 +186,37 @@ authenticate(ApiKey, Config) -> maps:merge(Config, #{api_key => ApiKey, auth_token => AuthToken, project => Project}), {ok, MergedConfig}; - {error, Response, _} -> {error, Response} + % Non-200 status codes + {error, Reason, Response} -> + case cfclient_config:is_retry_code(Response) of + true when RetryLimit > 0 -> + timer:sleep(RetryDelay), + NewRetryLimit = RetryLimit - 1, + NewRetryDelay = RetryDelay * 2, + ?LOG_WARNING( + "Error when authenticating cfclient: ~p retrying with ~p: attempts left", + [Reason, NewRetryLimit] + ), + authenticate_with_retry(Opts, Config, ApiKey, NewRetryLimit, NewRetryDelay); + + _ -> {error, Reason} + end; + + % Other request related errors from the hackney client + {error, Reason} when RetryLimit > 0 -> + timer:sleep(RetryDelay), + NewRetryLimit = RetryLimit - 1, + NewRetryDelay = RetryDelay * 2, + ?LOG_WARNING( + "Error when authenticating cfclient: ~p retrying with ~p: attempts left", + [Reason, NewRetryLimit] + ), + authenticate_with_retry(Opts, Config, ApiKey, NewRetryLimit, NewRetryDelay); + + {error, Reason} when RetryLimit == 0 -> {error, Reason} end. + % TODO: validate the JWT -spec parse_jwt(binary()) -> {ok, map()} | {error, Reason :: term()}. parse_jwt(JwtToken) -> @@ -204,8 +243,8 @@ create_tables(Config) -> case ets:whereis(ConfigTable) of undefined -> ConfigTable = ets:new(ConfigTable, [named_table, set, public, {read_concurrency, true}]); - _TID -> - noop + + _TID -> noop end, CacheTable = ets:new(CacheTable, [named_table, set, public, {read_concurrency, true}]), MetricsTargetTable = ets:new(MetricsTargetTable, [named_table, set, public]), @@ -213,13 +252,15 @@ create_tables(Config) -> MetricsCounterTable = ets:new(MetricsCounterTable, [named_table, set, public]), ok. + -spec delete_tables(list()) -> ok. delete_tables([H | T]) -> logger:debug("Deleting table ~s ", [H]), ets:delete(H), delete_tables(T); -delete_tables([]) -> - ok. + +delete_tables([]) -> ok. + get_table_names(Config) -> #{ @@ -268,3 +309,7 @@ get_value(Key, Opts) -> Config = get_config(), maps:get(Key, Config) end. + + +% Helper function for retryable http codes +is_retry_code(#{status := Status}) -> lists:member(Status, [408, 425, 429, 500, 502, 503, 504]). diff --git a/src/cfclient_evaluator.erl b/src/cfclient_evaluator.erl index 1c04212..5e62605 100644 --- a/src/cfclient_evaluator.erl +++ b/src/cfclient_evaluator.erl @@ -28,7 +28,6 @@ excluded => [map()] | null, included => [map()] | null }. - -type target() :: cfclient:target(). -type variation_map() :: #{ variation := binary(), @@ -82,13 +81,13 @@ -include("cfclient_evaluator_operators.hrl"). --define(LOG_EVALUATION_STATE(IsVerboseEvaluationEnabled, Message, Args), +-define( + LOG_EVALUATION_STATE(IsVerboseEvaluationEnabled, Message, Args), case IsVerboseEvaluationEnabled of - false -> - ?LOG_DEBUG(Message, Args); - true -> - ?LOG_INFO(Message, Args) - end). + false -> ?LOG_DEBUG(Message, Args); + true -> ?LOG_INFO(Message, Args) + end +). %% Public API @@ -159,17 +158,25 @@ evaluate(FlagId, Target, Config, Kind) -> {ok, Id :: binary(), Value :: term()} | {error, atom()}. evaluate_flag(off, #{state := <<"off">>} = Flag, _Target, Config) -> #{verbose_evaluation_logs := IsVerboseLogging} = Config, - ?LOG_EVALUATION_STATE(IsVerboseLogging, "Flag state off for flag ~p, returning default 'off' variation", [Flag]), + ?LOG_EVALUATION_STATE( + IsVerboseLogging, + "Flag state off for flag ~p, returning default 'off' variation", + [Flag] + ), return_default_off_variation(Flag, Config); evaluate_flag(off, #{state := <<"on">>} = Flag, Target, Config) -> #{verbose_evaluation_logs := IsVerboseLogging} = Config, - ?LOG_EVALUATION_STATE(IsVerboseLogging,"Flag state on for flag ~p", [Flag]), + ?LOG_EVALUATION_STATE(IsVerboseLogging, "Flag state on for flag ~p", [Flag]), evaluate_flag(prerequisites, Flag, Target, Config); evaluate_flag(prerequisites, #{prerequisites := []} = Flag, Target, Config) -> #{verbose_evaluation_logs := IsVerboseLogging} = Config, - ?LOG_EVALUATION_STATE(IsVerboseLogging, "Prerequisites not set for flag ~p, target ~p", [Flag, Target]), + ?LOG_EVALUATION_STATE( + IsVerboseLogging, + "Prerequisites not set for flag ~p, target ~p", + [Flag, Target] + ), evaluate_flag(target_rules, Flag, Target, Config); evaluate_flag(prerequisites, #{prerequisites := Prereqs} = Flag, Target, Config) @@ -177,40 +184,68 @@ when is_list(Prereqs) -> case search_prerequisites(Prereqs, Target, Config) of true -> #{verbose_evaluation_logs := IsVerboseLogging} = Config, - ?LOG_EVALUATION_STATE(IsVerboseLogging, "Prerequisites met for flag ~p, target ~p", [Flag, Target]), + ?LOG_EVALUATION_STATE( + IsVerboseLogging, + "Prerequisites met for flag ~p, target ~p", + [Flag, Target] + ), evaluate_flag(target_rules, Flag, Target, Config); _ -> #{verbose_evaluation_logs := IsVerboseLogging} = Config, - ?LOG_EVALUATION_STATE(IsVerboseLogging, "Prerequisites not met for flag ~p, target ~p", [Flag, Target]), + ?LOG_EVALUATION_STATE( + IsVerboseLogging, + "Prerequisites not met for flag ~p, target ~p", + [Flag, Target] + ), return_default_off_variation(Flag, Config) end; evaluate_flag(prerequisites, Flag, Target, Config) -> #{verbose_evaluation_logs := IsVerboseLogging} = Config, - ?LOG_EVALUATION_STATE(IsVerboseLogging, "Prerequisites not set for flag ~p, target ~p", [Flag, Target]), + ?LOG_EVALUATION_STATE( + IsVerboseLogging, + "Prerequisites not set for flag ~p, target ~p", + [Flag, Target] + ), evaluate_flag(target_rules, Flag, Target, Config); evaluate_flag(target_rules, #{variationToTargetMap := []} = Flag, Target, Config) -> #{verbose_evaluation_logs := IsVerboseLogging} = Config, - ?LOG_EVALUATION_STATE(IsVerboseLogging, "Target rules not set for flag ~p, target ~p", [Flag, Target]), + ?LOG_EVALUATION_STATE( + IsVerboseLogging, + "Target rules not set for flag ~p, target ~p", + [Flag, Target] + ), evaluate_flag(group_rules, Flag, Target, Config); evaluate_flag(target_rules, #{variationToTargetMap := null} = Flag, Target, Config) -> #{verbose_evaluation_logs := IsVerboseLogging} = Config, - ?LOG_EVALUATION_STATE(IsVerboseLogging, "Target rules not set for flag ~p, target ~p", [Flag, Target]), + ?LOG_EVALUATION_STATE( + IsVerboseLogging, + "Target rules not set for flag ~p, target ~p", + [Flag, Target] + ), evaluate_flag(group_rules, Flag, Target, Config); evaluate_flag(target_rules, #{variationToTargetMap := TM} = Flag, Target, Config) when TM /= null -> case evaluate_target_rule(TM, Target) of false -> #{verbose_evaluation_logs := IsVerboseLogging} = Config, - ?LOG_EVALUATION_STATE(IsVerboseLogging, "Target rules map did not match flag ~p, target ~p", [Flag, Target]), + ?LOG_EVALUATION_STATE( + IsVerboseLogging, + "Target rules map did not match flag ~p, target ~p", + [Flag, Target] + ), evaluate_flag(group_rules, Flag, Target, Config); TargetVariationId -> #{verbose_evaluation_logs := IsVerboseLogging} = Config, - ?LOG_EVALUATION_STATE(IsVerboseLogging, "Target rules map matched flag ~p, target ~p", [Flag, Target]), + ?LOG_EVALUATION_STATE( + IsVerboseLogging, + "Target rules map matched flag ~p, target ~p", + [Flag, Target] + ), % Return both variation identifier and value, as prerequisites % compare on identifier return_target_or_group_variation(Flag, TargetVariationId) @@ -218,29 +253,49 @@ evaluate_flag(target_rules, #{variationToTargetMap := TM} = Flag, Target, Config evaluate_flag(target_rules, Flag, Target, Config) -> #{verbose_evaluation_logs := IsVerboseLogging} = Config, - ?LOG_EVALUATION_STATE(IsVerboseLogging, "Target rules not set for flag ~p, target ~p", [Flag, Target]), + ?LOG_EVALUATION_STATE( + IsVerboseLogging, + "Target rules not set for flag ~p, target ~p", + [Flag, Target] + ), evaluate_flag(group_rules, Flag, Target, Config); evaluate_flag(group_rules, #{rules := []} = Flag, Target, Config) -> #{verbose_evaluation_logs := IsVerboseLogging} = Config, - ?LOG_EVALUATION_STATE(IsVerboseLogging, "Group rules not set for flag ~p, target ~p", [Flag, Target]), + ?LOG_EVALUATION_STATE( + IsVerboseLogging, + "Group rules not set for flag ~p, target ~p", + [Flag, Target] + ), evaluate_flag(default_on, Flag, Target, Config); evaluate_flag(group_rules, #{rules := Rules} = Flag, Target, Config) when Rules /= null -> case search_rules_for_inclusion(sort_by_priority(Rules), Target, Config) of false -> #{verbose_evaluation_logs := IsVerboseLogging} = Config, - ?LOG_EVALUATION_STATE(IsVerboseLogging, "Group rules did not match flag ~p, target ~p", [Flag, Target]), + ?LOG_EVALUATION_STATE( + IsVerboseLogging, + "Group rules did not match flag ~p, target ~p", + [Flag, Target] + ), evaluate_flag(default_on, Flag, Target, Config); excluded -> #{verbose_evaluation_logs := IsVerboseLogging} = Config, - ?LOG_EVALUATION_STATE(IsVerboseLogging, "Group rules excluded flag ~p, target ~p", [Flag, Target]), + ?LOG_EVALUATION_STATE( + IsVerboseLogging, + "Group rules excluded flag ~p, target ~p", + [Flag, Target] + ), evaluate_flag(default_on, Flag, Target, Config); GroupVariationId when is_binary(GroupVariationId) -> #{verbose_evaluation_logs := IsVerboseLogging} = Config, - ?LOG_EVALUATION_STATE(IsVerboseLogging, "Group rules matched flag ~p, target ~p", [Flag, Target]), + ?LOG_EVALUATION_STATE( + IsVerboseLogging, + "Group rules matched flag ~p, target ~p", + [Flag, Target] + ), return_target_or_group_variation(Flag, GroupVariationId) end; @@ -255,12 +310,17 @@ evaluate_flag(default_on, Flag, Target, Config) -> {value, #{value := Value}} -> #{verbose_evaluation_logs := IsVerboseLogging} = Config, - ?LOG_EVALUATION_STATE(IsVerboseLogging, "Default on variation returned for flag ~p, target ~p, id ~s: ~p", [Flag, Target, Id, Value]), + ?LOG_EVALUATION_STATE( + IsVerboseLogging, + "Default on variation returned for flag ~p, target ~p, id ~s: ~p", + [Flag, Target, Id, Value] + ), {ok, Id, Value} end. --spec return_default_off_variation(flag(), config()) -> {ok, Id :: binary(), term()} | {error, not_found}. +-spec return_default_off_variation(flag(), config()) -> + {ok, Id :: binary(), term()} | {error, not_found}. return_default_off_variation(Flag, Config) -> #{variations := Variations, offVariation := Id} = Flag, case search_by_id(Variations, Id) of @@ -270,7 +330,11 @@ return_default_off_variation(Flag, Config) -> {value, #{value := Value}} -> #{verbose_evaluation_logs := IsVerboseLogging} = Config, - ?LOG_EVALUATION_STATE(IsVerboseLogging, "Default off variation returned for flag ~p, id ~s: ~p", [Flag, Id, Value]), + ?LOG_EVALUATION_STATE( + IsVerboseLogging, + "Default off variation returned for flag ~p, id ~s: ~p", + [Flag, Id, Value] + ), {ok, Id, Value} end. @@ -493,7 +557,9 @@ apply_percentage_rollout([], _, _, _) -> excluded. -spec should_rollout(binary(), binary(), integer()) -> boolean(). should_rollout(BucketBy, TargetValue, Percentage) -> - Hash = erlang_murmurhash:murmurhash3_32(<>), + Concatenated = <>, + % Using a pure Elixir library for murmur3 + Hash = 'Elixir.Murmur':hash_x86_32(Concatenated), BucketID = (Hash rem 100) + 1, (Percentage > 0) andalso (BucketID =< Percentage). @@ -526,9 +592,12 @@ check_prerequisite(PrerequisiteFlag, PrerequisiteFlagId, Prerequisite, Target, C case evaluate_flag(off, PrerequisiteFlag, Target, Config) of {ok, VariationId, _} -> #{verbose_evaluation_logs := IsVerboseLogging} = Config, - ?LOG_EVALUATION_STATE(IsVerboseLogging, "Prerequisite flag ~p has variation ~p, target ~p", [PrerequisiteFlagId, VariationId, Target]), + ?LOG_EVALUATION_STATE( + IsVerboseLogging, + "Prerequisite flag ~p has variation ~p, target ~p", + [PrerequisiteFlagId, VariationId, Target] + ), PrerequisiteVariations = maps:get(variations, Prerequisite), - ?LOG_EVALUATION_STATE(IsVerboseLogging,"Prerequisite flag ~p should have variations ~p", [PrerequisiteFlagId, PrerequisiteVariations]), lists:member(VariationId, PrerequisiteVariations); {error, Reason} -> diff --git a/src/cfclient_instance.erl b/src/cfclient_instance.erl index 35140dc..1c3ac6a 100644 --- a/src/cfclient_instance.erl +++ b/src/cfclient_instance.erl @@ -29,7 +29,7 @@ start_link(Args) -> gen_server:start_link(?MODULE, Args, []). init(Args) -> case proplists:get_value(start_default_instance, Args, true) of - true -> + true -> ApiKey = proplists:get_value(api_key, Args), Config0 = proplists:get_value(config, Args, []), Config1 = cfclient_config:normalize(Config0), @@ -40,11 +40,10 @@ init(Args) -> % Used during testing to start up cfclient instances % without a valid API key. case maps:get(unit_test_mode, Config1, undefined) of - undefined -> - {stop, authenticate}; - _UnitTestMode -> - {ok, Config1} + undefined -> {stop, authenticate}; + _UnitTestMode -> {ok, Config1} end; + {error, Reason} -> InstanceName = maps:get(name, Config1), ?LOG_ERROR("Authentication failed for cflient instance '~p': ~p", [InstanceName, Reason]), @@ -59,13 +58,13 @@ init(Args) -> ?LOG_INFO("Started unique instance of cfclient: ~p", [maps:get(name, Config1)]), {ok, Config} end; + false -> ?LOG_INFO("Default cfclient instance not started"), {ok, default_instance_not_started} end. - handle_info(metrics, Config) -> ?LOG_DEBUG("Metrics triggered"), #{analytics_push_interval := AnalyticsPushInterval} = Config, @@ -103,16 +102,24 @@ start_analytics(_) -> ok. retrieve_flags(#{poll_enabled := true} = Config) -> case cfclient_retrieve:retrieve_flags(Config) of {ok, Flags} -> [cfclient_cache:cache_flag(F, Config) || F <- Flags]; - {error, Reason} -> ?LOG_ERROR("Could not retrive flags from API: ~p", [Reason]) + + {error, Reason} -> + ?LOG_ERROR("Could not retrive flags from API for this poll interval, reason: ~p", [Reason]) end, case cfclient_retrieve:retrieve_segments(Config) of {ok, Segments} -> [cfclient_cache:cache_segment(S, Config) || S <- Segments]; - {error, Reason1} -> ?LOG_ERROR("Could not retrive segments from API: ~p", [Reason1]) + + {error, Reason1} -> + ?LOG_ERROR( + "Could not retrive segments from API for this poll interval, reason: ~p", + [Reason1] + ) end, ok; retrieve_flags(_) -> ok. + -spec stop(map()) -> ok | {error, not_found, term()}. stop(Config) -> #{name := Name} = Config, @@ -124,9 +131,11 @@ stop(Config) -> default -> supervisor:terminate_child(cfclient_sup, cfclient_instance), logger:debug("Terminating cfclient_instance default process "); + _InstanceName -> - logger:debug("User has started cfclient instance in their own supervision tree, please ensure you terminiate - the child process") + logger:debug( + "User has started cfclient instance in their own supervision tree, please ensure you terminiate\n the child process" + ) end, logger:debug("Stopped cfclient instance ~s ", [Name]), - ok. \ No newline at end of file + ok. diff --git a/src/cfclient_metrics.erl b/src/cfclient_metrics.erl index 3ccc184..ec81f77 100644 --- a/src/cfclient_metrics.erl +++ b/src/cfclient_metrics.erl @@ -37,7 +37,7 @@ process_metrics(Config) -> ok; {ok, Response} -> - ?LOG_DEBUG("Posted metrics to server: ~p", [Response]), + ?LOG_INFO("Posted metrics to server: ~p", [Response]), % TODO: race condition, will lose any metrics made during call to % post_metrics clear_caches(Config), @@ -61,9 +61,38 @@ post_metrics(MetricsData, MetricsTargetData, Config) -> cfg => #{auth => #{'BearerAuth' => <<"Bearer ", AuthToken/binary>>}, host => EventsUrl}, params => #{metricsData => MetricsData, targetData => MetricsTargetData} }, + RetryLimit = 5, + RetryDelay = 1000, + post_metrics_with_retry(Cluster, Environment, Opts, RetryLimit, RetryDelay). + + +post_metrics_with_retry(Cluster, Environment, Opts, RetryLimit, RetryDelay) -> case cfapi_metrics_api:post_metrics(ctx:new(), #{cluster => Cluster}, Environment, Opts) of {ok, Response, _} -> {ok, Response}; - {error, Response, _} -> {error, Response} + + {error, Reason} when RetryLimit > 0 -> + timer:sleep(RetryDelay), + NewRetryLimit = RetryLimit - 1, + NewRetryDelay = RetryDelay * 2, + ?LOG_WARNING( + "Error posting metrics: ~p retrying with ~p: attempts left", + [Reason, NewRetryLimit] + ), + post_metrics_with_retry(Cluster, Environment, Opts, NewRetryLimit, NewRetryDelay); + + {error, Reason} when RetryLimit == 0 -> {error, Reason}; + + {error, Reason, _} when RetryLimit > 0 -> + timer:sleep(RetryDelay), + NewRetryLimit = RetryLimit - 1, + NewRetryDelay = RetryDelay * 2, + ?LOG_WARNING( + "Error posting metrics: ~p retrying with ~p: attempts left", + [Reason, NewRetryLimit] + ), + post_metrics_with_retry(Cluster, Environment, Opts, NewRetryLimit, NewRetryDelay); + + {error, Reason, _} when RetryLimit == 0 -> {error, Reason} end. @@ -181,15 +210,12 @@ format_target(Target) -> SanitisedIdentifier = target_field_to_binary(maps:get(identifier, Target)), SanitisedName = target_field_to_binary(maps:get(name, Target, SanitisedIdentifier)), SanitisedAttributes = target_attributes_to_metrics(Target), - #{identifier => SanitisedIdentifier, name => SanitisedName, attributes => SanitisedAttributes}. -target_field_to_binary(TargetName) when is_binary(TargetName) -> - TargetName; -target_field_to_binary(TargetName) when is_atom(TargetName) -> - atom_to_binary(TargetName); -target_field_to_binary(TargetName) when is_list(TargetName) -> - list_to_binary(TargetName). + +target_field_to_binary(TargetName) when is_binary(TargetName) -> TargetName; +target_field_to_binary(TargetName) when is_atom(TargetName) -> atom_to_binary(TargetName); +target_field_to_binary(TargetName) when is_list(TargetName) -> list_to_binary(TargetName). -spec target_attributes_to_metrics(cfclient:target()) -> [map()]. target_attributes_to_metrics(#{attributes := Values}) when is_map(Values) -> diff --git a/src/cfclient_retrieve.erl b/src/cfclient_retrieve.erl index fee07c8..a4ec022 100644 --- a/src/cfclient_retrieve.erl +++ b/src/cfclient_retrieve.erl @@ -10,6 +10,8 @@ -type segment() :: cfapi_segment:cfapi_segment(). -type config() :: map(). +-include_lib("kernel/include/logger.hrl"). + % @doc Retrieve all features from Feature Flags API. -spec retrieve_flags(config()) -> {ok, [flag()]} | {error, Reason :: term()}. retrieve_flags(Config) -> @@ -17,13 +19,26 @@ retrieve_flags(Config) -> #{environment := Env, clusterIdentifier := Cluster} = Project, Opts = #{ - cfg => #{auth => #{'BearerAuth' => <<"Bearer ", AuthToken/binary>>}, host => ConfigUrl}, + cfg + => + #{ + auth => #{'BearerAuth' => <<"Bearer ", AuthToken/binary>>}, + host => ConfigUrl, + hackney_opts => [{timeout, 1}] + }, params => #{cluster => Cluster} }, - case cfapi_client_api:get_feature_config(ctx:new(), Env, Opts) of - {ok, Values, _} -> {ok, Values}; - {error, Reason, _} -> {error, Reason} - end. + % Maximum number of retries + RetryLimit = 5, + % Initial delay between retries in milliseconds + RetryDelay = 1000, + retrieve_with_retry( + fun cfapi_client_api:get_feature_config/3, + [ctx:new(), Env, Opts], + RetryLimit, + RetryDelay, + flags + ). % @doc Retrieve all segments from Feature Flags API. @@ -31,12 +46,59 @@ retrieve_flags(Config) -> retrieve_segments(Config) -> #{auth_token := AuthToken, project := Project, config_url := ConfigUrl} = Config, #{environment := Env, clusterIdentifier := Cluster} = Project, + RetryLimit = 5, + RetryDelay = 1000, Opts = #{ - cfg => #{auth => #{'BearerAuth' => <<"Bearer ", AuthToken/binary>>}, host => ConfigUrl}, + cfg + => + #{ + auth => #{'BearerAuth' => <<"Bearer ", AuthToken/binary>>}, + host => ConfigUrl, + hackney_opts => [{timeout, 20000}] + }, params => #{cluster => Cluster} }, - case cfapi_client_api:get_all_segments(ctx:new(), Env, Opts) of + retrieve_with_retry( + fun cfapi_client_api:get_all_segments/3, + [ctx:new(), Env, Opts], + RetryLimit, + RetryDelay, + segments + ). + + +% Recursive function for retrying the request +retrieve_with_retry(Func, Args, RetryLimit, RetryDelay, Endpoint) -> + case apply(Func, Args) of {ok, Values, _} -> {ok, Values}; - {error, Reason, _} -> {error, Reason} + % Retry on certain status codes + {error, Reason, Response} -> + case cfclient_config:is_retry_code(Response) of + true when RetryLimit > 0 -> + timer:sleep(RetryDelay), + NewRetryLimit = RetryLimit - 1, + NewRetryDelay = RetryDelay * 2, + ?LOG_WARNING( + "Error retrieving ~p: ~p, retrying with ~p: attempts left", + [Endpoint, Reason, NewRetryLimit] + ), + retrieve_with_retry(Func, Args, NewRetryLimit, NewRetryDelay, Endpoint); + + _ -> {error, Reason} + end; + + % Retry on request errors + {error, Reason} when RetryLimit > 0 -> + timer:sleep(RetryDelay), + NewRetryLimit = RetryLimit - 1, + % Exponential backoff + NewRetryDelay = RetryDelay * 2, + ?LOG_WARNING( + "Error retrieving ~p: ~p, retrying with: ~p attempts left", + [Endpoint, Reason, NewRetryLimit] + ), + retrieve_with_retry(Func, Args, NewRetryLimit, NewRetryDelay, Endpoint); + + {error, Reason} when RetryLimit == 0 -> {error, Reason} end. diff --git a/src/cfclient_sup.erl b/src/cfclient_sup.erl index 979af82..cd1876e 100644 --- a/src/cfclient_sup.erl +++ b/src/cfclient_sup.erl @@ -18,5 +18,5 @@ start_link(Args) -> supervisor:start_link({local, ?MODULE}, ?MODULE, Args). init(Args) -> ChildSpecs = [#{id => cfclient_instance, start => {cfclient_instance, start_link, [Args]}}], - SupFlags = #{strategy => one_for_one, intensity => 1, period => 5}, + SupFlags = #{strategy => one_for_one, intensity => 4, period => 5}, {ok, {SupFlags, lists:flatten(ChildSpecs)}}. diff --git a/test/cfclient_evaluator_tests.erl b/test/cfclient_evaluator_tests.erl index 7d1368b..97dfb0c 100644 --- a/test/cfclient_evaluator_tests.erl +++ b/test/cfclient_evaluator_tests.erl @@ -161,7 +161,7 @@ variations_bool() -> ) end, ?_assertEqual( - {error,flag_type_mismatch}, + {error, flag_type_mismatch}, cfclient_evaluator:bool_variation(<<"My_string_flag">>, existing_target_a(), config()) ) }, @@ -360,7 +360,7 @@ variations_string() -> ) end, ?_assertEqual( - {error,flag_type_mismatch}, + {error, flag_type_mismatch}, cfclient_evaluator:string_variation(<<"My_number_flag">>, existing_target_a(), config()) ) }, @@ -546,7 +546,7 @@ variations_number() -> ) end, ?_assertEqual( - {error,flag_type_mismatch}, + {error, flag_type_mismatch}, cfclient_evaluator:number_variation(<<"My_boolean_flag">>, existing_target_a(), config()) ) }, @@ -742,7 +742,7 @@ variations_json() -> ) end, ?_assertEqual( - {error,flag_type_mismatch}, + {error, flag_type_mismatch}, cfclient_evaluator:json_variation(<<"My_json_flag">>, existing_target_a(), config()) ) }, diff --git a/test/cfclient_ff_test_cases.erl b/test/cfclient_ff_test_cases.erl index f473ead..1e639bb 100644 --- a/test/cfclient_ff_test_cases.erl +++ b/test/cfclient_ff_test_cases.erl @@ -63,7 +63,13 @@ evaluate_file(Path) -> setup, fun () -> - Config = [{name, ?MODULE}, {analytics_enabled, false}, {poll_enabled, false}, {unit_test_mode, true}], + Config = + [ + {name, ?MODULE}, + {analytics_enabled, false}, + {poll_enabled, false}, + {unit_test_mode, true} + ], {ok, Pid} = cfclient_instance:start_link([{config, Config}]), [cfclient_cache:cache_flag(F) || F <- Flags], [cfclient_cache:cache_segment(S) || S <- Segments],