diff --git a/.github/workflows/gh-ci.yaml b/.github/workflows/gh-ci.yaml index d0d6124..857e415 100644 --- a/.github/workflows/gh-ci.yaml +++ b/.github/workflows/gh-ci.yaml @@ -29,7 +29,7 @@ jobs: stable-python-version: ${{ steps.get-compatible-python.outputs.stable-python }} python-matrix: ${{ steps.get-compatible-python.outputs.python-versions }} steps: - - uses: actions/setup-python@v4 + - uses: actions/setup-python@v5.3.0 with: python-version: "3.11" @@ -39,15 +39,23 @@ jobs: release: "latest" main-tests: - if: "github.repository == 'rsexton2/basicrta'" + if: "github.repository == 'becksteinlab/basicrta'" needs: environment-config runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: - os: [macOS-latest, ubuntu-latest, windows-latest] + # see issue #10 + # os: [macOS-latest, ubuntu-latest, windows-latest] + os: [macOS-latest, ubuntu-latest] python-version: ${{ fromJSON(needs.environment-config.outputs.python-matrix) }} +# python-version: ["3.10", "3.11", "3.12"] mdanalysis-version: ["latest", "develop"] + exclude: + - python-version: "3.9" + # latest MDA requires python <= 3.13 + - python-version: "3.13" + - mdanalysis-version: "develop" steps: - uses: actions/checkout@v4 @@ -61,14 +69,13 @@ jobs: # More info on options: https://github.com/conda-incubator/setup-miniconda - name: Install conda dependencies - uses: conda-incubator/setup-miniconda@v2 + uses: conda-incubator/setup-miniconda@v3 with: python-version: ${{ matrix.python-version }} environment-file: devtools/conda-envs/test_env.yaml add-pip-as-python-dependency: true - architecture: x64 - miniforge-variant: Mambaforge + miniforge-variant: Miniforge3 use-mamba: true channels: conda-forge, defaults @@ -82,7 +89,7 @@ jobs: uses: MDAnalysis/install-mdanalysis@main with: version: ${{ matrix.mdanalysis-version }} - install-tests: false + install-tests: true installer: mamba shell: bash -l {0} @@ -103,19 +110,19 @@ jobs: - name: Run tests run: | - pytest -n 2 -v --cov=basicrta --cov-report=xml --color=yes basicrta/tests/ + pytest -n auto -v --cov=basicrta --cov-report=xml --color=yes basicrta/tests/ - name: codecov - if: github.repository == 'rsexton2/basicrta' && github.event_name != 'schedule' - uses: codecov/codecov-action@v3 + if: github.repository == 'becksteinlab/basicrta' && github.event_name != 'schedule' + uses: codecov/codecov-action@v5 with: - file: coverage.xml + files: coverage.xml name: codecov-${{ matrix.os }}-py${{ matrix.python-version }} verbose: True pylint_check: - if: "github.repository == 'rsexton2/basicrta'" + if: "github.repository == 'becksteinlab/basicrta'" needs: environment-config runs-on: ubuntu-latest @@ -123,10 +130,10 @@ jobs: - uses: actions/checkout@v4 - name: Set up Python - uses: actions/setup-python@v4 + uses: actions/setup-python@v5.3.0 with: python-version: ${{ needs.environment-config.outputs.stable-python-version }} - + #python-version: "3.12" - name: Install Pylint run: | which pip @@ -137,11 +144,11 @@ jobs: env: PYLINTRC: .pylintrc run: | - pylint basicrta + pylint basicrta --exit-zero pypi_check: - if: "github.repository == 'rsexton2/basicrta'" + if: "github.repository == 'becksteinlab/basicrta'" needs: environment-config runs-on: ubuntu-latest @@ -149,9 +156,11 @@ jobs: - uses: actions/checkout@v4 - name: Set up Python ${{ needs.environment-config.outputs.stable-python-version }} - uses: actions/setup-python@v4 +# - name: Set up Python + uses: actions/setup-python@v5.3.0 with: python-version: ${{ needs.environment-config.outputs.stable-python-version }} + #python-version: "3.12" - name: Install dependencies run: | diff --git a/.github/workflows/python-package.yml b/.github/workflows/python-package.yml deleted file mode 100644 index 56c3cc9..0000000 --- a/.github/workflows/python-package.yml +++ /dev/null @@ -1,47 +0,0 @@ -# This workflow will install Python dependencies, run tests and lint with a variety of Python versions -# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python - -name: Python package - -on: - push: - branches: [ "main" ] - pull_request: - branches: [ "main" ] - -jobs: - build: - - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - python-version: ["3.9", "3.10", "3.11"] - - steps: - - uses: actions/checkout@v4 - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v5 - with: - python-version: ${{ matrix.python-version }} - - name: Install dependencies - run: | - python -m pip install --upgrade pip - python -m pip install flake8 pytest pytest-cov numpy tqdm matplotlib MDAnalysis scipy pymbar seaborn - - if [ -f requirements.txt ]; then pip install -r requirements.txt; fi - - name: Lint with flake8 - run: | - # stop the build if there are Python syntax errors or undefined names - flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics - # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide - flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics - - name: Test with pytest - run: | - python -m pytest - python -m pytest --cov - - - name: Upload coverage reports to Codecov - uses: codecov/codecov-action@v3 - env: - CODECOV_TOKEN: ${{ secrets.CODECOV }} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c2f0698 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +/docs/_build/* +*__pycache__* +basicrta.egg-info/ +dist/ + diff --git a/.pylintrc b/.pylintrc index a889cba..4d2cbae 100644 --- a/.pylintrc +++ b/.pylintrc @@ -1,612 +1,655 @@ -# -*- Mode: conf; tab-width: 4; indent-tabs-mode:nil; coding:utf-8 -*- -[MASTER] +[MAIN] -# Specify a configuration file. -#rcfile= +# Analyse import fallback blocks. This can be used to support both Python 2 and +# 3 compatible code, which means that the block might have code that exists +# only in one or another interpreter, leading to false positives when analysed. +analyse-fallback-blocks=no + +# Clear in-memory caches upon conclusion of linting. Useful if running pylint +# in a server-like mode. +clear-cache-post-run=no + +# Load and enable all available extensions. Use --list-extensions to see a list +# all available extensions. +#enable-all-extensions= + +# In error mode, messages with a category besides ERROR or FATAL are +# suppressed, and no reports are done by default. Error mode is compatible with +# disabling specific errors. +#errors-only= + +# Always return a 0 (non-error) status code, even if lint errors are found. +# This is primarily useful in continuous integration scripts. +#exit-zero= + +# A comma-separated list of package or module names from where C extensions may +# be loaded. Extensions are loading into the active Python interpreter and may +# run arbitrary code. +extension-pkg-allow-list= + +# A comma-separated list of package or module names from where C extensions may +# be loaded. Extensions are loading into the active Python interpreter and may +# run arbitrary code. (This is an alternative name to extension-pkg-allow-list +# for backward compatibility.) +extension-pkg-whitelist= + +# Return non-zero exit code if any of these messages/categories are detected, +# even if score is above --fail-under value. Syntax same as enable. Messages +# specified are enabled, while categories only check already-enabled messages. +fail-on= + +# Specify a score threshold under which the program will exit with error. +fail-under=10 + +# Interpret the stdin as a python script, whose filename needs to be passed as +# the module_or_package argument. +#from-stdin= + +# Files or directories to be skipped. They should be base names, not paths. +ignore=CVS + +# Add files or directories matching the regular expressions patterns to the +# ignore-list. The regex matches against paths and can be in Posix or Windows +# format. Because '\\' represents the directory delimiter on Windows systems, +# it can't be used as an escape character. +ignore-paths=docs + +# Files or directories matching the regular expression patterns are skipped. +# The regex matches against base names, not paths. The default value ignores +# Emacs file locks +ignore-patterns=^\.# + +# List of module names for which member attributes should not be checked and +# will not be imported (useful for modules/projects where namespaces are +# manipulated during runtime and thus existing member attributes cannot be +# deduced by static analysis). It supports qualified module names, as well as +# Unix pattern matching. +ignored-modules= # Python code to execute, usually for sys.path manipulation such as # pygtk.require(). #init-hook= -# Add files or directories to the blacklist. They should be base names, not -# paths. -ignore= - -# Add files or directories matching the regex patterns to the blacklist. The -# regex matches against base names, not paths. -ignore-patterns= +# Use multiple processes to speed up Pylint. Specifying 0 will auto-detect the +# number of processors available to use, and will cap the count on Windows to +# avoid hangs. +jobs=1 -# Pickle collected data for later comparisons. -persistent=no +# Control the amount of potential inferred values when inferring a single +# object. This can help the performance when dealing with large functions or +# complex, nested conditions. +limit-inference-results=100 -# List of plugins (as comma separated values of python modules names) to load, +# List of plugins (as comma separated values of python module names) to load, # usually to register additional checkers. load-plugins= -# Use multiple processes to speed up Pylint. -jobs=1 +# Pickle collected data for later comparisons. +persistent=yes + +# Resolve imports to .pyi stubs if available. May reduce no-member messages and +# increase not-an-iterable messages. +prefer-stubs=no + +# Minimum Python version to use for version dependent checks. Will default to +# the version used to run pylint. +py-version=3.10 + +# Discover python modules and packages in the file system subtree. +recursive=no + +# Add paths to the list of the source roots. Supports globbing patterns. The +# source root is an absolute path or a path relative to the current working +# directory used to determine a package namespace for modules located under the +# source root. +source-roots= + +# When enabled, pylint would attempt to guess common misconfiguration and emit +# user-friendly hints instead of false-positive error messages. +suggestion-mode=yes # Allow loading of arbitrary C extensions. Extensions are imported into the # active Python interpreter and may run arbitrary code. unsafe-load-any-extension=no -# A comma-separated list of package or module names from where C extensions may -# be loaded. Extensions are loading into the active Python interpreter and may -# run arbitrary code -extension-pkg-whitelist= +# In verbose mode, extra non-checker-related info will be displayed. +#verbose= -# Allow optimization of some AST trees. This will activate a peephole AST -# optimizer, which will apply various small optimizations. For instance, it can -# be used to obtain the result of joining multiple strings with the addition -# operator. Joining a lot of strings can lead to a maximum recursion error in -# Pylint and this flag can prevent that. It has one side effect, the resulting -# AST will be different than the one from reality. This option is deprecated -# and it will be removed in Pylint 2.0. -optimize-ast=no +[BASIC] -[MESSAGES CONTROL] +# Naming style matching correct argument names. +argument-naming-style=snake_case -# Only show warnings with the listed confidence levels. Leave empty to show -# all. Valid levels: HIGH, INFERENCE, INFERENCE_FAILURE, UNDEFINED -confidence= +# Regular expression matching correct argument names. Overrides argument- +# naming-style. If left empty, argument names will be checked with the set +# naming style. +#argument-rgx= -# Enable the message, report, category or checker with the given id(s). You can -# either give multiple identifier separated by comma (,) or put this option -# multiple time (only on the command line, not in the configuration file where -# it should appear only once). See also the "--disable" option for examples. -disable=all - -enable=abstract-class-instantiated, - access-member-before-definition, - anomalous-unicode-escape-in-string, - apply-builtin, - assert-on-tuple, - assigning-non-slot, - assignment-from-no-return, - backtick, - bad-except-order, - bad-exception-context, - bad-format-character, - bad-format-string, - bad-format-string-key, - bad-open-mode, - bad-reversed-sequence, - bad-staticmethod-argument, - bad-str-strip-call, - binary-op-exception, - boolean-datetime - buffer-builtin, - catching-non-exception, - cmp-builtin, - cmp-method, - coerce-builtin, - coerce-method, - confusing-with-statement, - continue-in-finally, - delslice-method, - deprecated-method, - deprecated-module, - dict-iter-method, - dict-view-method, - duplicate-argument-name, - duplicate-bases, - duplicate-except, - duplicate-key, - eval-used, - exec-used, - execfile-builtin, - file-builtin, - format-combined-specification, - format-needs-mapping, - getslice-method, - global-at-module-level, - global-statement, - global-variable-not-assigned, - global-variable-undefined, - hex-method, - import-star-module-level, - inconsistent-mro, - inherit-non-class, - init-is-generator, - input-builtin, - intern-builtin, - invalid-all-object, - invalid-encoded-data, - invalid-format-index, - invalid-slots, - invalid-slots-object, - invalid-star-assignment-target, - logging-format-truncated, - logging-not-lazy, - logging-too-few-args, - logging-too-many-args, - logging-unsupported-format, - long-suffix, - lost-exception, - lowercase-l-suffix, - method-hidden, - misplaced-bare-raise, - misplaced-future, - missing-format-argument-key, - missing-format-attribute, - missing-format-string-key, - missing-kwoa, - missing-super-argument, - mixed-format-string, - mixed-indentation, - no-init, - no-method-argument, - non-iterator-returned, - non-parent-init-called, - nonexistent-operator, - nonlocal-and-global, - nonlocal-without-binding, - nonstandard-exception, - not-a-mapping, - not-an-iterable, - not-async-context-manager, - not-context-manager, - not-in-loop, - notimplemented-raised, - oct-method, - old-ne-operator, - old-octal-literal, - old-raise-syntax, - parameter-unpacking, - raising-non-exception, - raising-string, - raw_input-builtin, - redefine-in-handler, - redundant-keyword-arg, - redundant-unittest-assert, - reload-builtin, - repeated-keyword, - return-arg-in-generator, - return-in-init, - return-outside-function, - setslice-method, - signature-differs, - slots-on-old-class, - standarderror-builtin, - star-needs-assignment-target, - super-on-old-class, - too-few-format-args, - too-few-public-methods, - too-many-function-attributes, - too-many-star-expressions, - truncated-format-string, - unexpected-keyword-arg, - unichr-builtin, - unicode-builtin, - unnecessary-pass, - unpacking-in-except, - unreachable, - unsubscriptable-object, - unsupported-binary-operation, - unsupported-membership-test, - unused-format-string-argument, - unused-format-string-key, - useless-else-on-loop, - using-cmp-argument, - using-constant-test, - yield-inside-async-function, - yield-outside-function, - old-division, - relative-import, - no-absolute-import, - print-statement, - xrange-builtin, - zip-builtin-not-iterating, - map-builtin-not-iterating, - -# Things we'd like to try. -# Procedure: -# 1. Enable a bunch. -# 2. See if there's spurious ones; if so disable. -# 3. Record above. -# 4. Remove from this list. - # abstract-method, - # anomalous-backslash-in-string, - # arguments-differ, - # assignment-from-none, - # attribute-defined-outside-init, - # bad-builtin, - # bad-indentation, - # bad-super-call, - # bare-except, - # basestring-builtin, - # broad-except, - # cell-var-from-loop, - # dangerous-default-value, - # deprecated-lambda, - # expression-not-assigned, - # filter-builtin-not-iterating, - # fixme, - # function-redefined, - # import-error, - # indexing-exception, - # invalid-name, - # invalid-sequence-index, - # invalid-slice-index, - # logging-format-interpolation, - # long-builtin, - # metaclass-assignment, - # missing-docstring, - # next-method-called, - # no-member, - # no-self-argument, - # no-value-for-parameter, - # nonzero-method, - # not-callable, - # pointless-statement, - # pointless-string-statement, - # property-on-old-class, - # protected-access, - # redefined-builtin, - # redefined-outer-name, - # reduce-builtin, - # reimported, - # round-builtin, - # super-init-not-called, - # too-many-arguments, - # too-many-format-args, - # too-many-function-args, - # too-many-locals, - # undefined-all-variable, - # undefined-loop-variable, - # unexpected-special-method-signature, - # unnecessary-lambda, - # unnecessary-semicolon, - # unpacking-non-sequence, - # unused-argument, - # unused-import, - # unused-variable, - # unused-wildcard-import, - # used-before-assignment, - # wildcard-import, - # wrong-import-order, - # invalid-unary-operand-type, - # raising-bad-type, +# Naming style matching correct attribute names. +attr-naming-style=snake_case +# Regular expression matching correct attribute names. Overrides attr-naming- +# style. If left empty, attribute names will be checked with the set naming +# style. +#attr-rgx= -[REPORTS] +# Bad variable names which should always be refused, separated by a comma. +bad-names=foo, + bar, + baz, + toto, + tutu, + tata -# Set the output format. Available formats are text, parseable, colorized, msvs -# (visual studio) and html. You can also give a reporter class, eg -# mypackage.mymodule.MyReporterClass. -output-format=parseable +# Bad variable names regexes, separated by a comma. If names match any regex, +# they will always be refused +bad-names-rgxs= -# Put messages in a separate file for each module / package specified on the -# command line instead of printing them on stdout. Reports (if any) will be -# written in a file name "pylint_global.[txt|html]". This option is deprecated -# and it will be removed in Pylint 2.0. -files-output=no +# Naming style matching correct class attribute names. +class-attribute-naming-style=any -# Tells whether to display a full report or only the messages -reports=no +# Regular expression matching correct class attribute names. Overrides class- +# attribute-naming-style. If left empty, class attribute names will be checked +# with the set naming style. +#class-attribute-rgx= -# Python expression which should return a note less than 10 (10 is the highest -# note). You have access to the variables errors warning, statement which -# respectively contain the number of errors / warnings messages and the total -# number of statements analyzed. This is used by the global evaluation report -# (RP0004). -evaluation=10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10) +# Naming style matching correct class constant names. +class-const-naming-style=UPPER_CASE -# Template used to display messages. This is a python new-style format string -# used to format the message information. See doc for all details -#msg-template= +# Regular expression matching correct class constant names. Overrides class- +# const-naming-style. If left empty, class constant names will be checked with +# the set naming style. +#class-const-rgx= +# Naming style matching correct class names. +class-naming-style=PascalCase -[MISCELLANEOUS] +# Regular expression matching correct class names. Overrides class-naming- +# style. If left empty, class names will be checked with the set naming style. +#class-rgx= -# List of note tags to take in consideration, separated by a comma. -notes=FIXME,XXX,TODO +# Naming style matching correct constant names. +const-naming-style=UPPER_CASE +# Regular expression matching correct constant names. Overrides const-naming- +# style. If left empty, constant names will be checked with the set naming +# style. +#const-rgx= -[VARIABLES] +# Minimum line length for functions/classes that require docstrings, shorter +# ones are exempt. +docstring-min-length=-1 -# Tells whether we should check for unused import in __init__ files. -init-import=no +# Naming style matching correct function names. +function-naming-style=snake_case -# A regular expression matching the name of dummy variables (i.e. expectedly -# not used). -dummy-variables-rgx=_$|dummy +# Regular expression matching correct function names. Overrides function- +# naming-style. If left empty, function names will be checked with the set +# naming style. +#function-rgx= -# List of additional names supposed to be defined in builtins. Remember that -# you should avoid to define new builtins when possible. -additional-builtins= +# Good variable names which should always be accepted, separated by a comma. +good-names=i, + j, + k, + ex, + Run, + _ -# List of strings which can identify a callback function by name. A callback -# name must start or end with one of those strings. -callbacks=cb_,_cb +# Good variable names regexes, separated by a comma. If names match any regex, +# they will always be accepted +good-names-rgxs= -# List of qualified module names which can have objects that can redefine -# builtins. -redefining-builtins-modules= +# Include a hint for the correct naming format with invalid-name. +include-naming-hint=no +# Naming style matching correct inline iteration names. +inlinevar-naming-style=any -[SIMILARITIES] +# Regular expression matching correct inline iteration names. Overrides +# inlinevar-naming-style. If left empty, inline iteration names will be checked +# with the set naming style. +#inlinevar-rgx= -# Minimum lines number of a similarity. -min-similarity-lines=4 +# Naming style matching correct method names. +method-naming-style=snake_case -# Ignore comments when computing similarities. -ignore-comments=yes +# Regular expression matching correct method names. Overrides method-naming- +# style. If left empty, method names will be checked with the set naming style. +#method-rgx= -# Ignore docstrings when computing similarities. -ignore-docstrings=yes +# Naming style matching correct module names. +module-naming-style=snake_case -# Ignore imports when computing similarities. -ignore-imports=no +# Regular expression matching correct module names. Overrides module-naming- +# style. If left empty, module names will be checked with the set naming style. +#module-rgx= +# Colon-delimited sets of names that determine each other's naming style when +# the name regexes allow several styles. +name-group= -[TYPECHECK] +# Regular expression which should only match function or class names that do +# not require a docstring. +no-docstring-rgx=^_ -# Tells whether missing members accessed in mixin class should be ignored. A -# mixin class is detected if its name ends with "mixin" (case insensitive). -ignore-mixin-members=yes +# List of decorators that produce properties, such as abc.abstractproperty. Add +# to this list to register other decorators that produce valid properties. +# These decorators are taken in consideration only for invalid-name. +property-classes=abc.abstractproperty -# List of module names for which member attributes should not be checked -# (useful for modules/projects where namespaces are manipulated during runtime -# and thus existing member attributes cannot be deduced by static analysis. It -# supports qualified module names, as well as Unix pattern matching. -ignored-modules= +# Regular expression matching correct type alias names. If left empty, type +# alias names will be checked with the set naming style. +#typealias-rgx= -# List of class names for which member attributes should not be checked (useful -# for classes with dynamically set attributes). This supports the use of -# qualified names. -ignored-classes=optparse.Values,thread._local,_thread._local +# Regular expression matching correct type variable names. If left empty, type +# variable names will be checked with the set naming style. +#typevar-rgx= -# List of members which are set dynamically and missed by pylint inference -# system, and so shouldn't trigger E1101 when accessed. Python regular -# expressions are accepted. -generated-members= +# Naming style matching correct variable names. +variable-naming-style=snake_case + +# Regular expression matching correct variable names. Overrides variable- +# naming-style. If left empty, variable names will be checked with the set +# naming style. +#variable-rgx= + + +[CLASSES] + +# Warn about protected attribute access inside special methods +check-protected-access-in-special-methods=no + +# List of method names used to declare (i.e. assign) instance attributes. +defining-attr-methods=__init__, + __new__, + setUp, + asyncSetUp, + __post_init__ + +# List of member names, which should be excluded from the protected access +# warning. +exclude-protected=_asdict,_fields,_replace,_source,_make,os._exit + +# List of valid names for the first argument in a class method. +valid-classmethod-first-arg=cls + +# List of valid names for the first argument in a metaclass class method. +valid-metaclass-classmethod-first-arg=mcs -# List of decorators that produce context managers, such as -# contextlib.contextmanager. Add to this list to register other decorators that -# produce valid context managers. -contextmanager-decorators=contextlib.contextmanager + +[DESIGN] + +# List of regular expressions of class ancestor names to ignore when counting +# public methods (see R0903) +exclude-too-few-public-methods= + +# List of qualified class names to ignore when counting class parents (see +# R0901) +ignored-parents= + +# Maximum number of arguments for function / method. +max-args=5 + +# Maximum number of attributes for a class (see R0902). +max-attributes=7 + +# Maximum number of boolean expressions in an if statement (see R0916). +max-bool-expr=5 + +# Maximum number of branch for function / method body. +max-branches=12 + +# Maximum number of locals for function / method body. +max-locals=15 + +# Maximum number of parents for a class (see R0901). +max-parents=7 + +# Maximum number of positional arguments for function / method. +max-positional-arguments=5 + +# Maximum number of public methods for a class (see R0904). +max-public-methods=20 + +# Maximum number of return / yield for function / method body. +max-returns=6 + +# Maximum number of statements in function / method body. +max-statements=50 + +# Minimum number of public methods for a class (see R0903). +min-public-methods=2 + + +[EXCEPTIONS] + +# Exceptions that will emit a warning when caught. +overgeneral-exceptions=builtins.BaseException,builtins.Exception [FORMAT] -# Maximum number of characters on a single line. -max-line-length=80 +# Expected format of line ending, e.g. empty (any line ending), LF or CRLF. +expected-line-ending-format= # Regexp for a line that is allowed to be longer than the limit. ignore-long-lines=^\s*(# )??$ +# Number of spaces of indent required inside a hanging or continued line. +indent-after-paren=4 + +# String used as indentation unit. This is usually " " (4 spaces) or "\t" (1 +# tab). +indent-string=' ' + +# Maximum number of characters on a single line. +max-line-length=100 + +# Maximum number of lines in a module. +max-module-lines=1000 + +# Allow the body of a class to be on the same line as the declaration if body +# contains single statement. +single-line-class-stmt=no + # Allow the body of an if to be on the same line as the test if there is no # else. single-line-if-stmt=no -# List of optional constructs for which whitespace checking is disabled. `dict- -# separator` is used to allow tabulation in dicts, etc.: {1 : 1,\n222: 2}. -# `trailing-comma` allows a space between comma and closing bracket: (a, ). -# `empty-line` allows space-only lines. -no-space-check=trailing-comma,dict-separator -# Maximum number of lines in a module -max-module-lines=2000 +[IMPORTS] -# String used as indentation unit. This is usually " " (4 spaces) or "\t" (1 -# tab). -indent-string=' ' +# List of modules that can be imported at any level, not just the top level +# one. +allow-any-import-level= -# Number of spaces of indent required inside a hanging or continued line. -indent-after-paren=4 +# Allow explicit reexports by alias from a package __init__. +allow-reexport-from-package=no -# Expected format of line ending, e.g. empty (any line ending), LF or CRLF. -expected-line-ending-format= +# Allow wildcard imports from modules that define __all__. +allow-wildcard-with-all=no +# Deprecated modules which should not be used, separated by a comma. +deprecated-modules= -[BASIC] +# Output a graph (.gv or any supported image format) of external dependencies +# to the given file (report RP0402 must not be disabled). +ext-import-graph= -# List of builtins function names that should not be used, separated by a comma -bad-functions=map,filter,input +# Output a graph (.gv or any supported image format) of all (i.e. internal and +# external) dependencies to the given file (report RP0402 must not be +# disabled). +import-graph= -# Good variable names which should always be accepted, separated by a comma -good-names=i,j,k,ex,Run,_,x +# Output a graph (.gv or any supported image format) of internal dependencies +# to the given file (report RP0402 must not be disabled). +int-import-graph= -# Bad variable names which should always be refused, separated by a comma -bad-names=foo,bar,baz,toto,tutu,tata +# Force import order to recognize a module as part of the standard +# compatibility libraries. +known-standard-library= -# Colon-delimited sets of names that determine each other's naming style when -# the name regexes allow several styles. -name-group= +# Force import order to recognize a module as part of a third party library. +known-third-party=enchant -# Include a hint for the correct naming format with invalid-name -include-naming-hint=no +# Couples of modules and preferred modules, separated by a comma. +preferred-modules= -# List of decorators that produce properties, such as abc.abstractproperty. Add -# to this list to register other decorators that produce valid properties. -property-classes=abc.abstractproperty -# Regular expression matching correct function names -function-rgx=[a-z_][a-z0-9_]{2,30}$ +[LOGGING] -# Naming hint for function names -function-name-hint=[a-z_][a-z0-9_]{2,30}$ +# The type of string formatting that logging methods do. `old` means using % +# formatting, `new` is for `{}` formatting. +logging-format-style=old -# Regular expression matching correct variable names -variable-rgx=[a-z_][a-z0-9_]{2,30}$ +# Logging modules to check that the string format arguments are in logging +# function parameter format. +logging-modules=logging -# Naming hint for variable names -variable-name-hint=[a-z_][a-z0-9_]{2,30}$ -# Regular expression matching correct constant names -const-rgx=(([A-Z_][A-Z0-9_]*)|(__.*__))$ +[MESSAGES CONTROL] -# Naming hint for constant names -const-name-hint=(([A-Z_][A-Z0-9_]*)|(__.*__))$ +# Only show warnings with the listed confidence levels. Leave empty to show +# all. Valid levels: HIGH, CONTROL_FLOW, INFERENCE, INFERENCE_FAILURE, +# UNDEFINED. +confidence=HIGH, + CONTROL_FLOW, + INFERENCE, + INFERENCE_FAILURE, + UNDEFINED + +# Disable the message, report, category or checker with the given id(s). You +# can either give multiple identifiers separated by comma (,) or put this +# option multiple times (only on the command line, not in the configuration +# file where it should appear only once). You can also use "--disable=all" to +# disable everything first and then re-enable specific checks. For example, if +# you want to run only the similarities checker, you can use "--disable=all +# --enable=similarities". If you want to run only the classes checker, but have +# no Warning level messages displayed, use "--disable=all --enable=classes +# --disable=W". +disable=raw-checker-failed, + bad-inline-option, + locally-disabled, + file-ignored, + suppressed-message, + useless-suppression, + deprecated-pragma, + use-symbolic-message-instead, + use-implicit-booleaness-not-comparison-to-string, + use-implicit-booleaness-not-comparison-to-zero, + unused-import, + import-error, + invalid-name, + missing-module-docstring, + missing-class-docstring, + missing-function-docstring, + fixme, + too-few-public-methods -# Regular expression matching correct attribute names -attr-rgx=[a-z_][a-z0-9_]{2,30}$ +# Enable the message, report, category or checker with the given id(s). You can +# either give multiple identifier separated by comma (,) or put this option +# multiple time (only on the command line, not in the configuration file where +# it should appear only once). See also the "--disable" option for examples. +enable= -# Naming hint for attribute names -attr-name-hint=[a-z_][a-z0-9_]{2,30}$ -# Regular expression matching correct argument names -argument-rgx=[a-z_][a-z0-9_]{2,30}$ +[METHOD_ARGS] -# Naming hint for argument names -argument-name-hint=[a-z_][a-z0-9_]{2,30}$ +# List of qualified names (i.e., library.method) which require a timeout +# parameter e.g. 'requests.api.get,requests.api.post' +timeout-methods=requests.api.delete,requests.api.get,requests.api.head,requests.api.options,requests.api.patch,requests.api.post,requests.api.put,requests.api.request -# Regular expression matching correct class attribute names -class-attribute-rgx=([A-Za-z_][A-Za-z0-9_]{2,30}|(__.*__))$ -# Naming hint for class attribute names -class-attribute-name-hint=([A-Za-z_][A-Za-z0-9_]{2,30}|(__.*__))$ +[MISCELLANEOUS] -# Regular expression matching correct inline iteration names -inlinevar-rgx=[A-Za-z_][A-Za-z0-9_]*$ +# List of note tags to take in consideration, separated by a comma. +notes=FIXME, + XXX, + TODO -# Naming hint for inline iteration names -inlinevar-name-hint=[A-Za-z_][A-Za-z0-9_]*$ +# Regular expression of note tags to take in consideration. +notes-rgx= -# Regular expression matching correct class names -class-rgx=[A-Z_][a-zA-Z0-9]+$ -# Naming hint for class names -class-name-hint=[A-Z_][a-zA-Z0-9]+$ +[REFACTORING] -# Regular expression matching correct module names -module-rgx=(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9]+))$ +# Maximum number of nested blocks for function / method body +max-nested-blocks=5 -# Naming hint for module names -module-name-hint=(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9]+))$ +# Complete name of functions that never returns. When checking for +# inconsistent-return-statements if a never returning function is called then +# it will be considered as an explicit return statement and no message will be +# printed. +never-returning-functions=sys.exit,argparse.parse_error -# Regular expression matching correct method names -method-rgx=[a-z_][a-z0-9_]{2,30}$ +# Let 'consider-using-join' be raised when the separator to join on would be +# non-empty (resulting in expected fixes of the type: ``"- " + " - +# ".join(items)``) +suggest-join-with-non-empty-separator=yes -# Naming hint for method names -method-name-hint=[a-z_][a-z0-9_]{2,30}$ -# Regular expression which should only match function or class names that do -# not require a docstring. -no-docstring-rgx=^_ +[REPORTS] -# Minimum line length for functions/classes that require docstrings, shorter -# ones are exempt. -docstring-min-length=-1 +# Python expression which should return a score less than or equal to 10. You +# have access to the variables 'fatal', 'error', 'warning', 'refactor', +# 'convention', and 'info' which contain the number of messages in each +# category, as well as 'statement' which is the total number of statements +# analyzed. This score is used by the global evaluation report (RP0004). +evaluation=max(0, 0 if fatal else 10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10)) +# Template used to display messages. This is a python new-style format string +# used to format the message information. See doc for all details. +msg-template= -[ELIF] +# Set the output format. Available formats are: text, parseable, colorized, +# json2 (improved json format), json (old json format) and msvs (visual +# studio). You can also give a reporter class, e.g. +# mypackage.mymodule.MyReporterClass. +#output-format= -# Maximum number of nested blocks for function / method body -max-nested-blocks=5 +# Tells whether to display a full report or only the messages. +reports=no +# Activate the evaluation score. +score=yes -[LOGGING] -# Logging modules to check that the string format arguments are in logging -# function parameter format -logging-modules=logging +[SIMILARITIES] + +# Comments are removed from the similarity computation +ignore-comments=yes + +# Docstrings are removed from the similarity computation +ignore-docstrings=yes + +# Imports are removed from the similarity computation +ignore-imports=yes + +# Signatures are removed from the similarity computation +ignore-signatures=yes + +# Minimum lines number of a similarity. +min-similarity-lines=4 [SPELLING] -# Spelling dictionary name. Available dictionaries: none. To make it working -# install python-enchant package. +# Limits count of emitted suggestions for spelling mistakes. +max-spelling-suggestions=4 + +# Spelling dictionary name. No available dictionaries : You need to install +# both the python package and the system dependency for enchant to work. spelling-dict= +# List of comma separated words that should be considered directives if they +# appear at the beginning of a comment and should not be checked. +spelling-ignore-comment-directives=fmt: on,fmt: off,noqa:,noqa,nosec,isort:skip,mypy: + # List of comma separated words that should not be checked. spelling-ignore-words= -# A path to a file that contains private dictionary; one word per line. +# A path to a file that contains the private dictionary; one word per line. spelling-private-dict-file= -# Tells whether to store unknown words to indicated private dictionary in -# --spelling-private-dict-file option instead of raising a message. +# Tells whether to store unknown words to the private dictionary (see the +# --spelling-private-dict-file option) instead of raising a message. spelling-store-unknown-words=no -[CLASSES] +[STRING] -# List of method names used to declare (i.e. assign) instance attributes. -defining-attr-methods=__init__,__new__,setUp +# This flag controls whether inconsistent-quotes generates a warning when the +# character used as a quote delimiter is used inconsistently within a module. +check-quote-consistency=no -# List of valid names for the first argument in a class method. -valid-classmethod-first-arg=cls - -# List of valid names for the first argument in a metaclass class method. -valid-metaclass-classmethod-first-arg=mcs - -# List of member names, which should be excluded from the protected access -# warning. -exclude-protected=_asdict,_fields,_replace,_source,_make +# This flag controls whether the implicit-str-concat should generate a warning +# on implicit string concatenation in sequences defined over several lines. +check-str-concat-over-line-jumps=no -[DESIGN] - -# Maximum number of arguments for function / method -max-args=10 - -# Argument names that match this expression will be ignored. Default to name -# with leading underscore -ignored-argument-names=_.* +[TYPECHECK] -# Maximum number of locals for function / method body -max-locals=30 +# List of decorators that produce context managers, such as +# contextlib.contextmanager. Add to this list to register other decorators that +# produce valid context managers. +contextmanager-decorators=contextlib.contextmanager -# Maximum number of return / yield for function / method body -max-returns=6 +# List of members which are set dynamically and missed by pylint inference +# system, and so shouldn't trigger E1101 when accessed. Python regular +# expressions are accepted. +generated-members= -# Maximum number of branch for function / method body -max-branches=12 +# Tells whether to warn about missing members when the owner of the attribute +# is inferred to be None. +ignore-none=yes -# Maximum number of statements in function / method body -max-statements=50 +# This flag controls whether pylint should warn about no-member and similar +# checks whenever an opaque object is returned when inferring. The inference +# can return multiple potential results while evaluating a Python object, but +# some branches might not be evaluated, which results in partial inference. In +# that case, it might be useful to still emit no-member and other checks for +# the rest of the inferred objects. +ignore-on-opaque-inference=yes -# Maximum number of parents for a class (see R0901). -max-parents=7 +# List of symbolic message names to ignore for Mixin members. +ignored-checks-for-mixins=no-member, + not-async-context-manager, + not-context-manager, + attribute-defined-outside-init -# Maximum number of attributes for a class (see R0902). -max-attributes=7 +# List of class names for which member attributes should not be checked (useful +# for classes with dynamically set attributes). This supports the use of +# qualified names. +ignored-classes=optparse.Values,thread._local,_thread._local,argparse.Namespace -# Minimum number of public methods for a class (see R0903). -min-public-methods=0 +# Show a hint with possible names when a member name was not found. The aspect +# of finding the hint is based on edit distance. +missing-member-hint=yes -# Maximum number of public methods for a class (see R0904). -max-public-methods=20 +# The minimum edit distance a name should have in order to be considered a +# similar match for a missing member name. +missing-member-hint-distance=1 -# Maximum number of boolean expressions in a if statement -max-bool-expr=5 +# The total number of similar names that should be taken in consideration when +# showing a hint for a missing member. +missing-member-max-choices=1 +# Regex pattern to define which classes are considered mixins. +mixin-class-rgx=.*[Mm]ixin -[IMPORTS] +# List of decorators that change the signature of a decorated function. +signature-mutators= -# Deprecated modules which should not be used, separated by a comma -deprecated-modules=regsub,TERMIOS,Bastion,rexec -# Create a graph of every (i.e. internal and external) dependencies in the -# given file (report RP0402 must not be disabled) -import-graph= +[VARIABLES] -# Create a graph of external dependencies in the given file (report RP0402 must -# not be disabled) -ext-import-graph= +# List of additional names supposed to be defined in builtins. Remember that +# you should avoid defining new builtins when possible. +additional-builtins= -# Create a graph of internal dependencies in the given file (report RP0402 must -# not be disabled) -int-import-graph= +# Tells whether unused global variables should be treated as a violation. +allow-global-unused-variables=yes -# Force import order to recognize a module as part of the standard -# compatibility libraries. -known-standard-library= +# List of names allowed to shadow builtins +allowed-redefined-builtins= -# Force import order to recognize a module as part of a third party library. -known-third-party=enchant +# List of strings which can identify a callback function by name. A callback +# name must start or end with one of those strings. +callbacks=cb_, + _cb -# Analyse import fallback blocks. This can be used to support both Python 2 and -# 3 compatible code, which means that the block might have code that exists -# only in one or another interpreter, leading to false positives when analysed. -analyse-fallback-blocks=no +# A regular expression matching the name of dummy variables (i.e. expected to +# not be used). +dummy-variables-rgx=_+$|(_[a-zA-Z0-9_]*[a-zA-Z0-9]+?$)|dummy|^ignored_|^unused_ +# Argument names that match this expression will be ignored. +ignored-argument-names=_.*|^ignored_|^unused_ -[EXCEPTIONS] +# Tells whether we should check for unused import in __init__ files. +init-import=no -# Exceptions that will emit a warning when being caught. Defaults to -# "Exception" -overgeneral-exceptions=Exception +# List of qualified module names which can have objects that can redefine +# builtins. +redefining-builtins-modules=six.moves,past.builtins,future.builtins,builtins,io diff --git a/CITATION.cff b/CITATION.cff new file mode 100644 index 0000000..27c3ed0 --- /dev/null +++ b/CITATION.cff @@ -0,0 +1,24 @@ +title: "Bayesian nonparametric analysis of residence times for protein-lipid interactions in Molecular Dynamics simulations" +abstract: "Molecular Dynamics (MD) simulations are a versatile tool to investigate the interactions of proteins within their environments, in particular of membrane proteins with the surrounding lipids. However, quantitative analysis of lipid-protein binding kinetics has remained challenging due to considerable noise and low frequency of long binding events, even in hundreds of microseconds of simulation data. Here we apply Bayesian nonparametrics to compute residueresolved residence time distributions from MD trajectories. Such an analysis characterizes binding processes at different timescales (quantified by their kinetic off-rate) and assigns to each trajectory frame a probability of belonging to a specific process. In this way, we classify trajectory frames in an unsupervised manner and obtain, for example, different binding poses or molecular densities based on the timescale of the process. We demonstrate our approach by characterizing interactions of cholesterol with six different G-protein coupled receptors (A2AAR, β2AR, CB1R, CB2R, CCK1R, CCK2R) simulated with coarse-grained MD simulations with the MARTINI model. The nonparametric Bayesian analysis allows us to connect the coarse binding time series data to the underlying molecular picture and, thus, not only infers accurate binding kinetics with error distributions from MD simulations but also describes molecular events responsible for the broad range of kinetic rates." +type: "preprint" +license: "http://creativecommons.org/licenses/by/4.0/" +copyright: "http://creativecommons.org/licenses/by/4.0/" +database: "Biophysics" +date-accessed: 2024-11-15T02:48:23Z +languages: "en" +url: "http://biorxiv.org/lookup/doi/10.1101/2024.11.07.622502" +authors: + - family-names: "Sexton" + given-names: "Ricky" + - family-names: "Fazel" + given-names: "Mohamadreza" + - family-names: "Schweiger" + given-names: "Maxwell" + - family-names: "Pressé" + given-names: "Steve" + - family-names: "Beckstein" + given-names: "Oliver" +date-published: 2024-11-09 +identifiers: + - type: doi + value: 10.1101/2024.11.07.622502 diff --git a/README.md b/README.md index deb107f..e87f02e 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ Bayesian Single-Cutoff Residence Time Analysis (basicrta) | **Latest release** | [![Last release tag][badge_release]][url_latest_release] ![GitHub commits since latest release (by date) for a branch][badge_commits_since] [![Documentation Status][badge_docs]][url_docs]| | :----------------- | :------- | -| **Archives** | [![DOI][badge_zenodo]][url_zenodo] | +| **Archives** | [![DOI][badge_zenodo]][url_zenodo] | | **Status** | [![GH Actions Status][badge_actions]][url_actions] [![codecov][badge_codecov]][url_codecov] | | **Community** | [![License: GPL v3][badge_license]][url_license] [![Powered by MDAnalysis][badge_mda]][url_mda]| @@ -24,8 +24,11 @@ Bayesian Single-Cutoff Residence Time Analysis (basicrta) [url_mda]: https://www.mdanalysis.org [url_zenodo]: https://doi.org/10.5281/zenodo.13877225 +A package to extract binding kinetics from molecular dynamics simulations based +on Sexton (2024) [^1]. -A package to extract binding kinetics from molecular dynamics simulations +[^1]: Sexton, R.; Fazel, M.; Schweiger, M.; Pressé, S.; Beckstein, O. Bayesian Nonparametric Analysis of Residence Times for + Protein-Lipid Interactions in Molecular Dynamics Simulations. bioRxiv. November 9, 2024. https://doi.org/10.1101/2024.11.07.622502. basicrta is bound by a [Code of Conduct](https://github.com/becksteinlab/basicrta/blob/main/CODE_OF_CONDUCT.md). diff --git a/basicrta/cluster.py b/basicrta/cluster.py index 1db5bea..275acb1 100644 --- a/basicrta/cluster.py +++ b/basicrta/cluster.py @@ -8,8 +8,26 @@ from basicrta.gibbs import Gibbs gc.enable() +"""This module provides the ProcessProtein class, which collects and processes +Gibbs sampler data. +""" class ProcessProtein(object): + r"""ProcessProtein is the class that collects and processes Gibbs sampler + data. This class collects results for all residues in the + `basicrta-{cutoff}` directory and can write out a :math:`\tau` vs resid + numpy array or plot :math:`\tau` vs resid. If a structure is provided, + :math:`\tau` will be written as b-factors for visualization. + + :param niter: Number of iterations used in the Gibbs samplers + :type niter: int + :param prot: Name of protein in `tm_dict.txt`, used to draw TM bars in + :math:`tau` vs resid plot. + :type prot: str, optional + :param cutoff: Cutoff used in contact analysis. + :type cutoff: float + """ + def __init__(self, niter, prot, cutoff): self.residues = {} self.niter = niter @@ -34,6 +52,12 @@ def _single_residue(self, adir, process=False): return result def reprocess(self, nproc=1): + """Rerun processing and clustering on :class:`Gibbs` data. + + :param nproc: Number of processes to use in clustering results for all + residues. + :type nproc: int + """ from glob import glob dirs = np.array(glob(f'basicrta-{self.cutoff}/?[0-9]*')) @@ -52,6 +76,9 @@ def reprocess(self, nproc=1): pass def collect_results(self): + """Collect names of results for each residue in the `basicrta-{cutoff}` + directory in a dictionary stored in :attr:`ProcessProtein.results`. + """ from glob import glob dirs = np.array(glob(f'basicrta-{self.cutoff}/?[0-9]*')) @@ -67,6 +94,14 @@ def collect_results(self): pass def get_taus(self): + r"""Get :math:`\tau` and 95\% confidence interval bounds for the slowest + process for each residue. + + :returns: Returns a tuple of the form (:math:`\tau`, [CI lower bound, + CI upper bound]) + :rtype: tuple + + """ from basicrta.util import get_bars taus = [] @@ -85,6 +120,13 @@ def get_taus(self): return taus[:, 1], bars def write_data(self, fname='tausout'): + r"""Write :math:`\tau` values with 95\% confidence interval to a numpy + file with the format [`sel1` resid, :math:`\tau`, CI lower bound, CI + upper bound]. + + :param fname: Filename to save data to. + :type fname: str, optional + """ taus, bars = self.get_taus() keys = self.residues.keys() residues = np.array([int(res[1:]) for res in keys]) @@ -92,18 +134,20 @@ def write_data(self, fname='tausout'): np.save(fname, data.T) def plot_protein(self, **kwargs): + r"""Plot :math:`\tau` vs resid. kwargs are passed to the + :meth:`plot_protein` method of `util.py`. These can be used to change + the labeling cutoff, y-limit of the plot, scale the figure, and set + major and minor ticks. + """ from basicrta.util import plot_protein if len(self.residues) == 0: print('run `collect_residues` then rerun') taus, bars = self.get_taus() - #exclude_inds = np.where(bars<0)[1] - residues = list(self.residues.keys()) residues = [res.split('/')[-1] for res in residues] - exclude_inds = np.where(bars<0)[1] - + exclude_inds = np.where(bars < 0)[1] taus = np.delete(taus, exclude_inds) bars = np.delete(bars, exclude_inds, axis=1) residues = np.delete(residues, exclude_inds) @@ -111,6 +155,9 @@ def plot_protein(self, **kwargs): plot_protein(residues, taus, bars, self.prot, **kwargs) def b_color_structure(self, structure): + r"""Add :math:`\tau` to b-factors in the specified structure. Saves + structure with b-factors to `tau_bcolored.pdb`. + """ taus, bars = self.get_taus() cis = bars[1]+bars[0] errs = taus/cis @@ -127,18 +174,24 @@ def b_color_structure(self, structure): u.select_atoms('protein').write('tau_bcolored.pdb') + if __name__ == "__main__": import argparse parser = argparse.ArgumentParser() parser.add_argument('--nproc', type=int, default=1) parser.add_argument('--cutoff', type=float) parser.add_argument('--niter', type=int, default=110000) - parser.add_argument('--prot', type=str) + parser.add_argument('--prot', type=str, default=None, nargs='?') + parser.add_argument('--label-cutoff', type=float, default=3, + dest='label_cutoff', + help='Only label residues with tau > ' + 'LABEL-CUTOFF * . ') + parser.add_argument('--structure', type=str, nargs='?') args = parser.parse_args() pp = ProcessProtein(args.niter, args.prot, args.cutoff) - pp.reprocess(nproc = args.nproc) + pp.reprocess(nproc=args.nproc) pp.collect_results() pp.write_data() - pp.plot_protein() + pp.plot_protein(label_cutoff=args.label_cutoff) diff --git a/basicrta/contacts.py b/basicrta/contacts.py index 0ae951d..57e3204 100755 --- a/basicrta/contacts.py +++ b/basicrta/contacts.py @@ -1,34 +1,62 @@ #!/usr/bin/env python -import os -os.environ['MKL_NUM_THREADS'] = '1' from tqdm import tqdm +from MDAnalysis.lib import distances +from multiprocessing import Pool, Lock +from basicrta import istarmap import numpy as np import multiprocessing -from MDAnalysis.lib import distances import collections -from multiprocessing import Pool, Lock import MDAnalysis as mda import pickle import glob -from basicrta import istarmap +import os +os.environ['MKL_NUM_THREADS'] = '1' class MapContacts(object): - """ - This class is used to create the map of contacts between two groups of + """This class is used to create the map of contacts between two groups of atoms. A single cutoff is used to define a contact between the two groups, where if any atomic distance between the two groups is less than the cutoff, a contact is considered formed. + + :param u: Universe containing the topology and trajectory for which the + contacts will be computed. + :type u: `MDAnalysis Universe` + :param ag1: Primary AtomGroup for which contacts will be computed, typically a + protein. + :type ag1: MDAnalysis AtomGroup + :param ag2: Secondary AtomGroup which forms contacts with `ag1`, typically + lipids, ions, or other small molecules. Each residue of `ag2` + must have the same number of atoms. + :type ag2: MDAnalysis AtomGroup + :param nproc: Number of processes to use in computing contacts (default is + 1). + :type nproc: int, optional + :param frames: List of frames to use in computing contacts (default is + None, meaning all frames are used). + :type frames: list or np.array, optional + :param cutoff: Maximum cutoff to use in computing contacts. A primary + contact map is created upon which multiple cutoffs can be + imposed, i.e. in the case where a proper cutoff is being + determined. This can typically be left at its default value, + unless a greater value is needed (default is 10.0). + :type cutoff: float, optional + :param nslices: Number of slices to break the trajectory into for + processing. If device memory is limited, try increasing + `nslices` (default is 100). + :type nslices: int, optional """ - def __init__(self, u, ag1, ag2, nproc=1, frames=None, cutoff=10.0, + def __init__(self, u, ag1, ag2, nproc=1, frames=None, max_cutoff=10.0, nslices=100): self.u, self.nproc = u, nproc self.ag1, self.ag2 = ag1, ag2 - self.cutoff, self.frames, self.nslices = cutoff, frames, nslices + self.cutoff, self.frames, self.nslices = max_cutoff, frames, nslices def run(self): + """Run contact analysis and save to `contacts.pkl` + """ if self.frames is not None: sliced_frames = np.array_split(self.frames, self.nslices) else: @@ -42,8 +70,8 @@ def run(self): with (Pool(self.nproc, initializer=tqdm.set_lock, initargs=(Lock(),)) as p): for alen in tqdm(p.istarmap(self._run_contacts, input_list), - total=self.nslices, position=0, - desc='overall progress'): + total=self.nslices, position=0, + desc='overall progress'): lens.append(alen) lens = np.array(lens) mapsize = sum(lens) @@ -53,7 +81,7 @@ def run(self): 'traj': self.u.trajectory.filename, 'ag1': self.ag1, 'ag2': self.ag2, 'ts': self.u.trajectory.dt/1000, - 'cutoff': self.cutoff}) + 'cutoff': self.max_cutoff}) contact_map = np.memmap('.tmpmap', mode='w+', shape=(mapsize, 5), dtype=dtype) @@ -105,19 +133,34 @@ def _run_contacts(self, i, sliced_traj): class ProcessContacts(object): - def __init__(self, cutoff, nproc, map_name='contacts.pkl'): + """The :class:`ProcessProtein` class takes the primary contact map + (default is `contacts.pkl`) and collects contacts based on a prescribed + cutoff. + + :param cutoff: Collect all contacts between `ag1` and `ag2` within this + value. + :type cutoff: float + :param nproc: Number of processes to use in collecting contacts (default is + 1). + :type nproc: int, optional + :param map_name: Name of primary contact map (default is `contacts.pkl`) + :type map_name: str, optional + """ + def __init__(self, cutoff, nproc=1, map_name='contacts.pkl'): self.nproc = nproc self.map_name = map_name self.cutoff = cutoff def run(self): - from basicrta.util import siground - + """Process contacts using the prescribed cutoff and write to + contacts-{cutoff}.pkl + """ if os.path.exists(self.map_name): with open(self.map_name, 'r+b') as f: memmap = pickle.load(f) # memmap = np.load(self.map_name, mmap_mode='r') dtype = memmap.dtype + memmap = memmap[memmap[:, -2] <= self.cutoff] else: raise FileNotFoundError(f'{self.map_name} not found. Specify the ' @@ -138,7 +181,7 @@ def run(self): bounds = np.concatenate([[0], np.cumsum(lens)]).astype(int) mapsize = sum(lens) - contact_map = np.memmap(f'.tmpmap', mode='w+', + contact_map = np.memmap('.tmpmap', mode='w+', shape=(mapsize, 4), dtype=dtype) for i in range(len(lresids)): @@ -152,7 +195,6 @@ def run(self): # [os.remove(f) for f in cfiles] print(f'\nSaved contacts to "contacts_{self.cutoff}.npy"') - def _lipswap(self, lip, memarr, i): from basicrta.util import get_dec try: @@ -191,9 +233,13 @@ def _lipswap(self, lip, memarr, i): if __name__ == '__main__': + """DOCSSS + """ import argparse - parser = argparse.ArgumentParser() - parser.add_argument('--top', type=str) + parser = argparse.ArgumentParser(description="Create the primary contact \ + map and collect contacts based on the \ + desired cutoff distance") + parser.add_argument('--top', type=str, help="Topology") parser.add_argument('--traj', type=str) parser.add_argument('--sel1', type=str) parser.add_argument('--sel2', type=str) diff --git a/basicrta/data/__pycache__/__init__.cpython-310.pyc b/basicrta/data/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index 2085681..0000000 Binary files a/basicrta/data/__pycache__/__init__.cpython-310.pyc and /dev/null differ diff --git a/basicrta/data/__pycache__/__init__.cpython-312.pyc b/basicrta/data/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index f3e1f75..0000000 Binary files a/basicrta/data/__pycache__/__init__.cpython-312.pyc and /dev/null differ diff --git a/basicrta/data/__pycache__/files.cpython-310.pyc b/basicrta/data/__pycache__/files.cpython-310.pyc deleted file mode 100644 index 340afa8..0000000 Binary files a/basicrta/data/__pycache__/files.cpython-310.pyc and /dev/null differ diff --git a/basicrta/data/__pycache__/files.cpython-312.pyc b/basicrta/data/__pycache__/files.cpython-312.pyc deleted file mode 100644 index 0093031..0000000 Binary files a/basicrta/data/__pycache__/files.cpython-312.pyc and /dev/null differ diff --git a/basicrta/gibbs.py b/basicrta/gibbs.py index 19985a2..1577b27 100644 --- a/basicrta/gibbs.py +++ b/basicrta/gibbs.py @@ -1,6 +1,3 @@ -"""Analysis functions -""" - import os import gc import pickle @@ -22,7 +19,16 @@ class ParallelGibbs(object): """ - A module to take a contact map and run Gibbs samplers for each residue + A module to take a contact map and run Gibbs samplers for each residue. + + :param contacts: Contact pickle file (`contacts-{cutoff}.pkl`). + :type contacts: str + :param nproc: Number of processes to use in running Gibbs samplers. + :type nproc: int + :param ncomp: Number of mixture components to use in the Gibbs sampler. + :type ncomp: int + :param niter: Number of iterations of the Gibbs sampler to perform. + :type niter: int """ def __init__(self, contacts, nproc=1, ncomp=15, niter=110000): @@ -33,7 +39,14 @@ def __init__(self, contacts, nproc=1, ncomp=15, niter=110000): self.ncomp = ncomp self.contacts = contacts - def run(self, run_resids=None): + def run(self, run_resids=None, g=100): + """ + The :meth:`run` method executes the Gibbs samplers for all residues of + `sel1` present in the contact map, or a list of resids can be provided. + + :param run_resids: Resid(s) for which to run a Gibbs sampler. + :type run_resids: int or list, optional + """ from basicrta.util import run_residue with open(self.contacts, 'r+b') as f: @@ -58,7 +71,7 @@ def run(self, run_resids=None): run_resids]) residues = residues[inds] input_list = [[residues[i], times[i].copy(), i % self.nproc, - self.ncomp, self.niter, self.cutoff] for i in + self.ncomp, self.niter, self.cutoff, g] for i in range(len(residues))] del contacts, times @@ -72,14 +85,14 @@ def run(self, run_resids=None): desc='overall progress'): pass except KeyboardInterrupt: - pass + pass class Gibbs(object): r"""Gibbs sampler to estimate parameters of an exponential mixture for a set of data. Results are stored in :class:`gibbs.results`, which uses :class:`MDAnalysis.analysis.base.Results()`. If 'results=None' the gibbs - sampler has not been executed, which requires calling :meth:`run` + sampler has not been executed, which requires calling :meth:`run`. :param times: Set of residence times to analyze :type times: array, optional @@ -91,7 +104,7 @@ class Gibbs(object): :type ncomp: int :param niter: Number of iterations to run the Gibbs sampler :type niter: int - :param cutoff: Cutoff calue used in contact analysis, used to determine + :param cutoff: Cutoff value used in contact analysis, used to determine directory to load/save results. Allows for multiple cutoffs to be tested in directory containing contacts. :type cutoff: float @@ -99,7 +112,7 @@ class Gibbs(object): EXAMPLE ------- >>> from basicrta.gibbs import Gibbs - >>> from basicrta.tests.data import times + >>> from basicrta.tests.datafiles import times >>> g = Gibbs(times=times, residue='W313', cutoff=7.0) >>> g.run() >>> g.process_gibbs() @@ -118,14 +131,14 @@ class Gibbs(object): """ def __init__(self, times=None, residue=None, loc=0, ncomp=15, niter=110000, - cutoff=None): + cutoff=None, g=50, burnin=10000): self.times = times self.residue = residue self.niter = niter self.loc = loc self.ncomp = ncomp - self.g = 100 - self.burnin = 10000 + self.g = g + self.burnin = burnin self.cutoff = cutoff self.processed_results = Results() self._noise_cutoff = 0.4 @@ -162,12 +175,13 @@ def _prepare(self): def run(self): r""" - Execute the Gibbs sampler and save the results to :attr:`Gibbs.results` + Execute the Gibbs sampler and save the raw data to the instance of + :class:`Gibbs`. """ # initialize weights and rates self._prepare() if not os.path.exists(f'basicrta-{self.cutoff}/{self.residue}'): - os.mkdir(f'basicrta-{self.cutoff}/{self.residue}') + os.makedirs(f'basicrta-{self.cutoff}/{self.residue}') inrates = 0.5 * 10 ** np.arange(-self.ncomp + 2, 2, dtype=float) tmpw = 9 * 10 ** (-np.arange(1, self.ncomp + 1, dtype=float)) @@ -181,7 +195,7 @@ def run(self): # compute probabilities tmp = weights*rates*np.exp(np.outer(-rates, self.times)).T z = (tmp.T/tmp.sum(axis=1)).T - + # sample indicator s = np.argmax(rng.multinomial(1, z), axis=1) @@ -204,7 +218,7 @@ def run(self): self.save() - def cluster(self, method="GaussianMixture", **kwargs): + def cluster(self, method="GaussianMixture", g=self.g, **kwargs): r""" Cluster the processed results using the methods available in :class:`sklearn.mixture` @@ -216,13 +230,13 @@ def cluster(self, method="GaussianMixture", **kwargs): from scipy import stats clu = getattr(mixture, method) - burnin_ind = self.burnin // self.g + burnin_ind = self.burnin // g data_len = len(self.times) wcutoff = 10 / data_len weights, rates = self.mcweights[burnin_ind:], self.mcrates[burnin_ind:] lens = np.array([len(row[row > wcutoff]) for row in weights]) - lmin, lmode, lmax = lens.min(), stats.mode(lens).mode, lens.max() + lmode = stats.mode(lens).mode train_param = lmode train_inds = np.where(lens == train_param)[0] @@ -242,7 +256,7 @@ def cluster(self, method="GaussianMixture", **kwargs): r.fit(np.log(train_data)) all_labels = r.predict(np.log(data)) - if self.indicator is not None: + if (self.indicator is not None) and g==self.g: indicator = self.indicator[burnin_ind:] else: indicator = self._sample_indicator() @@ -258,24 +272,26 @@ def cluster(self, method="GaussianMixture", **kwargs): setattr(self.processed_results, 'indicator', pindicator) setattr(self.processed_results, 'labels', all_labels) - def process_gibbs(self): + def process_gibbs(self, g=self.g): r""" - Process the data collected from the Gibbs sampler + Process the samples collected from the Gibbs sampler. + :meth:`process_gibbs` can be called multiple times to check the + robustness of the results. """ from basicrta.util import mixture_and_plot from scipy import stats data_len = len(self.times) wcutoff = 10/data_len - burnin_ind = self.burnin//self.g + burnin_ind = self.burnin//g inds = np.where(self.mcweights[burnin_ind:] > wcutoff) - indices = (np.arange(self.burnin, self.niter + 1, self.g)[inds[0]] // - self.g) + indices = (np.arange(self.burnin, self.niter + 1, g)[inds[0]] // + g) weights, rates = self.mcweights[burnin_ind:], self.mcrates[burnin_ind:] fweights, frates = weights[inds], rates[inds] lens = [len(row[row > wcutoff]) for row in self.mcweights[burnin_ind:]] - lmin, lmode, lmax = np.min(lens), stats.mode(lens).mode, np.max(lens) + lmode = stats.mode(lens).mode self.cluster(n_init=117, n_components=lmode) labels, presorts = mixture_and_plot(self) @@ -296,16 +312,16 @@ def result_plot(self, remove_noise=False, **kwargs): Generate the combined result plot with option to change kwargs without re-clustering. - :param remove_noise: Whether to remove noise + :param remove_noise: Option to remove noise clusters :type remove_noise: bool """ from basicrta.util import mixture_and_plot mixture_and_plot(self, remove_noise=remove_noise, **kwargs) - def _sample_indicator(self): - indicator = np.zeros(((self.niter+1)//self.g, self.times.shape[0]), + def _sample_indicator(self, g=self.g): + indicator = np.zeros(((self.niter+1)//g, self.times.shape[0]), dtype=np.uint8) - burnin_ind = self.burnin//self.g + burnin_ind = self.burnin//g for i, (w, r) in enumerate(zip(self.mcweights, self.mcrates)): # compute probabilities probs = w*r*np.exp(np.outer(-r, self.times)).T @@ -319,7 +335,7 @@ def _sample_indicator(self): def save(self): """ - Save current state of the Gibbs + Save current state of the :class:`Gibbs` instance. """ savedir = f'basicrta-{self.cutoff}/{self.residue}/' filename = f'gibbs_{self.niter}.pkl' @@ -335,9 +351,9 @@ def save(self): @staticmethod def load(file): """ - Load Gibbs + Load an instance of :class:`Gibbs`. - :param file: Filename of Gibbs to load + :param file: Path to instance of :class:`Gibbs` :type file: str """ from basicrta.util import get_s @@ -366,7 +382,8 @@ def load(file): def plot_tau_hist(self, scale=1, save=False): r""" - Plot histogram of tau values + Plot histogram of tau values. The figure aspect ratio is 4:3, and can be + made larger/smaller using the `scale` argument. :param scale: Increase plot size by this factor :type scale: float @@ -384,7 +401,7 @@ def plot_tau_hist(self, scale=1, save=False): fig, ax = plt.subplots(1, figsize=(4*scale, 3*scale)) ax.hist(1/rp.rates[rp.labels == i], label=f'{i}', alpha=0.5, - color=cmap(i)) + color=cmap(i)) ax.set_xlabel(r'$\tau$ [ns]') ax.set_ylabel('count') @@ -437,16 +454,12 @@ def plot_hist(self, scale=1, save=False, component=None, bins=15): ax2 = fig.add_subplot(gs[0, 8:]), fig.add_subplot(gs[1:, 8:]) # plot posteriors - [ax0.hist(rp.weights[rp.labels == i], label=f'posterior', alpha=0.5, - color=cmap(i), density=True, bins=bins) for i in comps] - # [ax1[0].hist(rp.rates[rp.labels == i], label=f'{i}', alpha=0.5, - # color=cmap(i), density=True, bins=bins) for i in comps] + [ax0.hist(rp.weights[rp.labels == i], label='posterior', alpha=0.5, + color=cmap(i), density=True, bins=bins) for i in comps] [ax1[0, 0].hist(rp.rates[rp.labels == i], label=f'{i}', alpha=0.5, color=cmap(i), density=True, bins=bins) for i in comps] [ax1[1, 0].hist(rp.rates[rp.labels == i], label=f'{i}', alpha=0.5, color=cmap(i), density=True, bins=bins) for i in comps] - # [ax2[0].hist(1/rp.rates[rp.labels == i], label=f'{i}', alpha=0.5, - # color=cmap(i), density=True, bins=bins) for i in comps] [ax2[1].hist(1/rp.rates[rp.labels == i], label=f'{i}', alpha=0.5, color=cmap(i), density=True, bins=bins) for i in comps] @@ -457,27 +470,17 @@ def plot_hist(self, scale=1, save=False, component=None, bins=15): rp.rates[rp.labels == i].max()] for i in comps]) tbounds = np.array([[(1/rp.rates[rp.labels == i]).min(), (1/rp.rates[rp.labels == i]).max()] for i in comps]) + rx = np.linspace(0, 10, 10000) tx = np.linspace(0, 500, 10000) - # rx = np.array([np.linspace(rb[0], rb[1], 10000) for rb in rbounds]) - # tx = np.array([np.linspace(tb[0], tb[1], 10000) for tb in tbounds]) - - # [ax[0].hist(rng.dirichlet(self.whypers, size=len(rp.labels))[:, 0] - # bins=np.linspace(wbounds[i, 0], wbounds[i, 1], 10), - # density=True) - # for i in range(len(comps))] + ax0.hist(rng.dirichlet(self.whypers, size=1000000).flatten(), - density=True, bins=20000, label='prior', alpha=0.5) + density=True, bins=20000, label='prior', alpha=0.5) rys = (stats.gamma(self.rhypers[0, 0], scale=1/self.rhypers[0, 1]). pdf(rx)) tys = (stats.invgamma(self.rhypers[0, 0], scale=self.rhypers[0, 1]). pdf(tx)) - - # ax1[0].plot(rx, rys, label=f'{i}', alpha=0.5) - # ax1[0].fill_between(rx, rys, alpha=0.5) - # ax1[0, 0].plot(rx, rys, label=f'{i}', alpha=0.5) - # ax1[0, 0].fill_between(rx, rys, alpha=0.5) ax1[1, 0].plot(rx, rys, label=f'{i}', alpha=0.5) ax1[1, 0].fill_between(rx, rys, alpha=0.5) ax1[1, 1].plot(rx, rys, label=f'{i}', alpha=0.5) @@ -513,26 +516,16 @@ def plot_hist(self, scale=1, save=False, component=None, bins=15): kwargs2 = dict(marker=[(1+d, 0), (0, 1+d)], markersize=12, linestyle="none", color='k', mec='k', mew=1, clip_on=False) + ax1[0, 0].plot([0], transform=ax1[0, 0].transAxes, **kwargs) ax1[1, 0].plot([1], transform=ax1[1, 0].transAxes, **kwargs) ax1[0, 1].plot([1], [0], transform=ax1[0, 1].transAxes, **kwargs) ax1[1, 1].plot([1], [1], transform=ax1[1, 1].transAxes, **kwargs) ax1[0, 0].plot([1], [1], transform=ax1[0, 0].transAxes, **kwargs2) - # ax1[1, 0].plot([1], transform=ax1[1, 0].transAxes, **kwargs) - # ax1[0, 1].plot([0], [1], transform=ax1[0, 1].transAxes, **kwargs2) - # ax1[1, 1].plot([1], [0], transform=ax1[1, 1].transAxes, **kwargs2) - - # ax1[0, 0].plot([1], transform=ax1[0, 0].transAxes, **kwargs2) - # ax1[1, 0].plot([0, 1], [1, 1], transform=ax1[1, 0].transAxes, **kwargs2) - # ax1[0, 1].plot([0, 1], [0, 0], transform=ax1[0, 1].transAxes, **kwargs2) - # ax1[1, 1].plot([0, 1], [1, 1], transform=ax1[1, 1].transAxes, **kwargs2) - # ax1[0 1].plot([0, 1], [1, 1], transform=ax1[0, 1].transAxes, **kwargs) - # ax1[1, 1].plot([0, 1], [1, 1], transform=ax1[1, 1].transAxes, **kwargs) ax2[0].plot([0, 1], [0, 0], transform=ax2[0].transAxes, **kwargs) ax2[1].plot([0, 1], [1, 1], transform=ax2[1].transAxes, **kwargs) - ax0.set_xlabel(r'$\pi_k$') ax1[1, 0].set_xlabel(r'$\lambda_k$ [ns$^{-1}$]') # set_shared_xlabel(ax1[1, :], label=r'$\lambda_k$ [ns$^{-1}$]') @@ -546,10 +539,6 @@ def plot_hist(self, scale=1, save=False, component=None, bins=15): ax1[0].set_xscale('log') ax1[1].set_xscale('log') else: - rmin = rbounds.min() - rmax = rbounds.max() - wmin = wbounds.min() - wmax = wbounds.max() ax0.set_xlim(1e-5, 1e-3) ax1[0, 0].set_xlim(1e-4, 1e-2) @@ -567,69 +556,57 @@ def plot_hist(self, scale=1, save=False, component=None, bins=15): ax2[1].set_ylim(0, 0.015) ax0.xaxis.set_major_locator(MaxNLocator(3, min_n_ticks=3, - prune='both')) + prune='both')) ax0.xaxis.set_minor_locator(MaxNLocator(12, min_n_ticks=9, - prune='both')) + prune='both')) ax0.yaxis.set_major_locator(MaxNLocator(3, min_n_ticks=3, - prune='both')) + prune='both')) ax0.yaxis.set_minor_locator(MaxNLocator(12, min_n_ticks=9, - prune='both')) + prune='both')) ax0.ticklabel_format(style='sci', axis='both', scilimits=(0, 0), - useMathText=True) + useMathText=True) ax1[1, 0].xaxis.set_major_locator(MaxNLocator(3, min_n_ticks=3, - prune='both')) + prune='both')) ax1[1, 0].xaxis.set_minor_locator(MaxNLocator(12, min_n_ticks=9, - prune='both')) + prune='both')) ax1[1, 1].xaxis.set_major_locator(MaxNLocator(3, min_n_ticks=3, - prune='both')) + prune='both')) ax1[1, 1].xaxis.set_minor_locator(MaxNLocator(12, min_n_ticks=9, - prune='both')) + prune='both')) ax1[0, 0].yaxis.set_major_locator(MaxNLocator(3, min_n_ticks=3, - prune='both')) + prune='both')) ax1[0, 0].yaxis.set_minor_locator(MaxNLocator(12, min_n_ticks=9, - prune='both')) + prune='both')) ax1[1, 0].yaxis.set_major_locator(MaxNLocator(3, min_n_ticks=3, - prune='both')) + prune='both')) ax1[1, 0].yaxis.set_minor_locator(MaxNLocator(12, min_n_ticks=9, - prune='both')) - # ax1[0, 1].yaxis.set_major_locator(MaxNLocator(3, min_n_ticks=3, - # prune='both')) - # ax1[0, 1].yaxis.set_minor_locator(MaxNLocator(12, min_n_ticks=9, - # prune='both')) - # ax1[1, 1].yaxis.set_major_locator(MaxNLocator(3, min_n_ticks=3, - # prune='both')) - # ax1[1, 1].yaxis.set_minor_locator(MaxNLocator(12, min_n_ticks=9, - # prune='both')) - # ax1[0, 0].ticklabel_format(style='sci', axis='x', scilimits=(0, 0), - # useMathText=True) + prune='both')) + ax1[0, 0].ticklabel_format(style='sci', axis='y', scilimits=(1, 1), - useMathText=True) + useMathText=True) ax1[1, 0].ticklabel_format(style='sci', axis='y', scilimits=(1, 1), - useMathText=True) - ax1[1, 0].ticklabel_format(style='sci', axis='x', scilimits=(-3, -3), - useMathText=True) + useMathText=True) + ax1[1, 0].ticklabel_format(style='sci', axis='x', + scilimits=(-3, -3), useMathText=True) ax1[0, 1].ticklabel_format(style='sci', axis='x', scilimits=(0, 0), - useMathText=True) + useMathText=True) ax1[0, 1].ticklabel_format(style='sci', axis='y', scilimits=(1, 1), - useMathText=True) - # ax1[1, 1].ticklabel_format(style='sci', axis='y', scilimits=(1, 1), - # useMathText=True) - # ax1[1, 1].ticklabel_format(style='sci', axis='x', scilimits=(0, -3), - # useMathText=True) - + useMathText=True) + ax2[0].yaxis.set_major_locator(MaxNLocator(3, min_n_ticks=2, - prune='both')) + prune='both')) ax2[0].yaxis.set_minor_locator(MaxNLocator(12, min_n_ticks=9, - prune='both')) + prune='both')) ax2[1].yaxis.set_major_locator(MaxNLocator(3, min_n_ticks=3, - prune='both')) + prune='both')) ax2[1].yaxis.set_minor_locator(MaxNLocator(15, min_n_ticks=9, - prune='both')) + prune='both')) ax2[1].xaxis.set_major_locator(MaxNLocator(3, min_n_ticks=3, - prune='both')) + prune='both')) ax2[1].xaxis.set_minor_locator(MaxNLocator(12, min_n_ticks=9, - prune='both')) + prune='both')) + ax2[0].ticklabel_format(style='sci', axis='x', scilimits=(0, 0), useMathText=True) ax2[0].ticklabel_format(style='sci', axis='y', scilimits=(-1, -1), @@ -644,13 +621,7 @@ def plot_hist(self, scale=1, save=False, component=None, bins=15): ax1[0, 1].set_yticks([]) ax1[1, 1].set_yticks([]) handles, labels = ax0.get_legend_handles_labels() - l = fig.legend(handles, labels, loc='lower center', ncols=2) - # for vpack in l._legend_handle_box.get_children(): - # for hpack in vpack.get_children(): - # hpack.get_children()[0].set_width(0) - # fig.tight_layout(rect=(0, 0.1, 1, 1)) - # ax[0].xaxis.set_major_locator(MultipleLocator(wmin+(wmax-wmin)/3)) - # ax[1].xaxis.set_major_locator(MultipleLocator(rmin+(rmax-rmin)/3)) + fig.legend(handles, labels, loc='lower center', ncols=2) if save: if component is not None: plt.savefig(f'basicrta-{self.cutoff}/{self.residue}/' @@ -667,31 +638,31 @@ def plot_hist(self, scale=1, save=False, component=None, bins=15): plt.show() def plot_gibbs(self, scale=1.5, sparse=1, save=False): - cmap = mpl.colormaps['tab10'] - rp = self.processed_results - - fig, ax = plt.subplots(2, figsize=(4*scale, 3*scale), sharex=True) - [ax[0].plot(rp.iteration[rp.labels == i][::sparse], - rp.weights[rp.labels == i][::sparse], '.', - label=f'{i}', color=cmap(i)) - for i in np.unique(rp.labels)] - ax[0].set_yscale('log') - ax[0].set_ylabel(r'$\pi_k$') - [ax[1].plot(rp.iteration[rp.labels == i][::sparse], - rp.rates[rp.labels == i][::sparse], '.', label=f'{i}', - color=cmap(i)) for i in np.unique(rp.labels)] - ax[1].set_yscale('log') - ax[1].set_ylabel(r'\lambda_k (ns$^{-1}$)') - ax[1].set_xlabel('sample') - ax[0].legend(title='component') - ax[1].legend(title='component') - plt.tight_layout() - if save: - plt.savefig(f'basicrta-{self.cutoff}/{self.residue}/' - 'plot_results.png', bbox_inches='tight') - plt.savefig(f'basicrta-{self.cutoff}/{self.residue}/' - 'plot_results.pdf', bbox_inches='tight') - plt.show() + cmap = mpl.colormaps['tab10'] + rp = self.processed_results + + fig, ax = plt.subplots(2, figsize=(4*scale, 3*scale), sharex=True) + [ax[0].plot(rp.iteration[rp.labels == i][::sparse], + rp.weights[rp.labels == i][::sparse], '.', + label=f'{i}', color=cmap(i)) + for i in np.unique(rp.labels)] + ax[0].set_yscale('log') + ax[0].set_ylabel(r'$\pi_k$') + [ax[1].plot(rp.iteration[rp.labels == i][::sparse], + rp.rates[rp.labels == i][::sparse], '.', label=f'{i}', + color=cmap(i)) for i in np.unique(rp.labels)] + ax[1].set_yscale('log') + ax[1].set_ylabel(r'\lambda_k (ns$^{-1}$)') + ax[1].set_xlabel('sample') + ax[0].legend(title='component') + ax[1].legend(title='component') + plt.tight_layout() + if save: + plt.savefig(f'basicrta-{self.cutoff}/{self.residue}/' + 'plot_results.png', bbox_inches='tight') + plt.savefig(f'basicrta-{self.cutoff}/{self.residue}/' + 'plot_results.pdf', bbox_inches='tight') + plt.show() def _estimate_params(self): rp = self.processed_results @@ -718,11 +689,15 @@ def _estimate_params(self): setattr(rp, 'intervals', np.array([wbounds, rbounds])) def estimate_tau(self): - """ - Estimate the posterior maximum for the tau distribution + r""" + Estimate the posterior maximum and confidence interval (CI) for the + :math:`tau` distribution of the slowest process. NOTE: In the future + this will return an array containing :math:`tau` and CI for all + clusters. :return: An array containing the posterior maximum and bounds of the 95% confidence interval in the format [LB, max, UB]. + :rtype: list """ rp = self.processed_results @@ -733,9 +708,6 @@ def estimate_tau(self): taus = 1 / rp.rates[rp.labels == index] ci = confidence_interval(taus) - citaus = taus[(taus > ci[0]) & (taus < ci[1])] - #bins = np.exp(np.linspace(np.log(citaus.min()), np.log(citaus.max()), - # 20)) bins = 15 h = np.histogram(taus, bins=bins) indmax = h[0].argmax() @@ -812,7 +784,7 @@ def plot_surv(self, scale=1, remove_noise=False, save=False, xlim=None, parser.add_argument('--contacts') parser.add_argument('--resid', type=int, default=None) parser.add_argument('--nproc', type=int, default=1) - parser.add_argument('--niter', type=int, default=50000) + parser.add_argument('--niter', type=int, default=110000) parser.add_argument('--ncomp', type=int, default=15) args = parser.parse_args() diff --git a/basicrta/kinetics.py b/basicrta/kinetics.py index 44f393e..8613092 100644 --- a/basicrta/kinetics.py +++ b/basicrta/kinetics.py @@ -1,14 +1,24 @@ -from basicrta.wdensity import WDensityAnalysis +from tqdm import tqdm +from basicrta.util import get_start_stop_frames import numpy as np import MDAnalysis as mda import os -from tqdm import tqdm -from basicrta.util import get_start_stop_frames import pickle -# from MDAnalysis.lib.util import realpath class MapKinetics(object): + r""" + The MapKinetics class takes processed Gibbs sampler data (an instance of the + Gibbs class) and the contact file to create costomized trajectories, + containing all of `sel1` from the initial contact analysis and a single + `sel2` residue. + + :param gibbs: Processed instance of :class:`Gibbs` class + :type gibbs: str + :param contacts: Contact pickle file (`contacts-{cutoff}.pkl`) + :type contacts: str + + """ def __init__(self, gibbs, contacts): self.gibbs = gibbs self.cutoff = float(contacts.split('/')[-1].strip('.pkl'). @@ -67,6 +77,20 @@ def _create_data(self): j += len(tmp) def create_traj(self, top_n=None): + r""" + Create the customized trajectories for the individual mixture components + of the model. If `top_n` is None, a single trajectory is created + with all of `sel1` and a single `sel2` residue, with every contact + accounted for (ie. a single frame in the original trajectory may be + used multiple times due to multiple contacts formed with the `sel1` + residue of interest at that frame). + + :param top_n: Number of frames desired for the individual trajectories + (sorted in order of decreasing classification + probability). + :type top_n: int + """ + if os.path.exists(self.fulltraj) and top_n is None: raise FileExistsError(f'{self.fulltraj} exists, remove then rerun') @@ -101,6 +125,19 @@ def create_traj(self, top_n=None): W.write(ag1 + ag2.select_atoms(f'resid {int(tmp[i, 1])}')) def weighted_densities(self, step=1, top_n=None, filterP=0): + """ + Create weighted densities based on the marginal posterior probabilities + of the model component classification. + + :param step: Use every `Nth` frame + :type step: int + :param top_n: Use the `N` most likely frames for each component to + compute the weighted densities from. + :type top_n: int + :param filterP: Probabilities less than `filterP` are not used in the + weighted density calculation + :type filterP: float + """ if not os.path.exists(self.fulltraj): self.create_traj() @@ -177,7 +214,7 @@ def weighted_densities(self, step=1, top_n=None, filterP=0): parser.add_argument("--step", type=int, nargs='?', default=1) parser.add_argument("--wdensity", action='store_true') args = parser.parse_args() - + g = Gibbs().load(args.gibbs) mk = MapKinetics(g, args.contacts) mk.create_traj(top_n=args.top_n) diff --git a/basicrta/pwdensity.py b/basicrta/pwdensity.py index 9c8099f..2f30c14 100644 --- a/basicrta/pwdensity.py +++ b/basicrta/pwdensity.py @@ -210,15 +210,15 @@ def _prepare(self): try: smin = np.min(coord, axis=0) smax = np.max(coord, axis=0) - except ValueError as err: + except ValueError: msg = ("No atoms in AtomGroup at input time frame. " "This may be intended; please ensure that " "your grid selection covers the atomic " "positions you wish to capture.") warnings.warn(msg) logger.warning(msg) - smin = self._gridcenter #assigns limits to be later - - smax = self._gridcenter #overwritten by _set_user_grid + smin = self._gridcenter # assigns limits to be later - + smax = self._gridcenter # overwritten by _set_user_grid # Overwrite smin/smax with user defined values smin, smax = self._set_user_grid(self._gridcenter, self._xdim, self._ydim, self._zdim, smin, @@ -329,7 +329,6 @@ def _set_user_grid(gridcenter, xdim, ydim, zdim, smin, smax): if any(np.isnan(gridcenter)) or any(np.isnan(xyzdim)): raise ValueError("Gridcenter or grid dimensions have NaN element") - # Set min/max by shifting by half the edge length of each dimension umin = gridcenter - xyzdim/2 umax = gridcenter + xyzdim/2 @@ -471,8 +470,8 @@ def __init__(self, *args, **kwargs): length_unit = 'Angstrom' parameters = kwargs.pop('parameters', {}) - if (len(args) > 0 and isinstance(args[0], str) or - isinstance(kwargs.get('grid', None), str)): + if (len(args) > 0 and isinstance(args[0], str) or + isinstance(kwargs.get('grid', None), str)): # try to be smart: when reading from a file then it is likely that # this is a density parameters.setdefault('isDensity', True) @@ -627,4 +626,3 @@ def __repr__(self): else: grid_type = 'histogram' return '' - diff --git a/basicrta/tests/data/times.npy b/basicrta/tests/data/times.npy new file mode 100644 index 0000000..390fda8 Binary files /dev/null and b/basicrta/tests/data/times.npy differ diff --git a/basicrta/tests/datafiles.py b/basicrta/tests/datafiles.py new file mode 100644 index 0000000..4f80dfa --- /dev/null +++ b/basicrta/tests/datafiles.py @@ -0,0 +1,33 @@ +# -*- Mode: python; tab-width: 4; indent-tabs-mode:nil; coding:utf-8 -*- +# vim: tabstop=4 expandtab shiftwidth=4 softtabstop=4 fileencoding=utf-8 +# +# Basicrta +# Copyright (c) 2024 Ricky Sexton +# +# Released under the GNU Public Licence, v3 or any higher version +# +# Please cite your use of basicrta in published work: +# + +""" +Location of data files for the basicrta unit tests +==================================================== + + from basicrta.tests.datafiles import * + +""" + +__all__ = [ + "times" # set of residence times collected from W313 of b2ar +] + +from importlib import resources +import numpy as np +import basicrta.tests.data + +_data_ref = resources.files('basicrta.tests.data') + +times = np.load((_data_ref / 'times.npy').as_posix()) +# This should be the last line: clean up namespace +del resources + diff --git a/basicrta/util.py b/basicrta/util.py index ff5d165..b06ec8b 100644 --- a/basicrta/util.py +++ b/basicrta/util.py @@ -1,20 +1,23 @@ """Functions used by other modules.""" -from matplotlib.ticker import (MultipleLocator, FormatStrFormatter, - AutoMinorLocator) +from matplotlib.ticker import MultipleLocator from matplotlib.patches import Rectangle from matplotlib.collections import PatchCollection -import ast, multiprocessing, os +from glob import glob +from tqdm import tqdm +import ast +import multiprocessing +import os import numpy as np import matplotlib as mpl import matplotlib.pyplot as plt -import pickle, bz2 -from glob import glob +import pickle import seaborn as sns -from tqdm import tqdm import MDAnalysis as mda import MDAnalysis -from scipy.optimize import linear_sum_assignment as lsa +import warnings +#from scipy.optimize import linear_sum_assignment as lsa +#import bz2 mpl.rcParams['pdf.fonttype'] = 42 @@ -75,17 +78,14 @@ def tm(Prot, i): def confidence_interval(data, percentage=95): ds = np.sort(data) perc = np.arange(1, len(ds) + 1) / (len(ds)) - lower, upper = (100 - percentage) / 200, ( - percentage + (100 - percentage) / 2) / 100 + lower = (100 - percentage) / 200 + upper = (percentage + (100 - percentage) / 2) / 100 try: l = ds[np.where(perc <= lower)[0][-1]] - except IndexError: - l = ds[0] - - try: u = ds[np.where(perc >= upper)[0][0]] except IndexError: + l = ds[0] u = ds[-1] return [l, u] @@ -193,10 +193,10 @@ def plot_results(results, cond='ml', save=False, show=False): fig, axs = plt.subplots(figsize=(4, 3)) plt.scatter(results.t, results.s, s=15, label='data') - plt.plot(results.t, np.inner(weights, np.exp(np.outer(results.t, -rates))), \ + plt.plot(results.t, np.inner(weights, np.exp(np.outer(results.t, -rates))), label='fit', color='y', ls='dashed', lw=3) for i in range(results.ncomp): - plt.plot(results.t, weights[i] * np.exp(results.t * -rates[i]), \ + plt.plot(results.t, weights[i] * np.exp(results.t * -rates[i]), label=f'Comp.{i}', color=f'C{i}') plt.plot([], [], ' ', label=rf'$\tau$={np.round(1 / rates.min(), 1)} ns') plt.yscale('log') @@ -221,7 +221,7 @@ def all_post_hist(results, save=False, show=False, wlims=None, rlims=None): Attr = getattr(results, attr) plt.figure(figsize=(4, 3)) for i in range(results.ncomp): - plt.hist(Attr[i], density=True, bins=15, label=f'comp. {i}', \ + plt.hist(Attr[i], density=True, bins=15, label=f'comp. {i}', alpha=0.5) plt.legend() plt.xlabel(f'{attr}{unit}'), plt.ylabel('p').set_rotation(0) @@ -293,9 +293,9 @@ def plot_trace(results, attr, comp=None, xrange=None, yrange=None, save=False, plt.xlabel('iteration') plt.ylabel(f'{attr}') plt.legend() - if xrange != None: + if xrange is not None: plt.xlim(xrange[0], xrange[1]) - if yrange != None: + if yrange is not None: plt.ylim(yrange[0], yrange[1]) if save: plt.savefig(f'{outdir}/figs/k{results.ncomp}-trace_{attr}.png') @@ -307,9 +307,9 @@ def plot_trace(results, attr, comp=None, xrange=None, yrange=None, save=False, plt.xlabel('iteration') plt.ylabel(f'{attr}') plt.legend() - if xrange != None: + if xrange is not None: plt.xlim(xrange[0], xrange[1]) - if yrange != None: + if yrange is not None: plt.ylim(yrange[0], yrange[1]) if save: plt.savefig(f'{outdir}/figs/k{results.ncomp}-trace_{attr}_comps-\ @@ -400,11 +400,16 @@ def make_residue_plots(results, comps=None, show=False): plot_trace(r, 'rates', comp=comps, save=True, show=show, yrange=[-0.1, 6]) -def plot_protein(residues, t_slow, bars, prot, label_cutoff=3, ylim=None, +def plot_protein(residues, t_slow, bars, prot=None, label_cutoff=3, ylim=None, major_tick=None, minor_tick=None, scale=1): - with open('tm_dict.txt', 'r') as f: - contents = f.read() - prots = ast.literal_eval(contents) + try: + with open('tm_dict.txt', 'r') as f: + contents = f.read() + prots = ast.literal_eval(contents) + except FileNotFoundError: + warnings.warn("tm_dict.txt not found, TM bars will not be drawn in " + r"$\tau$ vs resid plot") + prot = None if not os.path.exists('figs'): os.mkdir('figs') @@ -413,11 +418,14 @@ def plot_protein(residues, t_slow, bars, prot, label_cutoff=3, ylim=None, fig, axs = plt.subplots(2, 1, figsize=(width, height), sharex=True) axs[0].tick_params(axis='both', which='major', labelsize=10) axs[1].tick_params(axis='both', which='major', labelsize=10) - p = [Rectangle((tm(prots[prot]['helices'], i + 1)[0][0], 0), - tm(prots[prot]['helices'], i + 1)[1], 1, fill=True) for i in - range(7)] - patches = PatchCollection(p) - patches.set_color('C0') + if prot is not None: + p = [Rectangle((tm(prots[prot]['helices'], i + 1)[0][0], 0), + tm(prots[prot]['helices'], i + 1)[1], 1, fill=True) + for i in range(7)] + patches = PatchCollection(p) + patches.set_color('C0') + axs[1].add_collection(patches) + resids = np.array([int(res[1:]) for res in residues]) max_inds = np.where(t_slow > label_cutoff * t_slow.mean()) axs[0].plot(resids, t_slow, '.', color='C0') @@ -425,22 +433,20 @@ def plot_protein(residues, t_slow, bars, prot, label_cutoff=3, ylim=None, alpha=0.5) [axs[0].text(resids[ind], t_slow[ind], residues[ind]) for ind in max_inds[0]] - axs[1].add_collection(patches) - # if (prot=='cck1r') or (prot=='cck2r'): - # axs[0].set_ylim(0, 1300) - # else: - # axs[0].set_ylim(0, 500) axs[0].set_ylabel(r'$\tau$ [ns]') axs[1].set_xlabel(r'residue') axs[0].get_xaxis().set_visible(False) axs[1].get_yaxis().set_visible(False) axs[1].xaxis.set_major_locator(MultipleLocator(100)) - axs[0].yaxis.set_major_locator(MultipleLocator(major_tick)) - axs[0].yaxis.set_minor_locator(MultipleLocator(minor_tick)) - # axs[1].xaxis.set_minor_locator(MultipleLocator(10)) + if major_tick is not None: + axs[0].yaxis.set_major_locator(MultipleLocator(major_tick)) + if minor_tick is not None: + axs[0].yaxis.set_minor_locator(MultipleLocator(minor_tick)) + if ylim is not None: + axs[0].set_ylim(ylim) axs[1].set_aspect(7) axs[0].margins(x=0) - axs[0].set_ylim(ylim) + plt.subplots_adjust(hspace=-0.45, top=0.92) sns.despine(offset=10, ax=axs[0], bottom=True) sns.despine(ax=axs[1], top=True, bottom=False, left=True) @@ -466,7 +472,7 @@ def plot_protein(residues, t_slow, bars, prot, label_cutoff=3, ylim=None, # gib.run() -def run_residue(residue, time, proc, ncomp, niter, cutoff): +def run_residue(residue, time, proc, ncomp, niter, cutoff, g): from basicrta.gibbs import Gibbs x = np.array(time) if len(x) != 0: @@ -546,10 +552,10 @@ def write_trajs(u, time, trajtime, indicator, residue, lipind, step): if len(write_frames) > step: write_frames = write_frames[::step] write_Linds = write_Linds[::step] - with mda.Writer(f"{residue}/comp{comp}_traj.xtc", \ + with mda.Writer(f"{residue}/comp{comp}_traj.xtc", len((prot + chol.residues[0].atoms).atoms)) as W: - for i, ts in tqdm(enumerate(u.trajectory[write_frames]), \ - desc=f"{residue}-comp{comp}", position=proc, \ + for i, ts in tqdm(enumerate(u.trajectory[write_frames]), + desc=f"{residue}-comp{comp}", position=proc, leave=False, total=len(write_frames)): ag = prot + chol.residues[write_Linds[i]].atoms W.write(ag) @@ -563,7 +569,7 @@ def plot_hists(timelens, indicators, residues): plt.close() for i in range(ncomps): - h, edges = np.histogram(timelen, density=True, bins=50, \ + h, edges = np.histogram(timelen, density=True, bins=50, weights=indicator[i]) m = 0.5 * (edges[1:] + edges[:-1]) plt.plot(m, h, '.', label=i, alpha=0.5) @@ -638,7 +644,7 @@ def expand_times(contacts): restimes = [] for lip in range(times.shape[1]): for i in range(times[res, lip].shape[0]): - [restimes.append(j) for j in [times[res, lip][i]] * \ + [restimes.append(j) for j in [times[res, lip][i]] * Ns[res, lip][i].astype(int)] alltimes.append(restimes) return np.asarray(alltimes) @@ -677,15 +683,14 @@ def extract_data(gibbs): rcutoff = arates.min() data = np.stack((aweights, arates), axis=1) - tweights, trates = train_weights.flatten(), train_rates.flatten() - train_data = np.stack((tweights, trates), axis=1) + # tweights, trates = train_weights.flatten(), train_rates.flatten() + # train_data = np.stack((tweights, trates), axis=1) - tmpw, tmpr = np.delete(weights, train_inds), np.delete(rates, train_inds) - pweights, prates = tmpw[tmpw > wcutoff], tmpr[tmpw > wcutoff] - predict_data = np.stack((pweights, prates), axis=1) + # tmpw, tmpr = np.delete(weights, train_inds), np.delete(rates, train_inds) + # pweights, prates = tmpw[tmpw > wcutoff], tmpr[tmpw > wcutoff] + # predict_data = np.stack((pweights, prates), axis=1) return data, train_inds - def mixture_and_plot(gibbs, scale=2, sparse=1, remove_noise=False, wlim=None, rlim=None, **kwargs): from scipy import stats @@ -701,7 +706,7 @@ def mixture_and_plot(gibbs, scale=2, sparse=1, remove_noise=False, wlim=None, weights, rates = gibbs.mcweights[burnin_ind:], gibbs.mcrates[burnin_ind:] lens = np.array([len(row[row > wcutoff]) for row in weights]) - lmin, lmode, lmax = lens.min(), stats.mode(lens).mode, lens.max() + lmode = stats.mode(lens).mode train_param = lmode train_inds = np.where(lens == train_param)[0] @@ -1251,7 +1256,6 @@ def get_fa_sel(aln, protA, protB): selB_mat = protB.residues[inds] return selA_mat, selB_mat - def get_fa_sel_match(aln, protA, protB): with open(aln) as F: names = [] @@ -1275,32 +1279,12 @@ def get_fa_sel_match(aln, protA, protB): seqA = np.array([i for i in seqs[0]]) seqB = np.array([i for i in seqs[1]]) - match_inds = np.where(seqA == seqB)[0] - # results = [] - # [results.append(list(map(get_code, (seqs[i])))) for i in range(2)] - # results = np.asarray(results) - # - # start_inds = np.arange(len(results[0])) - # void_inds = np.where(results == '-') - # fin_inds = np.delete(start_inds, void_inds[1]) - # - # results = results[:, fin_inds] - # resnamesA = protA.residues.resnames - # resnamesB = protB.residues.resnames - # - # indsA = get_indices(resnamesA, results[0]) - # indsB = get_indices(resnamesB, results[1]) - # - # matching_indsA = indsA[resnamesA[indsA] == resnamesB[indsB]] - # matching_indsB = indsB[resnamesA[indsA] == resnamesB[indsB]] - selA_mat = protA.residues[match_inds] selB_mat = protB.residues[match_inds] return selA_mat, selB_mat - def align_homologues(Areduced, Breduced, aln): from MDAnalysis.analysis import align uA = mda.Universe(Areduced) @@ -1329,42 +1313,39 @@ def get_delta_tau(aln, protA, protB, tausA, tausB): residsB = selB.residues.resids matchids = np.stack((residsA, residsB)).T - match_vals = np.array([[tausA[:, 1][tausA[:, 0]==iA][0], - tausB[:, 1][tausB[:, 0]==iB][0], iA, iB] + match_vals = np.array([[tausA[:, 1][tausA[:, 0] == iA][0], + tausB[:, 1][tausB[:, 0] == iB][0], iA, iB] for iA, iB in matchids if iA in tausA[:, 0] if iB in tausB[:, 0]]) delta_tau = -np.diff(match_vals[:, :2]).reshape(len(match_vals),) return match_vals[:,2].astype(int), match_vals[:, 3].astype(int), delta_tau - def plot_delta_tau(A, B, dtau, protA, protB, factor=2): - scale = 1 - rmsd = np.sqrt(np.mean(dtau**2)) - fig, ax = plt.subplots(1, figsize=(4*scale, 3*scale)) - ax.plot(A[dtau>0], dtau[dtau>0], '.', color='C0') - ax.plot(A[dtau<0], dtau[dtau<0], '.', color='C3') - for i, tau in enumerate(dtau): - if tau>=factor*rmsd: - resname = protA.select_atoms(f'resid {A[i]}').resnames[0] - reslet = mda.lib.util.convert_aa_code(resname) - ax.text(A[i], tau, f'{reslet}{A[i]}') - elif (tau<0) & (abs(tau)>=factor*rmsd): - resname = protB.select_atoms(f'resid {B[i]}').resnames[0] - reslet = mda.lib.util.convert_aa_code(resname) - ax.text(A[i], tau, f'{reslet}{B[i]}') - else: - continue - ax.xaxis.set_ticks([]) - ax.set_ylabel(r'$\Delta\tau\, [ns]$') - #ax.set_xlabel('residue') - plt.gca().spines['top'].set_visible(False) - plt.gca().spines['bottom'].set_visible(False) - plt.gca().spines['right'].set_visible(False) - ax.yaxis.set_minor_locator(MultipleLocator(125)) - ax.yaxis.set_major_locator(MultipleLocator(500)) - plt.tight_layout() - plt.savefig('delta_tau.pdf', bbox_inches='tight') - plt.savefig('delta_tau.png', bbox_inches='tight') - plt.show() - + scale = 1 + rmsd = np.sqrt(np.mean(dtau**2)) + fig, ax = plt.subplots(1, figsize=(4*scale, 3*scale)) + ax.plot(A[dtau > 0], dtau[dtau > 0], '.', color='C0') + ax.plot(A[dtau < 0], dtau[dtau < 0], '.', color='C3') + for i, tau in enumerate(dtau): + if tau >= factor*rmsd: + resname = protA.select_atoms(f'resid {A[i]}').resnames[0] + reslet = mda.lib.util.convert_aa_code(resname) + ax.text(A[i], tau, f'{reslet}{A[i]}') + elif (tau<0) & (abs(tau) >= factor*rmsd): + resname = protB.select_atoms(f'resid {B[i]}').resnames[0] + reslet = mda.lib.util.convert_aa_code(resname) + ax.text(A[i], tau, f'{reslet}{B[i]}') + else: + continue + ax.xaxis.set_ticks([]) + ax.set_ylabel(r'$\Delta\tau\, [ns]$') + plt.gca().spines['top'].set_visible(False) + plt.gca().spines['bottom'].set_visible(False) + plt.gca().spines['right'].set_visible(False) + ax.yaxis.set_minor_locator(MultipleLocator(125)) + ax.yaxis.set_major_locator(MultipleLocator(500)) + plt.tight_layout() + plt.savefig('delta_tau.pdf', bbox_inches='tight') + plt.savefig('delta_tau.png', bbox_inches='tight') + plt.show() diff --git a/basicrta/wdensity.py b/basicrta/wdensity.py index 7c56471..700af83 100644 --- a/basicrta/wdensity.py +++ b/basicrta/wdensity.py @@ -210,15 +210,15 @@ def _prepare(self): try: smin = np.min(coord, axis=0) smax = np.max(coord, axis=0) - except ValueError as err: + except ValueError: msg = ("No atoms in AtomGroup at input time frame. " "This may be intended; please ensure that " "your grid selection covers the atomic " "positions you wish to capture.") warnings.warn(msg) logger.warning(msg) - smin = self._gridcenter #assigns limits to be later - - smax = self._gridcenter #overwritten by _set_user_grid + smin = self._gridcenter # assigns limits to be later - + smax = self._gridcenter # overwritten by _set_user_grid # Overwrite smin/smax with user defined values smin, smax = self._set_user_grid(self._gridcenter, self._xdim, self._ydim, self._zdim, smin, @@ -251,7 +251,7 @@ def _prepare(self): self._edges = edges self._arange = arange self._bins = bins - #self._grids = np.array([grid.copy() for _ in range(self._weights.shape[1])]) + # self._grids = np.array([grid.copy() for _ in range(self._weights.shape[1])]) def _single_frame(self): h, _ = np.histogramdd(self._atomgroup.positions, @@ -260,7 +260,7 @@ def _single_frame(self): # return self._reduce(self._grid, h) # # serial code can simply do - #self._grids += np.array([w*h for w in self._weights[self._frame_index]]) + # self._grids += np.array([w*h for w in self._weights[self._frame_index]]) self._grid += h*self._weights[self._frame_index] def _conclude(self): @@ -271,12 +271,12 @@ def _conclude(self): parameters={'isDensity': False}) density.make_density() self.results.density = density - #self._grids /= float(self.n_frames) - #densities = [Density(grid=grid, edges=self._edges, + # self._grids /= float(self.n_frames) + # densities = [Density(grid=grid, edges=self._edges, # units={'length': "Angstrom"}, # parameters={'isDensity': False}) for grid in self._grids] - #[d.make_density() for d in densities] - #self.results.densities = densities + # [d.make_density() for d in densities] + # self.results.densities = densities @property def density(self): @@ -328,7 +328,6 @@ def _set_user_grid(gridcenter, xdim, ydim, zdim, smin, smax): if any(np.isnan(gridcenter)) or any(np.isnan(xyzdim)): raise ValueError("Gridcenter or grid dimensions have NaN element") - # Set min/max by shifting by half the edge length of each dimension umin = gridcenter - xyzdim/2 umax = gridcenter + xyzdim/2 @@ -471,7 +470,7 @@ def __init__(self, *args, **kwargs): parameters = kwargs.pop('parameters', {}) if (len(args) > 0 and isinstance(args[0], str) or - isinstance(kwargs.get('grid', None), str)): + isinstance(kwargs.get('grid', None), str)): # try to be smart: when reading from a file then it is likely that # this is a density parameters.setdefault('isDensity', True) @@ -626,4 +625,3 @@ def __repr__(self): else: grid_type = 'histogram' return '' - diff --git a/docs/README.md b/docs/README.md index 38601a3..5bbb97e 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,5 +1,12 @@ # Compiling basicrta's Documentation +This package was written to perform the analyses in [Sexton_2024]. + +.. [Sexton_2024] Sexton, R.; Fazel, M.; Schweiger, M.; Pressé, S.; + Beckstein, O. Bayesian Nonparametric Analysis of Residence Times for + Protein-Lipid Interactions in Molecular Dynamics Simulations. November 9, + 2024. https://doi.org/10.1101/2024.11.07.622502. + The docs for this project are built with [Sphinx](http://www.sphinx-doc.org/en/master/). To compile the docs, first ensure that Sphinx and the ReadTheDocs theme are installed. diff --git a/docs/_build/doctrees/api.doctree b/docs/_build/doctrees/api.doctree deleted file mode 100644 index 184a394..0000000 Binary files a/docs/_build/doctrees/api.doctree and /dev/null differ diff --git a/docs/_build/doctrees/autosummary/basicrta.cluster.doctree b/docs/_build/doctrees/autosummary/basicrta.cluster.doctree deleted file mode 100644 index c7082cc..0000000 Binary files a/docs/_build/doctrees/autosummary/basicrta.cluster.doctree and /dev/null differ diff --git a/docs/_build/doctrees/autosummary/basicrta.contacts.doctree b/docs/_build/doctrees/autosummary/basicrta.contacts.doctree deleted file mode 100644 index 308f37b..0000000 Binary files a/docs/_build/doctrees/autosummary/basicrta.contacts.doctree and /dev/null differ diff --git a/docs/_build/doctrees/autosummary/basicrta.data.doctree b/docs/_build/doctrees/autosummary/basicrta.data.doctree deleted file mode 100644 index 91622ed..0000000 Binary files a/docs/_build/doctrees/autosummary/basicrta.data.doctree and /dev/null differ diff --git a/docs/_build/doctrees/autosummary/basicrta.data.files.doctree b/docs/_build/doctrees/autosummary/basicrta.data.files.doctree deleted file mode 100644 index 2a64954..0000000 Binary files a/docs/_build/doctrees/autosummary/basicrta.data.files.doctree and /dev/null differ diff --git a/docs/_build/doctrees/autosummary/basicrta.doctree b/docs/_build/doctrees/autosummary/basicrta.doctree deleted file mode 100644 index 096c45b..0000000 Binary files a/docs/_build/doctrees/autosummary/basicrta.doctree and /dev/null differ diff --git a/docs/_build/doctrees/autosummary/basicrta.gibbs.Gibbs.doctree b/docs/_build/doctrees/autosummary/basicrta.gibbs.Gibbs.doctree deleted file mode 100644 index 57a8285..0000000 Binary files a/docs/_build/doctrees/autosummary/basicrta.gibbs.Gibbs.doctree and /dev/null differ diff --git a/docs/_build/doctrees/autosummary/basicrta.gibbs.doctree b/docs/_build/doctrees/autosummary/basicrta.gibbs.doctree deleted file mode 100644 index 1215b27..0000000 Binary files a/docs/_build/doctrees/autosummary/basicrta.gibbs.doctree and /dev/null differ diff --git a/docs/_build/doctrees/autosummary/basicrta.istarmap.doctree b/docs/_build/doctrees/autosummary/basicrta.istarmap.doctree deleted file mode 100644 index eba5a87..0000000 Binary files a/docs/_build/doctrees/autosummary/basicrta.istarmap.doctree and /dev/null differ diff --git a/docs/_build/doctrees/autosummary/basicrta.pwdensity.doctree b/docs/_build/doctrees/autosummary/basicrta.pwdensity.doctree deleted file mode 100644 index 07dbd3c..0000000 Binary files a/docs/_build/doctrees/autosummary/basicrta.pwdensity.doctree and /dev/null differ diff --git a/docs/_build/doctrees/autosummary/basicrta.util.doctree b/docs/_build/doctrees/autosummary/basicrta.util.doctree deleted file mode 100644 index cc7c6a8..0000000 Binary files a/docs/_build/doctrees/autosummary/basicrta.util.doctree and /dev/null differ diff --git a/docs/_build/doctrees/autosummary/basicrta.wdensity.doctree b/docs/_build/doctrees/autosummary/basicrta.wdensity.doctree deleted file mode 100644 index 71b8ff9..0000000 Binary files a/docs/_build/doctrees/autosummary/basicrta.wdensity.doctree and /dev/null differ diff --git a/docs/_build/doctrees/autosummary/basicrta.weighted_density.doctree b/docs/_build/doctrees/autosummary/basicrta.weighted_density.doctree deleted file mode 100644 index 3761b5d..0000000 Binary files a/docs/_build/doctrees/autosummary/basicrta.weighted_density.doctree and /dev/null differ diff --git a/docs/_build/doctrees/environment.pickle b/docs/_build/doctrees/environment.pickle deleted file mode 100644 index d97d518..0000000 Binary files a/docs/_build/doctrees/environment.pickle and /dev/null differ diff --git a/docs/_build/doctrees/getting_started.doctree b/docs/_build/doctrees/getting_started.doctree deleted file mode 100644 index 4994ca2..0000000 Binary files a/docs/_build/doctrees/getting_started.doctree and /dev/null differ diff --git a/docs/_build/doctrees/index.doctree b/docs/_build/doctrees/index.doctree deleted file mode 100644 index bc90334..0000000 Binary files a/docs/_build/doctrees/index.doctree and /dev/null differ diff --git a/docs/_build/doctrees/tutorial.doctree b/docs/_build/doctrees/tutorial.doctree deleted file mode 100644 index 74985fc..0000000 Binary files a/docs/_build/doctrees/tutorial.doctree and /dev/null differ diff --git a/docs/_build/html/.buildinfo b/docs/_build/html/.buildinfo deleted file mode 100644 index 45e931b..0000000 --- a/docs/_build/html/.buildinfo +++ /dev/null @@ -1,4 +0,0 @@ -# Sphinx build info version 1 -# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. -config: cc55f43c004c7de58debdf8881b4a156 -tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/docs/_build/html/.buildinfo.bak b/docs/_build/html/.buildinfo.bak deleted file mode 100644 index 45e931b..0000000 --- a/docs/_build/html/.buildinfo.bak +++ /dev/null @@ -1,4 +0,0 @@ -# Sphinx build info version 1 -# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. -config: cc55f43c004c7de58debdf8881b4a156 -tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/docs/_build/html/_modules/basicrta/gibbs.html b/docs/_build/html/_modules/basicrta/gibbs.html deleted file mode 100644 index 5959747..0000000 --- a/docs/_build/html/_modules/basicrta/gibbs.html +++ /dev/null @@ -1,987 +0,0 @@ - - - - - - - - - - - - - - - - - - - - basicrta.gibbs — basicrta documentation - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -

Source code for basicrta.gibbs

-"""Analysis functions
-"""
-
-import os
-import gc
-import pickle
-import numpy as np
-import matplotlib as mpl
-import matplotlib.pyplot as plt
-from numpy.random import default_rng
-from tqdm import tqdm
-from MDAnalysis.analysis.base import Results
-from basicrta.util import confidence_interval
-from multiprocessing import Pool, Lock
-import MDAnalysis as mda
-from basicrta import istarmap
-
-gc.enable()
-mpl.rcParams['pdf.fonttype'] = 42
-rng = default_rng()
-
-
-class ParallelGibbs(object):
-    """
-    A module to take a contact map and run Gibbs samplers for each residue
-    """
-
-    def __init__(self, contacts, nproc=1, ncomp=15, niter=110000):
-        self.cutoff = float(contacts.strip('.pkl').split('/')[-1].split('_')
-                            [-1])
-        self.niter = niter
-        self.nproc = nproc
-        self.ncomp = ncomp
-        self.contacts = contacts
-
-    def run(self, run_resids=None):
-        from basicrta.util import run_residue
-
-        with open(self.contacts, 'r+b') as f:
-            contacts = pickle.load(f)
-
-        protids = np.unique(contacts[:, 0])
-        if not run_resids:
-            run_resids = protids
-
-        if not isinstance(run_resids, (list, np.ndarray)):
-            run_resids = [run_resids]
-
-        rg = contacts.dtype.metadata['ag1'].residues
-        resids = rg.resids
-        reslets = np.array([mda.lib.util.convert_aa_code(name) for name in
-                            rg.resnames])
-        residues = np.array([f'{reslet}{resid}' for reslet, resid in
-                             zip(reslets, resids)])
-        times = [contacts[contacts[:, 0] == i][:, 3] for i in
-                 run_resids]
-        inds = np.array([np.where(resids == resid)[0][0] for resid in
-                         run_resids])
-        residues = residues[inds]
-        input_list = [[residues[i], times[i].copy(), i % self.nproc,
-                       self.ncomp, self.niter, self.cutoff] for i in
-                      range(len(residues))]
-
-        del contacts, times
-        gc.collect()
-
-        with (Pool(self.nproc, initializer=tqdm.set_lock,
-                   initargs=(Lock(),)) as p):
-            try:
-                for _ in tqdm(p.istarmap(run_residue, input_list),
-                              total=len(residues), position=0,
-                              desc='overall progress'):
-                    pass
-            except KeyboardInterrupt:
-                    pass
-
-
-
-[docs] -class Gibbs(object): - r"""Gibbs sampler to estimate parameters of an exponential mixture for a set - of data. Results are stored in :class:`gibbs.results`, which uses - :class:`MDAnalysis.analysis.base.Results()`. If 'results=None' the gibbs - sampler has not been executed, which requires calling :meth:`run` - - :param times: Set of residence times to analyze - :type times: array, optional - :param residue: Residue name associated with the set of residence times - :type residue: str - :param loc: Used for progress bar in parallel applications - :type loc: int - :param ncomp: Number of exponential components to use in the mixture model - :type ncomp: int - :param niter: Number of iterations to run the Gibbs sampler - :type niter: int - :param cutoff: Cutoff calue used in contact analysis, used to determine - directory to load/save results. Allows for multiple cutoffs - to be tested in directory containing contacts. - :type cutoff: float - - EXAMPLE - ------- - >>> from basicrta.gibbs import Gibbs - >>> from basicrta.tests.data import times - >>> g = Gibbs(times=times, residue='W313', cutoff=7.0) - >>> g.run() - >>> g.process_gibbs() - >>> g.estimate_tau() - [1, 2, 3] - - To load a Gibbs sampler that has already been executed use the :meth:`load` - method - - >>> g = Gibbs().load('results.pkl') - - The Gibbs sampler can be executed using the :meth:`run` method without - processing the resulting data. Once the :meth:`process_gibbs` method is - called, the :attr:`Gibbs.results.processed_results` attribute will be - populated. - """ - -
-[docs] - def __init__(self, times=None, residue=None, loc=0, ncomp=15, niter=110000, - cutoff=None): - self.times = times - self.residue = residue - self.niter = niter - self.loc = loc - self.ncomp = ncomp - self.g = 100 - self.burnin = 10000 - self.cutoff = cutoff - self.processed_results = Results() - self._noise_cutoff = 0.4 - - if times is not None: - diff = (np.sort(times)[1:]-np.sort(times)[:-1]) - try: - self.ts = diff[diff != 0][0] - except IndexError: - self.ts = times.min() - else: - self.ts = None - - self.keys = {'times', 'residue', 'loc', 'ncomp', 'niter', 'g', 'burnin', - 'processed_results', 'ts', 'mcweights', 'mcrates', 't', - 's', 'cutoff', 'indicator'}
- - - def __getitem__(self, item): - return getattr(self, item) - - def _prepare(self): - from basicrta.util import get_s - self.t, self.s = get_s(self.times, self.ts) - - # initialize arrays - self.indicator = np.zeros(((self.niter + 1) // self.g, - self.times.shape[0]), dtype=np.uint8) - self.mcweights = np.zeros(((self.niter + 1) // self.g, self.ncomp)) - self.mcrates = np.zeros(((self.niter + 1) // self.g, self.ncomp)) - - # guess hyperparameters - self.whypers = np.ones(self.ncomp) / [self.ncomp] - self.rhypers = np.ones((self.ncomp, 2)) * [1, 3] - - def run(self): - r""" - Execute the Gibbs sampler and save the results to :attr:`Gibbs.results` - """ - # initialize weights and rates - self._prepare() - if not os.path.exists(f'basicrta-{self.cutoff}/{self.residue}'): - os.mkdir(f'basicrta-{self.cutoff}/{self.residue}') - - inrates = 0.5 * 10 ** np.arange(-self.ncomp + 2, 2, dtype=float) - tmpw = 9 * 10 ** (-np.arange(1, self.ncomp + 1, dtype=float)) - weights, rates = tmpw / tmpw.sum(), inrates[::-1] - - # gibbs sampler - for j in tqdm(range(1, self.niter+1), - desc=f'{self.residue}-K{self.ncomp}', - position=self.loc, leave=False): - - # compute probabilities - tmp = weights*rates*np.exp(np.outer(-rates, self.times)).T - z = (tmp.T/tmp.sum(axis=1)).T - - # sample indicator - s = np.argmax(rng.multinomial(1, z), axis=1) - - # get indicator for each data point - inds = [np.where(s == i)[0] for i in range(self.ncomp)] - - # compute total time and number of point for each component - Ns = np.array([len(inds[i]) for i in range(self.ncomp)]) - Ts = np.array([self.times[inds[i]].sum() for i in range(self.ncomp)]) - - # sample posteriors - weights = rng.dirichlet(self.whypers+Ns) - rates = rng.gamma(self.rhypers[:, 0]+Ns, 1/(self.rhypers[:, 1]+Ts)) - - # save every g steps - if j % self.g == 0: - ind = j//self.g-1 - self.mcweights[ind], self.mcrates[ind] = weights, rates - self.indicator[ind] = s - - self.save() - - def cluster(self, method="GaussianMixture", **kwargs): - r""" - Cluster the processed results using the methods available in - :class:`sklearn.mixture` - - :param method: Mixture method to use - :type method: str - """ - from sklearn import mixture - from scipy import stats - - clu = getattr(mixture, method) - burnin_ind = self.burnin // self.g - data_len = len(self.times) - wcutoff = 10 / data_len - - weights, rates = self.mcweights[burnin_ind:], self.mcrates[burnin_ind:] - lens = np.array([len(row[row > wcutoff]) for row in weights]) - lmin, lmode, lmax = lens.min(), stats.mode(lens).mode, lens.max() - train_param = lmode - - train_inds = np.where(lens == train_param)[0] - train_weights = (weights[train_inds][weights[train_inds] > wcutoff]. - reshape(-1, train_param)) - train_rates = (rates[train_inds][weights[train_inds] > wcutoff]. - reshape(-1, train_param)) - - inds = np.where(weights > wcutoff) - aweights, arates = weights[inds], rates[inds] - data = np.stack((aweights, arates), axis=1) - - tweights, trates = train_weights.flatten(), train_rates.flatten() - train_data = np.stack((tweights, trates), axis=1) - - r = clu(**kwargs) - r.fit(np.log(train_data)) - all_labels = r.predict(np.log(data)) - - if self.indicator is not None: - indicator = self.indicator[burnin_ind:] - else: - indicator = self._sample_indicator() - - pindicator = np.zeros((self.times.shape[0], lmode)) - for j in np.unique(inds[0]): - mapinds = all_labels[inds[0] == j] - for i, indx in enumerate(inds[1][inds[0] == j]): - tmpind = np.where(indicator[j] == indx)[0] - pindicator[tmpind, mapinds[i]] += 1 - - pindicator = (pindicator.T / pindicator.sum(axis=1)).T - setattr(self.processed_results, 'indicator', pindicator) - setattr(self.processed_results, 'labels', all_labels) - - def process_gibbs(self): - r""" - Process the data collected from the Gibbs sampler - """ - from basicrta.util import mixture_and_plot - from scipy import stats - - data_len = len(self.times) - wcutoff = 10/data_len - burnin_ind = self.burnin//self.g - inds = np.where(self.mcweights[burnin_ind:] > wcutoff) - indices = (np.arange(self.burnin, self.niter + 1, self.g)[inds[0]] // - self.g) - weights, rates = self.mcweights[burnin_ind:], self.mcrates[burnin_ind:] - fweights, frates = weights[inds], rates[inds] - - lens = [len(row[row > wcutoff]) for row in self.mcweights[burnin_ind:]] - lmin, lmode, lmax = np.min(lens), stats.mode(lens).mode, np.max(lens) - - self.cluster(n_init=117, n_components=lmode) - labels, presorts = mixture_and_plot(self) - setattr(self.processed_results, 'labels', labels) - setattr(self.processed_results, 'indicator', - self.processed_results.indicator[:, presorts]) - - attrs = ["weights", "rates", "ncomp", "residue", "iteration", "niter"] - values = [fweights, frates, lmode, self.residue, indices, self.niter] - for attr, val in zip(attrs, values): - setattr(self.processed_results, attr, val) - - self._estimate_params() - self.save() - - def result_plot(self, remove_noise=False, **kwargs): - """ - Generate the combined result plot with option to change kwargs without - re-clustering. - - :param remove_noise: Whether to remove noise - :type remove_noise: bool - """ - from basicrta.util import mixture_and_plot - mixture_and_plot(self, remove_noise=remove_noise, **kwargs) - - def _sample_indicator(self): - indicator = np.zeros(((self.niter+1)//self.g, self.times.shape[0]), - dtype=np.uint8) - burnin_ind = self.burnin//self.g - for i, (w, r) in enumerate(zip(self.mcweights, self.mcrates)): - # compute probabilities - probs = w*r*np.exp(np.outer(-r, self.times)).T - z = (probs.T/probs.sum(axis=1)).T - - # sample indicator - s = np.argmax(rng.multinomial(1, z), axis=1) - indicator[i] = s - setattr(self, 'indicator', indicator) - return indicator[burnin_ind:] - - def save(self): - """ - Save current state of the Gibbs - """ - savedir = f'basicrta-{self.cutoff}/{self.residue}/' - filename = f'gibbs_{self.niter}.pkl' - if os.path.exists(savedir): - if os.path.exists(savedir+filename): - os.rename(savedir+filename, savedir+filename+'.bak') - with open(f'basicrta-{self.cutoff}/{self.residue}/gibbs_' - f'{self.niter}.pkl', 'w+b') as f: - pickle.dump(self, f) - else: - raise OSError(f'No such directory: {savedir}') - - @staticmethod - def load(file): - """ - Load Gibbs - - :param file: Filename of Gibbs to load - :type file: str - """ - from basicrta.util import get_s - keys = ['times', 'residue', 'loc', 'ncomp', 'niter', 'g', 'burnin', - 'processed_results', 'ts', 'mcweights', 'mcrates', 't', - 's', 'cutoff', 'indicator', 'whypers', 'rhypers'] - with open(file, 'r+b') as f: - r = pickle.load(f) - - g = Gibbs() - for attr in keys: - try: - setattr(g, attr, r[f'{attr}']) - except AttributeError: - setattr(g, attr, None) - - if isinstance(g.residue, np.ndarray): - g.residue = g.residue[0] - - if g.t is None: - g.t, g.s = get_s(g.times, g.ts) - - # if len(g.processed_results) == 0: - # g._process_gibbs() - return g - - def plot_tau_hist(self, scale=1, save=False): - r""" - Plot histogram of tau values - - :param scale: Increase plot size by this factor - :type scale: float - :param save: Save plot to file - :type save: bool - """ - from matplotlib.ticker import MaxNLocator - cmap = mpl.colormaps['tab10'] - rp = self.processed_results - - imaxs = self.processed_results.indicator.max(axis=0) - noise_inds = np.where(imaxs < self._noise_cutoff)[0] - inds = np.delete(np.unique(rp.labels), noise_inds) - i = rp.parameters[inds, 1].argmin() - - fig, ax = plt.subplots(1, figsize=(4*scale, 3*scale)) - ax.hist(1/rp.rates[rp.labels == i], label=f'{i}', alpha=0.5, - color=cmap(i)) - ax.set_xlabel(r'$\tau$ [ns]') - ax.set_ylabel('count') - - tmin = (1/rp.rates[rp.labels == i]).min() - tmax = (1/rp.rates[rp.labels == i]).max() - ax.set_xlim(tmin, tmax) - ax.xaxis.set_major_locator(MaxNLocator(4)) - ax.xaxis.set_minor_locator(MaxNLocator(12)) - ax.yaxis.set_major_locator(MaxNLocator(3)) - ax.yaxis.set_minor_locator(MaxNLocator(12)) - # ax.ticklabel_format(style='sci', axis='x', scilimits=(0, 0), - # useMathText=True) - plt.tight_layout() - if save: - plt.savefig(f'basicrta-{self.cutoff}/{self.residue}/' - f'tau_hist.png', - bbox_inches='tight') - plt.savefig(f'basicrta-{self.cutoff}/{self.residue}/' - f'tau_hist.pdf', - bbox_inches='tight') - plt.show() - - def plot_hist(self, scale=1, save=False, component=None, bins=15): - from matplotlib.ticker import MaxNLocator - from scipy import stats - from matplotlib.gridspec import GridSpec - - cmap = mpl.colormaps['tab10'] - rp = self.processed_results - - if component is None: - comps = np.arange(rp.ncomp) - elif isinstance(component, int): - comps = [component] - else: - comps = component - - if self.whypers is None: - self._prepare() - - i = comps[0] - fig = plt.figure(figsize=(9*scale, 3*scale)) - gs = GridSpec(4, 12, figure=fig, hspace=0.2, wspace=0.2, bottom=0.28, - left=0.05, right=0.98, top=0.93) - ax0 = fig.add_subplot(gs[:, :4]) - ax1 = np.array([[fig.add_subplot(gs[:-1, 4:7]), - fig.add_subplot(gs[:-1, 7])], - [fig.add_subplot(gs[-1, 4:7]), - fig.add_subplot(gs[-1, 7])]]) - ax2 = fig.add_subplot(gs[0, 8:]), fig.add_subplot(gs[1:, 8:]) - - # plot posteriors - [ax0.hist(rp.weights[rp.labels == i], label=f'posterior', alpha=0.5, - color=cmap(i), density=True, bins=bins) for i in comps] - # [ax1[0].hist(rp.rates[rp.labels == i], label=f'{i}', alpha=0.5, - # color=cmap(i), density=True, bins=bins) for i in comps] - [ax1[0, 0].hist(rp.rates[rp.labels == i], label=f'{i}', alpha=0.5, - color=cmap(i), density=True, bins=bins) for i in comps] - [ax1[1, 0].hist(rp.rates[rp.labels == i], label=f'{i}', alpha=0.5, - color=cmap(i), density=True, bins=bins) for i in comps] - # [ax2[0].hist(1/rp.rates[rp.labels == i], label=f'{i}', alpha=0.5, - # color=cmap(i), density=True, bins=bins) for i in comps] - [ax2[1].hist(1/rp.rates[rp.labels == i], label=f'{i}', alpha=0.5, - color=cmap(i), density=True, bins=bins) for i in comps] - - # create bounds and plot priors - wbounds = np.array([[rp.weights[rp.labels == i].min(), - rp.weights[rp.labels == i].max()] for i in comps]) - rbounds = np.array([[rp.rates[rp.labels == i].min(), - rp.rates[rp.labels == i].max()] for i in comps]) - tbounds = np.array([[(1/rp.rates[rp.labels == i]).min(), - (1/rp.rates[rp.labels == i]).max()] for i in comps]) - rx = np.linspace(0, 10, 10000) - tx = np.linspace(0, 500, 10000) - # rx = np.array([np.linspace(rb[0], rb[1], 10000) for rb in rbounds]) - # tx = np.array([np.linspace(tb[0], tb[1], 10000) for tb in tbounds]) - - # [ax[0].hist(rng.dirichlet(self.whypers, size=len(rp.labels))[:, 0] - # bins=np.linspace(wbounds[i, 0], wbounds[i, 1], 10), - # density=True) - # for i in range(len(comps))] - ax0.hist(rng.dirichlet(self.whypers, size=1000000).flatten(), - density=True, bins=20000, label='prior', alpha=0.5) - rys = (stats.gamma(self.rhypers[0, 0], scale=1/self.rhypers[0, 1]). - pdf(rx)) - tys = (stats.invgamma(self.rhypers[0, 0], scale=self.rhypers[0, 1]). - pdf(tx)) - - - # ax1[0].plot(rx, rys, label=f'{i}', alpha=0.5) - # ax1[0].fill_between(rx, rys, alpha=0.5) - # ax1[0, 0].plot(rx, rys, label=f'{i}', alpha=0.5) - # ax1[0, 0].fill_between(rx, rys, alpha=0.5) - ax1[1, 0].plot(rx, rys, label=f'{i}', alpha=0.5) - ax1[1, 0].fill_between(rx, rys, alpha=0.5) - ax1[1, 1].plot(rx, rys, label=f'{i}', alpha=0.5) - ax1[1, 1].fill_between(rx, rys, alpha=0.5) - - ax2[0].plot(tx, tys, label=f'{i}', alpha=0.5) - ax2[0].fill_between(tx, tys, alpha=0.5) - ax2[1].plot(tx, tys, label=f'{i}', alpha=0.5) - ax2[1].fill_between(tx, tys, alpha=0.5) - - ax1[0, 0].spines['bottom'].set_visible(False) - ax1[0, 1].spines['bottom'].set_visible(False) - ax1[1, 0].spines['top'].set_visible(False) - ax1[1, 1].spines['top'].set_visible(False) - ax1[0, 0].spines['right'].set_visible(False) - ax1[1, 0].spines['right'].set_visible(False) - ax1[0, 1].spines['left'].set_visible(False) - ax1[1, 1].spines['left'].set_visible(False) - ax1[0, 0].tick_params(axis='x', labelbottom=False) - ax1[0, 1].tick_params(axis='x', labelbottom=False) - ax1[0, 1].tick_params(axis='y', labelleft=False) - ax1[1, 1].tick_params(axis='y', labelleft=False) - - ax2[0].spines['bottom'].set_visible(False) - ax2[1].spines['top'].set_visible(False) - ax2[0].tick_params(axis='x', labelbottom=False) - ax2[0].set_xticks([]) - - d = 0.15 - kwargs = dict(marker=[(-1, -d), (1, d)], markersize=12, - linestyle="none", color='k', mec='k', mew=1, - clip_on=False) - kwargs2 = dict(marker=[(1+d, 0), (0, 1+d)], markersize=12, - linestyle="none", color='k', mec='k', mew=1, - clip_on=False) - ax1[0, 0].plot([0], transform=ax1[0, 0].transAxes, **kwargs) - ax1[1, 0].plot([1], transform=ax1[1, 0].transAxes, **kwargs) - ax1[0, 1].plot([1], [0], transform=ax1[0, 1].transAxes, **kwargs) - ax1[1, 1].plot([1], [1], transform=ax1[1, 1].transAxes, **kwargs) - ax1[0, 0].plot([1], [1], transform=ax1[0, 0].transAxes, **kwargs2) - # ax1[1, 0].plot([1], transform=ax1[1, 0].transAxes, **kwargs) - # ax1[0, 1].plot([0], [1], transform=ax1[0, 1].transAxes, **kwargs2) - # ax1[1, 1].plot([1], [0], transform=ax1[1, 1].transAxes, **kwargs2) - - # ax1[0, 0].plot([1], transform=ax1[0, 0].transAxes, **kwargs2) - # ax1[1, 0].plot([0, 1], [1, 1], transform=ax1[1, 0].transAxes, **kwargs2) - # ax1[0, 1].plot([0, 1], [0, 0], transform=ax1[0, 1].transAxes, **kwargs2) - # ax1[1, 1].plot([0, 1], [1, 1], transform=ax1[1, 1].transAxes, **kwargs2) - # ax1[0 1].plot([0, 1], [1, 1], transform=ax1[0, 1].transAxes, **kwargs) - # ax1[1, 1].plot([0, 1], [1, 1], transform=ax1[1, 1].transAxes, **kwargs) - - ax2[0].plot([0, 1], [0, 0], transform=ax2[0].transAxes, **kwargs) - ax2[1].plot([0, 1], [1, 1], transform=ax2[1].transAxes, **kwargs) - - - ax0.set_xlabel(r'$\pi_k$') - ax1[1, 0].set_xlabel(r'$\lambda_k$ [ns$^{-1}$]') - # set_shared_xlabel(ax1[1, :], label=r'$\lambda_k$ [ns$^{-1}$]') - ax2[1].set_xlabel(r'$\tau$ [ns]') - ax0.set_ylabel('p') - if component is None: - ax1[0].set_xlim(1e-4, 1) - ax1[1].set_xlim(1e-3, 10) - ax1[0].legend(title='component') - ax1[1].legend(title='component') - ax1[0].set_xscale('log') - ax1[1].set_xscale('log') - else: - rmin = rbounds.min() - rmax = rbounds.max() - wmin = wbounds.min() - wmax = wbounds.max() - ax0.set_xlim(1e-5, 1e-3) - - ax1[0, 0].set_xlim(1e-4, 1e-2) - ax1[1, 0].set_xlim(1e-4, 1e-2) - ax1[0, 1].set_xlim(1e-2, 10) - ax1[1, 1].set_xlim(1e-2, 10) - ax1[0, 0].set_ylim(5, 1200) - ax1[0, 1].set_ylim(5, 1200) - ax1[1, 0].set_ylim(0, 5) - ax1[1, 1].set_ylim(0, 5) - - ax2[0].set_xlim(-5, 500) - ax2[1].set_xlim(-5, 500) - ax2[0].set_ylim(0.02, 0.2) - ax2[1].set_ylim(0, 0.015) - - ax0.xaxis.set_major_locator(MaxNLocator(3, min_n_ticks=3, - prune='both')) - ax0.xaxis.set_minor_locator(MaxNLocator(12, min_n_ticks=9, - prune='both')) - ax0.yaxis.set_major_locator(MaxNLocator(3, min_n_ticks=3, - prune='both')) - ax0.yaxis.set_minor_locator(MaxNLocator(12, min_n_ticks=9, - prune='both')) - ax0.ticklabel_format(style='sci', axis='both', scilimits=(0, 0), - useMathText=True) - - ax1[1, 0].xaxis.set_major_locator(MaxNLocator(3, min_n_ticks=3, - prune='both')) - ax1[1, 0].xaxis.set_minor_locator(MaxNLocator(12, min_n_ticks=9, - prune='both')) - ax1[1, 1].xaxis.set_major_locator(MaxNLocator(3, min_n_ticks=3, - prune='both')) - ax1[1, 1].xaxis.set_minor_locator(MaxNLocator(12, min_n_ticks=9, - prune='both')) - ax1[0, 0].yaxis.set_major_locator(MaxNLocator(3, min_n_ticks=3, - prune='both')) - ax1[0, 0].yaxis.set_minor_locator(MaxNLocator(12, min_n_ticks=9, - prune='both')) - ax1[1, 0].yaxis.set_major_locator(MaxNLocator(3, min_n_ticks=3, - prune='both')) - ax1[1, 0].yaxis.set_minor_locator(MaxNLocator(12, min_n_ticks=9, - prune='both')) - # ax1[0, 1].yaxis.set_major_locator(MaxNLocator(3, min_n_ticks=3, - # prune='both')) - # ax1[0, 1].yaxis.set_minor_locator(MaxNLocator(12, min_n_ticks=9, - # prune='both')) - # ax1[1, 1].yaxis.set_major_locator(MaxNLocator(3, min_n_ticks=3, - # prune='both')) - # ax1[1, 1].yaxis.set_minor_locator(MaxNLocator(12, min_n_ticks=9, - # prune='both')) - # ax1[0, 0].ticklabel_format(style='sci', axis='x', scilimits=(0, 0), - # useMathText=True) - ax1[0, 0].ticklabel_format(style='sci', axis='y', scilimits=(1, 1), - useMathText=True) - ax1[1, 0].ticklabel_format(style='sci', axis='y', scilimits=(1, 1), - useMathText=True) - ax1[1, 0].ticklabel_format(style='sci', axis='x', scilimits=(-3, -3), - useMathText=True) - ax1[0, 1].ticklabel_format(style='sci', axis='x', scilimits=(0, 0), - useMathText=True) - ax1[0, 1].ticklabel_format(style='sci', axis='y', scilimits=(1, 1), - useMathText=True) - # ax1[1, 1].ticklabel_format(style='sci', axis='y', scilimits=(1, 1), - # useMathText=True) - # ax1[1, 1].ticklabel_format(style='sci', axis='x', scilimits=(0, -3), - # useMathText=True) - - ax2[0].yaxis.set_major_locator(MaxNLocator(3, min_n_ticks=2, - prune='both')) - ax2[0].yaxis.set_minor_locator(MaxNLocator(12, min_n_ticks=9, - prune='both')) - ax2[1].yaxis.set_major_locator(MaxNLocator(3, min_n_ticks=3, - prune='both')) - ax2[1].yaxis.set_minor_locator(MaxNLocator(15, min_n_ticks=9, - prune='both')) - ax2[1].xaxis.set_major_locator(MaxNLocator(3, min_n_ticks=3, - prune='both')) - ax2[1].xaxis.set_minor_locator(MaxNLocator(12, min_n_ticks=9, - prune='both')) - ax2[0].ticklabel_format(style='sci', axis='x', scilimits=(0, 0), - useMathText=True) - ax2[0].ticklabel_format(style='sci', axis='y', scilimits=(-1, -1), - useMathText=True) - ax2[1].ticklabel_format(style='sci', axis='y', scilimits=(-1, -1), - useMathText=True) - ax2[1].ticklabel_format(style='sci', axis='x', scilimits=(2, 2), - useMathText=True) - - ax1[0, 0].set_xticks([]) - ax1[0, 1].set_xticks([]) - ax1[0, 1].set_yticks([]) - ax1[1, 1].set_yticks([]) - handles, labels = ax0.get_legend_handles_labels() - l = fig.legend(handles, labels, loc='lower center', ncols=2) - # for vpack in l._legend_handle_box.get_children(): - # for hpack in vpack.get_children(): - # hpack.get_children()[0].set_width(0) - # fig.tight_layout(rect=(0, 0.1, 1, 1)) - # ax[0].xaxis.set_major_locator(MultipleLocator(wmin+(wmax-wmin)/3)) - # ax[1].xaxis.set_major_locator(MultipleLocator(rmin+(rmax-rmin)/3)) - if save: - if component is not None: - plt.savefig(f'basicrta-{self.cutoff}/{self.residue}/' - f'hist_results_{component}.png', - bbox_inches='tight') - plt.savefig(f'basicrta-{self.cutoff}/{self.residue}/' - f'hist_results_{component}.pdf', - bbox_inches='tight') - else: - plt.savefig(f'basicrta-{self.cutoff}/{self.residue}/' - 'hist_results.png', bbox_inches='tight') - plt.savefig(f'basicrta-{self.cutoff}/{self.residue}/' - 'hist_results.pdf', bbox_inches='tight') - plt.show() - - def plot_gibbs(self, scale=1.5, sparse=1, save=False): - cmap = mpl.colormaps['tab10'] - rp = self.processed_results - - fig, ax = plt.subplots(2, figsize=(4*scale, 3*scale), sharex=True) - [ax[0].plot(rp.iteration[rp.labels == i][::sparse], - rp.weights[rp.labels == i][::sparse], '.', - label=f'{i}', color=cmap(i)) - for i in np.unique(rp.labels)] - ax[0].set_yscale('log') - ax[0].set_ylabel(r'$\pi_k$') - [ax[1].plot(rp.iteration[rp.labels == i][::sparse], - rp.rates[rp.labels == i][::sparse], '.', label=f'{i}', - color=cmap(i)) for i in np.unique(rp.labels)] - ax[1].set_yscale('log') - ax[1].set_ylabel(r'\lambda_k (ns$^{-1}$)') - ax[1].set_xlabel('sample') - ax[0].legend(title='component') - ax[1].legend(title='component') - plt.tight_layout() - if save: - plt.savefig(f'basicrta-{self.cutoff}/{self.residue}/' - 'plot_results.png', bbox_inches='tight') - plt.savefig(f'basicrta-{self.cutoff}/{self.residue}/' - 'plot_results.pdf', bbox_inches='tight') - plt.show() - - def _estimate_params(self): - rp = self.processed_results - - ws = [rp.weights[rp.labels == i] for i in range(rp.ncomp)] - rs = [rp.rates[rp.labels == i] for i in range(rp.ncomp)] - wbins = [np.exp(np.linspace(np.log(rp.weights[rp.labels == i].min()), - np.log(rp.weights[rp.labels == i].max()), - 20)) - for i in range(rp.ncomp)] - rbins = [np.exp(np.linspace(np.log(rp.rates[rp.labels == i].min()), - np.log(rp.rates[rp.labels == i].max()), 20)) - for i in range(rp.ncomp)] - wbounds = np.array([confidence_interval(d) for d in ws]) - rbounds = np.array([confidence_interval(d) for d in rs]) - - whists = [np.histogram(w, bins=bins) for w, bins in zip(ws, wbins)] - rhists = [np.histogram(r, bins=bins) for r, bins in zip(rs, rbins)] - - params = np.array([[wh[1][np.argmax(wh[0])], rh[1][np.argmax(rh[0])]] - for wh, rh in zip(whists, rhists)]) - - setattr(rp, 'parameters', params) - setattr(rp, 'intervals', np.array([wbounds, rbounds])) - - def estimate_tau(self): - """ - Estimate the posterior maximum for the tau distribution - - :return: An array containing the posterior maximum and bounds of the - 95% confidence interval in the format [LB, max, UB]. - """ - rp = self.processed_results - - imaxs = self.processed_results.indicator.max(axis=0) - noise_inds = np.where(imaxs < self._noise_cutoff)[0] - inds = np.delete(np.unique(rp.labels), noise_inds) - index = rp.parameters[inds, 1].argmin() - - taus = 1 / rp.rates[rp.labels == index] - ci = confidence_interval(taus) - citaus = taus[(taus > ci[0]) & (taus < ci[1])] - #bins = np.exp(np.linspace(np.log(citaus.min()), np.log(citaus.max()), - # 20)) - bins = 15 - h = np.histogram(taus, bins=bins) - indmax = h[0].argmax() - val = 0.5 * (h[1][:-1][indmax] + h[1][1:][indmax]) - return [ci[0], val, ci[1]] - - def plot_surv(self, scale=1, remove_noise=False, save=False, xlim=None, - ylim=(1e-6, 5), xmajor=None, xminor=None): - """ - Plot the survival function with the exponential mixture components where - parameters are determined from the clustering results. - - :param scale: Modify the size of the figure by this factor - :type scale: float - :param remove_noise: Whether to remove noise clusters - :type remove_noise: bool - :param save: Whether to save the figure - :type save: bool - :param xlim: X-axis limits - :type xlim: tuple - :param ylim: Y-axis limits - :type ylim: tuple - :param xmajor: X-axis major tick - :type xmajor: int - :param xminor: X-axis minor tick - :type xminor: int - """ - from matplotlib.ticker import MultipleLocator, MaxNLocator - - if xmajor is None: - maj_loc = MaxNLocator(nbins=3) - else: - maj_loc = MultipleLocator(xmajor) - - if xminor is None: - min_loc = MaxNLocator(nbins=12) - else: - min_loc = MultipleLocator(xminor) - - cmap = mpl.colormaps['tab10'] - rp = self.processed_results - imaxs = self.processed_results.indicator.max(axis=0) - noise_inds = np.where(imaxs < self._noise_cutoff)[0] - uniq_labels = np.unique(rp.labels) - if remove_noise: - uniq_labels = np.delete(uniq_labels, noise_inds) - - ws, rs = rp.parameters[:, 0], rp.parameters[:, 1] - fig, ax = plt.subplots(1, figsize=(4*scale, 3*scale)) - ax.plot(self.t, self.s, '.') - [ax.plot(self.t, ws[i]*np.exp(-rs[i]*self.t), label=f'{i}', - color=cmap(i)) for i in np.unique(uniq_labels)] - ax.set_ylim(ylim) - ax.set_xlim(xlim) - ax.set_yscale('log') - ax.set_ylabel('survival function $s$') - ax.set_xlabel(r'$t$ [ns]') - ax.set_yticks([1, 1e-2, 1e-4]) - ax.xaxis.set_major_locator(maj_loc) - ax.xaxis.set_minor_locator(min_loc) - ax.legend(title='cluster') - plt.tight_layout() - if save: - plt.savefig(f'basicrta-{self.cutoff}/{self.residue}/' - 's_vs_t.png', bbox_inches='tight') - plt.savefig(f'basicrta-{self.cutoff}/{self.residue}/' - 's_vs_t.pdf', bbox_inches='tight') - plt.show()
- - - -if __name__ == '__main__': - import argparse - parser = argparse.ArgumentParser() - parser.add_argument('--contacts') - parser.add_argument('--resid', type=int, default=None) - parser.add_argument('--nproc', type=int, default=1) - parser.add_argument('--niter', type=int, default=50000) - parser.add_argument('--ncomp', type=int, default=15) - args = parser.parse_args() - - contact_path = os.path.abspath(args.contacts) - cutoff = args.contacts.split('/')[-1].strip('.pkl').split('_')[-1] - - ParallelGibbs(contact_path, nproc=args.nproc, ncomp=args.ncomp, - niter=args.niter).run(run_resids=args.resid) -
- -
-
-
- -
- -
-

© Copyright 2024, Ricky Sexton. Project structure based on the MDAnalysis Cookiecutter version 0.1.

-
- - - - - -
-
-
-
-
- - -
- - - - - - -
-
-
Other Versions
-
- -
-
- - - \ No newline at end of file diff --git a/docs/_build/html/_modules/importlib/metadata.html b/docs/_build/html/_modules/importlib/metadata.html deleted file mode 100644 index 169ecd3..0000000 --- a/docs/_build/html/_modules/importlib/metadata.html +++ /dev/null @@ -1,1125 +0,0 @@ - - - - - - - - - - - - - - - - - - - - importlib.metadata — basicrta documentation - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -

Source code for importlib.metadata

-import os
-import re
-import abc
-import csv
-import sys
-import email
-import pathlib
-import zipfile
-import operator
-import textwrap
-import warnings
-import functools
-import itertools
-import posixpath
-import contextlib
-import collections
-import inspect
-
-from . import _adapters, _meta
-from ._collections import FreezableDefaultDict, Pair
-from ._functools import method_cache, pass_none
-from ._itertools import always_iterable, unique_everseen
-from ._meta import PackageMetadata, SimplePath
-
-from contextlib import suppress
-from importlib import import_module
-from importlib.abc import MetaPathFinder
-from itertools import starmap
-from typing import List, Mapping, Optional, cast
-
-
-__all__ = [
-    'Distribution',
-    'DistributionFinder',
-    'PackageMetadata',
-    'PackageNotFoundError',
-    'distribution',
-    'distributions',
-    'entry_points',
-    'files',
-    'metadata',
-    'packages_distributions',
-    'requires',
-    'version',
-]
-
-
-class PackageNotFoundError(ModuleNotFoundError):
-    """The package was not found."""
-
-    def __str__(self):
-        return f"No package metadata was found for {self.name}"
-
-    @property
-    def name(self):
-        (name,) = self.args
-        return name
-
-
-class Sectioned:
-    """
-    A simple entry point config parser for performance
-
-    >>> for item in Sectioned.read(Sectioned._sample):
-    ...     print(item)
-    Pair(name='sec1', value='# comments ignored')
-    Pair(name='sec1', value='a = 1')
-    Pair(name='sec1', value='b = 2')
-    Pair(name='sec2', value='a = 2')
-
-    >>> res = Sectioned.section_pairs(Sectioned._sample)
-    >>> item = next(res)
-    >>> item.name
-    'sec1'
-    >>> item.value
-    Pair(name='a', value='1')
-    >>> item = next(res)
-    >>> item.value
-    Pair(name='b', value='2')
-    >>> item = next(res)
-    >>> item.name
-    'sec2'
-    >>> item.value
-    Pair(name='a', value='2')
-    >>> list(res)
-    []
-    """
-
-    _sample = textwrap.dedent(
-        """
-        [sec1]
-        # comments ignored
-        a = 1
-        b = 2
-
-        [sec2]
-        a = 2
-        """
-    ).lstrip()
-
-    @classmethod
-    def section_pairs(cls, text):
-        return (
-            section._replace(value=Pair.parse(section.value))
-            for section in cls.read(text, filter_=cls.valid)
-            if section.name is not None
-        )
-
-    @staticmethod
-    def read(text, filter_=None):
-        lines = filter(filter_, map(str.strip, text.splitlines()))
-        name = None
-        for value in lines:
-            section_match = value.startswith('[') and value.endswith(']')
-            if section_match:
-                name = value.strip('[]')
-                continue
-            yield Pair(name, value)
-
-    @staticmethod
-    def valid(line):
-        return line and not line.startswith('#')
-
-
-class DeprecatedTuple:
-    """
-    Provide subscript item access for backward compatibility.
-
-    >>> recwarn = getfixture('recwarn')
-    >>> ep = EntryPoint(name='name', value='value', group='group')
-    >>> ep[:]
-    ('name', 'value', 'group')
-    >>> ep[0]
-    'name'
-    >>> len(recwarn)
-    1
-    """
-
-    # Do not remove prior to 2023-05-01 or Python 3.13
-    _warn = functools.partial(
-        warnings.warn,
-        "EntryPoint tuple interface is deprecated. Access members by name.",
-        DeprecationWarning,
-        stacklevel=2,
-    )
-
-    def __getitem__(self, item):
-        self._warn()
-        return self._key()[item]
-
-
-class EntryPoint(DeprecatedTuple):
-    """An entry point as defined by Python packaging conventions.
-
-    See `the packaging docs on entry points
-    <https://packaging.python.org/specifications/entry-points/>`_
-    for more information.
-
-    >>> ep = EntryPoint(
-    ...     name=None, group=None, value='package.module:attr [extra1, extra2]')
-    >>> ep.module
-    'package.module'
-    >>> ep.attr
-    'attr'
-    >>> ep.extras
-    ['extra1', 'extra2']
-    """
-
-    pattern = re.compile(
-        r'(?P<module>[\w.]+)\s*'
-        r'(:\s*(?P<attr>[\w.]+)\s*)?'
-        r'((?P<extras>\[.*\])\s*)?$'
-    )
-    """
-    A regular expression describing the syntax for an entry point,
-    which might look like:
-
-        - module
-        - package.module
-        - package.module:attribute
-        - package.module:object.attribute
-        - package.module:attr [extra1, extra2]
-
-    Other combinations are possible as well.
-
-    The expression is lenient about whitespace around the ':',
-    following the attr, and following any extras.
-    """
-
-    name: str
-    value: str
-    group: str
-
-    dist: Optional['Distribution'] = None
-
-    def __init__(self, name, value, group):
-        vars(self).update(name=name, value=value, group=group)
-
-    def load(self):
-        """Load the entry point from its definition. If only a module
-        is indicated by the value, return that module. Otherwise,
-        return the named object.
-        """
-        match = self.pattern.match(self.value)
-        module = import_module(match.group('module'))
-        attrs = filter(None, (match.group('attr') or '').split('.'))
-        return functools.reduce(getattr, attrs, module)
-
-    @property
-    def module(self):
-        match = self.pattern.match(self.value)
-        return match.group('module')
-
-    @property
-    def attr(self):
-        match = self.pattern.match(self.value)
-        return match.group('attr')
-
-    @property
-    def extras(self):
-        match = self.pattern.match(self.value)
-        return re.findall(r'\w+', match.group('extras') or '')
-
-    def _for(self, dist):
-        vars(self).update(dist=dist)
-        return self
-
-    def matches(self, **params):
-        """
-        EntryPoint matches the given parameters.
-
-        >>> ep = EntryPoint(group='foo', name='bar', value='bing:bong [extra1, extra2]')
-        >>> ep.matches(group='foo')
-        True
-        >>> ep.matches(name='bar', value='bing:bong [extra1, extra2]')
-        True
-        >>> ep.matches(group='foo', name='other')
-        False
-        >>> ep.matches()
-        True
-        >>> ep.matches(extras=['extra1', 'extra2'])
-        True
-        >>> ep.matches(module='bing')
-        True
-        >>> ep.matches(attr='bong')
-        True
-        """
-        attrs = (getattr(self, param) for param in params)
-        return all(map(operator.eq, params.values(), attrs))
-
-    def _key(self):
-        return self.name, self.value, self.group
-
-    def __lt__(self, other):
-        return self._key() < other._key()
-
-    def __eq__(self, other):
-        return self._key() == other._key()
-
-    def __setattr__(self, name, value):
-        raise AttributeError("EntryPoint objects are immutable.")
-
-    def __repr__(self):
-        return (
-            f'EntryPoint(name={self.name!r}, value={self.value!r}, '
-            f'group={self.group!r})'
-        )
-
-    def __hash__(self):
-        return hash(self._key())
-
-
-class EntryPoints(tuple):
-    """
-    An immutable collection of selectable EntryPoint objects.
-    """
-
-    __slots__ = ()
-
-    def __getitem__(self, name):  # -> EntryPoint:
-        """
-        Get the EntryPoint in self matching name.
-        """
-        try:
-            return next(iter(self.select(name=name)))
-        except StopIteration:
-            raise KeyError(name)
-
-    def select(self, **params):
-        """
-        Select entry points from self that match the
-        given parameters (typically group and/or name).
-        """
-        return EntryPoints(ep for ep in self if ep.matches(**params))
-
-    @property
-    def names(self):
-        """
-        Return the set of all names of all entry points.
-        """
-        return {ep.name for ep in self}
-
-    @property
-    def groups(self):
-        """
-        Return the set of all groups of all entry points.
-        """
-        return {ep.group for ep in self}
-
-    @classmethod
-    def _from_text_for(cls, text, dist):
-        return cls(ep._for(dist) for ep in cls._from_text(text))
-
-    @staticmethod
-    def _from_text(text):
-        return (
-            EntryPoint(name=item.value.name, value=item.value.value, group=item.name)
-            for item in Sectioned.section_pairs(text or '')
-        )
-
-
-class PackagePath(pathlib.PurePosixPath):
-    """A reference to a path in a package"""
-
-    def read_text(self, encoding='utf-8'):
-        with self.locate().open(encoding=encoding) as stream:
-            return stream.read()
-
-    def read_binary(self):
-        with self.locate().open('rb') as stream:
-            return stream.read()
-
-    def locate(self):
-        """Return a path-like object for this path"""
-        return self.dist.locate_file(self)
-
-
-class FileHash:
-    def __init__(self, spec):
-        self.mode, _, self.value = spec.partition('=')
-
-    def __repr__(self):
-        return f'<FileHash mode: {self.mode} value: {self.value}>'
-
-
-class DeprecatedNonAbstract:
-    def __new__(cls, *args, **kwargs):
-        all_names = {
-            name for subclass in inspect.getmro(cls) for name in vars(subclass)
-        }
-        abstract = {
-            name
-            for name in all_names
-            if getattr(getattr(cls, name), '__isabstractmethod__', False)
-        }
-        if abstract:
-            warnings.warn(
-                f"Unimplemented abstract methods {abstract}",
-                DeprecationWarning,
-                stacklevel=2,
-            )
-        return super().__new__(cls)
-
-
-class Distribution(DeprecatedNonAbstract):
-    """A Python distribution package."""
-
-    @abc.abstractmethod
-    def read_text(self, filename) -> Optional[str]:
-        """Attempt to load metadata file given by the name.
-
-        :param filename: The name of the file in the distribution info.
-        :return: The text if found, otherwise None.
-        """
-
-    @abc.abstractmethod
-    def locate_file(self, path):
-        """
-        Given a path to a file in this distribution, return a path
-        to it.
-        """
-
-    @classmethod
-    def from_name(cls, name: str):
-        """Return the Distribution for the given package name.
-
-        :param name: The name of the distribution package to search for.
-        :return: The Distribution instance (or subclass thereof) for the named
-            package, if found.
-        :raises PackageNotFoundError: When the named package's distribution
-            metadata cannot be found.
-        :raises ValueError: When an invalid value is supplied for name.
-        """
-        if not name:
-            raise ValueError("A distribution name is required.")
-        try:
-            return next(cls.discover(name=name))
-        except StopIteration:
-            raise PackageNotFoundError(name)
-
-    @classmethod
-    def discover(cls, **kwargs):
-        """Return an iterable of Distribution objects for all packages.
-
-        Pass a ``context`` or pass keyword arguments for constructing
-        a context.
-
-        :context: A ``DistributionFinder.Context`` object.
-        :return: Iterable of Distribution objects for all packages.
-        """
-        context = kwargs.pop('context', None)
-        if context and kwargs:
-            raise ValueError("cannot accept context and kwargs")
-        context = context or DistributionFinder.Context(**kwargs)
-        return itertools.chain.from_iterable(
-            resolver(context) for resolver in cls._discover_resolvers()
-        )
-
-    @staticmethod
-    def at(path):
-        """Return a Distribution for the indicated metadata path
-
-        :param path: a string or path-like object
-        :return: a concrete Distribution instance for the path
-        """
-        return PathDistribution(pathlib.Path(path))
-
-    @staticmethod
-    def _discover_resolvers():
-        """Search the meta_path for resolvers."""
-        declared = (
-            getattr(finder, 'find_distributions', None) for finder in sys.meta_path
-        )
-        return filter(None, declared)
-
-    @property
-    def metadata(self) -> _meta.PackageMetadata:
-        """Return the parsed metadata for this Distribution.
-
-        The returned object will have keys that name the various bits of
-        metadata.  See PEP 566 for details.
-        """
-        opt_text = (
-            self.read_text('METADATA')
-            or self.read_text('PKG-INFO')
-            # This last clause is here to support old egg-info files.  Its
-            # effect is to just end up using the PathDistribution's self._path
-            # (which points to the egg-info file) attribute unchanged.
-            or self.read_text('')
-        )
-        text = cast(str, opt_text)
-        return _adapters.Message(email.message_from_string(text))
-
-    @property
-    def name(self):
-        """Return the 'Name' metadata for the distribution package."""
-        return self.metadata['Name']
-
-    @property
-    def _normalized_name(self):
-        """Return a normalized version of the name."""
-        return Prepared.normalize(self.name)
-
-    @property
-    def version(self):
-        """Return the 'Version' metadata for the distribution package."""
-        return self.metadata['Version']
-
-    @property
-    def entry_points(self):
-        return EntryPoints._from_text_for(self.read_text('entry_points.txt'), self)
-
-    @property
-    def files(self):
-        """Files in this distribution.
-
-        :return: List of PackagePath for this distribution or None
-
-        Result is `None` if the metadata file that enumerates files
-        (i.e. RECORD for dist-info, or installed-files.txt or
-        SOURCES.txt for egg-info) is missing.
-        Result may be empty if the metadata exists but is empty.
-        """
-
-        def make_file(name, hash=None, size_str=None):
-            result = PackagePath(name)
-            result.hash = FileHash(hash) if hash else None
-            result.size = int(size_str) if size_str else None
-            result.dist = self
-            return result
-
-        @pass_none
-        def make_files(lines):
-            return starmap(make_file, csv.reader(lines))
-
-        @pass_none
-        def skip_missing_files(package_paths):
-            return list(filter(lambda path: path.locate().exists(), package_paths))
-
-        return skip_missing_files(
-            make_files(
-                self._read_files_distinfo()
-                or self._read_files_egginfo_installed()
-                or self._read_files_egginfo_sources()
-            )
-        )
-
-    def _read_files_distinfo(self):
-        """
-        Read the lines of RECORD
-        """
-        text = self.read_text('RECORD')
-        return text and text.splitlines()
-
-    def _read_files_egginfo_installed(self):
-        """
-        Read installed-files.txt and return lines in a similar
-        CSV-parsable format as RECORD: each file must be placed
-        relative to the site-packages directory and must also be
-        quoted (since file names can contain literal commas).
-
-        This file is written when the package is installed by pip,
-        but it might not be written for other installation methods.
-        Assume the file is accurate if it exists.
-        """
-        text = self.read_text('installed-files.txt')
-        # Prepend the .egg-info/ subdir to the lines in this file.
-        # But this subdir is only available from PathDistribution's
-        # self._path.
-        subdir = getattr(self, '_path', None)
-        if not text or not subdir:
-            return
-
-        paths = (
-            (subdir / name)
-            .resolve()
-            .relative_to(self.locate_file('').resolve())
-            .as_posix()
-            for name in text.splitlines()
-        )
-        return map('"{}"'.format, paths)
-
-    def _read_files_egginfo_sources(self):
-        """
-        Read SOURCES.txt and return lines in a similar CSV-parsable
-        format as RECORD: each file name must be quoted (since it
-        might contain literal commas).
-
-        Note that SOURCES.txt is not a reliable source for what
-        files are installed by a package. This file is generated
-        for a source archive, and the files that are present
-        there (e.g. setup.py) may not correctly reflect the files
-        that are present after the package has been installed.
-        """
-        text = self.read_text('SOURCES.txt')
-        return text and map('"{}"'.format, text.splitlines())
-
-    @property
-    def requires(self):
-        """Generated requirements specified for this Distribution"""
-        reqs = self._read_dist_info_reqs() or self._read_egg_info_reqs()
-        return reqs and list(reqs)
-
-    def _read_dist_info_reqs(self):
-        return self.metadata.get_all('Requires-Dist')
-
-    def _read_egg_info_reqs(self):
-        source = self.read_text('requires.txt')
-        return pass_none(self._deps_from_requires_text)(source)
-
-    @classmethod
-    def _deps_from_requires_text(cls, source):
-        return cls._convert_egg_info_reqs_to_simple_reqs(Sectioned.read(source))
-
-    @staticmethod
-    def _convert_egg_info_reqs_to_simple_reqs(sections):
-        """
-        Historically, setuptools would solicit and store 'extra'
-        requirements, including those with environment markers,
-        in separate sections. More modern tools expect each
-        dependency to be defined separately, with any relevant
-        extras and environment markers attached directly to that
-        requirement. This method converts the former to the
-        latter. See _test_deps_from_requires_text for an example.
-        """
-
-        def make_condition(name):
-            return name and f'extra == "{name}"'
-
-        def quoted_marker(section):
-            section = section or ''
-            extra, sep, markers = section.partition(':')
-            if extra and markers:
-                markers = f'({markers})'
-            conditions = list(filter(None, [markers, make_condition(extra)]))
-            return '; ' + ' and '.join(conditions) if conditions else ''
-
-        def url_req_space(req):
-            """
-            PEP 508 requires a space between the url_spec and the quoted_marker.
-            Ref python/importlib_metadata#357.
-            """
-            # '@' is uniquely indicative of a url_req.
-            return ' ' * ('@' in req)
-
-        for section in sections:
-            space = url_req_space(section.value)
-            yield section.value + space + quoted_marker(section.name)
-
-
-class DistributionFinder(MetaPathFinder):
-    """
-    A MetaPathFinder capable of discovering installed distributions.
-    """
-
-    class Context:
-        """
-        Keyword arguments presented by the caller to
-        ``distributions()`` or ``Distribution.discover()``
-        to narrow the scope of a search for distributions
-        in all DistributionFinders.
-
-        Each DistributionFinder may expect any parameters
-        and should attempt to honor the canonical
-        parameters defined below when appropriate.
-        """
-
-        name = None
-        """
-        Specific name for which a distribution finder should match.
-        A name of ``None`` matches all distributions.
-        """
-
-        def __init__(self, **kwargs):
-            vars(self).update(kwargs)
-
-        @property
-        def path(self):
-            """
-            The sequence of directory path that a distribution finder
-            should search.
-
-            Typically refers to Python installed package paths such as
-            "site-packages" directories and defaults to ``sys.path``.
-            """
-            return vars(self).get('path', sys.path)
-
-    @abc.abstractmethod
-    def find_distributions(self, context=Context()):
-        """
-        Find distributions.
-
-        Return an iterable of all Distribution instances capable of
-        loading the metadata for packages matching the ``context``,
-        a DistributionFinder.Context instance.
-        """
-
-
-class FastPath:
-    """
-    Micro-optimized class for searching a path for
-    children.
-
-    >>> FastPath('').children()
-    ['...']
-    """
-
-    @functools.lru_cache()  # type: ignore
-    def __new__(cls, root):
-        return super().__new__(cls)
-
-    def __init__(self, root):
-        self.root = root
-
-    def joinpath(self, child):
-        return pathlib.Path(self.root, child)
-
-    def children(self):
-        with suppress(Exception):
-            return os.listdir(self.root or '.')
-        with suppress(Exception):
-            return self.zip_children()
-        return []
-
-    def zip_children(self):
-        zip_path = zipfile.Path(self.root)
-        names = zip_path.root.namelist()
-        self.joinpath = zip_path.joinpath
-
-        return dict.fromkeys(child.split(posixpath.sep, 1)[0] for child in names)
-
-    def search(self, name):
-        return self.lookup(self.mtime).search(name)
-
-    @property
-    def mtime(self):
-        with suppress(OSError):
-            return os.stat(self.root).st_mtime
-        self.lookup.cache_clear()
-
-    @method_cache
-    def lookup(self, mtime):
-        return Lookup(self)
-
-
-class Lookup:
-    def __init__(self, path: FastPath):
-        base = os.path.basename(path.root).lower()
-        base_is_egg = base.endswith(".egg")
-        self.infos = FreezableDefaultDict(list)
-        self.eggs = FreezableDefaultDict(list)
-
-        for child in path.children():
-            low = child.lower()
-            if low.endswith((".dist-info", ".egg-info")):
-                # rpartition is faster than splitext and suitable for this purpose.
-                name = low.rpartition(".")[0].partition("-")[0]
-                normalized = Prepared.normalize(name)
-                self.infos[normalized].append(path.joinpath(child))
-            elif base_is_egg and low == "egg-info":
-                name = base.rpartition(".")[0].partition("-")[0]
-                legacy_normalized = Prepared.legacy_normalize(name)
-                self.eggs[legacy_normalized].append(path.joinpath(child))
-
-        self.infos.freeze()
-        self.eggs.freeze()
-
-    def search(self, prepared):
-        infos = (
-            self.infos[prepared.normalized]
-            if prepared
-            else itertools.chain.from_iterable(self.infos.values())
-        )
-        eggs = (
-            self.eggs[prepared.legacy_normalized]
-            if prepared
-            else itertools.chain.from_iterable(self.eggs.values())
-        )
-        return itertools.chain(infos, eggs)
-
-
-class Prepared:
-    """
-    A prepared search for metadata on a possibly-named package.
-    """
-
-    normalized = None
-    legacy_normalized = None
-
-    def __init__(self, name):
-        self.name = name
-        if name is None:
-            return
-        self.normalized = self.normalize(name)
-        self.legacy_normalized = self.legacy_normalize(name)
-
-    @staticmethod
-    def normalize(name):
-        """
-        PEP 503 normalization plus dashes as underscores.
-        """
-        return re.sub(r"[-_.]+", "-", name).lower().replace('-', '_')
-
-    @staticmethod
-    def legacy_normalize(name):
-        """
-        Normalize the package name as found in the convention in
-        older packaging tools versions and specs.
-        """
-        return name.lower().replace('-', '_')
-
-    def __bool__(self):
-        return bool(self.name)
-
-
-class MetadataPathFinder(DistributionFinder):
-    @classmethod
-    def find_distributions(cls, context=DistributionFinder.Context()):
-        """
-        Find distributions.
-
-        Return an iterable of all Distribution instances capable of
-        loading the metadata for packages matching ``context.name``
-        (or all names if ``None`` indicated) along the paths in the list
-        of directories ``context.path``.
-        """
-        found = cls._search_paths(context.name, context.path)
-        return map(PathDistribution, found)
-
-    @classmethod
-    def _search_paths(cls, name, paths):
-        """Find metadata directories in paths heuristically."""
-        prepared = Prepared(name)
-        return itertools.chain.from_iterable(
-            path.search(prepared) for path in map(FastPath, paths)
-        )
-
-    @classmethod
-    def invalidate_caches(cls):
-        FastPath.__new__.cache_clear()
-
-
-class PathDistribution(Distribution):
-    def __init__(self, path: SimplePath):
-        """Construct a distribution.
-
-        :param path: SimplePath indicating the metadata directory.
-        """
-        self._path = path
-
-    def read_text(self, filename):
-        with suppress(
-            FileNotFoundError,
-            IsADirectoryError,
-            KeyError,
-            NotADirectoryError,
-            PermissionError,
-        ):
-            return self._path.joinpath(filename).read_text(encoding='utf-8')
-
-    read_text.__doc__ = Distribution.read_text.__doc__
-
-    def locate_file(self, path):
-        return self._path.parent / path
-
-    @property
-    def _normalized_name(self):
-        """
-        Performance optimization: where possible, resolve the
-        normalized name from the file system path.
-        """
-        stem = os.path.basename(str(self._path))
-        return (
-            pass_none(Prepared.normalize)(self._name_from_stem(stem))
-            or super()._normalized_name
-        )
-
-    @staticmethod
-    def _name_from_stem(stem):
-        """
-        >>> PathDistribution._name_from_stem('foo-3.0.egg-info')
-        'foo'
-        >>> PathDistribution._name_from_stem('CherryPy-3.0.dist-info')
-        'CherryPy'
-        >>> PathDistribution._name_from_stem('face.egg-info')
-        'face'
-        >>> PathDistribution._name_from_stem('foo.bar')
-        """
-        filename, ext = os.path.splitext(stem)
-        if ext not in ('.dist-info', '.egg-info'):
-            return
-        name, sep, rest = filename.partition('-')
-        return name
-
-
-def distribution(distribution_name):
-    """Get the ``Distribution`` instance for the named package.
-
-    :param distribution_name: The name of the distribution package as a string.
-    :return: A ``Distribution`` instance (or subclass thereof).
-    """
-    return Distribution.from_name(distribution_name)
-
-
-def distributions(**kwargs):
-    """Get all ``Distribution`` instances in the current environment.
-
-    :return: An iterable of ``Distribution`` instances.
-    """
-    return Distribution.discover(**kwargs)
-
-
-def metadata(distribution_name) -> _meta.PackageMetadata:
-    """Get the metadata for the named package.
-
-    :param distribution_name: The name of the distribution package to query.
-    :return: A PackageMetadata containing the parsed metadata.
-    """
-    return Distribution.from_name(distribution_name).metadata
-
-
-
-[docs] -def version(distribution_name): - """Get the version string for the named package. - - :param distribution_name: The name of the distribution package to query. - :return: The version string for the package as defined in the package's - "Version" metadata key. - """ - return distribution(distribution_name).version
- - - -_unique = functools.partial( - unique_everseen, - key=operator.attrgetter('_normalized_name'), -) -""" -Wrapper for ``distributions`` to return unique distributions by name. -""" - - -def entry_points(**params) -> EntryPoints: - """Return EntryPoint objects for all installed packages. - - Pass selection parameters (group or name) to filter the - result to entry points matching those properties (see - EntryPoints.select()). - - :return: EntryPoints for all installed packages. - """ - eps = itertools.chain.from_iterable( - dist.entry_points for dist in _unique(distributions()) - ) - return EntryPoints(eps).select(**params) - - -def files(distribution_name): - """Return a list of files for the named package. - - :param distribution_name: The name of the distribution package to query. - :return: List of files composing the distribution. - """ - return distribution(distribution_name).files - - -def requires(distribution_name): - """ - Return a list of requirements for the named package. - - :return: An iterator of requirements, suitable for - packaging.requirement.Requirement. - """ - return distribution(distribution_name).requires - - -def packages_distributions() -> Mapping[str, List[str]]: - """ - Return a mapping of top-level packages to their - distributions. - - >>> import collections.abc - >>> pkgs = packages_distributions() - >>> all(isinstance(dist, collections.abc.Sequence) for dist in pkgs.values()) - True - """ - pkg_to_dist = collections.defaultdict(list) - for dist in distributions(): - for pkg in _top_level_declared(dist) or _top_level_inferred(dist): - pkg_to_dist[pkg].append(dist.metadata['Name']) - return dict(pkg_to_dist) - - -def _top_level_declared(dist): - return (dist.read_text('top_level.txt') or '').split() - - -def _top_level_inferred(dist): - opt_names = { - f.parts[0] if len(f.parts) > 1 else inspect.getmodulename(f) - for f in always_iterable(dist.files) - } - - @pass_none - def importable_name(name): - return '.' not in name - - return filter(importable_name, opt_names) -
- -
-
-
- -
- -
-

© Copyright 2024, Ricky Sexton. Project structure based on the MDAnalysis Cookiecutter version 0.1.

-
- - - - - -
-
-
-
-
- - -
- - - - - - -
-
-
Other Versions
-
- -
-
- - - \ No newline at end of file diff --git a/docs/_build/html/_modules/index.html b/docs/_build/html/_modules/index.html deleted file mode 100644 index afc282b..0000000 --- a/docs/_build/html/_modules/index.html +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - - - - - - - - - - - - - - - Overview: module code — basicrta documentation - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
-
    -
  • - -
  • -
  • -
-
-
-
-
- -

All modules for which code is available

- - -
-
-
- -
- -
-

© Copyright 2024, Ricky Sexton. Project structure based on the MDAnalysis Cookiecutter version 0.1.

-
- - - - - -
-
-
-
-
- - -
- - - - - - -
-
-
Other Versions
-
- -
-
- - - \ No newline at end of file diff --git a/docs/_build/html/_sources/api.rst.txt b/docs/_build/html/_sources/api.rst.txt deleted file mode 100644 index 78b8953..0000000 --- a/docs/_build/html/_sources/api.rst.txt +++ /dev/null @@ -1,8 +0,0 @@ -API Documentation -================= - -.. autosummary:: - :toctree: autosummary - :recursive: - - basicrta diff --git a/docs/_build/html/_sources/autosummary/basicrta.cluster.rst.txt b/docs/_build/html/_sources/autosummary/basicrta.cluster.rst.txt deleted file mode 100644 index 55175d9..0000000 --- a/docs/_build/html/_sources/autosummary/basicrta.cluster.rst.txt +++ /dev/null @@ -1,12 +0,0 @@ -basicrta.cluster -================ - -.. automodule:: basicrta.cluster - - - .. rubric:: Classes - - .. autosummary:: - - ProcessProtein - \ No newline at end of file diff --git a/docs/_build/html/_sources/autosummary/basicrta.contacts.rst.txt b/docs/_build/html/_sources/autosummary/basicrta.contacts.rst.txt deleted file mode 100644 index 2072903..0000000 --- a/docs/_build/html/_sources/autosummary/basicrta.contacts.rst.txt +++ /dev/null @@ -1,13 +0,0 @@ -basicrta.contacts -================= - -.. automodule:: basicrta.contacts - - - .. rubric:: Classes - - .. autosummary:: - - MapContacts - ProcessContacts - \ No newline at end of file diff --git a/docs/_build/html/_sources/autosummary/basicrta.data.files.rst.txt b/docs/_build/html/_sources/autosummary/basicrta.data.files.rst.txt deleted file mode 100644 index 7ca890a..0000000 --- a/docs/_build/html/_sources/autosummary/basicrta.data.files.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -basicrta.data.files -=================== - -.. automodule:: basicrta.data.files - - \ No newline at end of file diff --git a/docs/_build/html/_sources/autosummary/basicrta.data.rst.txt b/docs/_build/html/_sources/autosummary/basicrta.data.rst.txt deleted file mode 100644 index 3c72ced..0000000 --- a/docs/_build/html/_sources/autosummary/basicrta.data.rst.txt +++ /dev/null @@ -1,13 +0,0 @@ -basicrta.data -============= - -.. automodule:: basicrta.data - - -.. rubric:: Modules - -.. autosummary:: - :toctree: - :recursive: - - files diff --git a/docs/_build/html/_sources/autosummary/basicrta.gibbs.Gibbs.rst.txt b/docs/_build/html/_sources/autosummary/basicrta.gibbs.Gibbs.rst.txt deleted file mode 100644 index 470b356..0000000 --- a/docs/_build/html/_sources/autosummary/basicrta.gibbs.Gibbs.rst.txt +++ /dev/null @@ -1,33 +0,0 @@ -basicrta.gibbs.Gibbs -==================== - -.. currentmodule:: basicrta.gibbs - -.. autoclass:: Gibbs - - - .. automethod:: __init__ - - - .. rubric:: Methods - - .. autosummary:: - - ~Gibbs.__init__ - ~Gibbs.cluster - ~Gibbs.estimate_tau - ~Gibbs.load - ~Gibbs.plot_gibbs - ~Gibbs.plot_hist - ~Gibbs.plot_surv - ~Gibbs.plot_tau_hist - ~Gibbs.process_gibbs - ~Gibbs.result_plot - ~Gibbs.run - ~Gibbs.save - - - - - - \ No newline at end of file diff --git a/docs/_build/html/_sources/autosummary/basicrta.gibbs.rst.txt b/docs/_build/html/_sources/autosummary/basicrta.gibbs.rst.txt deleted file mode 100644 index 52b8789..0000000 --- a/docs/_build/html/_sources/autosummary/basicrta.gibbs.rst.txt +++ /dev/null @@ -1,13 +0,0 @@ -basicrta.gibbs -============== - -.. automodule:: basicrta.gibbs - - - .. rubric:: Classes - - .. autosummary:: - - Gibbs - ParallelGibbs - \ No newline at end of file diff --git a/docs/_build/html/_sources/autosummary/basicrta.istarmap.rst.txt b/docs/_build/html/_sources/autosummary/basicrta.istarmap.rst.txt deleted file mode 100644 index 061a784..0000000 --- a/docs/_build/html/_sources/autosummary/basicrta.istarmap.rst.txt +++ /dev/null @@ -1,12 +0,0 @@ -basicrta.istarmap -================= - -.. automodule:: basicrta.istarmap - - - .. rubric:: Functions - - .. autosummary:: - - istarmap - \ No newline at end of file diff --git a/docs/_build/html/_sources/autosummary/basicrta.pwdensity.rst.txt b/docs/_build/html/_sources/autosummary/basicrta.pwdensity.rst.txt deleted file mode 100644 index 89ffd27..0000000 --- a/docs/_build/html/_sources/autosummary/basicrta.pwdensity.rst.txt +++ /dev/null @@ -1,13 +0,0 @@ -basicrta.pwdensity -================== - -.. automodule:: basicrta.pwdensity - - - .. rubric:: Classes - - .. autosummary:: - - Density - WDensityAnalysis - \ No newline at end of file diff --git a/docs/_build/html/_sources/autosummary/basicrta.rst.txt b/docs/_build/html/_sources/autosummary/basicrta.rst.txt deleted file mode 100644 index e5261b6..0000000 --- a/docs/_build/html/_sources/autosummary/basicrta.rst.txt +++ /dev/null @@ -1,21 +0,0 @@ -basicrta -======== - -.. automodule:: basicrta - - -.. rubric:: Modules - -.. autosummary:: - :toctree: - :recursive: - - cluster - contacts - data - gibbs - istarmap - pwdensity - util - wdensity - weighted_density diff --git a/docs/_build/html/_sources/autosummary/basicrta.util.rst.txt b/docs/_build/html/_sources/autosummary/basicrta.util.rst.txt deleted file mode 100644 index 14579c7..0000000 --- a/docs/_build/html/_sources/autosummary/basicrta.util.rst.txt +++ /dev/null @@ -1,49 +0,0 @@ -basicrta.util -============= - -.. automodule:: basicrta.util - - - .. rubric:: Functions - - .. autosummary:: - - align_homologues - all_post_hist - check_results - collect_n_plot - confidence_interval - expand_times - extract_data - get_bars - get_bins - get_code - get_color - get_dec - get_delta_tau - get_diffcode - get_fa_sel - get_fa_sel_match - get_indices - get_remaining_residue_inds - get_s - get_start_stop_frames - get_write_frames - make_residue_plots - make_surv - mixture_and_plot - plot_delta_tau - plot_hists - plot_post - plot_protein - plot_r_vs_w - plot_results - plot_trace - run_residue - siground - simulate_hn - slice_trajectory - tm - unique_rates - write_trajs - \ No newline at end of file diff --git a/docs/_build/html/_sources/autosummary/basicrta.wdensity.rst.txt b/docs/_build/html/_sources/autosummary/basicrta.wdensity.rst.txt deleted file mode 100644 index a204317..0000000 --- a/docs/_build/html/_sources/autosummary/basicrta.wdensity.rst.txt +++ /dev/null @@ -1,13 +0,0 @@ -basicrta.wdensity -================= - -.. automodule:: basicrta.wdensity - - - .. rubric:: Classes - - .. autosummary:: - - Density - WDensityAnalysis - \ No newline at end of file diff --git a/docs/_build/html/_sources/autosummary/basicrta.weighted_density.rst.txt b/docs/_build/html/_sources/autosummary/basicrta.weighted_density.rst.txt deleted file mode 100644 index f43253b..0000000 --- a/docs/_build/html/_sources/autosummary/basicrta.weighted_density.rst.txt +++ /dev/null @@ -1,12 +0,0 @@ -basicrta.weighted\_density -========================== - -.. automodule:: basicrta.weighted_density - - - .. rubric:: Classes - - .. autosummary:: - - MapKinetics - \ No newline at end of file diff --git a/docs/_build/html/_sources/getting_started.rst.txt b/docs/_build/html/_sources/getting_started.rst.txt deleted file mode 100644 index 56fb28b..0000000 --- a/docs/_build/html/_sources/getting_started.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -Getting Started -=============== - -To use ``basicrta``, install from source. - -.. code-block:: bash - - git clone git@github.com:becksteinlab/basicrta.git - cd basicrta - pip install . diff --git a/docs/_build/html/_sources/index.rst.txt b/docs/_build/html/_sources/index.rst.txt deleted file mode 100644 index 30f1cec..0000000 --- a/docs/_build/html/_sources/index.rst.txt +++ /dev/null @@ -1,32 +0,0 @@ -.. basicrta documentation master file, created by - sphinx-quickstart on Thu Mar 15 13:55:56 2018. - You can adapt this file completely to your liking, but it should at least - contain the root `toctree` directive. - -Welcome to basicrta's documentation! -========================================================= -``basicrtakit`` is a package to analyze binding kinetics in molecular dynamics -simulations. The analysis uses an exponential mixture model and Bayesian -nonparametric inference to determine time-scales of the underlying binding -processes. The output is processed to give frames belonging to a given process -with an associated time-scale, which can be further analyzed. - -.. toctree:: - :maxdepth: 2 - :caption: Contents: - - getting_started - tutorial - api - -.. automodule:: basicrta - :imported-members: - :members: - - -Indices and tables -================== - -* :ref:`genindex` -* :ref:`modindex` -* :ref:`search` diff --git a/docs/_build/html/_sources/tutorial.rst.txt b/docs/_build/html/_sources/tutorial.rst.txt deleted file mode 100644 index 1b793a1..0000000 --- a/docs/_build/html/_sources/tutorial.rst.txt +++ /dev/null @@ -1,32 +0,0 @@ -.. |AA| unicode:: U+212B - -Tutorial -======== - -The basicrta workflow starts with collecting contacts between two atom groups -``sel1`` and ``sel2`` based on a single ``cutoff`` using contacts.py.:: - python -m basicrta.contacts --top top.pdb --traj traj.xtc --sel1 "protein" - --sel2 "resname CHOL" --cutoff 7.0 --nproc 4 - -This will create two contact maps: ``contacts.npy`` and ``contacts_7.0.pkl``. -The first is used to map all contacts defined with a 10 |AA| cutoff, upon which -the cutoff is imposed and a new contact map is created for each desired cutoff -value (for storage reasons this may change in the future). The protein residues -in the topology should be correctly numbered, as these will be the names of -directories where results are stored. - -Next the contact map is used to collect the contacts between a specified residue -of ``sel1`` and each residue of the ``sel2`` group. The contact durations -(residence times) are then used as input data for the Gibbs sampler. A specific -residue of ``sel1`` can be used to run a Gibbs sampler for only that residue :: - python -m basicrta.gibbs --contacts contacts_7.0.pkl --nproc 4 --resid 313 -or if ``resid`` is left out, a Gibbs sampler will be executed for all ``sel1`` -residues in the contact map. :: - python -m basicrta.gibbs --contacts contacts_7.0.pkl --nproc 4 - - -Contacts -======== -.. toctree: - :maxdepth: 1 - basicrta/contacts diff --git a/docs/_build/html/_static/README.md b/docs/_build/html/_static/README.md deleted file mode 100644 index 8d30b2b..0000000 --- a/docs/_build/html/_static/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# Static Doc Directory - -Add any paths that contain custom static files (such as style sheets) here, -relative to the `conf.py` file's directory. -They are copied after the builtin static files, -so a file named "default.css" will overwrite the builtin "default.css". - -The path to this folder is set in the Sphinx `conf.py` file in the line: -```python -html_static_path = ['_static'] -``` - -## Examples of file to add to this directory -* Custom Cascading Style Sheets -* Custom JavaScript code -* Static logo images diff --git a/docs/_build/html/_static/_sphinx_javascript_frameworks_compat.js b/docs/_build/html/_static/_sphinx_javascript_frameworks_compat.js deleted file mode 100644 index 8141580..0000000 --- a/docs/_build/html/_static/_sphinx_javascript_frameworks_compat.js +++ /dev/null @@ -1,123 +0,0 @@ -/* Compatability shim for jQuery and underscores.js. - * - * Copyright Sphinx contributors - * Released under the two clause BSD licence - */ - -/** - * small helper function to urldecode strings - * - * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent#Decoding_query_parameters_from_a_URL - */ -jQuery.urldecode = function(x) { - if (!x) { - return x - } - return decodeURIComponent(x.replace(/\+/g, ' ')); -}; - -/** - * small helper function to urlencode strings - */ -jQuery.urlencode = encodeURIComponent; - -/** - * This function returns the parsed url parameters of the - * current request. Multiple values per key are supported, - * it will always return arrays of strings for the value parts. - */ -jQuery.getQueryParameters = function(s) { - if (typeof s === 'undefined') - s = document.location.search; - var parts = s.substr(s.indexOf('?') + 1).split('&'); - var result = {}; - for (var i = 0; i < parts.length; i++) { - var tmp = parts[i].split('=', 2); - var key = jQuery.urldecode(tmp[0]); - var value = jQuery.urldecode(tmp[1]); - if (key in result) - result[key].push(value); - else - result[key] = [value]; - } - return result; -}; - -/** - * highlight a given string on a jquery object by wrapping it in - * span elements with the given class name. - */ -jQuery.fn.highlightText = function(text, className) { - function highlight(node, addItems) { - if (node.nodeType === 3) { - var val = node.nodeValue; - var pos = val.toLowerCase().indexOf(text); - if (pos >= 0 && - !jQuery(node.parentNode).hasClass(className) && - !jQuery(node.parentNode).hasClass("nohighlight")) { - var span; - var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg"); - if (isInSVG) { - span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); - } else { - span = document.createElement("span"); - span.className = className; - } - span.appendChild(document.createTextNode(val.substr(pos, text.length))); - node.parentNode.insertBefore(span, node.parentNode.insertBefore( - document.createTextNode(val.substr(pos + text.length)), - node.nextSibling)); - node.nodeValue = val.substr(0, pos); - if (isInSVG) { - var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect"); - var bbox = node.parentElement.getBBox(); - rect.x.baseVal.value = bbox.x; - rect.y.baseVal.value = bbox.y; - rect.width.baseVal.value = bbox.width; - rect.height.baseVal.value = bbox.height; - rect.setAttribute('class', className); - addItems.push({ - "parent": node.parentNode, - "target": rect}); - } - } - } - else if (!jQuery(node).is("button, select, textarea")) { - jQuery.each(node.childNodes, function() { - highlight(this, addItems); - }); - } - } - var addItems = []; - var result = this.each(function() { - highlight(this, addItems); - }); - for (var i = 0; i < addItems.length; ++i) { - jQuery(addItems[i].parent).before(addItems[i].target); - } - return result; -}; - -/* - * backward compatibility for jQuery.browser - * This will be supported until firefox bug is fixed. - */ -if (!jQuery.browser) { - jQuery.uaMatch = function(ua) { - ua = ua.toLowerCase(); - - var match = /(chrome)[ \/]([\w.]+)/.exec(ua) || - /(webkit)[ \/]([\w.]+)/.exec(ua) || - /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) || - /(msie) ([\w.]+)/.exec(ua) || - ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) || - []; - - return { - browser: match[ 1 ] || "", - version: match[ 2 ] || "0" - }; - }; - jQuery.browser = {}; - jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true; -} diff --git a/docs/_build/html/_static/basic.css b/docs/_build/html/_static/basic.css deleted file mode 100644 index f316efc..0000000 --- a/docs/_build/html/_static/basic.css +++ /dev/null @@ -1,925 +0,0 @@ -/* - * basic.css - * ~~~~~~~~~ - * - * Sphinx stylesheet -- basic theme. - * - * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS. - * :license: BSD, see LICENSE for details. - * - */ - -/* -- main layout ----------------------------------------------------------- */ - -div.clearer { - clear: both; -} - -div.section::after { - display: block; - content: ''; - clear: left; -} - -/* -- relbar ---------------------------------------------------------------- */ - -div.related { - width: 100%; - font-size: 90%; -} - -div.related h3 { - display: none; -} - -div.related ul { - margin: 0; - padding: 0 0 0 10px; - list-style: none; -} - -div.related li { - display: inline; -} - -div.related li.right { - float: right; - margin-right: 5px; -} - -/* -- sidebar --------------------------------------------------------------- */ - -div.sphinxsidebarwrapper { - padding: 10px 5px 0 10px; -} - -div.sphinxsidebar { - float: left; - width: 230px; - margin-left: -100%; - font-size: 90%; - word-wrap: break-word; - overflow-wrap : break-word; -} - -div.sphinxsidebar ul { - list-style: none; -} - -div.sphinxsidebar ul ul, -div.sphinxsidebar ul.want-points { - margin-left: 20px; - list-style: square; -} - -div.sphinxsidebar ul ul { - margin-top: 0; - margin-bottom: 0; -} - -div.sphinxsidebar form { - margin-top: 10px; -} - -div.sphinxsidebar input { - border: 1px solid #98dbcc; - font-family: sans-serif; - font-size: 1em; -} - -div.sphinxsidebar #searchbox form.search { - overflow: hidden; -} - -div.sphinxsidebar #searchbox input[type="text"] { - float: left; - width: 80%; - padding: 0.25em; - box-sizing: border-box; -} - -div.sphinxsidebar #searchbox input[type="submit"] { - float: left; - width: 20%; - border-left: none; - padding: 0.25em; - box-sizing: border-box; -} - - -img { - border: 0; - max-width: 100%; -} - -/* -- search page ----------------------------------------------------------- */ - -ul.search { - margin: 10px 0 0 20px; - padding: 0; -} - -ul.search li { - padding: 5px 0 5px 20px; - background-image: url(file.png); - background-repeat: no-repeat; - background-position: 0 7px; -} - -ul.search li a { - font-weight: bold; -} - -ul.search li p.context { - color: #888; - margin: 2px 0 0 30px; - text-align: left; -} - -ul.keywordmatches li.goodmatch a { - font-weight: bold; -} - -/* -- index page ------------------------------------------------------------ */ - -table.contentstable { - width: 90%; - margin-left: auto; - margin-right: auto; -} - -table.contentstable p.biglink { - line-height: 150%; -} - -a.biglink { - font-size: 1.3em; -} - -span.linkdescr { - font-style: italic; - padding-top: 5px; - font-size: 90%; -} - -/* -- general index --------------------------------------------------------- */ - -table.indextable { - width: 100%; -} - -table.indextable td { - text-align: left; - vertical-align: top; -} - -table.indextable ul { - margin-top: 0; - margin-bottom: 0; - list-style-type: none; -} - -table.indextable > tbody > tr > td > ul { - padding-left: 0em; -} - -table.indextable tr.pcap { - height: 10px; -} - -table.indextable tr.cap { - margin-top: 10px; - background-color: #f2f2f2; -} - -img.toggler { - margin-right: 3px; - margin-top: 3px; - cursor: pointer; -} - -div.modindex-jumpbox { - border-top: 1px solid #ddd; - border-bottom: 1px solid #ddd; - margin: 1em 0 1em 0; - padding: 0.4em; -} - -div.genindex-jumpbox { - border-top: 1px solid #ddd; - border-bottom: 1px solid #ddd; - margin: 1em 0 1em 0; - padding: 0.4em; -} - -/* -- domain module index --------------------------------------------------- */ - -table.modindextable td { - padding: 2px; - border-collapse: collapse; -} - -/* -- general body styles --------------------------------------------------- */ - -div.body { - min-width: 360px; - max-width: 800px; -} - -div.body p, div.body dd, div.body li, div.body blockquote { - -moz-hyphens: auto; - -ms-hyphens: auto; - -webkit-hyphens: auto; - hyphens: auto; -} - -a.headerlink { - visibility: hidden; -} - -a:visited { - color: #551A8B; -} - -h1:hover > a.headerlink, -h2:hover > a.headerlink, -h3:hover > a.headerlink, -h4:hover > a.headerlink, -h5:hover > a.headerlink, -h6:hover > a.headerlink, -dt:hover > a.headerlink, -caption:hover > a.headerlink, -p.caption:hover > a.headerlink, -div.code-block-caption:hover > a.headerlink { - visibility: visible; -} - -div.body p.caption { - text-align: inherit; -} - -div.body td { - text-align: left; -} - -.first { - margin-top: 0 !important; -} - -p.rubric { - margin-top: 30px; - font-weight: bold; -} - -img.align-left, figure.align-left, .figure.align-left, object.align-left { - clear: left; - float: left; - margin-right: 1em; -} - -img.align-right, figure.align-right, .figure.align-right, object.align-right { - clear: right; - float: right; - margin-left: 1em; -} - -img.align-center, figure.align-center, .figure.align-center, object.align-center { - display: block; - margin-left: auto; - margin-right: auto; -} - -img.align-default, figure.align-default, .figure.align-default { - display: block; - margin-left: auto; - margin-right: auto; -} - -.align-left { - text-align: left; -} - -.align-center { - text-align: center; -} - -.align-default { - text-align: center; -} - -.align-right { - text-align: right; -} - -/* -- sidebars -------------------------------------------------------------- */ - -div.sidebar, -aside.sidebar { - margin: 0 0 0.5em 1em; - border: 1px solid #ddb; - padding: 7px; - background-color: #ffe; - width: 40%; - float: right; - clear: right; - overflow-x: auto; -} - -p.sidebar-title { - font-weight: bold; -} - -nav.contents, -aside.topic, -div.admonition, div.topic, blockquote { - clear: left; -} - -/* -- topics ---------------------------------------------------------------- */ - -nav.contents, -aside.topic, -div.topic { - border: 1px solid #ccc; - padding: 7px; - margin: 10px 0 10px 0; -} - -p.topic-title { - font-size: 1.1em; - font-weight: bold; - margin-top: 10px; -} - -/* -- admonitions ----------------------------------------------------------- */ - -div.admonition { - margin-top: 10px; - margin-bottom: 10px; - padding: 7px; -} - -div.admonition dt { - font-weight: bold; -} - -p.admonition-title { - margin: 0px 10px 5px 0px; - font-weight: bold; -} - -div.body p.centered { - text-align: center; - margin-top: 25px; -} - -/* -- content of sidebars/topics/admonitions -------------------------------- */ - -div.sidebar > :last-child, -aside.sidebar > :last-child, -nav.contents > :last-child, -aside.topic > :last-child, -div.topic > :last-child, -div.admonition > :last-child { - margin-bottom: 0; -} - -div.sidebar::after, -aside.sidebar::after, -nav.contents::after, -aside.topic::after, -div.topic::after, -div.admonition::after, -blockquote::after { - display: block; - content: ''; - clear: both; -} - -/* -- tables ---------------------------------------------------------------- */ - -table.docutils { - margin-top: 10px; - margin-bottom: 10px; - border: 0; - border-collapse: collapse; -} - -table.align-center { - margin-left: auto; - margin-right: auto; -} - -table.align-default { - margin-left: auto; - margin-right: auto; -} - -table caption span.caption-number { - font-style: italic; -} - -table caption span.caption-text { -} - -table.docutils td, table.docutils th { - padding: 1px 8px 1px 5px; - border-top: 0; - border-left: 0; - border-right: 0; - border-bottom: 1px solid #aaa; -} - -th { - text-align: left; - padding-right: 5px; -} - -table.citation { - border-left: solid 1px gray; - margin-left: 1px; -} - -table.citation td { - border-bottom: none; -} - -th > :first-child, -td > :first-child { - margin-top: 0px; -} - -th > :last-child, -td > :last-child { - margin-bottom: 0px; -} - -/* -- figures --------------------------------------------------------------- */ - -div.figure, figure { - margin: 0.5em; - padding: 0.5em; -} - -div.figure p.caption, figcaption { - padding: 0.3em; -} - -div.figure p.caption span.caption-number, -figcaption span.caption-number { - font-style: italic; -} - -div.figure p.caption span.caption-text, -figcaption span.caption-text { -} - -/* -- field list styles ----------------------------------------------------- */ - -table.field-list td, table.field-list th { - border: 0 !important; -} - -.field-list ul { - margin: 0; - padding-left: 1em; -} - -.field-list p { - margin: 0; -} - -.field-name { - -moz-hyphens: manual; - -ms-hyphens: manual; - -webkit-hyphens: manual; - hyphens: manual; -} - -/* -- hlist styles ---------------------------------------------------------- */ - -table.hlist { - margin: 1em 0; -} - -table.hlist td { - vertical-align: top; -} - -/* -- object description styles --------------------------------------------- */ - -.sig { - font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; -} - -.sig-name, code.descname { - background-color: transparent; - font-weight: bold; -} - -.sig-name { - font-size: 1.1em; -} - -code.descname { - font-size: 1.2em; -} - -.sig-prename, code.descclassname { - background-color: transparent; -} - -.optional { - font-size: 1.3em; -} - -.sig-paren { - font-size: larger; -} - -.sig-param.n { - font-style: italic; -} - -/* C++ specific styling */ - -.sig-inline.c-texpr, -.sig-inline.cpp-texpr { - font-family: unset; -} - -.sig.c .k, .sig.c .kt, -.sig.cpp .k, .sig.cpp .kt { - color: #0033B3; -} - -.sig.c .m, -.sig.cpp .m { - color: #1750EB; -} - -.sig.c .s, .sig.c .sc, -.sig.cpp .s, .sig.cpp .sc { - color: #067D17; -} - - -/* -- other body styles ----------------------------------------------------- */ - -ol.arabic { - list-style: decimal; -} - -ol.loweralpha { - list-style: lower-alpha; -} - -ol.upperalpha { - list-style: upper-alpha; -} - -ol.lowerroman { - list-style: lower-roman; -} - -ol.upperroman { - list-style: upper-roman; -} - -:not(li) > ol > li:first-child > :first-child, -:not(li) > ul > li:first-child > :first-child { - margin-top: 0px; -} - -:not(li) > ol > li:last-child > :last-child, -:not(li) > ul > li:last-child > :last-child { - margin-bottom: 0px; -} - -ol.simple ol p, -ol.simple ul p, -ul.simple ol p, -ul.simple ul p { - margin-top: 0; -} - -ol.simple > li:not(:first-child) > p, -ul.simple > li:not(:first-child) > p { - margin-top: 0; -} - -ol.simple p, -ul.simple p { - margin-bottom: 0; -} - -aside.footnote > span, -div.citation > span { - float: left; -} -aside.footnote > span:last-of-type, -div.citation > span:last-of-type { - padding-right: 0.5em; -} -aside.footnote > p { - margin-left: 2em; -} -div.citation > p { - margin-left: 4em; -} -aside.footnote > p:last-of-type, -div.citation > p:last-of-type { - margin-bottom: 0em; -} -aside.footnote > p:last-of-type:after, -div.citation > p:last-of-type:after { - content: ""; - clear: both; -} - -dl.field-list { - display: grid; - grid-template-columns: fit-content(30%) auto; -} - -dl.field-list > dt { - font-weight: bold; - word-break: break-word; - padding-left: 0.5em; - padding-right: 5px; -} - -dl.field-list > dd { - padding-left: 0.5em; - margin-top: 0em; - margin-left: 0em; - margin-bottom: 0em; -} - -dl { - margin-bottom: 15px; -} - -dd > :first-child { - margin-top: 0px; -} - -dd ul, dd table { - margin-bottom: 10px; -} - -dd { - margin-top: 3px; - margin-bottom: 10px; - margin-left: 30px; -} - -.sig dd { - margin-top: 0px; - margin-bottom: 0px; -} - -.sig dl { - margin-top: 0px; - margin-bottom: 0px; -} - -dl > dd:last-child, -dl > dd:last-child > :last-child { - margin-bottom: 0; -} - -dt:target, span.highlighted { - background-color: #fbe54e; -} - -rect.highlighted { - fill: #fbe54e; -} - -dl.glossary dt { - font-weight: bold; - font-size: 1.1em; -} - -.versionmodified { - font-style: italic; -} - -.system-message { - background-color: #fda; - padding: 5px; - border: 3px solid red; -} - -.footnote:target { - background-color: #ffa; -} - -.line-block { - display: block; - margin-top: 1em; - margin-bottom: 1em; -} - -.line-block .line-block { - margin-top: 0; - margin-bottom: 0; - margin-left: 1.5em; -} - -.guilabel, .menuselection { - font-family: sans-serif; -} - -.accelerator { - text-decoration: underline; -} - -.classifier { - font-style: oblique; -} - -.classifier:before { - font-style: normal; - margin: 0 0.5em; - content: ":"; - display: inline-block; -} - -abbr, acronym { - border-bottom: dotted 1px; - cursor: help; -} - -.translated { - background-color: rgba(207, 255, 207, 0.2) -} - -.untranslated { - background-color: rgba(255, 207, 207, 0.2) -} - -/* -- code displays --------------------------------------------------------- */ - -pre { - overflow: auto; - overflow-y: hidden; /* fixes display issues on Chrome browsers */ -} - -pre, div[class*="highlight-"] { - clear: both; -} - -span.pre { - -moz-hyphens: none; - -ms-hyphens: none; - -webkit-hyphens: none; - hyphens: none; - white-space: nowrap; -} - -div[class*="highlight-"] { - margin: 1em 0; -} - -td.linenos pre { - border: 0; - background-color: transparent; - color: #aaa; -} - -table.highlighttable { - display: block; -} - -table.highlighttable tbody { - display: block; -} - -table.highlighttable tr { - display: flex; -} - -table.highlighttable td { - margin: 0; - padding: 0; -} - -table.highlighttable td.linenos { - padding-right: 0.5em; -} - -table.highlighttable td.code { - flex: 1; - overflow: hidden; -} - -.highlight .hll { - display: block; -} - -div.highlight pre, -table.highlighttable pre { - margin: 0; -} - -div.code-block-caption + div { - margin-top: 0; -} - -div.code-block-caption { - margin-top: 1em; - padding: 2px 5px; - font-size: small; -} - -div.code-block-caption code { - background-color: transparent; -} - -table.highlighttable td.linenos, -span.linenos, -div.highlight span.gp { /* gp: Generic.Prompt */ - user-select: none; - -webkit-user-select: text; /* Safari fallback only */ - -webkit-user-select: none; /* Chrome/Safari */ - -moz-user-select: none; /* Firefox */ - -ms-user-select: none; /* IE10+ */ -} - -div.code-block-caption span.caption-number { - padding: 0.1em 0.3em; - font-style: italic; -} - -div.code-block-caption span.caption-text { -} - -div.literal-block-wrapper { - margin: 1em 0; -} - -code.xref, a code { - background-color: transparent; - font-weight: bold; -} - -h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { - background-color: transparent; -} - -.viewcode-link { - float: right; -} - -.viewcode-back { - float: right; - font-family: sans-serif; -} - -div.viewcode-block:target { - margin: -1px -10px; - padding: 0 10px; -} - -/* -- math display ---------------------------------------------------------- */ - -img.math { - vertical-align: middle; -} - -div.body div.math p { - text-align: center; -} - -span.eqno { - float: right; -} - -span.eqno a.headerlink { - position: absolute; - z-index: 1; -} - -div.math:hover a.headerlink { - visibility: visible; -} - -/* -- printout stylesheet --------------------------------------------------- */ - -@media print { - div.document, - div.documentwrapper, - div.bodywrapper { - margin: 0 !important; - width: 100%; - } - - div.sphinxsidebar, - div.related, - div.footer, - #top-link { - display: none; - } -} \ No newline at end of file diff --git a/docs/_build/html/_static/css/badge_only.css b/docs/_build/html/_static/css/badge_only.css deleted file mode 100644 index c718cee..0000000 --- a/docs/_build/html/_static/css/badge_only.css +++ /dev/null @@ -1 +0,0 @@ -.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}@font-face{font-family:FontAwesome;font-style:normal;font-weight:400;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#FontAwesome) format("svg")}.fa:before{font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1}.fa:before,a .fa{text-decoration:inherit}.fa:before,a .fa,li .fa{display:inline-block}li .fa-large:before{width:1.875em}ul.fas{list-style-type:none;margin-left:2em;text-indent:-.8em}ul.fas li .fa{width:.8em}ul.fas li .fa-large:before{vertical-align:baseline}.fa-book:before,.icon-book:before{content:"\f02d"}.fa-caret-down:before,.icon-caret-down:before{content:"\f0d7"}.fa-caret-up:before,.icon-caret-up:before{content:"\f0d8"}.fa-caret-left:before,.icon-caret-left:before{content:"\f0d9"}.fa-caret-right:before,.icon-caret-right:before{content:"\f0da"}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60}.rst-versions .rst-current-version:after{clear:both;content:"";display:block}.rst-versions .rst-current-version .fa{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none;line-height:30px}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge>.rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width:768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}} \ No newline at end of file diff --git a/docs/_build/html/_static/css/fonts/Roboto-Slab-Bold.woff b/docs/_build/html/_static/css/fonts/Roboto-Slab-Bold.woff deleted file mode 100644 index 6cb6000..0000000 Binary files a/docs/_build/html/_static/css/fonts/Roboto-Slab-Bold.woff and /dev/null differ diff --git a/docs/_build/html/_static/css/fonts/Roboto-Slab-Bold.woff2 b/docs/_build/html/_static/css/fonts/Roboto-Slab-Bold.woff2 deleted file mode 100644 index 7059e23..0000000 Binary files a/docs/_build/html/_static/css/fonts/Roboto-Slab-Bold.woff2 and /dev/null differ diff --git a/docs/_build/html/_static/css/fonts/Roboto-Slab-Regular.woff b/docs/_build/html/_static/css/fonts/Roboto-Slab-Regular.woff deleted file mode 100644 index f815f63..0000000 Binary files a/docs/_build/html/_static/css/fonts/Roboto-Slab-Regular.woff and /dev/null differ diff --git a/docs/_build/html/_static/css/fonts/Roboto-Slab-Regular.woff2 b/docs/_build/html/_static/css/fonts/Roboto-Slab-Regular.woff2 deleted file mode 100644 index f2c76e5..0000000 Binary files a/docs/_build/html/_static/css/fonts/Roboto-Slab-Regular.woff2 and /dev/null differ diff --git a/docs/_build/html/_static/css/fonts/fontawesome-webfont.eot b/docs/_build/html/_static/css/fonts/fontawesome-webfont.eot deleted file mode 100644 index e9f60ca..0000000 Binary files a/docs/_build/html/_static/css/fonts/fontawesome-webfont.eot and /dev/null differ diff --git a/docs/_build/html/_static/css/fonts/fontawesome-webfont.svg b/docs/_build/html/_static/css/fonts/fontawesome-webfont.svg deleted file mode 100644 index 855c845..0000000 --- a/docs/_build/html/_static/css/fonts/fontawesome-webfont.svg +++ /dev/null @@ -1,2671 +0,0 @@ - - - - -Created by FontForge 20120731 at Mon Oct 24 17:37:40 2016 - By ,,, -Copyright Dave Gandy 2016. All rights reserved. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/_build/html/_static/css/fonts/fontawesome-webfont.ttf b/docs/_build/html/_static/css/fonts/fontawesome-webfont.ttf deleted file mode 100644 index 35acda2..0000000 Binary files a/docs/_build/html/_static/css/fonts/fontawesome-webfont.ttf and /dev/null differ diff --git a/docs/_build/html/_static/css/fonts/fontawesome-webfont.woff b/docs/_build/html/_static/css/fonts/fontawesome-webfont.woff deleted file mode 100644 index 400014a..0000000 Binary files a/docs/_build/html/_static/css/fonts/fontawesome-webfont.woff and /dev/null differ diff --git a/docs/_build/html/_static/css/fonts/fontawesome-webfont.woff2 b/docs/_build/html/_static/css/fonts/fontawesome-webfont.woff2 deleted file mode 100644 index 4d13fc6..0000000 Binary files a/docs/_build/html/_static/css/fonts/fontawesome-webfont.woff2 and /dev/null differ diff --git a/docs/_build/html/_static/css/fonts/lato-bold-italic.woff b/docs/_build/html/_static/css/fonts/lato-bold-italic.woff deleted file mode 100644 index 88ad05b..0000000 Binary files a/docs/_build/html/_static/css/fonts/lato-bold-italic.woff and /dev/null differ diff --git a/docs/_build/html/_static/css/fonts/lato-bold-italic.woff2 b/docs/_build/html/_static/css/fonts/lato-bold-italic.woff2 deleted file mode 100644 index c4e3d80..0000000 Binary files a/docs/_build/html/_static/css/fonts/lato-bold-italic.woff2 and /dev/null differ diff --git a/docs/_build/html/_static/css/fonts/lato-bold.woff b/docs/_build/html/_static/css/fonts/lato-bold.woff deleted file mode 100644 index c6dff51..0000000 Binary files a/docs/_build/html/_static/css/fonts/lato-bold.woff and /dev/null differ diff --git a/docs/_build/html/_static/css/fonts/lato-bold.woff2 b/docs/_build/html/_static/css/fonts/lato-bold.woff2 deleted file mode 100644 index bb19504..0000000 Binary files a/docs/_build/html/_static/css/fonts/lato-bold.woff2 and /dev/null differ diff --git a/docs/_build/html/_static/css/fonts/lato-normal-italic.woff b/docs/_build/html/_static/css/fonts/lato-normal-italic.woff deleted file mode 100644 index 76114bc..0000000 Binary files a/docs/_build/html/_static/css/fonts/lato-normal-italic.woff and /dev/null differ diff --git a/docs/_build/html/_static/css/fonts/lato-normal-italic.woff2 b/docs/_build/html/_static/css/fonts/lato-normal-italic.woff2 deleted file mode 100644 index 3404f37..0000000 Binary files a/docs/_build/html/_static/css/fonts/lato-normal-italic.woff2 and /dev/null differ diff --git a/docs/_build/html/_static/css/fonts/lato-normal.woff b/docs/_build/html/_static/css/fonts/lato-normal.woff deleted file mode 100644 index ae1307f..0000000 Binary files a/docs/_build/html/_static/css/fonts/lato-normal.woff and /dev/null differ diff --git a/docs/_build/html/_static/css/fonts/lato-normal.woff2 b/docs/_build/html/_static/css/fonts/lato-normal.woff2 deleted file mode 100644 index 3bf9843..0000000 Binary files a/docs/_build/html/_static/css/fonts/lato-normal.woff2 and /dev/null differ diff --git a/docs/_build/html/_static/css/theme.css b/docs/_build/html/_static/css/theme.css deleted file mode 100644 index 19a446a..0000000 --- a/docs/_build/html/_static/css/theme.css +++ /dev/null @@ -1,4 +0,0 @@ -html{box-sizing:border-box}*,:after,:before{box-sizing:inherit}article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}[hidden],audio:not([controls]){display:none}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}blockquote{margin:0}dfn{font-style:italic}ins{background:#ff9;text-decoration:none}ins,mark{color:#000}mark{background:#ff0;font-style:italic;font-weight:700}.rst-content code,.rst-content tt,code,kbd,pre,samp{font-family:monospace,serif;_font-family:courier new,monospace;font-size:1em}pre{white-space:pre}q{quotes:none}q:after,q:before{content:"";content:none}small{font-size:85%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}dl,ol,ul{margin:0;padding:0;list-style:none;list-style-image:none}li{list-style:none}dd{margin:0}img{border:0;-ms-interpolation-mode:bicubic;vertical-align:middle;max-width:100%}svg:not(:root){overflow:hidden}figure,form{margin:0}label{cursor:pointer}button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}button,input{line-height:normal}button,input[type=button],input[type=reset],input[type=submit]{cursor:pointer;-webkit-appearance:button;*overflow:visible}button[disabled],input[disabled]{cursor:default}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}textarea{resize:vertical}table{border-collapse:collapse;border-spacing:0}td{vertical-align:top}.chromeframe{margin:.2em 0;background:#ccc;color:#000;padding:.2em 0}.ir{display:block;border:0;text-indent:-999em;overflow:hidden;background-color:transparent;background-repeat:no-repeat;text-align:left;direction:ltr;*line-height:0}.ir br{display:none}.hidden{display:none!important;visibility:hidden}.visuallyhidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.visuallyhidden.focusable:active,.visuallyhidden.focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}.invisible{visibility:hidden}.relative{position:relative}big,small{font-size:100%}@media print{body,html,section{background:none!important}*{box-shadow:none!important;text-shadow:none!important;filter:none!important;-ms-filter:none!important}a,a:visited{text-decoration:underline}.ir a:after,a[href^="#"]:after,a[href^="javascript:"]:after{content:""}blockquote,pre{page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}@page{margin:.5cm}.rst-content .toctree-wrapper>p.caption,h2,h3,p{orphans:3;widows:3}.rst-content .toctree-wrapper>p.caption,h2,h3{page-break-after:avoid}}.btn,.fa:before,.icon:before,.rst-content .admonition,.rst-content .admonition-title:before,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .code-block-caption .headerlink:before,.rst-content .danger,.rst-content .eqno .headerlink:before,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning,.rst-content code.download span:first-child:before,.rst-content dl dt .headerlink:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content p .headerlink:before,.rst-content table>caption .headerlink:before,.rst-content tt.download span:first-child:before,.wy-alert,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-menu-vertical li.current>a button.toctree-expand:before,.wy-menu-vertical li.on a button.toctree-expand:before,.wy-menu-vertical li button.toctree-expand:before,input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],select,textarea{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}/*! - * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome - * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) - */@font-face{font-family:FontAwesome;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713);src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix&v=4.7.0) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#fontawesomeregular) format("svg");font-weight:400;font-style:normal}.fa,.icon,.rst-content .admonition-title,.rst-content .code-block-caption .headerlink,.rst-content .eqno .headerlink,.rst-content code.download span:first-child,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content p .headerlink,.rst-content table>caption .headerlink,.rst-content tt.download span:first-child,.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand,.wy-menu-vertical li button.toctree-expand{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14286em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14286em;width:2.14286em;top:.14286em;text-align:center}.fa-li.fa-lg{left:-1.85714em}.fa-border{padding:.2em .25em .15em;border:.08em solid #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa-pull-left.icon,.fa.fa-pull-left,.rst-content .code-block-caption .fa-pull-left.headerlink,.rst-content .eqno .fa-pull-left.headerlink,.rst-content .fa-pull-left.admonition-title,.rst-content code.download span.fa-pull-left:first-child,.rst-content dl dt .fa-pull-left.headerlink,.rst-content h1 .fa-pull-left.headerlink,.rst-content h2 .fa-pull-left.headerlink,.rst-content h3 .fa-pull-left.headerlink,.rst-content h4 .fa-pull-left.headerlink,.rst-content h5 .fa-pull-left.headerlink,.rst-content h6 .fa-pull-left.headerlink,.rst-content p .fa-pull-left.headerlink,.rst-content table>caption .fa-pull-left.headerlink,.rst-content tt.download span.fa-pull-left:first-child,.wy-menu-vertical li.current>a button.fa-pull-left.toctree-expand,.wy-menu-vertical li.on a button.fa-pull-left.toctree-expand,.wy-menu-vertical li button.fa-pull-left.toctree-expand{margin-right:.3em}.fa-pull-right.icon,.fa.fa-pull-right,.rst-content .code-block-caption .fa-pull-right.headerlink,.rst-content .eqno .fa-pull-right.headerlink,.rst-content .fa-pull-right.admonition-title,.rst-content code.download span.fa-pull-right:first-child,.rst-content dl dt .fa-pull-right.headerlink,.rst-content h1 .fa-pull-right.headerlink,.rst-content h2 .fa-pull-right.headerlink,.rst-content h3 .fa-pull-right.headerlink,.rst-content h4 .fa-pull-right.headerlink,.rst-content h5 .fa-pull-right.headerlink,.rst-content h6 .fa-pull-right.headerlink,.rst-content p .fa-pull-right.headerlink,.rst-content table>caption .fa-pull-right.headerlink,.rst-content tt.download span.fa-pull-right:first-child,.wy-menu-vertical li.current>a button.fa-pull-right.toctree-expand,.wy-menu-vertical li.on a button.fa-pull-right.toctree-expand,.wy-menu-vertical li button.fa-pull-right.toctree-expand{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left,.pull-left.icon,.rst-content .code-block-caption .pull-left.headerlink,.rst-content .eqno .pull-left.headerlink,.rst-content .pull-left.admonition-title,.rst-content code.download span.pull-left:first-child,.rst-content dl dt .pull-left.headerlink,.rst-content h1 .pull-left.headerlink,.rst-content h2 .pull-left.headerlink,.rst-content h3 .pull-left.headerlink,.rst-content h4 .pull-left.headerlink,.rst-content h5 .pull-left.headerlink,.rst-content h6 .pull-left.headerlink,.rst-content p .pull-left.headerlink,.rst-content table>caption .pull-left.headerlink,.rst-content tt.download span.pull-left:first-child,.wy-menu-vertical li.current>a button.pull-left.toctree-expand,.wy-menu-vertical li.on a button.pull-left.toctree-expand,.wy-menu-vertical li button.pull-left.toctree-expand{margin-right:.3em}.fa.pull-right,.pull-right.icon,.rst-content .code-block-caption .pull-right.headerlink,.rst-content .eqno .pull-right.headerlink,.rst-content .pull-right.admonition-title,.rst-content code.download span.pull-right:first-child,.rst-content dl dt .pull-right.headerlink,.rst-content h1 .pull-right.headerlink,.rst-content h2 .pull-right.headerlink,.rst-content h3 .pull-right.headerlink,.rst-content h4 .pull-right.headerlink,.rst-content h5 .pull-right.headerlink,.rst-content h6 .pull-right.headerlink,.rst-content p .pull-right.headerlink,.rst-content table>caption .pull-right.headerlink,.rst-content tt.download span.pull-right:first-child,.wy-menu-vertical li.current>a button.pull-right.toctree-expand,.wy-menu-vertical li.on a button.pull-right.toctree-expand,.wy-menu-vertical li button.pull-right.toctree-expand{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);-ms-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scaleY(-1);-ms-transform:scaleY(-1);transform:scaleY(-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:""}.fa-music:before{content:""}.fa-search:before,.icon-search:before{content:""}.fa-envelope-o:before{content:""}.fa-heart:before{content:""}.fa-star:before{content:""}.fa-star-o:before{content:""}.fa-user:before{content:""}.fa-film:before{content:""}.fa-th-large:before{content:""}.fa-th:before{content:""}.fa-th-list:before{content:""}.fa-check:before{content:""}.fa-close:before,.fa-remove:before,.fa-times:before{content:""}.fa-search-plus:before{content:""}.fa-search-minus:before{content:""}.fa-power-off:before{content:""}.fa-signal:before{content:""}.fa-cog:before,.fa-gear:before{content:""}.fa-trash-o:before{content:""}.fa-home:before,.icon-home:before{content:""}.fa-file-o:before{content:""}.fa-clock-o:before{content:""}.fa-road:before{content:""}.fa-download:before,.rst-content code.download span:first-child:before,.rst-content tt.download span:first-child:before{content:""}.fa-arrow-circle-o-down:before{content:""}.fa-arrow-circle-o-up:before{content:""}.fa-inbox:before{content:""}.fa-play-circle-o:before{content:""}.fa-repeat:before,.fa-rotate-right:before{content:""}.fa-refresh:before{content:""}.fa-list-alt:before{content:""}.fa-lock:before{content:""}.fa-flag:before{content:""}.fa-headphones:before{content:""}.fa-volume-off:before{content:""}.fa-volume-down:before{content:""}.fa-volume-up:before{content:""}.fa-qrcode:before{content:""}.fa-barcode:before{content:""}.fa-tag:before{content:""}.fa-tags:before{content:""}.fa-book:before,.icon-book:before{content:""}.fa-bookmark:before{content:""}.fa-print:before{content:""}.fa-camera:before{content:""}.fa-font:before{content:""}.fa-bold:before{content:""}.fa-italic:before{content:""}.fa-text-height:before{content:""}.fa-text-width:before{content:""}.fa-align-left:before{content:""}.fa-align-center:before{content:""}.fa-align-right:before{content:""}.fa-align-justify:before{content:""}.fa-list:before{content:""}.fa-dedent:before,.fa-outdent:before{content:""}.fa-indent:before{content:""}.fa-video-camera:before{content:""}.fa-image:before,.fa-photo:before,.fa-picture-o:before{content:""}.fa-pencil:before{content:""}.fa-map-marker:before{content:""}.fa-adjust:before{content:""}.fa-tint:before{content:""}.fa-edit:before,.fa-pencil-square-o:before{content:""}.fa-share-square-o:before{content:""}.fa-check-square-o:before{content:""}.fa-arrows:before{content:""}.fa-step-backward:before{content:""}.fa-fast-backward:before{content:""}.fa-backward:before{content:""}.fa-play:before{content:""}.fa-pause:before{content:""}.fa-stop:before{content:""}.fa-forward:before{content:""}.fa-fast-forward:before{content:""}.fa-step-forward:before{content:""}.fa-eject:before{content:""}.fa-chevron-left:before{content:""}.fa-chevron-right:before{content:""}.fa-plus-circle:before{content:""}.fa-minus-circle:before{content:""}.fa-times-circle:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before{content:""}.fa-check-circle:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before{content:""}.fa-question-circle:before{content:""}.fa-info-circle:before{content:""}.fa-crosshairs:before{content:""}.fa-times-circle-o:before{content:""}.fa-check-circle-o:before{content:""}.fa-ban:before{content:""}.fa-arrow-left:before{content:""}.fa-arrow-right:before{content:""}.fa-arrow-up:before{content:""}.fa-arrow-down:before{content:""}.fa-mail-forward:before,.fa-share:before{content:""}.fa-expand:before{content:""}.fa-compress:before{content:""}.fa-plus:before{content:""}.fa-minus:before{content:""}.fa-asterisk:before{content:""}.fa-exclamation-circle:before,.rst-content .admonition-title:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before{content:""}.fa-gift:before{content:""}.fa-leaf:before{content:""}.fa-fire:before,.icon-fire:before{content:""}.fa-eye:before{content:""}.fa-eye-slash:before{content:""}.fa-exclamation-triangle:before,.fa-warning:before{content:""}.fa-plane:before{content:""}.fa-calendar:before{content:""}.fa-random:before{content:""}.fa-comment:before{content:""}.fa-magnet:before{content:""}.fa-chevron-up:before{content:""}.fa-chevron-down:before{content:""}.fa-retweet:before{content:""}.fa-shopping-cart:before{content:""}.fa-folder:before{content:""}.fa-folder-open:before{content:""}.fa-arrows-v:before{content:""}.fa-arrows-h:before{content:""}.fa-bar-chart-o:before,.fa-bar-chart:before{content:""}.fa-twitter-square:before{content:""}.fa-facebook-square:before{content:""}.fa-camera-retro:before{content:""}.fa-key:before{content:""}.fa-cogs:before,.fa-gears:before{content:""}.fa-comments:before{content:""}.fa-thumbs-o-up:before{content:""}.fa-thumbs-o-down:before{content:""}.fa-star-half:before{content:""}.fa-heart-o:before{content:""}.fa-sign-out:before{content:""}.fa-linkedin-square:before{content:""}.fa-thumb-tack:before{content:""}.fa-external-link:before{content:""}.fa-sign-in:before{content:""}.fa-trophy:before{content:""}.fa-github-square:before{content:""}.fa-upload:before{content:""}.fa-lemon-o:before{content:""}.fa-phone:before{content:""}.fa-square-o:before{content:""}.fa-bookmark-o:before{content:""}.fa-phone-square:before{content:""}.fa-twitter:before{content:""}.fa-facebook-f:before,.fa-facebook:before{content:""}.fa-github:before,.icon-github:before{content:""}.fa-unlock:before{content:""}.fa-credit-card:before{content:""}.fa-feed:before,.fa-rss:before{content:""}.fa-hdd-o:before{content:""}.fa-bullhorn:before{content:""}.fa-bell:before{content:""}.fa-certificate:before{content:""}.fa-hand-o-right:before{content:""}.fa-hand-o-left:before{content:""}.fa-hand-o-up:before{content:""}.fa-hand-o-down:before{content:""}.fa-arrow-circle-left:before,.icon-circle-arrow-left:before{content:""}.fa-arrow-circle-right:before,.icon-circle-arrow-right:before{content:""}.fa-arrow-circle-up:before{content:""}.fa-arrow-circle-down:before{content:""}.fa-globe:before{content:""}.fa-wrench:before{content:""}.fa-tasks:before{content:""}.fa-filter:before{content:""}.fa-briefcase:before{content:""}.fa-arrows-alt:before{content:""}.fa-group:before,.fa-users:before{content:""}.fa-chain:before,.fa-link:before,.icon-link:before{content:""}.fa-cloud:before{content:""}.fa-flask:before{content:""}.fa-cut:before,.fa-scissors:before{content:""}.fa-copy:before,.fa-files-o:before{content:""}.fa-paperclip:before{content:""}.fa-floppy-o:before,.fa-save:before{content:""}.fa-square:before{content:""}.fa-bars:before,.fa-navicon:before,.fa-reorder:before{content:""}.fa-list-ul:before{content:""}.fa-list-ol:before{content:""}.fa-strikethrough:before{content:""}.fa-underline:before{content:""}.fa-table:before{content:""}.fa-magic:before{content:""}.fa-truck:before{content:""}.fa-pinterest:before{content:""}.fa-pinterest-square:before{content:""}.fa-google-plus-square:before{content:""}.fa-google-plus:before{content:""}.fa-money:before{content:""}.fa-caret-down:before,.icon-caret-down:before,.wy-dropdown .caret:before{content:""}.fa-caret-up:before{content:""}.fa-caret-left:before{content:""}.fa-caret-right:before{content:""}.fa-columns:before{content:""}.fa-sort:before,.fa-unsorted:before{content:""}.fa-sort-desc:before,.fa-sort-down:before{content:""}.fa-sort-asc:before,.fa-sort-up:before{content:""}.fa-envelope:before{content:""}.fa-linkedin:before{content:""}.fa-rotate-left:before,.fa-undo:before{content:""}.fa-gavel:before,.fa-legal:before{content:""}.fa-dashboard:before,.fa-tachometer:before{content:""}.fa-comment-o:before{content:""}.fa-comments-o:before{content:""}.fa-bolt:before,.fa-flash:before{content:""}.fa-sitemap:before{content:""}.fa-umbrella:before{content:""}.fa-clipboard:before,.fa-paste:before{content:""}.fa-lightbulb-o:before{content:""}.fa-exchange:before{content:""}.fa-cloud-download:before{content:""}.fa-cloud-upload:before{content:""}.fa-user-md:before{content:""}.fa-stethoscope:before{content:""}.fa-suitcase:before{content:""}.fa-bell-o:before{content:""}.fa-coffee:before{content:""}.fa-cutlery:before{content:""}.fa-file-text-o:before{content:""}.fa-building-o:before{content:""}.fa-hospital-o:before{content:""}.fa-ambulance:before{content:""}.fa-medkit:before{content:""}.fa-fighter-jet:before{content:""}.fa-beer:before{content:""}.fa-h-square:before{content:""}.fa-plus-square:before{content:""}.fa-angle-double-left:before{content:""}.fa-angle-double-right:before{content:""}.fa-angle-double-up:before{content:""}.fa-angle-double-down:before{content:""}.fa-angle-left:before{content:""}.fa-angle-right:before{content:""}.fa-angle-up:before{content:""}.fa-angle-down:before{content:""}.fa-desktop:before{content:""}.fa-laptop:before{content:""}.fa-tablet:before{content:""}.fa-mobile-phone:before,.fa-mobile:before{content:""}.fa-circle-o:before{content:""}.fa-quote-left:before{content:""}.fa-quote-right:before{content:""}.fa-spinner:before{content:""}.fa-circle:before{content:""}.fa-mail-reply:before,.fa-reply:before{content:""}.fa-github-alt:before{content:""}.fa-folder-o:before{content:""}.fa-folder-open-o:before{content:""}.fa-smile-o:before{content:""}.fa-frown-o:before{content:""}.fa-meh-o:before{content:""}.fa-gamepad:before{content:""}.fa-keyboard-o:before{content:""}.fa-flag-o:before{content:""}.fa-flag-checkered:before{content:""}.fa-terminal:before{content:""}.fa-code:before{content:""}.fa-mail-reply-all:before,.fa-reply-all:before{content:""}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:""}.fa-location-arrow:before{content:""}.fa-crop:before{content:""}.fa-code-fork:before{content:""}.fa-chain-broken:before,.fa-unlink:before{content:""}.fa-question:before{content:""}.fa-info:before{content:""}.fa-exclamation:before{content:""}.fa-superscript:before{content:""}.fa-subscript:before{content:""}.fa-eraser:before{content:""}.fa-puzzle-piece:before{content:""}.fa-microphone:before{content:""}.fa-microphone-slash:before{content:""}.fa-shield:before{content:""}.fa-calendar-o:before{content:""}.fa-fire-extinguisher:before{content:""}.fa-rocket:before{content:""}.fa-maxcdn:before{content:""}.fa-chevron-circle-left:before{content:""}.fa-chevron-circle-right:before{content:""}.fa-chevron-circle-up:before{content:""}.fa-chevron-circle-down:before{content:""}.fa-html5:before{content:""}.fa-css3:before{content:""}.fa-anchor:before{content:""}.fa-unlock-alt:before{content:""}.fa-bullseye:before{content:""}.fa-ellipsis-h:before{content:""}.fa-ellipsis-v:before{content:""}.fa-rss-square:before{content:""}.fa-play-circle:before{content:""}.fa-ticket:before{content:""}.fa-minus-square:before{content:""}.fa-minus-square-o:before,.wy-menu-vertical li.current>a button.toctree-expand:before,.wy-menu-vertical li.on a button.toctree-expand:before{content:""}.fa-level-up:before{content:""}.fa-level-down:before{content:""}.fa-check-square:before{content:""}.fa-pencil-square:before{content:""}.fa-external-link-square:before{content:""}.fa-share-square:before{content:""}.fa-compass:before{content:""}.fa-caret-square-o-down:before,.fa-toggle-down:before{content:""}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:""}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:""}.fa-eur:before,.fa-euro:before{content:""}.fa-gbp:before{content:""}.fa-dollar:before,.fa-usd:before{content:""}.fa-inr:before,.fa-rupee:before{content:""}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen:before{content:""}.fa-rouble:before,.fa-rub:before,.fa-ruble:before{content:""}.fa-krw:before,.fa-won:before{content:""}.fa-bitcoin:before,.fa-btc:before{content:""}.fa-file:before{content:""}.fa-file-text:before{content:""}.fa-sort-alpha-asc:before{content:""}.fa-sort-alpha-desc:before{content:""}.fa-sort-amount-asc:before{content:""}.fa-sort-amount-desc:before{content:""}.fa-sort-numeric-asc:before{content:""}.fa-sort-numeric-desc:before{content:""}.fa-thumbs-up:before{content:""}.fa-thumbs-down:before{content:""}.fa-youtube-square:before{content:""}.fa-youtube:before{content:""}.fa-xing:before{content:""}.fa-xing-square:before{content:""}.fa-youtube-play:before{content:""}.fa-dropbox:before{content:""}.fa-stack-overflow:before{content:""}.fa-instagram:before{content:""}.fa-flickr:before{content:""}.fa-adn:before{content:""}.fa-bitbucket:before,.icon-bitbucket:before{content:""}.fa-bitbucket-square:before{content:""}.fa-tumblr:before{content:""}.fa-tumblr-square:before{content:""}.fa-long-arrow-down:before{content:""}.fa-long-arrow-up:before{content:""}.fa-long-arrow-left:before{content:""}.fa-long-arrow-right:before{content:""}.fa-apple:before{content:""}.fa-windows:before{content:""}.fa-android:before{content:""}.fa-linux:before{content:""}.fa-dribbble:before{content:""}.fa-skype:before{content:""}.fa-foursquare:before{content:""}.fa-trello:before{content:""}.fa-female:before{content:""}.fa-male:before{content:""}.fa-gittip:before,.fa-gratipay:before{content:""}.fa-sun-o:before{content:""}.fa-moon-o:before{content:""}.fa-archive:before{content:""}.fa-bug:before{content:""}.fa-vk:before{content:""}.fa-weibo:before{content:""}.fa-renren:before{content:""}.fa-pagelines:before{content:""}.fa-stack-exchange:before{content:""}.fa-arrow-circle-o-right:before{content:""}.fa-arrow-circle-o-left:before{content:""}.fa-caret-square-o-left:before,.fa-toggle-left:before{content:""}.fa-dot-circle-o:before{content:""}.fa-wheelchair:before{content:""}.fa-vimeo-square:before{content:""}.fa-try:before,.fa-turkish-lira:before{content:""}.fa-plus-square-o:before,.wy-menu-vertical li button.toctree-expand:before{content:""}.fa-space-shuttle:before{content:""}.fa-slack:before{content:""}.fa-envelope-square:before{content:""}.fa-wordpress:before{content:""}.fa-openid:before{content:""}.fa-bank:before,.fa-institution:before,.fa-university:before{content:""}.fa-graduation-cap:before,.fa-mortar-board:before{content:""}.fa-yahoo:before{content:""}.fa-google:before{content:""}.fa-reddit:before{content:""}.fa-reddit-square:before{content:""}.fa-stumbleupon-circle:before{content:""}.fa-stumbleupon:before{content:""}.fa-delicious:before{content:""}.fa-digg:before{content:""}.fa-pied-piper-pp:before{content:""}.fa-pied-piper-alt:before{content:""}.fa-drupal:before{content:""}.fa-joomla:before{content:""}.fa-language:before{content:""}.fa-fax:before{content:""}.fa-building:before{content:""}.fa-child:before{content:""}.fa-paw:before{content:""}.fa-spoon:before{content:""}.fa-cube:before{content:""}.fa-cubes:before{content:""}.fa-behance:before{content:""}.fa-behance-square:before{content:""}.fa-steam:before{content:""}.fa-steam-square:before{content:""}.fa-recycle:before{content:""}.fa-automobile:before,.fa-car:before{content:""}.fa-cab:before,.fa-taxi:before{content:""}.fa-tree:before{content:""}.fa-spotify:before{content:""}.fa-deviantart:before{content:""}.fa-soundcloud:before{content:""}.fa-database:before{content:""}.fa-file-pdf-o:before{content:""}.fa-file-word-o:before{content:""}.fa-file-excel-o:before{content:""}.fa-file-powerpoint-o:before{content:""}.fa-file-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:""}.fa-file-archive-o:before,.fa-file-zip-o:before{content:""}.fa-file-audio-o:before,.fa-file-sound-o:before{content:""}.fa-file-movie-o:before,.fa-file-video-o:before{content:""}.fa-file-code-o:before{content:""}.fa-vine:before{content:""}.fa-codepen:before{content:""}.fa-jsfiddle:before{content:""}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-ring:before,.fa-life-saver:before,.fa-support:before{content:""}.fa-circle-o-notch:before{content:""}.fa-ra:before,.fa-rebel:before,.fa-resistance:before{content:""}.fa-empire:before,.fa-ge:before{content:""}.fa-git-square:before{content:""}.fa-git:before{content:""}.fa-hacker-news:before,.fa-y-combinator-square:before,.fa-yc-square:before{content:""}.fa-tencent-weibo:before{content:""}.fa-qq:before{content:""}.fa-wechat:before,.fa-weixin:before{content:""}.fa-paper-plane:before,.fa-send:before{content:""}.fa-paper-plane-o:before,.fa-send-o:before{content:""}.fa-history:before{content:""}.fa-circle-thin:before{content:""}.fa-header:before{content:""}.fa-paragraph:before{content:""}.fa-sliders:before{content:""}.fa-share-alt:before{content:""}.fa-share-alt-square:before{content:""}.fa-bomb:before{content:""}.fa-futbol-o:before,.fa-soccer-ball-o:before{content:""}.fa-tty:before{content:""}.fa-binoculars:before{content:""}.fa-plug:before{content:""}.fa-slideshare:before{content:""}.fa-twitch:before{content:""}.fa-yelp:before{content:""}.fa-newspaper-o:before{content:""}.fa-wifi:before{content:""}.fa-calculator:before{content:""}.fa-paypal:before{content:""}.fa-google-wallet:before{content:""}.fa-cc-visa:before{content:""}.fa-cc-mastercard:before{content:""}.fa-cc-discover:before{content:""}.fa-cc-amex:before{content:""}.fa-cc-paypal:before{content:""}.fa-cc-stripe:before{content:""}.fa-bell-slash:before{content:""}.fa-bell-slash-o:before{content:""}.fa-trash:before{content:""}.fa-copyright:before{content:""}.fa-at:before{content:""}.fa-eyedropper:before{content:""}.fa-paint-brush:before{content:""}.fa-birthday-cake:before{content:""}.fa-area-chart:before{content:""}.fa-pie-chart:before{content:""}.fa-line-chart:before{content:""}.fa-lastfm:before{content:""}.fa-lastfm-square:before{content:""}.fa-toggle-off:before{content:""}.fa-toggle-on:before{content:""}.fa-bicycle:before{content:""}.fa-bus:before{content:""}.fa-ioxhost:before{content:""}.fa-angellist:before{content:""}.fa-cc:before{content:""}.fa-ils:before,.fa-shekel:before,.fa-sheqel:before{content:""}.fa-meanpath:before{content:""}.fa-buysellads:before{content:""}.fa-connectdevelop:before{content:""}.fa-dashcube:before{content:""}.fa-forumbee:before{content:""}.fa-leanpub:before{content:""}.fa-sellsy:before{content:""}.fa-shirtsinbulk:before{content:""}.fa-simplybuilt:before{content:""}.fa-skyatlas:before{content:""}.fa-cart-plus:before{content:""}.fa-cart-arrow-down:before{content:""}.fa-diamond:before{content:""}.fa-ship:before{content:""}.fa-user-secret:before{content:""}.fa-motorcycle:before{content:""}.fa-street-view:before{content:""}.fa-heartbeat:before{content:""}.fa-venus:before{content:""}.fa-mars:before{content:""}.fa-mercury:before{content:""}.fa-intersex:before,.fa-transgender:before{content:""}.fa-transgender-alt:before{content:""}.fa-venus-double:before{content:""}.fa-mars-double:before{content:""}.fa-venus-mars:before{content:""}.fa-mars-stroke:before{content:""}.fa-mars-stroke-v:before{content:""}.fa-mars-stroke-h:before{content:""}.fa-neuter:before{content:""}.fa-genderless:before{content:""}.fa-facebook-official:before{content:""}.fa-pinterest-p:before{content:""}.fa-whatsapp:before{content:""}.fa-server:before{content:""}.fa-user-plus:before{content:""}.fa-user-times:before{content:""}.fa-bed:before,.fa-hotel:before{content:""}.fa-viacoin:before{content:""}.fa-train:before{content:""}.fa-subway:before{content:""}.fa-medium:before{content:""}.fa-y-combinator:before,.fa-yc:before{content:""}.fa-optin-monster:before{content:""}.fa-opencart:before{content:""}.fa-expeditedssl:before{content:""}.fa-battery-4:before,.fa-battery-full:before,.fa-battery:before{content:""}.fa-battery-3:before,.fa-battery-three-quarters:before{content:""}.fa-battery-2:before,.fa-battery-half:before{content:""}.fa-battery-1:before,.fa-battery-quarter:before{content:""}.fa-battery-0:before,.fa-battery-empty:before{content:""}.fa-mouse-pointer:before{content:""}.fa-i-cursor:before{content:""}.fa-object-group:before{content:""}.fa-object-ungroup:before{content:""}.fa-sticky-note:before{content:""}.fa-sticky-note-o:before{content:""}.fa-cc-jcb:before{content:""}.fa-cc-diners-club:before{content:""}.fa-clone:before{content:""}.fa-balance-scale:before{content:""}.fa-hourglass-o:before{content:""}.fa-hourglass-1:before,.fa-hourglass-start:before{content:""}.fa-hourglass-2:before,.fa-hourglass-half:before{content:""}.fa-hourglass-3:before,.fa-hourglass-end:before{content:""}.fa-hourglass:before{content:""}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:""}.fa-hand-paper-o:before,.fa-hand-stop-o:before{content:""}.fa-hand-scissors-o:before{content:""}.fa-hand-lizard-o:before{content:""}.fa-hand-spock-o:before{content:""}.fa-hand-pointer-o:before{content:""}.fa-hand-peace-o:before{content:""}.fa-trademark:before{content:""}.fa-registered:before{content:""}.fa-creative-commons:before{content:""}.fa-gg:before{content:""}.fa-gg-circle:before{content:""}.fa-tripadvisor:before{content:""}.fa-odnoklassniki:before{content:""}.fa-odnoklassniki-square:before{content:""}.fa-get-pocket:before{content:""}.fa-wikipedia-w:before{content:""}.fa-safari:before{content:""}.fa-chrome:before{content:""}.fa-firefox:before{content:""}.fa-opera:before{content:""}.fa-internet-explorer:before{content:""}.fa-television:before,.fa-tv:before{content:""}.fa-contao:before{content:""}.fa-500px:before{content:""}.fa-amazon:before{content:""}.fa-calendar-plus-o:before{content:""}.fa-calendar-minus-o:before{content:""}.fa-calendar-times-o:before{content:""}.fa-calendar-check-o:before{content:""}.fa-industry:before{content:""}.fa-map-pin:before{content:""}.fa-map-signs:before{content:""}.fa-map-o:before{content:""}.fa-map:before{content:""}.fa-commenting:before{content:""}.fa-commenting-o:before{content:""}.fa-houzz:before{content:""}.fa-vimeo:before{content:""}.fa-black-tie:before{content:""}.fa-fonticons:before{content:""}.fa-reddit-alien:before{content:""}.fa-edge:before{content:""}.fa-credit-card-alt:before{content:""}.fa-codiepie:before{content:""}.fa-modx:before{content:""}.fa-fort-awesome:before{content:""}.fa-usb:before{content:""}.fa-product-hunt:before{content:""}.fa-mixcloud:before{content:""}.fa-scribd:before{content:""}.fa-pause-circle:before{content:""}.fa-pause-circle-o:before{content:""}.fa-stop-circle:before{content:""}.fa-stop-circle-o:before{content:""}.fa-shopping-bag:before{content:""}.fa-shopping-basket:before{content:""}.fa-hashtag:before{content:""}.fa-bluetooth:before{content:""}.fa-bluetooth-b:before{content:""}.fa-percent:before{content:""}.fa-gitlab:before,.icon-gitlab:before{content:""}.fa-wpbeginner:before{content:""}.fa-wpforms:before{content:""}.fa-envira:before{content:""}.fa-universal-access:before{content:""}.fa-wheelchair-alt:before{content:""}.fa-question-circle-o:before{content:""}.fa-blind:before{content:""}.fa-audio-description:before{content:""}.fa-volume-control-phone:before{content:""}.fa-braille:before{content:""}.fa-assistive-listening-systems:before{content:""}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before{content:""}.fa-deaf:before,.fa-deafness:before,.fa-hard-of-hearing:before{content:""}.fa-glide:before{content:""}.fa-glide-g:before{content:""}.fa-sign-language:before,.fa-signing:before{content:""}.fa-low-vision:before{content:""}.fa-viadeo:before{content:""}.fa-viadeo-square:before{content:""}.fa-snapchat:before{content:""}.fa-snapchat-ghost:before{content:""}.fa-snapchat-square:before{content:""}.fa-pied-piper:before{content:""}.fa-first-order:before{content:""}.fa-yoast:before{content:""}.fa-themeisle:before{content:""}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:""}.fa-fa:before,.fa-font-awesome:before{content:""}.fa-handshake-o:before{content:""}.fa-envelope-open:before{content:""}.fa-envelope-open-o:before{content:""}.fa-linode:before{content:""}.fa-address-book:before{content:""}.fa-address-book-o:before{content:""}.fa-address-card:before,.fa-vcard:before{content:""}.fa-address-card-o:before,.fa-vcard-o:before{content:""}.fa-user-circle:before{content:""}.fa-user-circle-o:before{content:""}.fa-user-o:before{content:""}.fa-id-badge:before{content:""}.fa-drivers-license:before,.fa-id-card:before{content:""}.fa-drivers-license-o:before,.fa-id-card-o:before{content:""}.fa-quora:before{content:""}.fa-free-code-camp:before{content:""}.fa-telegram:before{content:""}.fa-thermometer-4:before,.fa-thermometer-full:before,.fa-thermometer:before{content:""}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:""}.fa-thermometer-2:before,.fa-thermometer-half:before{content:""}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:""}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:""}.fa-shower:before{content:""}.fa-bath:before,.fa-bathtub:before,.fa-s15:before{content:""}.fa-podcast:before{content:""}.fa-window-maximize:before{content:""}.fa-window-minimize:before{content:""}.fa-window-restore:before{content:""}.fa-times-rectangle:before,.fa-window-close:before{content:""}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:""}.fa-bandcamp:before{content:""}.fa-grav:before{content:""}.fa-etsy:before{content:""}.fa-imdb:before{content:""}.fa-ravelry:before{content:""}.fa-eercast:before{content:""}.fa-microchip:before{content:""}.fa-snowflake-o:before{content:""}.fa-superpowers:before{content:""}.fa-wpexplorer:before{content:""}.fa-meetup:before{content:""}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.fa,.icon,.rst-content .admonition-title,.rst-content .code-block-caption .headerlink,.rst-content .eqno .headerlink,.rst-content code.download span:first-child,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content p .headerlink,.rst-content table>caption .headerlink,.rst-content tt.download span:first-child,.wy-dropdown .caret,.wy-inline-validate.wy-inline-validate-danger .wy-input-context,.wy-inline-validate.wy-inline-validate-info .wy-input-context,.wy-inline-validate.wy-inline-validate-success .wy-input-context,.wy-inline-validate.wy-inline-validate-warning .wy-input-context,.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand,.wy-menu-vertical li button.toctree-expand{font-family:inherit}.fa:before,.icon:before,.rst-content .admonition-title:before,.rst-content .code-block-caption .headerlink:before,.rst-content .eqno .headerlink:before,.rst-content code.download span:first-child:before,.rst-content dl dt .headerlink:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content p .headerlink:before,.rst-content table>caption .headerlink:before,.rst-content tt.download span:first-child:before,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-menu-vertical li.current>a button.toctree-expand:before,.wy-menu-vertical li.on a button.toctree-expand:before,.wy-menu-vertical li button.toctree-expand:before{font-family:FontAwesome;display:inline-block;font-style:normal;font-weight:400;line-height:1;text-decoration:inherit}.rst-content .code-block-caption a .headerlink,.rst-content .eqno a .headerlink,.rst-content a .admonition-title,.rst-content code.download a span:first-child,.rst-content dl dt a .headerlink,.rst-content h1 a .headerlink,.rst-content h2 a .headerlink,.rst-content h3 a .headerlink,.rst-content h4 a .headerlink,.rst-content h5 a .headerlink,.rst-content h6 a .headerlink,.rst-content p.caption a .headerlink,.rst-content p a .headerlink,.rst-content table>caption a .headerlink,.rst-content tt.download a span:first-child,.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand,.wy-menu-vertical li a button.toctree-expand,a .fa,a .icon,a .rst-content .admonition-title,a .rst-content .code-block-caption .headerlink,a .rst-content .eqno .headerlink,a .rst-content code.download span:first-child,a .rst-content dl dt .headerlink,a .rst-content h1 .headerlink,a .rst-content h2 .headerlink,a .rst-content h3 .headerlink,a .rst-content h4 .headerlink,a .rst-content h5 .headerlink,a .rst-content h6 .headerlink,a .rst-content p.caption .headerlink,a .rst-content p .headerlink,a .rst-content table>caption .headerlink,a .rst-content tt.download span:first-child,a .wy-menu-vertical li button.toctree-expand{display:inline-block;text-decoration:inherit}.btn .fa,.btn .icon,.btn .rst-content .admonition-title,.btn .rst-content .code-block-caption .headerlink,.btn .rst-content .eqno .headerlink,.btn .rst-content code.download span:first-child,.btn .rst-content dl dt .headerlink,.btn .rst-content h1 .headerlink,.btn .rst-content h2 .headerlink,.btn .rst-content h3 .headerlink,.btn .rst-content h4 .headerlink,.btn .rst-content h5 .headerlink,.btn .rst-content h6 .headerlink,.btn .rst-content p .headerlink,.btn .rst-content table>caption .headerlink,.btn .rst-content tt.download span:first-child,.btn .wy-menu-vertical li.current>a button.toctree-expand,.btn .wy-menu-vertical li.on a button.toctree-expand,.btn .wy-menu-vertical li button.toctree-expand,.nav .fa,.nav .icon,.nav .rst-content .admonition-title,.nav .rst-content .code-block-caption .headerlink,.nav .rst-content .eqno .headerlink,.nav .rst-content code.download span:first-child,.nav .rst-content dl dt .headerlink,.nav .rst-content h1 .headerlink,.nav .rst-content h2 .headerlink,.nav .rst-content h3 .headerlink,.nav .rst-content h4 .headerlink,.nav .rst-content h5 .headerlink,.nav .rst-content h6 .headerlink,.nav .rst-content p .headerlink,.nav .rst-content table>caption .headerlink,.nav .rst-content tt.download span:first-child,.nav .wy-menu-vertical li.current>a button.toctree-expand,.nav .wy-menu-vertical li.on a button.toctree-expand,.nav .wy-menu-vertical li button.toctree-expand,.rst-content .btn .admonition-title,.rst-content .code-block-caption .btn .headerlink,.rst-content .code-block-caption .nav .headerlink,.rst-content .eqno .btn .headerlink,.rst-content .eqno .nav .headerlink,.rst-content .nav .admonition-title,.rst-content code.download .btn span:first-child,.rst-content code.download .nav span:first-child,.rst-content dl dt .btn .headerlink,.rst-content dl dt .nav .headerlink,.rst-content h1 .btn .headerlink,.rst-content h1 .nav .headerlink,.rst-content h2 .btn .headerlink,.rst-content h2 .nav .headerlink,.rst-content h3 .btn .headerlink,.rst-content h3 .nav .headerlink,.rst-content h4 .btn .headerlink,.rst-content h4 .nav .headerlink,.rst-content h5 .btn .headerlink,.rst-content h5 .nav .headerlink,.rst-content h6 .btn .headerlink,.rst-content h6 .nav .headerlink,.rst-content p .btn .headerlink,.rst-content p .nav .headerlink,.rst-content table>caption .btn .headerlink,.rst-content table>caption .nav .headerlink,.rst-content tt.download .btn span:first-child,.rst-content tt.download .nav span:first-child,.wy-menu-vertical li .btn button.toctree-expand,.wy-menu-vertical li.current>a .btn button.toctree-expand,.wy-menu-vertical li.current>a .nav button.toctree-expand,.wy-menu-vertical li .nav button.toctree-expand,.wy-menu-vertical li.on a .btn button.toctree-expand,.wy-menu-vertical li.on a .nav button.toctree-expand{display:inline}.btn .fa-large.icon,.btn .fa.fa-large,.btn .rst-content .code-block-caption .fa-large.headerlink,.btn .rst-content .eqno .fa-large.headerlink,.btn .rst-content .fa-large.admonition-title,.btn .rst-content code.download span.fa-large:first-child,.btn .rst-content dl dt .fa-large.headerlink,.btn .rst-content h1 .fa-large.headerlink,.btn .rst-content h2 .fa-large.headerlink,.btn .rst-content h3 .fa-large.headerlink,.btn .rst-content h4 .fa-large.headerlink,.btn .rst-content h5 .fa-large.headerlink,.btn .rst-content h6 .fa-large.headerlink,.btn .rst-content p .fa-large.headerlink,.btn .rst-content table>caption .fa-large.headerlink,.btn .rst-content tt.download span.fa-large:first-child,.btn .wy-menu-vertical li button.fa-large.toctree-expand,.nav .fa-large.icon,.nav .fa.fa-large,.nav .rst-content .code-block-caption .fa-large.headerlink,.nav .rst-content .eqno .fa-large.headerlink,.nav .rst-content .fa-large.admonition-title,.nav .rst-content code.download span.fa-large:first-child,.nav .rst-content dl dt .fa-large.headerlink,.nav .rst-content h1 .fa-large.headerlink,.nav .rst-content h2 .fa-large.headerlink,.nav .rst-content h3 .fa-large.headerlink,.nav .rst-content h4 .fa-large.headerlink,.nav .rst-content h5 .fa-large.headerlink,.nav .rst-content h6 .fa-large.headerlink,.nav .rst-content p .fa-large.headerlink,.nav .rst-content table>caption .fa-large.headerlink,.nav .rst-content tt.download span.fa-large:first-child,.nav .wy-menu-vertical li button.fa-large.toctree-expand,.rst-content .btn .fa-large.admonition-title,.rst-content .code-block-caption .btn .fa-large.headerlink,.rst-content .code-block-caption .nav .fa-large.headerlink,.rst-content .eqno .btn .fa-large.headerlink,.rst-content .eqno .nav .fa-large.headerlink,.rst-content .nav .fa-large.admonition-title,.rst-content code.download .btn span.fa-large:first-child,.rst-content code.download .nav span.fa-large:first-child,.rst-content dl dt .btn .fa-large.headerlink,.rst-content dl dt .nav .fa-large.headerlink,.rst-content h1 .btn .fa-large.headerlink,.rst-content h1 .nav .fa-large.headerlink,.rst-content h2 .btn .fa-large.headerlink,.rst-content h2 .nav .fa-large.headerlink,.rst-content h3 .btn .fa-large.headerlink,.rst-content h3 .nav .fa-large.headerlink,.rst-content h4 .btn .fa-large.headerlink,.rst-content h4 .nav .fa-large.headerlink,.rst-content h5 .btn .fa-large.headerlink,.rst-content h5 .nav .fa-large.headerlink,.rst-content h6 .btn .fa-large.headerlink,.rst-content h6 .nav .fa-large.headerlink,.rst-content p .btn .fa-large.headerlink,.rst-content p .nav .fa-large.headerlink,.rst-content table>caption .btn .fa-large.headerlink,.rst-content table>caption .nav .fa-large.headerlink,.rst-content tt.download .btn span.fa-large:first-child,.rst-content tt.download .nav span.fa-large:first-child,.wy-menu-vertical li .btn button.fa-large.toctree-expand,.wy-menu-vertical li .nav button.fa-large.toctree-expand{line-height:.9em}.btn .fa-spin.icon,.btn .fa.fa-spin,.btn .rst-content .code-block-caption .fa-spin.headerlink,.btn .rst-content .eqno .fa-spin.headerlink,.btn .rst-content .fa-spin.admonition-title,.btn .rst-content code.download span.fa-spin:first-child,.btn .rst-content dl dt .fa-spin.headerlink,.btn .rst-content h1 .fa-spin.headerlink,.btn .rst-content h2 .fa-spin.headerlink,.btn .rst-content h3 .fa-spin.headerlink,.btn .rst-content h4 .fa-spin.headerlink,.btn .rst-content h5 .fa-spin.headerlink,.btn .rst-content h6 .fa-spin.headerlink,.btn .rst-content p .fa-spin.headerlink,.btn .rst-content table>caption .fa-spin.headerlink,.btn .rst-content tt.download span.fa-spin:first-child,.btn .wy-menu-vertical li button.fa-spin.toctree-expand,.nav .fa-spin.icon,.nav .fa.fa-spin,.nav .rst-content .code-block-caption .fa-spin.headerlink,.nav .rst-content .eqno .fa-spin.headerlink,.nav .rst-content .fa-spin.admonition-title,.nav .rst-content code.download span.fa-spin:first-child,.nav .rst-content dl dt .fa-spin.headerlink,.nav .rst-content h1 .fa-spin.headerlink,.nav .rst-content h2 .fa-spin.headerlink,.nav .rst-content h3 .fa-spin.headerlink,.nav .rst-content h4 .fa-spin.headerlink,.nav .rst-content h5 .fa-spin.headerlink,.nav .rst-content h6 .fa-spin.headerlink,.nav .rst-content p .fa-spin.headerlink,.nav .rst-content table>caption .fa-spin.headerlink,.nav .rst-content tt.download span.fa-spin:first-child,.nav .wy-menu-vertical li button.fa-spin.toctree-expand,.rst-content .btn .fa-spin.admonition-title,.rst-content .code-block-caption .btn .fa-spin.headerlink,.rst-content .code-block-caption .nav .fa-spin.headerlink,.rst-content .eqno .btn .fa-spin.headerlink,.rst-content .eqno .nav .fa-spin.headerlink,.rst-content .nav .fa-spin.admonition-title,.rst-content code.download .btn span.fa-spin:first-child,.rst-content code.download .nav span.fa-spin:first-child,.rst-content dl dt .btn .fa-spin.headerlink,.rst-content dl dt .nav .fa-spin.headerlink,.rst-content h1 .btn .fa-spin.headerlink,.rst-content h1 .nav .fa-spin.headerlink,.rst-content h2 .btn .fa-spin.headerlink,.rst-content h2 .nav .fa-spin.headerlink,.rst-content h3 .btn .fa-spin.headerlink,.rst-content h3 .nav .fa-spin.headerlink,.rst-content h4 .btn .fa-spin.headerlink,.rst-content h4 .nav .fa-spin.headerlink,.rst-content h5 .btn .fa-spin.headerlink,.rst-content h5 .nav .fa-spin.headerlink,.rst-content h6 .btn .fa-spin.headerlink,.rst-content h6 .nav .fa-spin.headerlink,.rst-content p .btn .fa-spin.headerlink,.rst-content p .nav .fa-spin.headerlink,.rst-content table>caption .btn .fa-spin.headerlink,.rst-content table>caption .nav .fa-spin.headerlink,.rst-content tt.download .btn span.fa-spin:first-child,.rst-content tt.download .nav span.fa-spin:first-child,.wy-menu-vertical li .btn button.fa-spin.toctree-expand,.wy-menu-vertical li .nav button.fa-spin.toctree-expand{display:inline-block}.btn.fa:before,.btn.icon:before,.rst-content .btn.admonition-title:before,.rst-content .code-block-caption .btn.headerlink:before,.rst-content .eqno .btn.headerlink:before,.rst-content code.download span.btn:first-child:before,.rst-content dl dt .btn.headerlink:before,.rst-content h1 .btn.headerlink:before,.rst-content h2 .btn.headerlink:before,.rst-content h3 .btn.headerlink:before,.rst-content h4 .btn.headerlink:before,.rst-content h5 .btn.headerlink:before,.rst-content h6 .btn.headerlink:before,.rst-content p .btn.headerlink:before,.rst-content table>caption .btn.headerlink:before,.rst-content tt.download span.btn:first-child:before,.wy-menu-vertical li button.btn.toctree-expand:before{opacity:.5;-webkit-transition:opacity .05s ease-in;-moz-transition:opacity .05s ease-in;transition:opacity .05s ease-in}.btn.fa:hover:before,.btn.icon:hover:before,.rst-content .btn.admonition-title:hover:before,.rst-content .code-block-caption .btn.headerlink:hover:before,.rst-content .eqno .btn.headerlink:hover:before,.rst-content code.download span.btn:first-child:hover:before,.rst-content dl dt .btn.headerlink:hover:before,.rst-content h1 .btn.headerlink:hover:before,.rst-content h2 .btn.headerlink:hover:before,.rst-content h3 .btn.headerlink:hover:before,.rst-content h4 .btn.headerlink:hover:before,.rst-content h5 .btn.headerlink:hover:before,.rst-content h6 .btn.headerlink:hover:before,.rst-content p .btn.headerlink:hover:before,.rst-content table>caption .btn.headerlink:hover:before,.rst-content tt.download span.btn:first-child:hover:before,.wy-menu-vertical li button.btn.toctree-expand:hover:before{opacity:1}.btn-mini .fa:before,.btn-mini .icon:before,.btn-mini .rst-content .admonition-title:before,.btn-mini .rst-content .code-block-caption .headerlink:before,.btn-mini .rst-content .eqno .headerlink:before,.btn-mini .rst-content code.download span:first-child:before,.btn-mini .rst-content dl dt .headerlink:before,.btn-mini .rst-content h1 .headerlink:before,.btn-mini .rst-content h2 .headerlink:before,.btn-mini .rst-content h3 .headerlink:before,.btn-mini .rst-content h4 .headerlink:before,.btn-mini .rst-content h5 .headerlink:before,.btn-mini .rst-content h6 .headerlink:before,.btn-mini .rst-content p .headerlink:before,.btn-mini .rst-content table>caption .headerlink:before,.btn-mini .rst-content tt.download span:first-child:before,.btn-mini .wy-menu-vertical li button.toctree-expand:before,.rst-content .btn-mini .admonition-title:before,.rst-content .code-block-caption .btn-mini .headerlink:before,.rst-content .eqno .btn-mini .headerlink:before,.rst-content code.download .btn-mini span:first-child:before,.rst-content dl dt .btn-mini .headerlink:before,.rst-content h1 .btn-mini .headerlink:before,.rst-content h2 .btn-mini .headerlink:before,.rst-content h3 .btn-mini .headerlink:before,.rst-content h4 .btn-mini .headerlink:before,.rst-content h5 .btn-mini .headerlink:before,.rst-content h6 .btn-mini .headerlink:before,.rst-content p .btn-mini .headerlink:before,.rst-content table>caption .btn-mini .headerlink:before,.rst-content tt.download .btn-mini span:first-child:before,.wy-menu-vertical li .btn-mini button.toctree-expand:before{font-size:14px;vertical-align:-15%}.rst-content .admonition,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning,.wy-alert{padding:12px;line-height:24px;margin-bottom:24px;background:#e7f2fa}.rst-content .admonition-title,.wy-alert-title{font-weight:700;display:block;color:#fff;background:#6ab0de;padding:6px 12px;margin:-12px -12px 12px}.rst-content .danger,.rst-content .error,.rst-content .wy-alert-danger.admonition,.rst-content .wy-alert-danger.admonition-todo,.rst-content .wy-alert-danger.attention,.rst-content .wy-alert-danger.caution,.rst-content .wy-alert-danger.hint,.rst-content .wy-alert-danger.important,.rst-content .wy-alert-danger.note,.rst-content .wy-alert-danger.seealso,.rst-content .wy-alert-danger.tip,.rst-content .wy-alert-danger.warning,.wy-alert.wy-alert-danger{background:#fdf3f2}.rst-content .danger .admonition-title,.rst-content .danger .wy-alert-title,.rst-content .error .admonition-title,.rst-content .error .wy-alert-title,.rst-content .wy-alert-danger.admonition-todo .admonition-title,.rst-content .wy-alert-danger.admonition-todo .wy-alert-title,.rst-content .wy-alert-danger.admonition .admonition-title,.rst-content .wy-alert-danger.admonition .wy-alert-title,.rst-content .wy-alert-danger.attention .admonition-title,.rst-content .wy-alert-danger.attention .wy-alert-title,.rst-content .wy-alert-danger.caution .admonition-title,.rst-content .wy-alert-danger.caution .wy-alert-title,.rst-content .wy-alert-danger.hint .admonition-title,.rst-content .wy-alert-danger.hint .wy-alert-title,.rst-content .wy-alert-danger.important .admonition-title,.rst-content .wy-alert-danger.important .wy-alert-title,.rst-content .wy-alert-danger.note .admonition-title,.rst-content .wy-alert-danger.note .wy-alert-title,.rst-content .wy-alert-danger.seealso .admonition-title,.rst-content .wy-alert-danger.seealso .wy-alert-title,.rst-content .wy-alert-danger.tip .admonition-title,.rst-content .wy-alert-danger.tip .wy-alert-title,.rst-content .wy-alert-danger.warning .admonition-title,.rst-content .wy-alert-danger.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-danger .admonition-title,.wy-alert.wy-alert-danger .rst-content .admonition-title,.wy-alert.wy-alert-danger .wy-alert-title{background:#f29f97}.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .warning,.rst-content .wy-alert-warning.admonition,.rst-content .wy-alert-warning.danger,.rst-content .wy-alert-warning.error,.rst-content .wy-alert-warning.hint,.rst-content .wy-alert-warning.important,.rst-content .wy-alert-warning.note,.rst-content .wy-alert-warning.seealso,.rst-content .wy-alert-warning.tip,.wy-alert.wy-alert-warning{background:#ffedcc}.rst-content .admonition-todo .admonition-title,.rst-content .admonition-todo .wy-alert-title,.rst-content .attention .admonition-title,.rst-content .attention .wy-alert-title,.rst-content .caution .admonition-title,.rst-content .caution .wy-alert-title,.rst-content .warning .admonition-title,.rst-content .warning .wy-alert-title,.rst-content .wy-alert-warning.admonition .admonition-title,.rst-content .wy-alert-warning.admonition .wy-alert-title,.rst-content .wy-alert-warning.danger .admonition-title,.rst-content .wy-alert-warning.danger .wy-alert-title,.rst-content .wy-alert-warning.error .admonition-title,.rst-content .wy-alert-warning.error .wy-alert-title,.rst-content .wy-alert-warning.hint .admonition-title,.rst-content .wy-alert-warning.hint .wy-alert-title,.rst-content .wy-alert-warning.important .admonition-title,.rst-content .wy-alert-warning.important .wy-alert-title,.rst-content .wy-alert-warning.note .admonition-title,.rst-content .wy-alert-warning.note .wy-alert-title,.rst-content .wy-alert-warning.seealso .admonition-title,.rst-content .wy-alert-warning.seealso .wy-alert-title,.rst-content .wy-alert-warning.tip .admonition-title,.rst-content .wy-alert-warning.tip .wy-alert-title,.rst-content .wy-alert.wy-alert-warning .admonition-title,.wy-alert.wy-alert-warning .rst-content .admonition-title,.wy-alert.wy-alert-warning .wy-alert-title{background:#f0b37e}.rst-content .note,.rst-content .seealso,.rst-content .wy-alert-info.admonition,.rst-content .wy-alert-info.admonition-todo,.rst-content .wy-alert-info.attention,.rst-content .wy-alert-info.caution,.rst-content .wy-alert-info.danger,.rst-content .wy-alert-info.error,.rst-content .wy-alert-info.hint,.rst-content .wy-alert-info.important,.rst-content .wy-alert-info.tip,.rst-content .wy-alert-info.warning,.wy-alert.wy-alert-info{background:#e7f2fa}.rst-content .note .admonition-title,.rst-content .note .wy-alert-title,.rst-content .seealso .admonition-title,.rst-content .seealso .wy-alert-title,.rst-content .wy-alert-info.admonition-todo .admonition-title,.rst-content .wy-alert-info.admonition-todo .wy-alert-title,.rst-content .wy-alert-info.admonition .admonition-title,.rst-content .wy-alert-info.admonition .wy-alert-title,.rst-content .wy-alert-info.attention .admonition-title,.rst-content .wy-alert-info.attention .wy-alert-title,.rst-content .wy-alert-info.caution .admonition-title,.rst-content .wy-alert-info.caution .wy-alert-title,.rst-content .wy-alert-info.danger .admonition-title,.rst-content .wy-alert-info.danger .wy-alert-title,.rst-content .wy-alert-info.error .admonition-title,.rst-content .wy-alert-info.error .wy-alert-title,.rst-content .wy-alert-info.hint .admonition-title,.rst-content .wy-alert-info.hint .wy-alert-title,.rst-content .wy-alert-info.important .admonition-title,.rst-content .wy-alert-info.important .wy-alert-title,.rst-content .wy-alert-info.tip .admonition-title,.rst-content .wy-alert-info.tip .wy-alert-title,.rst-content .wy-alert-info.warning .admonition-title,.rst-content .wy-alert-info.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-info .admonition-title,.wy-alert.wy-alert-info .rst-content .admonition-title,.wy-alert.wy-alert-info .wy-alert-title{background:#6ab0de}.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .wy-alert-success.admonition,.rst-content .wy-alert-success.admonition-todo,.rst-content .wy-alert-success.attention,.rst-content .wy-alert-success.caution,.rst-content .wy-alert-success.danger,.rst-content .wy-alert-success.error,.rst-content .wy-alert-success.note,.rst-content .wy-alert-success.seealso,.rst-content .wy-alert-success.warning,.wy-alert.wy-alert-success{background:#dbfaf4}.rst-content .hint .admonition-title,.rst-content .hint .wy-alert-title,.rst-content .important .admonition-title,.rst-content .important .wy-alert-title,.rst-content .tip .admonition-title,.rst-content .tip .wy-alert-title,.rst-content .wy-alert-success.admonition-todo .admonition-title,.rst-content .wy-alert-success.admonition-todo .wy-alert-title,.rst-content .wy-alert-success.admonition .admonition-title,.rst-content .wy-alert-success.admonition .wy-alert-title,.rst-content .wy-alert-success.attention .admonition-title,.rst-content .wy-alert-success.attention .wy-alert-title,.rst-content .wy-alert-success.caution .admonition-title,.rst-content .wy-alert-success.caution .wy-alert-title,.rst-content .wy-alert-success.danger .admonition-title,.rst-content .wy-alert-success.danger .wy-alert-title,.rst-content .wy-alert-success.error .admonition-title,.rst-content .wy-alert-success.error .wy-alert-title,.rst-content .wy-alert-success.note .admonition-title,.rst-content .wy-alert-success.note .wy-alert-title,.rst-content .wy-alert-success.seealso .admonition-title,.rst-content .wy-alert-success.seealso .wy-alert-title,.rst-content .wy-alert-success.warning .admonition-title,.rst-content .wy-alert-success.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-success .admonition-title,.wy-alert.wy-alert-success .rst-content .admonition-title,.wy-alert.wy-alert-success .wy-alert-title{background:#1abc9c}.rst-content .wy-alert-neutral.admonition,.rst-content .wy-alert-neutral.admonition-todo,.rst-content .wy-alert-neutral.attention,.rst-content .wy-alert-neutral.caution,.rst-content .wy-alert-neutral.danger,.rst-content .wy-alert-neutral.error,.rst-content .wy-alert-neutral.hint,.rst-content .wy-alert-neutral.important,.rst-content .wy-alert-neutral.note,.rst-content .wy-alert-neutral.seealso,.rst-content .wy-alert-neutral.tip,.rst-content .wy-alert-neutral.warning,.wy-alert.wy-alert-neutral{background:#f3f6f6}.rst-content .wy-alert-neutral.admonition-todo .admonition-title,.rst-content .wy-alert-neutral.admonition-todo .wy-alert-title,.rst-content .wy-alert-neutral.admonition .admonition-title,.rst-content .wy-alert-neutral.admonition .wy-alert-title,.rst-content .wy-alert-neutral.attention .admonition-title,.rst-content .wy-alert-neutral.attention .wy-alert-title,.rst-content .wy-alert-neutral.caution .admonition-title,.rst-content .wy-alert-neutral.caution .wy-alert-title,.rst-content .wy-alert-neutral.danger .admonition-title,.rst-content .wy-alert-neutral.danger .wy-alert-title,.rst-content .wy-alert-neutral.error .admonition-title,.rst-content .wy-alert-neutral.error .wy-alert-title,.rst-content .wy-alert-neutral.hint .admonition-title,.rst-content .wy-alert-neutral.hint .wy-alert-title,.rst-content .wy-alert-neutral.important .admonition-title,.rst-content .wy-alert-neutral.important .wy-alert-title,.rst-content .wy-alert-neutral.note .admonition-title,.rst-content .wy-alert-neutral.note .wy-alert-title,.rst-content .wy-alert-neutral.seealso .admonition-title,.rst-content .wy-alert-neutral.seealso .wy-alert-title,.rst-content .wy-alert-neutral.tip .admonition-title,.rst-content .wy-alert-neutral.tip .wy-alert-title,.rst-content .wy-alert-neutral.warning .admonition-title,.rst-content .wy-alert-neutral.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-neutral .admonition-title,.wy-alert.wy-alert-neutral .rst-content .admonition-title,.wy-alert.wy-alert-neutral .wy-alert-title{color:#404040;background:#e1e4e5}.rst-content .wy-alert-neutral.admonition-todo a,.rst-content .wy-alert-neutral.admonition a,.rst-content .wy-alert-neutral.attention a,.rst-content .wy-alert-neutral.caution a,.rst-content .wy-alert-neutral.danger a,.rst-content .wy-alert-neutral.error a,.rst-content .wy-alert-neutral.hint a,.rst-content .wy-alert-neutral.important a,.rst-content .wy-alert-neutral.note a,.rst-content .wy-alert-neutral.seealso a,.rst-content .wy-alert-neutral.tip a,.rst-content .wy-alert-neutral.warning a,.wy-alert.wy-alert-neutral a{color:#2980b9}.rst-content .admonition-todo p:last-child,.rst-content .admonition p:last-child,.rst-content .attention p:last-child,.rst-content .caution p:last-child,.rst-content .danger p:last-child,.rst-content .error p:last-child,.rst-content .hint p:last-child,.rst-content .important p:last-child,.rst-content .note p:last-child,.rst-content .seealso p:last-child,.rst-content .tip p:last-child,.rst-content .warning p:last-child,.wy-alert p:last-child{margin-bottom:0}.wy-tray-container{position:fixed;bottom:0;left:0;z-index:600}.wy-tray-container li{display:block;width:300px;background:transparent;color:#fff;text-align:center;box-shadow:0 5px 5px 0 rgba(0,0,0,.1);padding:0 24px;min-width:20%;opacity:0;height:0;line-height:56px;overflow:hidden;-webkit-transition:all .3s ease-in;-moz-transition:all .3s ease-in;transition:all .3s ease-in}.wy-tray-container li.wy-tray-item-success{background:#27ae60}.wy-tray-container li.wy-tray-item-info{background:#2980b9}.wy-tray-container li.wy-tray-item-warning{background:#e67e22}.wy-tray-container li.wy-tray-item-danger{background:#e74c3c}.wy-tray-container li.on{opacity:1;height:56px}@media screen and (max-width:768px){.wy-tray-container{bottom:auto;top:0;width:100%}.wy-tray-container li{width:100%}}button{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle;cursor:pointer;line-height:normal;-webkit-appearance:button;*overflow:visible}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}button[disabled]{cursor:default}.btn{display:inline-block;border-radius:2px;line-height:normal;white-space:nowrap;text-align:center;cursor:pointer;font-size:100%;padding:6px 12px 8px;color:#fff;border:1px solid rgba(0,0,0,.1);background-color:#27ae60;text-decoration:none;font-weight:400;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;box-shadow:inset 0 1px 2px -1px hsla(0,0%,100%,.5),inset 0 -2px 0 0 rgba(0,0,0,.1);outline-none:false;vertical-align:middle;*display:inline;zoom:1;-webkit-user-drag:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition:all .1s linear;-moz-transition:all .1s linear;transition:all .1s linear}.btn-hover{background:#2e8ece;color:#fff}.btn:hover{background:#2cc36b;color:#fff}.btn:focus{background:#2cc36b;outline:0}.btn:active{box-shadow:inset 0 -1px 0 0 rgba(0,0,0,.05),inset 0 2px 0 0 rgba(0,0,0,.1);padding:8px 12px 6px}.btn:visited{color:#fff}.btn-disabled,.btn-disabled:active,.btn-disabled:focus,.btn-disabled:hover,.btn:disabled{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:.4;cursor:not-allowed;box-shadow:none}.btn::-moz-focus-inner{padding:0;border:0}.btn-small{font-size:80%}.btn-info{background-color:#2980b9!important}.btn-info:hover{background-color:#2e8ece!important}.btn-neutral{background-color:#f3f6f6!important;color:#404040!important}.btn-neutral:hover{background-color:#e5ebeb!important;color:#404040}.btn-neutral:visited{color:#404040!important}.btn-success{background-color:#27ae60!important}.btn-success:hover{background-color:#295!important}.btn-danger{background-color:#e74c3c!important}.btn-danger:hover{background-color:#ea6153!important}.btn-warning{background-color:#e67e22!important}.btn-warning:hover{background-color:#e98b39!important}.btn-invert{background-color:#222}.btn-invert:hover{background-color:#2f2f2f!important}.btn-link{background-color:transparent!important;color:#2980b9;box-shadow:none;border-color:transparent!important}.btn-link:active,.btn-link:hover{background-color:transparent!important;color:#409ad5!important;box-shadow:none}.btn-link:visited{color:#9b59b6}.wy-btn-group .btn,.wy-control .btn{vertical-align:middle}.wy-btn-group{margin-bottom:24px;*zoom:1}.wy-btn-group:after,.wy-btn-group:before{display:table;content:""}.wy-btn-group:after{clear:both}.wy-dropdown{position:relative;display:inline-block}.wy-dropdown-active .wy-dropdown-menu{display:block}.wy-dropdown-menu{position:absolute;left:0;display:none;float:left;top:100%;min-width:100%;background:#fcfcfc;z-index:100;border:1px solid #cfd7dd;box-shadow:0 2px 2px 0 rgba(0,0,0,.1);padding:12px}.wy-dropdown-menu>dd>a{display:block;clear:both;color:#404040;white-space:nowrap;font-size:90%;padding:0 12px;cursor:pointer}.wy-dropdown-menu>dd>a:hover{background:#2980b9;color:#fff}.wy-dropdown-menu>dd.divider{border-top:1px solid #cfd7dd;margin:6px 0}.wy-dropdown-menu>dd.search{padding-bottom:12px}.wy-dropdown-menu>dd.search input[type=search]{width:100%}.wy-dropdown-menu>dd.call-to-action{background:#e3e3e3;text-transform:uppercase;font-weight:500;font-size:80%}.wy-dropdown-menu>dd.call-to-action:hover{background:#e3e3e3}.wy-dropdown-menu>dd.call-to-action .btn{color:#fff}.wy-dropdown.wy-dropdown-up .wy-dropdown-menu{bottom:100%;top:auto;left:auto;right:0}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu{background:#fcfcfc;margin-top:2px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a{padding:6px 12px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a:hover{background:#2980b9;color:#fff}.wy-dropdown.wy-dropdown-left .wy-dropdown-menu{right:0;left:auto;text-align:right}.wy-dropdown-arrow:before{content:" ";border-bottom:5px solid #f5f5f5;border-left:5px solid transparent;border-right:5px solid transparent;position:absolute;display:block;top:-4px;left:50%;margin-left:-3px}.wy-dropdown-arrow.wy-dropdown-arrow-left:before{left:11px}.wy-form-stacked select{display:block}.wy-form-aligned .wy-help-inline,.wy-form-aligned input,.wy-form-aligned label,.wy-form-aligned select,.wy-form-aligned textarea{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-form-aligned .wy-control-group>label{display:inline-block;vertical-align:middle;width:10em;margin:6px 12px 0 0;float:left}.wy-form-aligned .wy-control{float:left}.wy-form-aligned .wy-control label{display:block}.wy-form-aligned .wy-control select{margin-top:6px}fieldset{margin:0}fieldset,legend{border:0;padding:0}legend{width:100%;white-space:normal;margin-bottom:24px;font-size:150%;*margin-left:-7px}label,legend{display:block}label{margin:0 0 .3125em;color:#333;font-size:90%}input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}.wy-control-group{margin-bottom:24px;max-width:1200px;margin-left:auto;margin-right:auto;*zoom:1}.wy-control-group:after,.wy-control-group:before{display:table;content:""}.wy-control-group:after{clear:both}.wy-control-group.wy-control-group-required>label:after{content:" *";color:#e74c3c}.wy-control-group .wy-form-full,.wy-control-group .wy-form-halves,.wy-control-group .wy-form-thirds{padding-bottom:12px}.wy-control-group .wy-form-full input[type=color],.wy-control-group .wy-form-full input[type=date],.wy-control-group .wy-form-full input[type=datetime-local],.wy-control-group .wy-form-full input[type=datetime],.wy-control-group .wy-form-full input[type=email],.wy-control-group .wy-form-full input[type=month],.wy-control-group .wy-form-full input[type=number],.wy-control-group .wy-form-full input[type=password],.wy-control-group .wy-form-full input[type=search],.wy-control-group .wy-form-full input[type=tel],.wy-control-group .wy-form-full input[type=text],.wy-control-group .wy-form-full input[type=time],.wy-control-group .wy-form-full input[type=url],.wy-control-group .wy-form-full input[type=week],.wy-control-group .wy-form-full select,.wy-control-group .wy-form-halves input[type=color],.wy-control-group .wy-form-halves input[type=date],.wy-control-group .wy-form-halves input[type=datetime-local],.wy-control-group .wy-form-halves input[type=datetime],.wy-control-group .wy-form-halves input[type=email],.wy-control-group .wy-form-halves input[type=month],.wy-control-group .wy-form-halves input[type=number],.wy-control-group .wy-form-halves input[type=password],.wy-control-group .wy-form-halves input[type=search],.wy-control-group .wy-form-halves input[type=tel],.wy-control-group .wy-form-halves input[type=text],.wy-control-group .wy-form-halves input[type=time],.wy-control-group .wy-form-halves input[type=url],.wy-control-group .wy-form-halves input[type=week],.wy-control-group .wy-form-halves select,.wy-control-group .wy-form-thirds input[type=color],.wy-control-group .wy-form-thirds input[type=date],.wy-control-group .wy-form-thirds input[type=datetime-local],.wy-control-group .wy-form-thirds input[type=datetime],.wy-control-group .wy-form-thirds input[type=email],.wy-control-group .wy-form-thirds input[type=month],.wy-control-group .wy-form-thirds input[type=number],.wy-control-group .wy-form-thirds input[type=password],.wy-control-group .wy-form-thirds input[type=search],.wy-control-group .wy-form-thirds input[type=tel],.wy-control-group .wy-form-thirds input[type=text],.wy-control-group .wy-form-thirds input[type=time],.wy-control-group .wy-form-thirds input[type=url],.wy-control-group .wy-form-thirds input[type=week],.wy-control-group .wy-form-thirds select{width:100%}.wy-control-group .wy-form-full{float:left;display:block;width:100%;margin-right:0}.wy-control-group .wy-form-full:last-child{margin-right:0}.wy-control-group .wy-form-halves{float:left;display:block;margin-right:2.35765%;width:48.82117%}.wy-control-group .wy-form-halves:last-child,.wy-control-group .wy-form-halves:nth-of-type(2n){margin-right:0}.wy-control-group .wy-form-halves:nth-of-type(odd){clear:left}.wy-control-group .wy-form-thirds{float:left;display:block;margin-right:2.35765%;width:31.76157%}.wy-control-group .wy-form-thirds:last-child,.wy-control-group .wy-form-thirds:nth-of-type(3n){margin-right:0}.wy-control-group .wy-form-thirds:nth-of-type(3n+1){clear:left}.wy-control-group.wy-control-group-no-input .wy-control,.wy-control-no-input{margin:6px 0 0;font-size:90%}.wy-control-no-input{display:inline-block}.wy-control-group.fluid-input input[type=color],.wy-control-group.fluid-input input[type=date],.wy-control-group.fluid-input input[type=datetime-local],.wy-control-group.fluid-input input[type=datetime],.wy-control-group.fluid-input input[type=email],.wy-control-group.fluid-input input[type=month],.wy-control-group.fluid-input input[type=number],.wy-control-group.fluid-input input[type=password],.wy-control-group.fluid-input input[type=search],.wy-control-group.fluid-input input[type=tel],.wy-control-group.fluid-input input[type=text],.wy-control-group.fluid-input input[type=time],.wy-control-group.fluid-input input[type=url],.wy-control-group.fluid-input input[type=week]{width:100%}.wy-form-message-inline{padding-left:.3em;color:#666;font-size:90%}.wy-form-message{display:block;color:#999;font-size:70%;margin-top:.3125em;font-style:italic}.wy-form-message p{font-size:inherit;font-style:italic;margin-bottom:6px}.wy-form-message p:last-child{margin-bottom:0}input{line-height:normal}input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;*overflow:visible}input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week]{-webkit-appearance:none;padding:6px;display:inline-block;border:1px solid #ccc;font-size:80%;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;box-shadow:inset 0 1px 3px #ddd;border-radius:0;-webkit-transition:border .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}input[type=datetime-local]{padding:.34375em .625em}input[disabled]{cursor:default}input[type=checkbox],input[type=radio]{padding:0;margin-right:.3125em;*height:13px;*width:13px}input[type=checkbox],input[type=radio],input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus{outline:0;outline:thin dotted\9;border-color:#333}input.no-focus:focus{border-color:#ccc!important}input[type=checkbox]:focus,input[type=file]:focus,input[type=radio]:focus{outline:thin dotted #333;outline:1px auto #129fea}input[type=color][disabled],input[type=date][disabled],input[type=datetime-local][disabled],input[type=datetime][disabled],input[type=email][disabled],input[type=month][disabled],input[type=number][disabled],input[type=password][disabled],input[type=search][disabled],input[type=tel][disabled],input[type=text][disabled],input[type=time][disabled],input[type=url][disabled],input[type=week][disabled]{cursor:not-allowed;background-color:#fafafa}input:focus:invalid,select:focus:invalid,textarea:focus:invalid{color:#e74c3c;border:1px solid #e74c3c}input:focus:invalid:focus,select:focus:invalid:focus,textarea:focus:invalid:focus{border-color:#e74c3c}input[type=checkbox]:focus:invalid:focus,input[type=file]:focus:invalid:focus,input[type=radio]:focus:invalid:focus{outline-color:#e74c3c}input.wy-input-large{padding:12px;font-size:100%}textarea{overflow:auto;vertical-align:top;width:100%;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif}select,textarea{padding:.5em .625em;display:inline-block;border:1px solid #ccc;font-size:80%;box-shadow:inset 0 1px 3px #ddd;-webkit-transition:border .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}select{border:1px solid #ccc;background-color:#fff}select[multiple]{height:auto}select:focus,textarea:focus{outline:0}input[readonly],select[disabled],select[readonly],textarea[disabled],textarea[readonly]{cursor:not-allowed;background-color:#fafafa}input[type=checkbox][disabled],input[type=radio][disabled]{cursor:not-allowed}.wy-checkbox,.wy-radio{margin:6px 0;color:#404040;display:block}.wy-checkbox input,.wy-radio input{vertical-align:baseline}.wy-form-message-inline{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-input-prefix,.wy-input-suffix{white-space:nowrap;padding:6px}.wy-input-prefix .wy-input-context,.wy-input-suffix .wy-input-context{line-height:27px;padding:0 8px;display:inline-block;font-size:80%;background-color:#f3f6f6;border:1px solid #ccc;color:#999}.wy-input-suffix .wy-input-context{border-left:0}.wy-input-prefix .wy-input-context{border-right:0}.wy-switch{position:relative;display:block;height:24px;margin-top:12px;cursor:pointer}.wy-switch:before{left:0;top:0;width:36px;height:12px;background:#ccc}.wy-switch:after,.wy-switch:before{position:absolute;content:"";display:block;border-radius:4px;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.wy-switch:after{width:18px;height:18px;background:#999;left:-3px;top:-3px}.wy-switch span{position:absolute;left:48px;display:block;font-size:12px;color:#ccc;line-height:1}.wy-switch.active:before{background:#1e8449}.wy-switch.active:after{left:24px;background:#27ae60}.wy-switch.disabled{cursor:not-allowed;opacity:.8}.wy-control-group.wy-control-group-error .wy-form-message,.wy-control-group.wy-control-group-error>label{color:#e74c3c}.wy-control-group.wy-control-group-error input[type=color],.wy-control-group.wy-control-group-error input[type=date],.wy-control-group.wy-control-group-error input[type=datetime-local],.wy-control-group.wy-control-group-error input[type=datetime],.wy-control-group.wy-control-group-error input[type=email],.wy-control-group.wy-control-group-error input[type=month],.wy-control-group.wy-control-group-error input[type=number],.wy-control-group.wy-control-group-error input[type=password],.wy-control-group.wy-control-group-error input[type=search],.wy-control-group.wy-control-group-error input[type=tel],.wy-control-group.wy-control-group-error input[type=text],.wy-control-group.wy-control-group-error input[type=time],.wy-control-group.wy-control-group-error input[type=url],.wy-control-group.wy-control-group-error input[type=week],.wy-control-group.wy-control-group-error textarea{border:1px solid #e74c3c}.wy-inline-validate{white-space:nowrap}.wy-inline-validate .wy-input-context{padding:.5em .625em;display:inline-block;font-size:80%}.wy-inline-validate.wy-inline-validate-success .wy-input-context{color:#27ae60}.wy-inline-validate.wy-inline-validate-danger .wy-input-context{color:#e74c3c}.wy-inline-validate.wy-inline-validate-warning .wy-input-context{color:#e67e22}.wy-inline-validate.wy-inline-validate-info .wy-input-context{color:#2980b9}.rotate-90{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.rotate-180{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.rotate-270{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}.mirror{-webkit-transform:scaleX(-1);-moz-transform:scaleX(-1);-ms-transform:scaleX(-1);-o-transform:scaleX(-1);transform:scaleX(-1)}.mirror.rotate-90{-webkit-transform:scaleX(-1) rotate(90deg);-moz-transform:scaleX(-1) rotate(90deg);-ms-transform:scaleX(-1) rotate(90deg);-o-transform:scaleX(-1) rotate(90deg);transform:scaleX(-1) rotate(90deg)}.mirror.rotate-180{-webkit-transform:scaleX(-1) rotate(180deg);-moz-transform:scaleX(-1) rotate(180deg);-ms-transform:scaleX(-1) rotate(180deg);-o-transform:scaleX(-1) rotate(180deg);transform:scaleX(-1) rotate(180deg)}.mirror.rotate-270{-webkit-transform:scaleX(-1) rotate(270deg);-moz-transform:scaleX(-1) rotate(270deg);-ms-transform:scaleX(-1) rotate(270deg);-o-transform:scaleX(-1) rotate(270deg);transform:scaleX(-1) rotate(270deg)}@media only screen and (max-width:480px){.wy-form button[type=submit]{margin:.7em 0 0}.wy-form input[type=color],.wy-form input[type=date],.wy-form input[type=datetime-local],.wy-form input[type=datetime],.wy-form input[type=email],.wy-form input[type=month],.wy-form input[type=number],.wy-form input[type=password],.wy-form input[type=search],.wy-form input[type=tel],.wy-form input[type=text],.wy-form input[type=time],.wy-form input[type=url],.wy-form input[type=week],.wy-form label{margin-bottom:.3em;display:block}.wy-form input[type=color],.wy-form input[type=date],.wy-form input[type=datetime-local],.wy-form input[type=datetime],.wy-form input[type=email],.wy-form input[type=month],.wy-form input[type=number],.wy-form input[type=password],.wy-form input[type=search],.wy-form input[type=tel],.wy-form input[type=time],.wy-form input[type=url],.wy-form input[type=week]{margin-bottom:0}.wy-form-aligned .wy-control-group label{margin-bottom:.3em;text-align:left;display:block;width:100%}.wy-form-aligned .wy-control{margin:1.5em 0 0}.wy-form-message,.wy-form-message-inline,.wy-form .wy-help-inline{display:block;font-size:80%;padding:6px 0}}@media screen and (max-width:768px){.tablet-hide{display:none}}@media screen and (max-width:480px){.mobile-hide{display:none}}.float-left{float:left}.float-right{float:right}.full-width{width:100%}.rst-content table.docutils,.rst-content table.field-list,.wy-table{border-collapse:collapse;border-spacing:0;empty-cells:show;margin-bottom:24px}.rst-content table.docutils caption,.rst-content table.field-list caption,.wy-table caption{color:#000;font:italic 85%/1 arial,sans-serif;padding:1em 0;text-align:center}.rst-content table.docutils td,.rst-content table.docutils th,.rst-content table.field-list td,.rst-content table.field-list th,.wy-table td,.wy-table th{font-size:90%;margin:0;overflow:visible;padding:8px 16px}.rst-content table.docutils td:first-child,.rst-content table.docutils th:first-child,.rst-content table.field-list td:first-child,.rst-content table.field-list th:first-child,.wy-table td:first-child,.wy-table th:first-child{border-left-width:0}.rst-content table.docutils thead,.rst-content table.field-list thead,.wy-table thead{color:#000;text-align:left;vertical-align:bottom;white-space:nowrap}.rst-content table.docutils thead th,.rst-content table.field-list thead th,.wy-table thead th{font-weight:700;border-bottom:2px solid #e1e4e5}.rst-content table.docutils td,.rst-content table.field-list td,.wy-table td{background-color:transparent;vertical-align:middle}.rst-content table.docutils td p,.rst-content table.field-list td p,.wy-table td p{line-height:18px}.rst-content table.docutils td p:last-child,.rst-content table.field-list td p:last-child,.wy-table td p:last-child{margin-bottom:0}.rst-content table.docutils .wy-table-cell-min,.rst-content table.field-list .wy-table-cell-min,.wy-table .wy-table-cell-min{width:1%;padding-right:0}.rst-content table.docutils .wy-table-cell-min input[type=checkbox],.rst-content table.field-list .wy-table-cell-min input[type=checkbox],.wy-table .wy-table-cell-min input[type=checkbox]{margin:0}.wy-table-secondary{color:grey;font-size:90%}.wy-table-tertiary{color:grey;font-size:80%}.rst-content table.docutils:not(.field-list) tr:nth-child(2n-1) td,.wy-table-backed,.wy-table-odd td,.wy-table-striped tr:nth-child(2n-1) td{background-color:#f3f6f6}.rst-content table.docutils,.wy-table-bordered-all{border:1px solid #e1e4e5}.rst-content table.docutils td,.wy-table-bordered-all td{border-bottom:1px solid #e1e4e5;border-left:1px solid #e1e4e5}.rst-content table.docutils tbody>tr:last-child td,.wy-table-bordered-all tbody>tr:last-child td{border-bottom-width:0}.wy-table-bordered{border:1px solid #e1e4e5}.wy-table-bordered-rows td{border-bottom:1px solid #e1e4e5}.wy-table-bordered-rows tbody>tr:last-child td{border-bottom-width:0}.wy-table-horizontal td,.wy-table-horizontal th{border-width:0 0 1px;border-bottom:1px solid #e1e4e5}.wy-table-horizontal tbody>tr:last-child td{border-bottom-width:0}.wy-table-responsive{margin-bottom:24px;max-width:100%;overflow:auto}.wy-table-responsive table{margin-bottom:0!important}.wy-table-responsive table td,.wy-table-responsive table th{white-space:nowrap}a{color:#2980b9;text-decoration:none;cursor:pointer}a:hover{color:#3091d1}a:visited{color:#9b59b6}html{height:100%}body,html{overflow-x:hidden}body{font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;font-weight:400;color:#404040;min-height:100%;background:#edf0f2}.wy-text-left{text-align:left}.wy-text-center{text-align:center}.wy-text-right{text-align:right}.wy-text-large{font-size:120%}.wy-text-normal{font-size:100%}.wy-text-small,small{font-size:80%}.wy-text-strike{text-decoration:line-through}.wy-text-warning{color:#e67e22!important}a.wy-text-warning:hover{color:#eb9950!important}.wy-text-info{color:#2980b9!important}a.wy-text-info:hover{color:#409ad5!important}.wy-text-success{color:#27ae60!important}a.wy-text-success:hover{color:#36d278!important}.wy-text-danger{color:#e74c3c!important}a.wy-text-danger:hover{color:#ed7669!important}.wy-text-neutral{color:#404040!important}a.wy-text-neutral:hover{color:#595959!important}.rst-content .toctree-wrapper>p.caption,h1,h2,h3,h4,h5,h6,legend{margin-top:0;font-weight:700;font-family:Roboto Slab,ff-tisa-web-pro,Georgia,Arial,sans-serif}p{line-height:24px;font-size:16px;margin:0 0 24px}h1{font-size:175%}.rst-content .toctree-wrapper>p.caption,h2{font-size:150%}h3{font-size:125%}h4{font-size:115%}h5{font-size:110%}h6{font-size:100%}hr{display:block;height:1px;border:0;border-top:1px solid #e1e4e5;margin:24px 0;padding:0}.rst-content code,.rst-content tt,code{white-space:nowrap;max-width:100%;background:#fff;border:1px solid #e1e4e5;font-size:75%;padding:0 5px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;color:#e74c3c;overflow-x:auto}.rst-content tt.code-large,code.code-large{font-size:90%}.rst-content .section ul,.rst-content .toctree-wrapper ul,.rst-content section ul,.wy-plain-list-disc,article ul{list-style:disc;line-height:24px;margin-bottom:24px}.rst-content .section ul li,.rst-content .toctree-wrapper ul li,.rst-content section ul li,.wy-plain-list-disc li,article ul li{list-style:disc;margin-left:24px}.rst-content .section ul li p:last-child,.rst-content .section ul li ul,.rst-content .toctree-wrapper ul li p:last-child,.rst-content .toctree-wrapper ul li ul,.rst-content section ul li p:last-child,.rst-content section ul li ul,.wy-plain-list-disc li p:last-child,.wy-plain-list-disc li ul,article ul li p:last-child,article ul li ul{margin-bottom:0}.rst-content .section ul li li,.rst-content .toctree-wrapper ul li li,.rst-content section ul li li,.wy-plain-list-disc li li,article ul li li{list-style:circle}.rst-content .section ul li li li,.rst-content .toctree-wrapper ul li li li,.rst-content section ul li li li,.wy-plain-list-disc li li li,article ul li li li{list-style:square}.rst-content .section ul li ol li,.rst-content .toctree-wrapper ul li ol li,.rst-content section ul li ol li,.wy-plain-list-disc li ol li,article ul li ol li{list-style:decimal}.rst-content .section ol,.rst-content .section ol.arabic,.rst-content .toctree-wrapper ol,.rst-content .toctree-wrapper ol.arabic,.rst-content section ol,.rst-content section ol.arabic,.wy-plain-list-decimal,article ol{list-style:decimal;line-height:24px;margin-bottom:24px}.rst-content .section ol.arabic li,.rst-content .section ol li,.rst-content .toctree-wrapper ol.arabic li,.rst-content .toctree-wrapper ol li,.rst-content section ol.arabic li,.rst-content section ol li,.wy-plain-list-decimal li,article ol li{list-style:decimal;margin-left:24px}.rst-content .section ol.arabic li ul,.rst-content .section ol li p:last-child,.rst-content .section ol li ul,.rst-content .toctree-wrapper ol.arabic li ul,.rst-content .toctree-wrapper ol li p:last-child,.rst-content .toctree-wrapper ol li ul,.rst-content section ol.arabic li ul,.rst-content section ol li p:last-child,.rst-content section ol li ul,.wy-plain-list-decimal li p:last-child,.wy-plain-list-decimal li ul,article ol li p:last-child,article ol li ul{margin-bottom:0}.rst-content .section ol.arabic li ul li,.rst-content .section ol li ul li,.rst-content .toctree-wrapper ol.arabic li ul li,.rst-content .toctree-wrapper ol li ul li,.rst-content section ol.arabic li ul li,.rst-content section ol li ul li,.wy-plain-list-decimal li ul li,article ol li ul li{list-style:disc}.wy-breadcrumbs{*zoom:1}.wy-breadcrumbs:after,.wy-breadcrumbs:before{display:table;content:""}.wy-breadcrumbs:after{clear:both}.wy-breadcrumbs>li{display:inline-block;padding-top:5px}.wy-breadcrumbs>li.wy-breadcrumbs-aside{float:right}.rst-content .wy-breadcrumbs>li code,.rst-content .wy-breadcrumbs>li tt,.wy-breadcrumbs>li .rst-content tt,.wy-breadcrumbs>li code{all:inherit;color:inherit}.breadcrumb-item:before{content:"/";color:#bbb;font-size:13px;padding:0 6px 0 3px}.wy-breadcrumbs-extra{margin-bottom:0;color:#b3b3b3;font-size:80%;display:inline-block}@media screen and (max-width:480px){.wy-breadcrumbs-extra,.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}@media print{.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}html{font-size:16px}.wy-affix{position:fixed;top:1.618em}.wy-menu a:hover{text-decoration:none}.wy-menu-horiz{*zoom:1}.wy-menu-horiz:after,.wy-menu-horiz:before{display:table;content:""}.wy-menu-horiz:after{clear:both}.wy-menu-horiz li,.wy-menu-horiz ul{display:inline-block}.wy-menu-horiz li:hover{background:hsla(0,0%,100%,.1)}.wy-menu-horiz li.divide-left{border-left:1px solid #404040}.wy-menu-horiz li.divide-right{border-right:1px solid #404040}.wy-menu-horiz a{height:32px;display:inline-block;line-height:32px;padding:0 16px}.wy-menu-vertical{width:300px}.wy-menu-vertical header,.wy-menu-vertical p.caption{color:#55a5d9;height:32px;line-height:32px;padding:0 1.618em;margin:12px 0 0;display:block;font-weight:700;text-transform:uppercase;font-size:85%;white-space:nowrap}.wy-menu-vertical ul{margin-bottom:0}.wy-menu-vertical li.divide-top{border-top:1px solid #404040}.wy-menu-vertical li.divide-bottom{border-bottom:1px solid #404040}.wy-menu-vertical li.current{background:#e3e3e3}.wy-menu-vertical li.current a{color:grey;border-right:1px solid #c9c9c9;padding:.4045em 2.427em}.wy-menu-vertical li.current a:hover{background:#d6d6d6}.rst-content .wy-menu-vertical li tt,.wy-menu-vertical li .rst-content tt,.wy-menu-vertical li code{border:none;background:inherit;color:inherit;padding-left:0;padding-right:0}.wy-menu-vertical li button.toctree-expand{display:block;float:left;margin-left:-1.2em;line-height:18px;color:#4d4d4d;border:none;background:none;padding:0}.wy-menu-vertical li.current>a,.wy-menu-vertical li.on a{color:#404040;font-weight:700;position:relative;background:#fcfcfc;border:none;padding:.4045em 1.618em}.wy-menu-vertical li.current>a:hover,.wy-menu-vertical li.on a:hover{background:#fcfcfc}.wy-menu-vertical li.current>a:hover button.toctree-expand,.wy-menu-vertical li.on a:hover button.toctree-expand{color:grey}.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand{display:block;line-height:18px;color:#333}.wy-menu-vertical li.toctree-l1.current>a{border-bottom:1px solid #c9c9c9;border-top:1px solid #c9c9c9}.wy-menu-vertical .toctree-l1.current .toctree-l2>ul,.wy-menu-vertical .toctree-l2.current .toctree-l3>ul,.wy-menu-vertical .toctree-l3.current .toctree-l4>ul,.wy-menu-vertical .toctree-l4.current .toctree-l5>ul,.wy-menu-vertical .toctree-l5.current .toctree-l6>ul,.wy-menu-vertical .toctree-l6.current .toctree-l7>ul,.wy-menu-vertical .toctree-l7.current .toctree-l8>ul,.wy-menu-vertical .toctree-l8.current .toctree-l9>ul,.wy-menu-vertical .toctree-l9.current .toctree-l10>ul,.wy-menu-vertical .toctree-l10.current .toctree-l11>ul{display:none}.wy-menu-vertical .toctree-l1.current .current.toctree-l2>ul,.wy-menu-vertical .toctree-l2.current .current.toctree-l3>ul,.wy-menu-vertical .toctree-l3.current .current.toctree-l4>ul,.wy-menu-vertical .toctree-l4.current .current.toctree-l5>ul,.wy-menu-vertical .toctree-l5.current .current.toctree-l6>ul,.wy-menu-vertical .toctree-l6.current .current.toctree-l7>ul,.wy-menu-vertical .toctree-l7.current .current.toctree-l8>ul,.wy-menu-vertical .toctree-l8.current .current.toctree-l9>ul,.wy-menu-vertical .toctree-l9.current .current.toctree-l10>ul,.wy-menu-vertical .toctree-l10.current .current.toctree-l11>ul{display:block}.wy-menu-vertical li.toctree-l3,.wy-menu-vertical li.toctree-l4{font-size:.9em}.wy-menu-vertical li.toctree-l2 a,.wy-menu-vertical li.toctree-l3 a,.wy-menu-vertical li.toctree-l4 a,.wy-menu-vertical li.toctree-l5 a,.wy-menu-vertical li.toctree-l6 a,.wy-menu-vertical li.toctree-l7 a,.wy-menu-vertical li.toctree-l8 a,.wy-menu-vertical li.toctree-l9 a,.wy-menu-vertical li.toctree-l10 a{color:#404040}.wy-menu-vertical li.toctree-l2 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l3 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l4 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l5 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l6 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l7 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l8 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l9 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l10 a:hover button.toctree-expand{color:grey}.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a,.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a,.wy-menu-vertical li.toctree-l4.current li.toctree-l5>a,.wy-menu-vertical li.toctree-l5.current li.toctree-l6>a,.wy-menu-vertical li.toctree-l6.current li.toctree-l7>a,.wy-menu-vertical li.toctree-l7.current li.toctree-l8>a,.wy-menu-vertical li.toctree-l8.current li.toctree-l9>a,.wy-menu-vertical li.toctree-l9.current li.toctree-l10>a,.wy-menu-vertical li.toctree-l10.current li.toctree-l11>a{display:block}.wy-menu-vertical li.toctree-l2.current>a{padding:.4045em 2.427em}.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a{padding:.4045em 1.618em .4045em 4.045em}.wy-menu-vertical li.toctree-l3.current>a{padding:.4045em 4.045em}.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a{padding:.4045em 1.618em .4045em 5.663em}.wy-menu-vertical li.toctree-l4.current>a{padding:.4045em 5.663em}.wy-menu-vertical li.toctree-l4.current li.toctree-l5>a{padding:.4045em 1.618em .4045em 7.281em}.wy-menu-vertical li.toctree-l5.current>a{padding:.4045em 7.281em}.wy-menu-vertical li.toctree-l5.current li.toctree-l6>a{padding:.4045em 1.618em .4045em 8.899em}.wy-menu-vertical li.toctree-l6.current>a{padding:.4045em 8.899em}.wy-menu-vertical li.toctree-l6.current li.toctree-l7>a{padding:.4045em 1.618em .4045em 10.517em}.wy-menu-vertical li.toctree-l7.current>a{padding:.4045em 10.517em}.wy-menu-vertical li.toctree-l7.current li.toctree-l8>a{padding:.4045em 1.618em .4045em 12.135em}.wy-menu-vertical li.toctree-l8.current>a{padding:.4045em 12.135em}.wy-menu-vertical li.toctree-l8.current li.toctree-l9>a{padding:.4045em 1.618em .4045em 13.753em}.wy-menu-vertical li.toctree-l9.current>a{padding:.4045em 13.753em}.wy-menu-vertical li.toctree-l9.current li.toctree-l10>a{padding:.4045em 1.618em .4045em 15.371em}.wy-menu-vertical li.toctree-l10.current>a{padding:.4045em 15.371em}.wy-menu-vertical li.toctree-l10.current li.toctree-l11>a{padding:.4045em 1.618em .4045em 16.989em}.wy-menu-vertical li.toctree-l2.current>a,.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a{background:#c9c9c9}.wy-menu-vertical li.toctree-l2 button.toctree-expand{color:#a3a3a3}.wy-menu-vertical li.toctree-l3.current>a,.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a{background:#bdbdbd}.wy-menu-vertical li.toctree-l3 button.toctree-expand{color:#969696}.wy-menu-vertical li.current ul{display:block}.wy-menu-vertical li ul{margin-bottom:0;display:none}.wy-menu-vertical li ul li a{margin-bottom:0;color:#d9d9d9;font-weight:400}.wy-menu-vertical a{line-height:18px;padding:.4045em 1.618em;display:block;position:relative;font-size:90%;color:#d9d9d9}.wy-menu-vertical a:hover{background-color:#4e4a4a;cursor:pointer}.wy-menu-vertical a:hover button.toctree-expand{color:#d9d9d9}.wy-menu-vertical a:active{background-color:#2980b9;cursor:pointer;color:#fff}.wy-menu-vertical a:active button.toctree-expand{color:#fff}.wy-side-nav-search{display:block;width:300px;padding:.809em;margin-bottom:.809em;z-index:200;background-color:#2980b9;text-align:center;color:#fcfcfc}.wy-side-nav-search input[type=text]{width:100%;border-radius:50px;padding:6px 12px;border-color:#2472a4}.wy-side-nav-search img{display:block;margin:auto auto .809em;height:45px;width:45px;background-color:#2980b9;padding:5px;border-radius:100%}.wy-side-nav-search .wy-dropdown>a,.wy-side-nav-search>a{color:#fcfcfc;font-size:100%;font-weight:700;display:inline-block;padding:4px 6px;margin-bottom:.809em;max-width:100%}.wy-side-nav-search .wy-dropdown>a:hover,.wy-side-nav-search>a:hover{background:hsla(0,0%,100%,.1)}.wy-side-nav-search .wy-dropdown>a img.logo,.wy-side-nav-search>a img.logo{display:block;margin:0 auto;height:auto;width:auto;border-radius:0;max-width:100%;background:transparent}.wy-side-nav-search .wy-dropdown>a.icon img.logo,.wy-side-nav-search>a.icon img.logo{margin-top:.85em}.wy-side-nav-search>div.version{margin-top:-.4045em;margin-bottom:.809em;font-weight:400;color:hsla(0,0%,100%,.3)}.wy-nav .wy-menu-vertical header{color:#2980b9}.wy-nav .wy-menu-vertical a{color:#b3b3b3}.wy-nav .wy-menu-vertical a:hover{background-color:#2980b9;color:#fff}[data-menu-wrap]{-webkit-transition:all .2s ease-in;-moz-transition:all .2s ease-in;transition:all .2s ease-in;position:absolute;opacity:1;width:100%;opacity:0}[data-menu-wrap].move-center{left:0;right:auto;opacity:1}[data-menu-wrap].move-left{right:auto;left:-100%;opacity:0}[data-menu-wrap].move-right{right:-100%;left:auto;opacity:0}.wy-body-for-nav{background:#fcfcfc}.wy-grid-for-nav{position:absolute;width:100%;height:100%}.wy-nav-side{position:fixed;top:0;bottom:0;left:0;padding-bottom:2em;width:300px;overflow-x:hidden;overflow-y:hidden;min-height:100%;color:#9b9b9b;background:#343131;z-index:200}.wy-side-scroll{width:320px;position:relative;overflow-x:hidden;overflow-y:scroll;height:100%}.wy-nav-top{display:none;background:#2980b9;color:#fff;padding:.4045em .809em;position:relative;line-height:50px;text-align:center;font-size:100%;*zoom:1}.wy-nav-top:after,.wy-nav-top:before{display:table;content:""}.wy-nav-top:after{clear:both}.wy-nav-top a{color:#fff;font-weight:700}.wy-nav-top img{margin-right:12px;height:45px;width:45px;background-color:#2980b9;padding:5px;border-radius:100%}.wy-nav-top i{font-size:30px;float:left;cursor:pointer;padding-top:inherit}.wy-nav-content-wrap{margin-left:300px;background:#fcfcfc;min-height:100%}.wy-nav-content{padding:1.618em 3.236em;height:100%;max-width:800px;margin:auto}.wy-body-mask{position:fixed;width:100%;height:100%;background:rgba(0,0,0,.2);display:none;z-index:499}.wy-body-mask.on{display:block}footer{color:grey}footer p{margin-bottom:12px}.rst-content footer span.commit tt,footer span.commit .rst-content tt,footer span.commit code{padding:0;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;font-size:1em;background:none;border:none;color:grey}.rst-footer-buttons{*zoom:1}.rst-footer-buttons:after,.rst-footer-buttons:before{width:100%;display:table;content:""}.rst-footer-buttons:after{clear:both}.rst-breadcrumbs-buttons{margin-top:12px;*zoom:1}.rst-breadcrumbs-buttons:after,.rst-breadcrumbs-buttons:before{display:table;content:""}.rst-breadcrumbs-buttons:after{clear:both}#search-results .search li{margin-bottom:24px;border-bottom:1px solid #e1e4e5;padding-bottom:24px}#search-results .search li:first-child{border-top:1px solid #e1e4e5;padding-top:24px}#search-results .search li a{font-size:120%;margin-bottom:12px;display:inline-block}#search-results .context{color:grey;font-size:90%}.genindextable li>ul{margin-left:24px}@media screen and (max-width:768px){.wy-body-for-nav{background:#fcfcfc}.wy-nav-top{display:block}.wy-nav-side{left:-300px}.wy-nav-side.shift{width:85%;left:0}.wy-menu.wy-menu-vertical,.wy-side-nav-search,.wy-side-scroll{width:auto}.wy-nav-content-wrap{margin-left:0}.wy-nav-content-wrap .wy-nav-content{padding:1.618em}.wy-nav-content-wrap.shift{position:fixed;min-width:100%;left:85%;top:0;height:100%;overflow:hidden}}@media screen and (min-width:1100px){.wy-nav-content-wrap{background:rgba(0,0,0,.05)}.wy-nav-content{margin:0;background:#fcfcfc}}@media print{.rst-versions,.wy-nav-side,footer{display:none}.wy-nav-content-wrap{margin-left:0}}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60;*zoom:1}.rst-versions .rst-current-version:after,.rst-versions .rst-current-version:before{display:table;content:""}.rst-versions .rst-current-version:after{clear:both}.rst-content .code-block-caption .rst-versions .rst-current-version .headerlink,.rst-content .eqno .rst-versions .rst-current-version .headerlink,.rst-content .rst-versions .rst-current-version .admonition-title,.rst-content code.download .rst-versions .rst-current-version span:first-child,.rst-content dl dt .rst-versions .rst-current-version .headerlink,.rst-content h1 .rst-versions .rst-current-version .headerlink,.rst-content h2 .rst-versions .rst-current-version .headerlink,.rst-content h3 .rst-versions .rst-current-version .headerlink,.rst-content h4 .rst-versions .rst-current-version .headerlink,.rst-content h5 .rst-versions .rst-current-version .headerlink,.rst-content h6 .rst-versions .rst-current-version .headerlink,.rst-content p .rst-versions .rst-current-version .headerlink,.rst-content table>caption .rst-versions .rst-current-version .headerlink,.rst-content tt.download .rst-versions .rst-current-version span:first-child,.rst-versions .rst-current-version .fa,.rst-versions .rst-current-version .icon,.rst-versions .rst-current-version .rst-content .admonition-title,.rst-versions .rst-current-version .rst-content .code-block-caption .headerlink,.rst-versions .rst-current-version .rst-content .eqno .headerlink,.rst-versions .rst-current-version .rst-content code.download span:first-child,.rst-versions .rst-current-version .rst-content dl dt .headerlink,.rst-versions .rst-current-version .rst-content h1 .headerlink,.rst-versions .rst-current-version .rst-content h2 .headerlink,.rst-versions .rst-current-version .rst-content h3 .headerlink,.rst-versions .rst-current-version .rst-content h4 .headerlink,.rst-versions .rst-current-version .rst-content h5 .headerlink,.rst-versions .rst-current-version .rst-content h6 .headerlink,.rst-versions .rst-current-version .rst-content p .headerlink,.rst-versions .rst-current-version .rst-content table>caption .headerlink,.rst-versions .rst-current-version .rst-content tt.download span:first-child,.rst-versions .rst-current-version .wy-menu-vertical li button.toctree-expand,.wy-menu-vertical li .rst-versions .rst-current-version button.toctree-expand{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none;line-height:30px}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge>.rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width:768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}}.rst-content .toctree-wrapper>p.caption,.rst-content h1,.rst-content h2,.rst-content h3,.rst-content h4,.rst-content h5,.rst-content h6{margin-bottom:24px}.rst-content img{max-width:100%;height:auto}.rst-content div.figure,.rst-content figure{margin-bottom:24px}.rst-content div.figure .caption-text,.rst-content figure .caption-text{font-style:italic}.rst-content div.figure p:last-child.caption,.rst-content figure p:last-child.caption{margin-bottom:0}.rst-content div.figure.align-center,.rst-content figure.align-center{text-align:center}.rst-content .section>a>img,.rst-content .section>img,.rst-content section>a>img,.rst-content section>img{margin-bottom:24px}.rst-content abbr[title]{text-decoration:none}.rst-content.style-external-links a.reference.external:after{font-family:FontAwesome;content:"\f08e";color:#b3b3b3;vertical-align:super;font-size:60%;margin:0 .2em}.rst-content blockquote{margin-left:24px;line-height:24px;margin-bottom:24px}.rst-content pre.literal-block{white-space:pre;margin:0;padding:12px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;display:block;overflow:auto}.rst-content div[class^=highlight],.rst-content pre.literal-block{border:1px solid #e1e4e5;overflow-x:auto;margin:1px 0 24px}.rst-content div[class^=highlight] div[class^=highlight],.rst-content pre.literal-block div[class^=highlight]{padding:0;border:none;margin:0}.rst-content div[class^=highlight] td.code{width:100%}.rst-content .linenodiv pre{border-right:1px solid #e6e9ea;margin:0;padding:12px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;user-select:none;pointer-events:none}.rst-content div[class^=highlight] pre{white-space:pre;margin:0;padding:12px;display:block;overflow:auto}.rst-content div[class^=highlight] pre .hll{display:block;margin:0 -12px;padding:0 12px}.rst-content .linenodiv pre,.rst-content div[class^=highlight] pre,.rst-content pre.literal-block{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;font-size:12px;line-height:1.4}.rst-content div.highlight .gp,.rst-content div.highlight span.linenos{user-select:none;pointer-events:none}.rst-content div.highlight span.linenos{display:inline-block;padding-left:0;padding-right:12px;margin-right:12px;border-right:1px solid #e6e9ea}.rst-content .code-block-caption{font-style:italic;font-size:85%;line-height:1;padding:1em 0;text-align:center}@media print{.rst-content .codeblock,.rst-content div[class^=highlight],.rst-content div[class^=highlight] pre{white-space:pre-wrap}}.rst-content .admonition,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning{clear:both}.rst-content .admonition-todo .last,.rst-content .admonition-todo>:last-child,.rst-content .admonition .last,.rst-content .admonition>:last-child,.rst-content .attention .last,.rst-content .attention>:last-child,.rst-content .caution .last,.rst-content .caution>:last-child,.rst-content .danger .last,.rst-content .danger>:last-child,.rst-content .error .last,.rst-content .error>:last-child,.rst-content .hint .last,.rst-content .hint>:last-child,.rst-content .important .last,.rst-content .important>:last-child,.rst-content .note .last,.rst-content .note>:last-child,.rst-content .seealso .last,.rst-content .seealso>:last-child,.rst-content .tip .last,.rst-content .tip>:last-child,.rst-content .warning .last,.rst-content .warning>:last-child{margin-bottom:0}.rst-content .admonition-title:before{margin-right:4px}.rst-content .admonition table{border-color:rgba(0,0,0,.1)}.rst-content .admonition table td,.rst-content .admonition table th{background:transparent!important;border-color:rgba(0,0,0,.1)!important}.rst-content .section ol.loweralpha,.rst-content .section ol.loweralpha>li,.rst-content .toctree-wrapper ol.loweralpha,.rst-content .toctree-wrapper ol.loweralpha>li,.rst-content section ol.loweralpha,.rst-content section ol.loweralpha>li{list-style:lower-alpha}.rst-content .section ol.upperalpha,.rst-content .section ol.upperalpha>li,.rst-content .toctree-wrapper ol.upperalpha,.rst-content .toctree-wrapper ol.upperalpha>li,.rst-content section ol.upperalpha,.rst-content section ol.upperalpha>li{list-style:upper-alpha}.rst-content .section ol li>*,.rst-content .section ul li>*,.rst-content .toctree-wrapper ol li>*,.rst-content .toctree-wrapper ul li>*,.rst-content section ol li>*,.rst-content section ul li>*{margin-top:12px;margin-bottom:12px}.rst-content .section ol li>:first-child,.rst-content .section ul li>:first-child,.rst-content .toctree-wrapper ol li>:first-child,.rst-content .toctree-wrapper ul li>:first-child,.rst-content section ol li>:first-child,.rst-content section ul li>:first-child{margin-top:0}.rst-content .section ol li>p,.rst-content .section ol li>p:last-child,.rst-content .section ul li>p,.rst-content .section ul li>p:last-child,.rst-content .toctree-wrapper ol li>p,.rst-content .toctree-wrapper ol li>p:last-child,.rst-content .toctree-wrapper ul li>p,.rst-content .toctree-wrapper ul li>p:last-child,.rst-content section ol li>p,.rst-content section ol li>p:last-child,.rst-content section ul li>p,.rst-content section ul li>p:last-child{margin-bottom:12px}.rst-content .section ol li>p:only-child,.rst-content .section ol li>p:only-child:last-child,.rst-content .section ul li>p:only-child,.rst-content .section ul li>p:only-child:last-child,.rst-content .toctree-wrapper ol li>p:only-child,.rst-content .toctree-wrapper ol li>p:only-child:last-child,.rst-content .toctree-wrapper ul li>p:only-child,.rst-content .toctree-wrapper ul li>p:only-child:last-child,.rst-content section ol li>p:only-child,.rst-content section ol li>p:only-child:last-child,.rst-content section ul li>p:only-child,.rst-content section ul li>p:only-child:last-child{margin-bottom:0}.rst-content .section ol li>ol,.rst-content .section ol li>ul,.rst-content .section ul li>ol,.rst-content .section ul li>ul,.rst-content .toctree-wrapper ol li>ol,.rst-content .toctree-wrapper ol li>ul,.rst-content .toctree-wrapper ul li>ol,.rst-content .toctree-wrapper ul li>ul,.rst-content section ol li>ol,.rst-content section ol li>ul,.rst-content section ul li>ol,.rst-content section ul li>ul{margin-bottom:12px}.rst-content .section ol.simple li>*,.rst-content .section ol.simple li ol,.rst-content .section ol.simple li ul,.rst-content .section ul.simple li>*,.rst-content .section ul.simple li ol,.rst-content .section ul.simple li ul,.rst-content .toctree-wrapper ol.simple li>*,.rst-content .toctree-wrapper ol.simple li ol,.rst-content .toctree-wrapper ol.simple li ul,.rst-content .toctree-wrapper ul.simple li>*,.rst-content .toctree-wrapper ul.simple li ol,.rst-content .toctree-wrapper ul.simple li ul,.rst-content section ol.simple li>*,.rst-content section ol.simple li ol,.rst-content section ol.simple li ul,.rst-content section ul.simple li>*,.rst-content section ul.simple li ol,.rst-content section ul.simple li ul{margin-top:0;margin-bottom:0}.rst-content .line-block{margin-left:0;margin-bottom:24px;line-height:24px}.rst-content .line-block .line-block{margin-left:24px;margin-bottom:0}.rst-content .topic-title{font-weight:700;margin-bottom:12px}.rst-content .toc-backref{color:#404040}.rst-content .align-right{float:right;margin:0 0 24px 24px}.rst-content .align-left{float:left;margin:0 24px 24px 0}.rst-content .align-center{margin:auto}.rst-content .align-center:not(table){display:block}.rst-content .code-block-caption .headerlink,.rst-content .eqno .headerlink,.rst-content .toctree-wrapper>p.caption .headerlink,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content p .headerlink,.rst-content table>caption .headerlink{opacity:0;font-size:14px;font-family:FontAwesome;margin-left:.5em}.rst-content .code-block-caption .headerlink:focus,.rst-content .code-block-caption:hover .headerlink,.rst-content .eqno .headerlink:focus,.rst-content .eqno:hover .headerlink,.rst-content .toctree-wrapper>p.caption .headerlink:focus,.rst-content .toctree-wrapper>p.caption:hover .headerlink,.rst-content dl dt .headerlink:focus,.rst-content dl dt:hover .headerlink,.rst-content h1 .headerlink:focus,.rst-content h1:hover .headerlink,.rst-content h2 .headerlink:focus,.rst-content h2:hover .headerlink,.rst-content h3 .headerlink:focus,.rst-content h3:hover .headerlink,.rst-content h4 .headerlink:focus,.rst-content h4:hover .headerlink,.rst-content h5 .headerlink:focus,.rst-content h5:hover .headerlink,.rst-content h6 .headerlink:focus,.rst-content h6:hover .headerlink,.rst-content p.caption .headerlink:focus,.rst-content p.caption:hover .headerlink,.rst-content p .headerlink:focus,.rst-content p:hover .headerlink,.rst-content table>caption .headerlink:focus,.rst-content table>caption:hover .headerlink{opacity:1}.rst-content p a{overflow-wrap:anywhere}.rst-content .wy-table td p,.rst-content .wy-table td ul,.rst-content .wy-table th p,.rst-content .wy-table th ul,.rst-content table.docutils td p,.rst-content table.docutils td ul,.rst-content table.docutils th p,.rst-content table.docutils th ul,.rst-content table.field-list td p,.rst-content table.field-list td ul,.rst-content table.field-list th p,.rst-content table.field-list th ul{font-size:inherit}.rst-content .btn:focus{outline:2px solid}.rst-content table>caption .headerlink:after{font-size:12px}.rst-content .centered{text-align:center}.rst-content .sidebar{float:right;width:40%;display:block;margin:0 0 24px 24px;padding:24px;background:#f3f6f6;border:1px solid #e1e4e5}.rst-content .sidebar dl,.rst-content .sidebar p,.rst-content .sidebar ul{font-size:90%}.rst-content .sidebar .last,.rst-content .sidebar>:last-child{margin-bottom:0}.rst-content .sidebar .sidebar-title{display:block;font-family:Roboto Slab,ff-tisa-web-pro,Georgia,Arial,sans-serif;font-weight:700;background:#e1e4e5;padding:6px 12px;margin:-24px -24px 24px;font-size:100%}.rst-content .highlighted{background:#f1c40f;box-shadow:0 0 0 2px #f1c40f;display:inline;font-weight:700}.rst-content .citation-reference,.rst-content .footnote-reference{vertical-align:baseline;position:relative;top:-.4em;line-height:0;font-size:90%}.rst-content .citation-reference>span.fn-bracket,.rst-content .footnote-reference>span.fn-bracket{display:none}.rst-content .hlist{width:100%}.rst-content dl dt span.classifier:before{content:" : "}.rst-content dl dt span.classifier-delimiter{display:none!important}html.writer-html4 .rst-content table.docutils.citation,html.writer-html4 .rst-content table.docutils.footnote{background:none;border:none}html.writer-html4 .rst-content table.docutils.citation td,html.writer-html4 .rst-content table.docutils.citation tr,html.writer-html4 .rst-content table.docutils.footnote td,html.writer-html4 .rst-content table.docutils.footnote tr{border:none;background-color:transparent!important;white-space:normal}html.writer-html4 .rst-content table.docutils.citation td.label,html.writer-html4 .rst-content table.docutils.footnote td.label{padding-left:0;padding-right:0;vertical-align:top}html.writer-html5 .rst-content dl.citation,html.writer-html5 .rst-content dl.field-list,html.writer-html5 .rst-content dl.footnote{display:grid;grid-template-columns:auto minmax(80%,95%)}html.writer-html5 .rst-content dl.citation>dt,html.writer-html5 .rst-content dl.field-list>dt,html.writer-html5 .rst-content dl.footnote>dt{display:inline-grid;grid-template-columns:max-content auto}html.writer-html5 .rst-content aside.citation,html.writer-html5 .rst-content aside.footnote,html.writer-html5 .rst-content div.citation{display:grid;grid-template-columns:auto auto minmax(.65rem,auto) minmax(40%,95%)}html.writer-html5 .rst-content aside.citation>span.label,html.writer-html5 .rst-content aside.footnote>span.label,html.writer-html5 .rst-content div.citation>span.label{grid-column-start:1;grid-column-end:2}html.writer-html5 .rst-content aside.citation>span.backrefs,html.writer-html5 .rst-content aside.footnote>span.backrefs,html.writer-html5 .rst-content div.citation>span.backrefs{grid-column-start:2;grid-column-end:3;grid-row-start:1;grid-row-end:3}html.writer-html5 .rst-content aside.citation>p,html.writer-html5 .rst-content aside.footnote>p,html.writer-html5 .rst-content div.citation>p{grid-column-start:4;grid-column-end:5}html.writer-html5 .rst-content dl.citation,html.writer-html5 .rst-content dl.field-list,html.writer-html5 .rst-content dl.footnote{margin-bottom:24px}html.writer-html5 .rst-content dl.citation>dt,html.writer-html5 .rst-content dl.field-list>dt,html.writer-html5 .rst-content dl.footnote>dt{padding-left:1rem}html.writer-html5 .rst-content dl.citation>dd,html.writer-html5 .rst-content dl.citation>dt,html.writer-html5 .rst-content dl.field-list>dd,html.writer-html5 .rst-content dl.field-list>dt,html.writer-html5 .rst-content dl.footnote>dd,html.writer-html5 .rst-content dl.footnote>dt{margin-bottom:0}html.writer-html5 .rst-content dl.citation,html.writer-html5 .rst-content dl.footnote{font-size:.9rem}html.writer-html5 .rst-content dl.citation>dt,html.writer-html5 .rst-content dl.footnote>dt{margin:0 .5rem .5rem 0;line-height:1.2rem;word-break:break-all;font-weight:400}html.writer-html5 .rst-content dl.citation>dt>span.brackets:before,html.writer-html5 .rst-content dl.footnote>dt>span.brackets:before{content:"["}html.writer-html5 .rst-content dl.citation>dt>span.brackets:after,html.writer-html5 .rst-content dl.footnote>dt>span.brackets:after{content:"]"}html.writer-html5 .rst-content dl.citation>dt>span.fn-backref,html.writer-html5 .rst-content dl.footnote>dt>span.fn-backref{text-align:left;font-style:italic;margin-left:.65rem;word-break:break-word;word-spacing:-.1rem;max-width:5rem}html.writer-html5 .rst-content dl.citation>dt>span.fn-backref>a,html.writer-html5 .rst-content dl.footnote>dt>span.fn-backref>a{word-break:keep-all}html.writer-html5 .rst-content dl.citation>dt>span.fn-backref>a:not(:first-child):before,html.writer-html5 .rst-content dl.footnote>dt>span.fn-backref>a:not(:first-child):before{content:" "}html.writer-html5 .rst-content dl.citation>dd,html.writer-html5 .rst-content dl.footnote>dd{margin:0 0 .5rem;line-height:1.2rem}html.writer-html5 .rst-content dl.citation>dd p,html.writer-html5 .rst-content dl.footnote>dd p{font-size:.9rem}html.writer-html5 .rst-content aside.citation,html.writer-html5 .rst-content aside.footnote,html.writer-html5 .rst-content div.citation{padding-left:1rem;padding-right:1rem;font-size:.9rem;line-height:1.2rem}html.writer-html5 .rst-content aside.citation p,html.writer-html5 .rst-content aside.footnote p,html.writer-html5 .rst-content div.citation p{font-size:.9rem;line-height:1.2rem;margin-bottom:12px}html.writer-html5 .rst-content aside.citation span.backrefs,html.writer-html5 .rst-content aside.footnote span.backrefs,html.writer-html5 .rst-content div.citation span.backrefs{text-align:left;font-style:italic;margin-left:.65rem;word-break:break-word;word-spacing:-.1rem;max-width:5rem}html.writer-html5 .rst-content aside.citation span.backrefs>a,html.writer-html5 .rst-content aside.footnote span.backrefs>a,html.writer-html5 .rst-content div.citation span.backrefs>a{word-break:keep-all}html.writer-html5 .rst-content aside.citation span.backrefs>a:not(:first-child):before,html.writer-html5 .rst-content aside.footnote span.backrefs>a:not(:first-child):before,html.writer-html5 .rst-content div.citation span.backrefs>a:not(:first-child):before{content:" "}html.writer-html5 .rst-content aside.citation span.label,html.writer-html5 .rst-content aside.footnote span.label,html.writer-html5 .rst-content div.citation span.label{line-height:1.2rem}html.writer-html5 .rst-content aside.citation-list,html.writer-html5 .rst-content aside.footnote-list,html.writer-html5 .rst-content div.citation-list{margin-bottom:24px}html.writer-html5 .rst-content dl.option-list kbd{font-size:.9rem}.rst-content table.docutils.footnote,html.writer-html4 .rst-content table.docutils.citation,html.writer-html5 .rst-content aside.footnote,html.writer-html5 .rst-content aside.footnote-list aside.footnote,html.writer-html5 .rst-content div.citation-list>div.citation,html.writer-html5 .rst-content dl.citation,html.writer-html5 .rst-content dl.footnote{color:grey}.rst-content table.docutils.footnote code,.rst-content table.docutils.footnote tt,html.writer-html4 .rst-content table.docutils.citation code,html.writer-html4 .rst-content table.docutils.citation tt,html.writer-html5 .rst-content aside.footnote-list aside.footnote code,html.writer-html5 .rst-content aside.footnote-list aside.footnote tt,html.writer-html5 .rst-content aside.footnote code,html.writer-html5 .rst-content aside.footnote tt,html.writer-html5 .rst-content div.citation-list>div.citation code,html.writer-html5 .rst-content div.citation-list>div.citation tt,html.writer-html5 .rst-content dl.citation code,html.writer-html5 .rst-content dl.citation tt,html.writer-html5 .rst-content dl.footnote code,html.writer-html5 .rst-content dl.footnote tt{color:#555}.rst-content .wy-table-responsive.citation,.rst-content .wy-table-responsive.footnote{margin-bottom:0}.rst-content .wy-table-responsive.citation+:not(.citation),.rst-content .wy-table-responsive.footnote+:not(.footnote){margin-top:24px}.rst-content .wy-table-responsive.citation:last-child,.rst-content .wy-table-responsive.footnote:last-child{margin-bottom:24px}.rst-content table.docutils th{border-color:#e1e4e5}html.writer-html5 .rst-content table.docutils th{border:1px solid #e1e4e5}html.writer-html5 .rst-content table.docutils td>p,html.writer-html5 .rst-content table.docutils th>p{line-height:1rem;margin-bottom:0;font-size:.9rem}.rst-content table.docutils td .last,.rst-content table.docutils td .last>:last-child{margin-bottom:0}.rst-content table.field-list,.rst-content table.field-list td{border:none}.rst-content table.field-list td p{line-height:inherit}.rst-content table.field-list td>strong{display:inline-block}.rst-content table.field-list .field-name{padding-right:10px;text-align:left;white-space:nowrap}.rst-content table.field-list .field-body{text-align:left}.rst-content code,.rst-content tt{color:#000;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;padding:2px 5px}.rst-content code big,.rst-content code em,.rst-content tt big,.rst-content tt em{font-size:100%!important;line-height:normal}.rst-content code.literal,.rst-content tt.literal{color:#e74c3c;white-space:normal}.rst-content code.xref,.rst-content tt.xref,a .rst-content code,a .rst-content tt{font-weight:700;color:#404040;overflow-wrap:normal}.rst-content kbd,.rst-content pre,.rst-content samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace}.rst-content a code,.rst-content a tt{color:#2980b9}.rst-content dl{margin-bottom:24px}.rst-content dl dt{font-weight:700;margin-bottom:12px}.rst-content dl ol,.rst-content dl p,.rst-content dl table,.rst-content dl ul{margin-bottom:12px}.rst-content dl dd{margin:0 0 12px 24px;line-height:24px}.rst-content dl dd>ol:last-child,.rst-content dl dd>p:last-child,.rst-content dl dd>table:last-child,.rst-content dl dd>ul:last-child{margin-bottom:0}html.writer-html4 .rst-content dl:not(.docutils),html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple){margin-bottom:24px}html.writer-html4 .rst-content dl:not(.docutils)>dt,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt{display:table;margin:6px 0;font-size:90%;line-height:normal;background:#e7f2fa;color:#2980b9;border-top:3px solid #6ab0de;padding:6px;position:relative}html.writer-html4 .rst-content dl:not(.docutils)>dt:before,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt:before{color:#6ab0de}html.writer-html4 .rst-content dl:not(.docutils)>dt .headerlink,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt .headerlink{color:#404040;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils) dl:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) dl:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt{margin-bottom:6px;border:none;border-left:3px solid #ccc;background:#f0f0f0;color:#555}html.writer-html4 .rst-content dl:not(.docutils) dl:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt .headerlink,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) dl:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt .headerlink{color:#404040;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils)>dt:first-child,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt:first-child{margin-top:0}html.writer-html4 .rst-content dl:not(.docutils) code.descclassname,html.writer-html4 .rst-content dl:not(.docutils) code.descname,html.writer-html4 .rst-content dl:not(.docutils) tt.descclassname,html.writer-html4 .rst-content dl:not(.docutils) tt.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) code.descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) code.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) tt.descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) tt.descname{background-color:transparent;border:none;padding:0;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils) code.descname,html.writer-html4 .rst-content dl:not(.docutils) tt.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) code.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) tt.descname{font-weight:700}html.writer-html4 .rst-content dl:not(.docutils) .optional,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .optional{display:inline-block;padding:0 4px;color:#000;font-weight:700}html.writer-html4 .rst-content dl:not(.docutils) .property,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .property{display:inline-block;padding-right:8px;max-width:100%}html.writer-html4 .rst-content dl:not(.docutils) .k,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .k{font-style:italic}html.writer-html4 .rst-content dl:not(.docutils) .descclassname,html.writer-html4 .rst-content dl:not(.docutils) .descname,html.writer-html4 .rst-content dl:not(.docutils) .sig-name,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .sig-name{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;color:#000}.rst-content .viewcode-back,.rst-content .viewcode-link{display:inline-block;color:#27ae60;font-size:80%;padding-left:24px}.rst-content .viewcode-back{display:block;float:right}.rst-content p.rubric{margin-bottom:12px;font-weight:700}.rst-content code.download,.rst-content tt.download{background:inherit;padding:inherit;font-weight:400;font-family:inherit;font-size:inherit;color:inherit;border:inherit;white-space:inherit}.rst-content code.download span:first-child,.rst-content tt.download span:first-child{-webkit-font-smoothing:subpixel-antialiased}.rst-content code.download span:first-child:before,.rst-content tt.download span:first-child:before{margin-right:4px}.rst-content .guilabel,.rst-content .menuselection{font-size:80%;font-weight:700;border-radius:4px;padding:2.4px 6px;margin:auto 2px}.rst-content .guilabel,.rst-content .menuselection{border:1px solid #7fbbe3;background:#e7f2fa}.rst-content :not(dl.option-list)>:not(dt):not(kbd):not(.kbd)>.kbd,.rst-content :not(dl.option-list)>:not(dt):not(kbd):not(.kbd)>kbd{color:inherit;font-size:80%;background-color:#fff;border:1px solid #a6a6a6;border-radius:4px;box-shadow:0 2px grey;padding:2.4px 6px;margin:auto 0}.rst-content .versionmodified{font-style:italic}@media screen and (max-width:480px){.rst-content .sidebar{width:100%}}span[id*=MathJax-Span]{color:#404040}.math{text-align:center}@font-face{font-family:Lato;src:url(fonts/lato-normal.woff2?bd03a2cc277bbbc338d464e679fe9942) format("woff2"),url(fonts/lato-normal.woff?27bd77b9162d388cb8d4c4217c7c5e2a) format("woff");font-weight:400;font-style:normal;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-bold.woff2?cccb897485813c7c256901dbca54ecf2) format("woff2"),url(fonts/lato-bold.woff?d878b6c29b10beca227e9eef4246111b) format("woff");font-weight:700;font-style:normal;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-bold-italic.woff2?0b6bb6725576b072c5d0b02ecdd1900d) format("woff2"),url(fonts/lato-bold-italic.woff?9c7e4e9eb485b4a121c760e61bc3707c) format("woff");font-weight:700;font-style:italic;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-normal-italic.woff2?4eb103b4d12be57cb1d040ed5e162e9d) format("woff2"),url(fonts/lato-normal-italic.woff?f28f2d6482446544ef1ea1ccc6dd5892) format("woff");font-weight:400;font-style:italic;font-display:block}@font-face{font-family:Roboto Slab;font-style:normal;font-weight:400;src:url(fonts/Roboto-Slab-Regular.woff2?7abf5b8d04d26a2cafea937019bca958) format("woff2"),url(fonts/Roboto-Slab-Regular.woff?c1be9284088d487c5e3ff0a10a92e58c) format("woff");font-display:block}@font-face{font-family:Roboto Slab;font-style:normal;font-weight:700;src:url(fonts/Roboto-Slab-Bold.woff2?9984f4a9bda09be08e83f2506954adbe) format("woff2"),url(fonts/Roboto-Slab-Bold.woff?bed5564a116b05148e3b3bea6fb1162a) format("woff");font-display:block} \ No newline at end of file diff --git a/docs/_build/html/_static/doctools.js b/docs/_build/html/_static/doctools.js deleted file mode 100644 index 4d67807..0000000 --- a/docs/_build/html/_static/doctools.js +++ /dev/null @@ -1,156 +0,0 @@ -/* - * doctools.js - * ~~~~~~~~~~~ - * - * Base JavaScript utilities for all Sphinx HTML documentation. - * - * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS. - * :license: BSD, see LICENSE for details. - * - */ -"use strict"; - -const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([ - "TEXTAREA", - "INPUT", - "SELECT", - "BUTTON", -]); - -const _ready = (callback) => { - if (document.readyState !== "loading") { - callback(); - } else { - document.addEventListener("DOMContentLoaded", callback); - } -}; - -/** - * Small JavaScript module for the documentation. - */ -const Documentation = { - init: () => { - Documentation.initDomainIndexTable(); - Documentation.initOnKeyListeners(); - }, - - /** - * i18n support - */ - TRANSLATIONS: {}, - PLURAL_EXPR: (n) => (n === 1 ? 0 : 1), - LOCALE: "unknown", - - // gettext and ngettext don't access this so that the functions - // can safely bound to a different name (_ = Documentation.gettext) - gettext: (string) => { - const translated = Documentation.TRANSLATIONS[string]; - switch (typeof translated) { - case "undefined": - return string; // no translation - case "string": - return translated; // translation exists - default: - return translated[0]; // (singular, plural) translation tuple exists - } - }, - - ngettext: (singular, plural, n) => { - const translated = Documentation.TRANSLATIONS[singular]; - if (typeof translated !== "undefined") - return translated[Documentation.PLURAL_EXPR(n)]; - return n === 1 ? singular : plural; - }, - - addTranslations: (catalog) => { - Object.assign(Documentation.TRANSLATIONS, catalog.messages); - Documentation.PLURAL_EXPR = new Function( - "n", - `return (${catalog.plural_expr})` - ); - Documentation.LOCALE = catalog.locale; - }, - - /** - * helper function to focus on search bar - */ - focusSearchBar: () => { - document.querySelectorAll("input[name=q]")[0]?.focus(); - }, - - /** - * Initialise the domain index toggle buttons - */ - initDomainIndexTable: () => { - const toggler = (el) => { - const idNumber = el.id.substr(7); - const toggledRows = document.querySelectorAll(`tr.cg-${idNumber}`); - if (el.src.substr(-9) === "minus.png") { - el.src = `${el.src.substr(0, el.src.length - 9)}plus.png`; - toggledRows.forEach((el) => (el.style.display = "none")); - } else { - el.src = `${el.src.substr(0, el.src.length - 8)}minus.png`; - toggledRows.forEach((el) => (el.style.display = "")); - } - }; - - const togglerElements = document.querySelectorAll("img.toggler"); - togglerElements.forEach((el) => - el.addEventListener("click", (event) => toggler(event.currentTarget)) - ); - togglerElements.forEach((el) => (el.style.display = "")); - if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler); - }, - - initOnKeyListeners: () => { - // only install a listener if it is really needed - if ( - !DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS && - !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS - ) - return; - - document.addEventListener("keydown", (event) => { - // bail for input elements - if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; - // bail with special keys - if (event.altKey || event.ctrlKey || event.metaKey) return; - - if (!event.shiftKey) { - switch (event.key) { - case "ArrowLeft": - if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; - - const prevLink = document.querySelector('link[rel="prev"]'); - if (prevLink && prevLink.href) { - window.location.href = prevLink.href; - event.preventDefault(); - } - break; - case "ArrowRight": - if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; - - const nextLink = document.querySelector('link[rel="next"]'); - if (nextLink && nextLink.href) { - window.location.href = nextLink.href; - event.preventDefault(); - } - break; - } - } - - // some keyboard layouts may need Shift to get / - switch (event.key) { - case "/": - if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break; - Documentation.focusSearchBar(); - event.preventDefault(); - } - }); - }, -}; - -// quick alias for translations -const _ = Documentation.gettext; - -_ready(Documentation.init); diff --git a/docs/_build/html/_static/documentation_options.js b/docs/_build/html/_static/documentation_options.js deleted file mode 100644 index 7e4c114..0000000 --- a/docs/_build/html/_static/documentation_options.js +++ /dev/null @@ -1,13 +0,0 @@ -const DOCUMENTATION_OPTIONS = { - VERSION: '', - LANGUAGE: 'en', - COLLAPSE_INDEX: false, - BUILDER: 'html', - FILE_SUFFIX: '.html', - LINK_SUFFIX: '.html', - HAS_SOURCE: true, - SOURCELINK_SUFFIX: '.txt', - NAVIGATION_WITH_KEYS: false, - SHOW_SEARCH_SUMMARY: true, - ENABLE_SEARCH_SHORTCUTS: true, -}; \ No newline at end of file diff --git a/docs/_build/html/_static/file.png b/docs/_build/html/_static/file.png deleted file mode 100644 index a858a41..0000000 Binary files a/docs/_build/html/_static/file.png and /dev/null differ diff --git a/docs/_build/html/_static/fonts/Lato/lato-bold.eot b/docs/_build/html/_static/fonts/Lato/lato-bold.eot deleted file mode 100644 index 3361183..0000000 Binary files a/docs/_build/html/_static/fonts/Lato/lato-bold.eot and /dev/null differ diff --git a/docs/_build/html/_static/fonts/Lato/lato-bold.ttf b/docs/_build/html/_static/fonts/Lato/lato-bold.ttf deleted file mode 100644 index 29f691d..0000000 Binary files a/docs/_build/html/_static/fonts/Lato/lato-bold.ttf and /dev/null differ diff --git a/docs/_build/html/_static/fonts/Lato/lato-bold.woff b/docs/_build/html/_static/fonts/Lato/lato-bold.woff deleted file mode 100644 index c6dff51..0000000 Binary files a/docs/_build/html/_static/fonts/Lato/lato-bold.woff and /dev/null differ diff --git a/docs/_build/html/_static/fonts/Lato/lato-bold.woff2 b/docs/_build/html/_static/fonts/Lato/lato-bold.woff2 deleted file mode 100644 index bb19504..0000000 Binary files a/docs/_build/html/_static/fonts/Lato/lato-bold.woff2 and /dev/null differ diff --git a/docs/_build/html/_static/fonts/Lato/lato-bolditalic.eot b/docs/_build/html/_static/fonts/Lato/lato-bolditalic.eot deleted file mode 100644 index 3d41549..0000000 Binary files a/docs/_build/html/_static/fonts/Lato/lato-bolditalic.eot and /dev/null differ diff --git a/docs/_build/html/_static/fonts/Lato/lato-bolditalic.ttf b/docs/_build/html/_static/fonts/Lato/lato-bolditalic.ttf deleted file mode 100644 index f402040..0000000 Binary files a/docs/_build/html/_static/fonts/Lato/lato-bolditalic.ttf and /dev/null differ diff --git a/docs/_build/html/_static/fonts/Lato/lato-bolditalic.woff b/docs/_build/html/_static/fonts/Lato/lato-bolditalic.woff deleted file mode 100644 index 88ad05b..0000000 Binary files a/docs/_build/html/_static/fonts/Lato/lato-bolditalic.woff and /dev/null differ diff --git a/docs/_build/html/_static/fonts/Lato/lato-bolditalic.woff2 b/docs/_build/html/_static/fonts/Lato/lato-bolditalic.woff2 deleted file mode 100644 index c4e3d80..0000000 Binary files a/docs/_build/html/_static/fonts/Lato/lato-bolditalic.woff2 and /dev/null differ diff --git a/docs/_build/html/_static/fonts/Lato/lato-italic.eot b/docs/_build/html/_static/fonts/Lato/lato-italic.eot deleted file mode 100644 index 3f82642..0000000 Binary files a/docs/_build/html/_static/fonts/Lato/lato-italic.eot and /dev/null differ diff --git a/docs/_build/html/_static/fonts/Lato/lato-italic.ttf b/docs/_build/html/_static/fonts/Lato/lato-italic.ttf deleted file mode 100644 index b4bfc9b..0000000 Binary files a/docs/_build/html/_static/fonts/Lato/lato-italic.ttf and /dev/null differ diff --git a/docs/_build/html/_static/fonts/Lato/lato-italic.woff b/docs/_build/html/_static/fonts/Lato/lato-italic.woff deleted file mode 100644 index 76114bc..0000000 Binary files a/docs/_build/html/_static/fonts/Lato/lato-italic.woff and /dev/null differ diff --git a/docs/_build/html/_static/fonts/Lato/lato-italic.woff2 b/docs/_build/html/_static/fonts/Lato/lato-italic.woff2 deleted file mode 100644 index 3404f37..0000000 Binary files a/docs/_build/html/_static/fonts/Lato/lato-italic.woff2 and /dev/null differ diff --git a/docs/_build/html/_static/fonts/Lato/lato-regular.eot b/docs/_build/html/_static/fonts/Lato/lato-regular.eot deleted file mode 100644 index 11e3f2a..0000000 Binary files a/docs/_build/html/_static/fonts/Lato/lato-regular.eot and /dev/null differ diff --git a/docs/_build/html/_static/fonts/Lato/lato-regular.ttf b/docs/_build/html/_static/fonts/Lato/lato-regular.ttf deleted file mode 100644 index 74decd9..0000000 Binary files a/docs/_build/html/_static/fonts/Lato/lato-regular.ttf and /dev/null differ diff --git a/docs/_build/html/_static/fonts/Lato/lato-regular.woff b/docs/_build/html/_static/fonts/Lato/lato-regular.woff deleted file mode 100644 index ae1307f..0000000 Binary files a/docs/_build/html/_static/fonts/Lato/lato-regular.woff and /dev/null differ diff --git a/docs/_build/html/_static/fonts/Lato/lato-regular.woff2 b/docs/_build/html/_static/fonts/Lato/lato-regular.woff2 deleted file mode 100644 index 3bf9843..0000000 Binary files a/docs/_build/html/_static/fonts/Lato/lato-regular.woff2 and /dev/null differ diff --git a/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot b/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot deleted file mode 100644 index 79dc8ef..0000000 Binary files a/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot and /dev/null differ diff --git a/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf b/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf deleted file mode 100644 index df5d1df..0000000 Binary files a/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf and /dev/null differ diff --git a/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff b/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff deleted file mode 100644 index 6cb6000..0000000 Binary files a/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff and /dev/null differ diff --git a/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 b/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 deleted file mode 100644 index 7059e23..0000000 Binary files a/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 and /dev/null differ diff --git a/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot b/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot deleted file mode 100644 index 2f7ca78..0000000 Binary files a/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot and /dev/null differ diff --git a/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf b/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf deleted file mode 100644 index eb52a79..0000000 Binary files a/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf and /dev/null differ diff --git a/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff b/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff deleted file mode 100644 index f815f63..0000000 Binary files a/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff and /dev/null differ diff --git a/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 b/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 deleted file mode 100644 index f2c76e5..0000000 Binary files a/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 and /dev/null differ diff --git a/docs/_build/html/_static/jquery.js b/docs/_build/html/_static/jquery.js deleted file mode 100644 index c4c6022..0000000 --- a/docs/_build/html/_static/jquery.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=y.elements;return"string"==typeof a?a.split(" "):a}function e(a,b){var c=y.elements;"string"!=typeof c&&(c=c.join(" ")),"string"!=typeof a&&(a=a.join(" ")),y.elements=c+" "+a,j(b)}function f(a){var b=x[a[v]];return b||(b={},w++,a[v]=w,x[w]=b),b}function g(a,c,d){if(c||(c=b),q)return c.createElement(a);d||(d=f(c));var e;return e=d.cache[a]?d.cache[a].cloneNode():u.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!e.canHaveChildren||t.test(a)||e.tagUrn?e:d.frag.appendChild(e)}function h(a,c){if(a||(a=b),q)return a.createDocumentFragment();c=c||f(a);for(var e=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)e.createElement(h[g]);return e}function i(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return y.shivMethods?g(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-:]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(y,b.frag)}function j(a){a||(a=b);var d=f(a);return!y.shivCSS||p||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),q||i(a,d),a}function k(a){for(var b,c=a.getElementsByTagName("*"),e=c.length,f=RegExp("^(?:"+d().join("|")+")$","i"),g=[];e--;)b=c[e],f.test(b.nodeName)&&g.push(b.applyElement(l(b)));return g}function l(a){for(var b,c=a.attributes,d=c.length,e=a.ownerDocument.createElement(A+":"+a.nodeName);d--;)b=c[d],b.specified&&e.setAttribute(b.nodeName,b.nodeValue);return e.style.cssText=a.style.cssText,e}function m(a){for(var b,c=a.split("{"),e=c.length,f=RegExp("(^|[\\s,>+~])("+d().join("|")+")(?=[[\\s,>+~#.:]|$)","gi"),g="$1"+A+"\\:$2";e--;)b=c[e]=c[e].split("}"),b[b.length-1]=b[b.length-1].replace(f,g),c[e]=b.join("}");return c.join("{")}function n(a){for(var b=a.length;b--;)a[b].removeNode()}function o(a){function b(){clearTimeout(g._removeSheetTimer),d&&d.removeNode(!0),d=null}var d,e,g=f(a),h=a.namespaces,i=a.parentWindow;return!B||a.printShived?a:("undefined"==typeof h[A]&&h.add(A),i.attachEvent("onbeforeprint",function(){b();for(var f,g,h,i=a.styleSheets,j=[],l=i.length,n=Array(l);l--;)n[l]=i[l];for(;h=n.pop();)if(!h.disabled&&z.test(h.media)){try{f=h.imports,g=f.length}catch(o){g=0}for(l=0;g>l;l++)n.push(f[l]);try{j.push(h.cssText)}catch(o){}}j=m(j.reverse().join("")),e=k(a),d=c(a,j)}),i.attachEvent("onafterprint",function(){n(e),clearTimeout(g._removeSheetTimer),g._removeSheetTimer=setTimeout(b,500)}),a.printShived=!0,a)}var p,q,r="3.7.3",s=a.html5||{},t=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,u=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,v="_html5shiv",w=0,x={};!function(){try{var a=b.createElement("a");a.innerHTML="",p="hidden"in a,q=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){p=!0,q=!0}}();var y={elements:s.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:r,shivCSS:s.shivCSS!==!1,supportsUnknownElements:q,shivMethods:s.shivMethods!==!1,type:"default",shivDocument:j,createElement:g,createDocumentFragment:h,addElements:e};a.html5=y,j(b);var z=/^$|\b(?:all|print)\b/,A="html5shiv",B=!q&&function(){var c=b.documentElement;return!("undefined"==typeof b.namespaces||"undefined"==typeof b.parentWindow||"undefined"==typeof c.applyElement||"undefined"==typeof c.removeNode||"undefined"==typeof a.attachEvent)}();y.type+=" print",y.shivPrint=o,o(b),"object"==typeof module&&module.exports&&(module.exports=y)}("undefined"!=typeof window?window:this,document); \ No newline at end of file diff --git a/docs/_build/html/_static/js/html5shiv.min.js b/docs/_build/html/_static/js/html5shiv.min.js deleted file mode 100644 index cd1c674..0000000 --- a/docs/_build/html/_static/js/html5shiv.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/** -* @preserve HTML5 Shiv 3.7.3 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed -*/ -!function(a,b){function c(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=t.elements;return"string"==typeof a?a.split(" "):a}function e(a,b){var c=t.elements;"string"!=typeof c&&(c=c.join(" ")),"string"!=typeof a&&(a=a.join(" ")),t.elements=c+" "+a,j(b)}function f(a){var b=s[a[q]];return b||(b={},r++,a[q]=r,s[r]=b),b}function g(a,c,d){if(c||(c=b),l)return c.createElement(a);d||(d=f(c));var e;return e=d.cache[a]?d.cache[a].cloneNode():p.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!e.canHaveChildren||o.test(a)||e.tagUrn?e:d.frag.appendChild(e)}function h(a,c){if(a||(a=b),l)return a.createDocumentFragment();c=c||f(a);for(var e=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)e.createElement(h[g]);return e}function i(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return t.shivMethods?g(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-:]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(t,b.frag)}function j(a){a||(a=b);var d=f(a);return!t.shivCSS||k||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),l||i(a,d),a}var k,l,m="3.7.3-pre",n=a.html5||{},o=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,p=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,q="_html5shiv",r=0,s={};!function(){try{var a=b.createElement("a");a.innerHTML="",k="hidden"in a,l=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){k=!0,l=!0}}();var t={elements:n.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:m,shivCSS:n.shivCSS!==!1,supportsUnknownElements:l,shivMethods:n.shivMethods!==!1,type:"default",shivDocument:j,createElement:g,createDocumentFragment:h,addElements:e};a.html5=t,j(b),"object"==typeof module&&module.exports&&(module.exports=t)}("undefined"!=typeof window?window:this,document); \ No newline at end of file diff --git a/docs/_build/html/_static/js/theme.js b/docs/_build/html/_static/js/theme.js deleted file mode 100644 index 1fddb6e..0000000 --- a/docs/_build/html/_static/js/theme.js +++ /dev/null @@ -1 +0,0 @@ -!function(n){var e={};function t(i){if(e[i])return e[i].exports;var o=e[i]={i:i,l:!1,exports:{}};return n[i].call(o.exports,o,o.exports,t),o.l=!0,o.exports}t.m=n,t.c=e,t.d=function(n,e,i){t.o(n,e)||Object.defineProperty(n,e,{enumerable:!0,get:i})},t.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},t.t=function(n,e){if(1&e&&(n=t(n)),8&e)return n;if(4&e&&"object"==typeof n&&n&&n.__esModule)return n;var i=Object.create(null);if(t.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:n}),2&e&&"string"!=typeof n)for(var o in n)t.d(i,o,function(e){return n[e]}.bind(null,o));return i},t.n=function(n){var e=n&&n.__esModule?function(){return n.default}:function(){return n};return t.d(e,"a",e),e},t.o=function(n,e){return Object.prototype.hasOwnProperty.call(n,e)},t.p="",t(t.s=0)}([function(n,e,t){t(1),n.exports=t(3)},function(n,e,t){(function(){var e="undefined"!=typeof window?window.jQuery:t(2);n.exports.ThemeNav={navBar:null,win:null,winScroll:!1,winResize:!1,linkScroll:!1,winPosition:0,winHeight:null,docHeight:null,isRunning:!1,enable:function(n){var t=this;void 0===n&&(n=!0),t.isRunning||(t.isRunning=!0,e((function(e){t.init(e),t.reset(),t.win.on("hashchange",t.reset),n&&t.win.on("scroll",(function(){t.linkScroll||t.winScroll||(t.winScroll=!0,requestAnimationFrame((function(){t.onScroll()})))})),t.win.on("resize",(function(){t.winResize||(t.winResize=!0,requestAnimationFrame((function(){t.onResize()})))})),t.onResize()})))},enableSticky:function(){this.enable(!0)},init:function(n){n(document);var e=this;this.navBar=n("div.wy-side-scroll:first"),this.win=n(window),n(document).on("click","[data-toggle='wy-nav-top']",(function(){n("[data-toggle='wy-nav-shift']").toggleClass("shift"),n("[data-toggle='rst-versions']").toggleClass("shift")})).on("click",".wy-menu-vertical .current ul li a",(function(){var t=n(this);n("[data-toggle='wy-nav-shift']").removeClass("shift"),n("[data-toggle='rst-versions']").toggleClass("shift"),e.toggleCurrent(t),e.hashChange()})).on("click","[data-toggle='rst-current-version']",(function(){n("[data-toggle='rst-versions']").toggleClass("shift-up")})),n("table.docutils:not(.field-list,.footnote,.citation)").wrap("
"),n("table.docutils.footnote").wrap("
"),n("table.docutils.citation").wrap("
"),n(".wy-menu-vertical ul").not(".simple").siblings("a").each((function(){var t=n(this);expand=n(''),expand.on("click",(function(n){return e.toggleCurrent(t),n.stopPropagation(),!1})),t.prepend(expand)}))},reset:function(){var n=encodeURI(window.location.hash)||"#";try{var e=$(".wy-menu-vertical"),t=e.find('[href="'+n+'"]');if(0===t.length){var i=$('.document [id="'+n.substring(1)+'"]').closest("div.section");0===(t=e.find('[href="#'+i.attr("id")+'"]')).length&&(t=e.find('[href="#"]'))}if(t.length>0){$(".wy-menu-vertical .current").removeClass("current").attr("aria-expanded","false"),t.addClass("current").attr("aria-expanded","true"),t.closest("li.toctree-l1").parent().addClass("current").attr("aria-expanded","true");for(let n=1;n<=10;n++)t.closest("li.toctree-l"+n).addClass("current").attr("aria-expanded","true");t[0].scrollIntoView()}}catch(n){console.log("Error expanding nav for anchor",n)}},onScroll:function(){this.winScroll=!1;var n=this.win.scrollTop(),e=n+this.winHeight,t=this.navBar.scrollTop()+(n-this.winPosition);n<0||e>this.docHeight||(this.navBar.scrollTop(t),this.winPosition=n)},onResize:function(){this.winResize=!1,this.winHeight=this.win.height(),this.docHeight=$(document).height()},hashChange:function(){this.linkScroll=!0,this.win.one("hashchange",(function(){this.linkScroll=!1}))},toggleCurrent:function(n){var e=n.closest("li");e.siblings("li.current").removeClass("current").attr("aria-expanded","false"),e.siblings().find("li.current").removeClass("current").attr("aria-expanded","false");var t=e.find("> ul li");t.length&&(t.removeClass("current").attr("aria-expanded","false"),e.toggleClass("current").attr("aria-expanded",(function(n,e){return"true"==e?"false":"true"})))}},"undefined"!=typeof window&&(window.SphinxRtdTheme={Navigation:n.exports.ThemeNav,StickyNav:n.exports.ThemeNav}),function(){for(var n=0,e=["ms","moz","webkit","o"],t=0;t b.version - }), function (i, item) { - $("
").append( - $("").text(item.display).attr('href', item.url) - ).appendTo("#versionselector"); - }); - }) - .fail(function (d, textStatus, error) { - console.error("getJSON failed, status: " + textStatus + ", error: " + error); - }); -}); - -console.log("Loading versions from " + versions_json_url); diff --git a/docs/_build/html/_static/language_data.js b/docs/_build/html/_static/language_data.js deleted file mode 100644 index 367b8ed..0000000 --- a/docs/_build/html/_static/language_data.js +++ /dev/null @@ -1,199 +0,0 @@ -/* - * language_data.js - * ~~~~~~~~~~~~~~~~ - * - * This script contains the language-specific data used by searchtools.js, - * namely the list of stopwords, stemmer, scorer and splitter. - * - * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS. - * :license: BSD, see LICENSE for details. - * - */ - -var stopwords = ["a", "and", "are", "as", "at", "be", "but", "by", "for", "if", "in", "into", "is", "it", "near", "no", "not", "of", "on", "or", "such", "that", "the", "their", "then", "there", "these", "they", "this", "to", "was", "will", "with"]; - - -/* Non-minified version is copied as a separate JS file, if available */ - -/** - * Porter Stemmer - */ -var Stemmer = function() { - - var step2list = { - ational: 'ate', - tional: 'tion', - enci: 'ence', - anci: 'ance', - izer: 'ize', - bli: 'ble', - alli: 'al', - entli: 'ent', - eli: 'e', - ousli: 'ous', - ization: 'ize', - ation: 'ate', - ator: 'ate', - alism: 'al', - iveness: 'ive', - fulness: 'ful', - ousness: 'ous', - aliti: 'al', - iviti: 'ive', - biliti: 'ble', - logi: 'log' - }; - - var step3list = { - icate: 'ic', - ative: '', - alize: 'al', - iciti: 'ic', - ical: 'ic', - ful: '', - ness: '' - }; - - var c = "[^aeiou]"; // consonant - var v = "[aeiouy]"; // vowel - var C = c + "[^aeiouy]*"; // consonant sequence - var V = v + "[aeiou]*"; // vowel sequence - - var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0 - var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1 - var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1 - var s_v = "^(" + C + ")?" + v; // vowel in stem - - this.stemWord = function (w) { - var stem; - var suffix; - var firstch; - var origword = w; - - if (w.length < 3) - return w; - - var re; - var re2; - var re3; - var re4; - - firstch = w.substr(0,1); - if (firstch == "y") - w = firstch.toUpperCase() + w.substr(1); - - // Step 1a - re = /^(.+?)(ss|i)es$/; - re2 = /^(.+?)([^s])s$/; - - if (re.test(w)) - w = w.replace(re,"$1$2"); - else if (re2.test(w)) - w = w.replace(re2,"$1$2"); - - // Step 1b - re = /^(.+?)eed$/; - re2 = /^(.+?)(ed|ing)$/; - if (re.test(w)) { - var fp = re.exec(w); - re = new RegExp(mgr0); - if (re.test(fp[1])) { - re = /.$/; - w = w.replace(re,""); - } - } - else if (re2.test(w)) { - var fp = re2.exec(w); - stem = fp[1]; - re2 = new RegExp(s_v); - if (re2.test(stem)) { - w = stem; - re2 = /(at|bl|iz)$/; - re3 = new RegExp("([^aeiouylsz])\\1$"); - re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); - if (re2.test(w)) - w = w + "e"; - else if (re3.test(w)) { - re = /.$/; - w = w.replace(re,""); - } - else if (re4.test(w)) - w = w + "e"; - } - } - - // Step 1c - re = /^(.+?)y$/; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - re = new RegExp(s_v); - if (re.test(stem)) - w = stem + "i"; - } - - // Step 2 - re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - suffix = fp[2]; - re = new RegExp(mgr0); - if (re.test(stem)) - w = stem + step2list[suffix]; - } - - // Step 3 - re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - suffix = fp[2]; - re = new RegExp(mgr0); - if (re.test(stem)) - w = stem + step3list[suffix]; - } - - // Step 4 - re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; - re2 = /^(.+?)(s|t)(ion)$/; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - re = new RegExp(mgr1); - if (re.test(stem)) - w = stem; - } - else if (re2.test(w)) { - var fp = re2.exec(w); - stem = fp[1] + fp[2]; - re2 = new RegExp(mgr1); - if (re2.test(stem)) - w = stem; - } - - // Step 5 - re = /^(.+?)e$/; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - re = new RegExp(mgr1); - re2 = new RegExp(meq1); - re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); - if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) - w = stem; - } - re = /ll$/; - re2 = new RegExp(mgr1); - if (re.test(w) && re2.test(w)) { - re = /.$/; - w = w.replace(re,""); - } - - // and turn initial Y back to y - if (firstch == "y") - w = firstch.toLowerCase() + w.substr(1); - return w; - } -} - diff --git a/docs/_build/html/_static/logo/mda_favicon.ico b/docs/_build/html/_static/logo/mda_favicon.ico deleted file mode 100644 index 3c102d0..0000000 Binary files a/docs/_build/html/_static/logo/mda_favicon.ico and /dev/null differ diff --git a/docs/_build/html/_static/logo/mda_logo.png b/docs/_build/html/_static/logo/mda_logo.png deleted file mode 100644 index 6553570..0000000 Binary files a/docs/_build/html/_static/logo/mda_logo.png and /dev/null differ diff --git a/docs/_build/html/_static/logo/placeholder_favicon.svg b/docs/_build/html/_static/logo/placeholder_favicon.svg deleted file mode 100644 index cf62228..0000000 --- a/docs/_build/html/_static/logo/placeholder_favicon.svg +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/docs/_build/html/_static/logo/placeholder_logo.png b/docs/_build/html/_static/logo/placeholder_logo.png deleted file mode 100644 index 77e9056..0000000 Binary files a/docs/_build/html/_static/logo/placeholder_logo.png and /dev/null differ diff --git a/docs/_build/html/_static/minus.png b/docs/_build/html/_static/minus.png deleted file mode 100644 index d96755f..0000000 Binary files a/docs/_build/html/_static/minus.png and /dev/null differ diff --git a/docs/_build/html/_static/placeholder_favicon.svg b/docs/_build/html/_static/placeholder_favicon.svg deleted file mode 100644 index cf62228..0000000 --- a/docs/_build/html/_static/placeholder_favicon.svg +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/docs/_build/html/_static/placeholder_logo.png b/docs/_build/html/_static/placeholder_logo.png deleted file mode 100644 index 77e9056..0000000 Binary files a/docs/_build/html/_static/placeholder_logo.png and /dev/null differ diff --git a/docs/_build/html/_static/plus.png b/docs/_build/html/_static/plus.png deleted file mode 100644 index 7107cec..0000000 Binary files a/docs/_build/html/_static/plus.png and /dev/null differ diff --git a/docs/_build/html/_static/pygments.css b/docs/_build/html/_static/pygments.css deleted file mode 100644 index 84ab303..0000000 --- a/docs/_build/html/_static/pygments.css +++ /dev/null @@ -1,75 +0,0 @@ -pre { line-height: 125%; } -td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } -span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } -td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } -span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } -.highlight .hll { background-color: #ffffcc } -.highlight { background: #f8f8f8; } -.highlight .c { color: #3D7B7B; font-style: italic } /* Comment */ -.highlight .err { border: 1px solid #FF0000 } /* Error */ -.highlight .k { color: #008000; font-weight: bold } /* Keyword */ -.highlight .o { color: #666666 } /* Operator */ -.highlight .ch { color: #3D7B7B; font-style: italic } /* Comment.Hashbang */ -.highlight .cm { color: #3D7B7B; font-style: italic } /* Comment.Multiline */ -.highlight .cp { color: #9C6500 } /* Comment.Preproc */ -.highlight .cpf { color: #3D7B7B; font-style: italic } /* Comment.PreprocFile */ -.highlight .c1 { color: #3D7B7B; font-style: italic } /* Comment.Single */ -.highlight .cs { color: #3D7B7B; font-style: italic } /* Comment.Special */ -.highlight .gd { color: #A00000 } /* Generic.Deleted */ -.highlight .ge { font-style: italic } /* Generic.Emph */ -.highlight .ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */ -.highlight .gr { color: #E40000 } /* Generic.Error */ -.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ -.highlight .gi { color: #008400 } /* Generic.Inserted */ -.highlight .go { color: #717171 } /* Generic.Output */ -.highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */ -.highlight .gs { font-weight: bold } /* Generic.Strong */ -.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ -.highlight .gt { color: #0044DD } /* Generic.Traceback */ -.highlight .kc { color: #008000; font-weight: bold } /* Keyword.Constant */ -.highlight .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */ -.highlight .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */ -.highlight .kp { color: #008000 } /* Keyword.Pseudo */ -.highlight .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */ -.highlight .kt { color: #B00040 } /* Keyword.Type */ -.highlight .m { color: #666666 } /* Literal.Number */ -.highlight .s { color: #BA2121 } /* Literal.String */ -.highlight .na { color: #687822 } /* Name.Attribute */ -.highlight .nb { color: #008000 } /* Name.Builtin */ -.highlight .nc { color: #0000FF; font-weight: bold } /* Name.Class */ -.highlight .no { color: #880000 } /* Name.Constant */ -.highlight .nd { color: #AA22FF } /* Name.Decorator */ -.highlight .ni { color: #717171; font-weight: bold } /* Name.Entity */ -.highlight .ne { color: #CB3F38; font-weight: bold } /* Name.Exception */ -.highlight .nf { color: #0000FF } /* Name.Function */ -.highlight .nl { color: #767600 } /* Name.Label */ -.highlight .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */ -.highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */ -.highlight .nv { color: #19177C } /* Name.Variable */ -.highlight .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */ -.highlight .w { color: #bbbbbb } /* Text.Whitespace */ -.highlight .mb { color: #666666 } /* Literal.Number.Bin */ -.highlight .mf { color: #666666 } /* Literal.Number.Float */ -.highlight .mh { color: #666666 } /* Literal.Number.Hex */ -.highlight .mi { color: #666666 } /* Literal.Number.Integer */ -.highlight .mo { color: #666666 } /* Literal.Number.Oct */ -.highlight .sa { color: #BA2121 } /* Literal.String.Affix */ -.highlight .sb { color: #BA2121 } /* Literal.String.Backtick */ -.highlight .sc { color: #BA2121 } /* Literal.String.Char */ -.highlight .dl { color: #BA2121 } /* Literal.String.Delimiter */ -.highlight .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */ -.highlight .s2 { color: #BA2121 } /* Literal.String.Double */ -.highlight .se { color: #AA5D1F; font-weight: bold } /* Literal.String.Escape */ -.highlight .sh { color: #BA2121 } /* Literal.String.Heredoc */ -.highlight .si { color: #A45A77; font-weight: bold } /* Literal.String.Interpol */ -.highlight .sx { color: #008000 } /* Literal.String.Other */ -.highlight .sr { color: #A45A77 } /* Literal.String.Regex */ -.highlight .s1 { color: #BA2121 } /* Literal.String.Single */ -.highlight .ss { color: #19177C } /* Literal.String.Symbol */ -.highlight .bp { color: #008000 } /* Name.Builtin.Pseudo */ -.highlight .fm { color: #0000FF } /* Name.Function.Magic */ -.highlight .vc { color: #19177C } /* Name.Variable.Class */ -.highlight .vg { color: #19177C } /* Name.Variable.Global */ -.highlight .vi { color: #19177C } /* Name.Variable.Instance */ -.highlight .vm { color: #19177C } /* Name.Variable.Magic */ -.highlight .il { color: #666666 } /* Literal.Number.Integer.Long */ \ No newline at end of file diff --git a/docs/_build/html/_static/searchtools.js b/docs/_build/html/_static/searchtools.js deleted file mode 100644 index b08d58c..0000000 --- a/docs/_build/html/_static/searchtools.js +++ /dev/null @@ -1,620 +0,0 @@ -/* - * searchtools.js - * ~~~~~~~~~~~~~~~~ - * - * Sphinx JavaScript utilities for the full-text search. - * - * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS. - * :license: BSD, see LICENSE for details. - * - */ -"use strict"; - -/** - * Simple result scoring code. - */ -if (typeof Scorer === "undefined") { - var Scorer = { - // Implement the following function to further tweak the score for each result - // The function takes a result array [docname, title, anchor, descr, score, filename] - // and returns the new score. - /* - score: result => { - const [docname, title, anchor, descr, score, filename] = result - return score - }, - */ - - // query matches the full name of an object - objNameMatch: 11, - // or matches in the last dotted part of the object name - objPartialMatch: 6, - // Additive scores depending on the priority of the object - objPrio: { - 0: 15, // used to be importantResults - 1: 5, // used to be objectResults - 2: -5, // used to be unimportantResults - }, - // Used when the priority is not in the mapping. - objPrioDefault: 0, - - // query found in title - title: 15, - partialTitle: 7, - // query found in terms - term: 5, - partialTerm: 2, - }; -} - -const _removeChildren = (element) => { - while (element && element.lastChild) element.removeChild(element.lastChild); -}; - -/** - * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#escaping - */ -const _escapeRegExp = (string) => - string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string - -const _displayItem = (item, searchTerms, highlightTerms) => { - const docBuilder = DOCUMENTATION_OPTIONS.BUILDER; - const docFileSuffix = DOCUMENTATION_OPTIONS.FILE_SUFFIX; - const docLinkSuffix = DOCUMENTATION_OPTIONS.LINK_SUFFIX; - const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY; - const contentRoot = document.documentElement.dataset.content_root; - - const [docName, title, anchor, descr, score, _filename] = item; - - let listItem = document.createElement("li"); - let requestUrl; - let linkUrl; - if (docBuilder === "dirhtml") { - // dirhtml builder - let dirname = docName + "/"; - if (dirname.match(/\/index\/$/)) - dirname = dirname.substring(0, dirname.length - 6); - else if (dirname === "index/") dirname = ""; - requestUrl = contentRoot + dirname; - linkUrl = requestUrl; - } else { - // normal html builders - requestUrl = contentRoot + docName + docFileSuffix; - linkUrl = docName + docLinkSuffix; - } - let linkEl = listItem.appendChild(document.createElement("a")); - linkEl.href = linkUrl + anchor; - linkEl.dataset.score = score; - linkEl.innerHTML = title; - if (descr) { - listItem.appendChild(document.createElement("span")).innerHTML = - " (" + descr + ")"; - // highlight search terms in the description - if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js - highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted")); - } - else if (showSearchSummary) - fetch(requestUrl) - .then((responseData) => responseData.text()) - .then((data) => { - if (data) - listItem.appendChild( - Search.makeSearchSummary(data, searchTerms, anchor) - ); - // highlight search terms in the summary - if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js - highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted")); - }); - Search.output.appendChild(listItem); -}; -const _finishSearch = (resultCount) => { - Search.stopPulse(); - Search.title.innerText = _("Search Results"); - if (!resultCount) - Search.status.innerText = Documentation.gettext( - "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories." - ); - else - Search.status.innerText = _( - "Search finished, found ${resultCount} page(s) matching the search query." - ).replace('${resultCount}', resultCount); -}; -const _displayNextItem = ( - results, - resultCount, - searchTerms, - highlightTerms, -) => { - // results left, load the summary and display it - // this is intended to be dynamic (don't sub resultsCount) - if (results.length) { - _displayItem(results.pop(), searchTerms, highlightTerms); - setTimeout( - () => _displayNextItem(results, resultCount, searchTerms, highlightTerms), - 5 - ); - } - // search finished, update title and status message - else _finishSearch(resultCount); -}; -// Helper function used by query() to order search results. -// Each input is an array of [docname, title, anchor, descr, score, filename]. -// Order the results by score (in opposite order of appearance, since the -// `_displayNextItem` function uses pop() to retrieve items) and then alphabetically. -const _orderResultsByScoreThenName = (a, b) => { - const leftScore = a[4]; - const rightScore = b[4]; - if (leftScore === rightScore) { - // same score: sort alphabetically - const leftTitle = a[1].toLowerCase(); - const rightTitle = b[1].toLowerCase(); - if (leftTitle === rightTitle) return 0; - return leftTitle > rightTitle ? -1 : 1; // inverted is intentional - } - return leftScore > rightScore ? 1 : -1; -}; - -/** - * Default splitQuery function. Can be overridden in ``sphinx.search`` with a - * custom function per language. - * - * The regular expression works by splitting the string on consecutive characters - * that are not Unicode letters, numbers, underscores, or emoji characters. - * This is the same as ``\W+`` in Python, preserving the surrogate pair area. - */ -if (typeof splitQuery === "undefined") { - var splitQuery = (query) => query - .split(/[^\p{Letter}\p{Number}_\p{Emoji_Presentation}]+/gu) - .filter(term => term) // remove remaining empty strings -} - -/** - * Search Module - */ -const Search = { - _index: null, - _queued_query: null, - _pulse_status: -1, - - htmlToText: (htmlString, anchor) => { - const htmlElement = new DOMParser().parseFromString(htmlString, 'text/html'); - for (const removalQuery of [".headerlink", "script", "style"]) { - htmlElement.querySelectorAll(removalQuery).forEach((el) => { el.remove() }); - } - if (anchor) { - const anchorContent = htmlElement.querySelector(`[role="main"] ${anchor}`); - if (anchorContent) return anchorContent.textContent; - - console.warn( - `Anchored content block not found. Sphinx search tries to obtain it via DOM query '[role=main] ${anchor}'. Check your theme or template.` - ); - } - - // if anchor not specified or not found, fall back to main content - const docContent = htmlElement.querySelector('[role="main"]'); - if (docContent) return docContent.textContent; - - console.warn( - "Content block not found. Sphinx search tries to obtain it via DOM query '[role=main]'. Check your theme or template." - ); - return ""; - }, - - init: () => { - const query = new URLSearchParams(window.location.search).get("q"); - document - .querySelectorAll('input[name="q"]') - .forEach((el) => (el.value = query)); - if (query) Search.performSearch(query); - }, - - loadIndex: (url) => - (document.body.appendChild(document.createElement("script")).src = url), - - setIndex: (index) => { - Search._index = index; - if (Search._queued_query !== null) { - const query = Search._queued_query; - Search._queued_query = null; - Search.query(query); - } - }, - - hasIndex: () => Search._index !== null, - - deferQuery: (query) => (Search._queued_query = query), - - stopPulse: () => (Search._pulse_status = -1), - - startPulse: () => { - if (Search._pulse_status >= 0) return; - - const pulse = () => { - Search._pulse_status = (Search._pulse_status + 1) % 4; - Search.dots.innerText = ".".repeat(Search._pulse_status); - if (Search._pulse_status >= 0) window.setTimeout(pulse, 500); - }; - pulse(); - }, - - /** - * perform a search for something (or wait until index is loaded) - */ - performSearch: (query) => { - // create the required interface elements - const searchText = document.createElement("h2"); - searchText.textContent = _("Searching"); - const searchSummary = document.createElement("p"); - searchSummary.classList.add("search-summary"); - searchSummary.innerText = ""; - const searchList = document.createElement("ul"); - searchList.classList.add("search"); - - const out = document.getElementById("search-results"); - Search.title = out.appendChild(searchText); - Search.dots = Search.title.appendChild(document.createElement("span")); - Search.status = out.appendChild(searchSummary); - Search.output = out.appendChild(searchList); - - const searchProgress = document.getElementById("search-progress"); - // Some themes don't use the search progress node - if (searchProgress) { - searchProgress.innerText = _("Preparing search..."); - } - Search.startPulse(); - - // index already loaded, the browser was quick! - if (Search.hasIndex()) Search.query(query); - else Search.deferQuery(query); - }, - - _parseQuery: (query) => { - // stem the search terms and add them to the correct list - const stemmer = new Stemmer(); - const searchTerms = new Set(); - const excludedTerms = new Set(); - const highlightTerms = new Set(); - const objectTerms = new Set(splitQuery(query.toLowerCase().trim())); - splitQuery(query.trim()).forEach((queryTerm) => { - const queryTermLower = queryTerm.toLowerCase(); - - // maybe skip this "word" - // stopwords array is from language_data.js - if ( - stopwords.indexOf(queryTermLower) !== -1 || - queryTerm.match(/^\d+$/) - ) - return; - - // stem the word - let word = stemmer.stemWord(queryTermLower); - // select the correct list - if (word[0] === "-") excludedTerms.add(word.substr(1)); - else { - searchTerms.add(word); - highlightTerms.add(queryTermLower); - } - }); - - if (SPHINX_HIGHLIGHT_ENABLED) { // set in sphinx_highlight.js - localStorage.setItem("sphinx_highlight_terms", [...highlightTerms].join(" ")) - } - - // console.debug("SEARCH: searching for:"); - // console.info("required: ", [...searchTerms]); - // console.info("excluded: ", [...excludedTerms]); - - return [query, searchTerms, excludedTerms, highlightTerms, objectTerms]; - }, - - /** - * execute search (requires search index to be loaded) - */ - _performSearch: (query, searchTerms, excludedTerms, highlightTerms, objectTerms) => { - const filenames = Search._index.filenames; - const docNames = Search._index.docnames; - const titles = Search._index.titles; - const allTitles = Search._index.alltitles; - const indexEntries = Search._index.indexentries; - - // Collect multiple result groups to be sorted separately and then ordered. - // Each is an array of [docname, title, anchor, descr, score, filename]. - const normalResults = []; - const nonMainIndexResults = []; - - _removeChildren(document.getElementById("search-progress")); - - const queryLower = query.toLowerCase().trim(); - for (const [title, foundTitles] of Object.entries(allTitles)) { - if (title.toLowerCase().trim().includes(queryLower) && (queryLower.length >= title.length/2)) { - for (const [file, id] of foundTitles) { - const score = Math.round(Scorer.title * queryLower.length / title.length); - const boost = titles[file] === title ? 1 : 0; // add a boost for document titles - normalResults.push([ - docNames[file], - titles[file] !== title ? `${titles[file]} > ${title}` : title, - id !== null ? "#" + id : "", - null, - score + boost, - filenames[file], - ]); - } - } - } - - // search for explicit entries in index directives - for (const [entry, foundEntries] of Object.entries(indexEntries)) { - if (entry.includes(queryLower) && (queryLower.length >= entry.length/2)) { - for (const [file, id, isMain] of foundEntries) { - const score = Math.round(100 * queryLower.length / entry.length); - const result = [ - docNames[file], - titles[file], - id ? "#" + id : "", - null, - score, - filenames[file], - ]; - if (isMain) { - normalResults.push(result); - } else { - nonMainIndexResults.push(result); - } - } - } - } - - // lookup as object - objectTerms.forEach((term) => - normalResults.push(...Search.performObjectSearch(term, objectTerms)) - ); - - // lookup as search terms in fulltext - normalResults.push(...Search.performTermsSearch(searchTerms, excludedTerms)); - - // let the scorer override scores with a custom scoring function - if (Scorer.score) { - normalResults.forEach((item) => (item[4] = Scorer.score(item))); - nonMainIndexResults.forEach((item) => (item[4] = Scorer.score(item))); - } - - // Sort each group of results by score and then alphabetically by name. - normalResults.sort(_orderResultsByScoreThenName); - nonMainIndexResults.sort(_orderResultsByScoreThenName); - - // Combine the result groups in (reverse) order. - // Non-main index entries are typically arbitrary cross-references, - // so display them after other results. - let results = [...nonMainIndexResults, ...normalResults]; - - // remove duplicate search results - // note the reversing of results, so that in the case of duplicates, the highest-scoring entry is kept - let seen = new Set(); - results = results.reverse().reduce((acc, result) => { - let resultStr = result.slice(0, 4).concat([result[5]]).map(v => String(v)).join(','); - if (!seen.has(resultStr)) { - acc.push(result); - seen.add(resultStr); - } - return acc; - }, []); - - return results.reverse(); - }, - - query: (query) => { - const [searchQuery, searchTerms, excludedTerms, highlightTerms, objectTerms] = Search._parseQuery(query); - const results = Search._performSearch(searchQuery, searchTerms, excludedTerms, highlightTerms, objectTerms); - - // for debugging - //Search.lastresults = results.slice(); // a copy - // console.info("search results:", Search.lastresults); - - // print the results - _displayNextItem(results, results.length, searchTerms, highlightTerms); - }, - - /** - * search for object names - */ - performObjectSearch: (object, objectTerms) => { - const filenames = Search._index.filenames; - const docNames = Search._index.docnames; - const objects = Search._index.objects; - const objNames = Search._index.objnames; - const titles = Search._index.titles; - - const results = []; - - const objectSearchCallback = (prefix, match) => { - const name = match[4] - const fullname = (prefix ? prefix + "." : "") + name; - const fullnameLower = fullname.toLowerCase(); - if (fullnameLower.indexOf(object) < 0) return; - - let score = 0; - const parts = fullnameLower.split("."); - - // check for different match types: exact matches of full name or - // "last name" (i.e. last dotted part) - if (fullnameLower === object || parts.slice(-1)[0] === object) - score += Scorer.objNameMatch; - else if (parts.slice(-1)[0].indexOf(object) > -1) - score += Scorer.objPartialMatch; // matches in last name - - const objName = objNames[match[1]][2]; - const title = titles[match[0]]; - - // If more than one term searched for, we require other words to be - // found in the name/title/description - const otherTerms = new Set(objectTerms); - otherTerms.delete(object); - if (otherTerms.size > 0) { - const haystack = `${prefix} ${name} ${objName} ${title}`.toLowerCase(); - if ( - [...otherTerms].some((otherTerm) => haystack.indexOf(otherTerm) < 0) - ) - return; - } - - let anchor = match[3]; - if (anchor === "") anchor = fullname; - else if (anchor === "-") anchor = objNames[match[1]][1] + "-" + fullname; - - const descr = objName + _(", in ") + title; - - // add custom score for some objects according to scorer - if (Scorer.objPrio.hasOwnProperty(match[2])) - score += Scorer.objPrio[match[2]]; - else score += Scorer.objPrioDefault; - - results.push([ - docNames[match[0]], - fullname, - "#" + anchor, - descr, - score, - filenames[match[0]], - ]); - }; - Object.keys(objects).forEach((prefix) => - objects[prefix].forEach((array) => - objectSearchCallback(prefix, array) - ) - ); - return results; - }, - - /** - * search for full-text terms in the index - */ - performTermsSearch: (searchTerms, excludedTerms) => { - // prepare search - const terms = Search._index.terms; - const titleTerms = Search._index.titleterms; - const filenames = Search._index.filenames; - const docNames = Search._index.docnames; - const titles = Search._index.titles; - - const scoreMap = new Map(); - const fileMap = new Map(); - - // perform the search on the required terms - searchTerms.forEach((word) => { - const files = []; - const arr = [ - { files: terms[word], score: Scorer.term }, - { files: titleTerms[word], score: Scorer.title }, - ]; - // add support for partial matches - if (word.length > 2) { - const escapedWord = _escapeRegExp(word); - if (!terms.hasOwnProperty(word)) { - Object.keys(terms).forEach((term) => { - if (term.match(escapedWord)) - arr.push({ files: terms[term], score: Scorer.partialTerm }); - }); - } - if (!titleTerms.hasOwnProperty(word)) { - Object.keys(titleTerms).forEach((term) => { - if (term.match(escapedWord)) - arr.push({ files: titleTerms[term], score: Scorer.partialTitle }); - }); - } - } - - // no match but word was a required one - if (arr.every((record) => record.files === undefined)) return; - - // found search word in contents - arr.forEach((record) => { - if (record.files === undefined) return; - - let recordFiles = record.files; - if (recordFiles.length === undefined) recordFiles = [recordFiles]; - files.push(...recordFiles); - - // set score for the word in each file - recordFiles.forEach((file) => { - if (!scoreMap.has(file)) scoreMap.set(file, {}); - scoreMap.get(file)[word] = record.score; - }); - }); - - // create the mapping - files.forEach((file) => { - if (!fileMap.has(file)) fileMap.set(file, [word]); - else if (fileMap.get(file).indexOf(word) === -1) fileMap.get(file).push(word); - }); - }); - - // now check if the files don't contain excluded terms - const results = []; - for (const [file, wordList] of fileMap) { - // check if all requirements are matched - - // as search terms with length < 3 are discarded - const filteredTermCount = [...searchTerms].filter( - (term) => term.length > 2 - ).length; - if ( - wordList.length !== searchTerms.size && - wordList.length !== filteredTermCount - ) - continue; - - // ensure that none of the excluded terms is in the search result - if ( - [...excludedTerms].some( - (term) => - terms[term] === file || - titleTerms[term] === file || - (terms[term] || []).includes(file) || - (titleTerms[term] || []).includes(file) - ) - ) - break; - - // select one (max) score for the file. - const score = Math.max(...wordList.map((w) => scoreMap.get(file)[w])); - // add result to the result list - results.push([ - docNames[file], - titles[file], - "", - null, - score, - filenames[file], - ]); - } - return results; - }, - - /** - * helper function to return a node containing the - * search summary for a given text. keywords is a list - * of stemmed words. - */ - makeSearchSummary: (htmlText, keywords, anchor) => { - const text = Search.htmlToText(htmlText, anchor); - if (text === "") return null; - - const textLower = text.toLowerCase(); - const actualStartPosition = [...keywords] - .map((k) => textLower.indexOf(k.toLowerCase())) - .filter((i) => i > -1) - .slice(-1)[0]; - const startWithContext = Math.max(actualStartPosition - 120, 0); - - const top = startWithContext === 0 ? "" : "..."; - const tail = startWithContext + 240 < text.length ? "..." : ""; - - let summary = document.createElement("p"); - summary.classList.add("context"); - summary.textContent = top + text.substr(startWithContext, 240).trim() + tail; - - return summary; - }, -}; - -_ready(Search.init); diff --git a/docs/_build/html/_static/site.css b/docs/_build/html/_static/site.css deleted file mode 100644 index 6da5916..0000000 --- a/docs/_build/html/_static/site.css +++ /dev/null @@ -1,10256 +0,0 @@ -@charset "UTF-8"; -@import url(css/theme.css); -@font-face { - font-family: 'PT Sans', Helvetica, Arial, 'sans-serif'; -} - -@use "sass:math"; -/* Bulma Utilities */ -.file-cta, -.file-name, .select select, .textarea, .input { - -moz-appearance: none; - -webkit-appearance: none; - align-items: center; - border: 1px solid transparent; - border-radius: 4px; - box-shadow: none; - display: inline-flex; - font-size: 1rem; - height: 2.5em; - justify-content: flex-start; - line-height: 1.5; - padding-bottom: calc(0.5em - 1px); - padding-left: calc(0.75em - 1px); - padding-right: calc(0.75em - 1px); - padding-top: calc(0.5em - 1px); - position: relative; - vertical-align: top; -} - -.file-cta:focus, -.file-name:focus, .select select:focus, .textarea:focus, .input:focus, .is-focused.file-cta, -.is-focused.file-name, .select select.is-focused, .is-focused.textarea, .is-focused.input, .file-cta:active, -.file-name:active, .select select:active, .textarea:active, .input:active, .is-active.file-cta, -.is-active.file-name, .select select.is-active, .is-active.textarea, .is-active.input { - outline: none; -} - -[disabled].file-cta, -[disabled].file-name, .select select[disabled], [disabled].textarea, [disabled].input, fieldset[disabled] .file-cta, -fieldset[disabled] .file-name, fieldset[disabled] .select select, .select fieldset[disabled] select, fieldset[disabled] .textarea, fieldset[disabled] .input { - cursor: not-allowed; -} - -.is-unselectable, .file, .tabs, .breadcrumb { - -webkit-touch-callout: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -.select:not(.is-multiple):not(.is-loading)::after, .navbar-link:not(.is-arrowless)::after { - border: 3px solid transparent; - border-radius: 2px; - border-right: 0; - border-top: 0; - content: " "; - display: block; - height: 0.625em; - margin-top: -0.4375em; - pointer-events: none; - position: absolute; - top: 50%; - transform: rotate(-45deg); - transform-origin: center; - width: 0.625em; -} - -.tabs:not(:last-child), .level:not(:last-child), .breadcrumb:not(:last-child) { - margin-bottom: 1.5rem; -} - -.control.is-loading::after, .select.is-loading::after { - animation: spinAround 500ms infinite linear; - border: 2px solid #dbdbdb; - border-radius: 290486px; - border-right-color: transparent; - border-top-color: transparent; - content: ""; - display: block; - height: 1em; - position: relative; - width: 1em; -} - -.hero-video, .is-overlay, .image.is-square img, -.image.is-square .has-ratio, .image.is-1by1 img, -.image.is-1by1 .has-ratio, .image.is-5by4 img, -.image.is-5by4 .has-ratio, .image.is-4by3 img, -.image.is-4by3 .has-ratio, .image.is-3by2 img, -.image.is-3by2 .has-ratio, .image.is-5by3 img, -.image.is-5by3 .has-ratio, .image.is-16by9 img, -.image.is-16by9 .has-ratio, .image.is-2by1 img, -.image.is-2by1 .has-ratio, .image.is-3by1 img, -.image.is-3by1 .has-ratio, .image.is-4by5 img, -.image.is-4by5 .has-ratio, .image.is-3by4 img, -.image.is-3by4 .has-ratio, .image.is-2by3 img, -.image.is-2by3 .has-ratio, .image.is-3by5 img, -.image.is-3by5 .has-ratio, .image.is-9by16 img, -.image.is-9by16 .has-ratio, .image.is-1by2 img, -.image.is-1by2 .has-ratio, .image.is-1by3 img, -.image.is-1by3 .has-ratio { - bottom: 0; - left: 0; - position: absolute; - right: 0; - top: 0; -} - -/* Bulma Base */ -/*! minireset.css v0.0.6 | MIT License | github.com/jgthms/minireset.css */ -html, -body, -p, -ol, -ul, -li, -dl, -dt, -dd, -blockquote, -figure, -fieldset, -legend, -textarea, -pre, -iframe, -hr, -h1, -h2, -.rst-content #index h3, -.rst-content .toctree-wrapper .caption, -h3, -h4, -h5, -h6 { - margin: 0; - padding: 0; -} - -h1, -h2, -.rst-content #index h3, -.rst-content .toctree-wrapper .caption, -h3, -h4, -h5, -h6 { - font-size: 100%; - font-weight: normal; -} - -ul { - list-style: none; -} - -button, -input, -select, -textarea { - margin: 0; -} - -html { - box-sizing: border-box; -} - -*, *::before, *::after { - box-sizing: inherit; -} - -img, -video { - height: auto; - max-width: 100%; -} - -iframe { - border: 0; -} - -table { - border-collapse: collapse; - border-spacing: 0; -} - -td, -th { - padding: 0; -} - -td:not([align]), -th:not([align]) { - text-align: inherit; -} - -html { - background-color: #FFFFFF; - font-size: 16px; - -moz-osx-font-smoothing: grayscale; - -webkit-font-smoothing: antialiased; - min-width: 300px; - overflow-x: hidden; - overflow-y: scroll; - text-rendering: optimizeLegibility; - text-size-adjust: 100%; -} - -article, -aside, -figure, -footer, -header, -hgroup, -section { - display: block; -} - -body, -button, -input, -optgroup, -select, -textarea { - font-family: "PT Sans", Helvetica, Arial, "sans-serif"; -} - -code, -pre { - -moz-osx-font-smoothing: auto; - -webkit-font-smoothing: auto; - font-family: Menlo, Monaco, "Courier New", monospace; -} - -body { - color: rgba(0, 0, 0, 0.87); - font-size: 1em; - font-weight: 400; - line-height: 1.5; -} - -a { - color: #FF9200; - cursor: pointer; - text-decoration: none; -} - -a strong { - color: currentColor; -} - -a:hover { - color: #ca6500; -} - -code { - background-color: #f8f8f8; - color: rgba(0, 0, 0, 0.87); - font-size: 1em; - font-weight: normal; - padding: 0.25em; -} - -hr { - background-color: #FFFFFF; - border: none; - display: block; - height: 2px; - margin: 1.5rem 0; -} - -img { - height: auto; - max-width: 100%; -} - -input[type="checkbox"], -input[type="radio"] { - vertical-align: baseline; -} - -small { - font-size: 0.875em; -} - -span { - font-style: inherit; - font-weight: inherit; -} - -strong { - color: #363636; - font-weight: 700; -} - -fieldset { - border: none; -} - -pre { - -webkit-overflow-scrolling: touch; - background-color: #f8f8f8; - color: rgba(0, 0, 0, 0.87); - font-size: 0.825em; - overflow-x: auto; - padding: 0.75em; - white-space: pre; - word-wrap: normal; -} - -pre code { - background-color: transparent; - color: currentColor; - font-size: 1em; - padding: 0; -} - -table td, -table th { - vertical-align: top; -} - -table td:not([align]), -table th:not([align]) { - text-align: inherit; -} - -table th { - color: #363636; -} - -@keyframes spinAround { - from { - transform: rotate(0deg); - } - to { - transform: rotate(359deg); - } -} - -.column { - display: block; - flex-basis: 0; - flex-grow: 1; - flex-shrink: 1; - padding: 0.75rem; -} - -.columns.is-mobile > .column.is-narrow { - flex: none; - width: unset; -} - -.columns.is-mobile > .column.is-full { - flex: none; - width: 100%; -} - -.columns.is-mobile > .column.is-three-quarters { - flex: none; - width: 75%; -} - -.columns.is-mobile > .column.is-two-thirds { - flex: none; - width: 66.6666%; -} - -.columns.is-mobile > .column.is-half { - flex: none; - width: 50%; -} - -.columns.is-mobile > .column.is-one-third { - flex: none; - width: 33.3333%; -} - -.columns.is-mobile > .column.is-one-quarter { - flex: none; - width: 25%; -} - -.columns.is-mobile > .column.is-one-fifth { - flex: none; - width: 20%; -} - -.columns.is-mobile > .column.is-two-fifths { - flex: none; - width: 40%; -} - -.columns.is-mobile > .column.is-three-fifths { - flex: none; - width: 60%; -} - -.columns.is-mobile > .column.is-four-fifths { - flex: none; - width: 80%; -} - -.columns.is-mobile > .column.is-offset-three-quarters { - margin-left: 75%; -} - -.columns.is-mobile > .column.is-offset-two-thirds { - margin-left: 66.6666%; -} - -.columns.is-mobile > .column.is-offset-half { - margin-left: 50%; -} - -.columns.is-mobile > .column.is-offset-one-third { - margin-left: 33.3333%; -} - -.columns.is-mobile > .column.is-offset-one-quarter { - margin-left: 25%; -} - -.columns.is-mobile > .column.is-offset-one-fifth { - margin-left: 20%; -} - -.columns.is-mobile > .column.is-offset-two-fifths { - margin-left: 40%; -} - -.columns.is-mobile > .column.is-offset-three-fifths { - margin-left: 60%; -} - -.columns.is-mobile > .column.is-offset-four-fifths { - margin-left: 80%; -} - -.columns.is-mobile > .column.is-0 { - flex: none; - width: 0%; -} - -.columns.is-mobile > .column.is-offset-0 { - margin-left: 0%; -} - -.columns.is-mobile > .column.is-1 { - flex: none; - width: 8.33333%; -} - -.columns.is-mobile > .column.is-offset-1 { - margin-left: 8.33333%; -} - -.columns.is-mobile > .column.is-2 { - flex: none; - width: 16.66667%; -} - -.columns.is-mobile > .column.is-offset-2 { - margin-left: 16.66667%; -} - -.columns.is-mobile > .column.is-3 { - flex: none; - width: 25%; -} - -.columns.is-mobile > .column.is-offset-3 { - margin-left: 25%; -} - -.columns.is-mobile > .column.is-4 { - flex: none; - width: 33.33333%; -} - -.columns.is-mobile > .column.is-offset-4 { - margin-left: 33.33333%; -} - -.columns.is-mobile > .column.is-5 { - flex: none; - width: 41.66667%; -} - -.columns.is-mobile > .column.is-offset-5 { - margin-left: 41.66667%; -} - -.columns.is-mobile > .column.is-6 { - flex: none; - width: 50%; -} - -.columns.is-mobile > .column.is-offset-6 { - margin-left: 50%; -} - -.columns.is-mobile > .column.is-7 { - flex: none; - width: 58.33333%; -} - -.columns.is-mobile > .column.is-offset-7 { - margin-left: 58.33333%; -} - -.columns.is-mobile > .column.is-8 { - flex: none; - width: 66.66667%; -} - -.columns.is-mobile > .column.is-offset-8 { - margin-left: 66.66667%; -} - -.columns.is-mobile > .column.is-9 { - flex: none; - width: 75%; -} - -.columns.is-mobile > .column.is-offset-9 { - margin-left: 75%; -} - -.columns.is-mobile > .column.is-10 { - flex: none; - width: 83.33333%; -} - -.columns.is-mobile > .column.is-offset-10 { - margin-left: 83.33333%; -} - -.columns.is-mobile > .column.is-11 { - flex: none; - width: 91.66667%; -} - -.columns.is-mobile > .column.is-offset-11 { - margin-left: 91.66667%; -} - -.columns.is-mobile > .column.is-12 { - flex: none; - width: 100%; -} - -.columns.is-mobile > .column.is-offset-12 { - margin-left: 100%; -} - -@media screen and (max-width: 768px) { - .column.is-narrow-mobile { - flex: none; - width: unset; - } - .column.is-full-mobile { - flex: none; - width: 100%; - } - .column.is-three-quarters-mobile { - flex: none; - width: 75%; - } - .column.is-two-thirds-mobile { - flex: none; - width: 66.6666%; - } - .column.is-half-mobile { - flex: none; - width: 50%; - } - .column.is-one-third-mobile { - flex: none; - width: 33.3333%; - } - .column.is-one-quarter-mobile { - flex: none; - width: 25%; - } - .column.is-one-fifth-mobile { - flex: none; - width: 20%; - } - .column.is-two-fifths-mobile { - flex: none; - width: 40%; - } - .column.is-three-fifths-mobile { - flex: none; - width: 60%; - } - .column.is-four-fifths-mobile { - flex: none; - width: 80%; - } - .column.is-offset-three-quarters-mobile { - margin-left: 75%; - } - .column.is-offset-two-thirds-mobile { - margin-left: 66.6666%; - } - .column.is-offset-half-mobile { - margin-left: 50%; - } - .column.is-offset-one-third-mobile { - margin-left: 33.3333%; - } - .column.is-offset-one-quarter-mobile { - margin-left: 25%; - } - .column.is-offset-one-fifth-mobile { - margin-left: 20%; - } - .column.is-offset-two-fifths-mobile { - margin-left: 40%; - } - .column.is-offset-three-fifths-mobile { - margin-left: 60%; - } - .column.is-offset-four-fifths-mobile { - margin-left: 80%; - } - .column.is-0-mobile { - flex: none; - width: 0%; - } - .column.is-offset-0-mobile { - margin-left: 0%; - } - .column.is-1-mobile { - flex: none; - width: 8.33333%; - } - .column.is-offset-1-mobile { - margin-left: 8.33333%; - } - .column.is-2-mobile { - flex: none; - width: 16.66667%; - } - .column.is-offset-2-mobile { - margin-left: 16.66667%; - } - .column.is-3-mobile { - flex: none; - width: 25%; - } - .column.is-offset-3-mobile { - margin-left: 25%; - } - .column.is-4-mobile { - flex: none; - width: 33.33333%; - } - .column.is-offset-4-mobile { - margin-left: 33.33333%; - } - .column.is-5-mobile { - flex: none; - width: 41.66667%; - } - .column.is-offset-5-mobile { - margin-left: 41.66667%; - } - .column.is-6-mobile { - flex: none; - width: 50%; - } - .column.is-offset-6-mobile { - margin-left: 50%; - } - .column.is-7-mobile { - flex: none; - width: 58.33333%; - } - .column.is-offset-7-mobile { - margin-left: 58.33333%; - } - .column.is-8-mobile { - flex: none; - width: 66.66667%; - } - .column.is-offset-8-mobile { - margin-left: 66.66667%; - } - .column.is-9-mobile { - flex: none; - width: 75%; - } - .column.is-offset-9-mobile { - margin-left: 75%; - } - .column.is-10-mobile { - flex: none; - width: 83.33333%; - } - .column.is-offset-10-mobile { - margin-left: 83.33333%; - } - .column.is-11-mobile { - flex: none; - width: 91.66667%; - } - .column.is-offset-11-mobile { - margin-left: 91.66667%; - } - .column.is-12-mobile { - flex: none; - width: 100%; - } - .column.is-offset-12-mobile { - margin-left: 100%; - } -} - -@media screen and (min-width: 769px), print { - .column.is-narrow, .column.is-narrow-tablet { - flex: none; - width: unset; - } - .column.is-full, .column.is-full-tablet { - flex: none; - width: 100%; - } - .column.is-three-quarters, .column.is-three-quarters-tablet { - flex: none; - width: 75%; - } - .column.is-two-thirds, .column.is-two-thirds-tablet { - flex: none; - width: 66.6666%; - } - .column.is-half, .column.is-half-tablet { - flex: none; - width: 50%; - } - .column.is-one-third, .column.is-one-third-tablet { - flex: none; - width: 33.3333%; - } - .column.is-one-quarter, .column.is-one-quarter-tablet { - flex: none; - width: 25%; - } - .column.is-one-fifth, .column.is-one-fifth-tablet { - flex: none; - width: 20%; - } - .column.is-two-fifths, .column.is-two-fifths-tablet { - flex: none; - width: 40%; - } - .column.is-three-fifths, .column.is-three-fifths-tablet { - flex: none; - width: 60%; - } - .column.is-four-fifths, .column.is-four-fifths-tablet { - flex: none; - width: 80%; - } - .column.is-offset-three-quarters, .column.is-offset-three-quarters-tablet { - margin-left: 75%; - } - .column.is-offset-two-thirds, .column.is-offset-two-thirds-tablet { - margin-left: 66.6666%; - } - .column.is-offset-half, .column.is-offset-half-tablet { - margin-left: 50%; - } - .column.is-offset-one-third, .column.is-offset-one-third-tablet { - margin-left: 33.3333%; - } - .column.is-offset-one-quarter, .column.is-offset-one-quarter-tablet { - margin-left: 25%; - } - .column.is-offset-one-fifth, .column.is-offset-one-fifth-tablet { - margin-left: 20%; - } - .column.is-offset-two-fifths, .column.is-offset-two-fifths-tablet { - margin-left: 40%; - } - .column.is-offset-three-fifths, .column.is-offset-three-fifths-tablet { - margin-left: 60%; - } - .column.is-offset-four-fifths, .column.is-offset-four-fifths-tablet { - margin-left: 80%; - } - .column.is-0, .column.is-0-tablet { - flex: none; - width: 0%; - } - .column.is-offset-0, .column.is-offset-0-tablet { - margin-left: 0%; - } - .column.is-1, .column.is-1-tablet { - flex: none; - width: 8.33333%; - } - .column.is-offset-1, .column.is-offset-1-tablet { - margin-left: 8.33333%; - } - .column.is-2, .column.is-2-tablet { - flex: none; - width: 16.66667%; - } - .column.is-offset-2, .column.is-offset-2-tablet { - margin-left: 16.66667%; - } - .column.is-3, .column.is-3-tablet { - flex: none; - width: 25%; - } - .column.is-offset-3, .column.is-offset-3-tablet { - margin-left: 25%; - } - .column.is-4, .column.is-4-tablet { - flex: none; - width: 33.33333%; - } - .column.is-offset-4, .column.is-offset-4-tablet { - margin-left: 33.33333%; - } - .column.is-5, .column.is-5-tablet { - flex: none; - width: 41.66667%; - } - .column.is-offset-5, .column.is-offset-5-tablet { - margin-left: 41.66667%; - } - .column.is-6, .column.is-6-tablet { - flex: none; - width: 50%; - } - .column.is-offset-6, .column.is-offset-6-tablet { - margin-left: 50%; - } - .column.is-7, .column.is-7-tablet { - flex: none; - width: 58.33333%; - } - .column.is-offset-7, .column.is-offset-7-tablet { - margin-left: 58.33333%; - } - .column.is-8, .column.is-8-tablet { - flex: none; - width: 66.66667%; - } - .column.is-offset-8, .column.is-offset-8-tablet { - margin-left: 66.66667%; - } - .column.is-9, .column.is-9-tablet { - flex: none; - width: 75%; - } - .column.is-offset-9, .column.is-offset-9-tablet { - margin-left: 75%; - } - .column.is-10, .column.is-10-tablet { - flex: none; - width: 83.33333%; - } - .column.is-offset-10, .column.is-offset-10-tablet { - margin-left: 83.33333%; - } - .column.is-11, .column.is-11-tablet { - flex: none; - width: 91.66667%; - } - .column.is-offset-11, .column.is-offset-11-tablet { - margin-left: 91.66667%; - } - .column.is-12, .column.is-12-tablet { - flex: none; - width: 100%; - } - .column.is-offset-12, .column.is-offset-12-tablet { - margin-left: 100%; - } -} - -@media screen and (max-width: 1023px) { - .column.is-narrow-touch { - flex: none; - width: unset; - } - .column.is-full-touch { - flex: none; - width: 100%; - } - .column.is-three-quarters-touch { - flex: none; - width: 75%; - } - .column.is-two-thirds-touch { - flex: none; - width: 66.6666%; - } - .column.is-half-touch { - flex: none; - width: 50%; - } - .column.is-one-third-touch { - flex: none; - width: 33.3333%; - } - .column.is-one-quarter-touch { - flex: none; - width: 25%; - } - .column.is-one-fifth-touch { - flex: none; - width: 20%; - } - .column.is-two-fifths-touch { - flex: none; - width: 40%; - } - .column.is-three-fifths-touch { - flex: none; - width: 60%; - } - .column.is-four-fifths-touch { - flex: none; - width: 80%; - } - .column.is-offset-three-quarters-touch { - margin-left: 75%; - } - .column.is-offset-two-thirds-touch { - margin-left: 66.6666%; - } - .column.is-offset-half-touch { - margin-left: 50%; - } - .column.is-offset-one-third-touch { - margin-left: 33.3333%; - } - .column.is-offset-one-quarter-touch { - margin-left: 25%; - } - .column.is-offset-one-fifth-touch { - margin-left: 20%; - } - .column.is-offset-two-fifths-touch { - margin-left: 40%; - } - .column.is-offset-three-fifths-touch { - margin-left: 60%; - } - .column.is-offset-four-fifths-touch { - margin-left: 80%; - } - .column.is-0-touch { - flex: none; - width: 0%; - } - .column.is-offset-0-touch { - margin-left: 0%; - } - .column.is-1-touch { - flex: none; - width: 8.33333%; - } - .column.is-offset-1-touch { - margin-left: 8.33333%; - } - .column.is-2-touch { - flex: none; - width: 16.66667%; - } - .column.is-offset-2-touch { - margin-left: 16.66667%; - } - .column.is-3-touch { - flex: none; - width: 25%; - } - .column.is-offset-3-touch { - margin-left: 25%; - } - .column.is-4-touch { - flex: none; - width: 33.33333%; - } - .column.is-offset-4-touch { - margin-left: 33.33333%; - } - .column.is-5-touch { - flex: none; - width: 41.66667%; - } - .column.is-offset-5-touch { - margin-left: 41.66667%; - } - .column.is-6-touch { - flex: none; - width: 50%; - } - .column.is-offset-6-touch { - margin-left: 50%; - } - .column.is-7-touch { - flex: none; - width: 58.33333%; - } - .column.is-offset-7-touch { - margin-left: 58.33333%; - } - .column.is-8-touch { - flex: none; - width: 66.66667%; - } - .column.is-offset-8-touch { - margin-left: 66.66667%; - } - .column.is-9-touch { - flex: none; - width: 75%; - } - .column.is-offset-9-touch { - margin-left: 75%; - } - .column.is-10-touch { - flex: none; - width: 83.33333%; - } - .column.is-offset-10-touch { - margin-left: 83.33333%; - } - .column.is-11-touch { - flex: none; - width: 91.66667%; - } - .column.is-offset-11-touch { - margin-left: 91.66667%; - } - .column.is-12-touch { - flex: none; - width: 100%; - } - .column.is-offset-12-touch { - margin-left: 100%; - } -} - -@media screen and (min-width: 1024px) { - .column.is-narrow-desktop { - flex: none; - width: unset; - } - .column.is-full-desktop { - flex: none; - width: 100%; - } - .column.is-three-quarters-desktop { - flex: none; - width: 75%; - } - .column.is-two-thirds-desktop { - flex: none; - width: 66.6666%; - } - .column.is-half-desktop { - flex: none; - width: 50%; - } - .column.is-one-third-desktop { - flex: none; - width: 33.3333%; - } - .column.is-one-quarter-desktop { - flex: none; - width: 25%; - } - .column.is-one-fifth-desktop { - flex: none; - width: 20%; - } - .column.is-two-fifths-desktop { - flex: none; - width: 40%; - } - .column.is-three-fifths-desktop { - flex: none; - width: 60%; - } - .column.is-four-fifths-desktop { - flex: none; - width: 80%; - } - .column.is-offset-three-quarters-desktop { - margin-left: 75%; - } - .column.is-offset-two-thirds-desktop { - margin-left: 66.6666%; - } - .column.is-offset-half-desktop { - margin-left: 50%; - } - .column.is-offset-one-third-desktop { - margin-left: 33.3333%; - } - .column.is-offset-one-quarter-desktop { - margin-left: 25%; - } - .column.is-offset-one-fifth-desktop { - margin-left: 20%; - } - .column.is-offset-two-fifths-desktop { - margin-left: 40%; - } - .column.is-offset-three-fifths-desktop { - margin-left: 60%; - } - .column.is-offset-four-fifths-desktop { - margin-left: 80%; - } - .column.is-0-desktop { - flex: none; - width: 0%; - } - .column.is-offset-0-desktop { - margin-left: 0%; - } - .column.is-1-desktop { - flex: none; - width: 8.33333%; - } - .column.is-offset-1-desktop { - margin-left: 8.33333%; - } - .column.is-2-desktop { - flex: none; - width: 16.66667%; - } - .column.is-offset-2-desktop { - margin-left: 16.66667%; - } - .column.is-3-desktop { - flex: none; - width: 25%; - } - .column.is-offset-3-desktop { - margin-left: 25%; - } - .column.is-4-desktop { - flex: none; - width: 33.33333%; - } - .column.is-offset-4-desktop { - margin-left: 33.33333%; - } - .column.is-5-desktop { - flex: none; - width: 41.66667%; - } - .column.is-offset-5-desktop { - margin-left: 41.66667%; - } - .column.is-6-desktop { - flex: none; - width: 50%; - } - .column.is-offset-6-desktop { - margin-left: 50%; - } - .column.is-7-desktop { - flex: none; - width: 58.33333%; - } - .column.is-offset-7-desktop { - margin-left: 58.33333%; - } - .column.is-8-desktop { - flex: none; - width: 66.66667%; - } - .column.is-offset-8-desktop { - margin-left: 66.66667%; - } - .column.is-9-desktop { - flex: none; - width: 75%; - } - .column.is-offset-9-desktop { - margin-left: 75%; - } - .column.is-10-desktop { - flex: none; - width: 83.33333%; - } - .column.is-offset-10-desktop { - margin-left: 83.33333%; - } - .column.is-11-desktop { - flex: none; - width: 91.66667%; - } - .column.is-offset-11-desktop { - margin-left: 91.66667%; - } - .column.is-12-desktop { - flex: none; - width: 100%; - } - .column.is-offset-12-desktop { - margin-left: 100%; - } -} - -@media screen and (min-width: 1216px) { - .column.is-narrow-widescreen { - flex: none; - width: unset; - } - .column.is-full-widescreen { - flex: none; - width: 100%; - } - .column.is-three-quarters-widescreen { - flex: none; - width: 75%; - } - .column.is-two-thirds-widescreen { - flex: none; - width: 66.6666%; - } - .column.is-half-widescreen { - flex: none; - width: 50%; - } - .column.is-one-third-widescreen { - flex: none; - width: 33.3333%; - } - .column.is-one-quarter-widescreen { - flex: none; - width: 25%; - } - .column.is-one-fifth-widescreen { - flex: none; - width: 20%; - } - .column.is-two-fifths-widescreen { - flex: none; - width: 40%; - } - .column.is-three-fifths-widescreen { - flex: none; - width: 60%; - } - .column.is-four-fifths-widescreen { - flex: none; - width: 80%; - } - .column.is-offset-three-quarters-widescreen { - margin-left: 75%; - } - .column.is-offset-two-thirds-widescreen { - margin-left: 66.6666%; - } - .column.is-offset-half-widescreen { - margin-left: 50%; - } - .column.is-offset-one-third-widescreen { - margin-left: 33.3333%; - } - .column.is-offset-one-quarter-widescreen { - margin-left: 25%; - } - .column.is-offset-one-fifth-widescreen { - margin-left: 20%; - } - .column.is-offset-two-fifths-widescreen { - margin-left: 40%; - } - .column.is-offset-three-fifths-widescreen { - margin-left: 60%; - } - .column.is-offset-four-fifths-widescreen { - margin-left: 80%; - } - .column.is-0-widescreen { - flex: none; - width: 0%; - } - .column.is-offset-0-widescreen { - margin-left: 0%; - } - .column.is-1-widescreen { - flex: none; - width: 8.33333%; - } - .column.is-offset-1-widescreen { - margin-left: 8.33333%; - } - .column.is-2-widescreen { - flex: none; - width: 16.66667%; - } - .column.is-offset-2-widescreen { - margin-left: 16.66667%; - } - .column.is-3-widescreen { - flex: none; - width: 25%; - } - .column.is-offset-3-widescreen { - margin-left: 25%; - } - .column.is-4-widescreen { - flex: none; - width: 33.33333%; - } - .column.is-offset-4-widescreen { - margin-left: 33.33333%; - } - .column.is-5-widescreen { - flex: none; - width: 41.66667%; - } - .column.is-offset-5-widescreen { - margin-left: 41.66667%; - } - .column.is-6-widescreen { - flex: none; - width: 50%; - } - .column.is-offset-6-widescreen { - margin-left: 50%; - } - .column.is-7-widescreen { - flex: none; - width: 58.33333%; - } - .column.is-offset-7-widescreen { - margin-left: 58.33333%; - } - .column.is-8-widescreen { - flex: none; - width: 66.66667%; - } - .column.is-offset-8-widescreen { - margin-left: 66.66667%; - } - .column.is-9-widescreen { - flex: none; - width: 75%; - } - .column.is-offset-9-widescreen { - margin-left: 75%; - } - .column.is-10-widescreen { - flex: none; - width: 83.33333%; - } - .column.is-offset-10-widescreen { - margin-left: 83.33333%; - } - .column.is-11-widescreen { - flex: none; - width: 91.66667%; - } - .column.is-offset-11-widescreen { - margin-left: 91.66667%; - } - .column.is-12-widescreen { - flex: none; - width: 100%; - } - .column.is-offset-12-widescreen { - margin-left: 100%; - } -} - -@media screen and (min-width: 1408px) { - .column.is-narrow-fullhd { - flex: none; - width: unset; - } - .column.is-full-fullhd { - flex: none; - width: 100%; - } - .column.is-three-quarters-fullhd { - flex: none; - width: 75%; - } - .column.is-two-thirds-fullhd { - flex: none; - width: 66.6666%; - } - .column.is-half-fullhd { - flex: none; - width: 50%; - } - .column.is-one-third-fullhd { - flex: none; - width: 33.3333%; - } - .column.is-one-quarter-fullhd { - flex: none; - width: 25%; - } - .column.is-one-fifth-fullhd { - flex: none; - width: 20%; - } - .column.is-two-fifths-fullhd { - flex: none; - width: 40%; - } - .column.is-three-fifths-fullhd { - flex: none; - width: 60%; - } - .column.is-four-fifths-fullhd { - flex: none; - width: 80%; - } - .column.is-offset-three-quarters-fullhd { - margin-left: 75%; - } - .column.is-offset-two-thirds-fullhd { - margin-left: 66.6666%; - } - .column.is-offset-half-fullhd { - margin-left: 50%; - } - .column.is-offset-one-third-fullhd { - margin-left: 33.3333%; - } - .column.is-offset-one-quarter-fullhd { - margin-left: 25%; - } - .column.is-offset-one-fifth-fullhd { - margin-left: 20%; - } - .column.is-offset-two-fifths-fullhd { - margin-left: 40%; - } - .column.is-offset-three-fifths-fullhd { - margin-left: 60%; - } - .column.is-offset-four-fifths-fullhd { - margin-left: 80%; - } - .column.is-0-fullhd { - flex: none; - width: 0%; - } - .column.is-offset-0-fullhd { - margin-left: 0%; - } - .column.is-1-fullhd { - flex: none; - width: 8.33333%; - } - .column.is-offset-1-fullhd { - margin-left: 8.33333%; - } - .column.is-2-fullhd { - flex: none; - width: 16.66667%; - } - .column.is-offset-2-fullhd { - margin-left: 16.66667%; - } - .column.is-3-fullhd { - flex: none; - width: 25%; - } - .column.is-offset-3-fullhd { - margin-left: 25%; - } - .column.is-4-fullhd { - flex: none; - width: 33.33333%; - } - .column.is-offset-4-fullhd { - margin-left: 33.33333%; - } - .column.is-5-fullhd { - flex: none; - width: 41.66667%; - } - .column.is-offset-5-fullhd { - margin-left: 41.66667%; - } - .column.is-6-fullhd { - flex: none; - width: 50%; - } - .column.is-offset-6-fullhd { - margin-left: 50%; - } - .column.is-7-fullhd { - flex: none; - width: 58.33333%; - } - .column.is-offset-7-fullhd { - margin-left: 58.33333%; - } - .column.is-8-fullhd { - flex: none; - width: 66.66667%; - } - .column.is-offset-8-fullhd { - margin-left: 66.66667%; - } - .column.is-9-fullhd { - flex: none; - width: 75%; - } - .column.is-offset-9-fullhd { - margin-left: 75%; - } - .column.is-10-fullhd { - flex: none; - width: 83.33333%; - } - .column.is-offset-10-fullhd { - margin-left: 83.33333%; - } - .column.is-11-fullhd { - flex: none; - width: 91.66667%; - } - .column.is-offset-11-fullhd { - margin-left: 91.66667%; - } - .column.is-12-fullhd { - flex: none; - width: 100%; - } - .column.is-offset-12-fullhd { - margin-left: 100%; - } -} - -.columns { - margin-left: -0.75rem; - margin-right: -0.75rem; - margin-top: -0.75rem; -} - -.columns:last-child { - margin-bottom: -0.75rem; -} - -.columns:not(:last-child) { - margin-bottom: calc(1.5rem - 0.75rem); -} - -.columns.is-centered { - justify-content: center; -} - -.columns.is-gapless { - margin-left: 0; - margin-right: 0; - margin-top: 0; -} - -.columns.is-gapless > .column { - margin: 0; - padding: 0 !important; -} - -.columns.is-gapless:not(:last-child) { - margin-bottom: 1.5rem; -} - -.columns.is-gapless:last-child { - margin-bottom: 0; -} - -.columns.is-mobile { - display: flex; -} - -.columns.is-multiline { - flex-wrap: wrap; -} - -.columns.is-vcentered { - align-items: center; -} - -@media screen and (min-width: 769px), print { - .columns:not(.is-desktop) { - display: flex; - } -} - -@media screen and (min-width: 1024px) { - .columns.is-desktop { - display: flex; - } -} - -.columns.is-variable { - --columnGap: 0.75rem; - margin-left: calc(-1 * var(--columnGap)); - margin-right: calc(-1 * var(--columnGap)); -} - -.columns.is-variable > .column { - padding-left: var(--columnGap); - padding-right: var(--columnGap); -} - -.columns.is-variable.is-0 { - --columnGap: 0rem; -} - -@media screen and (max-width: 768px) { - .columns.is-variable.is-0-mobile { - --columnGap: 0rem; - } -} - -@media screen and (min-width: 769px), print { - .columns.is-variable.is-0-tablet { - --columnGap: 0rem; - } -} - -@media screen and (min-width: 769px) and (max-width: 1023px) { - .columns.is-variable.is-0-tablet-only { - --columnGap: 0rem; - } -} - -@media screen and (max-width: 1023px) { - .columns.is-variable.is-0-touch { - --columnGap: 0rem; - } -} - -@media screen and (min-width: 1024px) { - .columns.is-variable.is-0-desktop { - --columnGap: 0rem; - } -} - -@media screen and (min-width: 1024px) and (max-width: 1215px) { - .columns.is-variable.is-0-desktop-only { - --columnGap: 0rem; - } -} - -@media screen and (min-width: 1216px) { - .columns.is-variable.is-0-widescreen { - --columnGap: 0rem; - } -} - -@media screen and (min-width: 1216px) and (max-width: 1407px) { - .columns.is-variable.is-0-widescreen-only { - --columnGap: 0rem; - } -} - -@media screen and (min-width: 1408px) { - .columns.is-variable.is-0-fullhd { - --columnGap: 0rem; - } -} - -.columns.is-variable.is-1 { - --columnGap: 0.25rem; -} - -@media screen and (max-width: 768px) { - .columns.is-variable.is-1-mobile { - --columnGap: 0.25rem; - } -} - -@media screen and (min-width: 769px), print { - .columns.is-variable.is-1-tablet { - --columnGap: 0.25rem; - } -} - -@media screen and (min-width: 769px) and (max-width: 1023px) { - .columns.is-variable.is-1-tablet-only { - --columnGap: 0.25rem; - } -} - -@media screen and (max-width: 1023px) { - .columns.is-variable.is-1-touch { - --columnGap: 0.25rem; - } -} - -@media screen and (min-width: 1024px) { - .columns.is-variable.is-1-desktop { - --columnGap: 0.25rem; - } -} - -@media screen and (min-width: 1024px) and (max-width: 1215px) { - .columns.is-variable.is-1-desktop-only { - --columnGap: 0.25rem; - } -} - -@media screen and (min-width: 1216px) { - .columns.is-variable.is-1-widescreen { - --columnGap: 0.25rem; - } -} - -@media screen and (min-width: 1216px) and (max-width: 1407px) { - .columns.is-variable.is-1-widescreen-only { - --columnGap: 0.25rem; - } -} - -@media screen and (min-width: 1408px) { - .columns.is-variable.is-1-fullhd { - --columnGap: 0.25rem; - } -} - -.columns.is-variable.is-2 { - --columnGap: 0.5rem; -} - -@media screen and (max-width: 768px) { - .columns.is-variable.is-2-mobile { - --columnGap: 0.5rem; - } -} - -@media screen and (min-width: 769px), print { - .columns.is-variable.is-2-tablet { - --columnGap: 0.5rem; - } -} - -@media screen and (min-width: 769px) and (max-width: 1023px) { - .columns.is-variable.is-2-tablet-only { - --columnGap: 0.5rem; - } -} - -@media screen and (max-width: 1023px) { - .columns.is-variable.is-2-touch { - --columnGap: 0.5rem; - } -} - -@media screen and (min-width: 1024px) { - .columns.is-variable.is-2-desktop { - --columnGap: 0.5rem; - } -} - -@media screen and (min-width: 1024px) and (max-width: 1215px) { - .columns.is-variable.is-2-desktop-only { - --columnGap: 0.5rem; - } -} - -@media screen and (min-width: 1216px) { - .columns.is-variable.is-2-widescreen { - --columnGap: 0.5rem; - } -} - -@media screen and (min-width: 1216px) and (max-width: 1407px) { - .columns.is-variable.is-2-widescreen-only { - --columnGap: 0.5rem; - } -} - -@media screen and (min-width: 1408px) { - .columns.is-variable.is-2-fullhd { - --columnGap: 0.5rem; - } -} - -.columns.is-variable.is-3 { - --columnGap: 0.75rem; -} - -@media screen and (max-width: 768px) { - .columns.is-variable.is-3-mobile { - --columnGap: 0.75rem; - } -} - -@media screen and (min-width: 769px), print { - .columns.is-variable.is-3-tablet { - --columnGap: 0.75rem; - } -} - -@media screen and (min-width: 769px) and (max-width: 1023px) { - .columns.is-variable.is-3-tablet-only { - --columnGap: 0.75rem; - } -} - -@media screen and (max-width: 1023px) { - .columns.is-variable.is-3-touch { - --columnGap: 0.75rem; - } -} - -@media screen and (min-width: 1024px) { - .columns.is-variable.is-3-desktop { - --columnGap: 0.75rem; - } -} - -@media screen and (min-width: 1024px) and (max-width: 1215px) { - .columns.is-variable.is-3-desktop-only { - --columnGap: 0.75rem; - } -} - -@media screen and (min-width: 1216px) { - .columns.is-variable.is-3-widescreen { - --columnGap: 0.75rem; - } -} - -@media screen and (min-width: 1216px) and (max-width: 1407px) { - .columns.is-variable.is-3-widescreen-only { - --columnGap: 0.75rem; - } -} - -@media screen and (min-width: 1408px) { - .columns.is-variable.is-3-fullhd { - --columnGap: 0.75rem; - } -} - -.columns.is-variable.is-4 { - --columnGap: 1rem; -} - -@media screen and (max-width: 768px) { - .columns.is-variable.is-4-mobile { - --columnGap: 1rem; - } -} - -@media screen and (min-width: 769px), print { - .columns.is-variable.is-4-tablet { - --columnGap: 1rem; - } -} - -@media screen and (min-width: 769px) and (max-width: 1023px) { - .columns.is-variable.is-4-tablet-only { - --columnGap: 1rem; - } -} - -@media screen and (max-width: 1023px) { - .columns.is-variable.is-4-touch { - --columnGap: 1rem; - } -} - -@media screen and (min-width: 1024px) { - .columns.is-variable.is-4-desktop { - --columnGap: 1rem; - } -} - -@media screen and (min-width: 1024px) and (max-width: 1215px) { - .columns.is-variable.is-4-desktop-only { - --columnGap: 1rem; - } -} - -@media screen and (min-width: 1216px) { - .columns.is-variable.is-4-widescreen { - --columnGap: 1rem; - } -} - -@media screen and (min-width: 1216px) and (max-width: 1407px) { - .columns.is-variable.is-4-widescreen-only { - --columnGap: 1rem; - } -} - -@media screen and (min-width: 1408px) { - .columns.is-variable.is-4-fullhd { - --columnGap: 1rem; - } -} - -.columns.is-variable.is-5 { - --columnGap: 1.25rem; -} - -@media screen and (max-width: 768px) { - .columns.is-variable.is-5-mobile { - --columnGap: 1.25rem; - } -} - -@media screen and (min-width: 769px), print { - .columns.is-variable.is-5-tablet { - --columnGap: 1.25rem; - } -} - -@media screen and (min-width: 769px) and (max-width: 1023px) { - .columns.is-variable.is-5-tablet-only { - --columnGap: 1.25rem; - } -} - -@media screen and (max-width: 1023px) { - .columns.is-variable.is-5-touch { - --columnGap: 1.25rem; - } -} - -@media screen and (min-width: 1024px) { - .columns.is-variable.is-5-desktop { - --columnGap: 1.25rem; - } -} - -@media screen and (min-width: 1024px) and (max-width: 1215px) { - .columns.is-variable.is-5-desktop-only { - --columnGap: 1.25rem; - } -} - -@media screen and (min-width: 1216px) { - .columns.is-variable.is-5-widescreen { - --columnGap: 1.25rem; - } -} - -@media screen and (min-width: 1216px) and (max-width: 1407px) { - .columns.is-variable.is-5-widescreen-only { - --columnGap: 1.25rem; - } -} - -@media screen and (min-width: 1408px) { - .columns.is-variable.is-5-fullhd { - --columnGap: 1.25rem; - } -} - -.columns.is-variable.is-6 { - --columnGap: 1.5rem; -} - -@media screen and (max-width: 768px) { - .columns.is-variable.is-6-mobile { - --columnGap: 1.5rem; - } -} - -@media screen and (min-width: 769px), print { - .columns.is-variable.is-6-tablet { - --columnGap: 1.5rem; - } -} - -@media screen and (min-width: 769px) and (max-width: 1023px) { - .columns.is-variable.is-6-tablet-only { - --columnGap: 1.5rem; - } -} - -@media screen and (max-width: 1023px) { - .columns.is-variable.is-6-touch { - --columnGap: 1.5rem; - } -} - -@media screen and (min-width: 1024px) { - .columns.is-variable.is-6-desktop { - --columnGap: 1.5rem; - } -} - -@media screen and (min-width: 1024px) and (max-width: 1215px) { - .columns.is-variable.is-6-desktop-only { - --columnGap: 1.5rem; - } -} - -@media screen and (min-width: 1216px) { - .columns.is-variable.is-6-widescreen { - --columnGap: 1.5rem; - } -} - -@media screen and (min-width: 1216px) and (max-width: 1407px) { - .columns.is-variable.is-6-widescreen-only { - --columnGap: 1.5rem; - } -} - -@media screen and (min-width: 1408px) { - .columns.is-variable.is-6-fullhd { - --columnGap: 1.5rem; - } -} - -.columns.is-variable.is-7 { - --columnGap: 1.75rem; -} - -@media screen and (max-width: 768px) { - .columns.is-variable.is-7-mobile { - --columnGap: 1.75rem; - } -} - -@media screen and (min-width: 769px), print { - .columns.is-variable.is-7-tablet { - --columnGap: 1.75rem; - } -} - -@media screen and (min-width: 769px) and (max-width: 1023px) { - .columns.is-variable.is-7-tablet-only { - --columnGap: 1.75rem; - } -} - -@media screen and (max-width: 1023px) { - .columns.is-variable.is-7-touch { - --columnGap: 1.75rem; - } -} - -@media screen and (min-width: 1024px) { - .columns.is-variable.is-7-desktop { - --columnGap: 1.75rem; - } -} - -@media screen and (min-width: 1024px) and (max-width: 1215px) { - .columns.is-variable.is-7-desktop-only { - --columnGap: 1.75rem; - } -} - -@media screen and (min-width: 1216px) { - .columns.is-variable.is-7-widescreen { - --columnGap: 1.75rem; - } -} - -@media screen and (min-width: 1216px) and (max-width: 1407px) { - .columns.is-variable.is-7-widescreen-only { - --columnGap: 1.75rem; - } -} - -@media screen and (min-width: 1408px) { - .columns.is-variable.is-7-fullhd { - --columnGap: 1.75rem; - } -} - -.columns.is-variable.is-8 { - --columnGap: 2rem; -} - -@media screen and (max-width: 768px) { - .columns.is-variable.is-8-mobile { - --columnGap: 2rem; - } -} - -@media screen and (min-width: 769px), print { - .columns.is-variable.is-8-tablet { - --columnGap: 2rem; - } -} - -@media screen and (min-width: 769px) and (max-width: 1023px) { - .columns.is-variable.is-8-tablet-only { - --columnGap: 2rem; - } -} - -@media screen and (max-width: 1023px) { - .columns.is-variable.is-8-touch { - --columnGap: 2rem; - } -} - -@media screen and (min-width: 1024px) { - .columns.is-variable.is-8-desktop { - --columnGap: 2rem; - } -} - -@media screen and (min-width: 1024px) and (max-width: 1215px) { - .columns.is-variable.is-8-desktop-only { - --columnGap: 2rem; - } -} - -@media screen and (min-width: 1216px) { - .columns.is-variable.is-8-widescreen { - --columnGap: 2rem; - } -} - -@media screen and (min-width: 1216px) and (max-width: 1407px) { - .columns.is-variable.is-8-widescreen-only { - --columnGap: 2rem; - } -} - -@media screen and (min-width: 1408px) { - .columns.is-variable.is-8-fullhd { - --columnGap: 2rem; - } -} - -.breadcrumb { - font-size: 1rem; - white-space: nowrap; -} - -.breadcrumb a { - align-items: center; - color: #FF9200; - display: flex; - justify-content: center; - padding: 0 0.75em; -} - -.breadcrumb a:hover { - color: #ca6500; -} - -.breadcrumb li { - align-items: center; - display: flex; -} - -.breadcrumb li:first-child a { - padding-left: 0; -} - -.breadcrumb li.is-active a { - color: #363636; - cursor: default; - pointer-events: none; -} - -.breadcrumb li + li::before { - color: #b5b5b5; - content: "\0002f"; -} - -.breadcrumb ul, -.breadcrumb ol { - align-items: flex-start; - display: flex; - flex-wrap: wrap; - justify-content: flex-start; -} - -.breadcrumb .icon:first-child { - margin-right: 0.5em; -} - -.breadcrumb .icon:last-child { - margin-left: 0.5em; -} - -.breadcrumb.is-centered ol, -.breadcrumb.is-centered ul { - justify-content: center; -} - -.breadcrumb.is-right ol, -.breadcrumb.is-right ul { - justify-content: flex-end; -} - -.breadcrumb.is-small { - font-size: 0.75rem; -} - -.breadcrumb.is-medium { - font-size: 1.25rem; -} - -.breadcrumb.is-large { - font-size: 1.5rem; -} - -.breadcrumb.has-arrow-separator li + li::before { - content: "\02192"; -} - -.breadcrumb.has-bullet-separator li + li::before { - content: "\02022"; -} - -.breadcrumb.has-dot-separator li + li::before { - content: "\000b7"; -} - -.breadcrumb.has-succeeds-separator li + li::before { - content: "\0227B"; -} - -.level { - align-items: center; - justify-content: space-between; -} - -.level code { - border-radius: 4px; -} - -.level img { - display: inline-block; - vertical-align: top; -} - -.level.is-mobile { - display: flex; -} - -.level.is-mobile .level-left, -.level.is-mobile .level-right { - display: flex; -} - -.level.is-mobile .level-left + .level-right { - margin-top: 0; -} - -.level.is-mobile .level-item:not(:last-child) { - margin-bottom: 0; - margin-right: 0.75rem; -} - -.level.is-mobile .level-item:not(.is-narrow) { - flex-grow: 1; -} - -@media screen and (min-width: 769px), print { - .level { - display: flex; - } - .level > .level-item:not(.is-narrow) { - flex-grow: 1; - } -} - -.level-item { - align-items: center; - display: flex; - flex-basis: auto; - flex-grow: 0; - flex-shrink: 0; - justify-content: center; -} - -.level-item .title, -.level-item .subtitle { - margin-bottom: 0; -} - -@media screen and (max-width: 768px) { - .level-item:not(:last-child) { - margin-bottom: 0.75rem; - } -} - -.level-left, -.level-right { - flex-basis: auto; - flex-grow: 0; - flex-shrink: 0; -} - -.level-left .level-item.is-flexible, -.level-right .level-item.is-flexible { - flex-grow: 1; -} - -@media screen and (min-width: 769px), print { - .level-left .level-item:not(:last-child), -.level-right .level-item:not(:last-child) { - margin-right: 0.75rem; - } -} - -.level-left { - align-items: center; - justify-content: flex-start; -} - -@media screen and (max-width: 768px) { - .level-left + .level-right { - margin-top: 1.5rem; - } -} - -@media screen and (min-width: 769px), print { - .level-left { - display: flex; - } -} - -.level-right { - align-items: center; - justify-content: flex-end; -} - -@media screen and (min-width: 769px), print { - .level-right { - display: flex; - } -} - -.navbar { - background-color: white; - min-height: 4rem; - position: relative; - z-index: 30; -} - -.navbar.is-white { - background-color: white; - color: #0a0a0a; -} - -.navbar.is-white .navbar-brand > .navbar-item, -.navbar.is-white .navbar-brand .navbar-link { - color: #0a0a0a; -} - -.navbar.is-white .navbar-brand > a.navbar-item:focus, .navbar.is-white .navbar-brand > a.navbar-item:hover, .navbar.is-white .navbar-brand > a.navbar-item.is-active, -.navbar.is-white .navbar-brand .navbar-link:focus, -.navbar.is-white .navbar-brand .navbar-link:hover, -.navbar.is-white .navbar-brand .navbar-link.is-active { - background-color: #f2f2f2; - color: #0a0a0a; -} - -.navbar.is-white .navbar-brand .navbar-link::after { - border-color: #0a0a0a; -} - -.navbar.is-white .navbar-burger { - color: #0a0a0a; -} - -@media screen and (min-width: 1024px) { - .navbar.is-white .navbar-start > .navbar-item, -.navbar.is-white .navbar-start .navbar-link, -.navbar.is-white .navbar-end > .navbar-item, -.navbar.is-white .navbar-end .navbar-link { - color: #0a0a0a; - } - .navbar.is-white .navbar-start > a.navbar-item:focus, .navbar.is-white .navbar-start > a.navbar-item:hover, .navbar.is-white .navbar-start > a.navbar-item.is-active, -.navbar.is-white .navbar-start .navbar-link:focus, -.navbar.is-white .navbar-start .navbar-link:hover, -.navbar.is-white .navbar-start .navbar-link.is-active, -.navbar.is-white .navbar-end > a.navbar-item:focus, -.navbar.is-white .navbar-end > a.navbar-item:hover, -.navbar.is-white .navbar-end > a.navbar-item.is-active, -.navbar.is-white .navbar-end .navbar-link:focus, -.navbar.is-white .navbar-end .navbar-link:hover, -.navbar.is-white .navbar-end .navbar-link.is-active { - background-color: #f2f2f2; - color: #0a0a0a; - } - .navbar.is-white .navbar-start .navbar-link::after, -.navbar.is-white .navbar-end .navbar-link::after { - border-color: #0a0a0a; - } - .navbar.is-white .navbar-item.has-dropdown:focus .navbar-link, -.navbar.is-white .navbar-item.has-dropdown:hover .navbar-link, -.navbar.is-white .navbar-item.has-dropdown.is-active .navbar-link { - background-color: #f2f2f2; - color: #0a0a0a; - } - .navbar.is-white .navbar-dropdown a.navbar-item.is-active { - background-color: white; - color: #0a0a0a; - } -} - -.navbar.is-black { - background-color: #0a0a0a; - color: white; -} - -.navbar.is-black .navbar-brand > .navbar-item, -.navbar.is-black .navbar-brand .navbar-link { - color: white; -} - -.navbar.is-black .navbar-brand > a.navbar-item:focus, .navbar.is-black .navbar-brand > a.navbar-item:hover, .navbar.is-black .navbar-brand > a.navbar-item.is-active, -.navbar.is-black .navbar-brand .navbar-link:focus, -.navbar.is-black .navbar-brand .navbar-link:hover, -.navbar.is-black .navbar-brand .navbar-link.is-active { - background-color: black; - color: white; -} - -.navbar.is-black .navbar-brand .navbar-link::after { - border-color: white; -} - -.navbar.is-black .navbar-burger { - color: white; -} - -@media screen and (min-width: 1024px) { - .navbar.is-black .navbar-start > .navbar-item, -.navbar.is-black .navbar-start .navbar-link, -.navbar.is-black .navbar-end > .navbar-item, -.navbar.is-black .navbar-end .navbar-link { - color: white; - } - .navbar.is-black .navbar-start > a.navbar-item:focus, .navbar.is-black .navbar-start > a.navbar-item:hover, .navbar.is-black .navbar-start > a.navbar-item.is-active, -.navbar.is-black .navbar-start .navbar-link:focus, -.navbar.is-black .navbar-start .navbar-link:hover, -.navbar.is-black .navbar-start .navbar-link.is-active, -.navbar.is-black .navbar-end > a.navbar-item:focus, -.navbar.is-black .navbar-end > a.navbar-item:hover, -.navbar.is-black .navbar-end > a.navbar-item.is-active, -.navbar.is-black .navbar-end .navbar-link:focus, -.navbar.is-black .navbar-end .navbar-link:hover, -.navbar.is-black .navbar-end .navbar-link.is-active { - background-color: black; - color: white; - } - .navbar.is-black .navbar-start .navbar-link::after, -.navbar.is-black .navbar-end .navbar-link::after { - border-color: white; - } - .navbar.is-black .navbar-item.has-dropdown:focus .navbar-link, -.navbar.is-black .navbar-item.has-dropdown:hover .navbar-link, -.navbar.is-black .navbar-item.has-dropdown.is-active .navbar-link { - background-color: black; - color: white; - } - .navbar.is-black .navbar-dropdown a.navbar-item.is-active { - background-color: #0a0a0a; - color: white; - } -} - -.navbar.is-light { - background-color: whitesmoke; - color: rgba(0, 0, 0, 0.7); -} - -.navbar.is-light .navbar-brand > .navbar-item, -.navbar.is-light .navbar-brand .navbar-link { - color: rgba(0, 0, 0, 0.7); -} - -.navbar.is-light .navbar-brand > a.navbar-item:focus, .navbar.is-light .navbar-brand > a.navbar-item:hover, .navbar.is-light .navbar-brand > a.navbar-item.is-active, -.navbar.is-light .navbar-brand .navbar-link:focus, -.navbar.is-light .navbar-brand .navbar-link:hover, -.navbar.is-light .navbar-brand .navbar-link.is-active { - background-color: #e8e8e8; - color: rgba(0, 0, 0, 0.7); -} - -.navbar.is-light .navbar-brand .navbar-link::after { - border-color: rgba(0, 0, 0, 0.7); -} - -.navbar.is-light .navbar-burger { - color: rgba(0, 0, 0, 0.7); -} - -@media screen and (min-width: 1024px) { - .navbar.is-light .navbar-start > .navbar-item, -.navbar.is-light .navbar-start .navbar-link, -.navbar.is-light .navbar-end > .navbar-item, -.navbar.is-light .navbar-end .navbar-link { - color: rgba(0, 0, 0, 0.7); - } - .navbar.is-light .navbar-start > a.navbar-item:focus, .navbar.is-light .navbar-start > a.navbar-item:hover, .navbar.is-light .navbar-start > a.navbar-item.is-active, -.navbar.is-light .navbar-start .navbar-link:focus, -.navbar.is-light .navbar-start .navbar-link:hover, -.navbar.is-light .navbar-start .navbar-link.is-active, -.navbar.is-light .navbar-end > a.navbar-item:focus, -.navbar.is-light .navbar-end > a.navbar-item:hover, -.navbar.is-light .navbar-end > a.navbar-item.is-active, -.navbar.is-light .navbar-end .navbar-link:focus, -.navbar.is-light .navbar-end .navbar-link:hover, -.navbar.is-light .navbar-end .navbar-link.is-active { - background-color: #e8e8e8; - color: rgba(0, 0, 0, 0.7); - } - .navbar.is-light .navbar-start .navbar-link::after, -.navbar.is-light .navbar-end .navbar-link::after { - border-color: rgba(0, 0, 0, 0.7); - } - .navbar.is-light .navbar-item.has-dropdown:focus .navbar-link, -.navbar.is-light .navbar-item.has-dropdown:hover .navbar-link, -.navbar.is-light .navbar-item.has-dropdown.is-active .navbar-link { - background-color: #e8e8e8; - color: rgba(0, 0, 0, 0.7); - } - .navbar.is-light .navbar-dropdown a.navbar-item.is-active { - background-color: whitesmoke; - color: rgba(0, 0, 0, 0.7); - } -} - -.navbar.is-dark { - background-color: #363636; - color: #fff; -} - -.navbar.is-dark .navbar-brand > .navbar-item, -.navbar.is-dark .navbar-brand .navbar-link { - color: #fff; -} - -.navbar.is-dark .navbar-brand > a.navbar-item:focus, .navbar.is-dark .navbar-brand > a.navbar-item:hover, .navbar.is-dark .navbar-brand > a.navbar-item.is-active, -.navbar.is-dark .navbar-brand .navbar-link:focus, -.navbar.is-dark .navbar-brand .navbar-link:hover, -.navbar.is-dark .navbar-brand .navbar-link.is-active { - background-color: #292929; - color: #fff; -} - -.navbar.is-dark .navbar-brand .navbar-link::after { - border-color: #fff; -} - -.navbar.is-dark .navbar-burger { - color: #fff; -} - -@media screen and (min-width: 1024px) { - .navbar.is-dark .navbar-start > .navbar-item, -.navbar.is-dark .navbar-start .navbar-link, -.navbar.is-dark .navbar-end > .navbar-item, -.navbar.is-dark .navbar-end .navbar-link { - color: #fff; - } - .navbar.is-dark .navbar-start > a.navbar-item:focus, .navbar.is-dark .navbar-start > a.navbar-item:hover, .navbar.is-dark .navbar-start > a.navbar-item.is-active, -.navbar.is-dark .navbar-start .navbar-link:focus, -.navbar.is-dark .navbar-start .navbar-link:hover, -.navbar.is-dark .navbar-start .navbar-link.is-active, -.navbar.is-dark .navbar-end > a.navbar-item:focus, -.navbar.is-dark .navbar-end > a.navbar-item:hover, -.navbar.is-dark .navbar-end > a.navbar-item.is-active, -.navbar.is-dark .navbar-end .navbar-link:focus, -.navbar.is-dark .navbar-end .navbar-link:hover, -.navbar.is-dark .navbar-end .navbar-link.is-active { - background-color: #292929; - color: #fff; - } - .navbar.is-dark .navbar-start .navbar-link::after, -.navbar.is-dark .navbar-end .navbar-link::after { - border-color: #fff; - } - .navbar.is-dark .navbar-item.has-dropdown:focus .navbar-link, -.navbar.is-dark .navbar-item.has-dropdown:hover .navbar-link, -.navbar.is-dark .navbar-item.has-dropdown.is-active .navbar-link { - background-color: #292929; - color: #fff; - } - .navbar.is-dark .navbar-dropdown a.navbar-item.is-active { - background-color: #363636; - color: #fff; - } -} - -.navbar.is-primary { - background-color: #FF9200; - color: #fff; -} - -.navbar.is-primary .navbar-brand > .navbar-item, -.navbar.is-primary .navbar-brand .navbar-link { - color: #fff; -} - -.navbar.is-primary .navbar-brand > a.navbar-item:focus, .navbar.is-primary .navbar-brand > a.navbar-item:hover, .navbar.is-primary .navbar-brand > a.navbar-item.is-active, -.navbar.is-primary .navbar-brand .navbar-link:focus, -.navbar.is-primary .navbar-brand .navbar-link:hover, -.navbar.is-primary .navbar-brand .navbar-link.is-active { - background-color: #e68300; - color: #fff; -} - -.navbar.is-primary .navbar-brand .navbar-link::after { - border-color: #fff; -} - -.navbar.is-primary .navbar-burger { - color: #fff; -} - -@media screen and (min-width: 1024px) { - .navbar.is-primary .navbar-start > .navbar-item, -.navbar.is-primary .navbar-start .navbar-link, -.navbar.is-primary .navbar-end > .navbar-item, -.navbar.is-primary .navbar-end .navbar-link { - color: #fff; - } - .navbar.is-primary .navbar-start > a.navbar-item:focus, .navbar.is-primary .navbar-start > a.navbar-item:hover, .navbar.is-primary .navbar-start > a.navbar-item.is-active, -.navbar.is-primary .navbar-start .navbar-link:focus, -.navbar.is-primary .navbar-start .navbar-link:hover, -.navbar.is-primary .navbar-start .navbar-link.is-active, -.navbar.is-primary .navbar-end > a.navbar-item:focus, -.navbar.is-primary .navbar-end > a.navbar-item:hover, -.navbar.is-primary .navbar-end > a.navbar-item.is-active, -.navbar.is-primary .navbar-end .navbar-link:focus, -.navbar.is-primary .navbar-end .navbar-link:hover, -.navbar.is-primary .navbar-end .navbar-link.is-active { - background-color: #e68300; - color: #fff; - } - .navbar.is-primary .navbar-start .navbar-link::after, -.navbar.is-primary .navbar-end .navbar-link::after { - border-color: #fff; - } - .navbar.is-primary .navbar-item.has-dropdown:focus .navbar-link, -.navbar.is-primary .navbar-item.has-dropdown:hover .navbar-link, -.navbar.is-primary .navbar-item.has-dropdown.is-active .navbar-link { - background-color: #e68300; - color: #fff; - } - .navbar.is-primary .navbar-dropdown a.navbar-item.is-active { - background-color: #FF9200; - color: #fff; - } -} - -.navbar.is-link { - background-color: #FF9200; - color: #fff; -} - -.navbar.is-link .navbar-brand > .navbar-item, -.navbar.is-link .navbar-brand .navbar-link { - color: #fff; -} - -.navbar.is-link .navbar-brand > a.navbar-item:focus, .navbar.is-link .navbar-brand > a.navbar-item:hover, .navbar.is-link .navbar-brand > a.navbar-item.is-active, -.navbar.is-link .navbar-brand .navbar-link:focus, -.navbar.is-link .navbar-brand .navbar-link:hover, -.navbar.is-link .navbar-brand .navbar-link.is-active { - background-color: #e68300; - color: #fff; -} - -.navbar.is-link .navbar-brand .navbar-link::after { - border-color: #fff; -} - -.navbar.is-link .navbar-burger { - color: #fff; -} - -@media screen and (min-width: 1024px) { - .navbar.is-link .navbar-start > .navbar-item, -.navbar.is-link .navbar-start .navbar-link, -.navbar.is-link .navbar-end > .navbar-item, -.navbar.is-link .navbar-end .navbar-link { - color: #fff; - } - .navbar.is-link .navbar-start > a.navbar-item:focus, .navbar.is-link .navbar-start > a.navbar-item:hover, .navbar.is-link .navbar-start > a.navbar-item.is-active, -.navbar.is-link .navbar-start .navbar-link:focus, -.navbar.is-link .navbar-start .navbar-link:hover, -.navbar.is-link .navbar-start .navbar-link.is-active, -.navbar.is-link .navbar-end > a.navbar-item:focus, -.navbar.is-link .navbar-end > a.navbar-item:hover, -.navbar.is-link .navbar-end > a.navbar-item.is-active, -.navbar.is-link .navbar-end .navbar-link:focus, -.navbar.is-link .navbar-end .navbar-link:hover, -.navbar.is-link .navbar-end .navbar-link.is-active { - background-color: #e68300; - color: #fff; - } - .navbar.is-link .navbar-start .navbar-link::after, -.navbar.is-link .navbar-end .navbar-link::after { - border-color: #fff; - } - .navbar.is-link .navbar-item.has-dropdown:focus .navbar-link, -.navbar.is-link .navbar-item.has-dropdown:hover .navbar-link, -.navbar.is-link .navbar-item.has-dropdown.is-active .navbar-link { - background-color: #e68300; - color: #fff; - } - .navbar.is-link .navbar-dropdown a.navbar-item.is-active { - background-color: #FF9200; - color: #fff; - } -} - -.navbar.is-info { - background-color: #3298dc; - color: #fff; -} - -.navbar.is-info .navbar-brand > .navbar-item, -.navbar.is-info .navbar-brand .navbar-link { - color: #fff; -} - -.navbar.is-info .navbar-brand > a.navbar-item:focus, .navbar.is-info .navbar-brand > a.navbar-item:hover, .navbar.is-info .navbar-brand > a.navbar-item.is-active, -.navbar.is-info .navbar-brand .navbar-link:focus, -.navbar.is-info .navbar-brand .navbar-link:hover, -.navbar.is-info .navbar-brand .navbar-link.is-active { - background-color: #238cd1; - color: #fff; -} - -.navbar.is-info .navbar-brand .navbar-link::after { - border-color: #fff; -} - -.navbar.is-info .navbar-burger { - color: #fff; -} - -@media screen and (min-width: 1024px) { - .navbar.is-info .navbar-start > .navbar-item, -.navbar.is-info .navbar-start .navbar-link, -.navbar.is-info .navbar-end > .navbar-item, -.navbar.is-info .navbar-end .navbar-link { - color: #fff; - } - .navbar.is-info .navbar-start > a.navbar-item:focus, .navbar.is-info .navbar-start > a.navbar-item:hover, .navbar.is-info .navbar-start > a.navbar-item.is-active, -.navbar.is-info .navbar-start .navbar-link:focus, -.navbar.is-info .navbar-start .navbar-link:hover, -.navbar.is-info .navbar-start .navbar-link.is-active, -.navbar.is-info .navbar-end > a.navbar-item:focus, -.navbar.is-info .navbar-end > a.navbar-item:hover, -.navbar.is-info .navbar-end > a.navbar-item.is-active, -.navbar.is-info .navbar-end .navbar-link:focus, -.navbar.is-info .navbar-end .navbar-link:hover, -.navbar.is-info .navbar-end .navbar-link.is-active { - background-color: #238cd1; - color: #fff; - } - .navbar.is-info .navbar-start .navbar-link::after, -.navbar.is-info .navbar-end .navbar-link::after { - border-color: #fff; - } - .navbar.is-info .navbar-item.has-dropdown:focus .navbar-link, -.navbar.is-info .navbar-item.has-dropdown:hover .navbar-link, -.navbar.is-info .navbar-item.has-dropdown.is-active .navbar-link { - background-color: #238cd1; - color: #fff; - } - .navbar.is-info .navbar-dropdown a.navbar-item.is-active { - background-color: #3298dc; - color: #fff; - } -} - -.navbar.is-success { - background-color: #01a901; - color: #fff; -} - -.navbar.is-success .navbar-brand > .navbar-item, -.navbar.is-success .navbar-brand .navbar-link { - color: #fff; -} - -.navbar.is-success .navbar-brand > a.navbar-item:focus, .navbar.is-success .navbar-brand > a.navbar-item:hover, .navbar.is-success .navbar-brand > a.navbar-item.is-active, -.navbar.is-success .navbar-brand .navbar-link:focus, -.navbar.is-success .navbar-brand .navbar-link:hover, -.navbar.is-success .navbar-brand .navbar-link.is-active { - background-color: #019001; - color: #fff; -} - -.navbar.is-success .navbar-brand .navbar-link::after { - border-color: #fff; -} - -.navbar.is-success .navbar-burger { - color: #fff; -} - -@media screen and (min-width: 1024px) { - .navbar.is-success .navbar-start > .navbar-item, -.navbar.is-success .navbar-start .navbar-link, -.navbar.is-success .navbar-end > .navbar-item, -.navbar.is-success .navbar-end .navbar-link { - color: #fff; - } - .navbar.is-success .navbar-start > a.navbar-item:focus, .navbar.is-success .navbar-start > a.navbar-item:hover, .navbar.is-success .navbar-start > a.navbar-item.is-active, -.navbar.is-success .navbar-start .navbar-link:focus, -.navbar.is-success .navbar-start .navbar-link:hover, -.navbar.is-success .navbar-start .navbar-link.is-active, -.navbar.is-success .navbar-end > a.navbar-item:focus, -.navbar.is-success .navbar-end > a.navbar-item:hover, -.navbar.is-success .navbar-end > a.navbar-item.is-active, -.navbar.is-success .navbar-end .navbar-link:focus, -.navbar.is-success .navbar-end .navbar-link:hover, -.navbar.is-success .navbar-end .navbar-link.is-active { - background-color: #019001; - color: #fff; - } - .navbar.is-success .navbar-start .navbar-link::after, -.navbar.is-success .navbar-end .navbar-link::after { - border-color: #fff; - } - .navbar.is-success .navbar-item.has-dropdown:focus .navbar-link, -.navbar.is-success .navbar-item.has-dropdown:hover .navbar-link, -.navbar.is-success .navbar-item.has-dropdown.is-active .navbar-link { - background-color: #019001; - color: #fff; - } - .navbar.is-success .navbar-dropdown a.navbar-item.is-active { - background-color: #01a901; - color: #fff; - } -} - -.navbar.is-warning { - background-color: #e7cb00; - color: rgba(0, 0, 0, 0.7); -} - -.navbar.is-warning .navbar-brand > .navbar-item, -.navbar.is-warning .navbar-brand .navbar-link { - color: rgba(0, 0, 0, 0.7); -} - -.navbar.is-warning .navbar-brand > a.navbar-item:focus, .navbar.is-warning .navbar-brand > a.navbar-item:hover, .navbar.is-warning .navbar-brand > a.navbar-item.is-active, -.navbar.is-warning .navbar-brand .navbar-link:focus, -.navbar.is-warning .navbar-brand .navbar-link:hover, -.navbar.is-warning .navbar-brand .navbar-link.is-active { - background-color: #ceb500; - color: rgba(0, 0, 0, 0.7); -} - -.navbar.is-warning .navbar-brand .navbar-link::after { - border-color: rgba(0, 0, 0, 0.7); -} - -.navbar.is-warning .navbar-burger { - color: rgba(0, 0, 0, 0.7); -} - -@media screen and (min-width: 1024px) { - .navbar.is-warning .navbar-start > .navbar-item, -.navbar.is-warning .navbar-start .navbar-link, -.navbar.is-warning .navbar-end > .navbar-item, -.navbar.is-warning .navbar-end .navbar-link { - color: rgba(0, 0, 0, 0.7); - } - .navbar.is-warning .navbar-start > a.navbar-item:focus, .navbar.is-warning .navbar-start > a.navbar-item:hover, .navbar.is-warning .navbar-start > a.navbar-item.is-active, -.navbar.is-warning .navbar-start .navbar-link:focus, -.navbar.is-warning .navbar-start .navbar-link:hover, -.navbar.is-warning .navbar-start .navbar-link.is-active, -.navbar.is-warning .navbar-end > a.navbar-item:focus, -.navbar.is-warning .navbar-end > a.navbar-item:hover, -.navbar.is-warning .navbar-end > a.navbar-item.is-active, -.navbar.is-warning .navbar-end .navbar-link:focus, -.navbar.is-warning .navbar-end .navbar-link:hover, -.navbar.is-warning .navbar-end .navbar-link.is-active { - background-color: #ceb500; - color: rgba(0, 0, 0, 0.7); - } - .navbar.is-warning .navbar-start .navbar-link::after, -.navbar.is-warning .navbar-end .navbar-link::after { - border-color: rgba(0, 0, 0, 0.7); - } - .navbar.is-warning .navbar-item.has-dropdown:focus .navbar-link, -.navbar.is-warning .navbar-item.has-dropdown:hover .navbar-link, -.navbar.is-warning .navbar-item.has-dropdown.is-active .navbar-link { - background-color: #ceb500; - color: rgba(0, 0, 0, 0.7); - } - .navbar.is-warning .navbar-dropdown a.navbar-item.is-active { - background-color: #e7cb00; - color: rgba(0, 0, 0, 0.7); - } -} - -.navbar.is-danger { - background-color: #F45F4B; - color: #fff; -} - -.navbar.is-danger .navbar-brand > .navbar-item, -.navbar.is-danger .navbar-brand .navbar-link { - color: #fff; -} - -.navbar.is-danger .navbar-brand > a.navbar-item:focus, .navbar.is-danger .navbar-brand > a.navbar-item:hover, .navbar.is-danger .navbar-brand > a.navbar-item.is-active, -.navbar.is-danger .navbar-brand .navbar-link:focus, -.navbar.is-danger .navbar-brand .navbar-link:hover, -.navbar.is-danger .navbar-brand .navbar-link.is-active { - background-color: #f34a33; - color: #fff; -} - -.navbar.is-danger .navbar-brand .navbar-link::after { - border-color: #fff; -} - -.navbar.is-danger .navbar-burger { - color: #fff; -} - -@media screen and (min-width: 1024px) { - .navbar.is-danger .navbar-start > .navbar-item, -.navbar.is-danger .navbar-start .navbar-link, -.navbar.is-danger .navbar-end > .navbar-item, -.navbar.is-danger .navbar-end .navbar-link { - color: #fff; - } - .navbar.is-danger .navbar-start > a.navbar-item:focus, .navbar.is-danger .navbar-start > a.navbar-item:hover, .navbar.is-danger .navbar-start > a.navbar-item.is-active, -.navbar.is-danger .navbar-start .navbar-link:focus, -.navbar.is-danger .navbar-start .navbar-link:hover, -.navbar.is-danger .navbar-start .navbar-link.is-active, -.navbar.is-danger .navbar-end > a.navbar-item:focus, -.navbar.is-danger .navbar-end > a.navbar-item:hover, -.navbar.is-danger .navbar-end > a.navbar-item.is-active, -.navbar.is-danger .navbar-end .navbar-link:focus, -.navbar.is-danger .navbar-end .navbar-link:hover, -.navbar.is-danger .navbar-end .navbar-link.is-active { - background-color: #f34a33; - color: #fff; - } - .navbar.is-danger .navbar-start .navbar-link::after, -.navbar.is-danger .navbar-end .navbar-link::after { - border-color: #fff; - } - .navbar.is-danger .navbar-item.has-dropdown:focus .navbar-link, -.navbar.is-danger .navbar-item.has-dropdown:hover .navbar-link, -.navbar.is-danger .navbar-item.has-dropdown.is-active .navbar-link { - background-color: #f34a33; - color: #fff; - } - .navbar.is-danger .navbar-dropdown a.navbar-item.is-active { - background-color: #F45F4B; - color: #fff; - } -} - -.navbar > .container { - align-items: stretch; - display: flex; - min-height: 4rem; - width: 100%; -} - -.navbar.has-shadow { - box-shadow: 0 2px 0 0 #FFFFFF; -} - -.navbar.is-fixed-bottom, .navbar.is-fixed-top { - left: 0; - position: fixed; - right: 0; - z-index: 30; -} - -.navbar.is-fixed-bottom { - bottom: 0; -} - -.navbar.is-fixed-bottom.has-shadow { - box-shadow: 0 -2px 0 0 #FFFFFF; -} - -.navbar.is-fixed-top { - top: 0; -} - -html.has-navbar-fixed-top, -body.has-navbar-fixed-top { - padding-top: 4rem; -} - -html.has-navbar-fixed-bottom, -body.has-navbar-fixed-bottom { - padding-bottom: 4rem; -} - -.navbar-brand, -.navbar-tabs { - align-items: stretch; - display: flex; - flex-shrink: 0; - min-height: 4rem; -} - -.navbar-brand a.navbar-item:focus, .navbar-brand a.navbar-item:hover { - background-color: transparent; -} - -.navbar-tabs { - -webkit-overflow-scrolling: touch; - max-width: 100vw; - overflow-x: auto; - overflow-y: hidden; -} - -.navbar-burger { - color: rgba(0, 0, 0, 0.87); - cursor: pointer; - display: block; - height: 4rem; - position: relative; - width: 4rem; - margin-left: auto; -} - -.navbar-burger span { - background-color: currentColor; - display: block; - height: 1px; - left: calc(50% - 8px); - position: absolute; - transform-origin: center; - transition-duration: 86ms; - transition-property: background-color, opacity, transform; - transition-timing-function: ease-out; - width: 16px; -} - -.navbar-burger span:nth-child(1) { - top: calc(50% - 6px); -} - -.navbar-burger span:nth-child(2) { - top: calc(50% - 1px); -} - -.navbar-burger span:nth-child(3) { - top: calc(50% + 4px); -} - -.navbar-burger:hover { - background-color: rgba(0, 0, 0, 0.05); -} - -.navbar-burger.is-active span:nth-child(1) { - transform: translateY(5px) rotate(45deg); -} - -.navbar-burger.is-active span:nth-child(2) { - opacity: 0; -} - -.navbar-burger.is-active span:nth-child(3) { - transform: translateY(-5px) rotate(-45deg); -} - -.navbar-menu { - display: none; -} - -.navbar-item, -.navbar-link { - color: rgba(0, 0, 0, 0.87); - display: block; - line-height: 1.5; - padding: 0.5rem 0.75rem; - position: relative; -} - -.navbar-item .icon:only-child, -.navbar-link .icon:only-child { - margin-left: -0.25rem; - margin-right: -0.25rem; -} - -a.navbar-item, -.navbar-link { - cursor: pointer; -} - -a.navbar-item:focus, a.navbar-item:focus-within, a.navbar-item:hover, a.navbar-item.is-active, -.navbar-link:focus, -.navbar-link:focus-within, -.navbar-link:hover, -.navbar-link.is-active { - background-color: #fafafa; - color: #FF9200; -} - -.navbar-item { - flex-grow: 0; - flex-shrink: 0; -} - -.navbar-item img { - max-height: 1.75rem; -} - -.navbar-item.has-dropdown { - padding: 0; -} - -.navbar-item.is-expanded { - flex-grow: 1; - flex-shrink: 1; -} - -.navbar-item.is-tab { - border-bottom: 1px solid transparent; - min-height: 4rem; - padding-bottom: calc(0.5rem - 1px); -} - -.navbar-item.is-tab:focus, .navbar-item.is-tab:hover { - background-color: transparent; - border-bottom-color: #FF9200; -} - -.navbar-item.is-tab.is-active { - background-color: transparent; - border-bottom-color: #FF9200; - border-bottom-style: solid; - border-bottom-width: 3px; - color: #FF9200; - padding-bottom: calc(0.5rem - 3px); -} - -.navbar-content { - flex-grow: 1; - flex-shrink: 1; -} - -.navbar-link:not(.is-arrowless) { - padding-right: 2.5em; -} - -.navbar-link:not(.is-arrowless)::after { - border-color: #FF9200; - margin-top: -0.375em; - right: 1.125em; -} - -.navbar-dropdown { - font-size: 0.875rem; - padding-bottom: 0.5rem; - padding-top: 0.5rem; -} - -.navbar-dropdown .navbar-item { - padding-left: 1.5rem; - padding-right: 1.5rem; -} - -.navbar-divider { - background-color: #FFFFFF; - border: none; - display: none; - height: 2px; - margin: 0.5rem 0; -} - -@media screen and (max-width: 1023px) { - .navbar > .container { - display: block; - } - .navbar-brand .navbar-item, -.navbar-tabs .navbar-item { - align-items: center; - display: flex; - } - .navbar-link::after { - display: none; - } - .navbar-menu { - background-color: white; - box-shadow: 0 8px 16px rgba(10, 10, 10, 0.1); - padding: 0.5rem 0; - } - .navbar-menu.is-active { - display: block; - } - .navbar.is-fixed-bottom-touch, .navbar.is-fixed-top-touch { - left: 0; - position: fixed; - right: 0; - z-index: 30; - } - .navbar.is-fixed-bottom-touch { - bottom: 0; - } - .navbar.is-fixed-bottom-touch.has-shadow { - box-shadow: 0 -2px 3px rgba(10, 10, 10, 0.1); - } - .navbar.is-fixed-top-touch { - top: 0; - } - .navbar.is-fixed-top .navbar-menu, .navbar.is-fixed-top-touch .navbar-menu { - -webkit-overflow-scrolling: touch; - max-height: calc(100vh - 4rem); - overflow: auto; - } - html.has-navbar-fixed-top-touch, -body.has-navbar-fixed-top-touch { - padding-top: 4rem; - } - html.has-navbar-fixed-bottom-touch, -body.has-navbar-fixed-bottom-touch { - padding-bottom: 4rem; - } -} - -@media screen and (min-width: 1024px) { - .navbar, -.navbar-menu, -.navbar-start, -.navbar-end { - align-items: stretch; - display: flex; - } - .navbar { - min-height: 4rem; - } - .navbar.is-spaced { - padding: 1rem 2rem; - } - .navbar.is-spaced .navbar-start, -.navbar.is-spaced .navbar-end { - align-items: center; - } - .navbar.is-spaced a.navbar-item, -.navbar.is-spaced .navbar-link { - border-radius: 4px; - } - .navbar.is-transparent a.navbar-item:focus, .navbar.is-transparent a.navbar-item:hover, .navbar.is-transparent a.navbar-item.is-active, -.navbar.is-transparent .navbar-link:focus, -.navbar.is-transparent .navbar-link:hover, -.navbar.is-transparent .navbar-link.is-active { - background-color: transparent !important; - } - .navbar.is-transparent .navbar-item.has-dropdown.is-active .navbar-link, .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus .navbar-link, .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus-within .navbar-link, .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:hover .navbar-link { - background-color: transparent !important; - } - .navbar.is-transparent .navbar-dropdown a.navbar-item:focus, .navbar.is-transparent .navbar-dropdown a.navbar-item:hover { - background-color: #FFFFFF; - color: #0a0a0a; - } - .navbar.is-transparent .navbar-dropdown a.navbar-item.is-active { - background-color: #FFFFFF; - color: #FF9200; - } - .navbar-burger { - display: none; - } - .navbar-item, -.navbar-link { - align-items: center; - display: flex; - } - .navbar-item.has-dropdown { - align-items: stretch; - } - .navbar-item.has-dropdown-up .navbar-link::after { - transform: rotate(135deg) translate(0.25em, -0.25em); - } - .navbar-item.has-dropdown-up .navbar-dropdown { - border-bottom: 2px solid #dbdbdb; - border-radius: 6px 6px 0 0; - border-top: none; - bottom: 100%; - box-shadow: 0 -8px 8px rgba(10, 10, 10, 0.1); - top: auto; - } - .navbar-item.is-active .navbar-dropdown, .navbar-item.is-hoverable:focus .navbar-dropdown, .navbar-item.is-hoverable:focus-within .navbar-dropdown, .navbar-item.is-hoverable:hover .navbar-dropdown { - display: block; - } - .navbar.is-spaced .navbar-item.is-active .navbar-dropdown, .navbar-item.is-active .navbar-dropdown.is-boxed, .navbar.is-spaced .navbar-item.is-hoverable:focus .navbar-dropdown, .navbar-item.is-hoverable:focus .navbar-dropdown.is-boxed, .navbar.is-spaced .navbar-item.is-hoverable:focus-within .navbar-dropdown, .navbar-item.is-hoverable:focus-within .navbar-dropdown.is-boxed, .navbar.is-spaced .navbar-item.is-hoverable:hover .navbar-dropdown, .navbar-item.is-hoverable:hover .navbar-dropdown.is-boxed { - opacity: 1; - pointer-events: auto; - transform: translateY(0); - } - .navbar-menu { - flex-grow: 1; - flex-shrink: 0; - } - .navbar-start { - justify-content: flex-start; - margin-right: auto; - } - .navbar-end { - justify-content: flex-end; - margin-left: auto; - } - .navbar-dropdown { - background-color: white; - border-bottom-left-radius: 6px; - border-bottom-right-radius: 6px; - border-top: 2px solid #dbdbdb; - box-shadow: 0 8px 8px rgba(10, 10, 10, 0.1); - display: none; - font-size: 0.875rem; - left: 0; - min-width: 100%; - position: absolute; - top: 100%; - z-index: 20; - } - .navbar-dropdown .navbar-item { - padding: 0.375rem 1rem; - white-space: nowrap; - } - .navbar-dropdown a.navbar-item { - padding-right: 3rem; - } - .navbar-dropdown a.navbar-item:focus, .navbar-dropdown a.navbar-item:hover { - background-color: #FFFFFF; - color: #0a0a0a; - } - .navbar-dropdown a.navbar-item.is-active { - background-color: #FFFFFF; - color: #FF9200; - } - .navbar.is-spaced .navbar-dropdown, .navbar-dropdown.is-boxed { - border-radius: 6px; - border-top: none; - box-shadow: 0 8px 8px rgba(10, 10, 10, 0.1), 0 0 0 1px rgba(10, 10, 10, 0.1); - display: block; - opacity: 0; - pointer-events: none; - top: calc(100% + (-4px)); - transform: translateY(-5px); - transition-duration: 86ms; - transition-property: opacity, transform; - } - .navbar-dropdown.is-right { - left: auto; - right: 0; - } - .navbar-divider { - display: block; - } - .navbar > .container .navbar-brand, -.container > .navbar .navbar-brand { - margin-left: -0.75rem; - } - .navbar > .container .navbar-menu, -.container > .navbar .navbar-menu { - margin-right: -0.75rem; - } - .navbar.is-fixed-bottom-desktop, .navbar.is-fixed-top-desktop { - left: 0; - position: fixed; - right: 0; - z-index: 30; - } - .navbar.is-fixed-bottom-desktop { - bottom: 0; - } - .navbar.is-fixed-bottom-desktop.has-shadow { - box-shadow: 0 -2px 3px rgba(10, 10, 10, 0.1); - } - .navbar.is-fixed-top-desktop { - top: 0; - } - html.has-navbar-fixed-top-desktop, -body.has-navbar-fixed-top-desktop { - padding-top: 4rem; - } - html.has-navbar-fixed-bottom-desktop, -body.has-navbar-fixed-bottom-desktop { - padding-bottom: 4rem; - } - html.has-spaced-navbar-fixed-top, -body.has-spaced-navbar-fixed-top { - padding-top: 6rem; - } - html.has-spaced-navbar-fixed-bottom, -body.has-spaced-navbar-fixed-bottom { - padding-bottom: 6rem; - } - a.navbar-item.is-active, -.navbar-link.is-active { - color: #0a0a0a; - } - a.navbar-item.is-active:not(:focus):not(:hover), -.navbar-link.is-active:not(:focus):not(:hover) { - background-color: transparent; - } - .navbar-item.has-dropdown:focus .navbar-link, .navbar-item.has-dropdown:hover .navbar-link, .navbar-item.has-dropdown.is-active .navbar-link { - background-color: #fafafa; - } -} - -.hero.is-fullheight-with-navbar { - min-height: calc(100vh - 4rem); -} - -.menu { - font-size: 1rem; -} - -.menu.is-small { - font-size: 0.75rem; -} - -.menu.is-medium { - font-size: 1.25rem; -} - -.menu.is-large { - font-size: 1.5rem; -} - -.menu-list { - line-height: 1.25; -} - -.menu-list a { - border-radius: 2px; - color: rgba(0, 0, 0, 0.87); - display: block; - padding: 0.5em 0.75em; -} - -.menu-list a:hover { - background-color: transparent; - color: #ca6500; -} - -.menu-list a.is-active { - background-color: #ca6500; - color: #fff; -} - -.menu-list li ul { - border-left: 1px solid #dbdbdb; - margin: 0.75em; - padding-left: 0.75em; -} - -.menu-label { - color: #7a7a7a; - font-size: 0.75em; - letter-spacing: 0.1em; - text-transform: uppercase; -} - -.menu-label:not(:first-child) { - margin-top: 1em; -} - -.menu-label:not(:last-child) { - margin-bottom: 1em; -} - -.tabs { - -webkit-overflow-scrolling: touch; - align-items: stretch; - display: flex; - font-size: 1rem; - justify-content: space-between; - overflow: hidden; - overflow-x: auto; - white-space: nowrap; -} - -.tabs a { - align-items: center; - border-bottom-color: #dbdbdb; - border-bottom-style: solid; - border-bottom-width: 1px; - color: rgba(0, 0, 0, 0.87); - display: flex; - justify-content: center; - margin-bottom: -1px; - padding: 0.5em 1em; - vertical-align: top; -} - -.tabs a:hover { - border-bottom-color: #363636; - color: #363636; -} - -.tabs li { - display: block; -} - -.tabs li.is-active a { - border-bottom-color: #FF9200; - color: #FF9200; -} - -.tabs ul { - align-items: center; - border-bottom-color: #dbdbdb; - border-bottom-style: solid; - border-bottom-width: 1px; - display: flex; - flex-grow: 1; - flex-shrink: 0; - justify-content: flex-start; -} - -.tabs ul.is-left { - padding-right: 0.75em; -} - -.tabs ul.is-center { - flex: none; - justify-content: center; - padding-left: 0.75em; - padding-right: 0.75em; -} - -.tabs ul.is-right { - justify-content: flex-end; - padding-left: 0.75em; -} - -.tabs .icon:first-child { - margin-right: 0.5em; -} - -.tabs .icon:last-child { - margin-left: 0.5em; -} - -.tabs.is-centered ul { - justify-content: center; -} - -.tabs.is-right ul { - justify-content: flex-end; -} - -.tabs.is-boxed a { - border: 1px solid transparent; - border-radius: 4px 4px 0 0; -} - -.tabs.is-boxed a:hover { - background-color: #FFFFFF; - border-bottom-color: #dbdbdb; -} - -.tabs.is-boxed li.is-active a { - background-color: white; - border-color: #dbdbdb; - border-bottom-color: transparent !important; -} - -.tabs.is-fullwidth li { - flex-grow: 1; - flex-shrink: 0; -} - -.tabs.is-toggle a { - border-color: #dbdbdb; - border-style: solid; - border-width: 1px; - margin-bottom: 0; - position: relative; -} - -.tabs.is-toggle a:hover { - background-color: #FFFFFF; - border-color: #b5b5b5; - z-index: 2; -} - -.tabs.is-toggle li + li { - margin-left: -1px; -} - -.tabs.is-toggle li:first-child a { - border-top-left-radius: 4px; - border-bottom-left-radius: 4px; -} - -.tabs.is-toggle li:last-child a { - border-top-right-radius: 4px; - border-bottom-right-radius: 4px; -} - -.tabs.is-toggle li.is-active a { - background-color: #FF9200; - border-color: #FF9200; - color: #fff; - z-index: 1; -} - -.tabs.is-toggle ul { - border-bottom: none; -} - -.tabs.is-toggle.is-toggle-rounded li:first-child a { - border-bottom-left-radius: 290486px; - border-top-left-radius: 290486px; - padding-left: 1.25em; -} - -.tabs.is-toggle.is-toggle-rounded li:last-child a { - border-bottom-right-radius: 290486px; - border-top-right-radius: 290486px; - padding-right: 1.25em; -} - -.tabs.is-small { - font-size: 0.75rem; -} - -.tabs.is-medium { - font-size: 1.25rem; -} - -.tabs.is-large { - font-size: 1.5rem; -} - -.icon { - align-items: center; - display: inline-flex; - justify-content: center; - height: 1.5rem; - width: 1.5rem; -} - -.icon.is-small { - height: 1rem; - width: 1rem; -} - -.icon.is-medium { - height: 2rem; - width: 2rem; -} - -.icon.is-large { - height: 3rem; - width: 3rem; -} - -.icon-text { - align-items: flex-start; - color: inherit; - display: inline-flex; - flex-wrap: wrap; - line-height: 1.5rem; - vertical-align: top; -} - -.icon-text .icon { - flex-grow: 0; - flex-shrink: 0; -} - -.icon-text .icon:not(:last-child) { - margin-right: 0.25em; -} - -.icon-text .icon:not(:first-child) { - margin-left: 0.25em; -} - -div.icon-text { - display: flex; -} - -.image { - display: block; - position: relative; -} - -.image img { - display: block; - height: auto; - width: 100%; -} - -.image img.is-rounded { - border-radius: 290486px; -} - -.image.is-fullwidth { - width: 100%; -} - -.image.is-square img, -.image.is-square .has-ratio, .image.is-1by1 img, -.image.is-1by1 .has-ratio, .image.is-5by4 img, -.image.is-5by4 .has-ratio, .image.is-4by3 img, -.image.is-4by3 .has-ratio, .image.is-3by2 img, -.image.is-3by2 .has-ratio, .image.is-5by3 img, -.image.is-5by3 .has-ratio, .image.is-16by9 img, -.image.is-16by9 .has-ratio, .image.is-2by1 img, -.image.is-2by1 .has-ratio, .image.is-3by1 img, -.image.is-3by1 .has-ratio, .image.is-4by5 img, -.image.is-4by5 .has-ratio, .image.is-3by4 img, -.image.is-3by4 .has-ratio, .image.is-2by3 img, -.image.is-2by3 .has-ratio, .image.is-3by5 img, -.image.is-3by5 .has-ratio, .image.is-9by16 img, -.image.is-9by16 .has-ratio, .image.is-1by2 img, -.image.is-1by2 .has-ratio, .image.is-1by3 img, -.image.is-1by3 .has-ratio { - height: 100%; - width: 100%; -} - -.image.is-square, .image.is-1by1 { - padding-top: 100%; -} - -.image.is-5by4 { - padding-top: 80%; -} - -.image.is-4by3 { - padding-top: 75%; -} - -.image.is-3by2 { - padding-top: 66.6666%; -} - -.image.is-5by3 { - padding-top: 60%; -} - -.image.is-16by9 { - padding-top: 56.25%; -} - -.image.is-2by1 { - padding-top: 50%; -} - -.image.is-3by1 { - padding-top: 33.3333%; -} - -.image.is-4by5 { - padding-top: 125%; -} - -.image.is-3by4 { - padding-top: 133.3333%; -} - -.image.is-2by3 { - padding-top: 150%; -} - -.image.is-3by5 { - padding-top: 166.6666%; -} - -.image.is-9by16 { - padding-top: 177.7777%; -} - -.image.is-1by2 { - padding-top: 200%; -} - -.image.is-1by3 { - padding-top: 300%; -} - -.image.is-16x16 { - height: 16px; - width: 16px; -} - -.image.is-24x24 { - height: 24px; - width: 24px; -} - -.image.is-32x32 { - height: 32px; - width: 32px; -} - -.image.is-48x48 { - height: 48px; - width: 48px; -} - -.image.is-64x64 { - height: 64px; - width: 64px; -} - -.image.is-96x96 { - height: 96px; - width: 96px; -} - -.image.is-128x128 { - height: 128px; - width: 128px; -} - -/* Bulma Form */ -.select select, .textarea, .input { - background-color: white; - border-color: #dbdbdb; - border-radius: 4px; - color: #363636; -} - -.select select::-moz-placeholder, .textarea::-moz-placeholder, .input::-moz-placeholder { - color: rgba(54, 54, 54, 0.3); -} - -.select select::-webkit-input-placeholder, .textarea::-webkit-input-placeholder, .input::-webkit-input-placeholder { - color: rgba(54, 54, 54, 0.3); -} - -.select select:-moz-placeholder, .textarea:-moz-placeholder, .input:-moz-placeholder { - color: rgba(54, 54, 54, 0.3); -} - -.select select:-ms-input-placeholder, .textarea:-ms-input-placeholder, .input:-ms-input-placeholder { - color: rgba(54, 54, 54, 0.3); -} - -.select select:hover, .textarea:hover, .input:hover, .select select.is-hovered, .is-hovered.textarea, .is-hovered.input { - border-color: #b5b5b5; -} - -.select select:focus, .textarea:focus, .input:focus, .select select.is-focused, .is-focused.textarea, .is-focused.input, .select select:active, .textarea:active, .input:active, .select select.is-active, .is-active.textarea, .is-active.input { - border-color: #FF9200; - box-shadow: 0 0 0 0.125em rgba(255, 146, 0, 0.25); -} - -.select select[disabled], [disabled].textarea, [disabled].input, fieldset[disabled] .select select, .select fieldset[disabled] select, fieldset[disabled] .textarea, fieldset[disabled] .input { - background-color: #FFFFFF; - border-color: #FFFFFF; - box-shadow: none; - color: #7a7a7a; -} - -.select select[disabled]::-moz-placeholder, [disabled].textarea::-moz-placeholder, [disabled].input::-moz-placeholder, fieldset[disabled] .select select::-moz-placeholder, .select fieldset[disabled] select::-moz-placeholder, fieldset[disabled] .textarea::-moz-placeholder, fieldset[disabled] .input::-moz-placeholder { - color: rgba(122, 122, 122, 0.3); -} - -.select select[disabled]::-webkit-input-placeholder, [disabled].textarea::-webkit-input-placeholder, [disabled].input::-webkit-input-placeholder, fieldset[disabled] .select select::-webkit-input-placeholder, .select fieldset[disabled] select::-webkit-input-placeholder, fieldset[disabled] .textarea::-webkit-input-placeholder, fieldset[disabled] .input::-webkit-input-placeholder { - color: rgba(122, 122, 122, 0.3); -} - -.select select[disabled]:-moz-placeholder, [disabled].textarea:-moz-placeholder, [disabled].input:-moz-placeholder, fieldset[disabled] .select select:-moz-placeholder, .select fieldset[disabled] select:-moz-placeholder, fieldset[disabled] .textarea:-moz-placeholder, fieldset[disabled] .input:-moz-placeholder { - color: rgba(122, 122, 122, 0.3); -} - -.select select[disabled]:-ms-input-placeholder, [disabled].textarea:-ms-input-placeholder, [disabled].input:-ms-input-placeholder, fieldset[disabled] .select select:-ms-input-placeholder, .select fieldset[disabled] select:-ms-input-placeholder, fieldset[disabled] .textarea:-ms-input-placeholder, fieldset[disabled] .input:-ms-input-placeholder { - color: rgba(122, 122, 122, 0.3); -} - -.textarea, .input { - box-shadow: inset 0 0.0625em 0.125em rgba(10, 10, 10, 0.05); - max-width: 100%; - width: 100%; -} - -[readonly].textarea, [readonly].input { - box-shadow: none; -} - -.is-white.textarea, .is-white.input { - border-color: white; -} - -.is-white.textarea:focus, .is-white.input:focus, .is-white.is-focused.textarea, .is-white.is-focused.input, .is-white.textarea:active, .is-white.input:active, .is-white.is-active.textarea, .is-white.is-active.input { - box-shadow: 0 0 0 0.125em rgba(255, 255, 255, 0.25); -} - -.is-black.textarea, .is-black.input { - border-color: #0a0a0a; -} - -.is-black.textarea:focus, .is-black.input:focus, .is-black.is-focused.textarea, .is-black.is-focused.input, .is-black.textarea:active, .is-black.input:active, .is-black.is-active.textarea, .is-black.is-active.input { - box-shadow: 0 0 0 0.125em rgba(10, 10, 10, 0.25); -} - -.is-light.textarea, .is-light.input { - border-color: whitesmoke; -} - -.is-light.textarea:focus, .is-light.input:focus, .is-light.is-focused.textarea, .is-light.is-focused.input, .is-light.textarea:active, .is-light.input:active, .is-light.is-active.textarea, .is-light.is-active.input { - box-shadow: 0 0 0 0.125em rgba(245, 245, 245, 0.25); -} - -.is-dark.textarea, .is-dark.input { - border-color: #363636; -} - -.is-dark.textarea:focus, .is-dark.input:focus, .is-dark.is-focused.textarea, .is-dark.is-focused.input, .is-dark.textarea:active, .is-dark.input:active, .is-dark.is-active.textarea, .is-dark.is-active.input { - box-shadow: 0 0 0 0.125em rgba(54, 54, 54, 0.25); -} - -.is-primary.textarea, .is-primary.input { - border-color: #FF9200; -} - -.is-primary.textarea:focus, .is-primary.input:focus, .is-primary.is-focused.textarea, .is-primary.is-focused.input, .is-primary.textarea:active, .is-primary.input:active, .is-primary.is-active.textarea, .is-primary.is-active.input { - box-shadow: 0 0 0 0.125em rgba(255, 146, 0, 0.25); -} - -.is-link.textarea, .is-link.input { - border-color: #FF9200; -} - -.is-link.textarea:focus, .is-link.input:focus, .is-link.is-focused.textarea, .is-link.is-focused.input, .is-link.textarea:active, .is-link.input:active, .is-link.is-active.textarea, .is-link.is-active.input { - box-shadow: 0 0 0 0.125em rgba(255, 146, 0, 0.25); -} - -.is-info.textarea, .is-info.input { - border-color: #3298dc; -} - -.is-info.textarea:focus, .is-info.input:focus, .is-info.is-focused.textarea, .is-info.is-focused.input, .is-info.textarea:active, .is-info.input:active, .is-info.is-active.textarea, .is-info.is-active.input { - box-shadow: 0 0 0 0.125em rgba(50, 152, 220, 0.25); -} - -.is-success.textarea, .is-success.input { - border-color: #01a901; -} - -.is-success.textarea:focus, .is-success.input:focus, .is-success.is-focused.textarea, .is-success.is-focused.input, .is-success.textarea:active, .is-success.input:active, .is-success.is-active.textarea, .is-success.is-active.input { - box-shadow: 0 0 0 0.125em rgba(1, 169, 1, 0.25); -} - -.is-warning.textarea, .is-warning.input { - border-color: #e7cb00; -} - -.is-warning.textarea:focus, .is-warning.input:focus, .is-warning.is-focused.textarea, .is-warning.is-focused.input, .is-warning.textarea:active, .is-warning.input:active, .is-warning.is-active.textarea, .is-warning.is-active.input { - box-shadow: 0 0 0 0.125em rgba(231, 203, 0, 0.25); -} - -.is-danger.textarea, .is-danger.input { - border-color: #F45F4B; -} - -.is-danger.textarea:focus, .is-danger.input:focus, .is-danger.is-focused.textarea, .is-danger.is-focused.input, .is-danger.textarea:active, .is-danger.input:active, .is-danger.is-active.textarea, .is-danger.is-active.input { - box-shadow: 0 0 0 0.125em rgba(244, 95, 75, 0.25); -} - -.is-small.textarea, .is-small.input { - border-radius: 2px; - font-size: 0.75rem; -} - -.is-medium.textarea, .is-medium.input { - font-size: 1.25rem; -} - -.is-large.textarea, .is-large.input { - font-size: 1.5rem; -} - -.is-fullwidth.textarea, .is-fullwidth.input { - display: block; - width: 100%; -} - -.is-inline.textarea, .is-inline.input { - display: inline; - width: auto; -} - -.input.is-rounded { - border-radius: 290486px; - padding-left: calc(calc(0.75em - 1px) + 0.375em); - padding-right: calc(calc(0.75em - 1px) + 0.375em); -} - -.input.is-static { - background-color: transparent; - border-color: transparent; - box-shadow: none; - padding-left: 0; - padding-right: 0; -} - -.textarea { - display: block; - max-width: 100%; - min-width: 100%; - padding: calc(0.75em - 1px); - resize: vertical; -} - -.textarea:not([rows]) { - max-height: 40em; - min-height: 8em; -} - -.textarea[rows] { - height: initial; -} - -.textarea.has-fixed-size { - resize: none; -} - -.radio, .checkbox { - cursor: pointer; - display: inline-block; - line-height: 1.25; - position: relative; -} - -.radio input, .checkbox input { - cursor: pointer; -} - -.radio:hover, .checkbox:hover { - color: #363636; -} - -[disabled].radio, [disabled].checkbox, fieldset[disabled] .radio, fieldset[disabled] .checkbox, -.radio input[disabled], -.checkbox input[disabled] { - color: #7a7a7a; - cursor: not-allowed; -} - -.radio + .radio { - margin-left: 0.5em; -} - -.select { - display: inline-block; - max-width: 100%; - position: relative; - vertical-align: top; -} - -.select:not(.is-multiple) { - height: 2.5em; -} - -.select:not(.is-multiple):not(.is-loading)::after { - border-color: #FF9200; - right: 1.125em; - z-index: 4; -} - -.select.is-rounded select { - border-radius: 290486px; - padding-left: 1em; -} - -.select select { - cursor: pointer; - display: block; - font-size: 1em; - max-width: 100%; - outline: none; -} - -.select select::-ms-expand { - display: none; -} - -.select select[disabled]:hover, fieldset[disabled] .select select:hover { - border-color: #FFFFFF; -} - -.select select:not([multiple]) { - padding-right: 2.5em; -} - -.select select[multiple] { - height: auto; - padding: 0; -} - -.select select[multiple] option { - padding: 0.5em 1em; -} - -.select:not(.is-multiple):not(.is-loading):hover::after { - border-color: #363636; -} - -.select.is-white:not(:hover)::after { - border-color: white; -} - -.select.is-white select { - border-color: white; -} - -.select.is-white select:hover, .select.is-white select.is-hovered { - border-color: #f2f2f2; -} - -.select.is-white select:focus, .select.is-white select.is-focused, .select.is-white select:active, .select.is-white select.is-active { - box-shadow: 0 0 0 0.125em rgba(255, 255, 255, 0.25); -} - -.select.is-black:not(:hover)::after { - border-color: #0a0a0a; -} - -.select.is-black select { - border-color: #0a0a0a; -} - -.select.is-black select:hover, .select.is-black select.is-hovered { - border-color: black; -} - -.select.is-black select:focus, .select.is-black select.is-focused, .select.is-black select:active, .select.is-black select.is-active { - box-shadow: 0 0 0 0.125em rgba(10, 10, 10, 0.25); -} - -.select.is-light:not(:hover)::after { - border-color: whitesmoke; -} - -.select.is-light select { - border-color: whitesmoke; -} - -.select.is-light select:hover, .select.is-light select.is-hovered { - border-color: #e8e8e8; -} - -.select.is-light select:focus, .select.is-light select.is-focused, .select.is-light select:active, .select.is-light select.is-active { - box-shadow: 0 0 0 0.125em rgba(245, 245, 245, 0.25); -} - -.select.is-dark:not(:hover)::after { - border-color: #363636; -} - -.select.is-dark select { - border-color: #363636; -} - -.select.is-dark select:hover, .select.is-dark select.is-hovered { - border-color: #292929; -} - -.select.is-dark select:focus, .select.is-dark select.is-focused, .select.is-dark select:active, .select.is-dark select.is-active { - box-shadow: 0 0 0 0.125em rgba(54, 54, 54, 0.25); -} - -.select.is-primary:not(:hover)::after { - border-color: #FF9200; -} - -.select.is-primary select { - border-color: #FF9200; -} - -.select.is-primary select:hover, .select.is-primary select.is-hovered { - border-color: #e68300; -} - -.select.is-primary select:focus, .select.is-primary select.is-focused, .select.is-primary select:active, .select.is-primary select.is-active { - box-shadow: 0 0 0 0.125em rgba(255, 146, 0, 0.25); -} - -.select.is-link:not(:hover)::after { - border-color: #FF9200; -} - -.select.is-link select { - border-color: #FF9200; -} - -.select.is-link select:hover, .select.is-link select.is-hovered { - border-color: #e68300; -} - -.select.is-link select:focus, .select.is-link select.is-focused, .select.is-link select:active, .select.is-link select.is-active { - box-shadow: 0 0 0 0.125em rgba(255, 146, 0, 0.25); -} - -.select.is-info:not(:hover)::after { - border-color: #3298dc; -} - -.select.is-info select { - border-color: #3298dc; -} - -.select.is-info select:hover, .select.is-info select.is-hovered { - border-color: #238cd1; -} - -.select.is-info select:focus, .select.is-info select.is-focused, .select.is-info select:active, .select.is-info select.is-active { - box-shadow: 0 0 0 0.125em rgba(50, 152, 220, 0.25); -} - -.select.is-success:not(:hover)::after { - border-color: #01a901; -} - -.select.is-success select { - border-color: #01a901; -} - -.select.is-success select:hover, .select.is-success select.is-hovered { - border-color: #019001; -} - -.select.is-success select:focus, .select.is-success select.is-focused, .select.is-success select:active, .select.is-success select.is-active { - box-shadow: 0 0 0 0.125em rgba(1, 169, 1, 0.25); -} - -.select.is-warning:not(:hover)::after { - border-color: #e7cb00; -} - -.select.is-warning select { - border-color: #e7cb00; -} - -.select.is-warning select:hover, .select.is-warning select.is-hovered { - border-color: #ceb500; -} - -.select.is-warning select:focus, .select.is-warning select.is-focused, .select.is-warning select:active, .select.is-warning select.is-active { - box-shadow: 0 0 0 0.125em rgba(231, 203, 0, 0.25); -} - -.select.is-danger:not(:hover)::after { - border-color: #F45F4B; -} - -.select.is-danger select { - border-color: #F45F4B; -} - -.select.is-danger select:hover, .select.is-danger select.is-hovered { - border-color: #f34a33; -} - -.select.is-danger select:focus, .select.is-danger select.is-focused, .select.is-danger select:active, .select.is-danger select.is-active { - box-shadow: 0 0 0 0.125em rgba(244, 95, 75, 0.25); -} - -.select.is-small { - border-radius: 2px; - font-size: 0.75rem; -} - -.select.is-medium { - font-size: 1.25rem; -} - -.select.is-large { - font-size: 1.5rem; -} - -.select.is-disabled::after { - border-color: #7a7a7a; -} - -.select.is-fullwidth { - width: 100%; -} - -.select.is-fullwidth select { - width: 100%; -} - -.select.is-loading::after { - margin-top: 0; - position: absolute; - right: 0.625em; - top: 0.625em; - transform: none; -} - -.select.is-loading.is-small:after { - font-size: 0.75rem; -} - -.select.is-loading.is-medium:after { - font-size: 1.25rem; -} - -.select.is-loading.is-large:after { - font-size: 1.5rem; -} - -.file { - align-items: stretch; - display: flex; - justify-content: flex-start; - position: relative; -} - -.file.is-white .file-cta { - background-color: white; - border-color: transparent; - color: #0a0a0a; -} - -.file.is-white:hover .file-cta, .file.is-white.is-hovered .file-cta { - background-color: #f9f9f9; - border-color: transparent; - color: #0a0a0a; -} - -.file.is-white:focus .file-cta, .file.is-white.is-focused .file-cta { - border-color: transparent; - box-shadow: 0 0 0.5em rgba(255, 255, 255, 0.25); - color: #0a0a0a; -} - -.file.is-white:active .file-cta, .file.is-white.is-active .file-cta { - background-color: #f2f2f2; - border-color: transparent; - color: #0a0a0a; -} - -.file.is-black .file-cta { - background-color: #0a0a0a; - border-color: transparent; - color: white; -} - -.file.is-black:hover .file-cta, .file.is-black.is-hovered .file-cta { - background-color: #040404; - border-color: transparent; - color: white; -} - -.file.is-black:focus .file-cta, .file.is-black.is-focused .file-cta { - border-color: transparent; - box-shadow: 0 0 0.5em rgba(10, 10, 10, 0.25); - color: white; -} - -.file.is-black:active .file-cta, .file.is-black.is-active .file-cta { - background-color: black; - border-color: transparent; - color: white; -} - -.file.is-light .file-cta { - background-color: whitesmoke; - border-color: transparent; - color: rgba(0, 0, 0, 0.7); -} - -.file.is-light:hover .file-cta, .file.is-light.is-hovered .file-cta { - background-color: #eeeeee; - border-color: transparent; - color: rgba(0, 0, 0, 0.7); -} - -.file.is-light:focus .file-cta, .file.is-light.is-focused .file-cta { - border-color: transparent; - box-shadow: 0 0 0.5em rgba(245, 245, 245, 0.25); - color: rgba(0, 0, 0, 0.7); -} - -.file.is-light:active .file-cta, .file.is-light.is-active .file-cta { - background-color: #e8e8e8; - border-color: transparent; - color: rgba(0, 0, 0, 0.7); -} - -.file.is-dark .file-cta { - background-color: #363636; - border-color: transparent; - color: #fff; -} - -.file.is-dark:hover .file-cta, .file.is-dark.is-hovered .file-cta { - background-color: #2f2f2f; - border-color: transparent; - color: #fff; -} - -.file.is-dark:focus .file-cta, .file.is-dark.is-focused .file-cta { - border-color: transparent; - box-shadow: 0 0 0.5em rgba(54, 54, 54, 0.25); - color: #fff; -} - -.file.is-dark:active .file-cta, .file.is-dark.is-active .file-cta { - background-color: #292929; - border-color: transparent; - color: #fff; -} - -.file.is-primary .file-cta { - background-color: #FF9200; - border-color: transparent; - color: #fff; -} - -.file.is-primary:hover .file-cta, .file.is-primary.is-hovered .file-cta { - background-color: #f28b00; - border-color: transparent; - color: #fff; -} - -.file.is-primary:focus .file-cta, .file.is-primary.is-focused .file-cta { - border-color: transparent; - box-shadow: 0 0 0.5em rgba(255, 146, 0, 0.25); - color: #fff; -} - -.file.is-primary:active .file-cta, .file.is-primary.is-active .file-cta { - background-color: #e68300; - border-color: transparent; - color: #fff; -} - -.file.is-link .file-cta { - background-color: #FF9200; - border-color: transparent; - color: #fff; -} - -.file.is-link:hover .file-cta, .file.is-link.is-hovered .file-cta { - background-color: #f28b00; - border-color: transparent; - color: #fff; -} - -.file.is-link:focus .file-cta, .file.is-link.is-focused .file-cta { - border-color: transparent; - box-shadow: 0 0 0.5em rgba(255, 146, 0, 0.25); - color: #fff; -} - -.file.is-link:active .file-cta, .file.is-link.is-active .file-cta { - background-color: #e68300; - border-color: transparent; - color: #fff; -} - -.file.is-info .file-cta { - background-color: #3298dc; - border-color: transparent; - color: #fff; -} - -.file.is-info:hover .file-cta, .file.is-info.is-hovered .file-cta { - background-color: #2793da; - border-color: transparent; - color: #fff; -} - -.file.is-info:focus .file-cta, .file.is-info.is-focused .file-cta { - border-color: transparent; - box-shadow: 0 0 0.5em rgba(50, 152, 220, 0.25); - color: #fff; -} - -.file.is-info:active .file-cta, .file.is-info.is-active .file-cta { - background-color: #238cd1; - border-color: transparent; - color: #fff; -} - -.file.is-success .file-cta { - background-color: #01a901; - border-color: transparent; - color: #fff; -} - -.file.is-success:hover .file-cta, .file.is-success.is-hovered .file-cta { - background-color: #019c01; - border-color: transparent; - color: #fff; -} - -.file.is-success:focus .file-cta, .file.is-success.is-focused .file-cta { - border-color: transparent; - box-shadow: 0 0 0.5em rgba(1, 169, 1, 0.25); - color: #fff; -} - -.file.is-success:active .file-cta, .file.is-success.is-active .file-cta { - background-color: #019001; - border-color: transparent; - color: #fff; -} - -.file.is-warning .file-cta { - background-color: #e7cb00; - border-color: transparent; - color: rgba(0, 0, 0, 0.7); -} - -.file.is-warning:hover .file-cta, .file.is-warning.is-hovered .file-cta { - background-color: #dac000; - border-color: transparent; - color: rgba(0, 0, 0, 0.7); -} - -.file.is-warning:focus .file-cta, .file.is-warning.is-focused .file-cta { - border-color: transparent; - box-shadow: 0 0 0.5em rgba(231, 203, 0, 0.25); - color: rgba(0, 0, 0, 0.7); -} - -.file.is-warning:active .file-cta, .file.is-warning.is-active .file-cta { - background-color: #ceb500; - border-color: transparent; - color: rgba(0, 0, 0, 0.7); -} - -.file.is-danger .file-cta { - background-color: #F45F4B; - border-color: transparent; - color: #fff; -} - -.file.is-danger:hover .file-cta, .file.is-danger.is-hovered .file-cta { - background-color: #f3543f; - border-color: transparent; - color: #fff; -} - -.file.is-danger:focus .file-cta, .file.is-danger.is-focused .file-cta { - border-color: transparent; - box-shadow: 0 0 0.5em rgba(244, 95, 75, 0.25); - color: #fff; -} - -.file.is-danger:active .file-cta, .file.is-danger.is-active .file-cta { - background-color: #f34a33; - border-color: transparent; - color: #fff; -} - -.file.is-small { - font-size: 0.75rem; -} - -.file.is-medium { - font-size: 1.25rem; -} - -.file.is-medium .file-icon .fa { - font-size: 21px; -} - -.file.is-large { - font-size: 1.5rem; -} - -.file.is-large .file-icon .fa { - font-size: 28px; -} - -.file.has-name .file-cta { - border-bottom-right-radius: 0; - border-top-right-radius: 0; -} - -.file.has-name .file-name { - border-bottom-left-radius: 0; - border-top-left-radius: 0; -} - -.file.has-name.is-empty .file-cta { - border-radius: 4px; -} - -.file.has-name.is-empty .file-name { - display: none; -} - -.file.is-boxed .file-label { - flex-direction: column; -} - -.file.is-boxed .file-cta { - flex-direction: column; - height: auto; - padding: 1em 3em; -} - -.file.is-boxed .file-name { - border-width: 0 1px 1px; -} - -.file.is-boxed .file-icon { - height: 1.5em; - width: 1.5em; -} - -.file.is-boxed .file-icon .fa { - font-size: 21px; -} - -.file.is-boxed.is-small .file-icon .fa { - font-size: 14px; -} - -.file.is-boxed.is-medium .file-icon .fa { - font-size: 28px; -} - -.file.is-boxed.is-large .file-icon .fa { - font-size: 35px; -} - -.file.is-boxed.has-name .file-cta { - border-radius: 4px 4px 0 0; -} - -.file.is-boxed.has-name .file-name { - border-radius: 0 0 4px 4px; - border-width: 0 1px 1px; -} - -.file.is-centered { - justify-content: center; -} - -.file.is-fullwidth .file-label { - width: 100%; -} - -.file.is-fullwidth .file-name { - flex-grow: 1; - max-width: none; -} - -.file.is-right { - justify-content: flex-end; -} - -.file.is-right .file-cta { - border-radius: 0 4px 4px 0; -} - -.file.is-right .file-name { - border-radius: 4px 0 0 4px; - border-width: 1px 0 1px 1px; - order: -1; -} - -.file-label { - align-items: stretch; - display: flex; - cursor: pointer; - justify-content: flex-start; - overflow: hidden; - position: relative; -} - -.file-label:hover .file-cta { - background-color: #eeeeee; - color: #363636; -} - -.file-label:hover .file-name { - border-color: #d5d5d5; -} - -.file-label:active .file-cta { - background-color: #e8e8e8; - color: #363636; -} - -.file-label:active .file-name { - border-color: #cfcfcf; -} - -.file-input { - height: 100%; - left: 0; - opacity: 0; - outline: none; - position: absolute; - top: 0; - width: 100%; -} - -.file-cta, -.file-name { - border-color: #dbdbdb; - border-radius: 4px; - font-size: 1em; - padding-left: 1em; - padding-right: 1em; - white-space: nowrap; -} - -.file-cta { - background-color: whitesmoke; - color: rgba(0, 0, 0, 0.87); -} - -.file-name { - border-color: #dbdbdb; - border-style: solid; - border-width: 1px 1px 1px 0; - display: block; - max-width: 16em; - overflow: hidden; - text-align: inherit; - text-overflow: ellipsis; -} - -.file-icon { - align-items: center; - display: flex; - height: 1em; - justify-content: center; - margin-right: 0.5em; - width: 1em; -} - -.file-icon .fa { - font-size: 14px; -} - -.label { - color: #363636; - display: block; - font-size: 1rem; - font-weight: 700; -} - -.label:not(:last-child) { - margin-bottom: 0.5em; -} - -.label.is-small { - font-size: 0.75rem; -} - -.label.is-medium { - font-size: 1.25rem; -} - -.label.is-large { - font-size: 1.5rem; -} - -.help { - display: block; - font-size: 0.75rem; - margin-top: 0.25rem; -} - -.help.is-white { - color: white; -} - -.help.is-black { - color: #0a0a0a; -} - -.help.is-light { - color: whitesmoke; -} - -.help.is-dark { - color: #363636; -} - -.help.is-primary { - color: #FF9200; -} - -.help.is-link { - color: #FF9200; -} - -.help.is-info { - color: #3298dc; -} - -.help.is-success { - color: #01a901; -} - -.help.is-warning { - color: #e7cb00; -} - -.help.is-danger { - color: #F45F4B; -} - -.field:not(:last-child) { - margin-bottom: 0.75rem; -} - -.field.has-addons { - display: flex; - justify-content: flex-start; -} - -.field.has-addons .control:not(:last-child) { - margin-right: -1px; -} - -.field.has-addons .control:not(:first-child):not(:last-child) .button, -.field.has-addons .control:not(:first-child):not(:last-child) .input, -.field.has-addons .control:not(:first-child):not(:last-child) .select select { - border-radius: 0; -} - -.field.has-addons .control:first-child:not(:only-child) .button, -.field.has-addons .control:first-child:not(:only-child) .input, -.field.has-addons .control:first-child:not(:only-child) .select select { - border-bottom-right-radius: 0; - border-top-right-radius: 0; -} - -.field.has-addons .control:last-child:not(:only-child) .button, -.field.has-addons .control:last-child:not(:only-child) .input, -.field.has-addons .control:last-child:not(:only-child) .select select { - border-bottom-left-radius: 0; - border-top-left-radius: 0; -} - -.field.has-addons .control .button:not([disabled]):hover, .field.has-addons .control .button:not([disabled]).is-hovered, -.field.has-addons .control .input:not([disabled]):hover, -.field.has-addons .control .input:not([disabled]).is-hovered, -.field.has-addons .control .select select:not([disabled]):hover, -.field.has-addons .control .select select:not([disabled]).is-hovered { - z-index: 2; -} - -.field.has-addons .control .button:not([disabled]):focus, .field.has-addons .control .button:not([disabled]).is-focused, .field.has-addons .control .button:not([disabled]):active, .field.has-addons .control .button:not([disabled]).is-active, -.field.has-addons .control .input:not([disabled]):focus, -.field.has-addons .control .input:not([disabled]).is-focused, -.field.has-addons .control .input:not([disabled]):active, -.field.has-addons .control .input:not([disabled]).is-active, -.field.has-addons .control .select select:not([disabled]):focus, -.field.has-addons .control .select select:not([disabled]).is-focused, -.field.has-addons .control .select select:not([disabled]):active, -.field.has-addons .control .select select:not([disabled]).is-active { - z-index: 3; -} - -.field.has-addons .control .button:not([disabled]):focus:hover, .field.has-addons .control .button:not([disabled]).is-focused:hover, .field.has-addons .control .button:not([disabled]):active:hover, .field.has-addons .control .button:not([disabled]).is-active:hover, -.field.has-addons .control .input:not([disabled]):focus:hover, -.field.has-addons .control .input:not([disabled]).is-focused:hover, -.field.has-addons .control .input:not([disabled]):active:hover, -.field.has-addons .control .input:not([disabled]).is-active:hover, -.field.has-addons .control .select select:not([disabled]):focus:hover, -.field.has-addons .control .select select:not([disabled]).is-focused:hover, -.field.has-addons .control .select select:not([disabled]):active:hover, -.field.has-addons .control .select select:not([disabled]).is-active:hover { - z-index: 4; -} - -.field.has-addons .control.is-expanded { - flex-grow: 1; - flex-shrink: 1; -} - -.field.has-addons.has-addons-centered { - justify-content: center; -} - -.field.has-addons.has-addons-right { - justify-content: flex-end; -} - -.field.has-addons.has-addons-fullwidth .control { - flex-grow: 1; - flex-shrink: 0; -} - -.field.is-grouped { - display: flex; - justify-content: flex-start; -} - -.field.is-grouped > .control { - flex-shrink: 0; -} - -.field.is-grouped > .control:not(:last-child) { - margin-bottom: 0; - margin-right: 0.75rem; -} - -.field.is-grouped > .control.is-expanded { - flex-grow: 1; - flex-shrink: 1; -} - -.field.is-grouped.is-grouped-centered { - justify-content: center; -} - -.field.is-grouped.is-grouped-right { - justify-content: flex-end; -} - -.field.is-grouped.is-grouped-multiline { - flex-wrap: wrap; -} - -.field.is-grouped.is-grouped-multiline > .control:last-child, .field.is-grouped.is-grouped-multiline > .control:not(:last-child) { - margin-bottom: 0.75rem; -} - -.field.is-grouped.is-grouped-multiline:last-child { - margin-bottom: -0.75rem; -} - -.field.is-grouped.is-grouped-multiline:not(:last-child) { - margin-bottom: 0; -} - -@media screen and (min-width: 769px), print { - .field.is-horizontal { - display: flex; - } -} - -.field-label .label { - font-size: inherit; -} - -@media screen and (max-width: 768px) { - .field-label { - margin-bottom: 0.5rem; - } -} - -@media screen and (min-width: 769px), print { - .field-label { - flex-basis: 0; - flex-grow: 1; - flex-shrink: 0; - margin-right: 1.5rem; - text-align: right; - } - .field-label.is-small { - font-size: 0.75rem; - padding-top: 0.375em; - } - .field-label.is-normal { - padding-top: 0.375em; - } - .field-label.is-medium { - font-size: 1.25rem; - padding-top: 0.375em; - } - .field-label.is-large { - font-size: 1.5rem; - padding-top: 0.375em; - } -} - -.field-body .field .field { - margin-bottom: 0; -} - -@media screen and (min-width: 769px), print { - .field-body { - display: flex; - flex-basis: 0; - flex-grow: 5; - flex-shrink: 1; - } - .field-body .field { - margin-bottom: 0; - } - .field-body > .field { - flex-shrink: 1; - } - .field-body > .field:not(.is-narrow) { - flex-grow: 1; - } - .field-body > .field:not(:last-child) { - margin-right: 0.75rem; - } -} - -.control { - box-sizing: border-box; - clear: both; - font-size: 1rem; - position: relative; - text-align: inherit; -} - -.control.has-icons-left .input:focus ~ .icon, -.control.has-icons-left .select:focus ~ .icon, .control.has-icons-right .input:focus ~ .icon, -.control.has-icons-right .select:focus ~ .icon { - color: rgba(0, 0, 0, 0.87); -} - -.control.has-icons-left .input.is-small ~ .icon, -.control.has-icons-left .select.is-small ~ .icon, .control.has-icons-right .input.is-small ~ .icon, -.control.has-icons-right .select.is-small ~ .icon { - font-size: 0.75rem; -} - -.control.has-icons-left .input.is-medium ~ .icon, -.control.has-icons-left .select.is-medium ~ .icon, .control.has-icons-right .input.is-medium ~ .icon, -.control.has-icons-right .select.is-medium ~ .icon { - font-size: 1.25rem; -} - -.control.has-icons-left .input.is-large ~ .icon, -.control.has-icons-left .select.is-large ~ .icon, .control.has-icons-right .input.is-large ~ .icon, -.control.has-icons-right .select.is-large ~ .icon { - font-size: 1.5rem; -} - -.control.has-icons-left .icon, .control.has-icons-right .icon { - color: #dbdbdb; - height: 2.5em; - pointer-events: none; - position: absolute; - top: 0; - width: 2.5em; - z-index: 4; -} - -.control.has-icons-left .input, -.control.has-icons-left .select select { - padding-left: 2.5em; -} - -.control.has-icons-left .icon.is-left { - left: 0; -} - -.control.has-icons-right .input, -.control.has-icons-right .select select { - padding-right: 2.5em; -} - -.control.has-icons-right .icon.is-right { - right: 0; -} - -.control.is-loading::after { - position: absolute !important; - right: 0.625em; - top: 0.625em; - z-index: 4; -} - -.control.is-loading.is-small:after { - font-size: 0.75rem; -} - -.control.is-loading.is-medium:after { - font-size: 1.25rem; -} - -.control.is-loading.is-large:after { - font-size: 1.5rem; -} - -/* Bulma Helpers */ -.has-text-white { - color: white !important; -} - -a.has-text-white:hover, a.has-text-white:focus { - color: #e6e6e6 !important; -} - -.has-background-white { - background-color: white !important; -} - -.has-text-black { - color: #0a0a0a !important; -} - -a.has-text-black:hover, a.has-text-black:focus { - color: black !important; -} - -.has-background-black { - background-color: #0a0a0a !important; -} - -.has-text-light { - color: whitesmoke !important; -} - -a.has-text-light:hover, a.has-text-light:focus { - color: #dbdbdb !important; -} - -.has-background-light { - background-color: whitesmoke !important; -} - -.has-text-dark { - color: #363636 !important; -} - -a.has-text-dark:hover, a.has-text-dark:focus { - color: #1c1c1c !important; -} - -.has-background-dark { - background-color: #363636 !important; -} - -.has-text-primary { - color: #FF9200 !important; -} - -a.has-text-primary:hover, a.has-text-primary:focus { - color: #cc7500 !important; -} - -.has-background-primary { - background-color: #FF9200 !important; -} - -.has-text-primary-light { - color: #fff6eb !important; -} - -a.has-text-primary-light:hover, a.has-text-primary-light:focus { - color: #ffe0b8 !important; -} - -.has-background-primary-light { - background-color: #fff6eb !important; -} - -.has-text-primary-dark { - color: #a35d00 !important; -} - -a.has-text-primary-dark:hover, a.has-text-primary-dark:focus { - color: #d67b00 !important; -} - -.has-background-primary-dark { - background-color: #a35d00 !important; -} - -.has-text-link { - color: #FF9200 !important; -} - -a.has-text-link:hover, a.has-text-link:focus { - color: #cc7500 !important; -} - -.has-background-link { - background-color: #FF9200 !important; -} - -.has-text-link-light { - color: #fff6eb !important; -} - -a.has-text-link-light:hover, a.has-text-link-light:focus { - color: #ffe0b8 !important; -} - -.has-background-link-light { - background-color: #fff6eb !important; -} - -.has-text-link-dark { - color: #a35d00 !important; -} - -a.has-text-link-dark:hover, a.has-text-link-dark:focus { - color: #d67b00 !important; -} - -.has-background-link-dark { - background-color: #a35d00 !important; -} - -.has-text-info { - color: #3298dc !important; -} - -a.has-text-info:hover, a.has-text-info:focus { - color: #207dbc !important; -} - -.has-background-info { - background-color: #3298dc !important; -} - -.has-text-info-light { - color: #eef6fc !important; -} - -a.has-text-info-light:hover, a.has-text-info-light:focus { - color: #c2e0f5 !important; -} - -.has-background-info-light { - background-color: #eef6fc !important; -} - -.has-text-info-dark { - color: #1d72aa !important; -} - -a.has-text-info-dark:hover, a.has-text-info-dark:focus { - color: #248fd6 !important; -} - -.has-background-info-dark { - background-color: #1d72aa !important; -} - -.has-text-success { - color: #01a901 !important; -} - -a.has-text-success:hover, a.has-text-success:focus { - color: #017601 !important; -} - -.has-background-success { - background-color: #01a901 !important; -} - -.has-text-success-light { - color: #ebffeb !important; -} - -a.has-text-success-light:hover, a.has-text-success-light:focus { - color: #b8ffb8 !important; -} - -.has-background-success-light { - background-color: #ebffeb !important; -} - -.has-text-success-dark { - color: #01cb01 !important; -} - -a.has-text-success-dark:hover, a.has-text-success-dark:focus { - color: #02fe02 !important; -} - -.has-background-success-dark { - background-color: #01cb01 !important; -} - -.has-text-warning { - color: #e7cb00 !important; -} - -a.has-text-warning:hover, a.has-text-warning:focus { - color: #b49e00 !important; -} - -.has-background-warning { - background-color: #e7cb00 !important; -} - -.has-text-warning-light { - color: #fffdeb !important; -} - -a.has-text-warning-light:hover, a.has-text-warning-light:focus { - color: #fff6b8 !important; -} - -.has-background-warning-light { - background-color: #fffdeb !important; -} - -.has-text-warning-dark { - color: #948200 !important; -} - -a.has-text-warning-dark:hover, a.has-text-warning-dark:focus { - color: #c7af00 !important; -} - -.has-background-warning-dark { - background-color: #948200 !important; -} - -.has-text-danger { - color: #F45F4B !important; -} - -a.has-text-danger:hover, a.has-text-danger:focus { - color: #f1341b !important; -} - -.has-background-danger { - background-color: #F45F4B !important; -} - -.has-text-danger-light { - color: #feeeec !important; -} - -a.has-text-danger-light:hover, a.has-text-danger-light:focus { - color: #fbc3bc !important; -} - -.has-background-danger-light { - background-color: #feeeec !important; -} - -.has-text-danger-dark { - color: #c0210c !important; -} - -a.has-text-danger-dark:hover, a.has-text-danger-dark:focus { - color: #f0290f !important; -} - -.has-background-danger-dark { - background-color: #c0210c !important; -} - -.has-text-black-bis { - color: #121212 !important; -} - -.has-background-black-bis { - background-color: #121212 !important; -} - -.has-text-black-ter { - color: #242424 !important; -} - -.has-background-black-ter { - background-color: #242424 !important; -} - -.has-text-grey-darker { - color: #363636 !important; -} - -.has-background-grey-darker { - background-color: #363636 !important; -} - -.has-text-grey-dark { - color: #4a4a4a !important; -} - -.has-background-grey-dark { - background-color: #4a4a4a !important; -} - -.has-text-grey { - color: #7a7a7a !important; -} - -.has-background-grey { - background-color: #7a7a7a !important; -} - -.has-text-grey-light { - color: #b5b5b5 !important; -} - -.has-background-grey-light { - background-color: #b5b5b5 !important; -} - -.has-text-grey-lighter { - color: #dbdbdb !important; -} - -.has-background-grey-lighter { - background-color: #dbdbdb !important; -} - -.has-text-white-ter { - color: whitesmoke !important; -} - -.has-background-white-ter { - background-color: whitesmoke !important; -} - -.has-text-white-bis { - color: #fafafa !important; -} - -.has-background-white-bis { - background-color: #fafafa !important; -} - -.is-flex-direction-row { - flex-direction: row !important; -} - -.is-flex-direction-row-reverse { - flex-direction: row-reverse !important; -} - -.is-flex-direction-column { - flex-direction: column !important; -} - -.is-flex-direction-column-reverse { - flex-direction: column-reverse !important; -} - -.is-flex-wrap-nowrap { - flex-wrap: nowrap !important; -} - -.is-flex-wrap-wrap { - flex-wrap: wrap !important; -} - -.is-flex-wrap-wrap-reverse { - flex-wrap: wrap-reverse !important; -} - -.is-justify-content-flex-start { - justify-content: flex-start !important; -} - -.is-justify-content-flex-end { - justify-content: flex-end !important; -} - -.is-justify-content-center { - justify-content: center !important; -} - -.is-justify-content-space-between { - justify-content: space-between !important; -} - -.is-justify-content-space-around { - justify-content: space-around !important; -} - -.is-justify-content-space-evenly { - justify-content: space-evenly !important; -} - -.is-justify-content-start { - justify-content: start !important; -} - -.is-justify-content-end { - justify-content: end !important; -} - -.is-justify-content-left { - justify-content: left !important; -} - -.is-justify-content-right { - justify-content: right !important; -} - -.is-align-content-flex-start { - align-content: flex-start !important; -} - -.is-align-content-flex-end { - align-content: flex-end !important; -} - -.is-align-content-center { - align-content: center !important; -} - -.is-align-content-space-between { - align-content: space-between !important; -} - -.is-align-content-space-around { - align-content: space-around !important; -} - -.is-align-content-space-evenly { - align-content: space-evenly !important; -} - -.is-align-content-stretch { - align-content: stretch !important; -} - -.is-align-content-start { - align-content: start !important; -} - -.is-align-content-end { - align-content: end !important; -} - -.is-align-content-baseline { - align-content: baseline !important; -} - -.is-align-items-stretch { - align-items: stretch !important; -} - -.is-align-items-flex-start { - align-items: flex-start !important; -} - -.is-align-items-flex-end { - align-items: flex-end !important; -} - -.is-align-items-center { - align-items: center !important; -} - -.is-align-items-baseline { - align-items: baseline !important; -} - -.is-align-items-start { - align-items: start !important; -} - -.is-align-items-end { - align-items: end !important; -} - -.is-align-items-self-start { - align-items: self-start !important; -} - -.is-align-items-self-end { - align-items: self-end !important; -} - -.is-align-self-auto { - align-self: auto !important; -} - -.is-align-self-flex-start { - align-self: flex-start !important; -} - -.is-align-self-flex-end { - align-self: flex-end !important; -} - -.is-align-self-center { - align-self: center !important; -} - -.is-align-self-baseline { - align-self: baseline !important; -} - -.is-align-self-stretch { - align-self: stretch !important; -} - -.is-flex-grow-0 { - flex-grow: 0 !important; -} - -.is-flex-grow-1 { - flex-grow: 1 !important; -} - -.is-flex-grow-2 { - flex-grow: 2 !important; -} - -.is-flex-grow-3 { - flex-grow: 3 !important; -} - -.is-flex-grow-4 { - flex-grow: 4 !important; -} - -.is-flex-grow-5 { - flex-grow: 5 !important; -} - -.is-flex-shrink-0 { - flex-shrink: 0 !important; -} - -.is-flex-shrink-1 { - flex-shrink: 1 !important; -} - -.is-flex-shrink-2 { - flex-shrink: 2 !important; -} - -.is-flex-shrink-3 { - flex-shrink: 3 !important; -} - -.is-flex-shrink-4 { - flex-shrink: 4 !important; -} - -.is-flex-shrink-5 { - flex-shrink: 5 !important; -} - -.is-clearfix::after { - clear: both; - content: " "; - display: table; -} - -.is-pulled-left { - float: left !important; -} - -.is-pulled-right { - float: right !important; -} - -.is-radiusless { - border-radius: 0 !important; -} - -.is-shadowless { - box-shadow: none !important; -} - -.is-clickable { - cursor: pointer !important; - pointer-events: all !important; -} - -.is-clipped { - overflow: hidden !important; -} - -.is-relative { - position: relative !important; -} - -.is-marginless { - margin: 0 !important; -} - -.is-paddingless { - padding: 0 !important; -} - -.m-0 { - margin: 0 !important; -} - -.mt-0 { - margin-top: 0 !important; -} - -.mr-0 { - margin-right: 0 !important; -} - -.mb-0 { - margin-bottom: 0 !important; -} - -.ml-0 { - margin-left: 0 !important; -} - -.mx-0 { - margin-left: 0 !important; - margin-right: 0 !important; -} - -.my-0 { - margin-top: 0 !important; - margin-bottom: 0 !important; -} - -.m-1 { - margin: 0.25rem !important; -} - -.mt-1 { - margin-top: 0.25rem !important; -} - -.mr-1 { - margin-right: 0.25rem !important; -} - -.mb-1 { - margin-bottom: 0.25rem !important; -} - -.ml-1 { - margin-left: 0.25rem !important; -} - -.mx-1 { - margin-left: 0.25rem !important; - margin-right: 0.25rem !important; -} - -.my-1 { - margin-top: 0.25rem !important; - margin-bottom: 0.25rem !important; -} - -.m-2 { - margin: 0.5rem !important; -} - -.mt-2 { - margin-top: 0.5rem !important; -} - -.mr-2 { - margin-right: 0.5rem !important; -} - -.mb-2 { - margin-bottom: 0.5rem !important; -} - -.ml-2 { - margin-left: 0.5rem !important; -} - -.mx-2 { - margin-left: 0.5rem !important; - margin-right: 0.5rem !important; -} - -.my-2 { - margin-top: 0.5rem !important; - margin-bottom: 0.5rem !important; -} - -.m-3 { - margin: 0.75rem !important; -} - -.mt-3 { - margin-top: 0.75rem !important; -} - -.mr-3 { - margin-right: 0.75rem !important; -} - -.mb-3 { - margin-bottom: 0.75rem !important; -} - -.ml-3 { - margin-left: 0.75rem !important; -} - -.mx-3 { - margin-left: 0.75rem !important; - margin-right: 0.75rem !important; -} - -.my-3 { - margin-top: 0.75rem !important; - margin-bottom: 0.75rem !important; -} - -.m-4 { - margin: 1rem !important; -} - -.mt-4 { - margin-top: 1rem !important; -} - -.mr-4 { - margin-right: 1rem !important; -} - -.mb-4 { - margin-bottom: 1rem !important; -} - -.ml-4 { - margin-left: 1rem !important; -} - -.mx-4 { - margin-left: 1rem !important; - margin-right: 1rem !important; -} - -.my-4 { - margin-top: 1rem !important; - margin-bottom: 1rem !important; -} - -.m-5 { - margin: 1.5rem !important; -} - -.mt-5 { - margin-top: 1.5rem !important; -} - -.mr-5 { - margin-right: 1.5rem !important; -} - -.mb-5 { - margin-bottom: 1.5rem !important; -} - -.ml-5 { - margin-left: 1.5rem !important; -} - -.mx-5 { - margin-left: 1.5rem !important; - margin-right: 1.5rem !important; -} - -.my-5 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important; -} - -.m-6 { - margin: 3rem !important; -} - -.mt-6 { - margin-top: 3rem !important; -} - -.mr-6 { - margin-right: 3rem !important; -} - -.mb-6 { - margin-bottom: 3rem !important; -} - -.ml-6 { - margin-left: 3rem !important; -} - -.mx-6 { - margin-left: 3rem !important; - margin-right: 3rem !important; -} - -.my-6 { - margin-top: 3rem !important; - margin-bottom: 3rem !important; -} - -.p-0 { - padding: 0 !important; -} - -.pt-0 { - padding-top: 0 !important; -} - -.pr-0 { - padding-right: 0 !important; -} - -.pb-0 { - padding-bottom: 0 !important; -} - -.pl-0 { - padding-left: 0 !important; -} - -.px-0 { - padding-left: 0 !important; - padding-right: 0 !important; -} - -.py-0 { - padding-top: 0 !important; - padding-bottom: 0 !important; -} - -.p-1 { - padding: 0.25rem !important; -} - -.pt-1 { - padding-top: 0.25rem !important; -} - -.pr-1 { - padding-right: 0.25rem !important; -} - -.pb-1 { - padding-bottom: 0.25rem !important; -} - -.pl-1 { - padding-left: 0.25rem !important; -} - -.px-1 { - padding-left: 0.25rem !important; - padding-right: 0.25rem !important; -} - -.py-1 { - padding-top: 0.25rem !important; - padding-bottom: 0.25rem !important; -} - -.p-2 { - padding: 0.5rem !important; -} - -.pt-2 { - padding-top: 0.5rem !important; -} - -.pr-2 { - padding-right: 0.5rem !important; -} - -.pb-2 { - padding-bottom: 0.5rem !important; -} - -.pl-2 { - padding-left: 0.5rem !important; -} - -.px-2 { - padding-left: 0.5rem !important; - padding-right: 0.5rem !important; -} - -.py-2 { - padding-top: 0.5rem !important; - padding-bottom: 0.5rem !important; -} - -.p-3 { - padding: 0.75rem !important; -} - -.pt-3 { - padding-top: 0.75rem !important; -} - -.pr-3 { - padding-right: 0.75rem !important; -} - -.pb-3 { - padding-bottom: 0.75rem !important; -} - -.pl-3 { - padding-left: 0.75rem !important; -} - -.px-3 { - padding-left: 0.75rem !important; - padding-right: 0.75rem !important; -} - -.py-3 { - padding-top: 0.75rem !important; - padding-bottom: 0.75rem !important; -} - -.p-4 { - padding: 1rem !important; -} - -.pt-4 { - padding-top: 1rem !important; -} - -.pr-4 { - padding-right: 1rem !important; -} - -.pb-4 { - padding-bottom: 1rem !important; -} - -.pl-4 { - padding-left: 1rem !important; -} - -.px-4 { - padding-left: 1rem !important; - padding-right: 1rem !important; -} - -.py-4 { - padding-top: 1rem !important; - padding-bottom: 1rem !important; -} - -.p-5 { - padding: 1.5rem !important; -} - -.pt-5 { - padding-top: 1.5rem !important; -} - -.pr-5 { - padding-right: 1.5rem !important; -} - -.pb-5 { - padding-bottom: 1.5rem !important; -} - -.pl-5 { - padding-left: 1.5rem !important; -} - -.px-5 { - padding-left: 1.5rem !important; - padding-right: 1.5rem !important; -} - -.py-5 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important; -} - -.p-6 { - padding: 3rem !important; -} - -.pt-6 { - padding-top: 3rem !important; -} - -.pr-6 { - padding-right: 3rem !important; -} - -.pb-6 { - padding-bottom: 3rem !important; -} - -.pl-6 { - padding-left: 3rem !important; -} - -.px-6 { - padding-left: 3rem !important; - padding-right: 3rem !important; -} - -.py-6 { - padding-top: 3rem !important; - padding-bottom: 3rem !important; -} - -.is-size-1 { - font-size: 3rem !important; -} - -.is-size-2 { - font-size: 2.5rem !important; -} - -.is-size-3 { - font-size: 2rem !important; -} - -.is-size-4 { - font-size: 1.5rem !important; -} - -.is-size-5 { - font-size: 1.25rem !important; -} - -.is-size-6 { - font-size: 1rem !important; -} - -.is-size-7 { - font-size: 0.75rem !important; -} - -@media screen and (max-width: 768px) { - .is-size-1-mobile { - font-size: 3rem !important; - } - .is-size-2-mobile { - font-size: 2.5rem !important; - } - .is-size-3-mobile { - font-size: 2rem !important; - } - .is-size-4-mobile { - font-size: 1.5rem !important; - } - .is-size-5-mobile { - font-size: 1.25rem !important; - } - .is-size-6-mobile { - font-size: 1rem !important; - } - .is-size-7-mobile { - font-size: 0.75rem !important; - } -} - -@media screen and (min-width: 769px), print { - .is-size-1-tablet { - font-size: 3rem !important; - } - .is-size-2-tablet { - font-size: 2.5rem !important; - } - .is-size-3-tablet { - font-size: 2rem !important; - } - .is-size-4-tablet { - font-size: 1.5rem !important; - } - .is-size-5-tablet { - font-size: 1.25rem !important; - } - .is-size-6-tablet { - font-size: 1rem !important; - } - .is-size-7-tablet { - font-size: 0.75rem !important; - } -} - -@media screen and (max-width: 1023px) { - .is-size-1-touch { - font-size: 3rem !important; - } - .is-size-2-touch { - font-size: 2.5rem !important; - } - .is-size-3-touch { - font-size: 2rem !important; - } - .is-size-4-touch { - font-size: 1.5rem !important; - } - .is-size-5-touch { - font-size: 1.25rem !important; - } - .is-size-6-touch { - font-size: 1rem !important; - } - .is-size-7-touch { - font-size: 0.75rem !important; - } -} - -@media screen and (min-width: 1024px) { - .is-size-1-desktop { - font-size: 3rem !important; - } - .is-size-2-desktop { - font-size: 2.5rem !important; - } - .is-size-3-desktop { - font-size: 2rem !important; - } - .is-size-4-desktop { - font-size: 1.5rem !important; - } - .is-size-5-desktop { - font-size: 1.25rem !important; - } - .is-size-6-desktop { - font-size: 1rem !important; - } - .is-size-7-desktop { - font-size: 0.75rem !important; - } -} - -@media screen and (min-width: 1216px) { - .is-size-1-widescreen { - font-size: 3rem !important; - } - .is-size-2-widescreen { - font-size: 2.5rem !important; - } - .is-size-3-widescreen { - font-size: 2rem !important; - } - .is-size-4-widescreen { - font-size: 1.5rem !important; - } - .is-size-5-widescreen { - font-size: 1.25rem !important; - } - .is-size-6-widescreen { - font-size: 1rem !important; - } - .is-size-7-widescreen { - font-size: 0.75rem !important; - } -} - -@media screen and (min-width: 1408px) { - .is-size-1-fullhd { - font-size: 3rem !important; - } - .is-size-2-fullhd { - font-size: 2.5rem !important; - } - .is-size-3-fullhd { - font-size: 2rem !important; - } - .is-size-4-fullhd { - font-size: 1.5rem !important; - } - .is-size-5-fullhd { - font-size: 1.25rem !important; - } - .is-size-6-fullhd { - font-size: 1rem !important; - } - .is-size-7-fullhd { - font-size: 0.75rem !important; - } -} - -.has-text-centered { - text-align: center !important; -} - -.has-text-justified { - text-align: justify !important; -} - -.has-text-left { - text-align: left !important; -} - -.has-text-right { - text-align: right !important; -} - -@media screen and (max-width: 768px) { - .has-text-centered-mobile { - text-align: center !important; - } -} - -@media screen and (min-width: 769px), print { - .has-text-centered-tablet { - text-align: center !important; - } -} - -@media screen and (min-width: 769px) and (max-width: 1023px) { - .has-text-centered-tablet-only { - text-align: center !important; - } -} - -@media screen and (max-width: 1023px) { - .has-text-centered-touch { - text-align: center !important; - } -} - -@media screen and (min-width: 1024px) { - .has-text-centered-desktop { - text-align: center !important; - } -} - -@media screen and (min-width: 1024px) and (max-width: 1215px) { - .has-text-centered-desktop-only { - text-align: center !important; - } -} - -@media screen and (min-width: 1216px) { - .has-text-centered-widescreen { - text-align: center !important; - } -} - -@media screen and (min-width: 1216px) and (max-width: 1407px) { - .has-text-centered-widescreen-only { - text-align: center !important; - } -} - -@media screen and (min-width: 1408px) { - .has-text-centered-fullhd { - text-align: center !important; - } -} - -@media screen and (max-width: 768px) { - .has-text-justified-mobile { - text-align: justify !important; - } -} - -@media screen and (min-width: 769px), print { - .has-text-justified-tablet { - text-align: justify !important; - } -} - -@media screen and (min-width: 769px) and (max-width: 1023px) { - .has-text-justified-tablet-only { - text-align: justify !important; - } -} - -@media screen and (max-width: 1023px) { - .has-text-justified-touch { - text-align: justify !important; - } -} - -@media screen and (min-width: 1024px) { - .has-text-justified-desktop { - text-align: justify !important; - } -} - -@media screen and (min-width: 1024px) and (max-width: 1215px) { - .has-text-justified-desktop-only { - text-align: justify !important; - } -} - -@media screen and (min-width: 1216px) { - .has-text-justified-widescreen { - text-align: justify !important; - } -} - -@media screen and (min-width: 1216px) and (max-width: 1407px) { - .has-text-justified-widescreen-only { - text-align: justify !important; - } -} - -@media screen and (min-width: 1408px) { - .has-text-justified-fullhd { - text-align: justify !important; - } -} - -@media screen and (max-width: 768px) { - .has-text-left-mobile { - text-align: left !important; - } -} - -@media screen and (min-width: 769px), print { - .has-text-left-tablet { - text-align: left !important; - } -} - -@media screen and (min-width: 769px) and (max-width: 1023px) { - .has-text-left-tablet-only { - text-align: left !important; - } -} - -@media screen and (max-width: 1023px) { - .has-text-left-touch { - text-align: left !important; - } -} - -@media screen and (min-width: 1024px) { - .has-text-left-desktop { - text-align: left !important; - } -} - -@media screen and (min-width: 1024px) and (max-width: 1215px) { - .has-text-left-desktop-only { - text-align: left !important; - } -} - -@media screen and (min-width: 1216px) { - .has-text-left-widescreen { - text-align: left !important; - } -} - -@media screen and (min-width: 1216px) and (max-width: 1407px) { - .has-text-left-widescreen-only { - text-align: left !important; - } -} - -@media screen and (min-width: 1408px) { - .has-text-left-fullhd { - text-align: left !important; - } -} - -@media screen and (max-width: 768px) { - .has-text-right-mobile { - text-align: right !important; - } -} - -@media screen and (min-width: 769px), print { - .has-text-right-tablet { - text-align: right !important; - } -} - -@media screen and (min-width: 769px) and (max-width: 1023px) { - .has-text-right-tablet-only { - text-align: right !important; - } -} - -@media screen and (max-width: 1023px) { - .has-text-right-touch { - text-align: right !important; - } -} - -@media screen and (min-width: 1024px) { - .has-text-right-desktop { - text-align: right !important; - } -} - -@media screen and (min-width: 1024px) and (max-width: 1215px) { - .has-text-right-desktop-only { - text-align: right !important; - } -} - -@media screen and (min-width: 1216px) { - .has-text-right-widescreen { - text-align: right !important; - } -} - -@media screen and (min-width: 1216px) and (max-width: 1407px) { - .has-text-right-widescreen-only { - text-align: right !important; - } -} - -@media screen and (min-width: 1408px) { - .has-text-right-fullhd { - text-align: right !important; - } -} - -.is-capitalized { - text-transform: capitalize !important; -} - -.is-lowercase { - text-transform: lowercase !important; -} - -.is-uppercase { - text-transform: uppercase !important; -} - -.is-italic { - font-style: italic !important; -} - -.has-text-weight-light { - font-weight: 300 !important; -} - -.has-text-weight-normal { - font-weight: 400 !important; -} - -.has-text-weight-medium { - font-weight: 500 !important; -} - -.has-text-weight-semibold { - font-weight: 600 !important; -} - -.has-text-weight-bold { - font-weight: 700 !important; -} - -.is-family-primary { - font-family: "PT Sans", Helvetica, Arial, "sans-serif" !important; -} - -.is-family-secondary { - font-family: "PT Sans", Helvetica, Arial, "sans-serif" !important; -} - -.is-family-sans-serif { - font-family: "PT Sans", Helvetica, Arial, "sans-serif" !important; -} - -.is-family-monospace { - font-family: Menlo, Monaco, "Courier New", monospace !important; -} - -.is-family-code { - font-family: Menlo, Monaco, "Courier New", monospace !important; -} - -.is-block { - display: block !important; -} - -@media screen and (max-width: 768px) { - .is-block-mobile { - display: block !important; - } -} - -@media screen and (min-width: 769px), print { - .is-block-tablet { - display: block !important; - } -} - -@media screen and (min-width: 769px) and (max-width: 1023px) { - .is-block-tablet-only { - display: block !important; - } -} - -@media screen and (max-width: 1023px) { - .is-block-touch { - display: block !important; - } -} - -@media screen and (min-width: 1024px) { - .is-block-desktop { - display: block !important; - } -} - -@media screen and (min-width: 1024px) and (max-width: 1215px) { - .is-block-desktop-only { - display: block !important; - } -} - -@media screen and (min-width: 1216px) { - .is-block-widescreen { - display: block !important; - } -} - -@media screen and (min-width: 1216px) and (max-width: 1407px) { - .is-block-widescreen-only { - display: block !important; - } -} - -@media screen and (min-width: 1408px) { - .is-block-fullhd { - display: block !important; - } -} - -.is-flex { - display: flex !important; -} - -@media screen and (max-width: 768px) { - .is-flex-mobile { - display: flex !important; - } -} - -@media screen and (min-width: 769px), print { - .is-flex-tablet { - display: flex !important; - } -} - -@media screen and (min-width: 769px) and (max-width: 1023px) { - .is-flex-tablet-only { - display: flex !important; - } -} - -@media screen and (max-width: 1023px) { - .is-flex-touch { - display: flex !important; - } -} - -@media screen and (min-width: 1024px) { - .is-flex-desktop { - display: flex !important; - } -} - -@media screen and (min-width: 1024px) and (max-width: 1215px) { - .is-flex-desktop-only { - display: flex !important; - } -} - -@media screen and (min-width: 1216px) { - .is-flex-widescreen { - display: flex !important; - } -} - -@media screen and (min-width: 1216px) and (max-width: 1407px) { - .is-flex-widescreen-only { - display: flex !important; - } -} - -@media screen and (min-width: 1408px) { - .is-flex-fullhd { - display: flex !important; - } -} - -.is-inline { - display: inline !important; -} - -@media screen and (max-width: 768px) { - .is-inline-mobile { - display: inline !important; - } -} - -@media screen and (min-width: 769px), print { - .is-inline-tablet { - display: inline !important; - } -} - -@media screen and (min-width: 769px) and (max-width: 1023px) { - .is-inline-tablet-only { - display: inline !important; - } -} - -@media screen and (max-width: 1023px) { - .is-inline-touch { - display: inline !important; - } -} - -@media screen and (min-width: 1024px) { - .is-inline-desktop { - display: inline !important; - } -} - -@media screen and (min-width: 1024px) and (max-width: 1215px) { - .is-inline-desktop-only { - display: inline !important; - } -} - -@media screen and (min-width: 1216px) { - .is-inline-widescreen { - display: inline !important; - } -} - -@media screen and (min-width: 1216px) and (max-width: 1407px) { - .is-inline-widescreen-only { - display: inline !important; - } -} - -@media screen and (min-width: 1408px) { - .is-inline-fullhd { - display: inline !important; - } -} - -.is-inline-block { - display: inline-block !important; -} - -@media screen and (max-width: 768px) { - .is-inline-block-mobile { - display: inline-block !important; - } -} - -@media screen and (min-width: 769px), print { - .is-inline-block-tablet { - display: inline-block !important; - } -} - -@media screen and (min-width: 769px) and (max-width: 1023px) { - .is-inline-block-tablet-only { - display: inline-block !important; - } -} - -@media screen and (max-width: 1023px) { - .is-inline-block-touch { - display: inline-block !important; - } -} - -@media screen and (min-width: 1024px) { - .is-inline-block-desktop { - display: inline-block !important; - } -} - -@media screen and (min-width: 1024px) and (max-width: 1215px) { - .is-inline-block-desktop-only { - display: inline-block !important; - } -} - -@media screen and (min-width: 1216px) { - .is-inline-block-widescreen { - display: inline-block !important; - } -} - -@media screen and (min-width: 1216px) and (max-width: 1407px) { - .is-inline-block-widescreen-only { - display: inline-block !important; - } -} - -@media screen and (min-width: 1408px) { - .is-inline-block-fullhd { - display: inline-block !important; - } -} - -.is-inline-flex { - display: inline-flex !important; -} - -@media screen and (max-width: 768px) { - .is-inline-flex-mobile { - display: inline-flex !important; - } -} - -@media screen and (min-width: 769px), print { - .is-inline-flex-tablet { - display: inline-flex !important; - } -} - -@media screen and (min-width: 769px) and (max-width: 1023px) { - .is-inline-flex-tablet-only { - display: inline-flex !important; - } -} - -@media screen and (max-width: 1023px) { - .is-inline-flex-touch { - display: inline-flex !important; - } -} - -@media screen and (min-width: 1024px) { - .is-inline-flex-desktop { - display: inline-flex !important; - } -} - -@media screen and (min-width: 1024px) and (max-width: 1215px) { - .is-inline-flex-desktop-only { - display: inline-flex !important; - } -} - -@media screen and (min-width: 1216px) { - .is-inline-flex-widescreen { - display: inline-flex !important; - } -} - -@media screen and (min-width: 1216px) and (max-width: 1407px) { - .is-inline-flex-widescreen-only { - display: inline-flex !important; - } -} - -@media screen and (min-width: 1408px) { - .is-inline-flex-fullhd { - display: inline-flex !important; - } -} - -.is-hidden { - display: none !important; -} - -.is-sr-only { - border: none !important; - clip: rect(0, 0, 0, 0) !important; - height: 0.01em !important; - overflow: hidden !important; - padding: 0 !important; - position: absolute !important; - white-space: nowrap !important; - width: 0.01em !important; -} - -@media screen and (max-width: 768px) { - .is-hidden-mobile { - display: none !important; - } -} - -@media screen and (min-width: 769px), print { - .is-hidden-tablet { - display: none !important; - } -} - -@media screen and (min-width: 769px) and (max-width: 1023px) { - .is-hidden-tablet-only { - display: none !important; - } -} - -@media screen and (max-width: 1023px) { - .is-hidden-touch { - display: none !important; - } -} - -@media screen and (min-width: 1024px) { - .is-hidden-desktop { - display: none !important; - } -} - -@media screen and (min-width: 1024px) and (max-width: 1215px) { - .is-hidden-desktop-only { - display: none !important; - } -} - -@media screen and (min-width: 1216px) { - .is-hidden-widescreen { - display: none !important; - } -} - -@media screen and (min-width: 1216px) and (max-width: 1407px) { - .is-hidden-widescreen-only { - display: none !important; - } -} - -@media screen and (min-width: 1408px) { - .is-hidden-fullhd { - display: none !important; - } -} - -.is-invisible { - visibility: hidden !important; -} - -@media screen and (max-width: 768px) { - .is-invisible-mobile { - visibility: hidden !important; - } -} - -@media screen and (min-width: 769px), print { - .is-invisible-tablet { - visibility: hidden !important; - } -} - -@media screen and (min-width: 769px) and (max-width: 1023px) { - .is-invisible-tablet-only { - visibility: hidden !important; - } -} - -@media screen and (max-width: 1023px) { - .is-invisible-touch { - visibility: hidden !important; - } -} - -@media screen and (min-width: 1024px) { - .is-invisible-desktop { - visibility: hidden !important; - } -} - -@media screen and (min-width: 1024px) and (max-width: 1215px) { - .is-invisible-desktop-only { - visibility: hidden !important; - } -} - -@media screen and (min-width: 1216px) { - .is-invisible-widescreen { - visibility: hidden !important; - } -} - -@media screen and (min-width: 1216px) and (max-width: 1407px) { - .is-invisible-widescreen-only { - visibility: hidden !important; - } -} - -@media screen and (min-width: 1408px) { - .is-invisible-fullhd { - visibility: hidden !important; - } -} - -.hero { - align-items: stretch; - display: flex; - flex-direction: column; - justify-content: space-between; -} - -.hero .navbar { - background: none; -} - -.hero .tabs ul { - border-bottom: none; -} - -.hero.is-white { - background-color: white; - color: #0a0a0a; -} - -.hero.is-white a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), -.hero.is-white strong { - color: inherit; -} - -.hero.is-white .title { - color: #0a0a0a; -} - -.hero.is-white .subtitle { - color: rgba(10, 10, 10, 0.9); -} - -.hero.is-white .subtitle a:not(.button), -.hero.is-white .subtitle strong { - color: #0a0a0a; -} - -@media screen and (max-width: 1023px) { - .hero.is-white .navbar-menu { - background-color: white; - } -} - -.hero.is-white .navbar-item, -.hero.is-white .navbar-link { - color: rgba(10, 10, 10, 0.7); -} - -.hero.is-white a.navbar-item:hover, .hero.is-white a.navbar-item.is-active, -.hero.is-white .navbar-link:hover, -.hero.is-white .navbar-link.is-active { - background-color: #f2f2f2; - color: #0a0a0a; -} - -.hero.is-white .tabs a { - color: #0a0a0a; - opacity: 0.9; -} - -.hero.is-white .tabs a:hover { - opacity: 1; -} - -.hero.is-white .tabs li.is-active a { - opacity: 1; -} - -.hero.is-white .tabs.is-boxed a, .hero.is-white .tabs.is-toggle a { - color: #0a0a0a; -} - -.hero.is-white .tabs.is-boxed a:hover, .hero.is-white .tabs.is-toggle a:hover { - background-color: rgba(10, 10, 10, 0.1); -} - -.hero.is-white .tabs.is-boxed li.is-active a, .hero.is-white .tabs.is-boxed li.is-active a:hover, .hero.is-white .tabs.is-toggle li.is-active a, .hero.is-white .tabs.is-toggle li.is-active a:hover { - background-color: #0a0a0a; - border-color: #0a0a0a; - color: white; -} - -.hero.is-white.is-bold { - background-image: linear-gradient(141deg, #e8e3e4 0%, white 71%, white 100%); -} - -@media screen and (max-width: 768px) { - .hero.is-white.is-bold .navbar-menu { - background-image: linear-gradient(141deg, #e8e3e4 0%, white 71%, white 100%); - } -} - -.hero.is-black { - background-color: #0a0a0a; - color: white; -} - -.hero.is-black a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), -.hero.is-black strong { - color: inherit; -} - -.hero.is-black .title { - color: white; -} - -.hero.is-black .subtitle { - color: rgba(255, 255, 255, 0.9); -} - -.hero.is-black .subtitle a:not(.button), -.hero.is-black .subtitle strong { - color: white; -} - -@media screen and (max-width: 1023px) { - .hero.is-black .navbar-menu { - background-color: #0a0a0a; - } -} - -.hero.is-black .navbar-item, -.hero.is-black .navbar-link { - color: rgba(255, 255, 255, 0.7); -} - -.hero.is-black a.navbar-item:hover, .hero.is-black a.navbar-item.is-active, -.hero.is-black .navbar-link:hover, -.hero.is-black .navbar-link.is-active { - background-color: black; - color: white; -} - -.hero.is-black .tabs a { - color: white; - opacity: 0.9; -} - -.hero.is-black .tabs a:hover { - opacity: 1; -} - -.hero.is-black .tabs li.is-active a { - opacity: 1; -} - -.hero.is-black .tabs.is-boxed a, .hero.is-black .tabs.is-toggle a { - color: white; -} - -.hero.is-black .tabs.is-boxed a:hover, .hero.is-black .tabs.is-toggle a:hover { - background-color: rgba(10, 10, 10, 0.1); -} - -.hero.is-black .tabs.is-boxed li.is-active a, .hero.is-black .tabs.is-boxed li.is-active a:hover, .hero.is-black .tabs.is-toggle li.is-active a, .hero.is-black .tabs.is-toggle li.is-active a:hover { - background-color: white; - border-color: white; - color: #0a0a0a; -} - -.hero.is-black.is-bold { - background-image: linear-gradient(141deg, black 0%, #0a0a0a 71%, #181616 100%); -} - -@media screen and (max-width: 768px) { - .hero.is-black.is-bold .navbar-menu { - background-image: linear-gradient(141deg, black 0%, #0a0a0a 71%, #181616 100%); - } -} - -.hero.is-light { - background-color: whitesmoke; - color: rgba(0, 0, 0, 0.7); -} - -.hero.is-light a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), -.hero.is-light strong { - color: inherit; -} - -.hero.is-light .title { - color: rgba(0, 0, 0, 0.7); -} - -.hero.is-light .subtitle { - color: rgba(0, 0, 0, 0.9); -} - -.hero.is-light .subtitle a:not(.button), -.hero.is-light .subtitle strong { - color: rgba(0, 0, 0, 0.7); -} - -@media screen and (max-width: 1023px) { - .hero.is-light .navbar-menu { - background-color: whitesmoke; - } -} - -.hero.is-light .navbar-item, -.hero.is-light .navbar-link { - color: rgba(0, 0, 0, 0.7); -} - -.hero.is-light a.navbar-item:hover, .hero.is-light a.navbar-item.is-active, -.hero.is-light .navbar-link:hover, -.hero.is-light .navbar-link.is-active { - background-color: #e8e8e8; - color: rgba(0, 0, 0, 0.7); -} - -.hero.is-light .tabs a { - color: rgba(0, 0, 0, 0.7); - opacity: 0.9; -} - -.hero.is-light .tabs a:hover { - opacity: 1; -} - -.hero.is-light .tabs li.is-active a { - opacity: 1; -} - -.hero.is-light .tabs.is-boxed a, .hero.is-light .tabs.is-toggle a { - color: rgba(0, 0, 0, 0.7); -} - -.hero.is-light .tabs.is-boxed a:hover, .hero.is-light .tabs.is-toggle a:hover { - background-color: rgba(10, 10, 10, 0.1); -} - -.hero.is-light .tabs.is-boxed li.is-active a, .hero.is-light .tabs.is-boxed li.is-active a:hover, .hero.is-light .tabs.is-toggle li.is-active a, .hero.is-light .tabs.is-toggle li.is-active a:hover { - background-color: rgba(0, 0, 0, 0.7); - border-color: rgba(0, 0, 0, 0.7); - color: whitesmoke; -} - -.hero.is-light.is-bold { - background-image: linear-gradient(141deg, #dfd8d9 0%, whitesmoke 71%, white 100%); -} - -@media screen and (max-width: 768px) { - .hero.is-light.is-bold .navbar-menu { - background-image: linear-gradient(141deg, #dfd8d9 0%, whitesmoke 71%, white 100%); - } -} - -.hero.is-dark { - background-color: #363636; - color: #fff; -} - -.hero.is-dark a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), -.hero.is-dark strong { - color: inherit; -} - -.hero.is-dark .title { - color: #fff; -} - -.hero.is-dark .subtitle { - color: rgba(255, 255, 255, 0.9); -} - -.hero.is-dark .subtitle a:not(.button), -.hero.is-dark .subtitle strong { - color: #fff; -} - -@media screen and (max-width: 1023px) { - .hero.is-dark .navbar-menu { - background-color: #363636; - } -} - -.hero.is-dark .navbar-item, -.hero.is-dark .navbar-link { - color: rgba(255, 255, 255, 0.7); -} - -.hero.is-dark a.navbar-item:hover, .hero.is-dark a.navbar-item.is-active, -.hero.is-dark .navbar-link:hover, -.hero.is-dark .navbar-link.is-active { - background-color: #292929; - color: #fff; -} - -.hero.is-dark .tabs a { - color: #fff; - opacity: 0.9; -} - -.hero.is-dark .tabs a:hover { - opacity: 1; -} - -.hero.is-dark .tabs li.is-active a { - opacity: 1; -} - -.hero.is-dark .tabs.is-boxed a, .hero.is-dark .tabs.is-toggle a { - color: #fff; -} - -.hero.is-dark .tabs.is-boxed a:hover, .hero.is-dark .tabs.is-toggle a:hover { - background-color: rgba(10, 10, 10, 0.1); -} - -.hero.is-dark .tabs.is-boxed li.is-active a, .hero.is-dark .tabs.is-boxed li.is-active a:hover, .hero.is-dark .tabs.is-toggle li.is-active a, .hero.is-dark .tabs.is-toggle li.is-active a:hover { - background-color: #fff; - border-color: #fff; - color: #363636; -} - -.hero.is-dark.is-bold { - background-image: linear-gradient(141deg, #1f191a 0%, #363636 71%, #46403f 100%); -} - -@media screen and (max-width: 768px) { - .hero.is-dark.is-bold .navbar-menu { - background-image: linear-gradient(141deg, #1f191a 0%, #363636 71%, #46403f 100%); - } -} - -.hero.is-primary { - background-color: #FF9200; - color: #fff; -} - -.hero.is-primary a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), -.hero.is-primary strong { - color: inherit; -} - -.hero.is-primary .title { - color: #fff; -} - -.hero.is-primary .subtitle { - color: rgba(255, 255, 255, 0.9); -} - -.hero.is-primary .subtitle a:not(.button), -.hero.is-primary .subtitle strong { - color: #fff; -} - -@media screen and (max-width: 1023px) { - .hero.is-primary .navbar-menu { - background-color: #FF9200; - } -} - -.hero.is-primary .navbar-item, -.hero.is-primary .navbar-link { - color: rgba(255, 255, 255, 0.7); -} - -.hero.is-primary a.navbar-item:hover, .hero.is-primary a.navbar-item.is-active, -.hero.is-primary .navbar-link:hover, -.hero.is-primary .navbar-link.is-active { - background-color: #e68300; - color: #fff; -} - -.hero.is-primary .tabs a { - color: #fff; - opacity: 0.9; -} - -.hero.is-primary .tabs a:hover { - opacity: 1; -} - -.hero.is-primary .tabs li.is-active a { - opacity: 1; -} - -.hero.is-primary .tabs.is-boxed a, .hero.is-primary .tabs.is-toggle a { - color: #fff; -} - -.hero.is-primary .tabs.is-boxed a:hover, .hero.is-primary .tabs.is-toggle a:hover { - background-color: rgba(10, 10, 10, 0.1); -} - -.hero.is-primary .tabs.is-boxed li.is-active a, .hero.is-primary .tabs.is-boxed li.is-active a:hover, .hero.is-primary .tabs.is-toggle li.is-active a, .hero.is-primary .tabs.is-toggle li.is-active a:hover { - background-color: #fff; - border-color: #fff; - color: #FF9200; -} - -.hero.is-primary.is-bold { - background-image: linear-gradient(141deg, #cc5300 0%, #FF9200 71%, #ffc31a 100%); -} - -@media screen and (max-width: 768px) { - .hero.is-primary.is-bold .navbar-menu { - background-image: linear-gradient(141deg, #cc5300 0%, #FF9200 71%, #ffc31a 100%); - } -} - -.hero.is-link { - background-color: #FF9200; - color: #fff; -} - -.hero.is-link a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), -.hero.is-link strong { - color: inherit; -} - -.hero.is-link .title { - color: #fff; -} - -.hero.is-link .subtitle { - color: rgba(255, 255, 255, 0.9); -} - -.hero.is-link .subtitle a:not(.button), -.hero.is-link .subtitle strong { - color: #fff; -} - -@media screen and (max-width: 1023px) { - .hero.is-link .navbar-menu { - background-color: #FF9200; - } -} - -.hero.is-link .navbar-item, -.hero.is-link .navbar-link { - color: rgba(255, 255, 255, 0.7); -} - -.hero.is-link a.navbar-item:hover, .hero.is-link a.navbar-item.is-active, -.hero.is-link .navbar-link:hover, -.hero.is-link .navbar-link.is-active { - background-color: #e68300; - color: #fff; -} - -.hero.is-link .tabs a { - color: #fff; - opacity: 0.9; -} - -.hero.is-link .tabs a:hover { - opacity: 1; -} - -.hero.is-link .tabs li.is-active a { - opacity: 1; -} - -.hero.is-link .tabs.is-boxed a, .hero.is-link .tabs.is-toggle a { - color: #fff; -} - -.hero.is-link .tabs.is-boxed a:hover, .hero.is-link .tabs.is-toggle a:hover { - background-color: rgba(10, 10, 10, 0.1); -} - -.hero.is-link .tabs.is-boxed li.is-active a, .hero.is-link .tabs.is-boxed li.is-active a:hover, .hero.is-link .tabs.is-toggle li.is-active a, .hero.is-link .tabs.is-toggle li.is-active a:hover { - background-color: #fff; - border-color: #fff; - color: #FF9200; -} - -.hero.is-link.is-bold { - background-image: linear-gradient(141deg, #cc5300 0%, #FF9200 71%, #ffc31a 100%); -} - -@media screen and (max-width: 768px) { - .hero.is-link.is-bold .navbar-menu { - background-image: linear-gradient(141deg, #cc5300 0%, #FF9200 71%, #ffc31a 100%); - } -} - -.hero.is-info { - background-color: #3298dc; - color: #fff; -} - -.hero.is-info a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), -.hero.is-info strong { - color: inherit; -} - -.hero.is-info .title { - color: #fff; -} - -.hero.is-info .subtitle { - color: rgba(255, 255, 255, 0.9); -} - -.hero.is-info .subtitle a:not(.button), -.hero.is-info .subtitle strong { - color: #fff; -} - -@media screen and (max-width: 1023px) { - .hero.is-info .navbar-menu { - background-color: #3298dc; - } -} - -.hero.is-info .navbar-item, -.hero.is-info .navbar-link { - color: rgba(255, 255, 255, 0.7); -} - -.hero.is-info a.navbar-item:hover, .hero.is-info a.navbar-item.is-active, -.hero.is-info .navbar-link:hover, -.hero.is-info .navbar-link.is-active { - background-color: #238cd1; - color: #fff; -} - -.hero.is-info .tabs a { - color: #fff; - opacity: 0.9; -} - -.hero.is-info .tabs a:hover { - opacity: 1; -} - -.hero.is-info .tabs li.is-active a { - opacity: 1; -} - -.hero.is-info .tabs.is-boxed a, .hero.is-info .tabs.is-toggle a { - color: #fff; -} - -.hero.is-info .tabs.is-boxed a:hover, .hero.is-info .tabs.is-toggle a:hover { - background-color: rgba(10, 10, 10, 0.1); -} - -.hero.is-info .tabs.is-boxed li.is-active a, .hero.is-info .tabs.is-boxed li.is-active a:hover, .hero.is-info .tabs.is-toggle li.is-active a, .hero.is-info .tabs.is-toggle li.is-active a:hover { - background-color: #fff; - border-color: #fff; - color: #3298dc; -} - -.hero.is-info.is-bold { - background-image: linear-gradient(141deg, #159dc6 0%, #3298dc 71%, #4389e5 100%); -} - -@media screen and (max-width: 768px) { - .hero.is-info.is-bold .navbar-menu { - background-image: linear-gradient(141deg, #159dc6 0%, #3298dc 71%, #4389e5 100%); - } -} - -.hero.is-success { - background-color: #01a901; - color: #fff; -} - -.hero.is-success a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), -.hero.is-success strong { - color: inherit; -} - -.hero.is-success .title { - color: #fff; -} - -.hero.is-success .subtitle { - color: rgba(255, 255, 255, 0.9); -} - -.hero.is-success .subtitle a:not(.button), -.hero.is-success .subtitle strong { - color: #fff; -} - -@media screen and (max-width: 1023px) { - .hero.is-success .navbar-menu { - background-color: #01a901; - } -} - -.hero.is-success .navbar-item, -.hero.is-success .navbar-link { - color: rgba(255, 255, 255, 0.7); -} - -.hero.is-success a.navbar-item:hover, .hero.is-success a.navbar-item.is-active, -.hero.is-success .navbar-link:hover, -.hero.is-success .navbar-link.is-active { - background-color: #019001; - color: #fff; -} - -.hero.is-success .tabs a { - color: #fff; - opacity: 0.9; -} - -.hero.is-success .tabs a:hover { - opacity: 1; -} - -.hero.is-success .tabs li.is-active a { - opacity: 1; -} - -.hero.is-success .tabs.is-boxed a, .hero.is-success .tabs.is-toggle a { - color: #fff; -} - -.hero.is-success .tabs.is-boxed a:hover, .hero.is-success .tabs.is-toggle a:hover { - background-color: rgba(10, 10, 10, 0.1); -} - -.hero.is-success .tabs.is-boxed li.is-active a, .hero.is-success .tabs.is-boxed li.is-active a:hover, .hero.is-success .tabs.is-toggle li.is-active a, .hero.is-success .tabs.is-toggle li.is-active a:hover { - background-color: #fff; - border-color: #fff; - color: #01a901; -} - -.hero.is-success.is-bold { - background-image: linear-gradient(141deg, #147700 0%, #01a901 71%, #00c421 100%); -} - -@media screen and (max-width: 768px) { - .hero.is-success.is-bold .navbar-menu { - background-image: linear-gradient(141deg, #147700 0%, #01a901 71%, #00c421 100%); - } -} - -.hero.is-warning { - background-color: #e7cb00; - color: rgba(0, 0, 0, 0.7); -} - -.hero.is-warning a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), -.hero.is-warning strong { - color: inherit; -} - -.hero.is-warning .title { - color: rgba(0, 0, 0, 0.7); -} - -.hero.is-warning .subtitle { - color: rgba(0, 0, 0, 0.9); -} - -.hero.is-warning .subtitle a:not(.button), -.hero.is-warning .subtitle strong { - color: rgba(0, 0, 0, 0.7); -} - -@media screen and (max-width: 1023px) { - .hero.is-warning .navbar-menu { - background-color: #e7cb00; - } -} - -.hero.is-warning .navbar-item, -.hero.is-warning .navbar-link { - color: rgba(0, 0, 0, 0.7); -} - -.hero.is-warning a.navbar-item:hover, .hero.is-warning a.navbar-item.is-active, -.hero.is-warning .navbar-link:hover, -.hero.is-warning .navbar-link.is-active { - background-color: #ceb500; - color: rgba(0, 0, 0, 0.7); -} - -.hero.is-warning .tabs a { - color: rgba(0, 0, 0, 0.7); - opacity: 0.9; -} - -.hero.is-warning .tabs a:hover { - opacity: 1; -} - -.hero.is-warning .tabs li.is-active a { - opacity: 1; -} - -.hero.is-warning .tabs.is-boxed a, .hero.is-warning .tabs.is-toggle a { - color: rgba(0, 0, 0, 0.7); -} - -.hero.is-warning .tabs.is-boxed a:hover, .hero.is-warning .tabs.is-toggle a:hover { - background-color: rgba(10, 10, 10, 0.1); -} - -.hero.is-warning .tabs.is-boxed li.is-active a, .hero.is-warning .tabs.is-boxed li.is-active a:hover, .hero.is-warning .tabs.is-toggle li.is-active a, .hero.is-warning .tabs.is-toggle li.is-active a:hover { - background-color: rgba(0, 0, 0, 0.7); - border-color: rgba(0, 0, 0, 0.7); - color: #e7cb00; -} - -.hero.is-warning.is-bold { - background-image: linear-gradient(141deg, #b48000 0%, #e7cb00 71%, #f3ff02 100%); -} - -@media screen and (max-width: 768px) { - .hero.is-warning.is-bold .navbar-menu { - background-image: linear-gradient(141deg, #b48000 0%, #e7cb00 71%, #f3ff02 100%); - } -} - -.hero.is-danger { - background-color: #F45F4B; - color: #fff; -} - -.hero.is-danger a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), -.hero.is-danger strong { - color: inherit; -} - -.hero.is-danger .title { - color: #fff; -} - -.hero.is-danger .subtitle { - color: rgba(255, 255, 255, 0.9); -} - -.hero.is-danger .subtitle a:not(.button), -.hero.is-danger .subtitle strong { - color: #fff; -} - -@media screen and (max-width: 1023px) { - .hero.is-danger .navbar-menu { - background-color: #F45F4B; - } -} - -.hero.is-danger .navbar-item, -.hero.is-danger .navbar-link { - color: rgba(255, 255, 255, 0.7); -} - -.hero.is-danger a.navbar-item:hover, .hero.is-danger a.navbar-item.is-active, -.hero.is-danger .navbar-link:hover, -.hero.is-danger .navbar-link.is-active { - background-color: #f34a33; - color: #fff; -} - -.hero.is-danger .tabs a { - color: #fff; - opacity: 0.9; -} - -.hero.is-danger .tabs a:hover { - opacity: 1; -} - -.hero.is-danger .tabs li.is-active a { - opacity: 1; -} - -.hero.is-danger .tabs.is-boxed a, .hero.is-danger .tabs.is-toggle a { - color: #fff; -} - -.hero.is-danger .tabs.is-boxed a:hover, .hero.is-danger .tabs.is-toggle a:hover { - background-color: rgba(10, 10, 10, 0.1); -} - -.hero.is-danger .tabs.is-boxed li.is-active a, .hero.is-danger .tabs.is-boxed li.is-active a:hover, .hero.is-danger .tabs.is-toggle li.is-active a, .hero.is-danger .tabs.is-toggle li.is-active a:hover { - background-color: #fff; - border-color: #fff; - color: #F45F4B; -} - -.hero.is-danger.is-bold { - background-image: linear-gradient(141deg, #fd0f1a 0%, #F45F4B 71%, #fa8b5f 100%); -} - -@media screen and (max-width: 768px) { - .hero.is-danger.is-bold .navbar-menu { - background-image: linear-gradient(141deg, #fd0f1a 0%, #F45F4B 71%, #fa8b5f 100%); - } -} - -.hero.is-small .hero-body { - padding: 1.5rem; -} - -@media screen and (min-width: 769px), print { - .hero.is-medium .hero-body { - padding: 9rem 1.5rem; - } -} - -@media screen and (min-width: 769px), print { - .hero.is-large .hero-body { - padding: 18rem 1.5rem; - } -} - -.hero.is-halfheight .hero-body, .hero.is-fullheight .hero-body, .hero.is-fullheight-with-navbar .hero-body { - align-items: center; - display: flex; -} - -.hero.is-halfheight .hero-body > .container, .hero.is-fullheight .hero-body > .container, .hero.is-fullheight-with-navbar .hero-body > .container { - flex-grow: 1; - flex-shrink: 1; -} - -.hero.is-halfheight { - min-height: 50vh; -} - -.hero.is-fullheight { - min-height: 100vh; -} - -.hero-video { - overflow: hidden; -} - -.hero-video video { - left: 50%; - min-height: 100%; - min-width: 100%; - position: absolute; - top: 50%; - transform: translate3d(-50%, -50%, 0); -} - -.hero-video.is-transparent { - opacity: 0.3; -} - -@media screen and (max-width: 768px) { - .hero-video { - display: none; - } -} - -.hero-buttons { - margin-top: 1.5rem; -} - -@media screen and (max-width: 768px) { - .hero-buttons .button { - display: flex; - } - .hero-buttons .button:not(:last-child) { - margin-bottom: 0.75rem; - } -} - -@media screen and (min-width: 769px), print { - .hero-buttons { - display: flex; - justify-content: center; - } - .hero-buttons .button:not(:last-child) { - margin-right: 1.5rem; - } -} - -.hero-head, -.hero-foot { - flex-grow: 0; - flex-shrink: 0; -} - -.hero-body { - flex-grow: 1; - flex-shrink: 0; - padding: 3rem 1.5rem; -} - -html { - scroll-padding-top: 4.5rem; -} - -h1, h2, .rst-content #index h3, .rst-content .toctree-wrapper .caption, h3, h4, h5, h6 { - overflow-wrap: break-word; -} - -.viewcode-back { - float: right; - color: #FF9200; -} - -html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple), html.writer-html4 .rst-content dl:not(.docutils) { - padding-bottom: 0.5em; - box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12), 0 3px 1px -2px rgba(0, 0, 0, 0.2); -} - -html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .property, html.writer-html4 .rst-content dl:not(.docutils) .property { - display: inherit; - padding-right: 0px; - max-width: 100%; -} - -html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) > dt, html.writer-html4 .rst-content dl:not(.docutils) > dt { - border-top: 3px solid #ca6500; - color: #343131; - display: inherit; - line-height: 1.4; - font-family: Menlo, Monaco, "Courier New", monospace; - font-size: 0.9rem; - background-color: #FFEBD0; - border-radius: 4px; - overflow-wrap: break-word; - position: relative; - padding-left: 0.45rem; - padding-right: 5.625rem; -} - -html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) > dt:target::before, html.writer-html4 .rst-content dl:not(.docutils) > dt:target::before { - background-color: #FFFFFF; -} - -html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) > dt > .property, html.writer-html4 .rst-content dl:not(.docutils) > dt > .property { - display: unset; - padding-right: 0px; - max-width: 100%; -} - -html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) > dt .viewcode-link, html.writer-html4 .rst-content dl:not(.docutils) > dt .viewcode-link { - position: absolute; - top: 0.45rem; - right: 1.8rem; - color: #808080; -} - -html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) > dt .viewcode-link .pre:hover, html.writer-html4 .rst-content dl:not(.docutils) > dt .viewcode-link .pre:hover { - color: #FF9200; -} - -html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) > dt .headerlink, html.writer-html4 .rst-content dl:not(.docutils) > dt .headerlink { - position: absolute; - top: 0.45rem; - right: 0.45rem; - color: #FF9200; - opacity: 1; - margin-top: -0.1rem; -} - -html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) > dd, html.writer-html4 .rst-content dl:not(.docutils) > dd { - margin: 1em; -} - -html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) > dd:empty, html.writer-html4 .rst-content dl:not(.docutils) > dd:empty { - padding-bottom: 0 !important; -} - -html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) > dd > .field-list > dt, html.writer-html4 .rst-content dl:not(.docutils) > dd > .field-list > dt { - font-weight: bold; -} - -html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) > dd > .field-list > dd > ul.simple, html.writer-html4 .rst-content dl:not(.docutils) > dd > .field-list > dd > ul.simple { - margin-left: 0; -} - -html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) > dd > .field-list > dd > dl > dt > strong, html.writer-html4 .rst-content dl:not(.docutils) > dd > .field-list > dd > dl > dt > strong, html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) > dd > .field-list > dd > ul.simple:first-child > li > p:first-child > strong, html.writer-html4 .rst-content dl:not(.docutils) > dd > .field-list > dd > ul.simple:first-child > li > p:first-child > strong, html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) > dd > .field-list > dd > p:first-child > strong, html.writer-html4 .rst-content dl:not(.docutils) > dd > .field-list > dd > p:first-child > strong { - font-family: Menlo, Monaco, "Courier New", monospace; - color: #343131; - font-weight: normal; -} - -html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) > dd > .field-list > dd > dl > dt > .classifier, html.writer-html4 .rst-content dl:not(.docutils) > dd > .field-list > dd > dl > dt > .classifier, html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) > dd > .field-list > dd > ul.simple:first-child > li > p:first-child > .classifier, html.writer-html4 .rst-content dl:not(.docutils) > dd > .field-list > dd > ul.simple:first-child > li > p:first-child > .classifier, html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) > dd > .field-list > dd > p:first-child > .classifier, html.writer-html4 .rst-content dl:not(.docutils) > dd > .field-list > dd > p:first-child > .classifier { - font-family: Menlo, Monaco, "Courier New", monospace; - color: #4a4a4a; - overflow-wrap: break-word; -} - -html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) > dd > .field-list > dd > dl > dt > a.reference > em, html.writer-html4 .rst-content dl:not(.docutils) > dd > .field-list > dd > dl > dt > a.reference > em, html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) > dd > .field-list > dd > p:first-child > a.reference > em, html.writer-html4 .rst-content dl:not(.docutils) > dd > .field-list > dd > p:first-child > a.reference > em { - font-family: Menlo, Monaco, "Courier New", monospace; - font-style: normal; -} - -html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) > dd > .field-list > dd > dl > dt > strong::after, html.writer-html4 .rst-content dl:not(.docutils) > dd > .field-list > dd > dl > dt > strong::after { - content: ": "; -} - -.rst-content { - font-size: 1rem; - line-height: 1.6; - color-adjust: exact; -} - -@media print { - .rst-content { - font-size: 0.85rem; - } -} - -.rst-content ul, -.rst-content ol, -.rst-content dl, -.rst-content figure, -.rst-content p, -.rst-content pre { - margin: 1em 0; -} - -.rst-content h1 { - margin: 0 0 1.25em; - color: #121212; - font-weight: 700; - line-height: 1.3; - letter-spacing: -0.01em; - font-size: 175%; -} - -.rst-content h2, .rst-content #index h3, .rst-content .toctree-wrapper .caption { - margin: 1.6em 0 0.64em; - font-weight: 600; - font-size: 1.5625em; - line-height: 1.4; - letter-spacing: -0.01em; -} - -.rst-content h3 { - margin: 1.6em 0 0.8em; - font-weight: 500; - font-size: 1.25em; - line-height: 1.5; - letter-spacing: -0.01em; -} - -.rst-content h2 + h3, .rst-content #index h3 + h3, .rst-content .toctree-wrapper .caption + h3 { - margin-top: 0.8em; -} - -.rst-content h4 { - margin: 1em 0; - font-weight: 700; - letter-spacing: -0.01em; -} - -.rst-content h5, -.rst-content h6 { - margin: 1.25em 0; - color: #121212; - font-weight: 700; - font-size: 0.8em; - letter-spacing: -0.01em; -} - -.rst-content h5 { - text-transform: uppercase; -} - -.rst-content hr { - display: flow-root; - margin: 1.5em 0; - border-bottom: 0.0625rem solid #0a0a0a; -} - -.rst-content a { - color: #FF9200; - overflow-wrap: break-word; -} - -.rst-content a, .rst-content a::before { - transition: color 125ms; -} - -.rst-content a:focus { - color: #ca6500; -} - -.rst-content a:hover { - color: #ca6500; -} - -.rst-content a.focus-visible { - outline-color: #ca6500; - outline-offset: 0.25rem; -} - -.rst-content code, -.rst-content pre, -.rst-content kbd { - color: #0a0a0a; - direction: ltr; -} - -@media print { - .rst-content code, -.rst-content pre, -.rst-content kbd { - white-space: pre-wrap; - } -} - -.rst-content code { - padding: 0 0.29412em; - font-size: 0.85em; - overflow-wrap: break-word; - background-color: #f8f8f8; - border-radius: 0.125rem; - box-decoration-break: clone; -} - -.rst-content code:not(.focus-visible) { - outline: none; - -webkit-tap-highlight-color: transparent; -} - -.rst-content h1 code, -.rst-content h2 code, -.rst-content #index h3 code, -.rst-content .toctree-wrapper .caption code, -.rst-content h3 code, -.rst-content h4 code, -.rst-content h5 code, -.rst-content h6 code { - background-color: transparent; - box-shadow: none; -} - -.rst-content a code { - color: currentColor; -} - -.rst-content pre { - position: relative; - display: flow-root; - line-height: 1.4; -} - -.rst-content pre > code { - display: block; - margin: 0; - padding: 0.77206em 1.17647em; - overflow: auto; - word-break: normal; - box-shadow: none; - box-decoration-break: slice; - touch-action: auto; - scrollbar-width: thin; - scrollbar-color: #242424 transparent; -} - -.rst-content pre > code:hover { - scrollbar-color: #ca6500 transparent; -} - -.rst-content pre > code::-webkit-scrollbar { - width: 0.25rem; - height: 0.25rem; -} - -.rst-content pre > code::-webkit-scrollbar-thumb { - background-color: #242424; -} - -.rst-content pre > code::-webkit-scrollbar-thumb:hover { - background-color: #ca6500; -} - -@media screen and (max-width: 768px) { - .rst-content > pre code { - border-radius: 0; - } -} - -.rst-content kbd { - display: inline-block; - padding: 0 0.66667em; - color: #0a0a0a; - font-size: 0.75em; - vertical-align: text-top; - overflow-wrap: break-word; - background-color: whitesmoke; - border-radius: 0.125rem; - box-shadow: 0 0.125rem 0 0.0625rem #dbdbdb, 0 0.125rem 0 #dbdbdb, 0 -0.125rem 0.25rem #ededed inset; -} - -.rst-content mark { - color: inherit; - overflow-wrap: break-word; - background-color: #e7cb00; - box-decoration-break: clone; -} - -.rst-content abbr { - text-decoration: none; - border-bottom: 0.0625rem dotted #121212; - cursor: help; -} - -@media (hover: none) { - .rst-content abbr { - position: relative; - } - .rst-content abbr[title]:focus::after, .rst-content abbr[title]:hover::after { - box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12), 0 3px 1px -2px rgba(0, 0, 0, 0.2); - position: absolute; - left: 0; - display: inline-block; - width: auto; - min-width: max-content; - max-width: 80%; - margin-top: 2em; - padding: 0.25rem 0.375rem; - color: #FFFFFF; - font-size: 0.875rem; - background-color: #0a0a0a; - border-radius: 0.125rem; - content: attr(title); - } -} - -.rst-content small { - opacity: 0.75; -} - -.rst-content sup, -.rst-content sub { - margin-left: 0.07812em; -} - -[dir="rtl"] .rst-content sup, [dir="rtl"] .rst-content sub { - margin-right: 0.07812em; - margin-left: initial; -} - -.rst-content blockquote { - display: flow-root; - padding-left: 0.75rem; - color: #4a4a4a; -} - -[dir="rtl"] .rst-content blockquote { - padding-right: 0.75rem; - padding-left: initial; - border-right: 0.25rem solid #7a7a7a; - border-left: initial; -} - -.rst-content li > blockquote { - border-left: none; -} - -[dir="rtl"] .rst-content li > blockquote { - border-right: none; -} - -.rst-content blockquote -ul { - list-style-type: disc; -} - -.rst-content ul, -.rst-content ol { - display: flow-root; - margin-left: 0.625em; - padding: 0; -} - -[dir="rtl"] .rst-content ul, [dir="rtl"] .rst-content ol { - margin-right: 0.625em; - margin-left: initial; -} - -.rst-content ul ol, -.rst-content ol ol { - list-style-type: lower-alpha; -} - -.rst-content ul ol ol, -.rst-content ol ol ol { - list-style-type: lower-roman; -} - -.rst-content ul li, -.rst-content ol li { - margin-bottom: 0.5em; - margin-left: 1.25em; -} - -[dir="rtl"] .rst-content ul li, [dir="rtl"] .rst-content ol li { - margin-right: 1.25em; - margin-left: initial; -} - -.rst-content ul li p, -.rst-content ul li blockquote, -.rst-content ol li p, -.rst-content ol li blockquote { - margin: 0.5em 0; -} - -.rst-content ul li:last-child, -.rst-content ol li:last-child { - margin-bottom: 0; -} - -.rst-content ul li ul, -.rst-content ul li ol, -.rst-content ol li ul, -.rst-content ol li ol { - margin: 0.5em 0 0.5em 0.625em; -} - -[dir="rtl"] .rst-content ul li ul, [dir="rtl"] .rst-content ul li ol, [dir="rtl"] .rst-content ol li ul, [dir="rtl"] .rst-content ol li ol { - margin-right: 0.625em; - margin-left: initial; -} - -.rst-content dd { - margin: 1em 0 1.5em 1.875em; -} - -@media screen and (max-width: 769px) { - .rst-content dd { - margin-left: 0.625em; - } -} - -[dir="rtl"] .rst-content dd { - margin-right: 1.875em; - margin-left: initial; -} - -@media screen and (max-width: 769px) { - [dir="rtl"] .rst-content dd { - margin-right: 0.625em; - } -} - -.rst-content dl:not([class]) dt, .rst-content dl.simple dt { - font-weight: 200; -} - -.rst-content img, -.rst-content svg { - max-width: 100%; - height: auto; -} - -.rst-content img[align="left"], -.rst-content svg[align="left"] { - margin: 1em; - margin-left: 0; -} - -.rst-content img[align="right"], -.rst-content svg[align="right"] { - margin: 1em; - margin-right: 0; -} - -.rst-content img[align]:only-child, -.rst-content svg[align]:only-child { - margin-top: 0; -} - -.rst-content figure { - display: flow-root; - width: fit-content; - max-width: 100%; - margin: 0 auto; - text-align: center; -} - -.rst-content figure img { - display: block; - margin: 0 auto; -} - -.rst-content figcaption { - margin: 1em auto 2em; - text-align: justify; - font-size: 90%; - hyphens: auto; - width: 80%; -} - -.rst-content iframe { - max-width: 100%; -} - -.rst-content .align-left { - text-align: left; -} - -.rst-content .align-right { - text-align: right; -} - -.rst-content .align-center { - clear: both; - text-align: center; -} - -.rst-content .align-top { - vertical-align: top; -} - -.rst-content .align-middle { - vertical-align: middle; -} - -.rst-content .align-bottom { - vertical-align: bottom; -} - -.rst-content .figure.align-left, -.rst-content figure.align-left, -.rst-content img.align-left, -.rst-content object.align-left, -.rst-content table.align-left { - margin-right: auto; -} - -.rst-content .figure.align-center, -.rst-content figure.align-center, -.rst-content img.align-center, -.rst-content object.align-center, -.rst-content table.align-center, -.rst-content table.align-default { - margin-right: auto; - margin-left: auto; -} - -.rst-content .figure.align-right, -.rst-content figure.align-right, -.rst-content img.align-right, -.rst-content object.align-right, -.rst-content table.align-right { - margin-left: auto; -} - -.rst-content .figure.align-center, -.rst-content .figure.align-right, -.rst-content figure.align-center, -.rst-content figure.align-right, -.rst-content img.align-center, -.rst-content img.align-right, -.rst-content object.align-center, -.rst-content object.align-right { - display: block; -} - -.rst-content .figure.align-left, -.rst-content .figure.align-right, -.rst-content figure.align-left, -.rst-content figure.align-right, -.rst-content table.align-left, -.rst-content table.align-center, -.rst-content table.align-right { - text-align: inherit; -} - -.rst-content .rubric { - font-weight: bold; -} - -.rst-content table.highlighttable td.linenos { - -webkit-touch-callout: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - padding-left: 0; - padding-right: 0; -} - -.rst-content table.highlighttable td.linenos .linenodiv pre { - padding-right: 0; -} - -@media screen and (max-width: 768px) { - .rst-content table.highlighttable td.linenos .linenodiv pre { - display: none; - } -} - -.rst-content table.highlighttable td.linenos + td.code { - margin-left: 0; - padding-left: 0; - padding-right: 0; -} - -.rst-content table.highlighttable td.linenos + td.code .highlight pre { - overflow-x: auto; -} - -@media screen and (max-width: 768px) { - .rst-content table.highlighttable td.linenos + td.code .highlight pre { - width: 96vw; - } -} - -.rst-content .highlight { - background-color: #f8f8f8; - border-radius: 4px; - box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12), 0 3px 1px -2px rgba(0, 0, 0, 0.2); - overflow-x: auto; - margin: 1em 0; -} - -.rst-content .highlight .gp, .rst-content .highlight .linenos { - -webkit-touch-callout: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -.rst-content .highlight pre { - overflow-x: unset; - margin: unset; -} - -.rst-content .highlight span.linenos { - margin-right: 0.5rem; - margin-left: -0.5rem; - color: #666666; -} - -@media screen and (max-width: 768px) { - .rst-content .highlight span.linenos { - display: none; - } -} - -@media screen and (min-width: 1216px) and (max-width: 1407px) { - .rst-content section > .notranslate > .highlight, .rst-content .section > .notranslate > .highlight { - margin-left: calc(-0.5 * (42.5rem - 42.5rem)); - width: 42.5rem; - } -} - -@media screen and (min-width: 1408px) { - .rst-content section > .notranslate > .highlight, .rst-content .section > .notranslate > .highlight { - margin-left: 0rem; - width: 42.5rem; - } -} - -@media screen and (min-width: 1216px) and (max-width: 1407px) { - .rst-content section > .notranslate > .highlight::before, .rst-content .section > .notranslate > .highlight::before { - right: calc($code-lang-ident-padding - 0.5 * (42.5rem - 42.5rem)); - } -} - -@media screen and (min-width: 1408px) { - .rst-content section > .notranslate > .highlight::before, .rst-content .section > .notranslate > .highlight::before { - right: calc($code-lang-ident-padding - 0.5 * (42.5rem - 42.5rem)); - } -} - -.rst-content .wy-table-responsive.autosummary { - overflow-x: hidden; -} - -.rst-content .wy-table-responsive.autosummary table { - table-layout: fixed; - width: 100%; -} - -.rst-content .wy-table-responsive.autosummary table colgroup col:first-child { - width: 30% !important; -} - -.rst-content .wy-table-responsive.autosummary table colgroup col:last-child { - width: 70% !important; -} - -.rst-content .wy-table-responsive.autosummary table td:first-child { - overflow-wrap: break-word; -} - -.rst-content .wy-table-responsive.autosummary table td:first-child a, .rst-content .wy-table-responsive.autosummary table td:first-child code { - overflow-wrap: break-word; -} - -.rst-content .wy-table-responsive.autosummary table td:first-child a::after, .rst-content .wy-table-responsive.autosummary table td:first-child code::after { - content: "​"; -} - -.rst-content .wy-table-responsive:not(.autosummary).expanded { - box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12), 0 3px 1px -2px rgba(0, 0, 0, 0.2); -} - -@media screen and (min-width: 1216px) and (max-width: 1407px) { - .rst-content .wy-table-responsive:not(.autosummary).expanded { - margin-left: calc(-0.5 * (66vw - 42.5rem)); - width: 66vw; - max-width: 66vw; - } - .rst-content .wy-table-responsive:not(.autosummary).expanded table { - min-width: 66vw; - } -} - -@media screen and (min-width: 1408px) { - .rst-content .wy-table-responsive:not(.autosummary).expanded { - margin-left: -7.75rem; - width: 58rem; - max-width: 58rem; - } - .rst-content .wy-table-responsive:not(.autosummary).expanded table { - min-width: 58rem; - } -} - -.rst-content .wy-table-responsive:not(.autosummary) table { - font-size: 85%; -} - -.rst-content .wy-table-responsive:not(.autosummary) table tbody tr { - transition: background-color 125ms; -} - -.rst-content .wy-table-responsive:not(.autosummary) table tbody tr:hover { - background-color: rgba(0, 0, 0, 0.035); -} - -.rst-content .headerlink { - font-size: 1em; - margin-left: 0.5em; - color: #b5b5b5; -} - -@media screen and (min-width: 769px) { - .rst-content .headerlink { - display: inline-block; - transform: translateY(0.25rem); - transition: transform .25s 0.2s,color .25s,opacity .125s 0.2s; - opacity: 0; - } -} - -.rst-content *:hover > .headerlink { - transition: transform .25s,color .25s,opacity .125s; - -webkit-transform: translate(0); - transform: translate(0); - opacity: 1; -} - -.rst-content dl.citation > dd { - margin-top: 0; -} - -.rst-content dl.citation > dd :first-child { - margin-top: 0; -} - -.rst-content .file { - align-items: unset; - display: unset; - justify-content: unset; - position: unset; -} - -.rst-content a.brackets::before { - content: "["; -} - -.rst-content a.brackets::after { - content: "]"; -} - -.rst-content .highlight-pycon span.go { - -webkit-touch-callout: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -.rst-content .highlight-python, .rst-content .highlight-py, .rst-content .highlight-python3, .rst-content .highlight-py3, .rst-content .highlight-pycon { - position: relative; -} - -.rst-content .highlight-python .highlight::before, .rst-content .highlight-py .highlight::before, .rst-content .highlight-python3 .highlight::before, .rst-content .highlight-py3 .highlight::before, .rst-content .highlight-pycon .highlight::before { - -webkit-touch-callout: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - content: "Python"; - color: #696969; - font-size: 80%; - font-family: Menlo, Monaco, "Courier New", monospace; - font-variant: small-caps; - position: absolute; - z-index: 10; - right: 0.18rem; - top: 0.18rem; - line-height: 0.8; -} - -.rst-content .highlight-sh, .rst-content .highlight-shell-session, .rst-content .highlight-shell { - position: relative; -} - -.rst-content .highlight-sh .highlight::before, .rst-content .highlight-shell-session .highlight::before, .rst-content .highlight-shell .highlight::before { - -webkit-touch-callout: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - content: "Shell"; - color: #696969; - font-size: 80%; - font-family: Menlo, Monaco, "Courier New", monospace; - font-variant: small-caps; - position: absolute; - z-index: 10; - right: 0.18rem; - top: 0.18rem; - line-height: 0.8; -} - -.rst-content .highlight-bash { - position: relative; -} - -.rst-content .highlight-bash .highlight::before { - -webkit-touch-callout: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - content: "BASH"; - color: #696969; - font-size: 80%; - font-family: Menlo, Monaco, "Courier New", monospace; - font-variant: small-caps; - position: absolute; - z-index: 10; - right: 0.18rem; - top: 0.18rem; - line-height: 0.8; -} - -.rst-content .highlight-yaml, .rst-content .highlight-yml { - position: relative; -} - -.rst-content .highlight-yaml .highlight::before, .rst-content .highlight-yml .highlight::before { - -webkit-touch-callout: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - content: "YAML"; - color: #696969; - font-size: 80%; - font-family: Menlo, Monaco, "Courier New", monospace; - font-variant: small-caps; - position: absolute; - z-index: 10; - right: 0.18rem; - top: 0.18rem; - line-height: 0.8; -} - -.rst-content .highlight-toml { - position: relative; -} - -.rst-content .highlight-toml .highlight::before { - -webkit-touch-callout: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - content: "TOML"; - color: #696969; - font-size: 80%; - font-family: Menlo, Monaco, "Courier New", monospace; - font-variant: small-caps; - position: absolute; - z-index: 10; - right: 0.18rem; - top: 0.18rem; - line-height: 0.8; -} - -.rst-content .highlight-json { - position: relative; -} - -.rst-content .highlight-json .highlight::before { - -webkit-touch-callout: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - content: "JSON"; - color: #696969; - font-size: 80%; - font-family: Menlo, Monaco, "Courier New", monospace; - font-variant: small-caps; - position: absolute; - z-index: 10; - right: 0.18rem; - top: 0.18rem; - line-height: 0.8; -} - -.rst-content .highlight-html { - position: relative; -} - -.rst-content .highlight-html .highlight::before { - -webkit-touch-callout: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - content: "HTML"; - color: #696969; - font-size: 80%; - font-family: Menlo, Monaco, "Courier New", monospace; - font-variant: small-caps; - position: absolute; - z-index: 10; - right: 0.18rem; - top: 0.18rem; - line-height: 0.8; -} - -.rst-content .highlight-xml { - position: relative; -} - -.rst-content .highlight-xml .highlight::before { - -webkit-touch-callout: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - content: "XML"; - color: #696969; - font-size: 80%; - font-family: Menlo, Monaco, "Courier New", monospace; - font-variant: small-caps; - position: absolute; - z-index: 10; - right: 0.18rem; - top: 0.18rem; - line-height: 0.8; -} - -.rst-content .highlight-javascript, .rst-content .highlight-js { - position: relative; -} - -.rst-content .highlight-javascript .highlight::before, .rst-content .highlight-js .highlight::before { - -webkit-touch-callout: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - content: "JavaScript"; - color: #696969; - font-size: 80%; - font-family: Menlo, Monaco, "Courier New", monospace; - font-variant: small-caps; - position: absolute; - z-index: 10; - right: 0.18rem; - top: 0.18rem; - line-height: 0.8; -} - -.rst-content .highlight-jinja { - position: relative; -} - -.rst-content .highlight-jinja .highlight::before { - -webkit-touch-callout: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - content: "Jinja"; - color: #696969; - font-size: 80%; - font-family: Menlo, Monaco, "Courier New", monospace; - font-variant: small-caps; - position: absolute; - z-index: 10; - right: 0.18rem; - top: 0.18rem; - line-height: 0.8; -} - -.rst-content .highlight-c { - position: relative; -} - -.rst-content .highlight-c .highlight::before { - -webkit-touch-callout: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - content: "C"; - color: #696969; - font-size: 80%; - font-family: Menlo, Monaco, "Courier New", monospace; - font-variant: small-caps; - position: absolute; - z-index: 10; - right: 0.18rem; - top: 0.18rem; - line-height: 0.8; -} - -.rst-content .highlight-cxx, .rst-content .highlight-cpp, .rst-content .highlight-c\+\+ { - position: relative; -} - -.rst-content .highlight-cxx .highlight::before, .rst-content .highlight-cpp .highlight::before, .rst-content .highlight-c\+\+ .highlight::before { - -webkit-touch-callout: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - content: "C++"; - color: #696969; - font-size: 80%; - font-family: Menlo, Monaco, "Courier New", monospace; - font-variant: small-caps; - position: absolute; - z-index: 10; - right: 0.18rem; - top: 0.18rem; - line-height: 0.8; -} - -.rst-content .highlight-rs, .rst-content .highlight-rust { - position: relative; -} - -.rst-content .highlight-rs .highlight::before, .rst-content .highlight-rust .highlight::before { - -webkit-touch-callout: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - content: "Rust"; - color: #696969; - font-size: 80%; - font-family: Menlo, Monaco, "Courier New", monospace; - font-variant: small-caps; - position: absolute; - z-index: 10; - right: 0.18rem; - top: 0.18rem; - line-height: 0.8; -} - -.rst-content .highlight-julia { - position: relative; -} - -.rst-content .highlight-julia .highlight::before { - -webkit-touch-callout: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - content: "Julia"; - color: #696969; - font-size: 80%; - font-family: Menlo, Monaco, "Courier New", monospace; - font-variant: small-caps; - position: absolute; - z-index: 10; - right: 0.18rem; - top: 0.18rem; - line-height: 0.8; -} - -.rst-content .highlight-r { - position: relative; -} - -.rst-content .highlight-r .highlight::before { - -webkit-touch-callout: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - content: "R"; - color: #696969; - font-size: 80%; - font-family: Menlo, Monaco, "Courier New", monospace; - font-variant: small-caps; - position: absolute; - z-index: 10; - right: 0.18rem; - top: 0.18rem; - line-height: 0.8; -} - -.rst-content .highlight-restructuredtext, .rst-content .highlight-rst, .rst-content .highlight-rest { - position: relative; -} - -.rst-content .highlight-restructuredtext .highlight::before, .rst-content .highlight-rst .highlight::before, .rst-content .highlight-rest .highlight::before { - -webkit-touch-callout: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - content: "reStructuredText"; - color: #696969; - font-size: 80%; - font-family: Menlo, Monaco, "Courier New", monospace; - font-variant: small-caps; - position: absolute; - z-index: 10; - right: 0.18rem; - top: 0.18rem; - line-height: 0.8; -} - -.rst-content .highlight-md, .rst-content .highlight-markdown { - position: relative; -} - -.rst-content .highlight-md .highlight::before, .rst-content .highlight-markdown .highlight::before { - -webkit-touch-callout: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - content: "Markdown"; - color: #696969; - font-size: 80%; - font-family: Menlo, Monaco, "Courier New", monospace; - font-variant: small-caps; - position: absolute; - z-index: 10; - right: 0.18rem; - top: 0.18rem; - line-height: 0.8; -} - -.rst-content .highlight-tex { - position: relative; -} - -.rst-content .highlight-tex .highlight::before { - -webkit-touch-callout: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - content: "TeX"; - color: #696969; - font-size: 80%; - font-family: Menlo, Monaco, "Courier New", monospace; - font-variant: small-caps; - position: absolute; - z-index: 10; - right: 0.18rem; - top: 0.18rem; - line-height: 0.8; -} - -.rst-content .highlight-latex { - position: relative; -} - -.rst-content .highlight-latex .highlight::before { - -webkit-touch-callout: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - content: "LaTeX"; - color: #696969; - font-size: 80%; - font-family: Menlo, Monaco, "Courier New", monospace; - font-variant: small-caps; - position: absolute; - z-index: 10; - right: 0.18rem; - top: 0.18rem; - line-height: 0.8; -} - -.rst-content .nbinput > .prompt, .rst-content .nboutput > .prompt { - display: None; -} - -.rst-content .nbinput > .output_area, .rst-content .nbinput > .input_area, .rst-content .nboutput > .output_area, .rst-content .nboutput > .input_area { - border: None !important; - box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 2px 2px 0 rgba(0, 0, 0, 0.12), 0 3px 1px -2px rgba(0, 0, 0, 0.2); -} - -.rst-content .nbinput .highlight, .rst-content .nboutput .highlight { - width: 100%; -} - -.rst-content .nbinput:not(.nblast) > .input_area { - border-radius: 4px 0 0 0 !important; -} - -.rst-content .nbinput.nblast > .input_area { - border-radius: 4px 0 0 4px !important; -} - -.rst-content .nbinput > .input_area { - border-left: medium #808080 solid !important; -} - -.rst-content .nbinput > .input_area pre { - padding: 1.25rem 1.5rem !important; -} - -.rst-content .nboutput.nblast > .output_area { - border-radius: 0 0 0 4px !important; -} - -.rst-content .nboutput > .stderr.output_area { - border-left: medium #b5b5b5 solid !important; - background: #fee !important; -} - -.rst-content .nboutput > :not(.stderr).output_area { - border-left: medium #b5b5b5 solid !important; - background: #FFFFFF !important; -} - -.rst-content .cell.container { - box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12), 0 3px 1px -2px rgba(0, 0, 0, 0.2); - border-radius: 4px 2px 2px 4px; -} - -.rst-content .cell.container > .cell_input { - border: none; - border-left: 4px green solid; -} - -.rst-content .cell.container > .cell_input:last-child { - border-radius: 4px 0 0 4px; -} - -.rst-content .cell.container > .cell_input:not(:last-child) { - border-radius: 4px 0 0 0; -} - -.rst-content .cell.container .highlight { - border: None; - border-radius: 0; - box-shadow: None; -} - -.rst-content .cell.container > .cell_output { - box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12), 0 3px 1px -2px rgba(0, 0, 0, 0.2); - border-left: 4px gray solid; - margin-top: -1em; - padding-left: 0; -} - -.rst-content .cell.container > .cell_output:last-child { - border-radius: 0 0 0 4px; -} - -.rst-content .cell.container > .cell_output > .output, .rst-content .cell.container > .cell_output > img { - margin-top: 0; -} - -.rst-content .cell.container > .cell_output > .output.stderr, .rst-content .cell.container > .cell_output > img.stderr { - background: #fee; -} - -.rst-content .cell.container > .cell_output > .output.stderr .highlight, .rst-content .cell.container > .cell_output > .output.stderr pre, .rst-content .cell.container > .cell_output > img.stderr .highlight, .rst-content .cell.container > .cell_output > img.stderr pre { - background: None; -} - -.rst-content .cell.container > .cell_output > .output:not(.stderr), .rst-content .cell.container > .cell_output > img:not(.stderr) { - background: #FFFFFF; -} - -.rst-content .cell.container > .cell_output > .output:not(.stderr) .highlight, .rst-content .cell.container > .cell_output > .output:not(.stderr) pre, .rst-content .cell.container > .cell_output > img:not(.stderr) .highlight, .rst-content .cell.container > .cell_output > img:not(.stderr) pre { - background: None; -} - -.rst-content .cell.container > .cell_output > .output.traceback, .rst-content .cell.container > .cell_output > img.traceback { - border: None; -} - -.rst-content .cell.container > .cell_output > .output pre, .rst-content .cell.container > .cell_output > img pre { - padding: 5px; - white-space: pre-wrap; - word-break: break-all; -} - -.rst-content .cell.container .highlight { - border: none; -} - -.rst-content .admonition, .rst-content div.deprecated, .rst-content div.alert { - margin: 1.25rem 0; - padding: 0 0.75rem; - overflow: hidden; - color: rgba(0, 0, 0, 0.87); - page-break-inside: avoid; - border-left: none; - border-radius: 0.125rem; - box-shadow: 0 6px 10px 0 rgba(0, 0, 0, 0.14), 0 1px 18px 0 rgba(0, 0, 0, 0.12), 0 3px 5px -1px rgba(0, 0, 0, 0.4); -} - -@media print { - .rst-content .admonition, .rst-content div.deprecated, .rst-content div.alert { - box-shadow: none; - } -} - -[dir="rtl"] .rst-content .admonition, [dir="rtl"] .rst-content div.deprecated, [dir="rtl"] .rst-content div.alert { - border-right: 0.25rem solid #ca6500; - border-left: none; -} - -.rst-content .admonition .admonition, .rst-content div.deprecated .admonition, .rst-content div.alert .admonition { - margin-top: 1em; - margin-bottom: 1em; -} - -.rst-content .admonition .md-typeset__scrollwrap, .rst-content div.deprecated .md-typeset__scrollwrap, .rst-content div.alert .md-typeset__scrollwrap { - margin: 1em -0.75rem; -} - -.rst-content .admonition .md-typeset__table, .rst-content div.deprecated .md-typeset__table, .rst-content div.alert .md-typeset__table { - padding: 0 0.75rem; -} - -.rst-content .admonition > .tabbed-set:only-child, .rst-content div.deprecated > .tabbed-set:only-child, .rst-content div.alert > .tabbed-set:only-child { - margin-top: 0; -} - -html .rst-content .admonition:not(div.deprecated) > :last-child, html .rst-content div.deprecated:not(div.deprecated) > :last-child, html .rst-content div.alert:not(div.deprecated) > :last-child { - margin-bottom: 0.75rem; -} - -.rst-content .admonition:not(div.deprecated) > p:not(.admonition-title), .rst-content div.deprecated:not(div.deprecated) > p:not(.admonition-title), .rst-content div.alert:not(div.deprecated) > p:not(.admonition-title) { - max-width: calc(80ex - 2 * 1.25rem); -} - -.rst-content .admonition.note, .rst-content .admonition.admonition-note, .rst-content div.deprecated.note, .rst-content div.deprecated.admonition-note, .rst-content div.alert.note, .rst-content div.alert.admonition-note { - border-left-color: #808080; - background-color: rgba(128, 128, 128, 0.1); -} - -[dir="rtl"] .rst-content .admonition.note, [dir="rtl"] .rst-content .admonition.admonition-note, [dir="rtl"] .rst-content div.deprecated.note, [dir="rtl"] .rst-content div.deprecated.admonition-note, [dir="rtl"] .rst-content div.alert.note, [dir="rtl"] .rst-content div.alert.admonition-note { - border-right-color: #808080; -} - -.rst-content .admonition.note .admonition-title, .rst-content .admonition.note.deprecated .versionmodified.deprecated, .rst-content .admonition.admonition-note .admonition-title, .rst-content .admonition.admonition-note.deprecated .versionmodified.deprecated, .rst-content div.deprecated.note .admonition-title, .rst-content div.deprecated.note.deprecated .versionmodified.deprecated, .rst-content div.deprecated.admonition-note .admonition-title, .rst-content div.deprecated.admonition-note.deprecated .versionmodified.deprecated, .rst-content div.alert.note .admonition-title, .rst-content div.alert.note.deprecated .versionmodified.deprecated, .rst-content div.alert.admonition-note .admonition-title, .rst-content div.alert.admonition-note.deprecated .versionmodified.deprecated { - background-color: #808080; - border-left-color: #808080; - color: white; -} - -[dir="rtl"] .rst-content .admonition.note .admonition-title, [dir="rtl"] .rst-content .admonition.note.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content .admonition.admonition-note .admonition-title, [dir="rtl"] .rst-content .admonition.admonition-note.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.note .admonition-title, [dir="rtl"] .rst-content div.deprecated.note.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.admonition-note .admonition-title, [dir="rtl"] .rst-content div.deprecated.admonition-note.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.note .admonition-title, [dir="rtl"] .rst-content div.alert.note.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.admonition-note .admonition-title, [dir="rtl"] .rst-content div.alert.admonition-note.deprecated .versionmodified.deprecated { - border-right-color: #808080; -} - -.rst-content .admonition.note .admonition-title::before, .rst-content .admonition.note.deprecated .versionmodified.deprecated::before, .rst-content .admonition.admonition-note .admonition-title::before, .rst-content .admonition.admonition-note.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.note .admonition-title::before, .rst-content div.deprecated.note.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.admonition-note .admonition-title::before, .rst-content div.deprecated.admonition-note.deprecated .versionmodified.deprecated::before, .rst-content div.alert.note .admonition-title::before, .rst-content div.alert.note.deprecated .versionmodified.deprecated::before, .rst-content div.alert.admonition-note .admonition-title::before, .rst-content div.alert.admonition-note.deprecated .versionmodified.deprecated::before { - color: white; - font-family: "FontAwesome"; - content: ""; -} - -.rst-content .admonition.note .admonition-title strong, .rst-content .admonition.note.deprecated .versionmodified.deprecated strong, .rst-content .admonition.admonition-note .admonition-title strong, .rst-content .admonition.admonition-note.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.note .admonition-title strong, .rst-content div.deprecated.note.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.admonition-note .admonition-title strong, .rst-content div.deprecated.admonition-note.deprecated .versionmodified.deprecated strong, .rst-content div.alert.note .admonition-title strong, .rst-content div.alert.note.deprecated .versionmodified.deprecated strong, .rst-content div.alert.admonition-note .admonition-title strong, .rst-content div.alert.admonition-note.deprecated .versionmodified.deprecated strong { - color: white; -} - -.rst-content .admonition.seealso, .rst-content .admonition.admonition-seealso, .rst-content div.deprecated.seealso, .rst-content div.deprecated.admonition-seealso, .rst-content div.alert.seealso, .rst-content div.alert.admonition-seealso { - border-left-color: #808080; - background-color: rgba(128, 128, 128, 0.1); -} - -[dir="rtl"] .rst-content .admonition.seealso, [dir="rtl"] .rst-content .admonition.admonition-seealso, [dir="rtl"] .rst-content div.deprecated.seealso, [dir="rtl"] .rst-content div.deprecated.admonition-seealso, [dir="rtl"] .rst-content div.alert.seealso, [dir="rtl"] .rst-content div.alert.admonition-seealso { - border-right-color: #808080; -} - -.rst-content .admonition.seealso .admonition-title, .rst-content .admonition.seealso.deprecated .versionmodified.deprecated, .rst-content .admonition.admonition-seealso .admonition-title, .rst-content .admonition.admonition-seealso.deprecated .versionmodified.deprecated, .rst-content div.deprecated.seealso .admonition-title, .rst-content div.deprecated.seealso.deprecated .versionmodified.deprecated, .rst-content div.deprecated.admonition-seealso .admonition-title, .rst-content div.deprecated.admonition-seealso.deprecated .versionmodified.deprecated, .rst-content div.alert.seealso .admonition-title, .rst-content div.alert.seealso.deprecated .versionmodified.deprecated, .rst-content div.alert.admonition-seealso .admonition-title, .rst-content div.alert.admonition-seealso.deprecated .versionmodified.deprecated { - background-color: #808080; - border-left-color: #808080; - color: white; -} - -[dir="rtl"] .rst-content .admonition.seealso .admonition-title, [dir="rtl"] .rst-content .admonition.seealso.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content .admonition.admonition-seealso .admonition-title, [dir="rtl"] .rst-content .admonition.admonition-seealso.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.seealso .admonition-title, [dir="rtl"] .rst-content div.deprecated.seealso.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.admonition-seealso .admonition-title, [dir="rtl"] .rst-content div.deprecated.admonition-seealso.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.seealso .admonition-title, [dir="rtl"] .rst-content div.alert.seealso.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.admonition-seealso .admonition-title, [dir="rtl"] .rst-content div.alert.admonition-seealso.deprecated .versionmodified.deprecated { - border-right-color: #808080; -} - -.rst-content .admonition.seealso .admonition-title::before, .rst-content .admonition.seealso.deprecated .versionmodified.deprecated::before, .rst-content .admonition.admonition-seealso .admonition-title::before, .rst-content .admonition.admonition-seealso.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.seealso .admonition-title::before, .rst-content div.deprecated.seealso.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.admonition-seealso .admonition-title::before, .rst-content div.deprecated.admonition-seealso.deprecated .versionmodified.deprecated::before, .rst-content div.alert.seealso .admonition-title::before, .rst-content div.alert.seealso.deprecated .versionmodified.deprecated::before, .rst-content div.alert.admonition-seealso .admonition-title::before, .rst-content div.alert.admonition-seealso.deprecated .versionmodified.deprecated::before { - color: white; - font-family: "FontAwesome"; - content: ""; -} - -.rst-content .admonition.seealso .admonition-title strong, .rst-content .admonition.seealso.deprecated .versionmodified.deprecated strong, .rst-content .admonition.admonition-seealso .admonition-title strong, .rst-content .admonition.admonition-seealso.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.seealso .admonition-title strong, .rst-content div.deprecated.seealso.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.admonition-seealso .admonition-title strong, .rst-content div.deprecated.admonition-seealso.deprecated .versionmodified.deprecated strong, .rst-content div.alert.seealso .admonition-title strong, .rst-content div.alert.seealso.deprecated .versionmodified.deprecated strong, .rst-content div.alert.admonition-seealso .admonition-title strong, .rst-content div.alert.admonition-seealso.deprecated .versionmodified.deprecated strong { - color: white; -} - -.rst-content .admonition.admonition-abstract, .rst-content .admonition.admonition-summary, .rst-content .admonition.admonition-tldr, .rst-content div.deprecated.admonition-abstract, .rst-content div.deprecated.admonition-summary, .rst-content div.deprecated.admonition-tldr, .rst-content div.alert.admonition-abstract, .rst-content div.alert.admonition-summary, .rst-content div.alert.admonition-tldr { - border-left-color: #3298dc; - background-color: rgba(50, 152, 220, 0.1); -} - -[dir="rtl"] .rst-content .admonition.admonition-abstract, [dir="rtl"] .rst-content .admonition.admonition-summary, [dir="rtl"] .rst-content .admonition.admonition-tldr, [dir="rtl"] .rst-content div.deprecated.admonition-abstract, [dir="rtl"] .rst-content div.deprecated.admonition-summary, [dir="rtl"] .rst-content div.deprecated.admonition-tldr, [dir="rtl"] .rst-content div.alert.admonition-abstract, [dir="rtl"] .rst-content div.alert.admonition-summary, [dir="rtl"] .rst-content div.alert.admonition-tldr { - border-right-color: #3298dc; -} - -.rst-content .admonition.admonition-abstract .admonition-title, .rst-content .admonition.admonition-abstract.deprecated .versionmodified.deprecated, .rst-content .admonition.admonition-summary .admonition-title, .rst-content .admonition.admonition-summary.deprecated .versionmodified.deprecated, .rst-content .admonition.admonition-tldr .admonition-title, .rst-content .admonition.admonition-tldr.deprecated .versionmodified.deprecated, .rst-content div.deprecated.admonition-abstract .admonition-title, .rst-content div.deprecated.admonition-abstract.deprecated .versionmodified.deprecated, .rst-content div.deprecated.admonition-summary .admonition-title, .rst-content div.deprecated.admonition-summary.deprecated .versionmodified.deprecated, .rst-content div.deprecated.admonition-tldr .admonition-title, .rst-content div.deprecated.admonition-tldr.deprecated .versionmodified.deprecated, .rst-content div.alert.admonition-abstract .admonition-title, .rst-content div.alert.admonition-abstract.deprecated .versionmodified.deprecated, .rst-content div.alert.admonition-summary .admonition-title, .rst-content div.alert.admonition-summary.deprecated .versionmodified.deprecated, .rst-content div.alert.admonition-tldr .admonition-title, .rst-content div.alert.admonition-tldr.deprecated .versionmodified.deprecated { - background-color: #3298dc; - border-left-color: #3298dc; - color: white; -} - -[dir="rtl"] .rst-content .admonition.admonition-abstract .admonition-title, [dir="rtl"] .rst-content .admonition.admonition-abstract.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content .admonition.admonition-summary .admonition-title, [dir="rtl"] .rst-content .admonition.admonition-summary.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content .admonition.admonition-tldr .admonition-title, [dir="rtl"] .rst-content .admonition.admonition-tldr.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.admonition-abstract .admonition-title, [dir="rtl"] .rst-content div.deprecated.admonition-abstract.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.admonition-summary .admonition-title, [dir="rtl"] .rst-content div.deprecated.admonition-summary.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.admonition-tldr .admonition-title, [dir="rtl"] .rst-content div.deprecated.admonition-tldr.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.admonition-abstract .admonition-title, [dir="rtl"] .rst-content div.alert.admonition-abstract.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.admonition-summary .admonition-title, [dir="rtl"] .rst-content div.alert.admonition-summary.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.admonition-tldr .admonition-title, [dir="rtl"] .rst-content div.alert.admonition-tldr.deprecated .versionmodified.deprecated { - border-right-color: #3298dc; -} - -.rst-content .admonition.admonition-abstract .admonition-title::before, .rst-content .admonition.admonition-abstract.deprecated .versionmodified.deprecated::before, .rst-content .admonition.admonition-summary .admonition-title::before, .rst-content .admonition.admonition-summary.deprecated .versionmodified.deprecated::before, .rst-content .admonition.admonition-tldr .admonition-title::before, .rst-content .admonition.admonition-tldr.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.admonition-abstract .admonition-title::before, .rst-content div.deprecated.admonition-abstract.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.admonition-summary .admonition-title::before, .rst-content div.deprecated.admonition-summary.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.admonition-tldr .admonition-title::before, .rst-content div.deprecated.admonition-tldr.deprecated .versionmodified.deprecated::before, .rst-content div.alert.admonition-abstract .admonition-title::before, .rst-content div.alert.admonition-abstract.deprecated .versionmodified.deprecated::before, .rst-content div.alert.admonition-summary .admonition-title::before, .rst-content div.alert.admonition-summary.deprecated .versionmodified.deprecated::before, .rst-content div.alert.admonition-tldr .admonition-title::before, .rst-content div.alert.admonition-tldr.deprecated .versionmodified.deprecated::before { - color: white; - font-family: "FontAwesome"; - content: ""; -} - -.rst-content .admonition.admonition-abstract .admonition-title strong, .rst-content .admonition.admonition-abstract.deprecated .versionmodified.deprecated strong, .rst-content .admonition.admonition-summary .admonition-title strong, .rst-content .admonition.admonition-summary.deprecated .versionmodified.deprecated strong, .rst-content .admonition.admonition-tldr .admonition-title strong, .rst-content .admonition.admonition-tldr.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.admonition-abstract .admonition-title strong, .rst-content div.deprecated.admonition-abstract.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.admonition-summary .admonition-title strong, .rst-content div.deprecated.admonition-summary.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.admonition-tldr .admonition-title strong, .rst-content div.deprecated.admonition-tldr.deprecated .versionmodified.deprecated strong, .rst-content div.alert.admonition-abstract .admonition-title strong, .rst-content div.alert.admonition-abstract.deprecated .versionmodified.deprecated strong, .rst-content div.alert.admonition-summary .admonition-title strong, .rst-content div.alert.admonition-summary.deprecated .versionmodified.deprecated strong, .rst-content div.alert.admonition-tldr .admonition-title strong, .rst-content div.alert.admonition-tldr.deprecated .versionmodified.deprecated strong { - color: white; -} - -.rst-content .admonition.admonition-info, .rst-content .admonition.alert-info, .rst-content div.deprecated.admonition-info, .rst-content div.deprecated.alert-info, .rst-content div.alert.admonition-info, .rst-content div.alert.alert-info { - border-left-color: #ca6500; - background-color: rgba(202, 101, 0, 0.1); -} - -[dir="rtl"] .rst-content .admonition.admonition-info, [dir="rtl"] .rst-content .admonition.alert-info, [dir="rtl"] .rst-content div.deprecated.admonition-info, [dir="rtl"] .rst-content div.deprecated.alert-info, [dir="rtl"] .rst-content div.alert.admonition-info, [dir="rtl"] .rst-content div.alert.alert-info { - border-right-color: #ca6500; -} - -.rst-content .admonition.admonition-info .admonition-title, .rst-content .admonition.admonition-info.deprecated .versionmodified.deprecated, .rst-content .admonition.alert-info .admonition-title, .rst-content .admonition.alert-info.deprecated .versionmodified.deprecated, .rst-content div.deprecated.admonition-info .admonition-title, .rst-content div.deprecated.admonition-info.deprecated .versionmodified.deprecated, .rst-content div.deprecated.alert-info .admonition-title, .rst-content div.deprecated.alert-info.deprecated .versionmodified.deprecated, .rst-content div.alert.admonition-info .admonition-title, .rst-content div.alert.admonition-info.deprecated .versionmodified.deprecated, .rst-content div.alert.alert-info .admonition-title, .rst-content div.alert.alert-info.deprecated .versionmodified.deprecated { - background-color: #ca6500; - border-left-color: #ca6500; - color: white; -} - -[dir="rtl"] .rst-content .admonition.admonition-info .admonition-title, [dir="rtl"] .rst-content .admonition.admonition-info.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content .admonition.alert-info .admonition-title, [dir="rtl"] .rst-content .admonition.alert-info.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.admonition-info .admonition-title, [dir="rtl"] .rst-content div.deprecated.admonition-info.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.alert-info .admonition-title, [dir="rtl"] .rst-content div.deprecated.alert-info.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.admonition-info .admonition-title, [dir="rtl"] .rst-content div.alert.admonition-info.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.alert-info .admonition-title, [dir="rtl"] .rst-content div.alert.alert-info.deprecated .versionmodified.deprecated { - border-right-color: #ca6500; -} - -.rst-content .admonition.admonition-info .admonition-title::before, .rst-content .admonition.admonition-info.deprecated .versionmodified.deprecated::before, .rst-content .admonition.alert-info .admonition-title::before, .rst-content .admonition.alert-info.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.admonition-info .admonition-title::before, .rst-content div.deprecated.admonition-info.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.alert-info .admonition-title::before, .rst-content div.deprecated.alert-info.deprecated .versionmodified.deprecated::before, .rst-content div.alert.admonition-info .admonition-title::before, .rst-content div.alert.admonition-info.deprecated .versionmodified.deprecated::before, .rst-content div.alert.alert-info .admonition-title::before, .rst-content div.alert.alert-info.deprecated .versionmodified.deprecated::before { - color: white; - font-family: "FontAwesome"; - content: ""; -} - -.rst-content .admonition.admonition-info .admonition-title strong, .rst-content .admonition.admonition-info.deprecated .versionmodified.deprecated strong, .rst-content .admonition.alert-info .admonition-title strong, .rst-content .admonition.alert-info.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.admonition-info .admonition-title strong, .rst-content div.deprecated.admonition-info.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.alert-info .admonition-title strong, .rst-content div.deprecated.alert-info.deprecated .versionmodified.deprecated strong, .rst-content div.alert.admonition-info .admonition-title strong, .rst-content div.alert.admonition-info.deprecated .versionmodified.deprecated strong, .rst-content div.alert.alert-info .admonition-title strong, .rst-content div.alert.alert-info.deprecated .versionmodified.deprecated strong { - color: white; -} - -.rst-content .admonition.admonition-todo, .rst-content div.deprecated.admonition-todo, .rst-content div.alert.admonition-todo { - border-left-color: #e7cb00; - background-color: rgba(231, 203, 0, 0.1); -} - -[dir="rtl"] .rst-content .admonition.admonition-todo, [dir="rtl"] .rst-content div.deprecated.admonition-todo, [dir="rtl"] .rst-content div.alert.admonition-todo { - border-right-color: #e7cb00; -} - -.rst-content .admonition.admonition-todo .admonition-title, .rst-content .admonition.admonition-todo.deprecated .versionmodified.deprecated, .rst-content div.deprecated.admonition-todo .admonition-title, .rst-content div.deprecated.admonition-todo.deprecated .versionmodified.deprecated, .rst-content div.alert.admonition-todo .admonition-title, .rst-content div.alert.admonition-todo.deprecated .versionmodified.deprecated { - background-color: #e7cb00; - border-left-color: #e7cb00; - color: white; -} - -[dir="rtl"] .rst-content .admonition.admonition-todo .admonition-title, [dir="rtl"] .rst-content .admonition.admonition-todo.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.admonition-todo .admonition-title, [dir="rtl"] .rst-content div.deprecated.admonition-todo.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.admonition-todo .admonition-title, [dir="rtl"] .rst-content div.alert.admonition-todo.deprecated .versionmodified.deprecated { - border-right-color: #e7cb00; -} - -.rst-content .admonition.admonition-todo .admonition-title::before, .rst-content .admonition.admonition-todo.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.admonition-todo .admonition-title::before, .rst-content div.deprecated.admonition-todo.deprecated .versionmodified.deprecated::before, .rst-content div.alert.admonition-todo .admonition-title::before, .rst-content div.alert.admonition-todo.deprecated .versionmodified.deprecated::before { - color: white; - font-family: "FontAwesome"; - content: ""; -} - -.rst-content .admonition.admonition-todo .admonition-title strong, .rst-content .admonition.admonition-todo.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.admonition-todo .admonition-title strong, .rst-content div.deprecated.admonition-todo.deprecated .versionmodified.deprecated strong, .rst-content div.alert.admonition-todo .admonition-title strong, .rst-content div.alert.admonition-todo.deprecated .versionmodified.deprecated strong { - color: white; -} - -.rst-content .admonition.tip, .rst-content .admonition.hint, .rst-content .admonition.admonition-tip, .rst-content .admonition.admonition-hint, .rst-content div.deprecated.tip, .rst-content div.deprecated.hint, .rst-content div.deprecated.admonition-tip, .rst-content div.deprecated.admonition-hint, .rst-content div.alert.tip, .rst-content div.alert.hint, .rst-content div.alert.admonition-tip, .rst-content div.alert.admonition-hint { - border-left-color: #00d1b2; - background-color: rgba(0, 209, 178, 0.1); -} - -[dir="rtl"] .rst-content .admonition.tip, [dir="rtl"] .rst-content .admonition.hint, [dir="rtl"] .rst-content .admonition.admonition-tip, [dir="rtl"] .rst-content .admonition.admonition-hint, [dir="rtl"] .rst-content div.deprecated.tip, [dir="rtl"] .rst-content div.deprecated.hint, [dir="rtl"] .rst-content div.deprecated.admonition-tip, [dir="rtl"] .rst-content div.deprecated.admonition-hint, [dir="rtl"] .rst-content div.alert.tip, [dir="rtl"] .rst-content div.alert.hint, [dir="rtl"] .rst-content div.alert.admonition-tip, [dir="rtl"] .rst-content div.alert.admonition-hint { - border-right-color: #00d1b2; -} - -.rst-content .admonition.tip .admonition-title, .rst-content .admonition.tip.deprecated .versionmodified.deprecated, .rst-content .admonition.hint .admonition-title, .rst-content .admonition.hint.deprecated .versionmodified.deprecated, .rst-content .admonition.admonition-tip .admonition-title, .rst-content .admonition.admonition-tip.deprecated .versionmodified.deprecated, .rst-content .admonition.admonition-hint .admonition-title, .rst-content .admonition.admonition-hint.deprecated .versionmodified.deprecated, .rst-content div.deprecated.tip .admonition-title, .rst-content div.deprecated.tip.deprecated .versionmodified.deprecated, .rst-content div.deprecated.hint .admonition-title, .rst-content div.deprecated.hint.deprecated .versionmodified.deprecated, .rst-content div.deprecated.admonition-tip .admonition-title, .rst-content div.deprecated.admonition-tip.deprecated .versionmodified.deprecated, .rst-content div.deprecated.admonition-hint .admonition-title, .rst-content div.deprecated.admonition-hint.deprecated .versionmodified.deprecated, .rst-content div.alert.tip .admonition-title, .rst-content div.alert.tip.deprecated .versionmodified.deprecated, .rst-content div.alert.hint .admonition-title, .rst-content div.alert.hint.deprecated .versionmodified.deprecated, .rst-content div.alert.admonition-tip .admonition-title, .rst-content div.alert.admonition-tip.deprecated .versionmodified.deprecated, .rst-content div.alert.admonition-hint .admonition-title, .rst-content div.alert.admonition-hint.deprecated .versionmodified.deprecated { - background-color: #00d1b2; - border-left-color: #00d1b2; - color: white; -} - -[dir="rtl"] .rst-content .admonition.tip .admonition-title, [dir="rtl"] .rst-content .admonition.tip.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content .admonition.hint .admonition-title, [dir="rtl"] .rst-content .admonition.hint.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content .admonition.admonition-tip .admonition-title, [dir="rtl"] .rst-content .admonition.admonition-tip.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content .admonition.admonition-hint .admonition-title, [dir="rtl"] .rst-content .admonition.admonition-hint.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.tip .admonition-title, [dir="rtl"] .rst-content div.deprecated.tip.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.hint .admonition-title, [dir="rtl"] .rst-content div.deprecated.hint.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.admonition-tip .admonition-title, [dir="rtl"] .rst-content div.deprecated.admonition-tip.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.admonition-hint .admonition-title, [dir="rtl"] .rst-content div.deprecated.admonition-hint.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.tip .admonition-title, [dir="rtl"] .rst-content div.alert.tip.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.hint .admonition-title, [dir="rtl"] .rst-content div.alert.hint.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.admonition-tip .admonition-title, [dir="rtl"] .rst-content div.alert.admonition-tip.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.admonition-hint .admonition-title, [dir="rtl"] .rst-content div.alert.admonition-hint.deprecated .versionmodified.deprecated { - border-right-color: #00d1b2; -} - -.rst-content .admonition.tip .admonition-title::before, .rst-content .admonition.tip.deprecated .versionmodified.deprecated::before, .rst-content .admonition.hint .admonition-title::before, .rst-content .admonition.hint.deprecated .versionmodified.deprecated::before, .rst-content .admonition.admonition-tip .admonition-title::before, .rst-content .admonition.admonition-tip.deprecated .versionmodified.deprecated::before, .rst-content .admonition.admonition-hint .admonition-title::before, .rst-content .admonition.admonition-hint.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.tip .admonition-title::before, .rst-content div.deprecated.tip.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.hint .admonition-title::before, .rst-content div.deprecated.hint.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.admonition-tip .admonition-title::before, .rst-content div.deprecated.admonition-tip.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.admonition-hint .admonition-title::before, .rst-content div.deprecated.admonition-hint.deprecated .versionmodified.deprecated::before, .rst-content div.alert.tip .admonition-title::before, .rst-content div.alert.tip.deprecated .versionmodified.deprecated::before, .rst-content div.alert.hint .admonition-title::before, .rst-content div.alert.hint.deprecated .versionmodified.deprecated::before, .rst-content div.alert.admonition-tip .admonition-title::before, .rst-content div.alert.admonition-tip.deprecated .versionmodified.deprecated::before, .rst-content div.alert.admonition-hint .admonition-title::before, .rst-content div.alert.admonition-hint.deprecated .versionmodified.deprecated::before { - color: white; - font-family: "FontAwesome"; - content: ""; -} - -.rst-content .admonition.tip .admonition-title strong, .rst-content .admonition.tip.deprecated .versionmodified.deprecated strong, .rst-content .admonition.hint .admonition-title strong, .rst-content .admonition.hint.deprecated .versionmodified.deprecated strong, .rst-content .admonition.admonition-tip .admonition-title strong, .rst-content .admonition.admonition-tip.deprecated .versionmodified.deprecated strong, .rst-content .admonition.admonition-hint .admonition-title strong, .rst-content .admonition.admonition-hint.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.tip .admonition-title strong, .rst-content div.deprecated.tip.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.hint .admonition-title strong, .rst-content div.deprecated.hint.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.admonition-tip .admonition-title strong, .rst-content div.deprecated.admonition-tip.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.admonition-hint .admonition-title strong, .rst-content div.deprecated.admonition-hint.deprecated .versionmodified.deprecated strong, .rst-content div.alert.tip .admonition-title strong, .rst-content div.alert.tip.deprecated .versionmodified.deprecated strong, .rst-content div.alert.hint .admonition-title strong, .rst-content div.alert.hint.deprecated .versionmodified.deprecated strong, .rst-content div.alert.admonition-tip .admonition-title strong, .rst-content div.alert.admonition-tip.deprecated .versionmodified.deprecated strong, .rst-content div.alert.admonition-hint .admonition-title strong, .rst-content div.alert.admonition-hint.deprecated .versionmodified.deprecated strong { - color: white; -} - -.rst-content .admonition.important, .rst-content .admonition.admonition-important, .rst-content div.deprecated.important, .rst-content div.deprecated.admonition-important, .rst-content div.alert.important, .rst-content div.alert.admonition-important { - border-left-color: #FF9200; - background-color: rgba(255, 146, 0, 0.1); -} - -[dir="rtl"] .rst-content .admonition.important, [dir="rtl"] .rst-content .admonition.admonition-important, [dir="rtl"] .rst-content div.deprecated.important, [dir="rtl"] .rst-content div.deprecated.admonition-important, [dir="rtl"] .rst-content div.alert.important, [dir="rtl"] .rst-content div.alert.admonition-important { - border-right-color: #FF9200; -} - -.rst-content .admonition.important .admonition-title, .rst-content .admonition.important.deprecated .versionmodified.deprecated, .rst-content .admonition.admonition-important .admonition-title, .rst-content .admonition.admonition-important.deprecated .versionmodified.deprecated, .rst-content div.deprecated.important .admonition-title, .rst-content div.deprecated.important.deprecated .versionmodified.deprecated, .rst-content div.deprecated.admonition-important .admonition-title, .rst-content div.deprecated.admonition-important.deprecated .versionmodified.deprecated, .rst-content div.alert.important .admonition-title, .rst-content div.alert.important.deprecated .versionmodified.deprecated, .rst-content div.alert.admonition-important .admonition-title, .rst-content div.alert.admonition-important.deprecated .versionmodified.deprecated { - background-color: #FF9200; - border-left-color: #FF9200; - color: white; -} - -[dir="rtl"] .rst-content .admonition.important .admonition-title, [dir="rtl"] .rst-content .admonition.important.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content .admonition.admonition-important .admonition-title, [dir="rtl"] .rst-content .admonition.admonition-important.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.important .admonition-title, [dir="rtl"] .rst-content div.deprecated.important.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.admonition-important .admonition-title, [dir="rtl"] .rst-content div.deprecated.admonition-important.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.important .admonition-title, [dir="rtl"] .rst-content div.alert.important.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.admonition-important .admonition-title, [dir="rtl"] .rst-content div.alert.admonition-important.deprecated .versionmodified.deprecated { - border-right-color: #FF9200; -} - -.rst-content .admonition.important .admonition-title::before, .rst-content .admonition.important.deprecated .versionmodified.deprecated::before, .rst-content .admonition.admonition-important .admonition-title::before, .rst-content .admonition.admonition-important.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.important .admonition-title::before, .rst-content div.deprecated.important.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.admonition-important .admonition-title::before, .rst-content div.deprecated.admonition-important.deprecated .versionmodified.deprecated::before, .rst-content div.alert.important .admonition-title::before, .rst-content div.alert.important.deprecated .versionmodified.deprecated::before, .rst-content div.alert.admonition-important .admonition-title::before, .rst-content div.alert.admonition-important.deprecated .versionmodified.deprecated::before { - color: white; - font-family: "FontAwesome"; - content: ""; -} - -.rst-content .admonition.important .admonition-title strong, .rst-content .admonition.important.deprecated .versionmodified.deprecated strong, .rst-content .admonition.admonition-important .admonition-title strong, .rst-content .admonition.admonition-important.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.important .admonition-title strong, .rst-content div.deprecated.important.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.admonition-important .admonition-title strong, .rst-content div.deprecated.admonition-important.deprecated .versionmodified.deprecated strong, .rst-content div.alert.important .admonition-title strong, .rst-content div.alert.important.deprecated .versionmodified.deprecated strong, .rst-content div.alert.admonition-important .admonition-title strong, .rst-content div.alert.admonition-important.deprecated .versionmodified.deprecated strong { - color: white; -} - -.rst-content .admonition.admonition-success, .rst-content .admonition.admonition-check, .rst-content .admonition.admonition-done, .rst-content .admonition.alert-success, .rst-content div.deprecated.admonition-success, .rst-content div.deprecated.admonition-check, .rst-content div.deprecated.admonition-done, .rst-content div.deprecated.alert-success, .rst-content div.alert.admonition-success, .rst-content div.alert.admonition-check, .rst-content div.alert.admonition-done, .rst-content div.alert.alert-success { - border-left-color: #01a901; - background-color: rgba(1, 169, 1, 0.1); -} - -[dir="rtl"] .rst-content .admonition.admonition-success, [dir="rtl"] .rst-content .admonition.admonition-check, [dir="rtl"] .rst-content .admonition.admonition-done, [dir="rtl"] .rst-content .admonition.alert-success, [dir="rtl"] .rst-content div.deprecated.admonition-success, [dir="rtl"] .rst-content div.deprecated.admonition-check, [dir="rtl"] .rst-content div.deprecated.admonition-done, [dir="rtl"] .rst-content div.deprecated.alert-success, [dir="rtl"] .rst-content div.alert.admonition-success, [dir="rtl"] .rst-content div.alert.admonition-check, [dir="rtl"] .rst-content div.alert.admonition-done, [dir="rtl"] .rst-content div.alert.alert-success { - border-right-color: #01a901; -} - -.rst-content .admonition.admonition-success .admonition-title, .rst-content .admonition.admonition-success.deprecated .versionmodified.deprecated, .rst-content .admonition.admonition-check .admonition-title, .rst-content .admonition.admonition-check.deprecated .versionmodified.deprecated, .rst-content .admonition.admonition-done .admonition-title, .rst-content .admonition.admonition-done.deprecated .versionmodified.deprecated, .rst-content .admonition.alert-success .admonition-title, .rst-content .admonition.alert-success.deprecated .versionmodified.deprecated, .rst-content div.deprecated.admonition-success .admonition-title, .rst-content div.deprecated.admonition-success.deprecated .versionmodified.deprecated, .rst-content div.deprecated.admonition-check .admonition-title, .rst-content div.deprecated.admonition-check.deprecated .versionmodified.deprecated, .rst-content div.deprecated.admonition-done .admonition-title, .rst-content div.deprecated.admonition-done.deprecated .versionmodified.deprecated, .rst-content div.deprecated.alert-success .admonition-title, .rst-content div.deprecated.alert-success.deprecated .versionmodified.deprecated, .rst-content div.alert.admonition-success .admonition-title, .rst-content div.alert.admonition-success.deprecated .versionmodified.deprecated, .rst-content div.alert.admonition-check .admonition-title, .rst-content div.alert.admonition-check.deprecated .versionmodified.deprecated, .rst-content div.alert.admonition-done .admonition-title, .rst-content div.alert.admonition-done.deprecated .versionmodified.deprecated, .rst-content div.alert.alert-success .admonition-title, .rst-content div.alert.alert-success.deprecated .versionmodified.deprecated { - background-color: #01a901; - border-left-color: #01a901; - color: white; -} - -[dir="rtl"] .rst-content .admonition.admonition-success .admonition-title, [dir="rtl"] .rst-content .admonition.admonition-success.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content .admonition.admonition-check .admonition-title, [dir="rtl"] .rst-content .admonition.admonition-check.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content .admonition.admonition-done .admonition-title, [dir="rtl"] .rst-content .admonition.admonition-done.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content .admonition.alert-success .admonition-title, [dir="rtl"] .rst-content .admonition.alert-success.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.admonition-success .admonition-title, [dir="rtl"] .rst-content div.deprecated.admonition-success.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.admonition-check .admonition-title, [dir="rtl"] .rst-content div.deprecated.admonition-check.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.admonition-done .admonition-title, [dir="rtl"] .rst-content div.deprecated.admonition-done.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.alert-success .admonition-title, [dir="rtl"] .rst-content div.deprecated.alert-success.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.admonition-success .admonition-title, [dir="rtl"] .rst-content div.alert.admonition-success.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.admonition-check .admonition-title, [dir="rtl"] .rst-content div.alert.admonition-check.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.admonition-done .admonition-title, [dir="rtl"] .rst-content div.alert.admonition-done.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.alert-success .admonition-title, [dir="rtl"] .rst-content div.alert.alert-success.deprecated .versionmodified.deprecated { - border-right-color: #01a901; -} - -.rst-content .admonition.admonition-success .admonition-title::before, .rst-content .admonition.admonition-success.deprecated .versionmodified.deprecated::before, .rst-content .admonition.admonition-check .admonition-title::before, .rst-content .admonition.admonition-check.deprecated .versionmodified.deprecated::before, .rst-content .admonition.admonition-done .admonition-title::before, .rst-content .admonition.admonition-done.deprecated .versionmodified.deprecated::before, .rst-content .admonition.alert-success .admonition-title::before, .rst-content .admonition.alert-success.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.admonition-success .admonition-title::before, .rst-content div.deprecated.admonition-success.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.admonition-check .admonition-title::before, .rst-content div.deprecated.admonition-check.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.admonition-done .admonition-title::before, .rst-content div.deprecated.admonition-done.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.alert-success .admonition-title::before, .rst-content div.deprecated.alert-success.deprecated .versionmodified.deprecated::before, .rst-content div.alert.admonition-success .admonition-title::before, .rst-content div.alert.admonition-success.deprecated .versionmodified.deprecated::before, .rst-content div.alert.admonition-check .admonition-title::before, .rst-content div.alert.admonition-check.deprecated .versionmodified.deprecated::before, .rst-content div.alert.admonition-done .admonition-title::before, .rst-content div.alert.admonition-done.deprecated .versionmodified.deprecated::before, .rst-content div.alert.alert-success .admonition-title::before, .rst-content div.alert.alert-success.deprecated .versionmodified.deprecated::before { - color: white; - font-family: "FontAwesome"; - content: ""; -} - -.rst-content .admonition.admonition-success .admonition-title strong, .rst-content .admonition.admonition-success.deprecated .versionmodified.deprecated strong, .rst-content .admonition.admonition-check .admonition-title strong, .rst-content .admonition.admonition-check.deprecated .versionmodified.deprecated strong, .rst-content .admonition.admonition-done .admonition-title strong, .rst-content .admonition.admonition-done.deprecated .versionmodified.deprecated strong, .rst-content .admonition.alert-success .admonition-title strong, .rst-content .admonition.alert-success.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.admonition-success .admonition-title strong, .rst-content div.deprecated.admonition-success.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.admonition-check .admonition-title strong, .rst-content div.deprecated.admonition-check.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.admonition-done .admonition-title strong, .rst-content div.deprecated.admonition-done.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.alert-success .admonition-title strong, .rst-content div.deprecated.alert-success.deprecated .versionmodified.deprecated strong, .rst-content div.alert.admonition-success .admonition-title strong, .rst-content div.alert.admonition-success.deprecated .versionmodified.deprecated strong, .rst-content div.alert.admonition-check .admonition-title strong, .rst-content div.alert.admonition-check.deprecated .versionmodified.deprecated strong, .rst-content div.alert.admonition-done .admonition-title strong, .rst-content div.alert.admonition-done.deprecated .versionmodified.deprecated strong, .rst-content div.alert.alert-success .admonition-title strong, .rst-content div.alert.alert-success.deprecated .versionmodified.deprecated strong { - color: white; -} - -.rst-content .admonition.admonition-question, .rst-content .admonition.admonition-help, .rst-content .admonition.admonition-faq, .rst-content div.deprecated.admonition-question, .rst-content div.deprecated.admonition-help, .rst-content div.deprecated.admonition-faq, .rst-content div.alert.admonition-question, .rst-content div.alert.admonition-help, .rst-content div.alert.admonition-faq { - border-left-color: #3298dc; - background-color: rgba(50, 152, 220, 0.1); -} - -[dir="rtl"] .rst-content .admonition.admonition-question, [dir="rtl"] .rst-content .admonition.admonition-help, [dir="rtl"] .rst-content .admonition.admonition-faq, [dir="rtl"] .rst-content div.deprecated.admonition-question, [dir="rtl"] .rst-content div.deprecated.admonition-help, [dir="rtl"] .rst-content div.deprecated.admonition-faq, [dir="rtl"] .rst-content div.alert.admonition-question, [dir="rtl"] .rst-content div.alert.admonition-help, [dir="rtl"] .rst-content div.alert.admonition-faq { - border-right-color: #3298dc; -} - -.rst-content .admonition.admonition-question .admonition-title, .rst-content .admonition.admonition-question.deprecated .versionmodified.deprecated, .rst-content .admonition.admonition-help .admonition-title, .rst-content .admonition.admonition-help.deprecated .versionmodified.deprecated, .rst-content .admonition.admonition-faq .admonition-title, .rst-content .admonition.admonition-faq.deprecated .versionmodified.deprecated, .rst-content div.deprecated.admonition-question .admonition-title, .rst-content div.deprecated.admonition-question.deprecated .versionmodified.deprecated, .rst-content div.deprecated.admonition-help .admonition-title, .rst-content div.deprecated.admonition-help.deprecated .versionmodified.deprecated, .rst-content div.deprecated.admonition-faq .admonition-title, .rst-content div.deprecated.admonition-faq.deprecated .versionmodified.deprecated, .rst-content div.alert.admonition-question .admonition-title, .rst-content div.alert.admonition-question.deprecated .versionmodified.deprecated, .rst-content div.alert.admonition-help .admonition-title, .rst-content div.alert.admonition-help.deprecated .versionmodified.deprecated, .rst-content div.alert.admonition-faq .admonition-title, .rst-content div.alert.admonition-faq.deprecated .versionmodified.deprecated { - background-color: #3298dc; - border-left-color: #3298dc; - color: white; -} - -[dir="rtl"] .rst-content .admonition.admonition-question .admonition-title, [dir="rtl"] .rst-content .admonition.admonition-question.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content .admonition.admonition-help .admonition-title, [dir="rtl"] .rst-content .admonition.admonition-help.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content .admonition.admonition-faq .admonition-title, [dir="rtl"] .rst-content .admonition.admonition-faq.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.admonition-question .admonition-title, [dir="rtl"] .rst-content div.deprecated.admonition-question.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.admonition-help .admonition-title, [dir="rtl"] .rst-content div.deprecated.admonition-help.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.admonition-faq .admonition-title, [dir="rtl"] .rst-content div.deprecated.admonition-faq.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.admonition-question .admonition-title, [dir="rtl"] .rst-content div.alert.admonition-question.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.admonition-help .admonition-title, [dir="rtl"] .rst-content div.alert.admonition-help.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.admonition-faq .admonition-title, [dir="rtl"] .rst-content div.alert.admonition-faq.deprecated .versionmodified.deprecated { - border-right-color: #3298dc; -} - -.rst-content .admonition.admonition-question .admonition-title::before, .rst-content .admonition.admonition-question.deprecated .versionmodified.deprecated::before, .rst-content .admonition.admonition-help .admonition-title::before, .rst-content .admonition.admonition-help.deprecated .versionmodified.deprecated::before, .rst-content .admonition.admonition-faq .admonition-title::before, .rst-content .admonition.admonition-faq.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.admonition-question .admonition-title::before, .rst-content div.deprecated.admonition-question.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.admonition-help .admonition-title::before, .rst-content div.deprecated.admonition-help.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.admonition-faq .admonition-title::before, .rst-content div.deprecated.admonition-faq.deprecated .versionmodified.deprecated::before, .rst-content div.alert.admonition-question .admonition-title::before, .rst-content div.alert.admonition-question.deprecated .versionmodified.deprecated::before, .rst-content div.alert.admonition-help .admonition-title::before, .rst-content div.alert.admonition-help.deprecated .versionmodified.deprecated::before, .rst-content div.alert.admonition-faq .admonition-title::before, .rst-content div.alert.admonition-faq.deprecated .versionmodified.deprecated::before { - color: white; - font-family: "FontAwesome"; - content: ""; -} - -.rst-content .admonition.admonition-question .admonition-title strong, .rst-content .admonition.admonition-question.deprecated .versionmodified.deprecated strong, .rst-content .admonition.admonition-help .admonition-title strong, .rst-content .admonition.admonition-help.deprecated .versionmodified.deprecated strong, .rst-content .admonition.admonition-faq .admonition-title strong, .rst-content .admonition.admonition-faq.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.admonition-question .admonition-title strong, .rst-content div.deprecated.admonition-question.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.admonition-help .admonition-title strong, .rst-content div.deprecated.admonition-help.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.admonition-faq .admonition-title strong, .rst-content div.deprecated.admonition-faq.deprecated .versionmodified.deprecated strong, .rst-content div.alert.admonition-question .admonition-title strong, .rst-content div.alert.admonition-question.deprecated .versionmodified.deprecated strong, .rst-content div.alert.admonition-help .admonition-title strong, .rst-content div.alert.admonition-help.deprecated .versionmodified.deprecated strong, .rst-content div.alert.admonition-faq .admonition-title strong, .rst-content div.alert.admonition-faq.deprecated .versionmodified.deprecated strong { - color: white; -} - -.rst-content .admonition.warning, .rst-content .admonition.caution, .rst-content .admonition.attention, .rst-content .admonition.admonition-warning, .rst-content .admonition.admonition-caution, .rst-content .admonition.admonition-attention, .rst-content div.deprecated.warning, .rst-content div.deprecated.caution, .rst-content div.deprecated.attention, .rst-content div.deprecated.admonition-warning, .rst-content div.deprecated.admonition-caution, .rst-content div.deprecated.admonition-attention, .rst-content div.alert.warning, .rst-content div.alert.caution, .rst-content div.alert.attention, .rst-content div.alert.admonition-warning, .rst-content div.alert.admonition-caution, .rst-content div.alert.admonition-attention { - border-left-color: #FF9200; - background-color: rgba(255, 146, 0, 0.1); -} - -[dir="rtl"] .rst-content .admonition.warning, [dir="rtl"] .rst-content .admonition.caution, [dir="rtl"] .rst-content .admonition.attention, [dir="rtl"] .rst-content .admonition.admonition-warning, [dir="rtl"] .rst-content .admonition.admonition-caution, [dir="rtl"] .rst-content .admonition.admonition-attention, [dir="rtl"] .rst-content div.deprecated.warning, [dir="rtl"] .rst-content div.deprecated.caution, [dir="rtl"] .rst-content div.deprecated.attention, [dir="rtl"] .rst-content div.deprecated.admonition-warning, [dir="rtl"] .rst-content div.deprecated.admonition-caution, [dir="rtl"] .rst-content div.deprecated.admonition-attention, [dir="rtl"] .rst-content div.alert.warning, [dir="rtl"] .rst-content div.alert.caution, [dir="rtl"] .rst-content div.alert.attention, [dir="rtl"] .rst-content div.alert.admonition-warning, [dir="rtl"] .rst-content div.alert.admonition-caution, [dir="rtl"] .rst-content div.alert.admonition-attention { - border-right-color: #FF9200; -} - -.rst-content .admonition.warning .admonition-title, .rst-content .admonition.warning.deprecated .versionmodified.deprecated, .rst-content .admonition.caution .admonition-title, .rst-content .admonition.caution.deprecated .versionmodified.deprecated, .rst-content .admonition.attention .admonition-title, .rst-content .admonition.attention.deprecated .versionmodified.deprecated, .rst-content .admonition.admonition-warning .admonition-title, .rst-content .admonition.admonition-warning.deprecated .versionmodified.deprecated, .rst-content .admonition.admonition-caution .admonition-title, .rst-content .admonition.admonition-caution.deprecated .versionmodified.deprecated, .rst-content .admonition.admonition-attention .admonition-title, .rst-content .admonition.admonition-attention.deprecated .versionmodified.deprecated, .rst-content div.deprecated.warning .admonition-title, .rst-content div.deprecated.warning.deprecated .versionmodified.deprecated, .rst-content div.deprecated.caution .admonition-title, .rst-content div.deprecated.caution.deprecated .versionmodified.deprecated, .rst-content div.deprecated.attention .admonition-title, .rst-content div.deprecated.attention.deprecated .versionmodified.deprecated, .rst-content div.deprecated.admonition-warning .admonition-title, .rst-content div.deprecated.admonition-warning.deprecated .versionmodified.deprecated, .rst-content div.deprecated.admonition-caution .admonition-title, .rst-content div.deprecated.admonition-caution.deprecated .versionmodified.deprecated, .rst-content div.deprecated.admonition-attention .admonition-title, .rst-content div.deprecated.admonition-attention.deprecated .versionmodified.deprecated, .rst-content div.alert.warning .admonition-title, .rst-content div.alert.warning.deprecated .versionmodified.deprecated, .rst-content div.alert.caution .admonition-title, .rst-content div.alert.caution.deprecated .versionmodified.deprecated, .rst-content div.alert.attention .admonition-title, .rst-content div.alert.attention.deprecated .versionmodified.deprecated, .rst-content div.alert.admonition-warning .admonition-title, .rst-content div.alert.admonition-warning.deprecated .versionmodified.deprecated, .rst-content div.alert.admonition-caution .admonition-title, .rst-content div.alert.admonition-caution.deprecated .versionmodified.deprecated, .rst-content div.alert.admonition-attention .admonition-title, .rst-content div.alert.admonition-attention.deprecated .versionmodified.deprecated { - background-color: #FF9200; - border-left-color: #FF9200; - color: white; -} - -[dir="rtl"] .rst-content .admonition.warning .admonition-title, [dir="rtl"] .rst-content .admonition.warning.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content .admonition.caution .admonition-title, [dir="rtl"] .rst-content .admonition.caution.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content .admonition.attention .admonition-title, [dir="rtl"] .rst-content .admonition.attention.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content .admonition.admonition-warning .admonition-title, [dir="rtl"] .rst-content .admonition.admonition-warning.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content .admonition.admonition-caution .admonition-title, [dir="rtl"] .rst-content .admonition.admonition-caution.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content .admonition.admonition-attention .admonition-title, [dir="rtl"] .rst-content .admonition.admonition-attention.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.warning .admonition-title, [dir="rtl"] .rst-content div.deprecated.warning.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.caution .admonition-title, [dir="rtl"] .rst-content div.deprecated.caution.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.attention .admonition-title, [dir="rtl"] .rst-content div.deprecated.attention.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.admonition-warning .admonition-title, [dir="rtl"] .rst-content div.deprecated.admonition-warning.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.admonition-caution .admonition-title, [dir="rtl"] .rst-content div.deprecated.admonition-caution.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.admonition-attention .admonition-title, [dir="rtl"] .rst-content div.deprecated.admonition-attention.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.warning .admonition-title, [dir="rtl"] .rst-content div.alert.warning.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.caution .admonition-title, [dir="rtl"] .rst-content div.alert.caution.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.attention .admonition-title, [dir="rtl"] .rst-content div.alert.attention.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.admonition-warning .admonition-title, [dir="rtl"] .rst-content div.alert.admonition-warning.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.admonition-caution .admonition-title, [dir="rtl"] .rst-content div.alert.admonition-caution.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.admonition-attention .admonition-title, [dir="rtl"] .rst-content div.alert.admonition-attention.deprecated .versionmodified.deprecated { - border-right-color: #FF9200; -} - -.rst-content .admonition.warning .admonition-title::before, .rst-content .admonition.warning.deprecated .versionmodified.deprecated::before, .rst-content .admonition.caution .admonition-title::before, .rst-content .admonition.caution.deprecated .versionmodified.deprecated::before, .rst-content .admonition.attention .admonition-title::before, .rst-content .admonition.attention.deprecated .versionmodified.deprecated::before, .rst-content .admonition.admonition-warning .admonition-title::before, .rst-content .admonition.admonition-warning.deprecated .versionmodified.deprecated::before, .rst-content .admonition.admonition-caution .admonition-title::before, .rst-content .admonition.admonition-caution.deprecated .versionmodified.deprecated::before, .rst-content .admonition.admonition-attention .admonition-title::before, .rst-content .admonition.admonition-attention.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.warning .admonition-title::before, .rst-content div.deprecated.warning.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.caution .admonition-title::before, .rst-content div.deprecated.caution.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.attention .admonition-title::before, .rst-content div.deprecated.attention.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.admonition-warning .admonition-title::before, .rst-content div.deprecated.admonition-warning.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.admonition-caution .admonition-title::before, .rst-content div.deprecated.admonition-caution.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.admonition-attention .admonition-title::before, .rst-content div.deprecated.admonition-attention.deprecated .versionmodified.deprecated::before, .rst-content div.alert.warning .admonition-title::before, .rst-content div.alert.warning.deprecated .versionmodified.deprecated::before, .rst-content div.alert.caution .admonition-title::before, .rst-content div.alert.caution.deprecated .versionmodified.deprecated::before, .rst-content div.alert.attention .admonition-title::before, .rst-content div.alert.attention.deprecated .versionmodified.deprecated::before, .rst-content div.alert.admonition-warning .admonition-title::before, .rst-content div.alert.admonition-warning.deprecated .versionmodified.deprecated::before, .rst-content div.alert.admonition-caution .admonition-title::before, .rst-content div.alert.admonition-caution.deprecated .versionmodified.deprecated::before, .rst-content div.alert.admonition-attention .admonition-title::before, .rst-content div.alert.admonition-attention.deprecated .versionmodified.deprecated::before { - color: white; - font-family: "FontAwesome"; - content: ""; -} - -.rst-content .admonition.warning .admonition-title strong, .rst-content .admonition.warning.deprecated .versionmodified.deprecated strong, .rst-content .admonition.caution .admonition-title strong, .rst-content .admonition.caution.deprecated .versionmodified.deprecated strong, .rst-content .admonition.attention .admonition-title strong, .rst-content .admonition.attention.deprecated .versionmodified.deprecated strong, .rst-content .admonition.admonition-warning .admonition-title strong, .rst-content .admonition.admonition-warning.deprecated .versionmodified.deprecated strong, .rst-content .admonition.admonition-caution .admonition-title strong, .rst-content .admonition.admonition-caution.deprecated .versionmodified.deprecated strong, .rst-content .admonition.admonition-attention .admonition-title strong, .rst-content .admonition.admonition-attention.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.warning .admonition-title strong, .rst-content div.deprecated.warning.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.caution .admonition-title strong, .rst-content div.deprecated.caution.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.attention .admonition-title strong, .rst-content div.deprecated.attention.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.admonition-warning .admonition-title strong, .rst-content div.deprecated.admonition-warning.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.admonition-caution .admonition-title strong, .rst-content div.deprecated.admonition-caution.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.admonition-attention .admonition-title strong, .rst-content div.deprecated.admonition-attention.deprecated .versionmodified.deprecated strong, .rst-content div.alert.warning .admonition-title strong, .rst-content div.alert.warning.deprecated .versionmodified.deprecated strong, .rst-content div.alert.caution .admonition-title strong, .rst-content div.alert.caution.deprecated .versionmodified.deprecated strong, .rst-content div.alert.attention .admonition-title strong, .rst-content div.alert.attention.deprecated .versionmodified.deprecated strong, .rst-content div.alert.admonition-warning .admonition-title strong, .rst-content div.alert.admonition-warning.deprecated .versionmodified.deprecated strong, .rst-content div.alert.admonition-caution .admonition-title strong, .rst-content div.alert.admonition-caution.deprecated .versionmodified.deprecated strong, .rst-content div.alert.admonition-attention .admonition-title strong, .rst-content div.alert.admonition-attention.deprecated .versionmodified.deprecated strong { - color: white; -} - -.rst-content .admonition.attention, .rst-content .admonition.admonition-attention, .rst-content .admonition.alert-warning, .rst-content div.deprecated.attention, .rst-content div.deprecated.admonition-attention, .rst-content div.deprecated.alert-warning, .rst-content div.alert.attention, .rst-content div.alert.admonition-attention, .rst-content div.alert.alert-warning { - border-left-color: #FF9200; - background-color: rgba(255, 146, 0, 0.1); -} - -[dir="rtl"] .rst-content .admonition.attention, [dir="rtl"] .rst-content .admonition.admonition-attention, [dir="rtl"] .rst-content .admonition.alert-warning, [dir="rtl"] .rst-content div.deprecated.attention, [dir="rtl"] .rst-content div.deprecated.admonition-attention, [dir="rtl"] .rst-content div.deprecated.alert-warning, [dir="rtl"] .rst-content div.alert.attention, [dir="rtl"] .rst-content div.alert.admonition-attention, [dir="rtl"] .rst-content div.alert.alert-warning { - border-right-color: #FF9200; -} - -.rst-content .admonition.attention .admonition-title, .rst-content .admonition.attention.deprecated .versionmodified.deprecated, .rst-content .admonition.admonition-attention .admonition-title, .rst-content .admonition.admonition-attention.deprecated .versionmodified.deprecated, .rst-content .admonition.alert-warning .admonition-title, .rst-content .admonition.alert-warning.deprecated .versionmodified.deprecated, .rst-content div.deprecated.attention .admonition-title, .rst-content div.deprecated.attention.deprecated .versionmodified.deprecated, .rst-content div.deprecated.admonition-attention .admonition-title, .rst-content div.deprecated.admonition-attention.deprecated .versionmodified.deprecated, .rst-content div.deprecated.alert-warning .admonition-title, .rst-content div.deprecated.alert-warning.deprecated .versionmodified.deprecated, .rst-content div.alert.attention .admonition-title, .rst-content div.alert.attention.deprecated .versionmodified.deprecated, .rst-content div.alert.admonition-attention .admonition-title, .rst-content div.alert.admonition-attention.deprecated .versionmodified.deprecated, .rst-content div.alert.alert-warning .admonition-title, .rst-content div.alert.alert-warning.deprecated .versionmodified.deprecated { - background-color: #FF9200; - border-left-color: #FF9200; - color: white; -} - -[dir="rtl"] .rst-content .admonition.attention .admonition-title, [dir="rtl"] .rst-content .admonition.attention.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content .admonition.admonition-attention .admonition-title, [dir="rtl"] .rst-content .admonition.admonition-attention.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content .admonition.alert-warning .admonition-title, [dir="rtl"] .rst-content .admonition.alert-warning.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.attention .admonition-title, [dir="rtl"] .rst-content div.deprecated.attention.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.admonition-attention .admonition-title, [dir="rtl"] .rst-content div.deprecated.admonition-attention.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.alert-warning .admonition-title, [dir="rtl"] .rst-content div.deprecated.alert-warning.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.attention .admonition-title, [dir="rtl"] .rst-content div.alert.attention.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.admonition-attention .admonition-title, [dir="rtl"] .rst-content div.alert.admonition-attention.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.alert-warning .admonition-title, [dir="rtl"] .rst-content div.alert.alert-warning.deprecated .versionmodified.deprecated { - border-right-color: #FF9200; -} - -.rst-content .admonition.attention .admonition-title::before, .rst-content .admonition.attention.deprecated .versionmodified.deprecated::before, .rst-content .admonition.admonition-attention .admonition-title::before, .rst-content .admonition.admonition-attention.deprecated .versionmodified.deprecated::before, .rst-content .admonition.alert-warning .admonition-title::before, .rst-content .admonition.alert-warning.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.attention .admonition-title::before, .rst-content div.deprecated.attention.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.admonition-attention .admonition-title::before, .rst-content div.deprecated.admonition-attention.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.alert-warning .admonition-title::before, .rst-content div.deprecated.alert-warning.deprecated .versionmodified.deprecated::before, .rst-content div.alert.attention .admonition-title::before, .rst-content div.alert.attention.deprecated .versionmodified.deprecated::before, .rst-content div.alert.admonition-attention .admonition-title::before, .rst-content div.alert.admonition-attention.deprecated .versionmodified.deprecated::before, .rst-content div.alert.alert-warning .admonition-title::before, .rst-content div.alert.alert-warning.deprecated .versionmodified.deprecated::before { - color: white; - font-family: "FontAwesome"; - content: ""; -} - -.rst-content .admonition.attention .admonition-title strong, .rst-content .admonition.attention.deprecated .versionmodified.deprecated strong, .rst-content .admonition.admonition-attention .admonition-title strong, .rst-content .admonition.admonition-attention.deprecated .versionmodified.deprecated strong, .rst-content .admonition.alert-warning .admonition-title strong, .rst-content .admonition.alert-warning.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.attention .admonition-title strong, .rst-content div.deprecated.attention.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.admonition-attention .admonition-title strong, .rst-content div.deprecated.admonition-attention.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.alert-warning .admonition-title strong, .rst-content div.deprecated.alert-warning.deprecated .versionmodified.deprecated strong, .rst-content div.alert.attention .admonition-title strong, .rst-content div.alert.attention.deprecated .versionmodified.deprecated strong, .rst-content div.alert.admonition-attention .admonition-title strong, .rst-content div.alert.admonition-attention.deprecated .versionmodified.deprecated strong, .rst-content div.alert.alert-warning .admonition-title strong, .rst-content div.alert.alert-warning.deprecated .versionmodified.deprecated strong { - color: white; -} - -.rst-content .admonition.error, .rst-content .admonition.admonition-failure, .rst-content .admonition.admonition-fail, .rst-content .admonition.admonition-missing, .rst-content .admonition.admonition-error, .rst-content div.deprecated.error, .rst-content div.deprecated.admonition-failure, .rst-content div.deprecated.admonition-fail, .rst-content div.deprecated.admonition-missing, .rst-content div.deprecated.admonition-error, .rst-content div.alert.error, .rst-content div.alert.admonition-failure, .rst-content div.alert.admonition-fail, .rst-content div.alert.admonition-missing, .rst-content div.alert.admonition-error { - border-left-color: #F45F4B; - background-color: rgba(244, 95, 75, 0.1); -} - -[dir="rtl"] .rst-content .admonition.error, [dir="rtl"] .rst-content .admonition.admonition-failure, [dir="rtl"] .rst-content .admonition.admonition-fail, [dir="rtl"] .rst-content .admonition.admonition-missing, [dir="rtl"] .rst-content .admonition.admonition-error, [dir="rtl"] .rst-content div.deprecated.error, [dir="rtl"] .rst-content div.deprecated.admonition-failure, [dir="rtl"] .rst-content div.deprecated.admonition-fail, [dir="rtl"] .rst-content div.deprecated.admonition-missing, [dir="rtl"] .rst-content div.deprecated.admonition-error, [dir="rtl"] .rst-content div.alert.error, [dir="rtl"] .rst-content div.alert.admonition-failure, [dir="rtl"] .rst-content div.alert.admonition-fail, [dir="rtl"] .rst-content div.alert.admonition-missing, [dir="rtl"] .rst-content div.alert.admonition-error { - border-right-color: #F45F4B; -} - -.rst-content .admonition.error .admonition-title, .rst-content .admonition.error.deprecated .versionmodified.deprecated, .rst-content .admonition.admonition-failure .admonition-title, .rst-content .admonition.admonition-failure.deprecated .versionmodified.deprecated, .rst-content .admonition.admonition-fail .admonition-title, .rst-content .admonition.admonition-fail.deprecated .versionmodified.deprecated, .rst-content .admonition.admonition-missing .admonition-title, .rst-content .admonition.admonition-missing.deprecated .versionmodified.deprecated, .rst-content .admonition.admonition-error .admonition-title, .rst-content .admonition.admonition-error.deprecated .versionmodified.deprecated, .rst-content div.deprecated.error .admonition-title, .rst-content div.deprecated.error.deprecated .versionmodified.deprecated, .rst-content div.deprecated.admonition-failure .admonition-title, .rst-content div.deprecated.admonition-failure.deprecated .versionmodified.deprecated, .rst-content div.deprecated.admonition-fail .admonition-title, .rst-content div.deprecated.admonition-fail.deprecated .versionmodified.deprecated, .rst-content div.deprecated.admonition-missing .admonition-title, .rst-content div.deprecated.admonition-missing.deprecated .versionmodified.deprecated, .rst-content div.deprecated.admonition-error .admonition-title, .rst-content div.deprecated.admonition-error.deprecated .versionmodified.deprecated, .rst-content div.alert.error .admonition-title, .rst-content div.alert.error.deprecated .versionmodified.deprecated, .rst-content div.alert.admonition-failure .admonition-title, .rst-content div.alert.admonition-failure.deprecated .versionmodified.deprecated, .rst-content div.alert.admonition-fail .admonition-title, .rst-content div.alert.admonition-fail.deprecated .versionmodified.deprecated, .rst-content div.alert.admonition-missing .admonition-title, .rst-content div.alert.admonition-missing.deprecated .versionmodified.deprecated, .rst-content div.alert.admonition-error .admonition-title, .rst-content div.alert.admonition-error.deprecated .versionmodified.deprecated { - background-color: #F45F4B; - border-left-color: #F45F4B; - color: white; -} - -[dir="rtl"] .rst-content .admonition.error .admonition-title, [dir="rtl"] .rst-content .admonition.error.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content .admonition.admonition-failure .admonition-title, [dir="rtl"] .rst-content .admonition.admonition-failure.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content .admonition.admonition-fail .admonition-title, [dir="rtl"] .rst-content .admonition.admonition-fail.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content .admonition.admonition-missing .admonition-title, [dir="rtl"] .rst-content .admonition.admonition-missing.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content .admonition.admonition-error .admonition-title, [dir="rtl"] .rst-content .admonition.admonition-error.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.error .admonition-title, [dir="rtl"] .rst-content div.deprecated.error.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.admonition-failure .admonition-title, [dir="rtl"] .rst-content div.deprecated.admonition-failure.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.admonition-fail .admonition-title, [dir="rtl"] .rst-content div.deprecated.admonition-fail.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.admonition-missing .admonition-title, [dir="rtl"] .rst-content div.deprecated.admonition-missing.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.admonition-error .admonition-title, [dir="rtl"] .rst-content div.deprecated.admonition-error.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.error .admonition-title, [dir="rtl"] .rst-content div.alert.error.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.admonition-failure .admonition-title, [dir="rtl"] .rst-content div.alert.admonition-failure.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.admonition-fail .admonition-title, [dir="rtl"] .rst-content div.alert.admonition-fail.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.admonition-missing .admonition-title, [dir="rtl"] .rst-content div.alert.admonition-missing.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.admonition-error .admonition-title, [dir="rtl"] .rst-content div.alert.admonition-error.deprecated .versionmodified.deprecated { - border-right-color: #F45F4B; -} - -.rst-content .admonition.error .admonition-title::before, .rst-content .admonition.error.deprecated .versionmodified.deprecated::before, .rst-content .admonition.admonition-failure .admonition-title::before, .rst-content .admonition.admonition-failure.deprecated .versionmodified.deprecated::before, .rst-content .admonition.admonition-fail .admonition-title::before, .rst-content .admonition.admonition-fail.deprecated .versionmodified.deprecated::before, .rst-content .admonition.admonition-missing .admonition-title::before, .rst-content .admonition.admonition-missing.deprecated .versionmodified.deprecated::before, .rst-content .admonition.admonition-error .admonition-title::before, .rst-content .admonition.admonition-error.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.error .admonition-title::before, .rst-content div.deprecated.error.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.admonition-failure .admonition-title::before, .rst-content div.deprecated.admonition-failure.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.admonition-fail .admonition-title::before, .rst-content div.deprecated.admonition-fail.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.admonition-missing .admonition-title::before, .rst-content div.deprecated.admonition-missing.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.admonition-error .admonition-title::before, .rst-content div.deprecated.admonition-error.deprecated .versionmodified.deprecated::before, .rst-content div.alert.error .admonition-title::before, .rst-content div.alert.error.deprecated .versionmodified.deprecated::before, .rst-content div.alert.admonition-failure .admonition-title::before, .rst-content div.alert.admonition-failure.deprecated .versionmodified.deprecated::before, .rst-content div.alert.admonition-fail .admonition-title::before, .rst-content div.alert.admonition-fail.deprecated .versionmodified.deprecated::before, .rst-content div.alert.admonition-missing .admonition-title::before, .rst-content div.alert.admonition-missing.deprecated .versionmodified.deprecated::before, .rst-content div.alert.admonition-error .admonition-title::before, .rst-content div.alert.admonition-error.deprecated .versionmodified.deprecated::before { - color: white; - font-family: "FontAwesome"; - content: ""; -} - -.rst-content .admonition.error .admonition-title strong, .rst-content .admonition.error.deprecated .versionmodified.deprecated strong, .rst-content .admonition.admonition-failure .admonition-title strong, .rst-content .admonition.admonition-failure.deprecated .versionmodified.deprecated strong, .rst-content .admonition.admonition-fail .admonition-title strong, .rst-content .admonition.admonition-fail.deprecated .versionmodified.deprecated strong, .rst-content .admonition.admonition-missing .admonition-title strong, .rst-content .admonition.admonition-missing.deprecated .versionmodified.deprecated strong, .rst-content .admonition.admonition-error .admonition-title strong, .rst-content .admonition.admonition-error.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.error .admonition-title strong, .rst-content div.deprecated.error.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.admonition-failure .admonition-title strong, .rst-content div.deprecated.admonition-failure.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.admonition-fail .admonition-title strong, .rst-content div.deprecated.admonition-fail.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.admonition-missing .admonition-title strong, .rst-content div.deprecated.admonition-missing.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.admonition-error .admonition-title strong, .rst-content div.deprecated.admonition-error.deprecated .versionmodified.deprecated strong, .rst-content div.alert.error .admonition-title strong, .rst-content div.alert.error.deprecated .versionmodified.deprecated strong, .rst-content div.alert.admonition-failure .admonition-title strong, .rst-content div.alert.admonition-failure.deprecated .versionmodified.deprecated strong, .rst-content div.alert.admonition-fail .admonition-title strong, .rst-content div.alert.admonition-fail.deprecated .versionmodified.deprecated strong, .rst-content div.alert.admonition-missing .admonition-title strong, .rst-content div.alert.admonition-missing.deprecated .versionmodified.deprecated strong, .rst-content div.alert.admonition-error .admonition-title strong, .rst-content div.alert.admonition-error.deprecated .versionmodified.deprecated strong { - color: white; -} - -.rst-content .admonition.danger, .rst-content .admonition.admonition-danger, .rst-content .admonition.alert-danger, .rst-content div.deprecated.danger, .rst-content div.deprecated.admonition-danger, .rst-content div.deprecated.alert-danger, .rst-content div.alert.danger, .rst-content div.alert.admonition-danger, .rst-content div.alert.alert-danger { - border-left-color: #F45F4B; - background-color: rgba(244, 95, 75, 0.1); -} - -[dir="rtl"] .rst-content .admonition.danger, [dir="rtl"] .rst-content .admonition.admonition-danger, [dir="rtl"] .rst-content .admonition.alert-danger, [dir="rtl"] .rst-content div.deprecated.danger, [dir="rtl"] .rst-content div.deprecated.admonition-danger, [dir="rtl"] .rst-content div.deprecated.alert-danger, [dir="rtl"] .rst-content div.alert.danger, [dir="rtl"] .rst-content div.alert.admonition-danger, [dir="rtl"] .rst-content div.alert.alert-danger { - border-right-color: #F45F4B; -} - -.rst-content .admonition.danger .admonition-title, .rst-content .admonition.danger.deprecated .versionmodified.deprecated, .rst-content .admonition.admonition-danger .admonition-title, .rst-content .admonition.admonition-danger.deprecated .versionmodified.deprecated, .rst-content .admonition.alert-danger .admonition-title, .rst-content .admonition.alert-danger.deprecated .versionmodified.deprecated, .rst-content div.deprecated.danger .admonition-title, .rst-content div.deprecated.danger.deprecated .versionmodified.deprecated, .rst-content div.deprecated.admonition-danger .admonition-title, .rst-content div.deprecated.admonition-danger.deprecated .versionmodified.deprecated, .rst-content div.deprecated.alert-danger .admonition-title, .rst-content div.deprecated.alert-danger.deprecated .versionmodified.deprecated, .rst-content div.alert.danger .admonition-title, .rst-content div.alert.danger.deprecated .versionmodified.deprecated, .rst-content div.alert.admonition-danger .admonition-title, .rst-content div.alert.admonition-danger.deprecated .versionmodified.deprecated, .rst-content div.alert.alert-danger .admonition-title, .rst-content div.alert.alert-danger.deprecated .versionmodified.deprecated { - background-color: #F45F4B; - border-left-color: #F45F4B; - color: white; -} - -[dir="rtl"] .rst-content .admonition.danger .admonition-title, [dir="rtl"] .rst-content .admonition.danger.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content .admonition.admonition-danger .admonition-title, [dir="rtl"] .rst-content .admonition.admonition-danger.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content .admonition.alert-danger .admonition-title, [dir="rtl"] .rst-content .admonition.alert-danger.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.danger .admonition-title, [dir="rtl"] .rst-content div.deprecated.danger.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.admonition-danger .admonition-title, [dir="rtl"] .rst-content div.deprecated.admonition-danger.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.alert-danger .admonition-title, [dir="rtl"] .rst-content div.deprecated.alert-danger.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.danger .admonition-title, [dir="rtl"] .rst-content div.alert.danger.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.admonition-danger .admonition-title, [dir="rtl"] .rst-content div.alert.admonition-danger.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.alert-danger .admonition-title, [dir="rtl"] .rst-content div.alert.alert-danger.deprecated .versionmodified.deprecated { - border-right-color: #F45F4B; -} - -.rst-content .admonition.danger .admonition-title::before, .rst-content .admonition.danger.deprecated .versionmodified.deprecated::before, .rst-content .admonition.admonition-danger .admonition-title::before, .rst-content .admonition.admonition-danger.deprecated .versionmodified.deprecated::before, .rst-content .admonition.alert-danger .admonition-title::before, .rst-content .admonition.alert-danger.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.danger .admonition-title::before, .rst-content div.deprecated.danger.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.admonition-danger .admonition-title::before, .rst-content div.deprecated.admonition-danger.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.alert-danger .admonition-title::before, .rst-content div.deprecated.alert-danger.deprecated .versionmodified.deprecated::before, .rst-content div.alert.danger .admonition-title::before, .rst-content div.alert.danger.deprecated .versionmodified.deprecated::before, .rst-content div.alert.admonition-danger .admonition-title::before, .rst-content div.alert.admonition-danger.deprecated .versionmodified.deprecated::before, .rst-content div.alert.alert-danger .admonition-title::before, .rst-content div.alert.alert-danger.deprecated .versionmodified.deprecated::before { - color: white; - font-family: "FontAwesome"; - content: ""; -} - -.rst-content .admonition.danger .admonition-title strong, .rst-content .admonition.danger.deprecated .versionmodified.deprecated strong, .rst-content .admonition.admonition-danger .admonition-title strong, .rst-content .admonition.admonition-danger.deprecated .versionmodified.deprecated strong, .rst-content .admonition.alert-danger .admonition-title strong, .rst-content .admonition.alert-danger.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.danger .admonition-title strong, .rst-content div.deprecated.danger.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.admonition-danger .admonition-title strong, .rst-content div.deprecated.admonition-danger.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.alert-danger .admonition-title strong, .rst-content div.deprecated.alert-danger.deprecated .versionmodified.deprecated strong, .rst-content div.alert.danger .admonition-title strong, .rst-content div.alert.danger.deprecated .versionmodified.deprecated strong, .rst-content div.alert.admonition-danger .admonition-title strong, .rst-content div.alert.admonition-danger.deprecated .versionmodified.deprecated strong, .rst-content div.alert.alert-danger .admonition-title strong, .rst-content div.alert.alert-danger.deprecated .versionmodified.deprecated strong { - color: white; -} - -.rst-content .admonition.admonition-bug, .rst-content div.deprecated.admonition-bug, .rst-content div.alert.admonition-bug { - border-left-color: #b86bff; - background-color: rgba(184, 107, 255, 0.1); -} - -[dir="rtl"] .rst-content .admonition.admonition-bug, [dir="rtl"] .rst-content div.deprecated.admonition-bug, [dir="rtl"] .rst-content div.alert.admonition-bug { - border-right-color: #b86bff; -} - -.rst-content .admonition.admonition-bug .admonition-title, .rst-content .admonition.admonition-bug.deprecated .versionmodified.deprecated, .rst-content div.deprecated.admonition-bug .admonition-title, .rst-content div.deprecated.admonition-bug.deprecated .versionmodified.deprecated, .rst-content div.alert.admonition-bug .admonition-title, .rst-content div.alert.admonition-bug.deprecated .versionmodified.deprecated { - background-color: #b86bff; - border-left-color: #b86bff; - color: white; -} - -[dir="rtl"] .rst-content .admonition.admonition-bug .admonition-title, [dir="rtl"] .rst-content .admonition.admonition-bug.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.admonition-bug .admonition-title, [dir="rtl"] .rst-content div.deprecated.admonition-bug.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.admonition-bug .admonition-title, [dir="rtl"] .rst-content div.alert.admonition-bug.deprecated .versionmodified.deprecated { - border-right-color: #b86bff; -} - -.rst-content .admonition.admonition-bug .admonition-title::before, .rst-content .admonition.admonition-bug.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.admonition-bug .admonition-title::before, .rst-content div.deprecated.admonition-bug.deprecated .versionmodified.deprecated::before, .rst-content div.alert.admonition-bug .admonition-title::before, .rst-content div.alert.admonition-bug.deprecated .versionmodified.deprecated::before { - color: white; - font-family: "FontAwesome"; - content: ""; -} - -.rst-content .admonition.admonition-bug .admonition-title strong, .rst-content .admonition.admonition-bug.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.admonition-bug .admonition-title strong, .rst-content div.deprecated.admonition-bug.deprecated .versionmodified.deprecated strong, .rst-content div.alert.admonition-bug .admonition-title strong, .rst-content div.alert.admonition-bug.deprecated .versionmodified.deprecated strong { - color: white; -} - -.rst-content .admonition.admonition-example, .rst-content div.deprecated.admonition-example, .rst-content div.alert.admonition-example { - border-left-color: #007ee7; - background-color: rgba(0, 126, 231, 0.1); -} - -[dir="rtl"] .rst-content .admonition.admonition-example, [dir="rtl"] .rst-content div.deprecated.admonition-example, [dir="rtl"] .rst-content div.alert.admonition-example { - border-right-color: #007ee7; -} - -.rst-content .admonition.admonition-example .admonition-title, .rst-content .admonition.admonition-example.deprecated .versionmodified.deprecated, .rst-content div.deprecated.admonition-example .admonition-title, .rst-content div.deprecated.admonition-example.deprecated .versionmodified.deprecated, .rst-content div.alert.admonition-example .admonition-title, .rst-content div.alert.admonition-example.deprecated .versionmodified.deprecated { - background-color: #007ee7; - border-left-color: #007ee7; - color: white; -} - -[dir="rtl"] .rst-content .admonition.admonition-example .admonition-title, [dir="rtl"] .rst-content .admonition.admonition-example.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.admonition-example .admonition-title, [dir="rtl"] .rst-content div.deprecated.admonition-example.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.admonition-example .admonition-title, [dir="rtl"] .rst-content div.alert.admonition-example.deprecated .versionmodified.deprecated { - border-right-color: #007ee7; -} - -.rst-content .admonition.admonition-example .admonition-title::before, .rst-content .admonition.admonition-example.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.admonition-example .admonition-title::before, .rst-content div.deprecated.admonition-example.deprecated .versionmodified.deprecated::before, .rst-content div.alert.admonition-example .admonition-title::before, .rst-content div.alert.admonition-example.deprecated .versionmodified.deprecated::before { - color: white; - font-family: "FontAwesome"; - content: ""; -} - -.rst-content .admonition.admonition-example .admonition-title strong, .rst-content .admonition.admonition-example.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.admonition-example .admonition-title strong, .rst-content div.deprecated.admonition-example.deprecated .versionmodified.deprecated strong, .rst-content div.alert.admonition-example .admonition-title strong, .rst-content div.alert.admonition-example.deprecated .versionmodified.deprecated strong { - color: white; -} - -.rst-content .admonition.admonition-quote, .rst-content .admonition.admonition-cite, .rst-content div.deprecated.admonition-quote, .rst-content div.deprecated.admonition-cite, .rst-content div.alert.admonition-quote, .rst-content div.alert.admonition-cite { - border-left-color: #808080; - background-color: rgba(128, 128, 128, 0.1); -} - -[dir="rtl"] .rst-content .admonition.admonition-quote, [dir="rtl"] .rst-content .admonition.admonition-cite, [dir="rtl"] .rst-content div.deprecated.admonition-quote, [dir="rtl"] .rst-content div.deprecated.admonition-cite, [dir="rtl"] .rst-content div.alert.admonition-quote, [dir="rtl"] .rst-content div.alert.admonition-cite { - border-right-color: #808080; -} - -.rst-content .admonition.admonition-quote .admonition-title, .rst-content .admonition.admonition-quote.deprecated .versionmodified.deprecated, .rst-content .admonition.admonition-cite .admonition-title, .rst-content .admonition.admonition-cite.deprecated .versionmodified.deprecated, .rst-content div.deprecated.admonition-quote .admonition-title, .rst-content div.deprecated.admonition-quote.deprecated .versionmodified.deprecated, .rst-content div.deprecated.admonition-cite .admonition-title, .rst-content div.deprecated.admonition-cite.deprecated .versionmodified.deprecated, .rst-content div.alert.admonition-quote .admonition-title, .rst-content div.alert.admonition-quote.deprecated .versionmodified.deprecated, .rst-content div.alert.admonition-cite .admonition-title, .rst-content div.alert.admonition-cite.deprecated .versionmodified.deprecated { - background-color: #808080; - border-left-color: #808080; - color: white; -} - -[dir="rtl"] .rst-content .admonition.admonition-quote .admonition-title, [dir="rtl"] .rst-content .admonition.admonition-quote.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content .admonition.admonition-cite .admonition-title, [dir="rtl"] .rst-content .admonition.admonition-cite.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.admonition-quote .admonition-title, [dir="rtl"] .rst-content div.deprecated.admonition-quote.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.admonition-cite .admonition-title, [dir="rtl"] .rst-content div.deprecated.admonition-cite.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.admonition-quote .admonition-title, [dir="rtl"] .rst-content div.alert.admonition-quote.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.admonition-cite .admonition-title, [dir="rtl"] .rst-content div.alert.admonition-cite.deprecated .versionmodified.deprecated { - border-right-color: #808080; -} - -.rst-content .admonition.admonition-quote .admonition-title::before, .rst-content .admonition.admonition-quote.deprecated .versionmodified.deprecated::before, .rst-content .admonition.admonition-cite .admonition-title::before, .rst-content .admonition.admonition-cite.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.admonition-quote .admonition-title::before, .rst-content div.deprecated.admonition-quote.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.admonition-cite .admonition-title::before, .rst-content div.deprecated.admonition-cite.deprecated .versionmodified.deprecated::before, .rst-content div.alert.admonition-quote .admonition-title::before, .rst-content div.alert.admonition-quote.deprecated .versionmodified.deprecated::before, .rst-content div.alert.admonition-cite .admonition-title::before, .rst-content div.alert.admonition-cite.deprecated .versionmodified.deprecated::before { - color: white; - font-family: "FontAwesome"; - content: ""; -} - -.rst-content .admonition.admonition-quote .admonition-title strong, .rst-content .admonition.admonition-quote.deprecated .versionmodified.deprecated strong, .rst-content .admonition.admonition-cite .admonition-title strong, .rst-content .admonition.admonition-cite.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.admonition-quote .admonition-title strong, .rst-content div.deprecated.admonition-quote.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.admonition-cite .admonition-title strong, .rst-content div.deprecated.admonition-cite.deprecated .versionmodified.deprecated strong, .rst-content div.alert.admonition-quote .admonition-title strong, .rst-content div.alert.admonition-quote.deprecated .versionmodified.deprecated strong, .rst-content div.alert.admonition-cite .admonition-title strong, .rst-content div.alert.admonition-cite.deprecated .versionmodified.deprecated strong { - color: white; -} - -.rst-content .admonition.deprecated, .rst-content .admonition.admonition-deprecated, .rst-content div.deprecated.deprecated, .rst-content div.deprecated.admonition-deprecated, .rst-content div.alert.deprecated, .rst-content div.alert.admonition-deprecated { - border-left-color: #808080; - background-color: rgba(128, 128, 128, 0.1); -} - -[dir="rtl"] .rst-content .admonition.deprecated, [dir="rtl"] .rst-content .admonition.admonition-deprecated, [dir="rtl"] .rst-content div.deprecated.deprecated, [dir="rtl"] .rst-content div.deprecated.admonition-deprecated, [dir="rtl"] .rst-content div.alert.deprecated, [dir="rtl"] .rst-content div.alert.admonition-deprecated { - border-right-color: #808080; -} - -.rst-content .admonition.deprecated .admonition-title, .rst-content .admonition.deprecated.deprecated .versionmodified.deprecated, .rst-content .admonition.admonition-deprecated .admonition-title, .rst-content .admonition.admonition-deprecated.deprecated .versionmodified.deprecated, .rst-content div.deprecated.deprecated .admonition-title, .rst-content div.deprecated.deprecated.deprecated .versionmodified.deprecated, .rst-content div.deprecated.admonition-deprecated .admonition-title, .rst-content div.deprecated.admonition-deprecated.deprecated .versionmodified.deprecated, .rst-content div.alert.deprecated .admonition-title, .rst-content div.alert.deprecated.deprecated .versionmodified.deprecated, .rst-content div.alert.admonition-deprecated .admonition-title, .rst-content div.alert.admonition-deprecated.deprecated .versionmodified.deprecated { - background-color: #808080; - border-left-color: #808080; - color: white; -} - -[dir="rtl"] .rst-content .admonition.deprecated .admonition-title, [dir="rtl"] .rst-content .admonition.deprecated.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content .admonition.admonition-deprecated .admonition-title, [dir="rtl"] .rst-content .admonition.admonition-deprecated.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.deprecated .admonition-title, [dir="rtl"] .rst-content div.deprecated.deprecated.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.admonition-deprecated .admonition-title, [dir="rtl"] .rst-content div.deprecated.admonition-deprecated.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.deprecated .admonition-title, [dir="rtl"] .rst-content div.alert.deprecated.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.admonition-deprecated .admonition-title, [dir="rtl"] .rst-content div.alert.admonition-deprecated.deprecated .versionmodified.deprecated { - border-right-color: #808080; -} - -.rst-content .admonition.deprecated .admonition-title::before, .rst-content .admonition.deprecated.deprecated .versionmodified.deprecated::before, .rst-content .admonition.admonition-deprecated .admonition-title::before, .rst-content .admonition.admonition-deprecated.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.deprecated .admonition-title::before, .rst-content div.deprecated.deprecated.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.admonition-deprecated .admonition-title::before, .rst-content div.deprecated.admonition-deprecated.deprecated .versionmodified.deprecated::before, .rst-content div.alert.deprecated .admonition-title::before, .rst-content div.alert.deprecated.deprecated .versionmodified.deprecated::before, .rst-content div.alert.admonition-deprecated .admonition-title::before, .rst-content div.alert.admonition-deprecated.deprecated .versionmodified.deprecated::before { - color: white; - font-family: "FontAwesome"; - content: ""; -} - -.rst-content .admonition.deprecated .admonition-title strong, .rst-content .admonition.deprecated.deprecated .versionmodified.deprecated strong, .rst-content .admonition.admonition-deprecated .admonition-title strong, .rst-content .admonition.admonition-deprecated.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.deprecated .admonition-title strong, .rst-content div.deprecated.deprecated.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.admonition-deprecated .admonition-title strong, .rst-content div.deprecated.admonition-deprecated.deprecated .versionmodified.deprecated strong, .rst-content div.alert.deprecated .admonition-title strong, .rst-content div.alert.deprecated.deprecated .versionmodified.deprecated strong, .rst-content div.alert.admonition-deprecated .admonition-title strong, .rst-content div.alert.admonition-deprecated.deprecated .versionmodified.deprecated strong { - color: white; -} - -.rst-content .admonition.experimental, .rst-content .admonition.admonition-experimental, .rst-content .admonition.admonition-experiment, .rst-content .admonition.admonition-experiments, .rst-content div.deprecated.experimental, .rst-content div.deprecated.admonition-experimental, .rst-content div.deprecated.admonition-experiment, .rst-content div.deprecated.admonition-experiments, .rst-content div.alert.experimental, .rst-content div.alert.admonition-experimental, .rst-content div.alert.admonition-experiment, .rst-content div.alert.admonition-experiments { - border-left-color: #FF9200; - background-color: rgba(255, 146, 0, 0.1); -} - -[dir="rtl"] .rst-content .admonition.experimental, [dir="rtl"] .rst-content .admonition.admonition-experimental, [dir="rtl"] .rst-content .admonition.admonition-experiment, [dir="rtl"] .rst-content .admonition.admonition-experiments, [dir="rtl"] .rst-content div.deprecated.experimental, [dir="rtl"] .rst-content div.deprecated.admonition-experimental, [dir="rtl"] .rst-content div.deprecated.admonition-experiment, [dir="rtl"] .rst-content div.deprecated.admonition-experiments, [dir="rtl"] .rst-content div.alert.experimental, [dir="rtl"] .rst-content div.alert.admonition-experimental, [dir="rtl"] .rst-content div.alert.admonition-experiment, [dir="rtl"] .rst-content div.alert.admonition-experiments { - border-right-color: #FF9200; -} - -.rst-content .admonition.experimental .admonition-title, .rst-content .admonition.experimental.deprecated .versionmodified.deprecated, .rst-content .admonition.admonition-experimental .admonition-title, .rst-content .admonition.admonition-experimental.deprecated .versionmodified.deprecated, .rst-content .admonition.admonition-experiment .admonition-title, .rst-content .admonition.admonition-experiment.deprecated .versionmodified.deprecated, .rst-content .admonition.admonition-experiments .admonition-title, .rst-content .admonition.admonition-experiments.deprecated .versionmodified.deprecated, .rst-content div.deprecated.experimental .admonition-title, .rst-content div.deprecated.experimental.deprecated .versionmodified.deprecated, .rst-content div.deprecated.admonition-experimental .admonition-title, .rst-content div.deprecated.admonition-experimental.deprecated .versionmodified.deprecated, .rst-content div.deprecated.admonition-experiment .admonition-title, .rst-content div.deprecated.admonition-experiment.deprecated .versionmodified.deprecated, .rst-content div.deprecated.admonition-experiments .admonition-title, .rst-content div.deprecated.admonition-experiments.deprecated .versionmodified.deprecated, .rst-content div.alert.experimental .admonition-title, .rst-content div.alert.experimental.deprecated .versionmodified.deprecated, .rst-content div.alert.admonition-experimental .admonition-title, .rst-content div.alert.admonition-experimental.deprecated .versionmodified.deprecated, .rst-content div.alert.admonition-experiment .admonition-title, .rst-content div.alert.admonition-experiment.deprecated .versionmodified.deprecated, .rst-content div.alert.admonition-experiments .admonition-title, .rst-content div.alert.admonition-experiments.deprecated .versionmodified.deprecated { - background-color: #FF9200; - border-left-color: #FF9200; - color: white; -} - -[dir="rtl"] .rst-content .admonition.experimental .admonition-title, [dir="rtl"] .rst-content .admonition.experimental.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content .admonition.admonition-experimental .admonition-title, [dir="rtl"] .rst-content .admonition.admonition-experimental.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content .admonition.admonition-experiment .admonition-title, [dir="rtl"] .rst-content .admonition.admonition-experiment.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content .admonition.admonition-experiments .admonition-title, [dir="rtl"] .rst-content .admonition.admonition-experiments.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.experimental .admonition-title, [dir="rtl"] .rst-content div.deprecated.experimental.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.admonition-experimental .admonition-title, [dir="rtl"] .rst-content div.deprecated.admonition-experimental.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.admonition-experiment .admonition-title, [dir="rtl"] .rst-content div.deprecated.admonition-experiment.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.admonition-experiments .admonition-title, [dir="rtl"] .rst-content div.deprecated.admonition-experiments.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.experimental .admonition-title, [dir="rtl"] .rst-content div.alert.experimental.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.admonition-experimental .admonition-title, [dir="rtl"] .rst-content div.alert.admonition-experimental.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.admonition-experiment .admonition-title, [dir="rtl"] .rst-content div.alert.admonition-experiment.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.admonition-experiments .admonition-title, [dir="rtl"] .rst-content div.alert.admonition-experiments.deprecated .versionmodified.deprecated { - border-right-color: #FF9200; -} - -.rst-content .admonition.experimental .admonition-title::before, .rst-content .admonition.experimental.deprecated .versionmodified.deprecated::before, .rst-content .admonition.admonition-experimental .admonition-title::before, .rst-content .admonition.admonition-experimental.deprecated .versionmodified.deprecated::before, .rst-content .admonition.admonition-experiment .admonition-title::before, .rst-content .admonition.admonition-experiment.deprecated .versionmodified.deprecated::before, .rst-content .admonition.admonition-experiments .admonition-title::before, .rst-content .admonition.admonition-experiments.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.experimental .admonition-title::before, .rst-content div.deprecated.experimental.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.admonition-experimental .admonition-title::before, .rst-content div.deprecated.admonition-experimental.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.admonition-experiment .admonition-title::before, .rst-content div.deprecated.admonition-experiment.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.admonition-experiments .admonition-title::before, .rst-content div.deprecated.admonition-experiments.deprecated .versionmodified.deprecated::before, .rst-content div.alert.experimental .admonition-title::before, .rst-content div.alert.experimental.deprecated .versionmodified.deprecated::before, .rst-content div.alert.admonition-experimental .admonition-title::before, .rst-content div.alert.admonition-experimental.deprecated .versionmodified.deprecated::before, .rst-content div.alert.admonition-experiment .admonition-title::before, .rst-content div.alert.admonition-experiment.deprecated .versionmodified.deprecated::before, .rst-content div.alert.admonition-experiments .admonition-title::before, .rst-content div.alert.admonition-experiments.deprecated .versionmodified.deprecated::before { - color: white; - font-family: "FontAwesome"; - content: ""; -} - -.rst-content .admonition.experimental .admonition-title strong, .rst-content .admonition.experimental.deprecated .versionmodified.deprecated strong, .rst-content .admonition.admonition-experimental .admonition-title strong, .rst-content .admonition.admonition-experimental.deprecated .versionmodified.deprecated strong, .rst-content .admonition.admonition-experiment .admonition-title strong, .rst-content .admonition.admonition-experiment.deprecated .versionmodified.deprecated strong, .rst-content .admonition.admonition-experiments .admonition-title strong, .rst-content .admonition.admonition-experiments.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.experimental .admonition-title strong, .rst-content div.deprecated.experimental.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.admonition-experimental .admonition-title strong, .rst-content div.deprecated.admonition-experimental.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.admonition-experiment .admonition-title strong, .rst-content div.deprecated.admonition-experiment.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.admonition-experiments .admonition-title strong, .rst-content div.deprecated.admonition-experiments.deprecated .versionmodified.deprecated strong, .rst-content div.alert.experimental .admonition-title strong, .rst-content div.alert.experimental.deprecated .versionmodified.deprecated strong, .rst-content div.alert.admonition-experimental .admonition-title strong, .rst-content div.alert.admonition-experimental.deprecated .versionmodified.deprecated strong, .rst-content div.alert.admonition-experiment .admonition-title strong, .rst-content div.alert.admonition-experiment.deprecated .versionmodified.deprecated strong, .rst-content div.alert.admonition-experiments .admonition-title strong, .rst-content div.alert.admonition-experiments.deprecated .versionmodified.deprecated strong { - color: white; -} - -.rst-content div.deprecated > p { - margin-top: 0; - max-width: unset; -} - -.rst-content .versionmodified.deprecated { - display: block; - margin: 0 -0.75rem 0.75rem -1rem; -} - -.rst-content .admonition-title { - margin: 0 -0.75rem 0 -1rem; -} - -.rst-content .admonition-title, .rst-content .versionmodified.deprecated { - position: relative; - padding: 0.5rem 0.75rem 0.5rem 2.5rem; - font-weight: 700; - background-color: #ca6500; - border-left: 0.25rem solid #ca6500; -} - -[dir="rtl"] .rst-content .admonition-title, [dir="rtl"] .rst-content .versionmodified.deprecated { - margin: 0 -1rem 0 -0.75rem; - padding: 0.5rem 2.5rem 0.5rem 0.75rem; - border-right: 0.25rem solid #ca6500; - border-left: none; -} - -html .rst-content .admonition-title:last-child.admonition-title, html .rst-content .versionmodified.deprecated:last-child.admonition-title { - margin-bottom: 0; -} - -html .rst-content .admonition-title:last-child.versionmodified.deprecated, html .rst-content .versionmodified.deprecated:last-child.versionmodified.deprecated { - margin-bottom: -1rem; -} - -.rst-content .admonition-title::before, .rst-content .versionmodified.deprecated::before { - position: absolute; - left: 0.75rem; - width: 1.25rem; - height: 1.25rem; - font-family: "FontAwesome"; - content: "\f12a"; -} - -[dir="rtl"] .rst-content .admonition-title::before, [dir="rtl"] .rst-content .versionmodified.deprecated::before { - right: 0.75rem; - left: initial; -} - -.rst-content .admonition-title + .tabbed-set:last-child, .rst-content .versionmodified.deprecated + .tabbed-set:last-child { - margin-top: 0; -} - -@media screen and (max-width: 768px) { - .rst-content { - width: 96vw; - margin-left: 2vw; - margin-right: 2vw; - } -} - -@media screen and (min-width: 769px) and (max-width: 1023px) { - .rst-content { - margin-left: 2vw; - } -} - -@media screen and (min-width: 1024px) { - .rst-content { - max-width: 42.5rem; - margin: auto; - } -} - -header, .navbar.is-primary.has-shadow { - box-shadow: 0 2px 3px 0 #FF9200; -} - -.navbar.is-fixed-bottom, .navbar.is-fixed-top { - height: 4rem; -} - -.navbar.is-fixed-bottom .navbar-item img, .navbar.is-fixed-top .navbar-item img { - max-height: 3rem; -} - -.burger.is-light { - color: whitesmoke; -} - -@media screen and (max-width: 768px) { - .burger { - position: fixed; - top: 0; - left: 90vw; - z-index: 10; - width: 10vw; - } - .burger span:nth-child(4) { - opacity: 0%; - transition: opacity 0.5s; - background-color: black; - position: fixed; - left: 0; - top: 0; - width: 100vw; - height: 100vh; - z-index: 11; - pointer-events: none; - } - #drawer-toggle:checked { - /* show navbar-menu on phones and tablets */ - /* make navbar-burger become cross on screen less than 1024px */ - } - #drawer-toggle:checked ~ #drawer { - transform: translate(20rem, 0); - } - #drawer-toggle:checked + .burger span:nth-child(1) { - transform: translateY(5px) rotate(45deg); - } - #drawer-toggle:checked + .burger span:nth-child(2) { - opacity: 0; - } - #drawer-toggle:checked + .burger span:nth-child(3) { - transform: translateY(-5px) rotate(-45deg); - } - #drawer-toggle:checked + .burger span:nth-child(4) { - opacity: 50%; - pointer-events: auto; - } - #drawer { - left: -20rem; - transition: transform 0.5s; - width: 20rem; - max-width: 90vw; - top: 0; - height: 100vh; - background-color: #FFFFFF; - position: fixed; - display: block; - z-index: 12; - } - #drawer .ff-globaltoc { - position: unset; - } - header { - overflow-wrap: break-word; - } -} - -.has-text-light .breadcrumb a { - color: #fff; -} - -.has-text-light .breadcrumb a code { - color: #fff; - background-color: transparent; -} - -.has-text-light .breadcrumb a:hover { - color: #ffb264; -} - -.has-text-light .breadcrumb li.is-active a { - color: #ffb264; -} - -.has-text-light .breadcrumb li + li::before { - color: #fff; -} - -.clip-siblings { - background: #FFFFFF; - position: relative; -} - -.ff-localtoc, .ff-globaltoc { - position: sticky; - padding: 0.5rem; - overflow-y: auto; - top: 0; - padding-top: 4.5rem; - margin-top: -4rem; - max-height: 100vh; - -ms-overflow-style: none; - scrollbar-width: none; -} - -@media screen and (max-width: 769px) { - .ff-localtoc, .ff-globaltoc { - position: fixed; - top: 4rem; - } -} - -.ff-localtoc::-webkit-scrollbar, .ff-globaltoc::-webkit-scrollbar { - display: none; -} - -.menu { - overflow-wrap: break-word; -} - -.menu code { - background-color: transparent; - color: unset; -} - -body { - min-height: 100vh; - display: flex; - flex-direction: column; - font-family: 'PT Sans', Helvetica, Arial, 'sans-serif'; -} - -header { - z-index: 1; - background-color: #FF9200; -} - -header .nav-title { - padding-left: 0.5rem; - align-items: center; - display: inline-flex; -} - -header .navbar.is-primary .navbar-brand > a.navbar-item:hover { - background-color: #e68300; -} - -header .nav-tabs a { - color: white; - padding-top: 0.5rem; - padding-bottom: 0.5rem; -} - -header .nav-tabs a:hover { - color: #ca6500; -} - -header .is-hidden-tablet.nav-title { - max-width: 90vw; -} - -header .navbar > .navbar-end { - flex: none; - margin-left: auto; - margin-top: auto; - margin-bottom: auto; -} - -header .nav-search input { - transition: width 0.2s, background-color 0.2s; -} - -@media screen and (max-width: 1215px) { - header .nav-search .control { - position: relative; - height: 2.5em; - } - header .nav-search .control input { - background-color: unset; - width: 2.5em; - position: absolute; - right: 0; - } - header .nav-search .control input:hover, header .nav-search .control input:focus, header .nav-search .control input:active { - width: 15rem; - max-width: 15rem; - } - header .nav-search .control input:hover { - background-color: #cc7500; - color: white; - } - header .nav-search .control input:hover::placeholder { - color: #dbdbdb; - } - header .nav-search .control input:focus, header .nav-search .control input:active { - background-color: white; - color: #cc7500; - } - header .nav-search .control input:focus::placeholder, header .nav-search .control input:active::placeholder { - color: rgba(54, 54, 54, 0.3); - } - header .nav-search .control.has-icons-right { - padding-right: 0; - } - header .nav-search .control.has-icons-left { - padding-left: 0; - } -} - -@media screen and (min-width: 1216px) { - header .nav-search input { - background-color: #cc7500; - color: white; - } - header .nav-search input::placeholder { - color: #dbdbdb; - } - header .nav-search input:hover, header .nav-search input:focus, header .nav-search input:active { - background-color: white; - color: #cc7500; - } - header .nav-search input:hover::placeholder, header .nav-search input:focus::placeholder, header .nav-search input:active::placeholder { - color: rgba(54, 54, 54, 0.3); - } -} - -main { - padding-top: 1rem; -} - -footer { - margin-top: auto; - overflow-wrap: break-word; -} - -footer nav { - margin-bottom: 3rem !important; -} - -footer .fineprint { - font-size: 0.8em; - font-weight: 100; -} - -footer .fineprint a { - color: rgba(0, 0, 0, 0.7); - font-weight: 500; -} - -footer .fineprint a:hover { - color: #ca6500; -} - -footer .fineprint .copyright { - font-weight: 400; - margin-bottom: 1rem; -} - -footer .footer-content { - max-width: 1408px; - margin-left: auto; - margin-right: auto; -} - -@media screen and (min-width: 769px) { - footer .socials { - margin-top: auto; - text-align: right; - } -} - -footer .socials .icon { - border: solid 1px; - border-radius: 50%; -} - -.ff-localtoc a { - color: rgba(0, 0, 0, 0.87); - display: block; -} - -.ff-localtoc a:hover { - color: #ca6500; -} - -.ff-localtoc > ul { - padding-left: 0.5rem; -} - -.ff-localtoc > ul ul { - padding-top: 0.2rem; - padding-left: 1rem; - font-size: 0.9em; -} - -.ff-localtoc > ul li { - padding-bottom: 0.2rem; -} - -.ff-localtoc > ul li:last-child { - padding-bottom: 0; -} - -@media screen and (min-width: 1407px) { - main { - max-width: 1508px; - width: 100%; - margin-left: auto; - margin-right: auto; - } -} - -@media screen and (max-width: 1408px) { - .menu-list li ul { - padding-left: 0; - } -} - -a:hover:not(.is-active) code, a:hover:not(.is-active) pre { - color: #ca6500; -} - -.navbar-burger-spacer { - width: 4rem; - display: inline-block; -} - -main > .columns { - max-width: 100vw; -} - -.wy-nav-content-wrap { - background: #fcfcfc; -} - -.wy-nav-top { - background: #343131; -} - -.wy-side-nav-search { - background-color: white; -} - -.wy-side-nav-search > a { - color: #343131; -} - -.wy-side-nav-search > div.version { - color: #808080; -} - -.wy-side-nav-search input[type="text"] { - border-color: #808080; -} - -.wy-menu { - overflow-wrap: break-word; - white-space: inherit; -} - -.wy-menu .caption-text { - color: #FF9200; -} - -.wy-menu a:hover, .wy-menu a:hover:not(.is-active) code { - color: #FF9200; -} - -code { - white-space: inherit; -} - -.rst-content .guilabel { - background: #FFEBD0; - border: 1px solid #808080; -} - -.rst-content code.literal { - color: #ca6500; - background-color: #FFFFFF; -} - -.rst-content dt code.literal { - font-weight: 700; -} - -.wy-table-responsive table td { - white-space: inherit; -} - -.dataTables_wrapper.no-footer .wy-table-responsive { - overflow: unset; -} - -div[role=navigation] > .wy-breadcrumbs { - margin: 0; -} - -div[role=navigation] > .wy-breadcrumbs .breadcrumb-item { - margin-top: 0; - margin-bottom: 0; - padding-top: 0; - padding-bottom: 0; -} - diff --git a/docs/_build/html/_static/sphinx_highlight.js b/docs/_build/html/_static/sphinx_highlight.js deleted file mode 100644 index 8a96c69..0000000 --- a/docs/_build/html/_static/sphinx_highlight.js +++ /dev/null @@ -1,154 +0,0 @@ -/* Highlighting utilities for Sphinx HTML documentation. */ -"use strict"; - -const SPHINX_HIGHLIGHT_ENABLED = true - -/** - * highlight a given string on a node by wrapping it in - * span elements with the given class name. - */ -const _highlight = (node, addItems, text, className) => { - if (node.nodeType === Node.TEXT_NODE) { - const val = node.nodeValue; - const parent = node.parentNode; - const pos = val.toLowerCase().indexOf(text); - if ( - pos >= 0 && - !parent.classList.contains(className) && - !parent.classList.contains("nohighlight") - ) { - let span; - - const closestNode = parent.closest("body, svg, foreignObject"); - const isInSVG = closestNode && closestNode.matches("svg"); - if (isInSVG) { - span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); - } else { - span = document.createElement("span"); - span.classList.add(className); - } - - span.appendChild(document.createTextNode(val.substr(pos, text.length))); - const rest = document.createTextNode(val.substr(pos + text.length)); - parent.insertBefore( - span, - parent.insertBefore( - rest, - node.nextSibling - ) - ); - node.nodeValue = val.substr(0, pos); - /* There may be more occurrences of search term in this node. So call this - * function recursively on the remaining fragment. - */ - _highlight(rest, addItems, text, className); - - if (isInSVG) { - const rect = document.createElementNS( - "http://www.w3.org/2000/svg", - "rect" - ); - const bbox = parent.getBBox(); - rect.x.baseVal.value = bbox.x; - rect.y.baseVal.value = bbox.y; - rect.width.baseVal.value = bbox.width; - rect.height.baseVal.value = bbox.height; - rect.setAttribute("class", className); - addItems.push({ parent: parent, target: rect }); - } - } - } else if (node.matches && !node.matches("button, select, textarea")) { - node.childNodes.forEach((el) => _highlight(el, addItems, text, className)); - } -}; -const _highlightText = (thisNode, text, className) => { - let addItems = []; - _highlight(thisNode, addItems, text, className); - addItems.forEach((obj) => - obj.parent.insertAdjacentElement("beforebegin", obj.target) - ); -}; - -/** - * Small JavaScript module for the documentation. - */ -const SphinxHighlight = { - - /** - * highlight the search words provided in localstorage in the text - */ - highlightSearchWords: () => { - if (!SPHINX_HIGHLIGHT_ENABLED) return; // bail if no highlight - - // get and clear terms from localstorage - const url = new URL(window.location); - const highlight = - localStorage.getItem("sphinx_highlight_terms") - || url.searchParams.get("highlight") - || ""; - localStorage.removeItem("sphinx_highlight_terms") - url.searchParams.delete("highlight"); - window.history.replaceState({}, "", url); - - // get individual terms from highlight string - const terms = highlight.toLowerCase().split(/\s+/).filter(x => x); - if (terms.length === 0) return; // nothing to do - - // There should never be more than one element matching "div.body" - const divBody = document.querySelectorAll("div.body"); - const body = divBody.length ? divBody[0] : document.querySelector("body"); - window.setTimeout(() => { - terms.forEach((term) => _highlightText(body, term, "highlighted")); - }, 10); - - const searchBox = document.getElementById("searchbox"); - if (searchBox === null) return; - searchBox.appendChild( - document - .createRange() - .createContextualFragment( - '" - ) - ); - }, - - /** - * helper function to hide the search marks again - */ - hideSearchWords: () => { - document - .querySelectorAll("#searchbox .highlight-link") - .forEach((el) => el.remove()); - document - .querySelectorAll("span.highlighted") - .forEach((el) => el.classList.remove("highlighted")); - localStorage.removeItem("sphinx_highlight_terms") - }, - - initEscapeListener: () => { - // only install a listener if it is really needed - if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) return; - - document.addEventListener("keydown", (event) => { - // bail for input elements - if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; - // bail with special keys - if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) return; - if (DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS && (event.key === "Escape")) { - SphinxHighlight.hideSearchWords(); - event.preventDefault(); - } - }); - }, -}; - -_ready(() => { - /* Do not call highlightSearchWords() when we are on the search page. - * It will highlight words from the *previous* search query. - */ - if (typeof Search === "undefined") SphinxHighlight.highlightSearchWords(); - SphinxHighlight.initEscapeListener(); -}); diff --git a/docs/_build/html/api.html b/docs/_build/html/api.html deleted file mode 100644 index 3b9a7fc..0000000 --- a/docs/_build/html/api.html +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - API Documentation — basicrta documentation - - - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -
-

API Documentation

- - - - - - -

basicrta

basicrta A package to extract binding kinetics from molecular dynamics simulations

-
- - -
-
-
- -
- -
-

© Copyright 2024, Ricky Sexton. Project structure based on the MDAnalysis Cookiecutter version 0.1.

-
- - - - - -
-
-
-
-
- - -
- - - - - - -
-
-
Other Versions
-
- -
-
- - - \ No newline at end of file diff --git a/docs/_build/html/autosummary/basicrta.cluster.html b/docs/_build/html/autosummary/basicrta.cluster.html deleted file mode 100644 index e2f6b68..0000000 --- a/docs/_build/html/autosummary/basicrta.cluster.html +++ /dev/null @@ -1,190 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - basicrta.cluster — basicrta documentation - - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -
-

basicrta.cluster

-

Classes

- - - - - - -

ProcessProtein(niter, prot, cutoff)

-
- - -
-
-
- -
- -
-

© Copyright 2024, Ricky Sexton. Project structure based on the MDAnalysis Cookiecutter version 0.1.

-
- - - - - -
-
-
-
-
- - -
- - - - - - -
-
-
Other Versions
-
- -
-
- - - \ No newline at end of file diff --git a/docs/_build/html/autosummary/basicrta.contacts.html b/docs/_build/html/autosummary/basicrta.contacts.html deleted file mode 100644 index ddc879f..0000000 --- a/docs/_build/html/autosummary/basicrta.contacts.html +++ /dev/null @@ -1,193 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - basicrta.contacts — basicrta documentation - - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -
-

basicrta.contacts

-

Classes

- - - - - - - - - -

MapContacts(u, ag1, ag2[, nproc, frames, ...])

This class is used to create the map of contacts between two groups of atoms.

ProcessContacts(cutoff, nproc[, map_name])

-
- - -
-
-
- -
- -
-

© Copyright 2024, Ricky Sexton. Project structure based on the MDAnalysis Cookiecutter version 0.1.

-
- - - - - -
-
-
-
-
- - -
- - - - - - -
-
-
Other Versions
-
- -
-
- - - \ No newline at end of file diff --git a/docs/_build/html/autosummary/basicrta.data.files.html b/docs/_build/html/autosummary/basicrta.data.files.html deleted file mode 100644 index 70120df..0000000 --- a/docs/_build/html/autosummary/basicrta.data.files.html +++ /dev/null @@ -1,193 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - basicrta.data.files — basicrta documentation - - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -
-

basicrta.data.files

-
-

Location of data files

-

Use as

-
from basicrta.data.files import *
-
-
-
-
- - -
-
-
- -
- -
-

© Copyright 2024, Ricky Sexton. Project structure based on the MDAnalysis Cookiecutter version 0.1.

-
- - - - - -
-
-
-
-
- - -
- - - - - - -
-
-
Other Versions
-
- -
-
- - - \ No newline at end of file diff --git a/docs/_build/html/autosummary/basicrta.data.html b/docs/_build/html/autosummary/basicrta.data.html deleted file mode 100644 index 620db57..0000000 --- a/docs/_build/html/autosummary/basicrta.data.html +++ /dev/null @@ -1,193 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - basicrta.data — basicrta documentation - - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -
-

basicrta.data

-

Modules

- - - - - - -

files

Location of data files

-
- - -
-
-
- -
- -
-

© Copyright 2024, Ricky Sexton. Project structure based on the MDAnalysis Cookiecutter version 0.1.

-
- - - - - -
-
-
-
-
- - -
- - - - - - -
-
-
Other Versions
-
- -
-
- - - \ No newline at end of file diff --git a/docs/_build/html/autosummary/basicrta.gibbs.Gibbs.html b/docs/_build/html/autosummary/basicrta.gibbs.Gibbs.html deleted file mode 100644 index bf7d550..0000000 --- a/docs/_build/html/autosummary/basicrta.gibbs.Gibbs.html +++ /dev/null @@ -1,249 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - basicrta.gibbs.Gibbs — basicrta documentation - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -
-

basicrta.gibbs.Gibbs

-
-
-class basicrta.gibbs.Gibbs(times=None, residue=None, loc=0, ncomp=15, niter=110000, cutoff=None)[source]
-

Gibbs sampler to estimate parameters of an exponential mixture for a set -of data. Results are stored in gibbs.results, which uses -MDAnalysis.analysis.base.Results(). If ‘results=None’ the gibbs -sampler has not been executed, which requires calling run()

-
-
Parameters:
-
    -
  • times (array, optional) – Set of residence times to analyze

  • -
  • residue (str) – Residue name associated with the set of residence times

  • -
  • loc (int) – Used for progress bar in parallel applications

  • -
  • ncomp (int) – Number of exponential components to use in the mixture model

  • -
  • niter (int) – Number of iterations to run the Gibbs sampler

  • -
  • cutoff (float) – Cutoff calue used in contact analysis, used to determine -directory to load/save results. Allows for multiple cutoffs -to be tested in directory containing contacts.

  • -
-
-
-

Example

-
>>> from basicrta.gibbs import Gibbs
->>> from basicrta.tests.data import times
->>> g = Gibbs(times=times, residue='W313', cutoff=7.0)
->>> g.run()
->>> g.process_gibbs()
->>> g.estimate_tau()
-[1, 2, 3]
-
-
-

To load a Gibbs sampler that has already been executed use the load() -method

-
>>> g = Gibbs().load('results.pkl')
-
-
-

The Gibbs sampler can be executed using the run() method without -processing the resulting data. Once the process_gibbs() method is -called, the Gibbs.results.processed_results attribute will be -populated.

-
-
-__init__(times=None, residue=None, loc=0, ncomp=15, niter=110000, cutoff=None)[source]
-
- -

Methods

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

__init__([times, residue, loc, ncomp, ...])

cluster([method])

Cluster the processed results using the methods available in sklearn.mixture

estimate_tau()

Estimate the posterior maximum for the tau distribution

load(file)

Load Gibbs

plot_gibbs([scale, sparse, save])

plot_hist([scale, save, component, bins])

plot_surv([scale, remove_noise, save, xlim, ...])

Plot the survival function with the exponential mixture components where parameters are determined from the clustering results.

plot_tau_hist([scale, save])

Plot histogram of tau values

process_gibbs()

Process the data collected from the Gibbs sampler

result_plot([remove_noise])

Generate the combined result plot with option to change kwargs without re-clustering.

run()

Execute the Gibbs sampler and save the results to Gibbs.results

save()

Save current state of the Gibbs

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

© Copyright 2024, Ricky Sexton. Project structure based on the MDAnalysis Cookiecutter version 0.1.

-
- - - - - -
-
-
-
-
- - -
- - - - - - -
-
-
Other Versions
-
- -
-
- - - \ No newline at end of file diff --git a/docs/_build/html/autosummary/basicrta.gibbs.html b/docs/_build/html/autosummary/basicrta.gibbs.html deleted file mode 100644 index d20a62c..0000000 --- a/docs/_build/html/autosummary/basicrta.gibbs.html +++ /dev/null @@ -1,194 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - basicrta.gibbs — basicrta documentation - - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -
-

basicrta.gibbs

-

Analysis functions

-

Classes

- - - - - - - - - -

Gibbs([times, residue, loc, ncomp, niter, ...])

Gibbs sampler to estimate parameters of an exponential mixture for a set of data.

ParallelGibbs(contacts[, nproc, ncomp, niter])

A module to take a contact map and run Gibbs samplers for each residue

-
- - -
-
-
- -
- -
-

© Copyright 2024, Ricky Sexton. Project structure based on the MDAnalysis Cookiecutter version 0.1.

-
- - - - - -
-
-
-
-
- - -
- - - - - - -
-
-
Other Versions
-
- -
-
- - - \ No newline at end of file diff --git a/docs/_build/html/autosummary/basicrta.html b/docs/_build/html/autosummary/basicrta.html deleted file mode 100644 index 2c0ad3c..0000000 --- a/docs/_build/html/autosummary/basicrta.html +++ /dev/null @@ -1,216 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - basicrta — basicrta documentation - - - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -
-

basicrta

-

basicrta -A package to extract binding kinetics from molecular dynamics simulations

-

Modules

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

cluster

contacts

data

gibbs

Analysis functions

istarmap

pwdensity

util

Functions used by other modules.

wdensity

weighted_density

-
- - -
-
-
- -
- -
-

© Copyright 2024, Ricky Sexton. Project structure based on the MDAnalysis Cookiecutter version 0.1.

-
- - - - - -
-
-
-
-
- - -
- - - - - - -
-
-
Other Versions
-
- -
-
- - - \ No newline at end of file diff --git a/docs/_build/html/autosummary/basicrta.istarmap.html b/docs/_build/html/autosummary/basicrta.istarmap.html deleted file mode 100644 index f0486b4..0000000 --- a/docs/_build/html/autosummary/basicrta.istarmap.html +++ /dev/null @@ -1,190 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - basicrta.istarmap — basicrta documentation - - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -
-

basicrta.istarmap

-

Functions

- - - - - - -

istarmap(self, func, iterable[, chunksize])

starmap-version of imap

-
- - -
-
-
- -
- -
-

© Copyright 2024, Ricky Sexton. Project structure based on the MDAnalysis Cookiecutter version 0.1.

-
- - - - - -
-
-
-
-
- - -
- - - - - - -
-
-
Other Versions
-
- -
-
- - - \ No newline at end of file diff --git a/docs/_build/html/autosummary/basicrta.pwdensity.html b/docs/_build/html/autosummary/basicrta.pwdensity.html deleted file mode 100644 index 41e1967..0000000 --- a/docs/_build/html/autosummary/basicrta.pwdensity.html +++ /dev/null @@ -1,194 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - basicrta.pwdensity — basicrta documentation - - - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -
-

basicrta.pwdensity

-

Classes

- - - - - - - - - -

Density(*args, **kwargs)

Class representing a density on a regular cartesian grid. :Parameters: * grid (array_like) -- histogram or density, typically a numpy.ndarray * edges (list) -- list of arrays, the lower and upper bin edges along the axes * parameters (dict) -- dictionary of class parameters; saved with Density.save(). The following keys are meaningful to the class. Meaning of the values are listed: isDensity - False: grid is a histogram with counts [default] - True: a density Applying Density.make_density`() sets it to True. * units (dict) -- A dict with the keys - length: physical unit of grid edges (Angstrom or nm) [Angstrom] - density: unit of the density if isDensity=True or None otherwise; the default is "Angstrom^{-3}" for densities (meaning \(\text{Å}^{-3}\)). * metadata (dict) -- a user defined dictionary of arbitrary values associated with the density; the class does not touch Density.metadata but stores it with Density.save().

WDensityAnalysis(atomgroup, weights[, ...])

Weighted volumetric density analysis. The trajectory is read, frame by frame, and the atoms in atomgroup are histogrammed on a 3D grid with spacing delta. :Parameters: * atomgroup (AtomGroup or UpdatingAtomGroup) -- Group of atoms (such as all the water oxygen atoms) being analyzed. This can be an UpdatingAtomGroup for selections that change every time step. * delta (float (optional)) -- Bin size for the density grid in ångström (same in x,y,z). * padding (float (optional)) -- Increase histogram dimensions by padding (on top of initial box size) in ångström. Padding is ignored when setting a user defined grid. * gridcenter (numpy ndarray, float32 (optional)) -- 3 element numpy array detailing the x, y and z coordinates of the center of a user defined grid box in ångström. * xdim (float (optional)) -- User defined x dimension box edge in ångström. * ydim (float (optional)) -- User defined y dimension box edge in ångström. * zdim (float (optional)) -- User defined z dimension box edge in ångström.

-
- - -
-
-
- -
- -
-

© Copyright 2024, Ricky Sexton. Project structure based on the MDAnalysis Cookiecutter version 0.1.

-
- - - - - -
-
-
-
-
- - -
- - - - - - -
-
-
Other Versions
-
- -
-
- - - \ No newline at end of file diff --git a/docs/_build/html/autosummary/basicrta.util.html b/docs/_build/html/autosummary/basicrta.util.html deleted file mode 100644 index b3e2004..0000000 --- a/docs/_build/html/autosummary/basicrta.util.html +++ /dev/null @@ -1,302 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - basicrta.util — basicrta documentation - - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -
-

basicrta.util

-

Functions used by other modules.

-

Functions

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

align_homologues(Areduced, Breduced, aln)

all_post_hist(results[, save, show, wlims, ...])

check_results(residues, times, ts)

collect_n_plot(resids, comps)

confidence_interval(data[, percentage])

expand_times(contacts)

extract_data(gibbs)

get_bars(tau)

get_bins(x, ts)

get_code(resname)

get_color(i)

get_dec(ts)

get_delta_tau(aln, protA, protB, tausA, tausB)

get_diffcode(sel, index)

get_fa_sel(aln, protA, protB)

get_fa_sel_match(aln, protA, protB)

get_indices(resnames, sequence)

get_remaining_residue_inds(residues[, invert])

get_s(x, ts)

get_start_stop_frames(simtime, timelen, ts)

get_write_frames(u, time, trajtime, lipind, comp)

make_residue_plots(results[, comps, show])

make_surv(ahist)

mixture_and_plot(gibbs[, scale, sparse, ...])

plot_delta_tau(A, B, dtau, protA, protB[, ...])

plot_hists(timelens, indicators, residues)

plot_post(results, attr[, comp, save, show])

plot_protein(residues, t_slow, bars, prot[, ...])

plot_r_vs_w(r[, rrange, wrange])

plot_results(results[, cond, save, show])

plot_trace(results, attr[, comp, xrange, ...])

run_residue(residue, time, proc, ncomp, ...)

siground(x, dec)

simulate_hn(n, weights, rates)

slice_trajectory(u, nslices)

tm(Prot, i)

unique_rates(ncomp, mcrates)

write_trajs(u, time, trajtime, indicator, ...)

-
- - -
-
-
- -
- -
-

© Copyright 2024, Ricky Sexton. Project structure based on the MDAnalysis Cookiecutter version 0.1.

-
- - - - - -
-
-
-
-
- - -
- - - - - - -
-
-
Other Versions
-
- -
-
- - - \ No newline at end of file diff --git a/docs/_build/html/autosummary/basicrta.wdensity.html b/docs/_build/html/autosummary/basicrta.wdensity.html deleted file mode 100644 index 574118d..0000000 --- a/docs/_build/html/autosummary/basicrta.wdensity.html +++ /dev/null @@ -1,194 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - basicrta.wdensity — basicrta documentation - - - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -
-

basicrta.wdensity

-

Classes

- - - - - - - - - -

Density(*args, **kwargs)

Class representing a density on a regular cartesian grid. :Parameters: * grid (array_like) -- histogram or density, typically a numpy.ndarray * edges (list) -- list of arrays, the lower and upper bin edges along the axes * parameters (dict) -- dictionary of class parameters; saved with Density.save(). The following keys are meaningful to the class. Meaning of the values are listed: isDensity - False: grid is a histogram with counts [default] - True: a density Applying Density.make_density`() sets it to True. * units (dict) -- A dict with the keys - length: physical unit of grid edges (Angstrom or nm) [Angstrom] - density: unit of the density if isDensity=True or None otherwise; the default is "Angstrom^{-3}" for densities (meaning \(\text{Å}^{-3}\)). * metadata (dict) -- a user defined dictionary of arbitrary values associated with the density; the class does not touch Density.metadata but stores it with Density.save().

WDensityAnalysis(atomgroup, weights[, ...])

Weighted volumetric density analysis. The trajectory is read, frame by frame, and the atoms in atomgroup are histogrammed on a 3D grid with spacing delta. :Parameters: * atomgroup (AtomGroup or UpdatingAtomGroup) -- Group of atoms (such as all the water oxygen atoms) being analyzed. This can be an UpdatingAtomGroup for selections that change every time step. * delta (float (optional)) -- Bin size for the density grid in ångström (same in x,y,z). * padding (float (optional)) -- Increase histogram dimensions by padding (on top of initial box size) in ångström. Padding is ignored when setting a user defined grid. * gridcenter (numpy ndarray, float32 (optional)) -- 3 element numpy array detailing the x, y and z coordinates of the center of a user defined grid box in ångström. * xdim (float (optional)) -- User defined x dimension box edge in ångström. * ydim (float (optional)) -- User defined y dimension box edge in ångström. * zdim (float (optional)) -- User defined z dimension box edge in ångström.

-
- - -
-
-
- -
- -
-

© Copyright 2024, Ricky Sexton. Project structure based on the MDAnalysis Cookiecutter version 0.1.

-
- - - - - -
-
-
-
-
- - -
- - - - - - -
-
-
Other Versions
-
- -
-
- - - \ No newline at end of file diff --git a/docs/_build/html/autosummary/basicrta.weighted_density.html b/docs/_build/html/autosummary/basicrta.weighted_density.html deleted file mode 100644 index 9e5bdd6..0000000 --- a/docs/_build/html/autosummary/basicrta.weighted_density.html +++ /dev/null @@ -1,188 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - basicrta.weighted_density — basicrta documentation - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -
-

basicrta.weighted_density

-

Classes

- - - - - - -

MapKinetics(gibbs, contacts)

-
- - -
-
-
- -
- -
-

© Copyright 2024, Ricky Sexton. Project structure based on the MDAnalysis Cookiecutter version 0.1.

-
- - - - - -
-
-
-
-
- - -
- - - - - - -
-
-
Other Versions
-
- -
-
- - - \ No newline at end of file diff --git a/docs/_build/html/genindex.html b/docs/_build/html/genindex.html deleted file mode 100644 index d972b0d..0000000 --- a/docs/_build/html/genindex.html +++ /dev/null @@ -1,309 +0,0 @@ - - - - - - - - - - - - - - - - - - - - Index — basicrta documentation - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
-
    -
  • - -
  • -
  • -
-
-
-
-
- - -

Index

- -
- _ - | B - | G - | M - | V - -
-

_

- - -
- -

B

- - - -
    -
  • - basicrta - -
  • -
  • - basicrta.cluster - -
  • -
  • - basicrta.contacts - -
  • -
  • - basicrta.data - -
  • -
  • - basicrta.data.files - -
  • -
  • - basicrta.gibbs - -
  • -
    -
  • - basicrta.istarmap - -
  • -
  • - basicrta.pwdensity - -
  • -
  • - basicrta.util - -
  • -
  • - basicrta.wdensity - -
  • -
  • - basicrta.weighted_density - -
  • -
- -

G

- - -
- -

M

- - -
- -

V

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

© Copyright 2024, Ricky Sexton. Project structure based on the MDAnalysis Cookiecutter version 0.1.

-
- - - - - -
-
-
-
-
- - -
- - - - - - -
-
-
Other Versions
-
- -
-
- - - \ No newline at end of file diff --git a/docs/_build/html/getting_started.html b/docs/_build/html/getting_started.html deleted file mode 100644 index e15f2ad..0000000 --- a/docs/_build/html/getting_started.html +++ /dev/null @@ -1,172 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - Getting Started — basicrta documentation - - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -
-

Getting Started

-

To use basicrta, install from source.

-
git clone git@github.com:becksteinlab/basicrta.git
-cd basicrta
-pip install .
-
-
-
- - -
-
-
- -
- -
-

© Copyright 2024, Ricky Sexton. Project structure based on the MDAnalysis Cookiecutter version 0.1.

-
- - - - - -
-
-
-
-
- - -
- - - - - - -
-
-
Other Versions
-
- -
-
- - - \ No newline at end of file diff --git a/docs/_build/html/index.html b/docs/_build/html/index.html deleted file mode 100644 index 064c502..0000000 --- a/docs/_build/html/index.html +++ /dev/null @@ -1,207 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - Welcome to basicrta’s documentation! — basicrta documentation - - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -
-

Welcome to basicrta’s documentation!

-

basicrtakit is a package to analyze binding kinetics in molecular dynamics -simulations. The analysis uses an exponential mixture model and Bayesian -nonparametric inference to determine time-scales of the underlying binding -processes. The output is processed to give frames belonging to a given process -with an associated time-scale, which can be further analyzed.

- -

basicrta -A package to extract binding kinetics from molecular dynamics simulations

-
-
-basicrta.version(distribution_name)[source]
-

Get the version string for the named package.

-
-
Parameters:
-

distribution_name – The name of the distribution package to query.

-
-
Returns:
-

The version string for the package as defined in the package’s -“Version” metadata key.

-
-
-
- -
-
-

Indices and tables

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

© Copyright 2024, Ricky Sexton. Project structure based on the MDAnalysis Cookiecutter version 0.1.

-
- - - - - -
-
-
-
-
- - -
- - - - - - -
-
-
Other Versions
-
- -
-
- - - \ No newline at end of file diff --git a/docs/_build/html/objects.inv b/docs/_build/html/objects.inv deleted file mode 100644 index 9dba86e..0000000 Binary files a/docs/_build/html/objects.inv and /dev/null differ diff --git a/docs/_build/html/py-modindex.html b/docs/_build/html/py-modindex.html deleted file mode 100644 index 30aa48d..0000000 --- a/docs/_build/html/py-modindex.html +++ /dev/null @@ -1,227 +0,0 @@ - - - - - - - - - - - - - - - - - - - - Python Module Index — basicrta documentation - - - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
-
    -
  • - -
  • -
  • -
-
-
-
-
- - -

Python Module Index

- -
- b -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 
- b
- basicrta -
    - basicrta.cluster -
    - basicrta.contacts -
    - basicrta.data -
    - basicrta.data.files -
    - basicrta.gibbs -
    - basicrta.istarmap -
    - basicrta.pwdensity -
    - basicrta.util -
    - basicrta.wdensity -
    - basicrta.weighted_density -
- - -
-
-
- -
- -
-

© Copyright 2024, Ricky Sexton. Project structure based on the MDAnalysis Cookiecutter version 0.1.

-
- - - - - -
-
-
-
-
- - -
- - - - - - -
-
-
Other Versions
-
- -
-
- - - \ No newline at end of file diff --git a/docs/_build/html/search.html b/docs/_build/html/search.html deleted file mode 100644 index 3cf1c6b..0000000 --- a/docs/_build/html/search.html +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - - - - - - - - - - - - - - - Search — basicrta documentation - - - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
-
    -
  • - -
  • -
  • -
-
-
-
-
- - - - -
- -
- -
-
-
- -
- -
-

© Copyright 2024, Ricky Sexton. Project structure based on the MDAnalysis Cookiecutter version 0.1.

-
- - - - - -
-
-
-
-
- - -
- - - - - - -
-
-
Other Versions
-
- -
-
- - - - - - - - \ No newline at end of file diff --git a/docs/_build/html/searchindex.js b/docs/_build/html/searchindex.js deleted file mode 100644 index 0e09d8d..0000000 --- a/docs/_build/html/searchindex.js +++ /dev/null @@ -1 +0,0 @@ -Search.setIndex({"alltitles": {"API Documentation": [[0, null]], "Contacts": [[15, "contacts"]], "Contents:": [[14, null]], "Getting Started": [[13, null]], "Indices and tables": [[14, "indices-and-tables"]], "Location of data files": [[5, "location-of-data-files"]], "Tutorial": [[15, null]], "Welcome to basicrta\u2019s documentation!": [[14, null]], "basicrta": [[1, null]], "basicrta.cluster": [[2, null]], "basicrta.contacts": [[3, null]], "basicrta.data": [[4, null]], "basicrta.data.files": [[5, null]], "basicrta.gibbs": [[6, null]], "basicrta.gibbs.Gibbs": [[7, null]], "basicrta.istarmap": [[8, null]], "basicrta.pwdensity": [[9, null]], "basicrta.util": [[10, null]], "basicrta.wdensity": [[11, null]], "basicrta.weighted_density": [[12, null]]}, "docnames": ["api", "autosummary/basicrta", "autosummary/basicrta.cluster", "autosummary/basicrta.contacts", "autosummary/basicrta.data", "autosummary/basicrta.data.files", "autosummary/basicrta.gibbs", "autosummary/basicrta.gibbs.Gibbs", "autosummary/basicrta.istarmap", "autosummary/basicrta.pwdensity", "autosummary/basicrta.util", "autosummary/basicrta.wdensity", "autosummary/basicrta.weighted_density", "getting_started", "index", "tutorial"], "envversion": {"sphinx": 62, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "sphinx.ext.viewcode": 1}, "filenames": ["api.rst", "autosummary/basicrta.rst", "autosummary/basicrta.cluster.rst", "autosummary/basicrta.contacts.rst", "autosummary/basicrta.data.rst", "autosummary/basicrta.data.files.rst", "autosummary/basicrta.gibbs.rst", "autosummary/basicrta.gibbs.Gibbs.rst", "autosummary/basicrta.istarmap.rst", "autosummary/basicrta.pwdensity.rst", "autosummary/basicrta.util.rst", "autosummary/basicrta.wdensity.rst", "autosummary/basicrta.weighted_density.rst", "getting_started.rst", "index.rst", "tutorial.rst"], "indexentries": {"basicrta": [[1, "module-basicrta", false], [14, "module-basicrta", false]], "basicrta.cluster": [[2, "module-basicrta.cluster", false]], "module": [[1, "module-basicrta", false], [2, "module-basicrta.cluster", false], [14, "module-basicrta", false]], "version() (in module basicrta)": [[14, "basicrta.version", false]]}, "objects": {"": [[14, 0, 0, "-", "basicrta"]], "basicrta": [[2, 0, 0, "-", "cluster"], [3, 0, 0, "-", "contacts"], [4, 0, 0, "-", "data"], [6, 0, 0, "-", "gibbs"], [8, 0, 0, "-", "istarmap"], [9, 0, 0, "-", "pwdensity"], [10, 0, 0, "-", "util"], [14, 3, 1, "", "version"], [11, 0, 0, "-", "wdensity"], [12, 0, 0, "-", "weighted_density"]], "basicrta.data": [[5, 0, 0, "-", "files"]], "basicrta.gibbs": [[7, 1, 1, "", "Gibbs"]], "basicrta.gibbs.Gibbs": [[7, 2, 1, "", "__init__"]]}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "method", "Python method"], "3": ["py", "function", "Python function"]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:method", "3": "py:function"}, "terms": {"0": [7, 15], "1": 7, "10": 15, "110000": 7, "15": 7, "2": 7, "212b": [], "3": 7, "313": 15, "4": 15, "7": [7, 15], "A": [1, 14, 15], "If": 7, "The": [7, 14, 15], "To": [7, 13], "__init__": 7, "aa": [], "all": 15, "allow": 7, "alreadi": 7, "an": [7, 14], "analysi": [6, 7, 14], "analyz": [7, 14], "api": 14, "applic": 7, "ar": [7, 15], "arrai": 7, "associ": [7, 14], "atom": 15, "attribut": 7, "bar": 7, "base": [7, 15], "basicrta": [13, 15], "basicrtakit": 14, "bayesian": 14, "becksteinlab": 13, "been": 7, "belong": 14, "between": 15, "bind": [1, 14], "call": 7, "calu": 7, "can": [7, 14, 15], "cd": 13, "chang": 15, "chol": 15, "class": [2, 3, 6, 7, 9, 11, 12], "clone": 13, "collect": 15, "com": 13, "compon": 7, "contact": [7, 14], "contacts_7": 15, "contain": 7, "correctli": 15, "creat": 15, "cutoff": [7, 15], "data": [7, 15], "defin": [14, 15], "desir": 15, "determin": [7, 14], "directori": [7, 15], "distribut": 14, "distribution_nam": 14, "durat": 15, "dynam": [1, 14], "each": 15, "estim": 7, "estimate_tau": 7, "exampl": 7, "execut": [7, 15], "exponenti": [7, 14], "extract": [1, 14], "first": 15, "float": 7, "frame": 14, "from": [1, 5, 7, 13, 14], "function": [6, 8, 10], "further": 14, "futur": 15, "g": 7, "get": 14, "gibb": 15, "git": 13, "github": 13, "give": 14, "given": 14, "group": 15, "ha": 7, "i": [7, 14, 15], "import": [5, 7], "impos": 15, "index": 14, "infer": 14, "input": 15, "instal": 13, "int": 7, "iter": 7, "kei": 14, "kinet": [1, 14], "left": 15, "literalinclud": [], "load": 7, "loc": 7, "m": 15, "mai": 15, "map": 15, "math": [], "mdanalysi": 7, "metadata": 14, "method": 7, "mixtur": [7, 14], "model": [7, 14], "modul": [1, 4, 10, 14], "molecular": [1, 14], "multipl": 7, "name": [7, 14, 15], "ncomp": 7, "new": 15, "next": 15, "niter": 7, "none": 7, "nonparametr": 14, "nproc": 15, "npy": 15, "number": [7, 15], "onc": 7, "onli": 15, "option": 7, "other": 10, "out": 15, "output": 14, "packag": [1, 14], "page": 14, "parallel": 7, "paramet": [7, 14], "pdb": 15, "pip": 13, "pkl": [7, 15], "popul": 7, "process": [7, 14], "process_gibb": 7, "processed_result": 7, "progress": 7, "protein": 15, "py": 15, "python": 15, "queri": 14, "reason": 15, "requir": 7, "resid": [7, 15], "residu": [7, 15], "resnam": 15, "result": [7, 15], "return": 14, "run": [7, 15], "sampler": [7, 15], "save": 7, "scale": 14, "search": 14, "sel1": 15, "sel2": 15, "set": 7, "should": 15, "simul": [1, 14], "singl": 15, "sourc": [7, 13, 14], "specif": 15, "specifi": 15, "start": [14, 15], "storag": 15, "store": [7, 15], "str": 7, "string": 14, "test": 7, "thi": 15, "time": [7, 14, 15], "top": 15, "topologi": 15, "traj": 15, "try": [], "tutori": 14, "two": 15, "u": [], "underli": 14, "unicod": [], "upon": 15, "us": [5, 7, 10, 13, 14, 15], "valu": 15, "version": 14, "w313": 7, "where": 15, "which": [7, 14, 15], "without": 7, "workflow": 15, "xtc": 15, "\u00e5": 15}, "titles": ["API Documentation", "basicrta", "basicrta.cluster", "basicrta.contacts", "basicrta.data", "basicrta.data.files", "basicrta.gibbs", "basicrta.gibbs.Gibbs", "basicrta.istarmap", "basicrta.pwdensity", "basicrta.util", "basicrta.wdensity", "basicrta.weighted_density", "Getting Started", "Welcome to basicrta\u2019s documentation!", "Tutorial"], "titleterms": {"": 14, "api": 0, "basicrta": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14], "cluster": 2, "contact": [3, 15], "content": 14, "data": [4, 5], "document": [0, 14], "file": 5, "get": 13, "gibb": [6, 7], "indic": 14, "istarmap": 8, "locat": 5, "pwdensiti": 9, "start": 13, "tabl": 14, "tutori": 15, "util": 10, "wdensiti": 11, "weighted_dens": 12, "welcom": 14}}) \ No newline at end of file diff --git a/docs/_build/html/tutorial.html b/docs/_build/html/tutorial.html deleted file mode 100644 index 191a5c3..0000000 --- a/docs/_build/html/tutorial.html +++ /dev/null @@ -1,193 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - Tutorial — basicrta documentation - - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
-
- -
-
-
-
- -
-

Tutorial

-

The basicrta workflow starts with collecting contacts between two atom groups -sel1 and sel2 based on a single cutoff using contacts.py.:

-
python -m basicrta.contacts --top top.pdb --traj traj.xtc --sel1 "protein"
---sel2 "resname CHOL" --cutoff 7.0 --nproc 4
-
-
-

This will create two contact maps: contacts.npy and contacts_7.0.pkl. -The first is used to map all contacts defined with a 10 Å cutoff, upon which -the cutoff is imposed and a new contact map is created for each desired cutoff -value (for storage reasons this may change in the future). The protein residues -in the topology should be correctly numbered, as these will be the names of -directories where results are stored.

-

Next the contact map is used to collect the contacts between a specified residue -of sel1 and each residue of the sel2 group. The contact durations -(residence times) are then used as input data for the Gibbs sampler. A specific -residue of sel1 can be used to run a Gibbs sampler for only that residue

-
python -m basicrta.gibbs --contacts contacts_7.0.pkl --nproc 4 --resid 313
-
-
-

or if resid is left out, a Gibbs sampler will be executed for all sel1 -residues in the contact map.

-
python -m basicrta.gibbs --contacts contacts_7.0.pkl --nproc 4
-
-
-
-
-

Contacts

-
- - -
-
-
- -
- -
-

© Copyright 2024, Ricky Sexton. Project structure based on the MDAnalysis Cookiecutter version 0.1.

-
- - - - - -
-
-
-
-
- - -
- - - - - - -
-
-
Other Versions
-
- -
-
- - - \ No newline at end of file diff --git a/docs/_static/README.md b/docs/_static/README.md deleted file mode 100644 index 8d30b2b..0000000 --- a/docs/_static/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# Static Doc Directory - -Add any paths that contain custom static files (such as style sheets) here, -relative to the `conf.py` file's directory. -They are copied after the builtin static files, -so a file named "default.css" will overwrite the builtin "default.css". - -The path to this folder is set in the Sphinx `conf.py` file in the line: -```python -html_static_path = ['_static'] -``` - -## Examples of file to add to this directory -* Custom Cascading Style Sheets -* Custom JavaScript code -* Static logo images diff --git a/docs/_static/logo/placeholder_favicon.svg b/docs/_static/logo/placeholder_favicon.svg deleted file mode 100644 index cf62228..0000000 --- a/docs/_static/logo/placeholder_favicon.svg +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/docs/_static/logo/placeholder_logo.png b/docs/_static/logo/placeholder_logo.png deleted file mode 100644 index 77e9056..0000000 Binary files a/docs/_static/logo/placeholder_logo.png and /dev/null differ diff --git a/docs/_templates/README.md b/docs/_templates/README.md deleted file mode 100644 index 3f4f804..0000000 --- a/docs/_templates/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# Templates Doc Directory - -Add any paths that contain templates here, relative to -the `conf.py` file's directory. -They are copied after the builtin template files, -so a file named "page.html" will overwrite the builtin "page.html". - -The path to this folder is set in the Sphinx `conf.py` file in the line: -```python -html_static_path = ['_templates'] -``` - -## Examples of file to add to this directory -* HTML extensions of stock pages like `page.html` or `layout.html` diff --git a/docs/backups/api.rst b/docs/backups/api.rst deleted file mode 100644 index 78b8953..0000000 --- a/docs/backups/api.rst +++ /dev/null @@ -1,8 +0,0 @@ -API Documentation -================= - -.. autosummary:: - :toctree: autosummary - :recursive: - - basicrta diff --git a/docs/backups/conf.py b/docs/backups/conf.py deleted file mode 100644 index 8de5fc5..0000000 --- a/docs/backups/conf.py +++ /dev/null @@ -1,196 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Configuration file for the Sphinx documentation builder. -# -# This file does only contain a selection of the most common options. For a -# full list see the documentation: -# http://www.sphinx-doc.org/en/stable/config - -# -- Path setup -------------------------------------------------------------- - -# If extensions (or modules to document with autodoc) are in another directory, -# add these directories to sys.path here. If the directory is relative to the -# documentation root, use os.path.abspath to make it absolute, like shown here. - -# In case the project was not installed -import os -import sys -sys.path.insert(0, os.path.abspath("../")) -from basicrta import * # noqa - - -# -- Project information ----------------------------------------------------- - -project = "basicrta" -copyright = ( - "2024, Ricky Sexton. " - "Project structure based on the " - "MDAnalysis Cookiecutter version 0.1" -) -author = "Ricky Sexton" - -# The short X.Y version -version = "" -# The full version, including alpha/beta/rc tags -release = "" - - -# -- General configuration --------------------------------------------------- - -# If your documentation needs a minimal Sphinx version, state it here. -# -needs_sphinx = "6.2.1" - -# Add any Sphinx extension module names here, as strings. They can be -# extensions coming with Sphinx (named "sphinx.ext.*") or your custom -# ones. -extensions = [ - "sphinx.ext.autosummary", - "sphinx.ext.autodoc", - "sphinx.ext.mathjax", - "sphinx.ext.viewcode", - "sphinx.ext.napoleon", - "sphinx.ext.intersphinx", - "sphinx.ext.extlinks", - "mdanalysis_sphinx_theme", -] - -autosummary_generate = True -# This skips generating an autodoc of the test module -# when using the autosummary directive that is included -# by default in api.rst -autodoc_mock_imports = [ - 'basicrta.tests' -] -napoleon_google_docstring = False -napoleon_use_param = False -napoleon_use_ivar = True - -# Add any paths that contain templates here, relative to this directory. -templates_path = ["_templates"] - -# The suffix(es) of source filenames. -# You can specify multiple suffix as a list of string: -# -# source_suffix = [".rst", ".md"] -source_suffix = ".rst" - -# The master toctree document. -master_doc = "index" - -# The language for content autogenerated by Sphinx. Refer to documentation -# for a list of supported languages. -# -# This is also used if you do content translation via gettext catalogs. -# Usually you set "language" from the command line for these cases. -language = "en" - -# List of patterns, relative to source directory, that match files and -# directories to ignore when looking for source files. -# This pattern also affects html_static_path and html_extra_path . -exclude_patterns = ["_build", "Thumbs.db", ".DS_Store"] - -# The name of the Pygments (syntax highlighting) style to use. -pygments_style = "default" - - -# -- Options for HTML output ------------------------------------------------- - -# The theme to use for HTML and HTML Help pages. See the documentation for -# a list of builtin themes. -# -html_theme = "mdanalysis_sphinx_theme" - -# Theme options are theme-specific and customize the look and feel of a theme -# further. For a list of options available for each theme, see the -# documentation. -# -# html_theme_options = {} -html_theme_options = { - - "mda_official": False, - -} -# Set your logo and favicon here -- replace the placeholders! -html_logo = "_static/logo/placeholder_logo.png" -html_favicon = "_static/logo/placeholder_favicon.svg" - - -# Add any paths that contain custom static files (such as style sheets) here, -# relative to this directory. They are copied after the builtin static files, -# so a file named "default.css" will overwrite the builtin "default.css". -html_static_path = ["_static"] - -# Custom sidebar templates, must be a dictionary that maps document names -# to template names. -# -# The default sidebars (for documents that don't match any pattern) are -# defined by theme itself. Builtin themes are using these templates by -# default: ``["localtoc.html", "relations.html", "sourcelink.html", -# "searchbox.html"]``. -# -# html_sidebars = {} - - -# -- Options for HTMLHelp output --------------------------------------------- - -# Output file base name for HTML help builder. -htmlhelp_basename = "basicrtadoc" - - -# -- Options for LaTeX output ------------------------------------------------ - -latex_elements = { - # The paper size ("letterpaper" or "a4paper"). - # - # "papersize": "letterpaper", - - # The font size ("10pt", "11pt" or "12pt"). - # - # "pointsize": "10pt", - - # Additional stuff for the LaTeX preamble. - # - # "preamble": "", - - # Latex figure (float) alignment - # - # "figure_align": "htbp", -} - -# Grouping the document tree into LaTeX files. List of tuples -# (source start file, target name, title, -# author, documentclass [howto, manual, or own class]). -latex_documents = [ - (master_doc, "basicrta.tex", "basicrta Documentation", - "basicrta", "manual"), -] - - -# -- Options for manual page output ------------------------------------------ - -# One entry per manual page. List of tuples -# (source start file, name, description, authors, manual section). -man_pages = [ - (master_doc, "basicrta", "basicrta Documentation", - [author], 1) -] - - -## -- Options for Texinfo output ---------------------------------------------- -# -## Grouping the document tree into Texinfo files. List of tuples -## (source start file, target name, title, author, -## dir menu entry, description, category) -#texinfo_documents = [ -# (master_doc, "basicrta", "basicrta Documentation", -# author, "basicrta", "A package to extract binding kinetics from molecular dynamics simulations", -# "Miscellaneous"), -#] -# -# -# -- Extension configuration ------------------------------------------------- -intersphinx_mapping = { - "python": ("https://docs.python.org/3/", None), - "mdanalysis": ("https://docs.mdanalysis.org/stable/", None), -} diff --git a/docs/backups/getting_started.rst b/docs/backups/getting_started.rst deleted file mode 100644 index 56fb28b..0000000 --- a/docs/backups/getting_started.rst +++ /dev/null @@ -1,10 +0,0 @@ -Getting Started -=============== - -To use ``basicrta``, install from source. - -.. code-block:: bash - - git clone git@github.com:becksteinlab/basicrta.git - cd basicrta - pip install . diff --git a/docs/backups/index.rst b/docs/backups/index.rst deleted file mode 100644 index 30f1cec..0000000 --- a/docs/backups/index.rst +++ /dev/null @@ -1,32 +0,0 @@ -.. basicrta documentation master file, created by - sphinx-quickstart on Thu Mar 15 13:55:56 2018. - You can adapt this file completely to your liking, but it should at least - contain the root `toctree` directive. - -Welcome to basicrta's documentation! -========================================================= -``basicrtakit`` is a package to analyze binding kinetics in molecular dynamics -simulations. The analysis uses an exponential mixture model and Bayesian -nonparametric inference to determine time-scales of the underlying binding -processes. The output is processed to give frames belonging to a given process -with an associated time-scale, which can be further analyzed. - -.. toctree:: - :maxdepth: 2 - :caption: Contents: - - getting_started - tutorial - api - -.. automodule:: basicrta - :imported-members: - :members: - - -Indices and tables -================== - -* :ref:`genindex` -* :ref:`modindex` -* :ref:`search` diff --git a/docs/source/_static/logo/summary_fig_nolabel.png b/docs/source/_static/logo/summary_fig_nolabel.png new file mode 100644 index 0000000..981f382 Binary files /dev/null and b/docs/source/_static/logo/summary_fig_nolabel.png differ diff --git a/docs/source/_templates/autosummary/module.rst b/docs/source/_templates/autosummary/module.rst new file mode 100644 index 0000000..76d4556 --- /dev/null +++ b/docs/source/_templates/autosummary/module.rst @@ -0,0 +1,6 @@ +{{ fullname }} +{{ underline }} + +.. automodule:: {{ fullname }} + :members: + :undoc-members: diff --git a/docs/source/api.rst b/docs/source/api.rst index 78b8953..ea1acdb 100644 --- a/docs/source/api.rst +++ b/docs/source/api.rst @@ -1,8 +1,13 @@ API Documentation ================= -.. autosummary:: +.. autosummary:: :toctree: autosummary :recursive: - basicrta + gibbs + contacts + cluster + kinetics + util + diff --git a/docs/source/autosummary/basicrta.cluster.rst b/docs/source/autosummary/basicrta.cluster.rst deleted file mode 100644 index 55175d9..0000000 --- a/docs/source/autosummary/basicrta.cluster.rst +++ /dev/null @@ -1,12 +0,0 @@ -basicrta.cluster -================ - -.. automodule:: basicrta.cluster - - - .. rubric:: Classes - - .. autosummary:: - - ProcessProtein - \ No newline at end of file diff --git a/docs/source/autosummary/basicrta.contacts.rst b/docs/source/autosummary/basicrta.contacts.rst deleted file mode 100644 index 2072903..0000000 --- a/docs/source/autosummary/basicrta.contacts.rst +++ /dev/null @@ -1,13 +0,0 @@ -basicrta.contacts -================= - -.. automodule:: basicrta.contacts - - - .. rubric:: Classes - - .. autosummary:: - - MapContacts - ProcessContacts - \ No newline at end of file diff --git a/docs/source/autosummary/basicrta.data.files.rst b/docs/source/autosummary/basicrta.data.files.rst deleted file mode 100644 index 7ca890a..0000000 --- a/docs/source/autosummary/basicrta.data.files.rst +++ /dev/null @@ -1,6 +0,0 @@ -basicrta.data.files -=================== - -.. automodule:: basicrta.data.files - - \ No newline at end of file diff --git a/docs/source/autosummary/basicrta.data.rst b/docs/source/autosummary/basicrta.data.rst deleted file mode 100644 index 3c72ced..0000000 --- a/docs/source/autosummary/basicrta.data.rst +++ /dev/null @@ -1,13 +0,0 @@ -basicrta.data -============= - -.. automodule:: basicrta.data - - -.. rubric:: Modules - -.. autosummary:: - :toctree: - :recursive: - - files diff --git a/docs/source/autosummary/basicrta.gibbs.Gibbs.rst b/docs/source/autosummary/basicrta.gibbs.Gibbs.rst deleted file mode 100644 index 470b356..0000000 --- a/docs/source/autosummary/basicrta.gibbs.Gibbs.rst +++ /dev/null @@ -1,33 +0,0 @@ -basicrta.gibbs.Gibbs -==================== - -.. currentmodule:: basicrta.gibbs - -.. autoclass:: Gibbs - - - .. automethod:: __init__ - - - .. rubric:: Methods - - .. autosummary:: - - ~Gibbs.__init__ - ~Gibbs.cluster - ~Gibbs.estimate_tau - ~Gibbs.load - ~Gibbs.plot_gibbs - ~Gibbs.plot_hist - ~Gibbs.plot_surv - ~Gibbs.plot_tau_hist - ~Gibbs.process_gibbs - ~Gibbs.result_plot - ~Gibbs.run - ~Gibbs.save - - - - - - \ No newline at end of file diff --git a/docs/source/autosummary/basicrta.gibbs.rst b/docs/source/autosummary/basicrta.gibbs.rst deleted file mode 100644 index 52b8789..0000000 --- a/docs/source/autosummary/basicrta.gibbs.rst +++ /dev/null @@ -1,13 +0,0 @@ -basicrta.gibbs -============== - -.. automodule:: basicrta.gibbs - - - .. rubric:: Classes - - .. autosummary:: - - Gibbs - ParallelGibbs - \ No newline at end of file diff --git a/docs/source/autosummary/basicrta.istarmap.rst b/docs/source/autosummary/basicrta.istarmap.rst deleted file mode 100644 index 061a784..0000000 --- a/docs/source/autosummary/basicrta.istarmap.rst +++ /dev/null @@ -1,12 +0,0 @@ -basicrta.istarmap -================= - -.. automodule:: basicrta.istarmap - - - .. rubric:: Functions - - .. autosummary:: - - istarmap - \ No newline at end of file diff --git a/docs/source/autosummary/basicrta.kinetics.rst b/docs/source/autosummary/basicrta.kinetics.rst deleted file mode 100644 index d026076..0000000 --- a/docs/source/autosummary/basicrta.kinetics.rst +++ /dev/null @@ -1,12 +0,0 @@ -basicrta.kinetics -================= - -.. automodule:: basicrta.kinetics - - - .. rubric:: Classes - - .. autosummary:: - - MapKinetics - \ No newline at end of file diff --git a/docs/source/autosummary/basicrta.pwdensity.rst b/docs/source/autosummary/basicrta.pwdensity.rst deleted file mode 100644 index 89ffd27..0000000 --- a/docs/source/autosummary/basicrta.pwdensity.rst +++ /dev/null @@ -1,13 +0,0 @@ -basicrta.pwdensity -================== - -.. automodule:: basicrta.pwdensity - - - .. rubric:: Classes - - .. autosummary:: - - Density - WDensityAnalysis - \ No newline at end of file diff --git a/docs/source/autosummary/basicrta.rst b/docs/source/autosummary/basicrta.rst deleted file mode 100644 index 55d0195..0000000 --- a/docs/source/autosummary/basicrta.rst +++ /dev/null @@ -1,21 +0,0 @@ -basicrta -======== - -.. automodule:: basicrta - - -.. rubric:: Modules - -.. autosummary:: - :toctree: - :recursive: - - cluster - contacts - data - gibbs - istarmap - kinetics - pwdensity - util - wdensity diff --git a/docs/source/autosummary/basicrta.util.rst b/docs/source/autosummary/basicrta.util.rst deleted file mode 100644 index 14579c7..0000000 --- a/docs/source/autosummary/basicrta.util.rst +++ /dev/null @@ -1,49 +0,0 @@ -basicrta.util -============= - -.. automodule:: basicrta.util - - - .. rubric:: Functions - - .. autosummary:: - - align_homologues - all_post_hist - check_results - collect_n_plot - confidence_interval - expand_times - extract_data - get_bars - get_bins - get_code - get_color - get_dec - get_delta_tau - get_diffcode - get_fa_sel - get_fa_sel_match - get_indices - get_remaining_residue_inds - get_s - get_start_stop_frames - get_write_frames - make_residue_plots - make_surv - mixture_and_plot - plot_delta_tau - plot_hists - plot_post - plot_protein - plot_r_vs_w - plot_results - plot_trace - run_residue - siground - simulate_hn - slice_trajectory - tm - unique_rates - write_trajs - \ No newline at end of file diff --git a/docs/source/autosummary/basicrta.wdensity.rst b/docs/source/autosummary/basicrta.wdensity.rst deleted file mode 100644 index a204317..0000000 --- a/docs/source/autosummary/basicrta.wdensity.rst +++ /dev/null @@ -1,13 +0,0 @@ -basicrta.wdensity -================= - -.. automodule:: basicrta.wdensity - - - .. rubric:: Classes - - .. autosummary:: - - Density - WDensityAnalysis - \ No newline at end of file diff --git a/docs/source/autosummary/basicrta.weighted_density.rst b/docs/source/autosummary/basicrta.weighted_density.rst deleted file mode 100644 index f43253b..0000000 --- a/docs/source/autosummary/basicrta.weighted_density.rst +++ /dev/null @@ -1,12 +0,0 @@ -basicrta.weighted\_density -========================== - -.. automodule:: basicrta.weighted_density - - - .. rubric:: Classes - - .. autosummary:: - - MapKinetics - \ No newline at end of file diff --git a/docs/source/autosummary/cluster.rst b/docs/source/autosummary/cluster.rst new file mode 100644 index 0000000..e2e0adb --- /dev/null +++ b/docs/source/autosummary/cluster.rst @@ -0,0 +1,6 @@ +cluster +======= + +.. automodule:: cluster + :members: + :undoc-members: \ No newline at end of file diff --git a/docs/source/autosummary/contacts.rst b/docs/source/autosummary/contacts.rst new file mode 100644 index 0000000..1c60aa7 --- /dev/null +++ b/docs/source/autosummary/contacts.rst @@ -0,0 +1,6 @@ +contacts +======== + +.. automodule:: contacts + :members: + :undoc-members: \ No newline at end of file diff --git a/docs/source/autosummary/gibbs.rst b/docs/source/autosummary/gibbs.rst new file mode 100644 index 0000000..58bf888 --- /dev/null +++ b/docs/source/autosummary/gibbs.rst @@ -0,0 +1,6 @@ +gibbs +===== + +.. automodule:: gibbs + :members: + :undoc-members: \ No newline at end of file diff --git a/docs/source/autosummary/kinetics.rst b/docs/source/autosummary/kinetics.rst new file mode 100644 index 0000000..0dc39d1 --- /dev/null +++ b/docs/source/autosummary/kinetics.rst @@ -0,0 +1,6 @@ +kinetics +======== + +.. automodule:: kinetics + :members: + :undoc-members: \ No newline at end of file diff --git a/docs/source/autosummary/util.rst b/docs/source/autosummary/util.rst new file mode 100644 index 0000000..0bcdd9f --- /dev/null +++ b/docs/source/autosummary/util.rst @@ -0,0 +1,6 @@ +util +==== + +.. automodule:: util + :members: + :undoc-members: \ No newline at end of file diff --git a/docs/source/conf.py b/docs/source/conf.py index d31016c..3083933 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -16,6 +16,7 @@ import os import sys sys.path.insert(0, os.path.abspath("../../")) +sys.path.insert(0, os.path.abspath("../../basicrta")) from basicrta import * # noqa @@ -112,8 +113,8 @@ } # Set your logo and favicon here -- replace the placeholders! -html_logo = "_static/logo/placeholder_logo.png" -html_favicon = "_static/logo/placeholder_favicon.svg" +html_logo = "_static/logo/summary_fig_nolabel.png" +html_favicon = "_static/logo/summary_fig_nolabel.png" # Add any paths that contain custom static files (such as style sheets) here, diff --git a/docs/source/getting_started.rst b/docs/source/getting_started.rst index 56fb28b..4a13334 100644 --- a/docs/source/getting_started.rst +++ b/docs/source/getting_started.rst @@ -1,10 +1,16 @@ Getting Started =============== -To use ``basicrta``, install from source. +To install ``basicrta``, install through PyPi + +.. code-block:: bash + + pip install basicrta + +or from source .. code-block:: bash - git clone git@github.com:becksteinlab/basicrta.git - cd basicrta - pip install . + git clone git@github.com:becksteinlab/basicrta.git + cd basicrta + pip install . diff --git a/docs/source/index.rst b/docs/source/index.rst index 30f1cec..9c43642 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -11,6 +11,9 @@ nonparametric inference to determine time-scales of the underlying binding processes. The output is processed to give frames belonging to a given process with an associated time-scale, which can be further analyzed. +This package was written to perform the analyses in [Sexton_2024]_. + + .. toctree:: :maxdepth: 2 :caption: Contents: @@ -19,10 +22,6 @@ with an associated time-scale, which can be further analyzed. tutorial api -.. automodule:: basicrta - :imported-members: - :members: - Indices and tables ================== @@ -30,3 +29,9 @@ Indices and tables * :ref:`genindex` * :ref:`modindex` * :ref:`search` + +.. [Sexton_2024] Sexton, R.; Fazel, M.; Schweiger, M.; Pressé, S.; + Beckstein, O. Bayesian Nonparametric Analysis of Residence Times for + Protein-Lipid Interactions in Molecular Dynamics Simulations. bioRxiv. November 9, + 2024. https://doi.org/10.1101/2024.11.07.622502. + diff --git a/docs/source/tutorial.rst b/docs/source/tutorial.rst index 42ab48d..9d34063 100644 --- a/docs/source/tutorial.rst +++ b/docs/source/tutorial.rst @@ -1,8 +1,12 @@ .. |AA| unicode:: U+212B +======== Tutorial ======== +Contact Analysis +================ + The basicrta workflow starts with collecting contacts between two atom groups ``sel1`` and ``sel2`` based on a single ``cutoff`` using contacts.py.:: python -m basicrta.contacts --top top.pdb --traj traj.xtc --sel1 "protein" @@ -15,6 +19,9 @@ value (for storage reasons this may change in the future). The protein residues in the topology should be correctly numbered, as these will be the names of directories where results are stored. +Gibbs Sampler +============= + Next the contact map is used to collect the contacts between a specified residue of ``sel1`` and each residue of the ``sel2`` group. The contact durations (residence times) are then used as input data for the Gibbs sampler. A specific @@ -24,6 +31,10 @@ or if ``resid`` is left out, a Gibbs sampler will be executed for all ``sel1`` residues in the contact map. :: python -m basicrta.gibbs --contacts contacts_7.0.pkl --nproc 5 + +Clustering +========== + Next the samples obtained from the Gibbs sampler are processed and clustered. :: python -m basicrta.cluster --niter 110000 --nproc 3 --cutoff 7.0 --prot b2ar @@ -31,11 +42,26 @@ Next the samples obtained from the Gibbs sampler are processed and clustered. The ``prot`` argument is used to create rectangles in the :math:`\tau` vs resid plot that correspond to the TM segments of the protein (figures 7-10). Your protein can be added to ``basicrta/basicrta/data/tm_dict.txt`` in the same -format as the existing proteins. ``basicrta.cluster`` will process the Gibbs -samplers, compute :math:`\tau` for each residue, plot :math:`\tau` vs resid, and -write the data to `tausout.npy`, which contains [protein resid, tau, CI lower -bound, CI upper bound]. If a structure is passed to the script, the b-factors of -the residues will be populated with the appropriate :math:`\tau`. +format as the existing proteins. + +``basicrta.cluster`` will process the Gibbs samplers, compute :math:`\tau` for +each residue, plot :math:`\tau` vs resid, and write the data to ``tausout.npy`` +(see next section). If a structure is passed to the script, the b-factors of the +residues will be populated with the appropriate :math:`\tau`. + +Rate/Tau Estimates +================== + +Estimates for :math:`\tau` are obtained by using the ``write_data()`` method of +the ``ProcessProtein`` class contained in ``cluster.py``. Data is saved as a ``.npy`` +file and contains [protein residue, tau, CI lower bound, CI upper bound] for +each residue of ``sel1`` analyzed (given dataset size is sufficiently large +(~50 points)). Writing out all model parameters to a ``.npy`` file is currently +not implemented, but will be possible in later versions. + + +Kinetic Mapping +=============== The kinetically mapped trajectory and weighted densities can be created using ``kinetics.py``. :: @@ -58,4 +84,10 @@ the whole trajectory. :: python -m basicrta.kinetics --gibbs basicrta_7.0/W313/gibbs_110000.pkl --contacts contacts_7.0.pkl --step 100 +Supplemental Scripts +==================== +Slurm scripts for submitting Gibbs sampler jobs to distributed systems are +located in the ``basicrta/scripts`` directory. Note that some of these were +rewritten and may contain slight errors, testing still needs to be done (but +can be used with some slight modifications). diff --git a/index.html b/index.html deleted file mode 100644 index 557db03..0000000 --- a/index.html +++ /dev/null @@ -1 +0,0 @@ -Hello World diff --git a/pyproject.toml b/pyproject.toml index ebee2fa..dcef014 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -35,7 +35,7 @@ dynamic = [ [project.optional-dependencies] test = [ - "pytest>=6.0", + "pytest>=8.0", "pytest-xdist>=2.5", "pytest-cov>=3.0", ] @@ -44,18 +44,15 @@ doc = [ "sphinx_rtd_theme", ] -# [project.urls] -# source = "https://github.com/rsexton2/basicrta" -# documentation = "https://basicrta.readthedocs.io" +[project.urls] +source = "https://github.com/becksteinlab/basicrta" +documentation = "https://basicrta.readthedocs.io" [tool.setuptools] py-modules = [] -[tool.pytest.ini_options] -minversion = "6.0" -testpaths = [ - "basicrta/tests", -] +[tool.setuptools.packages] +find = {} [tool.black] line-length = 80 diff --git a/scripts/create_jobs.sh b/scripts/create_jobs.sh index 79e0678..47fb93f 100644 --- a/scripts/create_jobs.sh +++ b/scripts/create_jobs.sh @@ -1,20 +1,25 @@ #!/usr/bin/bash +if [ -z "$1" ]; then + echo "Provide cutoff" + exit 1 +fi +cutoff=$1 -if [[ $1 = "--rerun" ]]; +if [[ $2 = "--rerun" ]]; then echo "submitting rerun jobs" #./get_rerun_residues.py IFS=, - read -r -a residues < rerun_residues.csv + read -r -a residues < rerun_residues_$cutoff.csv else echo "submitting all jobs" IFS=, - read -r -a residues < residue_list.csv + read -r -a residues < residue_list_$cutoff.csv fi for res in ${residues[@]}; do - sed -r "s/RESIDUE/${res}/g;s/RESID/${res:1}/g" submit_tmp.slu > submit.slu; + sed -r "s/RESIDUE/${res}/g;s/RESID/${res:1}/g;s/CUTOFF/$cutoff/g" submit_tmp.slu > submit.slu; sbatch submit.slu done diff --git a/scripts/get_rerun_residues.py b/scripts/get_rerun_residues.py index 61b11ec..a8f51cb 100644 --- a/scripts/get_rerun_residues.py +++ b/scripts/get_rerun_residues.py @@ -1,7 +1,12 @@ -import numpy as np from glob import glob +import numpy as np import os +import sys +if len(sys.argv) < 2: + sys.exit('Provide cutoff') + +cutoff = sys.argv[1] bashCommand = "sacct -n -X --format jobname,jobid -s RUNNING > .running_jobs.txt" os.system(bashCommand) @@ -10,24 +15,25 @@ for line in f: running.append(line.strip().split()[0]) -os.chdir('basicrta-7.0/') -dirs = np.array(glob('?[0-9]*')) +os.chdir(f'basicrta-{cutoff}/') +dirs = np.array(glob('?[0-9]*')) -if len(running)>0: - run_inds = np.array([np.where(dirs==res)[0][0] for res in running if res in dirs]) - if len(run_inds)>0: +if len(running) > 0: + run_inds = np.array([np.where(dirs == res)[0][0] for res in running if + res in dirs]) + if len(run_inds) > 0: dirs = np.delete(dirs, run_inds) -rerundirs = [] -for adir in dirs: - if os.path.exists(f'{adir}/gibbs_110000.pkl') or os.path.exists(f'{adir}/.dataset_too_small'): +rerundirs = [] +for adir in dirs: + if os.path.exists(f'{adir}/gibbs_110000.pkl') or \ + os.path.exists(f'{adir}/.dataset_too_small'): pass else: - rerundirs.append(adir) - -#rerunids = [adir[:-1] for adir in rerundirs] -rerunids = [adir for adir in rerundirs] -with open('../rerun_residues.csv', 'w') as w: - for res in rerunids: - w.write(f'{res},') + rerundirs.append(adir) + +rerunids = [adir for adir in rerundirs] +with open(f'../rerun_residues_{cutoff}.csv', 'w') as w: + for res in rerunids: + w.write(f'{res},') diff --git a/scripts/setup.py b/scripts/setup.py index 2916179..a22b89d 100644 --- a/scripts/setup.py +++ b/scripts/setup.py @@ -1,32 +1,41 @@ -import os -import numpy as np -import MDAnalysis as mda -import pickle - -with open('contacts_7.0.pkl', 'rb') as f: - a = pickle.load(f) - -rg = a.dtype.metadata['ag1'].residues -ids = rg.resids -names = rg.resnames -names = np.array([mda.lib.util.convert_aa_code(name) for name in names]) -uniqs = np.unique(a[:, 0]).astype(int) - -inds = np.array([np.where(ids==val)[0][0] for val in uniqs]) -resids, resnames = ids[inds], names[inds] -residues = np.array([f'{name}{resid}' for name, resid in zip(resnames, resids)]) - -with open('residue_list.csv', 'w+') as r: - for residue in residues: - r.write(f'{residue},') - -if not os.path.exists('basicrta-7.0'): - os.mkdir('basicrta-7.0') - -os.chdir('basicrta-7.0') - -for residue in residues: - if not os.path.exists(residue): - os.mkdir(residue) +import os +import numpy as np +import MDAnalysis as mda +import pickle +if __name__=="__main__": + import argparse + parser = argparse.ArgumentParser() + parser.add_argument('--contacts', type=str) + args = parser.parse_args() + dirname = args.contacts.strip('.pkl') + cutoff = dirname.split('_')[1] + + with open(f'{args.contacts}', 'rb') as f: + a = pickle.load(f) + + rg = a.dtype.metadata['ag1'].residues + ids = rg.resids + names = rg.resnames + names = np.array([mda.lib.util.convert_aa_code(name) for name in names]) + uniqs = np.unique(a[:, 0]).astype(int) + + inds = np.array([np.where(ids==val)[0][0] for val in uniqs]) + resids, resnames = ids[inds], names[inds] + residues = np.array([f'{name}{resid}' for name, resid in zip(resnames, resids)]) + + with open('residue_list.csv', 'w+') as r: + for residue in residues: + r.write(f'{residue},') + + if not os.path.exists(f'basicrta-{cutoff}'): + os.mkdir(f'basicrta-{cutoff}') + + os.chdir(f'basicrta-{cutoff}') + + for residue in residues: + if not os.path.exists(residue): + os.mkdir(residue) + + diff --git a/scripts/status_update.sh b/scripts/status_update.sh index 490153a..53e658a 100644 --- a/scripts/status_update.sh +++ b/scripts/status_update.sh @@ -1,4 +1,16 @@ #!/usr/bin/bash - + +if [ -z "$1" ]; then + echo "Provide cutoff" + exit 1 +fi +cutoff=$1 + sacct -n -X --format jobname,jobid -s RUNNING > .running_jobs.txt -awk -v col1=1 -v col2=2 '{printf "basicrta-7.0/%s/slurm-%s.out \n", $col1, $col2}' < .running_jobs.txt | xargs tail -n 1 | sed 's@[^a-z A-Z0-9.:%|