././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4144366 tomlkit-0.12.4/CHANGELOG.md0000644000000000000000000004232314567257576012054 0ustar00# Change Log ## [0.12.4] - 2024-02-27 ### Fixed - Support `|` and `|=` operator for tables, and support `+` and `+=` operator for arrays. ([#331](https://github.com/sdispater/tomlkit/issues/331)) - Fix an index error when setting dotted keys in a table. ([#332](https://github.com/sdispater/tomlkit/issues/332)) ## [0.12.3] - 2023-11-15 ### Fixed - Improve the performance when parsing a table with nested dotted keys. ([#193](https://github.com/sdispater/tomlkit/issues/193)) - Keep the newlines when replacing a table. ([#323](https://github.com/sdispater/tomlkit/issues/323)) ## [0.12.2] - 2023-11-02 ### Fixed - Fixed a bug that overwriting a sub table with a plain value raises an error. ([#313](https://github.com/sdispater/tomlkit/issues/313)) - Correct the return type of integer division. ([#312](https://github.com/sdispater/tomlkit/issues/312)) ## [0.12.1] - 2023-07-27 ### Fixed - Make float and int hashable. ## [0.12.0] - 2023-07-27 ### Added - Allow users to specify encoders for custom types. ([#296](https://github.com/sdispater/tomlkit/issues/296)) ### Fixed - Fix the incorrect sort when building a table with dotted keys. - Complete the methods required for integer and float items. ([#307](https://github.com/sdispater/tomlkit/issues/307)) - Replace the deprecated usage of `datetime.utcnow()`. ([#308](https://github.com/sdispater/tomlkit/issues/308)) - Minor performance improvements when iterating over the escape sequences. ([#304](https://github.com/sdispater/tomlkit/issues/304)) ## [0.11.8] - 2023-04-27 ### Fixed - Remove the extra indentations added when parsing nested sub-tables. ([#256](https://github.com/sdispater/tomlkit/issues/256)) - Ignore the CRLF immediately following a multiple basic string opening. ([#262](https://github.com/sdispater/tomlkit/issues/262)) - Stringifying subtables and nested tables in arrays of tables. ([#283](https://github.com/sdispater/tomlkit/issues/283)) - Messed table structure when building a table with dotted keys. ([#284](https://github.com/sdispater/tomlkit/issues/284)) ## [0.11.7] - 2023-03-27 ### Fixed - Parse empty table name if it is quoted. ([#258](https://github.com/sdispater/tomlkit/issues/258)) - Fix a bug that remove last element of an Inline Table leaves a comma. ([#259](https://github.com/sdispater/tomlkit/issues/259)) - Parse datetime when it is followed by a space. ([#260](https://github.com/sdispater/tomlkit/issues/260)) - Fix the `unwrap()` method for `Container` children values which sometimes returns an internal object if the table is an out-of-order table. ([#264](https://github.com/sdispater/tomlkit/issues/264)) - Fix the wrong return type when doing arithmetic operations between integers and floats. ([#270](https://github.com/sdispater/tomlkit/issues/270)) ## [0.11.6] - 2022-10-27 ### Fixed - Allow broader type for toml file path value ([#243](https://github.com/sdispater/tomlkit/issues/243)) - Auto-determine if a table is a super table if not specified explicitly. ([#245](https://github.com/sdispater/tomlkit/issues/245)) ## [0.11.5] - 2022-09-28 ### Fixed - Fix the type annotation of `unwrap()` and datetime parsing. ([#229](https://github.com/sdispater/tomlkit/issues/229)) - Clear the existing table header when it is adding to another table. ([#230](https://github.com/sdispater/tomlkit/issues/230)) - Fix a bug that escape chars are lost after concat with another string. ([#235](https://github.com/sdispater/tomlkit/issues/235)) - Fix a rendering issue of tables inside arrays or inline tables. ([#236](https://github.com/sdispater/tomlkit/issues/236)) ## [0.11.4] - 2022-08-12 ### Fixed - Fix a memory leak caused by `lru_cache` on methods. ([#227](https://github.com/sdispater/tomlkit/issues/227)) ## [0.11.3] - 2022-08-10 ### Fixed - Fix a regression issue that copying an array results in extra `None` items. ([#221](https://github.com/sdispater/tomlkit/issues/221)) - Fix a regression of `array.add_line` that it incorrectly adds a comma to non-value lines. ([#223](https://github.com/sdispater/tomlkit/issues/223)) ## [0.11.2] - 2022-08-08 ### Fixed - Fix adding float to an integer value. ([#215](https://github.com/sdispater/tomlkit/issues/215)) - Keep the end-of-array style when adding items to or removing items from an array. ([#213](https://github.com/sdispater/tomlkit/issues/213), [#216](https://github.com/sdispater/tomlkit/issues/216)) - Fix a bug of redundant table header shown when removing children from a super table. ([#217](https://github.com/sdispater/tomlkit/issues/219)) ## [0.11.1] - 2022-07-07 ### Changed - Keep consistent line endings when changing files. ([#201](https://github.com/sdispater/tomlkit/issues/201)) - Make `KeyAlreadyPresent` and `InvalidStringError` subclasses of `ParseError`. ([#202](https://github.com/sdispater/tomlkit/issues/202)) - Remove empty table from `OutOfOrderTableProxy` when deleting items. ([#204](https://github.com/sdispater/tomlkit/issues/204)) - Raise errors when trying to access unsupported methods on `OutOfOrderTableProxy`. ([#205](https://github.com/sdispater/tomlkit/issues/205)) ### Fixed - Fix `unwrap()` for String values to remove the quotes. ([#199](https://github.com/sdispater/tomlkit/issues/199)) ## [0.11.0] - 2022-05-24 ### Added - Add `unwrap` methods that return tomlkit objects recursively converted to plain python objects. ([#43](https://github.com/sdispater/tomlkit/issues/43)) ## [0.10.2] - 2022-04-24 ### Fixed - Use the plain python string representation of `Key` in `KeyAlreadyPresent` error message. ([#185](https://github.com/sdispater/tomlkit/issues/185)) - Fix the `astimezone()` and `replace()` methods of datetime objects. ([#188](https://github.com/sdispater/tomlkit/issues/188)) - Add type definitions for `items()` function. ([#190](https://github.com/sdispater/tomlkit/issues/190)) ## [0.10.1] - 2022-03-27 ### Fixed - Preserve the newlines before super tables when rendering. ([#178](https://github.com/sdispater/tomlkit/issues/178)) - Fix the bug that comments are appended with comma when rendering a multiline array. ([#181](https://github.com/sdispater/tomlkit/issues/181)) ## [0.10.0] - 2022-02-18 ### Fixed - Fix the only child detection when creating tables. ([#175](https://github.com/sdispater/tomlkit/issues/175)) - Include the `docs/` directory and `CHANGELOG.md` in sdist tarball. ([#176](https://github.com/sdispater/tomlkit/issues/176)) ### Added - Add keyword arguments to `string` API to allow selecting the representation type. ([#177](https://github.com/sdispater/tomlkit/pull/177)) ## [0.9.2] - 2022-02-08 ### Changed - When a table's only child is a table or array of table, it is created as a super table. ([#175](https://github.com/sdispater/tomlkit/issues/175)) ## [0.9.1] - 2022-02-07 ### Fixed - Fix a bug of separators not being kept when replacing the value. ([#170](https://github.com/sdispater/tomlkit/issues/170)) - Tuples should be dumped as TOML arrays. ([#171](https://github.com/sdispater/tomlkit/issues/171)) ## [0.9.0] - 2022-02-01 ### Added - Add a new argument to `table` API to allow it to be a super table. ([#159](https://github.com/sdispater/tomlkit/pull/159)) - Support adding item to `Table` and `Container` with dotted key. ([#160](https://github.com/sdispater/tomlkit/pull/160)) ### Fixed - Fix a bug of `value()` API that parses string incompletely. ([#168](https://github.com/sdispater/tomlkit/pull/168)) ## [0.8.0] - 2021-12-20 ### Changed - Drop support for Python<3.6. ([#151](https://github.com/sdispater/tomlkit/pull/151)) - Comply with TOML v1.0.0. ([#154](https://github.com/sdispater/tomlkit/pull/154)) ### Fixed - Support copy protocols for table items. ([#65](https://github.com/sdispater/tomlkit/issues/65)) - Escape characters in double quoted key string. ([#136](https://github.com/sdispater/tomlkit/issues/136)) - Fix the invalid dumping output of multiline array when it is empty. ([#139](https://github.com/sdispater/tomlkit/issues/139)) - Fix a bug that tomlkit accepts an invalid table with missing `=`. ([#141](https://github.com/sdispater/tomlkit/issues/141)) - Fix the invalid dumping output when the key is empty. ([#143](https://github.com/sdispater/tomlkit/issues/143)) - Fix incorrect string returned by dumps when moving/renaming table. ([#144](https://github.com/sdispater/tomlkit/issues/144)) - Fix inconsistent dumps when replacing existing item with nested table. ([#145](https://github.com/sdispater/tomlkit/issues/145)) - Fix invalid dumps output when appending to a multiline array. ([#146](https://github.com/sdispater/tomlkit/issues/146)) - Fix the `KeyAlreadyPresent` when the table is separated into multiple parts. ([#148](https://github.com/sdispater/tomlkit/issues/148)) - Preserve the line endings in `TOMLFile`. ([#149](https://github.com/sdispater/tomlkit/issues/149)) ## [0.7.2] - 2021-05-20 ### Fixed - Fixed an error where container's data were lost when copying. ([#126](https://github.com/sdispater/tomlkit/pull/126)) - Fixed missing tests in the source distribution of the package. ([#127](https://github.com/sdispater/tomlkit/pull/127)) ## [0.7.1] - 2021-05-19 ### Fixed - Fixed an error with indent for nested table elements when updating. ([#122](https://github.com/sdispater/tomlkit/pull/122)) - Fixed various issues with dict behavior compliance for containers. ([#122](https://github.com/sdispater/tomlkit/pull/122)) - Fixed an internal error when empty tables were present after existing ones. ([#122](https://github.com/sdispater/tomlkit/pull/122)) - Fixed table representation for dotted keys. ([#122](https://github.com/sdispater/tomlkit/pull/122)) - Fixed an error in top level keys handling when building documents programmatically. ([#122](https://github.com/sdispater/tomlkit/pull/122)) - Fixed compliance with mypy by adding a `py.typed` file. ([#109](https://github.com/sdispater/tomlkit/pull/109)) ## [0.7.0] - 2020-07-31 ### Added - Added support for sorting keys when dumping raw dictionaries by passing `sort_keys=True` to `dumps()` ([#103](https://github.com/sdispater/tomlkit/pull/103)). ### Changed - Keys are not longer sorted by default when dumping a raw dictionary but the original order will be preserved ([#103](https://github.com/sdispater/tomlkit/pull/103)). ### Fixed - Fixed compliance with the 1.0.0rc1 TOML specification ([#102](https://github.com/sdispater/tomlkit/pull/102)). ## [0.6.0] - 2020-04-15 ### Added - Added support for heterogeneous arrays ([#92](https://github.com/sdispater/tomlkit/pull/92)). ## [0.5.11] - 2020-02-29 ### Fixed - Fix containers and our of order tables dictionary behavior ([#82](https://github.com/sdispater/tomlkit/pull/82))) ## [0.5.10] - 2020-02-28 ### Fixed - Fixed out of order tables not behaving properly ([#79](https://github.com/sdispater/tomlkit/pull/79)) ## [0.5.9] - 2020-02-28 ### Fixed - Fixed the behavior for out of order tables ([#68](https://github.com/sdispater/tomlkit/pull/68)). - Fixed parsing errors when single quotes are present in a table name ([#71](https://github.com/sdispater/tomlkit/pull/71)). - Fixed parsing errors when parsing some table names ([#76](https://github.com/sdispater/tomlkit/pull/76)). ## [0.5.8] - 2019-10-11 ### Added - Added support for producing multiline arrays ## [0.5.7] - 2019-10-04 ### Fixed - Fixed handling of inline tables. ## [0.5.6] - 2019-10-04 ### Fixed - Fixed boolean comparison. - Fixed appending inline tables to tables. ## [0.5.5] - 2019-07-01 ### Fixed - Fixed display of inline tables after element deletion. ## [0.5.4] - 2019-06-30 ### Fixed - Fixed the handling of inline tables. - Fixed date, datetime and time handling on Python 3.8. - Fixed behavior for sub table declaration with intermediate tables. - Fixed behavior of `setdefault()` on containers (Thanks to [@AndyKluger](https://github.com/AndyKluger)). - Fixed tables string representation. ## [0.5.3] - 2018-11-19 ### Fixed - Fixed copy of TOML documents. - Fixed behavior on PyPy3. ## [0.5.2] - 2018-11-09 ### Fixed - Fixed table header missing when replacing a super table's sub table with a single item. - Fixed comments being displayed in inline tables. - Fixed string with non-scalar unicode code points not raising an error. ## [0.5.1] - 2018-11-08 ### Fixed - Fixed deletion and replacement of sub tables declared after other tables. ## [0.5.0] - 2018-11-06 ### Changed - Improved distinction between date(time)s and numbers. ### Fixed - Fixed comma handling when parsing arrays. (Thanks to [@njalerikson](https://github.com/njalerikson)) - Fixed comma handling when parsing inline tables. (Thanks to [@njalerikson](https://github.com/njalerikson)) - Fixed a `KeyAlreadyPresent` error when declaring a sub table after other tables. ## [0.4.6] - 2018-10-16 ### Fixed - Fixed string parsing behavior. ## [0.4.5] - 2018-10-12 ### Fixed - Fixed trailing commas not raising an error for key/value. - Fixed key comparison. - Fixed an error when using pickle on TOML documents. ## [0.4.4] - 2018-09-01 ### Fixed - Fixed performances issues while parsing on Python 2.7. ## [0.4.3] - 2018-08-28 ### Fixed - Fixed handling of characters that need escaping when inserting/modifying a string element. - Fixed missing newline after table header. - Fixed dict-like behavior for tables and documents. ## [0.4.2] - 2018-08-06 ### Fixed - Fixed insertion of an element after deletion. ## [0.4.1] - 2018-08-06 ### Fixed - Fixed adding an element after another element without a new line. - Fixed parsing of dotted keys inside tables. - Fixed parsing of array of tables with same prefix. ## [0.4.0] - 2018-07-23 ### Added - `dumps()` now also accepts a raw dictionary. ### Changed - `add()`/`append()`/`remove()` now return the current `Container`/`Table` to provide a fluent interface. - Most items not behave like their native counterparts. ### Fixed - Fixed potential new lines inside an inline table. ## [0.3.0] - 2018-07-20 ### Changed - Make new dicts automatically sorted when dumped. - Improved new elements placement when building. - Automatically convert lists of dicts to arrays of tables. - No longer add a new line before standalone tables. - Make arrays behave (mostly) like lists. ### Fixed - Fixed string parsing when before last char is a backslash character. - Fixed handling of array of tables after sub tables. - Fixed table display order. - Fixed handling of super tables with different sections. - Fixed raw strings escaping. [unreleased]: https://github.com/sdispater/tomlkit/compare/0.12.4...master [0.12.4]: https://github.com/sdispater/tomlkit/releases/tag/0.12.4 [0.12.3]: https://github.com/sdispater/tomlkit/releases/tag/0.12.3 [0.12.2]: https://github.com/sdispater/tomlkit/releases/tag/0.12.2 [0.12.1]: https://github.com/sdispater/tomlkit/releases/tag/0.12.1 [0.12.0]: https://github.com/sdispater/tomlkit/releases/tag/0.12.0 [0.11.8]: https://github.com/sdispater/tomlkit/releases/tag/0.11.8 [0.11.7]: https://github.com/sdispater/tomlkit/releases/tag/0.11.7 [0.11.6]: https://github.com/sdispater/tomlkit/releases/tag/0.11.6 [0.11.5]: https://github.com/sdispater/tomlkit/releases/tag/0.11.5 [0.11.4]: https://github.com/sdispater/tomlkit/releases/tag/0.11.4 [0.11.3]: https://github.com/sdispater/tomlkit/releases/tag/0.11.3 [0.11.2]: https://github.com/sdispater/tomlkit/releases/tag/0.11.2 [0.11.1]: https://github.com/sdispater/tomlkit/releases/tag/0.11.1 [0.11.0]: https://github.com/sdispater/tomlkit/releases/tag/0.11.0 [0.10.2]: https://github.com/sdispater/tomlkit/releases/tag/0.10.2 [0.10.1]: https://github.com/sdispater/tomlkit/releases/tag/0.10.1 [0.10.0]: https://github.com/sdispater/tomlkit/releases/tag/0.10.0 [0.9.2]: https://github.com/sdispater/tomlkit/releases/tag/0.9.2 [0.9.1]: https://github.com/sdispater/tomlkit/releases/tag/0.9.1 [0.9.0]: https://github.com/sdispater/tomlkit/releases/tag/0.9.0 [0.8.0]: https://github.com/sdispater/tomlkit/releases/tag/0.8.0 [0.7.2]: https://github.com/sdispater/tomlkit/releases/tag/0.7.2 [0.7.1]: https://github.com/sdispater/tomlkit/releases/tag/0.7.1 [0.7.0]: https://github.com/sdispater/tomlkit/releases/tag/0.7.0 [0.6.0]: https://github.com/sdispater/tomlkit/releases/tag/0.6.0 [0.5.11]: https://github.com/sdispater/tomlkit/releases/tag/0.5.11 [0.5.10]: https://github.com/sdispater/tomlkit/releases/tag/0.5.10 [0.5.9]: https://github.com/sdispater/tomlkit/releases/tag/0.5.9 [0.5.8]: https://github.com/sdispater/tomlkit/releases/tag/0.5.8 [0.5.7]: https://github.com/sdispater/tomlkit/releases/tag/0.5.7 [0.5.6]: https://github.com/sdispater/tomlkit/releases/tag/0.5.6 [0.5.5]: https://github.com/sdispater/tomlkit/releases/tag/0.5.5 [0.5.4]: https://github.com/sdispater/tomlkit/releases/tag/0.5.4 [0.5.3]: https://github.com/sdispater/tomlkit/releases/tag/0.5.3 [0.5.2]: https://github.com/sdispater/tomlkit/releases/tag/0.5.2 [0.5.1]: https://github.com/sdispater/tomlkit/releases/tag/0.5.1 [0.5.0]: https://github.com/sdispater/tomlkit/releases/tag/0.5.0 [0.4.6]: https://github.com/sdispater/tomlkit/releases/tag/0.4.6 [0.4.5]: https://github.com/sdispater/tomlkit/releases/tag/0.4.5 [0.4.4]: https://github.com/sdispater/tomlkit/releases/tag/0.4.4 [0.4.3]: https://github.com/sdispater/tomlkit/releases/tag/0.4.3 [0.4.2]: https://github.com/sdispater/tomlkit/releases/tag/0.4.2 [0.4.1]: https://github.com/sdispater/tomlkit/releases/tag/0.4.1 [0.4.0]: https://github.com/sdispater/tomlkit/releases/tag/0.4.0 [0.3.0]: https://github.com/sdispater/tomlkit/releases/tag/0.3.0 [0.2.0]: https://github.com/sdispater/tomlkit/releases/tag/0.2.0 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4144366 tomlkit-0.12.4/LICENSE0000644000000000000000000000204614567257576011246 0ustar00Copyright (c) 2018 Sébastien Eustace Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4144366 tomlkit-0.12.4/README.md0000644000000000000000000000366714567257576011532 0ustar00[github_release]: https://img.shields.io/github/release/sdispater/tomlkit.svg?logo=github&logoColor=white [pypi_version]: https://img.shields.io/pypi/v/tomlkit.svg?logo=python&logoColor=white [python_versions]: https://img.shields.io/pypi/pyversions/tomlkit.svg?logo=python&logoColor=white [github_license]: https://img.shields.io/github/license/sdispater/tomlkit.svg?logo=github&logoColor=white [github_action]: https://github.com/sdispater/tomlkit/actions/workflows/tests.yml/badge.svg [![GitHub Release][github_release]](https://github.com/sdispater/tomlkit/releases/) [![PyPI Version][pypi_version]](https://pypi.org/project/tomlkit/) [![Python Versions][python_versions]](https://pypi.org/project/tomlkit/) [![License][github_license]](https://github.com/sdispater/tomlkit/blob/master/LICENSE)
[![Tests][github_action]](https://github.com/sdispater/tomlkit/actions/workflows/tests.yml) # TOML Kit - Style-preserving TOML library for Python TOML Kit is a **1.0.0-compliant** [TOML](https://toml.io/) library. It includes a parser that preserves all comments, indentations, whitespace and internal element ordering, and makes them accessible and editable via an intuitive API. You can also create new TOML documents from scratch using the provided helpers. Part of the implementation has been adapted, improved and fixed from [Molten](https://github.com/LeopoldArkham/Molten). ## Usage See the [documentation](https://tomlkit.readthedocs.io/) for more information. ## Installation If you are using [Poetry](https://poetry.eustace.io), add `tomlkit` to your `pyproject.toml` file by using: ```bash poetry add tomlkit ``` If not, you can use `pip`: ```bash pip install tomlkit ``` ## Running tests Please clone the repo with submodules with the following command `git clone --recurse-submodules https://github.com/sdispater/tomlkit.git`. We need the submodule - `toml-test` for running the tests. You can run the tests with `poetry run pytest -q tests` ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4144366 tomlkit-0.12.4/docs/Makefile0000644000000000000000000000117214567257576012630 0ustar00# Minimal makefile for Sphinx documentation # # You can set these variables from the command line, and also # from the environment for the first two. SPHINXOPTS ?= SPHINXBUILD ?= sphinx-build SOURCEDIR = . BUILDDIR = _build # Put it first so that "make" without argument is like "make help". help: @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) .PHONY: help Makefile # Catch-all target: route all unknown targets to Sphinx using the new # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). %: Makefile @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4144366 tomlkit-0.12.4/docs/api.rst0000644000000000000000000000111214567257576012465 0ustar00API Reference ============= Public API ---------- Functions you need to create TOML elements to construct a TOML document. .. automodule:: tomlkit :members: :undoc-members: :show-inheritance: TOML Document ------------- .. module:: tomlkit.toml_document .. autoclass:: TOMLDocument :show-inheritance: :inherited-members: TOML File --------- .. module:: tomlkit.toml_file .. autoclass:: TOMLFile :show-inheritance: :members: TOML Items ---------- .. automodule:: tomlkit.items :show-inheritance: :members: :exclude-members: item, AbstractTable ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4144366 tomlkit-0.12.4/docs/conf.py0000644000000000000000000000374314567257576012475 0ustar00# Configuration file for the Sphinx documentation builder. # # This file only contains a selection of the most common options. For a full # list see the documentation: # https://www.sphinx-doc.org/en/master/usage/configuration.html # -- 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. # import os import sys sys.path.insert(0, os.path.dirname(os.path.dirname(__file__))) from tomlkit import __version__ # noqa: E402 # -- Project information ----------------------------------------------------- project = "TOML Kit" copyright = "2021, Sébastien Eustace" author = "Sébastien Eustace" # The full version, including alpha/beta/rc tags release = __version__ # -- General configuration --------------------------------------------------- # 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.autodoc", ] # Add any paths that contain templates here, relative to this directory. templates_path = ["_templates"] # 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"] # -- 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 = "furo" # 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 = [] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4144366 tomlkit-0.12.4/docs/index.rst0000644000000000000000000000315614567257576013035 0ustar00.. TOMLKit documentation master file, created by sphinx-quickstart on Fri Dec 24 09:31:46 2021. You can adapt this file completely to your liking, but it should at least contain the root `toctree` directive. TOML Kit ======== **Style-preserving TOML library for Python** .. image:: https://img.shields.io/pypi/v/tomlkit.svg?logo=python&logoColor=white :target: https://pypi.org/project/tomlkit/ .. image:: https://img.shields.io/pypi/pyversions/tomlkit.svg?logo=python&logoColor=white :target: https://pypi.org/project/tomlkit/ .. image:: https://img.shields.io/github/license/sdispater/tomlkit.svg?logo=github&logoColor=white :target: https://github.com/sdispater/tomlkit/blob/master/LICENSE .. image:: https://img.shields.io/badge/TOML-1.0.0-9c4221 :target: https://toml.io/en/v1.0.0 TOML Kit is a **1.0.0-compliant** `TOML `_ library. It includes a parser that preserves all comments, indentations, whitespace and internal element ordering, and makes them accessible and editable via an intuitive API. You can also create new TOML documents from scratch using the provided helpers. Part of the implementation as been adapted, improved and fixed from `Molten `_. Installation ------------ If you are using `Poetry `_, add ``tomlkit`` to your ``pyproject.toml`` file by using:: poetry add tomlkit If not, you can use ``pip``:: pip install tomlkit Contents -------- .. toctree:: :maxdepth: 2 quickstart api Indices and tables ================== * :ref:`genindex` * :ref:`modindex` * :ref:`search` ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4144366 tomlkit-0.12.4/docs/make.bat0000644000000000000000000000144014567257576012573 0ustar00@ECHO OFF pushd %~dp0 REM Command file for Sphinx documentation if "%SPHINXBUILD%" == "" ( set SPHINXBUILD=sphinx-build ) set SOURCEDIR=. set BUILDDIR=_build if "%1" == "" goto help %SPHINXBUILD% >NUL 2>NUL if errorlevel 9009 ( echo. echo.The 'sphinx-build' command was not found. Make sure you have Sphinx echo.installed, then set the SPHINXBUILD environment variable to point echo.to the full path of the 'sphinx-build' executable. Alternatively you echo.may add the Sphinx directory to PATH. echo. echo.If you don't have Sphinx installed, grab it from echo.https://www.sphinx-doc.org/ exit /b 1 ) %SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% goto end :help %SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% :end popd ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4144366 tomlkit-0.12.4/docs/quickstart.rst0000644000000000000000000000554314567257576014122 0ustar00Quickstart ========== Parsing ------- TOML Kit comes with a fast and style-preserving parser to help you access the content of TOML files and strings:: >>> from tomlkit import dumps >>> from tomlkit import parse # you can also use loads >>> content = """[table] ... foo = "bar" # String ... """ >>> doc = parse(content) # doc is a TOMLDocument instance that holds all the information # about the TOML string. # It behaves like a standard dictionary. >>> assert doc["table"]["foo"] == "bar" # The string generated from the document is exactly the same # as the original string >>> assert dumps(doc) == content Modifying --------- TOML Kit provides an intuitive API to modify TOML documents:: >>> from tomlkit import dumps >>> from tomlkit import parse >>> from tomlkit import table >>> doc = parse("""[table] ... foo = "bar" # String ... """) >>> doc["table"]["baz"] = 13 >>> dumps(doc) """[table] foo = "bar" # String baz = 13 """ # Add a new table >>> tab = table() >>> tab.add("array", [1, 2, 3]) >>> doc["table2"] = tab >>> dumps(doc) """[table] foo = "bar" # String baz = 13 [table2] array = [1, 2, 3] """ # Remove the newly added table >>> doc.pop("table2") # del doc["table2] is also possible Writing ------- You can also write a new TOML document from scratch. Let's say we want to create this following document .. code-block:: toml # This is a TOML document. title = "TOML Example" [owner] name = "Tom Preston-Werner" organization = "GitHub" bio = "GitHub Cofounder & CEO\nLikes tater tots and beer." dob = 1979-05-27T07:32:00Z # First class dates? Why not? [database] server = "192.168.1.1" ports = [ 8001, 8001, 8002 ] connection_max = 5000 enabled = true It can be created with the following code:: >>> from tomlkit import comment >>> from tomlkit import document >>> from tomlkit import nl >>> from tomlkit import table >>> doc = document() >>> doc.add(comment("This is a TOML document.")) >>> doc.add(nl()) >>> doc.add("title", "TOML Example") # Using doc["title"] = "TOML Example" is also possible >>> owner = table() >>> owner.add("name", "Tom Preston-Werner") >>> owner.add("organization", "GitHub") >>> owner.add("bio", "GitHub Cofounder & CEO\nLikes tater tots and beer.") >>> owner.add("dob", datetime(1979, 5, 27, 7, 32, tzinfo=utc)) >>> owner["dob"].comment("First class dates? Why not?") # Adding the table to the document >>> doc.add("owner", owner) >>> database = table() >>> database["server"] = "192.168.1.1" >>> database["ports"] = [8001, 8001, 8002] >>> database["connection_max"] = 5000 >>> database["enabled"] = True >>> doc["database"] = database ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4144366 tomlkit-0.12.4/docs/requirements.txt0000644000000000000000000000003714567257576014453 0ustar00sphinx==4.3.2 furo==2021.11.23 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/pyproject.toml0000644000000000000000000000223314567257576013153 0ustar00[tool.poetry] name = "tomlkit" version = "0.12.4" description = "Style preserving TOML library" authors = [ "Sébastien Eustace ", "Frost Ming " ] license = "MIT" readme = "README.md" homepage = "https://github.com/sdispater/tomlkit" repository = "https://github.com/sdispater/tomlkit" include = [ { path = "tomlkit/py.typed" }, { path = "tests", format = "sdist" }, { path = "docs", format = "sdist" }, { path = "CHANGELOG.md", format = "sdist" }, ] [tool.poetry.dependencies] python = ">=3.7" [tool.poetry.dev-dependencies] pytest = "^7.2.0" pytest-cov = "^4.0.0" PyYAML = "^6.0" pre-commit = "^2.20.0" mypy = "^0.990" Sphinx = "^4.3.2" furo = "^2022.9.29" [tool.black] line-length = 88 include = '\.pyi?$' exclude = ''' /( \.git | \.hg | \.mypy_cache | \.tox | \.venv | _build | build | dist | tests/toml-test )/ ''' [tool.isort] profile = "black" force_single_line = true atomic = true lines_after_imports = 2 lines_between_types = 1 known_first_party = ["tomlkit"] known_third_party = ["pytest"] [build-system] requires = ["poetry-core>=1.0.0a9"] build-backend = "poetry.core.masonry.api" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/__init__.py0000644000000000000000000000000014567257576013500 0ustar00././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/conftest.py0000644000000000000000000000561514567257576013607 0ustar00import os import pytest @pytest.fixture def example(): def _example(name): with open( os.path.join(os.path.dirname(__file__), "examples", name + ".toml"), encoding="utf-8", ) as f: return f.read() return _example @pytest.fixture def json_example(): def _example(name): with open( os.path.join(os.path.dirname(__file__), "examples", "json", name + ".json"), encoding="utf-8", ) as f: return f.read() return _example @pytest.fixture def invalid_example(): def _example(name): with open( os.path.join( os.path.dirname(__file__), "examples", "invalid", name + ".toml" ), encoding="utf-8", ) as f: return f.read() return _example TEST_DIR = os.path.join(os.path.dirname(__file__), "toml-test", "tests") IGNORED_TESTS = { "valid": [ "float/inf-and-nan", # Can't compare nan ] } def get_tomltest_cases(): dirs = sorted( f for f in os.listdir(TEST_DIR) if os.path.isdir(os.path.join(TEST_DIR, f)) ) assert dirs == ["invalid", "valid"] rv = {"invalid_encode": {}} for d in dirs: rv[d] = {} ignored = IGNORED_TESTS.get(d, []) for root, _, files in os.walk(os.path.join(TEST_DIR, d)): relpath = os.path.relpath(root, os.path.join(TEST_DIR, d)) if relpath == ".": relpath = "" for f in files: try: bn, ext = f.rsplit(".", 1) except ValueError: bn, ext = f.rsplit("-", 1) key = f"{relpath}/{bn}" if ext == "multi": continue if key in ignored: continue if d == "invalid" and relpath == "encoding": rv["invalid_encode"][bn] = os.path.join(root, f) continue if key not in rv[d]: rv[d][key] = {} with open(os.path.join(root, f), encoding="utf-8") as inp: rv[d][key][ext] = inp.read() return rv def pytest_generate_tests(metafunc): test_list = get_tomltest_cases() if "valid_case" in metafunc.fixturenames: metafunc.parametrize( "valid_case", test_list["valid"].values(), ids=list(test_list["valid"].keys()), ) elif "invalid_decode_case" in metafunc.fixturenames: metafunc.parametrize( "invalid_decode_case", test_list["invalid"].values(), ids=list(test_list["invalid"].keys()), ) elif "invalid_encode_case" in metafunc.fixturenames: metafunc.parametrize( "invalid_encode_case", test_list["invalid_encode"].values(), ids=list(test_list["invalid_encode"].keys()), ) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/examples/0.5.0.toml0000644000000000000000000000130214567257576014550 0ustar00date = 1979-05-27 time = 07:32:00 plus-infinity = +inf # infinity sf1 = inf # positive infinity sf2 = +inf # positive infinity sf3 = -inf # negative infinity # not a number sf4 = nan # actual sNaN/qNaN encoding is implementation specific sf5 = +nan # same as `nan` sf6 = -nan # valid, actual encoding is implementation specific # hexadecimal with prefix `0x` hex1 = 0xDEADBEEF hex2 = 0xdeadbeef hex3 = 0xdead_beef # octal with prefix `0o` oct1 = 0o01234567 oct2 = 0o755 # useful for Unix file permissions # binary with prefix `0b` bin1 = 0b11010110 # Dotted keys physical.color = "orange" physical.shape = "round" site."google.com" = true a.b.c = 1 a.b.d = 2 [table] a.b.c = 1 a.b.d = 2 a.c = 3 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/examples/example.toml0000644000000000000000000000154614567257576015555 0ustar00# This is a TOML document. Boom. title = "TOML Example" [owner] name = "Tom Preston-Werner" organization = "GitHub" bio = "GitHub Cofounder & CEO\nLikes tater tots and beer." dob = 1979-05-27T07:32:00Z # First class dates? Why not? [database] server = "192.168.1.1" ports = [8001, 8001, 8002] connection_max = 5000 enabled = true [servers] # You can indent as you please. Tabs or spaces. TOML don't care. [servers.alpha] ip = "10.0.0.1" dc = "eqdc10" [servers.beta] ip = "10.0.0.2" dc = "eqdc10" country = "中国" # This should be parsed as UTF-8 [clients] data = [["gamma", "delta"], [1, 2]] # just an update to make sure parsers support it # Line breaks are OK when inside arrays hosts = [ "alpha", "omega" ] # Products [[products]] name = "Hammer" sku = 738594937 [[products]] name = "Nail" sku = 284758393 color = "gray" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/examples/fruit.toml0000644000000000000000000000030214567257576015240 0ustar00[[fruit.blah]] name = "apple" [fruit.blah.physical] color = "red" shape = "round" [[fruit.blah]] name = "banana" [fruit.blah.physical] color = "yellow" shape = "bent" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/examples/hard.toml0000644000000000000000000000257514567257576015043 0ustar00# Test file for TOML # Only this one tries to emulate a TOML file written by a user of the kind of parser writers probably hate # This part you'll really hate [the] test_string = "You'll hate me after this - #" # " Annoying, isn't it? [the.hard] test_array = [ "] ", " # "] # ] There you go, parse this! test_array2 = [ "Test #11 ]proved that", "Experiment #9 was a success" ] # You didn't think it'd as easy as chucking out the last #, did you? another_test_string = " Same thing, but with a string #" harder_test_string = " And when \"'s are in the string, along with # \"" # "and comments are there too" # Things will get harder [the.hard."bit#"] "what?" = "You don't think some user won't do that?" multi_line_array = [ "]", # ] Oh yes I did ] # Each of the following keygroups/key value pairs should produce an error. Uncomment to them to test #[error] if you didn't catch this, your parser is broken #string = "Anything other than tabs, spaces and newline after a keygroup or key value pair has ended should produce an error unless it is a comment" like this #array = [ # "This might most likely happen in multiline arrays", # Like here, # "or here, # and here" # ] End of array comment, forgot the # #number = 3.14 pi <--again forgot the # ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/examples/invalid/array_duplicate_comma.toml0000644000000000000000000000002414567257576022062 0ustar00simple = [ 1 ,, 2 ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/examples/invalid/array_leading_comma.toml0000644000000000000000000000002114567257576021510 0ustar00simple = [ , 1 ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/examples/invalid/array_no_comma.toml0000644000000000000000000000002114567257576020521 0ustar00simple = [ 1 2 ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/examples/invalid/array_with_invalid_chars.toml0000644000000000000000000000021514567257576022577 0ustar00array = [ "This might most likely happen in multiline arrays", Like here, "or here, and here" ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/examples/invalid/inline_table_duplicate_comma.toml0000644000000000000000000000003314567257576023371 0ustar00simple = { a = 1 ,, b = 2} ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/examples/invalid/inline_table_leading_comma.toml0000644000000000000000000000002514567257576023023 0ustar00simple = { , a = 1 } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/examples/invalid/inline_table_no_comma.toml0000644000000000000000000000003014567257576022030 0ustar00simple = { a = 1 b = 2} ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/examples/invalid/inline_table_trailing_comma.toml0000644000000000000000000000002514567257576023231 0ustar00simple = { a = 1 , } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/examples/invalid/invalid_date.toml0000644000000000000000000000002214567257576020157 0ustar00date = 2018-13-33 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/examples/invalid/invalid_datetime.toml0000644000000000000000000000003714567257576021044 0ustar00datetime = 2018-13-33T23:12:34 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/examples/invalid/invalid_number.toml0000644000000000000000000000001714567257576020536 0ustar00number = 34"5" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/examples/invalid/invalid_time.toml0000644000000000000000000000002414567257576020202 0ustar00datetime = 26:61:61 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/examples/invalid/key_value_with_trailing_chars.toml0000644000000000000000000000024014567257576023626 0ustar00string = "Anything other than tabs, spaces and newline after a keygroup or key value pair has ended should produce an error unless it is a comment" like this ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/examples/invalid/newline_in_singleline_string.toml0000644000000000000000000000003014567257576023461 0ustar00this = "this that more" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/examples/invalid/section_with_trailing_characters.toml0000644000000000000000000000007214567257576024330 0ustar00[error] if you didn't catch this, your parser is broken ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/examples/invalid/string_slash_whitespace_char.toml0000644000000000000000000000004614567257576023453 0ustar00invalid_escape = """this \ more""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/examples/invalid/trailing_comma.toml0000644000000000000000000000003514567257576020525 0ustar00hello = "world" , # this ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/examples/json/0.5.0.json0000644000000000000000000000124414567257576015524 0ustar00{ "date": "1979-05-27", "time": "07:32:00", "plus-infinity": Infinity, "sf1": Infinity, "sf2": Infinity, "sf3": -Infinity, "sf4": NaN, "sf5": NaN, "sf6": NaN, "hex1": 3735928559, "hex2": 3735928559, "hex3": 3735928559, "oct1": 342391, "oct2": 493, "bin1": 214, "physical": { "color": "orange", "shape": "round" }, "site": { "google.com": true }, "a": { "b": { "c": 1, "d": 2 } }, "table": { "a": { "b": { "c": 1, "d": 2 }, "c": 3 } } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/examples/json/pyproject.json0000644000000000000000000000641414567257576017107 0ustar00{ "tool": { "poetry": { "name": "poetry", "version": "0.11.2", "description": "Python dependency management and packaging made easy.", "authors": [ "S\u00e9bastien Eustace " ], "license": "MIT", "readme": "README.md", "homepage": "https://poetry.eustace.io/", "repository": "https://github.com/sdispater/poet", "documentation": "https://poetry.eustace.io/docs", "keywords": [ "packaging", "dependency", "poetry" ], "classifiers": [ "Topic :: Software Development :: Build Tools", "Topic :: Software Development :: Libraries :: Python Modules" ], "dependencies": { "python": "~2.7 || ^3.4", "cleo": "^0.6.7", "pytoml": "^0.1.16", "requests": "^2.18", "cachy": "^0.2", "requests-toolbelt": "^0.8.0", "jsonschema": "^2.6", "pyrsistent": "^0.14.2", "pyparsing": "^2.2", "cachecontrol": { "version": "^0.12.4", "extras": [ "filecache" ] }, "pkginfo": "^1.4", "html5lib": "^1.0", "shellingham": "^1.1", "typing": { "version": "^3.6", "python": "~2.7 || ~3.4" }, "pathlib2": { "version": "^2.3", "python": "~2.7 || ~3.4" }, "virtualenv": { "version": "^16.0", "python": "~2.7" } }, "dev-dependencies": { "pytest": "^3.4", "pytest-cov": "^2.5", "mkdocs": "^0.17.3", "pymdown-extensions": "^4.9", "pygments": "^2.2", "pytest-mock": "^1.9", "pygments-github-lexers": "^0.0.5", "black": { "version": "^18.3-alpha.0", "python": "^3.6" }, "pre-commit": "^1.10", "tox": "^3.0" }, "scripts": { "poetry": "poetry.console:main" } }, "black": { "line-length": 88, "py36": true, "include": "\\.pyi?$", "exclude": "/(\n \\.git\n | \\.hg\n | \\.mypy_cache\n | \\.tox\n | \\.venv\n | _build\n | build\n | dist\n | tests/toml-test\n)/\n" }, "foo": [ { "name": "first" }, { "name": "second" }, { "name": "third" }, { "name": "fourth" } ], "bar": [ { "foo": "bar" } ] }, "build-system": { "requires": [ "poetry-core>=1.0.0a3" ], "build-backend": "poetry.core.masonry.api" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/examples/json/table_names.json0000644000000000000000000000045314567257576017337 0ustar00{ "Special \"table\"": { "foo": "bar" }, "BJ's Restaurant": { "account": "dining" }, "]": { "foo": 1 }, "[bracket]": { "bar": 2 }, "a": { "b.c": { "d": { "baz": 3 } } } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/examples/newline_in_strings.toml0000644000000000000000000000006514567257576020015 0ustar00this = "this\\nthat\\nmore" foo = """bar baz qux """ ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/examples/preserve_quotes_in_string.toml0000644000000000000000000000003214567257576021416 0ustar00this = """this "" more""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/examples/pyproject.toml0000644000000000000000000000371214567257576016136 0ustar00[tool.poetry] name = "poetry" version = "0.11.2" description = "Python dependency management and packaging made easy." authors = [ "Sébastien Eustace " ] license = "MIT" readme = "README.md" homepage = "https://poetry.eustace.io/" repository = "https://github.com/sdispater/poet" documentation = "https://poetry.eustace.io/docs" keywords = ["packaging", "dependency", "poetry"] classifiers = [ "Topic :: Software Development :: Build Tools", "Topic :: Software Development :: Libraries :: Python Modules" ] # Requirements [tool.poetry.dependencies] python = "~2.7 || ^3.4" cleo = "^0.6.7" pytoml = "^0.1.16" requests = "^2.18" cachy = "^0.2" requests-toolbelt = "^0.8.0" jsonschema = "^2.6" pyrsistent = "^0.14.2" pyparsing = "^2.2" cachecontrol = { version = "^0.12.4", extras = ["filecache"] } pkginfo = "^1.4" html5lib = "^1.0" shellingham = "^1.1" # The typing module is not in the stdlib in Python 2.7 and 3.4 typing = { version = "^3.6", python = "~2.7 || ~3.4" } # Use pathlib2 for Python 2.7 and 3.4 pathlib2 = { version = "^2.3", python = "~2.7 || ~3.4" } # Use virtualenv for Python 2.7 since venv does not exist virtualenv = { version = "^16.0", python = "~2.7" } [tool.poetry.dev-dependencies] pytest = "^3.4" pytest-cov = "^2.5" mkdocs = "^0.17.3" pymdown-extensions = "^4.9" pygments = "^2.2" pytest-mock = "^1.9" pygments-github-lexers = "^0.0.5" black = { version = "^18.3-alpha.0", python = "^3.6" } pre-commit = "^1.10" tox = "^3.0" [tool.poetry.scripts] poetry = "poetry.console:main" [build-system] requires = ["poetry-core>=1.0.0a3"] build-backend = "poetry.core.masonry.api" [tool.black] line-length = 88 py36 = true include = '\.pyi?$' exclude = ''' /( \.git | \.hg | \.mypy_cache | \.tox | \.venv | _build | build | dist | tests/toml-test )/ ''' [[tool.foo]] name = 'first' [[tool.foo]] name = 'second' # CS [[tool.foo]] name = 'third' [[tool.foo]] name = 'fourth' [[tool.bar]] foo = "bar" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/examples/sections_with_same_start.toml0000644000000000000000000000014414567257576021217 0ustar00[section] key = "value" [section2] "key2" = 12.34 [section2.sub-section] "key3" = "something" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/examples/string_slash_whitespace_newline.toml0000644000000000000000000000012214567257576022544 0ustar00no_whitespace = """hello \ world""" has_whitespace = """hello \ world""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/examples/table_names.toml0000644000000000000000000000021714567257576016366 0ustar00['Special "table"'] foo = "bar" ["BJ's Restaurant"] account = "dining" ["]"] foo = 1 [ "[bracket]" ] bar = 2 [ a . "b.c" . d ] baz = 3 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/examples/test.toml0000644000000000000000000000305314567257576015074 0ustar00# This is a TOML document. title = "TOML Example" [owner] name = "Tom Preston-Werner" dob = 1979-05-27T07:32:00-08:00 # First class dates [database] server = "192.168.1.1" ports = [ 8001, 8001, 8002 ] connection_max = 5000 enabled = true [servers] # Indentation (tabs and/or spaces) is allowed but not required [servers.alpha] ip = "10.0.0.1" dc = "eqdc10" [servers.beta] ip = "10.0.0.2" dc = "eqdc10" [clients] data = [ ["gamma", "delta"], [1, 2] ] # Line breaks are OK when inside arrays hosts = [ "alpha", "omega" ] str_multiline = """ Roses are red Violets are blue""" str_quoted = "I'm a string. \"You can quote me\". Name\tJos\u00E9\nLocation\tSF." str2 = """ The quick brown \ fox jumps over \ the lazy dog.""" key3 = """\ The quick brown \ fox jumps over \ the lazy dog.\ """ # What you see is what you get. winpath = 'C:\Users\nodejs\templates' winpath2 = '\\ServerX\admin$\system32\' quoted = 'Tom "Dubs" Preston-Werner' regex = '<\i\c*\s*>' regex2 = '''I [dw]on't need \d{2} apples''' lines = ''' The first newline is trimmed in raw strings. All other whitespace is preserved. ''' [[fruit]] name = "apple" [fruit.physical] color = "red" shape = "round" [[fruit.variety]] name = "red delicious" [[fruit.variety]] name = "granny smith" [[fruit]] name = "banana" [[fruit.variety]] name = "plantain" points = [ { x = 1, y = 2, z = 3 }, # This value is so special to me { x = 7, y = 8, z = 9 }, { x = 2, y = 4, z = 8 } ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/test_api.py0000644000000000000000000003007514567257576013570 0ustar00import io import json import os from datetime import date from datetime import datetime from datetime import time from types import MappingProxyType import pytest import tomlkit from tomlkit import dump from tomlkit import dumps from tomlkit import load from tomlkit import loads from tomlkit import parse from tomlkit.exceptions import InvalidCharInStringError from tomlkit.exceptions import InvalidControlChar from tomlkit.exceptions import InvalidDateError from tomlkit.exceptions import InvalidDateTimeError from tomlkit.exceptions import InvalidNumberError from tomlkit.exceptions import InvalidStringError from tomlkit.exceptions import InvalidTimeError from tomlkit.exceptions import UnexpectedCharError from tomlkit.items import AoT from tomlkit.items import Array from tomlkit.items import Bool from tomlkit.items import Date from tomlkit.items import DateTime from tomlkit.items import Float from tomlkit.items import InlineTable from tomlkit.items import Integer from tomlkit.items import Key from tomlkit.items import Table from tomlkit.items import Time from tomlkit.toml_document import TOMLDocument def json_serial(obj): """JSON serializer for objects not serializable by default json code""" if isinstance(obj, (datetime, date, time)): return obj.isoformat() raise TypeError(f"Type {type(obj)} not serializable") @pytest.mark.parametrize( "example_name", [ "example", "fruit", "hard", "sections_with_same_start", "pyproject", "0.5.0", "test", "newline_in_strings", "preserve_quotes_in_string", "string_slash_whitespace_newline", "table_names", ], ) def test_parse_can_parse_valid_toml_files(example, example_name): assert isinstance(parse(example(example_name)), TOMLDocument) assert isinstance(loads(example(example_name)), TOMLDocument) @pytest.mark.parametrize( "example_name", [ "example", "fruit", "hard", "sections_with_same_start", "pyproject", "0.5.0", "test", "newline_in_strings", "preserve_quotes_in_string", "string_slash_whitespace_newline", "table_names", ], ) def test_load_from_file_object(example_name): with open( os.path.join(os.path.dirname(__file__), "examples", example_name + ".toml"), encoding="utf-8", ) as fp: assert isinstance(load(fp), TOMLDocument) @pytest.mark.parametrize("example_name", ["0.5.0", "pyproject", "table_names"]) def test_parsed_document_are_properly_json_representable( example, json_example, example_name ): doc = json.loads(json.dumps(parse(example(example_name)), default=json_serial)) json_doc = json.loads(json_example(example_name)) assert doc == json_doc @pytest.mark.parametrize( "example_name,error", [ ("section_with_trailing_characters", UnexpectedCharError), ("key_value_with_trailing_chars", UnexpectedCharError), ("array_with_invalid_chars", UnexpectedCharError), ("invalid_number", InvalidNumberError), ("invalid_date", InvalidDateError), ("invalid_time", InvalidTimeError), ("invalid_datetime", InvalidDateTimeError), ("trailing_comma", UnexpectedCharError), ("newline_in_singleline_string", InvalidControlChar), ("string_slash_whitespace_char", InvalidCharInStringError), ("array_no_comma", UnexpectedCharError), ("array_duplicate_comma", UnexpectedCharError), ("array_leading_comma", UnexpectedCharError), ("inline_table_no_comma", UnexpectedCharError), ("inline_table_duplicate_comma", UnexpectedCharError), ("inline_table_leading_comma", UnexpectedCharError), ("inline_table_trailing_comma", UnexpectedCharError), ], ) def test_parse_raises_errors_for_invalid_toml_files( invalid_example, error, example_name ): with pytest.raises(error): parse(invalid_example(example_name)) @pytest.mark.parametrize( "example_name", [ "example", "fruit", "hard", "sections_with_same_start", "pyproject", "0.5.0", "test", "table_names", ], ) def test_original_string_and_dumped_string_are_equal(example, example_name): content = example(example_name) parsed = parse(content) assert content == dumps(parsed) def test_a_raw_dict_can_be_dumped(): s = dumps({"foo": "bar"}) assert s == 'foo = "bar"\n' def test_mapping_types_can_be_dumped(): x = MappingProxyType({"foo": "bar"}) assert dumps(x) == 'foo = "bar"\n' def test_dumps_weird_object(): with pytest.raises(TypeError): dumps(object()) def test_dump_tuple_value_as_array(): x = {"foo": (1, 2)} assert dumps(x) == "foo = [1, 2]\n" x = {"foo": ({"a": 1}, {"a": 2})} assert dumps(x) == "[[foo]]\na = 1\n\n[[foo]]\na = 2\n" def test_dump_to_file_object(): doc = {"foo": "bar"} fp = io.StringIO() dump(doc, fp) assert fp.getvalue() == 'foo = "bar"\n' def test_integer(): i = tomlkit.integer("34") assert isinstance(i, Integer) def test_float(): i = tomlkit.float_("34.56") assert isinstance(i, Float) def test_boolean(): i = tomlkit.boolean("true") assert isinstance(i, Bool) def test_date(): dt = tomlkit.date("1979-05-13") assert isinstance(dt, Date) with pytest.raises(ValueError): tomlkit.date("12:34:56") def test_time(): dt = tomlkit.time("12:34:56") assert isinstance(dt, Time) with pytest.raises(ValueError): tomlkit.time("1979-05-13") def test_datetime(): dt = tomlkit.datetime("1979-05-13T12:34:56") assert isinstance(dt, DateTime) with pytest.raises(ValueError): tomlkit.time("1979-05-13") def test_array(): a = tomlkit.array() assert isinstance(a, Array) a = tomlkit.array("[1,2, 3]") assert isinstance(a, Array) def test_table(): t = tomlkit.table() assert isinstance(t, Table) def test_inline_table(): t = tomlkit.inline_table() assert isinstance(t, InlineTable) def test_aot(): t = tomlkit.aot() assert isinstance(t, AoT) def test_key(): k = tomlkit.key("foo") assert isinstance(k, Key) def test_key_value(): k, i = tomlkit.key_value("foo = 12") assert isinstance(k, Key) assert isinstance(i, Integer) def test_string(): s = tomlkit.string('foo "') assert s.value == 'foo "' assert s.as_string() == '"foo \\""' def test_item_dict_to_table(): t = tomlkit.item({"foo": {"bar": "baz"}}) assert t.value == {"foo": {"bar": "baz"}} assert ( t.as_string() == """[foo] bar = "baz" """ ) def test_item_mixed_aray(): example = [{"a": 3}, "b", 42] expected = '[{a = 3}, "b", 42]' t = tomlkit.item(example) assert t.as_string().strip() == expected assert dumps({"x": {"y": example}}).strip() == "[x]\ny = " + expected def test_build_super_table(): doc = tomlkit.document() table = tomlkit.table(True) table.add("bar", {"x": 1}) doc.add("foo", table) assert doc.as_string() == "[foo.bar]\nx = 1\n" def test_add_dotted_key(): doc = tomlkit.document() doc.add(tomlkit.key(["foo", "bar"]), 1) assert doc.as_string() == "foo.bar = 1\n" table = tomlkit.table() table.add(tomlkit.key(["foo", "bar"]), 1) assert table.as_string() == "foo.bar = 1\n" @pytest.mark.parametrize( ("raw", "expected"), [ ("true", True), ("false", False), ], ) def test_value_parses_boolean(raw, expected): parsed = tomlkit.value(raw) assert parsed == expected @pytest.mark.parametrize( "raw", ["t", "f", "tru", "fals", "test", "friend", "truthy", "falsify"] ) def test_value_rejects_values_looking_like_bool_at_start(raw): """Reproduces https://github.com/sdispater/tomlkit/issues/165""" with pytest.raises(tomlkit.exceptions.ParseError): tomlkit.value(raw) @pytest.mark.parametrize( "raw", [ "truee", "truely", "true-thoughts", "true_hip_hop", ], ) def test_value_rejects_values_having_true_prefix(raw): """Values that have ``true`` or ``false`` as prefix but then have additional chars are rejected.""" with pytest.raises(tomlkit.exceptions.ParseError): tomlkit.value(raw) @pytest.mark.parametrize( "raw", [ "falsee", "falsely", "false-ideas", "false_prophet", ], ) def test_value_rejects_values_having_false_prefix(raw): """Values that have ``true`` or ``false`` as prefix but then have additional chars are rejected.""" with pytest.raises(tomlkit.exceptions.ParseError): tomlkit.value(raw) @pytest.mark.parametrize( "raw", [ '"foo"1.2', "truefalse", "1.0false", "100true", "truetrue", "falsefalse", "1.2.3.4", "[][]", "{a=[][]}[]", "true[]", "false{a=1}", ], ) def test_value_rejects_values_with_appendage(raw): """Values that appear valid at the beginning but leave chars unparsed are rejected.""" with pytest.raises(tomlkit.exceptions.ParseError): tomlkit.value(raw) def test_create_super_table_with_table(): data = {"foo": {"bar": {"a": 1}}} assert dumps(data) == "[foo.bar]\na = 1\n" def test_create_super_table_with_aot(): data = {"foo": {"bar": [{"a": 1}]}} assert dumps(data) == "[[foo.bar]]\na = 1\n" @pytest.mark.parametrize( "kwargs, example, expected", [ ({}, "My\nString", '"My\\nString"'), ({"escape": False}, "My String\t", '"My String\t"'), ({"literal": True}, "My String\t", "'My String\t'"), ({"escape": True, "literal": True}, "My String\t", "'My String\t'"), ({}, "My String\u0001", '"My String\\u0001"'), ({}, "My String\u000b", '"My String\\u000b"'), ({}, "My String\x08", '"My String\\b"'), ({}, "My String\x0c", '"My String\\f"'), ({}, "My String\x01", '"My String\\u0001"'), ({}, "My String\x06", '"My String\\u0006"'), ({}, "My String\x12", '"My String\\u0012"'), ({}, "My String\x7f", '"My String\\u007f"'), ({"escape": False}, "My String\u0001", '"My String\u0001"'), ({"multiline": True}, "\nMy\nString\n", '"""\nMy\nString\n"""'), ({"multiline": True}, 'My"String', '"""My"String"""'), ({"multiline": True}, 'My""String', '"""My""String"""'), ({"multiline": True}, 'My"""String', '"""My""\\"String"""'), ({"multiline": True}, 'My""""String', '"""My""\\""String"""'), ( {"multiline": True}, '"""My"""Str"""ing"""', '"""""\\"My""\\"Str""\\"ing""\\""""', ), ({"multiline": True, "literal": True}, "My\nString", "'''My\nString'''"), ({"multiline": True, "literal": True}, "My'String", "'''My'String'''"), ({"multiline": True, "literal": True}, "My\r\nString", "'''My\r\nString'''"), ( {"literal": True}, r"C:\Users\nodejs\templates", r"'C:\Users\nodejs\templates'", ), ({"literal": True}, r"<\i\c*\s*>", r"'<\i\c*\s*>'"), ( {"multiline": True, "literal": True}, r"I [dw]on't need \d{2} apples", r"'''I [dw]on't need \d{2} apples'''", ), ], ) def test_create_string(kwargs, example, expected): value = tomlkit.string(example, **kwargs) assert value.as_string() == expected @pytest.mark.parametrize( "kwargs, example", [ ({"literal": True}, "My'String"), ({"literal": True}, "My\nString"), ({"literal": True}, "My\r\nString"), ({"literal": True}, "My\bString"), ({"literal": True}, "My\x08String"), ({"literal": True}, "My\x0cString"), ({"literal": True}, "My\x7fString"), ({"multiline": True, "literal": True}, "My'''String"), ], ) def test_create_string_with_invalid_characters(kwargs, example): with pytest.raises(InvalidStringError): tomlkit.string(example, **kwargs) def test_parse_empty_quoted_table_name(): content = "['']\nx = 1\n" parsed = loads(content) assert parsed == {"": {"x": 1}} assert dumps(parsed) == content ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/test_build.py0000644000000000000000000000602114567257576014110 0ustar00import datetime from tomlkit import aot from tomlkit import array from tomlkit import comment from tomlkit import document from tomlkit import item from tomlkit import nl from tomlkit import parse from tomlkit import table from tomlkit._utils import _utc def test_build_example(example): content = example("example") doc = document() doc.add(comment("This is a TOML document. Boom.")) doc.add(nl()) doc.add("title", "TOML Example") owner = table() owner.add("name", "Tom Preston-Werner") owner.add("organization", "GitHub") owner.add("bio", "GitHub Cofounder & CEO\nLikes tater tots and beer.") owner.add("dob", datetime.datetime(1979, 5, 27, 7, 32, tzinfo=_utc)) owner["dob"].comment("First class dates? Why not?") doc.add("owner", owner) database = table() database["server"] = "192.168.1.1" database["ports"] = [8001, 8001, 8002] database["connection_max"] = 5000 database["enabled"] = True doc["database"] = database servers = table() servers.add(nl()) c = comment( "You can indent as you please. Tabs or spaces. TOML don't care." ).indent(2) c.trivia.trail = "" servers.add(c) alpha = table() servers.append("alpha", alpha) alpha.indent(2) alpha.add("ip", "10.0.0.1") alpha.add("dc", "eqdc10") beta = table() servers.append("beta", beta) beta.add("ip", "10.0.0.2") beta.add("dc", "eqdc10") beta.add("country", "中国") beta["country"].comment("This should be parsed as UTF-8") beta.indent(2) doc["servers"] = servers clients = table() doc.add("clients", clients) clients["data"] = item([["gamma", "delta"], [1, 2]]).comment( "just an update to make sure parsers support it" ) clients.add(nl()) clients.add(comment("Line breaks are OK when inside arrays")) clients["hosts"] = array( """[ "alpha", "omega" ]""" ) doc.add(nl()) doc.add(comment("Products")) products = aot() doc["products"] = products hammer = table().indent(2) hammer["name"] = "Hammer" hammer["sku"] = 738594937 nail = table().indent(2) nail["name"] = "Nail" nail["sku"] = 284758393 nail["color"] = "gray" products.append(hammer) products.append(nail) assert content == doc.as_string() def test_add_remove(): content = "" doc = parse(content) doc.append("foo", "bar") assert ( doc.as_string() == """foo = "bar" """ ) doc.remove("foo") assert doc.as_string() == "" def test_append_table_after_multiple_indices(): content = """ [packages] foo = "*" [settings] enable = false [packages.bar] version = "*" """ doc = parse(content) doc.append("foobar", {"name": "John"}) def test_top_level_keys_are_put_at_the_root_of_the_document(): doc = document() doc.add(comment("Comment")) doc["foo"] = {"name": "test"} doc["bar"] = 1 expected = """\ # Comment bar = 1 [foo] name = "test" """ assert doc.as_string() == expected ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/test_items.py0000644000000000000000000004777414567257576014156 0ustar00import copy import math import pickle from datetime import date from datetime import datetime from datetime import time from datetime import timedelta from datetime import timezone import pytest from tests.util import assert_is_ppo from tests.util import elementary_test from tomlkit import api from tomlkit import parse from tomlkit.exceptions import NonExistentKey from tomlkit.items import Array from tomlkit.items import Bool from tomlkit.items import Comment from tomlkit.items import InlineTable from tomlkit.items import Integer from tomlkit.items import Item from tomlkit.items import KeyType from tomlkit.items import Null from tomlkit.items import SingleKey as Key from tomlkit.items import String from tomlkit.items import StringType from tomlkit.items import Table from tomlkit.items import Trivia from tomlkit.items import item from tomlkit.parser import Parser @pytest.fixture() def tz_pst(): try: from datetime import timezone return timezone(timedelta(hours=-8), "PST") except ImportError: from datetime import tzinfo class PST(tzinfo): def utcoffset(self, dt): return timedelta(hours=-8) def tzname(self, dt): return "PST" def dst(self, dt): return timedelta(0) return PST() @pytest.fixture() def tz_utc(): try: from datetime import timezone return timezone.utc except ImportError: from datetime import tzinfo class UTC(tzinfo): def utcoffset(self, dt): return timedelta(hours=0) def tzname(self, dt): return "UTC" def dst(self, dt): return timedelta(0) return UTC() def test_item_base_has_no_unwrap(): trivia = Trivia(indent="\t", comment_ws=" ", comment="For unit test") item = Item(trivia) try: item.unwrap() except NotImplementedError: pass else: raise AssertionError("`items.Item` should not implement `unwrap`") def test_integer_unwrap(): elementary_test(item(666), int) def test_float_unwrap(): elementary_test(item(2.78), float) def test_false_unwrap(): elementary_test(item(False), bool) def test_true_unwrap(): elementary_test(item(True), bool) def test_datetime_unwrap(): dt = datetime.now(tz=timezone.utc) elementary_test(item(dt), datetime) def test_string_unwrap(): elementary_test(item("hello"), str) def test_null_unwrap(): n = Null() elementary_test(n, type(None)) def test_aot_unwrap(): d = item([{"a": "A"}, {"b": "B"}]) unwrapped = d.unwrap() assert_is_ppo(unwrapped, list) for du, _ in zip(unwrapped, d): assert_is_ppo(du, dict) for ku in du: vu = du[ku] assert_is_ppo(ku, str) assert_is_ppo(vu, str) def test_time_unwrap(): t = time(3, 8, 14) elementary_test(item(t), time) def test_date_unwrap(): d = date.today() elementary_test(item(d), date) def test_array_unwrap(): trivia = Trivia(indent="\t", comment_ws=" ", comment="For unit test") i = item(666) f = item(2.78) b = item(False) a = Array([i, f, b], trivia) a_unwrapped = a.unwrap() assert_is_ppo(a_unwrapped, list) assert_is_ppo(a_unwrapped[0], int) assert_is_ppo(a_unwrapped[1], float) assert_is_ppo(a_unwrapped[2], bool) def test_abstract_table_unwrap(): table = item({"foo": "bar"}) super_table = item({"table": table, "baz": "borg"}) table_unwrapped = super_table.unwrap() sub_table = table_unwrapped["table"] assert_is_ppo(table_unwrapped, dict) assert_is_ppo(sub_table, dict) for ku in sub_table: vu = sub_table[ku] assert_is_ppo(ku, str) assert_is_ppo(vu, str) def test_key_comparison(): k = Key("foo") assert k == Key("foo") assert k == "foo" assert k != "bar" assert k != 5 def test_items_can_be_appended_to_and_removed_from_a_table(): string = """[table] """ parser = Parser(string) _, table = parser._parse_table() assert isinstance(table, Table) assert table.as_string() == "" table.append(Key("foo"), String(StringType.SLB, "bar", "bar", Trivia(trail="\n"))) assert table.as_string() == 'foo = "bar"\n' table.append( Key("baz"), Integer(34, Trivia(comment_ws=" ", comment="# Integer", trail=""), "34"), ) assert table.as_string() == 'foo = "bar"\nbaz = 34 # Integer' table.remove(Key("baz")) assert table.as_string() == 'foo = "bar"\n' table.remove(Key("foo")) assert table.as_string() == "" with pytest.raises(NonExistentKey): table.remove(Key("foo")) def test_items_can_be_appended_to_and_removed_from_an_inline_table(): string = """table = {} """ parser = Parser(string) _, table = parser._parse_item() assert isinstance(table, InlineTable) assert table.as_string() == "{}" table.append(Key("foo"), String(StringType.SLB, "bar", "bar", Trivia(trail=""))) assert table.as_string() == '{foo = "bar"}' table.append(Key("baz"), Integer(34, Trivia(trail=""), "34")) assert table.as_string() == '{foo = "bar", baz = 34}' table.remove(Key("baz")) assert table.as_string() == '{foo = "bar"}' table.remove(Key("foo")) assert table.as_string() == "{}" with pytest.raises(NonExistentKey): table.remove(Key("foo")) def test_inf_and_nan_are_supported(example): content = example("0.5.0") doc = parse(content) assert doc["sf1"] == float("inf") assert doc["sf2"] == float("inf") assert doc["sf3"] == float("-inf") assert math.isnan(doc["sf4"]) assert math.isnan(doc["sf5"]) assert math.isnan(doc["sf6"]) def test_hex_octal_and_bin_integers_are_supported(example): content = example("0.5.0") doc = parse(content) assert doc["hex1"] == 3735928559 assert doc["hex2"] == 3735928559 assert doc["hex3"] == 3735928559 assert doc["oct1"] == 342391 assert doc["oct2"] == 493 assert doc["bin1"] == 214 def test_key_automatically_sets_proper_string_type_if_not_bare(): key = Key("foo.bar") assert key.t == KeyType.Basic key = Key("") assert key.t == KeyType.Basic def test_array_behaves_like_a_list(): a = item([1, 2]) assert a == [1, 2] assert a.as_string() == "[1, 2]" a += [3, 4] assert a == [1, 2, 3, 4] assert a.as_string() == "[1, 2, 3, 4]" del a[2] assert a == [1, 2, 4] assert a.as_string() == "[1, 2, 4]" assert a.pop() == 4 assert a == [1, 2] assert a.as_string() == "[1, 2]" a[0] = 4 assert a == [4, 2] a[-2] = 0 assert a == [0, 2] del a[-2] assert a == [2] assert a.as_string() == "[2]" a.clear() assert a == [] assert a.as_string() == "[]" content = """a = [1, 2,] # Comment """ doc = parse(content) assert str(doc["a"]) == "[1, 2]" assert doc["a"] == [1, 2] doc["a"] += [3, 4] assert doc["a"] == [1, 2, 3, 4] assert ( doc.as_string() == """a = [1, 2, 3, 4] # Comment """ ) def test_array_multiline(): t = item([1, 2, 3, 4, 5, 6, 7, 8]) t.multiline(True) expected = """\ [ 1, 2, 3, 4, 5, 6, 7, 8, ]""" assert expected == t.as_string() t = item([]) t.multiline(True) assert t.as_string() == "[]" def test_array_multiline_modify(): doc = parse( """\ a = [ "abc" ]""" ) doc["a"].append("def") expected = """\ a = [ "abc", "def" ]""" assert expected == doc.as_string() doc["a"].insert(1, "ghi") expected = """\ a = [ "abc", "ghi", "def" ]""" assert expected == doc.as_string() def test_append_to_empty_array(): doc = parse("x = [ ]") doc["x"].append("a") assert doc.as_string() == 'x = ["a" ]' doc = parse("x = [\n]") doc["x"].append("a") assert doc.as_string() == 'x = [\n "a"\n]' def test_modify_array_with_comment(): doc = parse("x = [ # comment\n]") doc["x"].append("a") assert doc.as_string() == 'x = [ # comment\n "a"\n]' doc = parse( """\ x = [ "a", # comment "b" ]""" ) doc["x"].insert(1, "c") expected = """\ x = [ "a", # comment "c", "b" ]""" assert doc.as_string() == expected doc = parse( """\ x = [ 1 # comment ]""" ) doc["x"].append(2) assert ( doc.as_string() == """\ x = [ 1, # comment 2 ]""" ) doc["x"].pop(0) assert doc.as_string() == "x = [\n 2\n]" def test_append_to_multiline_array_with_comment(): doc = parse( """\ x = [ # Here is a comment 1, 2 ] """ ) doc["x"].multiline(True).append(3) assert ( doc.as_string() == """\ x = [ # Here is a comment 1, 2, 3, ] """ ) assert doc["x"].pop() == 3 assert ( doc.as_string() == """\ x = [ # Here is a comment 1, 2, ] """ ) def test_append_dict_to_array(): doc = parse("x = []") doc["x"].append({"name": "John Doe", "email": "john@doe.com"}) expected = 'x = [{name = "John Doe",email = "john@doe.com"}]' assert doc.as_string() == expected # Make sure the produced string is valid assert parse(doc.as_string()) == doc def test_dicts_are_converted_to_tables(): t = item({"foo": {"bar": "baz"}}) assert ( t.as_string() == """[foo] bar = "baz" """ ) def test_array_add_line(): t = api.array() t.add_line(1, 2, 3, comment="Line 1") t.add_line(4, 5, 6, comment="Line 2") t.add_line(7, api.ws(","), api.ws(" "), 8, add_comma=False) t.add_line(comment="Line 4") t.add_line(indent="") assert len(t) == 8 assert list(t) == [1, 2, 3, 4, 5, 6, 7, 8] assert ( t.as_string() == """[ 1, 2, 3, # Line 1 4, 5, 6, # Line 2 7, 8, # Line 4 ]""" ) def test_array_add_line_invalid_value(): t = api.array() with pytest.raises(ValueError, match="is not allowed"): t.add_line(1, api.ws(" ")) with pytest.raises(ValueError, match="is not allowed"): t.add_line(Comment(Trivia(" ", comment="test"))) assert len(t) == 0 def test_dicts_are_converted_to_tables_and_keep_order(): t = item( { "foo": { "bar": "baz", "abc": 123, "baz": [{"c": 3, "b": 2, "a": 1}], }, } ) assert ( t.as_string() == """[foo] bar = "baz" abc = 123 [[foo.baz]] c = 3 b = 2 a = 1 """ ) def test_dicts_are_converted_to_tables_and_are_sorted_if_requested(): t = item( { "foo": { "bar": "baz", "abc": 123, "baz": [{"c": 3, "b": 2, "a": 1}], }, }, _sort_keys=True, ) assert ( t.as_string() == """[foo] abc = 123 bar = "baz" [[foo.baz]] a = 1 b = 2 c = 3 """ ) def test_dicts_with_sub_dicts_are_properly_converted(): t = item( {"foo": {"bar": {"string": "baz"}, "int": 34, "float": 3.14}}, _sort_keys=True ) assert ( t.as_string() == """[foo] float = 3.14 int = 34 [foo.bar] string = "baz" """ ) def test_item_array_of_dicts_converted_to_aot(): a = item({"foo": [{"bar": "baz"}]}) assert ( a.as_string() == """[[foo]] bar = "baz" """ ) def test_add_float_to_int(): content = "[table]\nmy_int = 2043" doc = parse(content) doc["table"]["my_int"] += 5.0 assert doc["table"]["my_int"] == 2048.0 assert isinstance(doc["table"]["my_int"], float) def test_sub_float_from_int(): content = "[table]\nmy_int = 2048" doc = parse(content) doc["table"]["my_int"] -= 5.0 assert doc["table"]["my_int"] == 2043.0 assert isinstance(doc["table"]["my_int"], float) def test_sub_int_from_float(): content = "[table]\nmy_int = 2048.0" doc = parse(content) doc["table"]["my_int"] -= 5 assert doc["table"]["my_int"] == 2043.0 def test_add_sum_int_with_float(): content = "[table]\nmy_int = 2048.3" doc = parse(content) doc["table"]["my_int"] += 5 assert doc["table"]["my_int"] == 2053.3 def test_integers_behave_like_ints(): i = item(34) assert i == 34 assert i.as_string() == "34" i += 1 assert i == 35 assert i.as_string() == "35" i -= 2 assert i == 33 assert i.as_string() == "33" i /= 2 assert i == 16.5 assert i.as_string() == "16.5" doc = parse("int = +34") doc["int"] += 1 assert doc.as_string() == "int = +35" def test_floats_behave_like_floats(): i = item(34.12) assert i == 34.12 assert i.as_string() == "34.12" i += 1 assert i == 35.12 assert i.as_string() == "35.12" i -= 2 assert i == 33.12 assert i.as_string() == "33.12" doc = parse("float = +34.12") doc["float"] += 1 assert doc.as_string() == "float = +35.12" def test_datetimes_behave_like_datetimes(tz_utc, tz_pst): i = item(datetime(2018, 7, 22, 12, 34, 56)) assert i == datetime(2018, 7, 22, 12, 34, 56) assert i.as_string() == "2018-07-22T12:34:56" i += timedelta(days=1) assert i == datetime(2018, 7, 23, 12, 34, 56) assert i.as_string() == "2018-07-23T12:34:56" i -= timedelta(days=2) assert i == datetime(2018, 7, 21, 12, 34, 56) assert i.as_string() == "2018-07-21T12:34:56" i = i.replace(year=2019, tzinfo=tz_utc) assert i == datetime(2019, 7, 21, 12, 34, 56, tzinfo=tz_utc) assert i.as_string() == "2019-07-21T12:34:56+00:00" i = i.astimezone(tz_pst) assert i == datetime(2019, 7, 21, 4, 34, 56, tzinfo=tz_pst) assert i.as_string() == "2019-07-21T04:34:56-08:00" doc = parse("dt = 2018-07-22T12:34:56-05:00") doc["dt"] += timedelta(days=1) assert doc.as_string() == "dt = 2018-07-23T12:34:56-05:00" def test_dates_behave_like_dates(): i = item(date(2018, 7, 22)) assert i == date(2018, 7, 22) assert i.as_string() == "2018-07-22" i += timedelta(days=1) assert i == datetime(2018, 7, 23) assert i.as_string() == "2018-07-23" i -= timedelta(days=2) assert i == date(2018, 7, 21) assert i.as_string() == "2018-07-21" i = i.replace(year=2019) assert i == datetime(2019, 7, 21) assert i.as_string() == "2019-07-21" doc = parse("dt = 2018-07-22 # Comment") doc["dt"] += timedelta(days=1) assert doc.as_string() == "dt = 2018-07-23 # Comment" def test_parse_datetime_followed_by_space(): # issue #260 doc = parse("dt = 2018-07-22 ") assert doc["dt"] == date(2018, 7, 22) assert doc.as_string() == "dt = 2018-07-22 " doc = parse("dt = 2013-01-24 13:48:01.123456 ") assert doc["dt"] == datetime(2013, 1, 24, 13, 48, 1, 123456) assert doc.as_string() == "dt = 2013-01-24 13:48:01.123456 " def test_times_behave_like_times(): i = item(time(12, 34, 56)) assert i == time(12, 34, 56) assert i.as_string() == "12:34:56" i = i.replace(hour=13) assert i == time(13, 34, 56) assert i.as_string() == "13:34:56" def test_strings_behave_like_strs(): i = item("foo") assert i == "foo" assert i.as_string() == '"foo"' i += " bar" assert i == "foo bar" assert i.as_string() == '"foo bar"' i += " é" assert i == "foo bar é" assert i.as_string() == '"foo bar é"' doc = parse('str = "foo" # Comment') doc["str"] += " bar" assert doc.as_string() == 'str = "foo bar" # Comment' def test_string_add_preserve_escapes(): i = api.value('"foo\\"bar"') i += " baz" assert i == 'foo"bar baz' assert i.as_string() == '"foo\\"bar baz"' def test_tables_behave_like_dicts(): t = item({"foo": "bar"}) assert ( t.as_string() == """foo = "bar" """ ) t.update({"bar": "baz"}) assert ( t.as_string() == """foo = "bar" bar = "baz" """ ) t.update({"bar": "boom"}) assert ( t.as_string() == """foo = "bar" bar = "boom" """ ) assert t.get("bar") == "boom" assert t.setdefault("foobar", "fuzz") == "fuzz" assert ( t.as_string() == """foo = "bar" bar = "boom" foobar = "fuzz" """ ) def test_items_are_pickable(): n = item(12) s = pickle.dumps(n) assert pickle.loads(s).as_string() == "12" n = item(12.34) s = pickle.dumps(n) assert pickle.loads(s).as_string() == "12.34" n = item(True) s = pickle.dumps(n) assert pickle.loads(s).as_string() == "true" n = item(datetime(2018, 10, 11, 12, 34, 56, 123456)) s = pickle.dumps(n) assert pickle.loads(s).as_string() == "2018-10-11T12:34:56.123456" n = item(date(2018, 10, 11)) s = pickle.dumps(n) assert pickle.loads(s).as_string() == "2018-10-11" n = item(time(12, 34, 56, 123456)) s = pickle.dumps(n) assert pickle.loads(s).as_string() == "12:34:56.123456" n = item([1, 2, 3]) s = pickle.dumps(n) assert pickle.loads(s).as_string() == "[1, 2, 3]" n = item({"foo": "bar"}) s = pickle.dumps(n) assert pickle.loads(s).as_string() == 'foo = "bar"\n' n = api.inline_table() n["foo"] = "bar" s = pickle.dumps(n) assert pickle.loads(s).as_string() == '{foo = "bar"}' n = item("foo") s = pickle.dumps(n) assert pickle.loads(s).as_string() == '"foo"' n = item([{"foo": "bar"}]) s = pickle.dumps(n) assert pickle.loads(s).as_string() == 'foo = "bar"\n' def test_trim_comments_when_building_inline_table(): table = api.inline_table() row = parse('foo = "bar" # Comment') table.update(row) assert table.as_string() == '{foo = "bar"}' value = item("foobaz") value.comment("Another comment") table.append("baz", value) assert "# Another comment" not in table.as_string() assert table.as_string() == '{foo = "bar", baz = "foobaz"}' def test_deleting_inline_table_element_does_not_leave_trailing_separator(): table = api.inline_table() table["foo"] = "bar" table["baz"] = "boom" assert table.as_string() == '{foo = "bar", baz = "boom"}' del table["baz"] assert table.as_string() == '{foo = "bar"}' table = api.inline_table() table["foo"] = "bar" del table["foo"] table["baz"] = "boom" assert table.as_string() == '{baz = "boom"}' def test_deleting_inline_table_element_does_not_leave_trailing_separator2(): doc = parse('a = {foo = "bar", baz = "boom"}') table = doc["a"] assert table.as_string() == '{foo = "bar", baz = "boom"}' del table["baz"] assert table.as_string() == '{foo = "bar" }' del table["foo"] assert table.as_string() == "{ }" table["baz"] = "boom" assert table.as_string() == '{ baz = "boom"}' def test_booleans_comparison(): boolean = Bool(True, Trivia()) assert boolean boolean = Bool(False, Trivia()) assert not boolean s = """[foo] value = false """ content = parse(s) assert {"foo": {"value": False}} == content assert {"value": False} == content["foo"] def test_table_copy(): table = item({"foo": "bar"}) table_copy = table.copy() assert isinstance(table_copy, Table) table["foo"] = "baz" assert table_copy["foo"] == "bar" assert table_copy.as_string() == 'foo = "bar"\n' def test_copy_copy(): result = parse( """ [tool.poetry] classifiers = [ # comment "a", "b", ] """ ) classifiers = result["tool"]["poetry"]["classifiers"] new = copy.copy(classifiers) assert new == classifiers @pytest.mark.parametrize( "key_str,escaped", [("\\", '"\\\\"'), ('"', '"\\""'), ("\t", '"\\t"'), ("\x10", '"\\u0010"')], ) def test_escape_key(key_str, escaped): assert api.key(key_str).as_string() == escaped def test_custom_encoders(): import decimal @api.register_encoder def encode_decimal(obj): if isinstance(obj, decimal.Decimal): return api.float_(str(obj)) raise TypeError assert api.item(decimal.Decimal("1.23")).as_string() == "1.23" with pytest.raises(TypeError): api.item(object()) assert api.dumps({"foo": decimal.Decimal("1.23")}) == "foo = 1.23\n" api.unregister_encoder(encode_decimal) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/test_parser.py0000644000000000000000000000233114567257576014305 0ustar00import pytest from tomlkit.exceptions import EmptyTableNameError from tomlkit.exceptions import InternalParserError from tomlkit.exceptions import UnexpectedCharError from tomlkit.items import StringType from tomlkit.parser import Parser def test_parser_should_raise_an_internal_error_if_parsing_wrong_type_of_string(): parser = Parser('"foo"') with pytest.raises(InternalParserError) as e: parser._parse_string(StringType.SLL) assert e.value.line == 1 assert e.value.col == 0 def test_parser_should_raise_an_error_for_empty_tables(): content = """ [one] [] """ parser = Parser(content) with pytest.raises(EmptyTableNameError) as e: parser.parse() assert e.value.line == 3 assert e.value.col == 1 def test_parser_should_raise_an_error_if_equal_not_found(): content = """[foo] a {c = 1, d = 2} """ parser = Parser(content) with pytest.raises(UnexpectedCharError): parser.parse() def test_parse_multiline_string_ignore_the_first_newline(): content = 'a = """\nfoo\n"""' parser = Parser(content) assert parser.parse() == {"a": "foo\n"} content = 'a = """\r\nfoo\n"""' parser = Parser(content) assert parser.parse() == {"a": "foo\n"} ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/test_toml_document.py0000644000000000000000000004566014567257576015676 0ustar00import copy import json import pickle from datetime import datetime from textwrap import dedent import pytest import tomlkit from tests.util import assert_is_ppo from tomlkit import parse from tomlkit import ws from tomlkit._utils import _utc from tomlkit.api import document from tomlkit.exceptions import NonExistentKey def test_document_is_a_dict(example): content = example("example") doc = parse(content) assert isinstance(doc, dict) assert "owner" in doc # owner owner = doc["owner"] assert doc.get("owner") == owner assert isinstance(owner, dict) assert "name" in owner assert owner["name"] == "Tom Preston-Werner" assert owner["organization"] == "GitHub" assert owner["bio"] == "GitHub Cofounder & CEO\nLikes tater tots and beer." assert owner["dob"] == datetime(1979, 5, 27, 7, 32, tzinfo=_utc) # database database = doc["database"] assert isinstance(database, dict) assert database["server"] == "192.168.1.1" assert database["ports"] == [8001, 8001, 8002] assert database["connection_max"] == 5000 assert database["enabled"] is True # servers servers = doc["servers"] assert isinstance(servers, dict) alpha = servers["alpha"] assert servers.get("alpha") == alpha assert isinstance(alpha, dict) assert alpha["ip"] == "10.0.0.1" assert alpha["dc"] == "eqdc10" beta = servers["beta"] assert isinstance(beta, dict) assert beta["ip"] == "10.0.0.2" assert beta["dc"] == "eqdc10" assert beta["country"] == "中国" # clients clients = doc["clients"] assert isinstance(clients, dict) data = clients["data"] assert isinstance(data, list) assert data[0] == ["gamma", "delta"] assert data[1] == [1, 2] assert clients["hosts"] == ["alpha", "omega"] # Products products = doc["products"] assert isinstance(products, list) hammer = products[0] assert hammer == {"name": "Hammer", "sku": 738594937} nail = products[1] assert nail["name"] == "Nail" assert nail["sku"] == 284758393 assert nail["color"] == "gray" nail["color"] = "black" assert nail["color"] == "black" assert doc["products"][1]["color"] == "black" assert nail.get("color") == "black" content = """foo = "bar" """ doc = parse(content) doc.update({"bar": "baz"}) assert ( doc.as_string() == """foo = "bar" bar = "baz" """ ) doc.update({"bar": "boom"}) assert ( doc.as_string() == """foo = "bar" bar = "boom" """ ) assert doc.setdefault("bar", "waldo") == "boom" assert ( doc.as_string() == """foo = "bar" bar = "boom" """ ) assert doc.setdefault("thud", "waldo") == "waldo" assert ( doc.as_string() == """foo = "bar" bar = "boom" thud = "waldo" """ ) def test_toml_document_without_super_tables(): content = """[tool.poetry] name = "foo" """ doc = parse(content) assert "tool" in doc assert "poetry" in doc["tool"] assert doc["tool"]["poetry"]["name"] == "foo" doc["tool"]["poetry"]["name"] = "bar" assert ( doc.as_string() == """[tool.poetry] name = "bar" """ ) d = {} d.update(doc) assert "tool" in d def test_toml_document_unwrap(): content = """[tool.poetry] name = "foo" """ doc = parse(content) unwrapped = doc.unwrap() assert_is_ppo(unwrapped, dict) assert_is_ppo(list(unwrapped.keys())[0], str) assert_is_ppo(unwrapped["tool"], dict) assert_is_ppo(list(unwrapped["tool"].keys())[0], str) assert_is_ppo(unwrapped["tool"]["poetry"]["name"], str) def test_toml_document_with_dotted_keys(example): content = example("0.5.0") doc = parse(content) assert "physical" in doc assert "color" in doc["physical"] assert "shape" in doc["physical"] assert doc["physical"]["color"] == "orange" assert doc["physical"]["shape"] == "round" assert "site" in doc assert "google.com" in doc["site"] assert doc["site"]["google.com"] assert doc["a"]["b"]["c"] == 1 assert doc["a"]["b"]["d"] == 2 def test_toml_document_super_table_with_different_sub_sections(example): content = example("pyproject") doc = parse(content) tool = doc["tool"] assert "poetry" in tool assert "black" in tool def test_adding_an_element_to_existing_table_with_ws_remove_ws(): content = """[foo] [foo.bar] """ doc = parse(content) doc["foo"]["int"] = 34 expected = """[foo] int = 34 [foo.bar] """ assert expected == doc.as_string() def test_document_with_aot_after_sub_tables(): content = """[foo.bar] name = "Bar" [foo.bar.baz] name = "Baz" [[foo.bar.tests]] name = "Test 1" """ doc = parse(content) assert doc["foo"]["bar"]["tests"][0]["name"] == "Test 1" def test_document_with_new_sub_table_after_other_table(): content = """[foo] name = "Bar" [bar] name = "Baz" [foo.baz] name = "Test 1" """ doc = parse(content) assert doc["foo"]["name"] == "Bar" assert doc["bar"]["name"] == "Baz" assert doc["foo"]["baz"]["name"] == "Test 1" assert doc.as_string() == content def test_document_with_new_sub_table_after_other_table_delete(): content = """[foo] name = "Bar" [bar] name = "Baz" [foo.baz] name = "Test 1" """ doc = parse(content) del doc["foo"] assert ( doc.as_string() == """[bar] name = "Baz" """ ) def test_document_with_new_sub_table_after_other_table_replace(): content = """[foo] name = "Bar" [bar] name = "Baz" [foo.baz] name = "Test 1" """ doc = parse(content) doc["foo"] = {"a": "b"} assert ( doc.as_string() == """[foo] a = "b" [bar] name = "Baz" """ ) def test_inserting_after_element_with_no_new_line_adds_a_new_line(): doc = parse("foo = 10") doc["bar"] = 11 expected = """foo = 10 bar = 11 """ assert expected == doc.as_string() doc = parse("# Comment") doc["bar"] = 11 expected = """# Comment bar = 11 """ assert expected == doc.as_string() def test_inserting_after_deletion(): doc = parse("foo = 10\n") del doc["foo"] doc["bar"] = 11 expected = """bar = 11 """ assert expected == doc.as_string() def test_toml_document_with_dotted_keys_inside_table(example): content = example("0.5.0") doc = parse(content) t = doc["table"] assert "a" in t assert t["a"]["b"]["c"] == 1 assert t["a"]["b"]["d"] == 2 assert t["a"]["c"] == 3 def test_toml_document_with_super_aot_after_super_table(example): content = example("pyproject") doc = parse(content) aot = doc["tool"]["foo"] assert isinstance(aot, list) first = aot[0] assert first["name"] == "first" second = aot[1] assert second["name"] == "second" def test_toml_document_has_always_a_new_line_after_table_header(): content = """[section.sub]""" doc = parse(content) assert doc.as_string() == """[section.sub]""" doc["section"]["sub"]["foo"] = "bar" assert ( doc.as_string() == """[section.sub] foo = "bar" """ ) del doc["section"]["sub"]["foo"] assert doc.as_string() == """[section.sub]""" def test_toml_document_is_pickable(example): content = example("example") doc = parse(content) assert pickle.loads(pickle.dumps(doc)).as_string() == content def test_toml_document_set_super_table_element(): content = """[site.user] name = "John" """ doc = parse(content) doc["site"]["user"] = "Tom" assert ( doc.as_string() == """[site] user = "Tom" """ ) def test_toml_document_can_be_copied(): content = "[foo]\nbar=1" doc = parse(content) doc = copy.copy(doc) assert ( doc.as_string() == """[foo] bar=1""" ) assert doc == {"foo": {"bar": 1}} assert doc["foo"]["bar"] == 1 assert json.loads(json.dumps(doc)) == {"foo": {"bar": 1}} doc = parse(content) doc = doc.copy() assert ( doc.as_string() == """[foo] bar=1""" ) assert doc == {"foo": {"bar": 1}} assert doc["foo"]["bar"] == 1 assert json.loads(json.dumps(doc)) == {"foo": {"bar": 1}} def test_getting_inline_table_is_still_an_inline_table(): content = """\ [tool.poetry] name = "foo" [tool.poetry.dependencies] [tool.poetry.dev-dependencies] """ doc = parse(content) poetry_section = doc["tool"]["poetry"] dependencies = poetry_section["dependencies"] dependencies["foo"] = tomlkit.inline_table() dependencies["foo"]["version"] = "^2.0" dependencies["foo"]["source"] = "local" dependencies["bar"] = tomlkit.inline_table() dependencies["bar"]["version"] = "^3.0" dependencies["bar"]["source"] = "remote" dev_dependencies = poetry_section["dev-dependencies"] dev_dependencies["baz"] = tomlkit.inline_table() dev_dependencies["baz"]["version"] = "^4.0" dev_dependencies["baz"]["source"] = "other" assert ( doc.as_string() == """\ [tool.poetry] name = "foo" [tool.poetry.dependencies] foo = {version = "^2.0", source = "local"} bar = {version = "^3.0", source = "remote"} [tool.poetry.dev-dependencies] baz = {version = "^4.0", source = "other"} """ ) def test_declare_sub_table_with_intermediate_table(): content = """ [students] tommy = 87 mary = 66 [subjects] maths = "maths" english = "english" [students.bob] score = 91 """ doc = parse(content) assert {"tommy": 87, "mary": 66, "bob": {"score": 91}} == doc["students"] assert {"tommy": 87, "mary": 66, "bob": {"score": 91}} == doc.get("students") def test_values_can_still_be_set_for_out_of_order_tables(): content = """ [a.a] key = "value" [a.b] [a.a.c] """ doc = parse(content) doc["a"]["a"]["key"] = "new_value" assert doc["a"]["a"]["key"] == "new_value" expected = """ [a.a] key = "new_value" [a.b] [a.a.c] """ assert expected == doc.as_string() doc["a"]["a"]["bar"] = "baz" expected = """ [a.a] key = "new_value" bar = "baz" [a.b] [a.a.c] """ assert expected == doc.as_string() del doc["a"]["a"]["key"] expected = """ [a.a] bar = "baz" [a.b] [a.a.c] """ assert expected == doc.as_string() with pytest.raises(NonExistentKey): doc["a"]["a"]["key"] with pytest.raises(NonExistentKey): del doc["a"]["a"]["key"] def test_out_of_order_table_can_add_multiple_tables(): content = """\ [a.a.b] x = 1 [foo] bar = 1 [a.a.c] y = 1 [a.a.d] z = 1 """ doc = parse(content) assert doc.as_string() == content assert doc["a"]["a"] == {"b": {"x": 1}, "c": {"y": 1}, "d": {"z": 1}} def test_out_of_order_tables_are_still_dicts(): content = """ [a.a] key = "value" [a.b] [a.a.c] """ doc = parse(content) assert isinstance(doc["a"], dict) assert isinstance(doc["a"]["a"], dict) table = doc["a"]["a"] assert "key" in table assert "c" in table assert table.get("key") == "value" assert {} == table.get("c") assert table.get("d") is None assert table.get("d", "foo") == "foo" assert table.setdefault("d", "bar") == "bar" assert table["d"] == "bar" assert table.pop("key") == "value" assert "key" not in table assert table.pop("missing", default="baz") == "baz" with pytest.raises(KeyError): table.pop("missing") def test_string_output_order_is_preserved_for_out_of_order_tables(): content = """ [tool.poetry] name = "foo" [tool.poetry.dependencies] python = "^3.6" bar = "^1.0" [build-system] requires = ["poetry-core"] backend = "poetry.core.masonry.api" [tool.other] a = "b" """ doc = parse(content) constraint = tomlkit.inline_table() constraint["version"] = "^1.0" doc["tool"]["poetry"]["dependencies"]["bar"] = constraint assert doc["tool"]["poetry"]["dependencies"]["bar"]["version"] == "^1.0" expected = """ [tool.poetry] name = "foo" [tool.poetry.dependencies] python = "^3.6" bar = {version = "^1.0"} [build-system] requires = ["poetry-core"] backend = "poetry.core.masonry.api" [tool.other] a = "b" """ assert expected == doc.as_string() def test_remove_from_out_of_order_table(): content = """[a] x = 1 [c] z = 3 [a.b] y = 2 """ document = parse(content) del document["a"]["b"] assert ( document.as_string() == """[a] x = 1 [c] z = 3 """ ) assert json.dumps(document) == '{"a": {"x": 1}, "c": {"z": 3}}' def test_updating_nested_value_keeps_correct_indent(): content = """ [Key1] [key1.Key2] Value1 = 10 Value2 = 30 """ doc = parse(content) doc["key1"]["Key2"]["Value1"] = 20 expected = """ [Key1] [key1.Key2] Value1 = 20 Value2 = 30 """ assert doc.as_string() == expected def test_repr(): content = """ namespace.key1 = "value1" namespace.key2 = "value2" [tool.poetry.foo] option = "test" [tool.poetry.bar] option = "test" inline = {"foo" = "bar", "bar" = "baz"} """ doc = parse(content) assert ( repr(doc) == "{'namespace': {'key1': 'value1', 'key2': 'value2'}, 'tool': {'poetry': {'foo': {'option': 'test'}, 'bar': {'option': 'test', 'inline': {'foo': 'bar', 'bar': 'baz'}}}}}" ) assert ( repr(doc["tool"]) == "{'poetry': {'foo': {'option': 'test'}, 'bar': {'option': 'test', 'inline': {'foo': 'bar', 'bar': 'baz'}}}}" ) assert repr(doc["namespace"]) == "{'key1': 'value1', 'key2': 'value2'}" def test_deepcopy(): content = """ [tool] name = "foo" [tool.project.section] option = "test" """ doc = parse(content) copied = copy.deepcopy(doc) assert copied == doc assert copied.as_string() == content def test_move_table(): content = """a = 1 [x] a = 1 [y] b = 1 """ doc = parse(content) doc["a"] = doc.pop("x") doc["z"] = doc.pop("y") assert ( doc.as_string() == """[a] a = 1 [z] b = 1 """ ) def test_replace_with_table(): content = """a = 1 b = 2 c = 3 """ doc = parse(content) doc["b"] = {"foo": "bar"} assert ( doc.as_string() == """a = 1 c = 3 [b] foo = "bar" """ ) def test_replace_table_with_value(): content = """[foo] a = 1 [bar] b = 2 """ doc = parse(content) doc["bar"] = 42 assert ( doc.as_string() == """bar = 42 [foo] a = 1 """ ) def test_replace_preserve_sep(): content = """a = 1 [foo] b = "what" """ doc = parse(content) doc["a"] = 2 doc["foo"]["b"] = "how" assert ( doc.as_string() == """a = 2 [foo] b = "how" """ ) def test_replace_with_table_of_nested(): example = """\ [a] x = 1 [a.b] y = 2 """ doc = parse(dedent(example)) doc["c"] = doc.pop("a") expected = """\ [c] x = 1 [c.b] y = 2 """ assert doc.as_string().strip() == dedent(expected).strip() def test_replace_with_aot_of_nested(): example = """\ [a] x = 1 [[a.b]] y = 2 [[a.b]] [a.b.c] z = 2 [[a.b.c.d]] w = 2 """ doc = parse(dedent(example)) doc["f"] = doc.pop("a") expected = """\ [f] x = 1 [[f.b]] y = 2 [[f.b]] [f.b.c] z = 2 [[f.b.c.d]] w = 2 """ assert doc.as_string().strip() == dedent(expected).strip() def test_replace_with_comment(): content = 'a = "1"' doc = parse(content) a = tomlkit.item(int(doc["a"])) a.comment("`a` should be an int") doc["a"] = a expected = "a = 1 # `a` should be an int" assert doc.as_string() == expected content = 'a = "1, 2, 3"' doc = parse(content) a = tomlkit.array() a.comment("`a` should be an array") for x in doc["a"].split(","): a.append(int(x.strip())) doc["a"] = a expected = "a = [1, 2, 3] # `a` should be an array" assert doc.as_string() == expected doc = parse(content) a = tomlkit.inline_table() a.comment("`a` should be an inline-table") for x in doc["a"].split(","): i = int(x.strip()) a.append(chr(ord("a") + i - 1), i) doc["a"] = a expected = "a = {a = 1, b = 2, c = 3} # `a` should be an inline-table" assert doc.as_string() == expected def test_no_spurious_whitespaces(): content = """\ [x] a = 1 [y] b = 2 """ doc = parse(dedent(content)) doc["z"] = doc.pop("y") expected = """\ [x] a = 1 [z] b = 2 """ assert doc.as_string() == dedent(expected) doc["w"] = {"c": 3} expected = """\ [x] a = 1 [z] b = 2 [w] c = 3 """ assert doc.as_string() == dedent(expected) doc = parse(dedent(content)) del doc["x"] doc["z"] = {"c": 3} expected = """\ [y] b = 2 [z] c = 3 """ assert doc.as_string() == dedent(expected) def test_pop_add_whitespace_and_insert_table_work_togheter(): content = """\ a = 1 b = 2 c = 3 d = 4 """ doc = parse(dedent(content)) doc.pop("a") doc.pop("b") doc.add(ws("\n")) doc["e"] = {"foo": "bar"} expected = """\ c = 3 d = 4 [e] foo = "bar" """ text = doc.as_string() out = parse(text) assert out["d"] == 4 assert "d" not in out["e"] assert text == dedent(expected) def test_add_newline_before_super_table(): doc = document() doc["a"] = 1 doc["b"] = {"c": {}} doc["d"] = {"e": {}} expected = """\ a = 1 [b.c] [d.e] """ assert doc.as_string() == dedent(expected) def test_remove_item_from_super_table(): content = """\ [hello.one] a = 1 [hello.two] b = 1 """ doc = parse(dedent(content)) del doc["hello"]["two"] expected = """\ [hello.one] a = 1 """ assert doc.as_string() == dedent(expected) def test_nested_table_update_display_name(): content = """\ [parent] [parent.foo] x = 1 """ doc = parse(dedent(content)) sub = """\ [foo] y = 2 [bar] z = 3 """ doc["parent"].update(parse(dedent(sub))) expected = """\ [parent] [parent.foo] y = 2 [parent.bar] z = 3 """ assert doc.as_string() == dedent(expected) def test_build_table_with_dotted_key(): doc = tomlkit.document() data = { "a.b.c": 1, "a.b.d": 2, "a": {"c": {"foo": "bar"}}, "a.d.e": 3, } for key, value in data.items(): if "." not in key: doc.append(key, value) else: doc.append(tomlkit.key(key.split(".")), value) expected = """\ a.b.c = 1 a.b.d = 2 a.d.e = 3 [a.c] foo = "bar" """ assert doc.as_string() == expected assert json.loads(json.dumps(doc)) == { "a": {"b": {"c": 1, "d": 2}, "d": {"e": 3}, "c": {"foo": "bar"}} } def test_parse_subtables_no_extra_indent(): expected = """\ [a] [a.b.c] foo = 1 [a.b.d] bar = 2 """ doc = parse(expected) assert doc.as_string() == expected def test_item_preserves_the_order(): t = tomlkit.inline_table() t.update({"a": 1, "b": 2}) doc = {"name": "foo", "table": t, "age": 42} expected = """\ name = "foo" table = {a = 1, b = 2} age = 42 """ assert tomlkit.dumps(doc) == expected ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/test_toml_file.py0000644000000000000000000000536614567257576014776 0ustar00import os from tomlkit.toml_document import TOMLDocument from tomlkit.toml_file import TOMLFile def test_toml_file(example): original_content = example("example") toml_file = os.path.join(os.path.dirname(__file__), "examples", "example.toml") toml = TOMLFile(toml_file) content = toml.read() assert isinstance(content, TOMLDocument) assert content["owner"]["organization"] == "GitHub" toml.write(content) try: with open(toml_file, encoding="utf-8") as f: assert original_content == f.read() finally: with open(toml_file, "w", encoding="utf-8", newline="") as f: assert f.write(original_content) def test_keep_old_eol(tmpdir): toml_path = str(tmpdir / "pyproject.toml") with open(toml_path, "wb+") as f: f.write(b"a = 1\r\nb = 2\r\n") f = TOMLFile(toml_path) content = f.read() content["b"] = 3 f.write(content) with open(toml_path, "rb") as f: assert f.read() == b"a = 1\r\nb = 3\r\n" def test_keep_old_eol_2(tmpdir): toml_path = str(tmpdir / "pyproject.toml") with open(toml_path, "wb+") as f: f.write(b"a = 1\nb = 2\n") f = TOMLFile(toml_path) content = f.read() content["b"] = 3 f.write(content) with open(toml_path, "rb") as f: assert f.read() == b"a = 1\nb = 3\n" def test_mixed_eol(tmpdir): toml_path = str(tmpdir / "pyproject.toml") with open(toml_path, "wb+") as f: f.write(b"a = 1\r\nrb = 2\n") f = TOMLFile(toml_path) f.write(f.read()) with open(toml_path, "rb") as f: assert f.read() == b"a = 1\r\nrb = 2\n" def test_consistent_eol(tmpdir): toml_path = str(tmpdir / "pyproject.toml") with open(toml_path, "wb+") as f: f.write(b"a = 1\r\nb = 2\r\n") f = TOMLFile(toml_path) content = f.read() content["c"] = 3 f.write(content) with open(toml_path, "rb") as f: assert f.read() == b"a = 1\r\nb = 2\r\nc = 3\r\n" def test_consistent_eol_2(tmpdir): toml_path = str(tmpdir / "pyproject.toml") with open(toml_path, "wb+") as f: f.write(b"a = 1\nb = 2\n") f = TOMLFile(toml_path) content = f.read() content["c"] = 3 content["c"].trivia.trail = "\r\n" f.write(content) with open(toml_path, "rb") as f: assert f.read() == b"a = 1\nb = 2\nc = 3\n" def test_default_eol_is_os_linesep(tmpdir): toml_path = str(tmpdir / "pyproject.toml") f = TOMLFile(toml_path) content = TOMLDocument() content.append("a", 1) content["a"].trivia.trail = "\n" content.append("b", 2) content["b"].trivia.trail = "\r\n" f.write(content) linesep = os.linesep.encode() with open(toml_path, "rb") as f: assert f.read() == b"a = 1" + linesep + b"b = 2" + linesep ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/test_toml_spec_tests.py0000644000000000000000000000660114567257576016224 0ustar00import json import os import re import pytest import yaml from tomlkit import parse from tomlkit._compat import decode from tomlkit._utils import parse_rfc3339 from tomlkit.exceptions import TOMLKitError IGNORED_TESTS = [] # The following tests trigger a RecursionError IGNORED_TESTS += ["qa-array-inline-nested-1000", "qa-table-inline-nested-1000"] # The following tests don't work due to time microseconds precision of the tests IGNORED_TESTS += ["spec-date-time-6", "spec-date-time-local-2", "spec-time-2"] # The following tests don't work due to nan always comparing to False IGNORED_TESTS += ["spec-float-13", "spec-float-14", "spec-float-15"] # The following tests don't work due to issues with th epyyaml library IGNORED_TESTS += ["spec-key-value-pair-9"] SPEC_TEST_DIR = os.path.join(os.path.dirname(__file__), "toml-spec-tests") VALID_TESTS = sorted( os.path.basename(f).rsplit(".", 1)[0] for f in os.listdir(os.path.join(SPEC_TEST_DIR, "values")) if os.path.basename(f).rsplit(".", 1)[0] not in IGNORED_TESTS ) ERROR_TESTS = sorted( os.path.basename(f).rsplit(".", 1)[0] for f in os.listdir(os.path.join(SPEC_TEST_DIR, "errors")) if os.path.basename(f).rsplit(".", 1)[0] not in IGNORED_TESTS ) def to_bool(s): assert s in ["true", "false"] return s == "true" stypes = { "string": str, "bool": to_bool, "integer": int, "float": float, "datetime": parse_rfc3339, "datetime-local": parse_rfc3339, "date": parse_rfc3339, "time": parse_rfc3339, } loader = yaml.SafeLoader loader.add_implicit_resolver( "tag:yaml.org,2002:float", re.compile( """^(?: [-+]?(?:[0-9][0-9_]*)\\.[0-9_]*(?:[eE][-+]?[0-9]+)? |[-+]?(?:[0-9][0-9_]*)(?:[eE][-+]?[0-9]+) |\\.[0-9_]+(?:[eE][-+][0-9]+)? |[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]* |[-+]?\\.(?:inf|Inf|INF) |\\.(?:nan|NaN|NAN))$""", re.X, ), list("-+0123456789."), ) def untag(value): if isinstance(value, list): return [untag(i) for i in value] elif "type" in value and "value" in value and len(value) == 2: if value["type"] in stypes: val = decode(value["value"]) return stypes[value["type"]](val) elif value["type"] == "array": return [untag(i) for i in value["value"]] else: raise Exception(f'Unsupported type {value["type"]}') else: return {k: untag(v) for k, v in value.items()} @pytest.mark.parametrize("test", VALID_TESTS) def test_valid_decode(test): toml_file = os.path.join(SPEC_TEST_DIR, "values", test + ".toml") yaml_file = os.path.join(SPEC_TEST_DIR, "values", test + ".yaml") with open(toml_file, encoding="utf-8") as f: toml_content = f.read() toml_val = parse(toml_content) if os.path.exists(yaml_file): with open(yaml_file, encoding="utf-8") as f: yaml_val = yaml.load(f.read(), Loader=loader) else: with open( os.path.join(SPEC_TEST_DIR, "values", test + ".json"), encoding="utf-8" ) as f: yaml_val = untag(json.loads(f.read())) assert toml_val == yaml_val assert toml_val.as_string() == toml_content @pytest.mark.parametrize("test", ERROR_TESTS) def test_invalid_decode(test): toml_file = os.path.join(SPEC_TEST_DIR, "errors", test + ".toml") with pytest.raises(TOMLKitError), open(toml_file, encoding="utf-8") as f: parse(f.read()) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/test_toml_tests.py0000644000000000000000000000303014567257576015203 0ustar00import json import pytest from tomlkit import load from tomlkit import parse from tomlkit._compat import decode from tomlkit._utils import parse_rfc3339 from tomlkit.exceptions import TOMLKitError def to_bool(s): assert s in ["true", "false"] return s == "true" stypes = { "string": str, "bool": to_bool, "integer": int, "float": float, "datetime": parse_rfc3339, "datetime-local": parse_rfc3339, "date-local": parse_rfc3339, "time-local": parse_rfc3339, } def untag(value): if isinstance(value, list): return [untag(i) for i in value] elif "type" in value and "value" in value and len(value) == 2: if value["type"] in stypes: val = decode(value["value"]) return stypes[value["type"]](val) elif value["type"] == "array": return [untag(i) for i in value["value"]] else: raise Exception(f'Unsupported type {value["type"]}') else: return {k: untag(v) for k, v in value.items()} def test_valid_decode(valid_case): json_val = untag(json.loads(valid_case["json"])) toml_val = parse(valid_case["toml"]) assert toml_val == json_val assert toml_val.as_string() == valid_case["toml"] def test_invalid_decode(invalid_decode_case): with pytest.raises(TOMLKitError): parse(invalid_decode_case["toml"]) def test_invalid_encode(invalid_encode_case): with pytest.raises((TOMLKitError, UnicodeDecodeError)), open( invalid_encode_case, encoding="utf-8" ) as f: load(f) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/test_utils.py0000644000000000000000000000257214567257576014160 0ustar00from datetime import date from datetime import datetime as dt from datetime import time from datetime import timedelta as td from datetime import timezone as tz import pytest from tomlkit._utils import _utc from tomlkit._utils import parse_rfc3339 @pytest.mark.parametrize( "string, expected", [ ("1979-05-27T07:32:00", dt(1979, 5, 27, 7, 32, 0)), ("1979-05-27T07:32:00Z", dt(1979, 5, 27, 7, 32, 0, tzinfo=_utc)), ( "1979-05-27T07:32:00-07:00", dt(1979, 5, 27, 7, 32, 0, tzinfo=tz(td(seconds=-7 * 3600), "-07:00")), ), ( "1979-05-27T00:32:00.999999-07:00", dt( 1979, 5, 27, 0, 32, 0, 999999, tzinfo=tz(td(seconds=-7 * 3600), "-07:00"), ), ), ], ) def test_parse_rfc3339_datetime(string, expected): assert parse_rfc3339(string) == expected @pytest.mark.parametrize("string, expected", [("1979-05-27", date(1979, 5, 27))]) def test_parse_rfc3339_date(string, expected): assert parse_rfc3339(string) == expected @pytest.mark.parametrize( "string, expected", [("12:34:56", time(12, 34, 56)), ("12:34:56.123456", time(12, 34, 56, 123456))], ) def test_parse_rfc3339_time(string, expected): assert parse_rfc3339(string) == expected ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/test_write.py0000644000000000000000000000147414567257576014152 0ustar00from tomlkit import dumps from tomlkit import loads def test_write_backslash(): d = {"foo": "\\e\u25E6\r"} expected = """foo = "\\\\e\u25E6\\r" """ assert expected == dumps(d) assert loads(dumps(d))["foo"] == "\\e\u25E6\r" def test_escape_special_characters_in_key(): d = {"foo\nbar": "baz"} expected = '"foo\\nbar" = "baz"\n' assert expected == dumps(d) assert loads(dumps(d))["foo\nbar"] == "baz" def test_write_inline_table_in_nested_arrays(): d = {"foo": [[{"a": 1}]]} expected = "foo = [[{a = 1}]]\n" assert expected == dumps(d) assert loads(dumps(d))["foo"] == [[{"a": 1}]] def test_serialize_aot_with_nested_tables(): doc = {"a": [{"b": {"c": 1}}]} expected = """\ [[a]] [a.b] c = 1 """ assert dumps(doc) == expected assert loads(expected) == doc ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/toml-spec-tests/.gitattributes0000644000000000000000000000010414567257576017332 0ustar00*.toml text=auto *.yaml text=auto values/spec-newline-*.toml binary ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/toml-spec-tests/LICENSE0000644000000000000000000000134614567257576015455 0ustar00Copyright Rebecca Turner Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/toml-spec-tests/README.md0000644000000000000000000000117614567257576015730 0ustar00These are the spec tests for TOML used by @iarna/toml. The errors folder contains TOML files that should cause a parser to report an error. The values folder contains TOML files and paired YAML or JSON files. The YAML files should parse to a structure that's deeply equal to the TOML structure. The JSON files match the patterns found in [BurntSushi 0.4 TOML tests](https://github.com/BurntSushi/toml-test#json-encoding). We introduce the following new types to match TOML 0.5.0: * _datetime-local_ - A datetime without a timezone. Floating. * _date_ - A date without any time component * _time_ - A time without any date component ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/toml-spec-tests/errors/array-of-tables-1.toml0000644000000000000000000000006714567257576022006 0ustar00# INVALID TOML DOC fruit = [] [[fruit]] # Not allowed ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/toml-spec-tests/errors/array-of-tables-2.toml0000644000000000000000000000027414567257576022007 0ustar00# INVALID TOML DOC [[fruit]] name = "apple" [[fruit.variety]] name = "red delicious" # This table conflicts with the previous table [fruit.variety] name = "granny smith" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/toml-spec-tests/errors/bare-key-1.toml0000644000000000000000000000001714567257576020510 0ustar00bare!key = 123 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/toml-spec-tests/errors/bare-key-2.toml0000644000000000000000000000002114567257576020504 0ustar00barekey = 123 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/toml-spec-tests/errors/bare-key-3.toml0000644000000000000000000000001114567257576020504 0ustar00barekey =././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/toml-spec-tests/errors/comment-control-1.toml0000644000000000000000000000001714567257576022131 0ustar00a = "null" # ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/toml-spec-tests/errors/comment-control-2.toml0000644000000000000000000000002114567257576022125 0ustar00a = "ctrl-P" #  ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/toml-spec-tests/errors/comment-control-3.toml0000644000000000000000000000002114567257576022126 0ustar00a = "ctrl-_" #  ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/toml-spec-tests/errors/comment-control-4.toml0000644000000000000000000000001714567257576022134 0ustar00a = "0x7f" #  ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/toml-spec-tests/errors/inline-table-imutable-1.toml0000644000000000000000000000010214567257576023147 0ustar00[product] type = { name = "Nail" } type.edible = false # INVALID ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/toml-spec-tests/errors/inline-table-imutable-2.toml0000644000000000000000000000010214567257576023150 0ustar00[product] type.name = "Nail" type = { edible = false } # INVALID ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/toml-spec-tests/errors/inline-table-trailing-comma.toml0000644000000000000000000000002514567257576024116 0ustar00abc = { abc = 123, } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/toml-spec-tests/errors/int-0-padded.toml0000644000000000000000000000001314567257576021015 0ustar00int = 0123 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/toml-spec-tests/errors/int-signed-bin.toml0000644000000000000000000000001414567257576021457 0ustar00bin = +0b10 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/toml-spec-tests/errors/int-signed-hex.toml0000644000000000000000000000001414567257576021473 0ustar00hex = +0xab ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/toml-spec-tests/errors/int-signed-oct.toml0000644000000000000000000000001414567257576021474 0ustar00oct = +0o23 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/toml-spec-tests/errors/key-value-pair-1.toml0000644000000000000000000000002014567257576021636 0ustar00key = # INVALID ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/toml-spec-tests/errors/key-value-pair-2.toml0000644000000000000000000000006014567257576021643 0ustar00first = "Tom" last = "Preston-Werner" # INVALID ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/toml-spec-tests/errors/multiple-dot-key.toml0000644000000000000000000000034114567257576022060 0ustar00# THE FOLLOWING IS INVALID # This defines the value of fruit.apple to be an integer. fruit.apple = 1 # But then this treats fruit.apple like it's a table. # You can't turn an integer into a table. fruit.apple.smooth = true ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/toml-spec-tests/errors/multiple-key.toml0000644000000000000000000000005714567257576021300 0ustar00# DO NOT DO THIS name = "Tom" name = "Pradyun" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/toml-spec-tests/errors/no-key-name.toml0000644000000000000000000000003314567257576020771 0ustar00= "no key name" # INVALID ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/toml-spec-tests/errors/string-basic-control-1.toml0000644000000000000000000000001414567257576023051 0ustar00a = "null" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/toml-spec-tests/errors/string-basic-control-2.toml0000644000000000000000000000001614567257576023054 0ustar00a = "ctrl-P" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/toml-spec-tests/errors/string-basic-control-3.toml0000644000000000000000000000001614567257576023055 0ustar00a = "ctrl-_" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/toml-spec-tests/errors/string-basic-control-4.toml0000644000000000000000000000001414567257576023054 0ustar00a = "0x7f" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/toml-spec-tests/errors/string-basic-multiline-control-1.toml0000644000000000000000000000002014567257576025046 0ustar00a = """null""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/toml-spec-tests/errors/string-basic-multiline-control-2.toml0000644000000000000000000000002014567257576025047 0ustar00a = """null""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/toml-spec-tests/errors/string-basic-multiline-control-3.toml0000644000000000000000000000002014567257576025050 0ustar00a = """null""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/toml-spec-tests/errors/string-basic-multiline-control-4.toml0000644000000000000000000000002014567257576025051 0ustar00a = """null""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/toml-spec-tests/errors/string-basic-multiline-invalid-backslash.toml0000644000000000000000000000003414567257576026614 0ustar00a = """ foo \ \n bar""" ././@PaxHeader0000000000000000000000000000021300000000000010211 xustar00111 path=tomlkit-0.12.4/tests/toml-spec-tests/errors/string-basic-multiline-out-of-range-unicode-escape-1.toml 28 mtime=1709006718.4184365 tomlkit-0.12.4/tests/toml-spec-tests/errors/string-basic-multiline-out-of-range-unicode-escape-1.tom0000644000000000000000000000002514567257576030404 0ustar00a = """\UFFFFFFFF""" ././@PaxHeader0000000000000000000000000000021300000000000010211 xustar00111 path=tomlkit-0.12.4/tests/toml-spec-tests/errors/string-basic-multiline-out-of-range-unicode-escape-2.toml 28 mtime=1709006718.4184365 tomlkit-0.12.4/tests/toml-spec-tests/errors/string-basic-multiline-out-of-range-unicode-escape-2.tom0000644000000000000000000000002514567257576030405 0ustar00a = """\U00D80000""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/toml-spec-tests/errors/string-basic-multiline-quotes.toml0000644000000000000000000000006214567257576024556 0ustar00str5 = """Here are three quotation marks: """.""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/toml-spec-tests/errors/string-basic-multiline-unknown-escape.toml0000644000000000000000000000001514567257576026171 0ustar00a = """\@""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/toml-spec-tests/errors/string-basic-out-of-range-unicode-escape-1.toml0000644000000000000000000000002114567257576026554 0ustar00a = "\UFFFFFFFF" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/toml-spec-tests/errors/string-basic-out-of-range-unicode-escape-2.toml0000644000000000000000000000002114567257576026555 0ustar00a = "\U00D80000" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/toml-spec-tests/errors/string-basic-unknown-escape.toml0000644000000000000000000000001114567257576024165 0ustar00a = "\@" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/toml-spec-tests/errors/string-literal-control-1.toml0000644000000000000000000000001414567257576023424 0ustar00a = 'null' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/toml-spec-tests/errors/string-literal-control-2.toml0000644000000000000000000000001414567257576023425 0ustar00a = 'null' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/toml-spec-tests/errors/string-literal-control-3.toml0000644000000000000000000000001414567257576023426 0ustar00a = 'null' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/toml-spec-tests/errors/string-literal-control-4.toml0000644000000000000000000000001414567257576023427 0ustar00a = 'null' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/toml-spec-tests/errors/string-literal-multiline-control-1.toml0000644000000000000000000000002014567257576025421 0ustar00a = '''null''' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/toml-spec-tests/errors/string-literal-multiline-control-2.toml0000644000000000000000000000002014567257576025422 0ustar00a = '''null''' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/toml-spec-tests/errors/string-literal-multiline-control-3.toml0000644000000000000000000000002014567257576025423 0ustar00a = '''null''' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/toml-spec-tests/errors/string-literal-multiline-control-4.toml0000644000000000000000000000002014567257576025424 0ustar00a = '''null''' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/toml-spec-tests/errors/string-literal-multiline-quotes.toml0000644000000000000000000000011014567257576025123 0ustar00apos15 = '''Here are fifteen apostrophes: '''''''''''''''''' # INVALID ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/toml-spec-tests/errors/table-1.toml0000644000000000000000000000010314567257576020074 0ustar00# DO NOT DO THIS [fruit] apple = "red" [fruit] orange = "orange" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/toml-spec-tests/errors/table-2.toml0000644000000000000000000000012114567257576020075 0ustar00# DO NOT DO THIS EITHER [fruit] apple = "red" [fruit.apple] texture = "smooth" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/toml-spec-tests/errors/table-3.toml0000644000000000000000000000011714567257576020103 0ustar00[fruit] apple.color = "red" apple.taste.sweet = true [fruit.apple] # INVALID ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/toml-spec-tests/errors/table-4.toml0000644000000000000000000000012514567257576020103 0ustar00[fruit] apple.color = "red" apple.taste.sweet = true [fruit.apple.taste] # INVALID ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/toml-spec-tests/errors/table-invalid-1.toml0000644000000000000000000000036214567257576021527 0ustar00[fruit.physical] # subtable, but to which parent element should it belong? color = "red" shape = "round" [[fruit]] # parser must throw an error upon discovering that "fruit" is # an array rather than a table name = "apple"././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/toml-spec-tests/errors/table-invalid-2.toml0000644000000000000000000000006714567257576021532 0ustar00# INVALID TOML DOC fruit = [] [[fruit]] # Not allowed ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/toml-spec-tests/errors/table-invalid-3.toml0000644000000000000000000000041114567257576021524 0ustar00# INVALID TOML DOC [[fruit]] name = "apple" [[fruit.variety]] name = "red delicious" # INVALID: This table conflicts with the previous array of tables [fruit.variety] name = "granny smith" [fruit.physical] color = "red" shape = "round" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/toml-spec-tests/errors/table-invalid-4.toml0000644000000000000000000000040614567257576021531 0ustar00# INVALID TOML DOC [[fruit]] name = "apple" [[fruit.variety]] name = "red delicious" [fruit.physical] color = "red" shape = "round" # INVALID: This array of tables conflicts with the previous table [[fruit.physical]] color = "green" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/toml-spec-tests/values/qa-array-inline-1000.toml0000644000000000000000000003133214567257576022211 0ustar00key = [ "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "end"] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/toml-spec-tests/values/qa-array-inline-1000.yaml0000644000000000000000000002735614567257576022213 0ustar00key: - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - end ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/toml-spec-tests/values/qa-array-inline-nested-1000.toml0000644000000000000000000000373214567257576023474 0ustar00key = [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/toml-spec-tests/values/qa-array-inline-nested-1000.yaml0000644000000000000000000000373314567257576023464 0ustar00key: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - [] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/toml-spec-tests/values/qa-key-literal-40kb.toml0000644000000000000000000011611714567257576022226 0ustar00'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor. Amet consectetur adipiscing elit ut. Nulla facilisi etiam dignissim diam quis enim lobortis. Curabitur vitae nunc sed velit dignissim sodales ut eu. Fames ac turpis egestas sed tempus urna et. Facilisi cras fermentum odio eu feugiat pretium. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Est lorem ipsum dolor sit amet consectetur adipiscing elit. Vel quam elementum pulvinar etiam non quam lacus. Pharetra et ultrices neque ornare aenean euismod. Nisl nisi scelerisque eu ultrices. Eget dolor morbi non arcu risus. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Faucibus nisl tincidunt eget nullam. Nisl pretium fusce id velit ut tortor pretium viverra suspendisse. Mauris ultrices eros in cursus. Donec ac odio tempor orci dapibus ultrices in iaculis. Tellus cras adipiscing enim eu turpis egestas pretium aenean pharetra. Eros in cursus turpis massa. Nascetur ridiculus mus mauris vitae ultricies leo integer malesuada nunc. Velit sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Aenean euismod elementum nisi quis eleifend quam. Magnis dis parturient montes nascetur ridiculus mus. Eu tincidunt tortor aliquam nulla facilisi cras. Tristique senectus et netus et malesuada fames. Urna nec tincidunt praesent semper feugiat nibh sed pulvinar. Vitae ultricies leo integer malesuada nunc vel risus commodo viverra. Ac turpis egestas sed tempus urna et. Amet mauris commodo quis imperdiet massa tincidunt. Urna nunc id cursus metus aliquam eleifend mi. In nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Neque aliquam vestibulum morbi blandit cursus. Pulvinar mattis nunc sed blandit libero volutpat sed. Sed egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Blandit cursus risus at ultrices mi tempus. Turpis massa sed elementum tempus egestas sed sed. Dictum varius duis at consectetur lorem. Commodo ullamcorper a lacus vestibulum sed arcu non. Dolor magna eget est lorem. Tincidunt arcu non sodales neque sodales ut etiam sit amet. Sit amet risus nullam eget felis eget nunc lobortis. Risus in hendrerit gravida rutrum quisque non tellus orci. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Morbi tristique senectus et netus et malesuada. In aliquam sem fringilla ut morbi tincidunt. Ornare aenean euismod elementum nisi quis eleifend quam. Sed id semper risus in hendrerit gravida rutrum quisque. Lorem ipsum dolor sit amet consectetur adipiscing elit. A condimentum vitae sapien pellentesque habitant morbi tristique senectus et. Faucibus purus in massa tempor nec feugiat nisl. Vehicula ipsum a arcu cursus vitae congue. Facilisi cras fermentum odio eu feugiat pretium nibh. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Ultrices dui sapien eget mi proin sed libero enim. Nisi est sit amet facilisis magna etiam tempor. Posuere ac ut consequat semper viverra nam. Dis parturient montes nascetur ridiculus mus mauris vitae. Nec sagittis aliquam malesuada bibendum. Mattis pellentesque id nibh tortor id aliquet lectus. Vitae congue eu consequat ac felis donec et. Cras sed felis eget velit aliquet sagittis id consectetur purus. Pellentesque elit ullamcorper dignissim cras tincidunt. Pellentesque dignissim enim sit amet venenatis urna. A cras semper auctor neque vitae tempus. Amet massa vitae tortor condimentum lacinia quis vel eros donec. Tempor commodo ullamcorper a lacus. Nibh tellus molestie nunc non blandit massa enim nec dui. Viverra orci sagittis eu volutpat odio facilisis mauris sit. Sed augue lacus viverra vitae. Vulputate eu scelerisque felis imperdiet proin fermentum leo vel orci. Tellus rutrum tellus pellentesque eu tincidunt tortor. Cras semper auctor neque vitae tempus quam pellentesque nec. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Tristique magna sit amet purus gravida quis blandit turpis. Viverra ipsum nunc aliquet bibendum. Arcu bibendum at varius vel. Amet mattis vulputate enim nulla. Vulputate enim nulla aliquet porttitor. Volutpat blandit aliquam etiam erat velit scelerisque in dictum. Morbi tristique senectus et netus et malesuada fames ac. Faucibus et molestie ac feugiat sed. Tellus elementum sagittis vitae et leo duis. Id aliquet lectus proin nibh. Ornare arcu dui vivamus arcu. Morbi tincidunt augue interdum velit euismod in pellentesque massa placerat. Quis eleifend quam adipiscing vitae. Tristique senectus et netus et malesuada fames ac turpis. Pharetra convallis posuere morbi leo. Ornare arcu odio ut sem nulla pharetra diam sit. Morbi tristique senectus et netus et. Dictum non consectetur a erat nam at lectus urna. Varius vel pharetra vel turpis. Mi ipsum faucibus vitae aliquet. Tellus in metus vulputate eu scelerisque felis imperdiet proin. In est ante in nibh mauris cursus mattis. Massa ultricies mi quis hendrerit dolor magna eget. Fermentum leo vel orci porta. Elit ut aliquam purus sit amet luctus venenatis lectus. Eget aliquet nibh praesent tristique magna sit amet. Arcu non odio euismod lacinia at quis. Montes nascetur ridiculus mus mauris vitae ultricies. Tempus quam pellentesque nec nam aliquam sem et tortor. Morbi leo urna molestie at elementum eu facilisis sed. In fermentum posuere urna nec tincidunt. Neque aliquam vestibulum morbi blandit cursus risus. Vulputate dignissim suspendisse in est ante in nibh mauris cursus. Lorem ipsum dolor sit amet consectetur adipiscing. Orci eu lobortis elementum nibh tellus molestie nunc non. Enim diam vulputate ut pharetra sit amet aliquam. Convallis convallis tellus id interdum velit laoreet id donec ultrices. Sit amet mattis vulputate enim nulla aliquet porttitor lacus luctus. A lacus vestibulum sed arcu non odio. Ut tortor pretium viverra suspendisse potenti nullam ac tortor. Diam vel quam elementum pulvinar etiam non quam. Viverra justo nec ultrices dui. Eu volutpat odio facilisis mauris sit amet massa. Sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Ac felis donec et odio pellentesque. Nisl vel pretium lectus quam id leo in. Ultricies lacus sed turpis tincidunt id. At urna condimentum mattis pellentesque id nibh tortor id. Sem nulla pharetra diam sit amet nisl suscipit. Neque viverra justo nec ultrices. Arcu cursus euismod quis viverra nibh cras pulvinar. Dolor sit amet consectetur adipiscing elit ut aliquam purus. Id diam vel quam elementum pulvinar etiam non. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Id aliquet lectus proin nibh nisl condimentum id venenatis. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh. Sed faucibus turpis in eu mi bibendum neque egestas congue. Consectetur libero id faucibus nisl tincidunt eget nullam. At volutpat diam ut venenatis tellus in metus vulputate eu. Condimentum lacinia quis vel eros donec ac odio. Sit amet porttitor eget dolor morbi non arcu risus quis. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Metus dictum at tempor commodo ullamcorper. At ultrices mi tempus imperdiet nulla. Est ullamcorper eget nulla facilisi etiam dignissim diam quis. Lobortis elementum nibh tellus molestie nunc non. Placerat in egestas erat imperdiet sed. Placerat in egestas erat imperdiet sed euismod. Lobortis feugiat vivamus at augue eget arcu dictum varius. Ut sem nulla pharetra diam sit amet. Et tortor at risus viverra adipiscing at in. Tempor nec feugiat nisl pretium. Cursus euismod quis viverra nibh. Eget mi proin sed libero enim sed. Aliquam id diam maecenas ultricies. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Gravida quis blandit turpis cursus in hac habitasse platea dictumst. Sed tempus urna et pharetra pharetra massa massa. Dolor purus non enim praesent elementum facilisis leo vel. Pharetra vel turpis nunc eget. Quam pellentesque nec nam aliquam sem et tortor consequat id. Orci eu lobortis elementum nibh tellus molestie nunc non. Porttitor leo a diam sollicitudin tempor id. Tincidunt ornare massa eget egestas purus viverra accumsan in nisl. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor sit. Elit ut aliquam purus sit amet luctus venenatis lectus. Velit egestas dui id ornare arcu odio ut sem nulla. Lacus viverra vitae congue eu consequat ac felis donec. Nulla aliquet porttitor lacus luctus accumsan tortor posuere ac ut. Lorem dolor sed viverra ipsum. Blandit libero volutpat sed cras ornare arcu. Egestas erat imperdiet sed euismod nisi porta lorem mollis. Viverra maecenas accumsan lacus vel. Enim neque volutpat ac tincidunt. Porttitor massa id neque aliquam vestibulum morbi blandit cursus risus. Malesuada bibendum arcu vitae elementum curabitur vitae nunc. Et malesuada fames ac turpis egestas integer. Egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Est placerat in egestas erat imperdiet sed. Non arcu risus quis varius quam quisque. Lorem mollis aliquam ut porttitor leo a. Viverra tellus in hac habitasse platea dictumst vestibulum rhoncus. Fermentum iaculis eu non diam. Erat imperdiet sed euismod nisi porta lorem mollis aliquam. Varius vel pharetra vel turpis nunc eget lorem dolor. Rhoncus mattis rhoncus urna neque viverra. Hac habitasse platea dictumst quisque sagittis purus sit. At quis risus sed vulputate odio ut enim. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros. Rutrum quisque non tellus orci ac auctor. Iaculis eu non diam phasellus vestibulum lorem sed. Ut sem nulla pharetra diam sit amet nisl suscipit. Risus at ultrices mi tempus. Vitae tortor condimentum lacinia quis vel eros donec. Sed tempus urna et pharetra. Posuere sollicitudin aliquam ultrices sagittis orci. Congue quisque egestas diam in arcu. Hac habitasse platea dictumst vestibulum rhoncus est pellentesque elit. Pellentesque habitant morbi tristique senectus et netus et. Id interdum velit laoreet id. Fusce ut placerat orci nulla pellentesque dignissim. Pretium nibh ipsum consequat nisl vel pretium. Etiam erat velit scelerisque in dictum non consectetur a. Turpis in eu mi bibendum neque egestas congue quisque egestas. Pulvinar sapien et ligula ullamcorper malesuada. Ultricies tristique nulla aliquet enim tortor at. Suspendisse interdum consectetur libero id faucibus. Lorem sed risus ultricies tristique nulla aliquet. Tristique senectus et netus et malesuada fames. Eu augue ut lectus arcu bibendum at varius vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies. Aliquet eget sit amet tellus cras adipiscing. Massa placerat duis ultricies lacus sed turpis tincidunt id aliquet. Ornare massa eget egestas purus viverra accumsan in nisl. Justo laoreet sit amet cursus sit amet. In metus vulputate eu scelerisque felis imperdiet proin. At erat pellentesque adipiscing commodo elit at. Ipsum suspendisse ultrices gravida dictum fusce. Lectus sit amet est placerat in egestas erat. Aliquam ultrices sagittis orci a. Sagittis id consectetur purus ut faucibus pulvinar elementum. Ornare arcu odio ut sem nulla pharetra diam. Sit amet purus gravida quis blandit turpis cursus. Duis ultricies lacus sed turpis tincidunt. Malesuada fames ac turpis egestas sed tempus urna et. Viverra ipsum nunc aliquet bibendum enim facilisis. Et pharetra pharetra massa massa ultricies mi quis. Eget duis at tellus at urna condimentum mattis. Euismod in pellentesque massa placerat. Enim nunc faucibus a pellentesque sit amet porttitor. Dolor sed viverra ipsum nunc aliquet. Donec enim diam vulputate ut pharetra sit amet. Feugiat sed lectus vestibulum mattis ullamcorper velit sed. Erat pellentesque adipiscing commodo elit at imperdiet. Nisl purus in mollis nunc sed id semper risus. Tincidunt augue interdum velit euismod in pellentesque massa. Facilisis magna etiam tempor orci. Mauris in aliquam sem fringilla ut. Gravida dictum fusce ut placerat orci. Sed risus ultricies tristique nulla. Odio morbi quis commodo odio. Feugiat in ante metus dictum at tempor commodo ullamcorper. Porta non pulvinar neque laoreet suspendisse interdum. Etiam tempor orci eu lobortis elementum. Fusce ut placerat orci nulla pellentesque dignissim. Ornare lectus sit amet est placerat in egestas erat. Quis vel eros donec ac. Elementum pulvinar etiam non quam lacus. Sit amet tellus cras adipiscing enim eu turpis. Amet tellus cras adipiscing enim eu. Sed faucibus turpis in eu mi bibendum. Lectus proin nibh nisl condimentum id. Sollicitudin nibh sit amet commodo nulla. Sed tempus urna et pharetra pharetra massa massa. Magna eget est lorem ipsum. Elit ullamcorper dignissim cras tincidunt lobortis feugiat vivamus at. Fermentum dui faucibus in ornare quam viverra orci sagittis eu. Dignissim convallis aenean et tortor. Ut faucibus pulvinar elementum integer enim neque. Nibh cras pulvinar mattis nunc sed. Pellentesque sit amet porttitor eget dolor morbi. Mi eget mauris pharetra et ultrices neque ornare aenean euismod. Quis risus sed vulputate odio ut enim blandit volutpat. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. In vitae turpis massa sed elementum tempus egestas sed sed. Urna id volutpat lacus laoreet non. Egestas pretium aenean pharetra magna ac placerat. Amet commodo nulla facilisi nullam vehicula ipsum a arcu cursus. Donec et odio pellentesque diam volutpat commodo sed. Etiam non quam lacus suspendisse. Augue neque gravida in fermentum et sollicitudin ac orci. Eu feugiat pretium nibh ipsum. Nam at lectus urna duis convallis convallis tellus id. Egestas integer eget aliquet nibh. Viverra accumsan in nisl nisi scelerisque eu ultrices vitae auctor. Urna condimentum mattis pellentesque id nibh tortor id. In egestas erat imperdiet sed euismod. Ut sem viverra aliquet eget sit amet tellus. Feugiat pretium nibh ipsum consequat nisl vel pretium. Volutpat odio facilisis mauris sit amet. Mi sit amet mauris commodo quis imperdiet massa tincidunt. Neque volutpat ac tincidunt vitae semper quis lectus nulla at. Nec feugiat in fermentum posuere urna nec. Ut venenatis tellus in metus vulputate eu. Vestibulum rhoncus est pellentesque elit ullamcorper dignissim. Eu scelerisque felis imperdiet proin. Vitae et leo duis ut diam quam nulla. Ut venenatis tellus in metus vulputate eu scelerisque. Tincidunt dui ut ornare lectus sit amet. Adipiscing diam donec adipiscing tristique risus. Turpis nunc eget lorem dolor sed viverra ipsum nunc aliquet. Non sodales neque sodales ut. Massa placerat duis ultricies lacus sed turpis tincidunt. Viverra orci sagittis eu volutpat odio facilisis mauris sit amet. Adipiscing vitae proin sagittis nisl. Vitae aliquet nec ullamcorper sit. Potenti nullam ac tortor vitae purus. Ultricies lacus sed turpis tincidunt id. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Semper eget duis at tellus at urna condimentum mattis pellentesque. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin. Dictum fusce ut placerat orci nulla pellentesque dignissim. Amet luctus venenatis lectus magna fringilla urna. Quam quisque id diam vel quam elementum pulvinar. At tempor commodo ullamcorper a. Magna etiam tempor orci eu lobortis. Suspendisse ultrices gravida dictum fusce. Massa ultricies mi quis hendrerit dolor magna. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Aliquet enim tortor at auctor urna nunc id. Semper feugiat nibh sed pulvinar proin gravida. Porttitor rhoncus dolor purus non enim. Metus aliquam eleifend mi in nulla. Lectus arcu bibendum at varius vel pharetra. Sed vulputate odio ut enim blandit volutpat. Et ligula ullamcorper malesuada proin libero nunc consequat interdum varius. Donec et odio pellentesque diam volutpat commodo. Id ornare arcu odio ut sem nulla pharetra diam sit. Est ullamcorper eget nulla facilisi etiam dignissim diam quis enim. Sagittis vitae et leo duis ut diam quam nulla. Elementum nisi quis eleifend quam. Congue mauris rhoncus aenean vel elit. Adipiscing elit duis tristique sollicitudin nibh sit. Egestas egestas fringilla phasellus faucibus scelerisque. Morbi tincidunt augue interdum velit euismod. Massa sed elementum tempus egestas sed sed. Id leo in vitae turpis massa sed elementum tempus egestas. In pellentesque massa placerat duis ultricies lacus sed turpis. Vitae proin sagittis nisl rhoncus mattis rhoncus. Enim tortor at auctor urna nunc id. In fermentum posuere urna nec tincidunt praesent semper feugiat nibh. Aliquam ut porttitor leo a diam sollicitudin tempor id. Pellentesque elit eget gravida cum sociis natoque. Molestie at elementum eu facilisis sed odio morbi quis. Tristique senectus et netus et malesuada fames ac turpis. Proin libero nunc consequat interdum varius sit amet mattis. Pellentesque id nibh tortor id. Risus sed vulputate odio ut enim blandit. Laoreet suspendisse interdum consectetur libero id faucibus nisl tincidunt eget. Morbi tincidunt augue interdum velit euismod in pellentesque. Pharetra pharetra massa massa ultricies mi quis hendrerit. Nunc aliquet bibendum enim facilisis gravida neque. Feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Risus quis varius quam quisque id diam vel. Et ultrices neque ornare aenean. Aliquet sagittis id consectetur purus ut faucibus pulvinar elementum. Nibh ipsum consequat nisl vel. Mauris rhoncus aenean vel elit scelerisque mauris pellentesque pulvinar. Ornare quam viverra orci sagittis eu volutpat odio facilisis. Euismod nisi porta lorem mollis aliquam. Enim ut tellus elementum sagittis. Rhoncus mattis rhoncus urna neque. Malesuada fames ac turpis egestas. Cursus in hac habitasse platea dictumst quisque sagittis. Sit amet aliquam id diam maecenas ultricies mi eget mauris. Enim sit amet venenatis urna cursus eget nunc. Fermentum odio eu feugiat pretium nibh ipsum consequat. Eu scelerisque felis imperdiet proin. Nullam non nisi est sit amet facilisis magna etiam tempor. In mollis nunc sed id semper risus in hendrerit. Sollicitudin nibh sit amet commodo nulla facilisi nullam. Sit amet nisl purus in mollis nunc sed id. Nam libero justo laoreet sit amet cursus sit amet dictum. Condimentum id venenatis a condimentum vitae sapien pellentesque. Porta nibh venenatis cras sed felis. Lectus nulla at volutpat diam ut venenatis tellus in. Aliquam etiam erat velit scelerisque in dictum non consectetur a. Leo vel fringilla est ullamcorper eget. Sodales ut etiam sit amet nisl purus in mollis nunc. Euismod nisi porta lorem mollis aliquam. Ornare arcu odio ut sem nulla. Sed felis eget velit aliquet sagittis id consectetur. Pellentesque nec nam aliquam sem et tortor consequat id. Enim nec dui nunc mattis enim ut tellus elementum. Nullam non nisi est sit amet facilisis magna. Rutrum quisque non tellus orci ac auctor augue. Nunc vel risus commodo viverra maecenas accumsan lacus. Viverra vitae congue eu consequat. Sollicitudin nibh sit amet commodo nulla. Amet volutpat consequat mauris nunc congue nisi. Maecenas pharetra convallis posuere morbi leo urna molestie at. Mattis vulputate enim nulla aliquet porttitor lacus luctus accumsan tortor. Pulvinar sapien et ligula ullamcorper malesuada proin libero nunc consequat. Adipiscing diam donec adipiscing tristique risus. Elementum curabitur vitae nunc sed velit dignissim sodales ut. Eleifend donec pretium vulputate sapien nec. Commodo quis imperdiet massa tincidunt nunc pulvinar. Proin libero nunc consequat interdum varius sit amet mattis. Facilisis gravida neque convallis a cras semper auctor neque vitae. Quisque egestas diam in arcu cursus. Nunc eget lorem dolor sed viverra ipsum. Mauris sit amet massa vitae tortor condimentum lacinia quis vel. Aliquam sem et tortor consequat id porta nibh venenatis cras. Nunc sed id semper risus in. Enim sed faucibus turpis in eu mi bibendum neque. Molestie nunc non blandit massa enim. Enim praesent elementum facilisis leo vel fringilla est ullamcorper. Semper risus in hendrerit gravida rutrum quisque non tellus orci. Ac turpis egestas maecenas pharetra. In nulla posuere sollicitudin aliquam. Justo nec ultrices dui sapien eget mi proin sed libero. In ornare quam viverra orci sagittis eu. Proin nibh nisl condimentum id venenatis. Morbi enim nunc faucibus a pellentesque sit amet porttitor eget. Quis risus sed vulputate odio ut enim blandit. Risus feugiat in ante metus dictum at tempor commodo. Sodales neque sodales ut etiam. Nunc id cursus metus aliquam. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim enim. Augue ut lectus arcu bibendum at. Quis varius quam quisque id diam vel quam. Egestas congue quisque egestas diam in arcu. Condimentum mattis pellentesque id nibh tortor id aliquet lectus. Enim lobortis scelerisque fermentum dui faucibus in. In tellus integer feugiat scelerisque varius morbi enim nunc. Mattis molestie a iaculis at erat pellentesque. Elit scelerisque mauris pellentesque pulvinar pellentesque habitant morbi tristique. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Nisl rhoncus mattis rhoncus urna neque. Ac auctor augue mauris augue neque gravida in fermentum et. Sodales ut eu sem integer vitae justo eget. Sed egestas egestas fringilla phasellus. Viverra adipiscing at in tellus integer feugiat scelerisque varius. Purus gravida quis blandit turpis. Id porta nibh venenatis cras sed. Mattis vulputate enim nulla aliquet porttitor lacus. Augue eget arcu dictum varius duis at consectetur lorem donec. Nulla at volutpat diam ut venenatis tellus in metus. Aliquam etiam erat velit scelerisque in dictum non consectetur. Turpis cursus in hac habitasse platea dictumst. Consequat mauris nunc congue nisi vitae suscipit tellus. Volutpat maecenas volutpat blandit aliquam etiam. Massa massa ultricies mi quis hendrerit dolor magna eget est. Velit egestas dui id ornare arcu. Non consectetur a erat nam at. Orci sagittis eu volutpat odio facilisis mauris sit amet. Dui id ornare arcu odio. Sed arcu non odio euismod lacinia. Feugiat in ante metus dictum. Gravida arcu ac tortor dignissim convallis. Egestas sed tempus urna et pharetra pharetra massa massa. Nulla facilisi nullam vehicula ipsum a arcu. Ipsum a arcu cursus vitae congue mauris. Porttitor rhoncus dolor purus non. Magna sit amet purus gravida quis blandit. Sapien eget mi proin sed libero enim sed faucibus turpis. Nisl nunc mi ipsum faucibus vitae aliquet nec ullamcorper sit. Pellentesque dignissim enim sit amet venenatis urna cursus eget. Pharetra massa massa ultricies mi quis hendrerit. Sapien nec sagittis aliquam malesuada bibendum. Nunc scelerisque viverra mauris in aliquam sem fringilla ut. Dolor magna eget est lorem ipsum dolor. Amet commodo nulla facilisi nullam. Pellentesque elit ullamcorper dignissim cras. Id porta nibh venenatis cras sed felis eget. Nam at lectus urna duis. Laoreet non curabitur gravida arcu ac tortor dignissim convallis. Nunc lobortis mattis aliquam faucibus purus in massa tempor. Sit amet luctus venenatis lectus magna fringilla. Duis ultricies lacus sed turpis tincidunt id. Sed velit dignissim sodales ut eu. Ut tortor pretium viverra suspendisse potenti nullam. Iaculis at erat pellentesque adipiscing. Ipsum nunc aliquet bibendum enim facilisis gravida neque. Nulla aliquet enim tortor at auctor urna nunc id cursus. Amet cursus sit amet dictum sit amet justo donec enim. Enim nunc faucibus a pellentesque sit amet porttitor eget dolor. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros in. Nulla facilisi etiam dignissim diam quis enim. Ut enim blandit volutpat maecenas volutpat blandit aliquam etiam erat. Imperdiet proin fermentum leo vel orci porta non pulvinar neque. Vel fringilla est ullamcorper eget nulla. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Ipsum nunc aliquet bibendum enim facilisis gravida neque convallis a. Arcu cursus vitae congue mauris rhoncus aenean vel elit. Augue eget arcu dictum varius duis. Tristique et egestas quis ipsum. Quis varius quam quisque id. Varius sit amet mattis vulputate. Mattis molestie a iaculis at erat pellentesque. Libero justo laoreet sit amet cursus. Aliquam id diam maecenas ultricies mi eget mauris pharetra. Ut eu sem integer vitae justo eget. Fames ac turpis egestas sed. Suspendisse in est ante in nibh mauris cursus mattis. Faucibus pulvinar elementum integer enim neque volutpat ac tincidunt vitae. Neque vitae tempus quam pellentesque nec nam aliquam. Lobortis elementum nibh tellus molestie nunc non. Lacus vel facilisis volutpat est velit egestas dui. Justo laoreet sit amet cursus sit amet dictum sit amet. Adipiscing enim eu turpis egestas pretium aenean pharetra magna. Cursus metus aliquam eleifend mi in nulla posuere. Nibh mauris cursus mattis molestie a. Dignissim diam quis enim lobortis scelerisque fermentum. A scelerisque purus semper eget duis at tellus. Lacus sed turpis tincidunt id aliquet risus feugiat in. Non tellus orci ac auctor. Ultrices in iaculis nunc sed augue lacus. Tincidunt tortor aliquam nulla facilisi cras. Nulla facilisi nullam vehicula ipsum a arcu cursus vitae congue. Eget magna fermentum iaculis eu non diam phasellus. Pharetra massa massa ultricies mi quis. Eget mauris pharetra et ultrices neque ornare. Aliquam faucibus purus in massa. Facilisi morbi tempus iaculis urna id volutpat lacus. Accumsan lacus vel facilisis volutpat. Curabitur gravida arcu ac tortor. Quam lacus suspendisse faucibus interdum. Elementum nibh tellus molestie nunc non blandit massa enim. Libero id faucibus nisl tincidunt. Bibendum ut tristique et egestas. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Augue interdum velit euismod in pellentesque. Adipiscing diam donec adipiscing tristique risus nec feugiat. Fringilla ut morbi tincidunt augue interdum velit. Vitae et leo duis ut diam quam nulla porttitor massa. Egestas integer eget aliquet nibh praesent tristique. Posuere sollicitudin aliquam ultrices sagittis orci a. Nisi est sit amet facilisis. Risus quis varius quam quisque id diam. Faucibus turpis in eu mi. Et molestie ac feugiat sed lectus vestibulum. Porttitor lacus luctus accumsan tortor posuere ac. Platea dictumst vestibulum rhoncus est pellentesque. Tortor pretium viverra suspendisse potenti nullam ac tortor. Enim praesent elementum facilisis leo vel fringilla est. Proin libero nunc consequat interdum varius sit amet mattis vulputate. Turpis egestas pretium aenean pharetra magna ac placerat vestibulum lectus. Nulla pharetra diam sit amet nisl suscipit. Mauris nunc congue nisi vitae suscipit tellus mauris a diam. Faucibus in ornare quam viverra orci sagittis eu volutpat. Volutpat consequat mauris nunc congue nisi vitae. Dui nunc mattis enim ut tellus. Adipiscing elit ut aliquam purus sit amet luctus. Tempus egestas sed sed risus. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Massa ultricies mi quis hendrerit dolor magna eget. Pulvinar mattis nunc sed blandit libero volutpat sed cras ornare. Ut eu sem integer vitae justo eget magna fermentum. Ornare quam viverra orci sagittis. Eget dolor morbi non arcu risus quis varius quam. Tincidunt praesent semper feugiat nibh sed pulvinar. Sit amet justo donec enim diam vulputate. Dui faucibus in ornare quam viverra. Tincidunt tortor aliquam nulla facilisi cras fermentum odio eu. Turpis egestas sed tempus urna et. Pretium quam vulputate dignissim suspendisse in est ante in. Morbi quis commodo odio aenean sed adipiscing diam donec. Nunc mattis enim ut tellus elementum sagittis vitae et. Diam vel quam elementum pulvinar etiam non quam. Convallis posuere morbi leo urna molestie at elementum eu. Adipiscing at in tellus integer feugiat scelerisque varius morbi. Quis varius quam quisque id diam vel quam elementum. Dui accumsan sit amet nulla. Adipiscing elit duis tristique sollicitudin nibh sit amet commodo. Viverra ipsum nunc aliquet bibendum enim facilisis. Porta lorem mollis aliquam ut. Velit ut tortor pretium viverra suspendisse potenti. Quis viverra nibh cras pulvinar mattis nunc sed blandit. Pharetra magna ac placerat vestibulum. Mauris ultrices eros in cursus turpis massa. Lacus vestibulum sed arcu non odio euismod lacinia at. Dapibus ultrices in iaculis nunc sed. Cras adipiscing enim eu turpis egestas. Eget arcu dictum varius duis at consectetur. Consequat id porta nibh venenatis cras sed felis eget velit. Integer enim neque volutpat ac tincidunt vitae. Feugiat pretium nibh ipsum consequat nisl vel pretium lectus. Ut morbi tincidunt augue interdum velit euismod. Sed cras ornare arcu dui vivamus arcu felis bibendum ut. Eget felis eget nunc lobortis mattis aliquam faucibus purus in. Luctus venenatis lectus magna fringilla urna porttitor rhoncus dolor. Nisl nunc mi ipsum faucibus vitae. Proin fermentum leo vel orci porta. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. Et leo duis ut diam quam. Eros in cursus turpis massa tincidunt. Volutpat est velit egestas dui id. Commodo odio aenean sed adipiscing diam. Quis blandit turpis cursus in hac habitasse platea dictumst quisque. Magna fringilla urna porttitor rhoncus dolor. Amet consectetur adipiscing elit ut aliquam purus sit amet. Vitae justo eget magna fermentum iaculis eu non diam. Hendrerit dolor magna eget est. Ac placerat vestibulum lectus mauris ultrices eros in cursus turpis. Egestas diam in arcu cursus. At varius vel pharetra vel turpis nunc. Lacus vel facilisis volutpat est velit. Ut ornare lectus sit amet est placerat in egestas. Quam adipiscing vitae proin sagittis nisl rhoncus. Dolor purus non enim praesent. Urna condimentum mattis pellentesque id. Magnis dis parturient montes nascetur ridiculus. Feugiat nisl pretium fusce id. Sed cras ornare arcu dui vivamus. Vitae turpis massa sed elementum tempus egestas sed sed. Ac feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Ac ut consequat semper viverra nam libero. Consectetur lorem donec massa sapien faucibus. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Eu turpis egestas pretium aenean pharetra. Nisl rhoncus mattis rhoncus urna neque viverra justo nec ultrices. Pellentesque sit amet porttitor eget dolor morbi non arcu. Vitae justo eget magna fermentum iaculis. Quis auctor elit sed vulputate mi sit. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Semper auctor neque vitae tempus quam pellentesque nec nam. Rhoncus dolor purus non enim. Sed turpis tincidunt id aliquet risus feugiat. Sit amet justo donec enim diam vulputate ut pharetra sit. Risus pretium quam vulputate dignissim suspendisse in est ante in. Massa sapien faucibus et molestie ac feugiat. Id aliquet risus feugiat in ante metus. Risus ultricies tristique nulla aliquet enim tortor at auctor urna. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper morbi. Lacus sed turpis tincidunt id aliquet risus feugiat in. Risus ultricies tristique nulla aliquet enim tortor. In ornare quam viverra orci sagittis eu volutpat. Netus et malesuada fames ac turpis egestas sed tempus urna. Fames ac turpis egestas maecenas pharetra convallis posuere morbi. Etiam erat velit scelerisque in dictum non. Cursus turpis massa tincidunt dui ut ornare lectus. Tristique sollicitudin nibh sit amet commodo nulla facilisi. Pellentesque pulvinar pellentesque habitant morbi tristique senectus et. Aliquet eget sit amet tellus cras. Nullam ac tortor vitae purus faucibus ornare. Lacus viverra vitae congue eu consequat. Vulputate ut pharetra sit amet. Est ante in nibh mauris cursus mattis molestie a. Ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Et tortor at risus viverra. Sed libero enim sed faucibus turpis in eu. Id cursus metus aliquam eleifend mi in nulla posuere sollicitudin. Risus viverra adipiscing at in. Imperdiet massa tincidunt nunc pulvinar sapien et. Nec feugiat in fermentum posuere urna nec tincidunt. Ultricies mi eget mauris pharetra et. Morbi tristique senectus et netus et malesuada fames ac. At quis risus sed vulputate. Interdum velit laoreet id donec. Sapien pellentesque habitant morbi tristique. Pharetra vel turpis nunc eget lorem dolor sed viverra. In massa tempor nec feugiat nisl. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Mauris augue neque gravida in. Faucibus vitae aliquet nec ullamcorper sit amet risus. Id velit ut tortor pretium viverra suspendisse potenti. Leo integer malesuada nunc vel risus commodo viverra maecenas. Risus quis varius quam quisque id. Aliquam malesuada bibendum arcu vitae elementum curabitur vitae. Vestibulum lectus mauris ultrices eros in cursus turpis. Fermentum posuere urna nec tincidunt. Magna etiam tempor orci eu lobortis elementum nibh tellus molestie. Id ornare arcu odio ut. Facilisi nullam vehicula ipsum a arcu cursus vitae congue. Nulla pellentesque dignissim enim sit amet venenatis urna cursus eget. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Quis ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Sed cras ornare arcu dui vivamus arcu felis. Egestas diam in arcu cursus euismod quis. Tincidunt dui ut ornare lectus. Morbi tristique senectus et netus et. Ornare arcu dui vivamus arcu felis bibendum ut tristique. Habitant morbi tristique senectus et netus et malesuada fames ac. Ut tristique et egestas quis. Mollis aliquam ut porttitor leo. Venenatis tellus in metus vulputate eu scelerisque felis imperdiet proin. Sagittis eu volutpat odio facilisis mauris sit amet massa. Eu facilisis sed odio morbi. Nunc consequat interdum varius sit amet mattis. Velit dignissim sodales ut eu. Pellentesque eu tincidunt tortor aliquam. Porta lorem mollis aliquam ut porttitor. Rhoncus urna neque viverra justo nec ultrices. Viverra suspendisse potenti nullam ac tortor vitae purus. Fermentum posuere urna nec tincidunt praesent semper feugiat nibh sed. Purus sit amet luctus venenatis lectus magna fringilla urna porttitor. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Nisl nisi scelerisque eu ultrices vitae auctor. In vitae turpis massa sed elementum tempus egestas. Cursus sit amet dictum sit amet justo donec enim. Vitae congue eu consequat ac felis donec et. Augue interdum velit euismod in pellentesque massa placerat. Enim ut sem viverra aliquet eget sit amet. Velit scelerisque in dictum non consectetur a erat. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nunc faucibus a pellentesque sit amet porttitor eget. Tellus integer feugiat scelerisque varius morbi. Lorem sed risus ultricies tristique nulla aliquet enim tortor at. Eget nulla facilisi etiam dignissim diam quis enim lobortis scelerisque. Adipiscing elit duis tristique sollicitudin. Adipiscing elit pellentesque habitant morbi tristique. Ac tincidunt vitae semper quis lectus nulla at. Maecenas sed enim ut sem viverra. Erat pellentesque adipiscing commodo elit at imperdiet. Dolor morbi non arcu risus quis varius quam quisque. Fringilla urna porttitor rhoncus dolor purus non enim praesent. Tellus integer feugiat scelerisque varius morbi enim nunc faucibus a. Felis eget nunc lobortis mattis aliquam faucibus purus in. Fringilla phasellus faucibus scelerisque eleifend. Pulvinar etiam non quam lacus suspendisse faucibus interdum posuere. Risus ultricies tristique nulla aliquet. Lectus sit amet est placerat. Ac ut consequat semper viverra nam libero justo. Dapibus ultrices in iaculis nunc sed augue. Mattis ullamcorper velit sed ullamcorper. Eget nullam non nisi est. Vitae elementum curabitur vitae nunc sed velit. Sit amet commodo nulla facilisi nullam vehicula ipsum a arcu. Tempor nec feugiat nisl pretium fusce id velit ut. Nulla pellentesque dignissim enim sit amet venenatis. Sed tempus urna et pharetra pharetra. Congue quisque egestas diam in. Convallis posuere morbi leo urna. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Sagittis nisl rhoncus mattis rhoncus urna neque viverra justo. Scelerisque felis imperdiet proin fermentum leo vel. Ut placerat orci nulla pellentesque dignissim enim sit amet. In cursus turpis massa tincidunt dui. Rutrum quisque non tellus orci ac auctor augue mauris augue. Cursus vitae congue mauris rhoncus aenean vel elit scelerisque mauris. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Habitant morbi tristique senectus et netus et. Ridiculus mus mauris vitae ultricies leo. Vitae semper quis lectus nulla at volutpat diam. Purus faucibus ornare suspendisse sed nisi. Enim lobortis scelerisque fermentum dui faucibus in ornare quam. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Varius duis at consectetur lorem donec. Pulvinar pellentesque habitant morbi tristique senectus et netus et. A iaculis at erat pellentesque adipiscing commodo elit at imperdiet. Mi ipsum faucibus vitae aliquet nec. Libero volutpat sed cras ornare arcu dui vivamus arcu. Natoque penatibus et magnis dis parturient montes nascetur ridiculus. Maecenas volutpat blandit aliquam etiam erat velit scelerisque. Cras adipiscing enim eu turpis. Nec tincidunt praesent semper feugiat nibh sed pulvinar. Justo laoreet sit amet cursus sit amet dictum sit. Velit scelerisque in dictum non consectetur a erat nam. Turpis tincidunt id aliquet risus feugiat in ante. Aliquet risus feugiat in ante metus dictum. Hac habitasse platea dictumst quisque sagittis purus sit. Et pharetra pharetra massa massa ultricies. Sit amet nisl suscipit adipiscing bibendum est ultricies integer. Venenatis urna cursus eget nunc scelerisque viverra mauris in. Integer quis auctor elit sed. In est ante in nibh mauris cursus mattis molestie. Scelerisque in dictum non consectetur a erat nam at. Lectus sit amet est placerat in. Sit amet cursus sit amet. Nibh nisl condimentum id venenatis a condimentum. Purus ut faucibus pulvinar elementum integer enim. Pharetra sit amet aliquam id diam maecenas. Id cursus metus aliquam eleifend mi in nulla posuere. Lobortis mattis aliquam faucibus purus in massa tempor nec. Urna neque viverra justo nec ultrices dui sapien eget. Enim ut sem viverra aliquet eget sit amet. In eu mi bibendum neque egestas congue quisque egestas. Enim neque volutpat ac tincidunt. Orci ac auctor augue mauris augue neque gravida in fermentum. Velit aliquet sagittis id consectetur. Enim ut sem viverra aliquet eget sit amet tellus. Semper auctor neque vitae tempus quam pellentesque nec. Non blandit massa enim nec dui nunc. Morbi blandit cursus risus at ultrices mi tempus imperdiet nulla. Arcu non odio euismod lacinia at quis risus. Dictum varius duis at consectetur lorem donec massa. Blandit massa enim nec dui. Nibh ipsum consequat nisl vel. Turpis in eu mi bibendum neque. Ut tristique et egestas quis. Ac odio tempor orci dapibus. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim. Integer feugiat scelerisque varius morbi enim. Libero volutpat sed cras ornare arcu dui. Odio aenean sed adipiscing diam. Et egestas quis ipsum suspendisse ultrices. Aliquet lectus proin nibh nisl condimentum. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh sit. Blandit massa enim nec dui. Tellus molestie nunc non blandit massa enim nec. Tortor vitae purus faucibus ornare suspendisse sed nisi. Nascetur ridiculus mus mauris vitae ultricies leo. Elementum facilisis leo vel fringilla est ullamcorper eget nulla. Diam maecenas ultricies mi eget. Duis tristique sollicitudin nibh sit amet commodo nulla. Tempus iaculis urna id volutpat lacus laoreet non curabitur gravida. Dictumst quisque sagittis purus sit amet. Viverra mauris in aliquam sem. Quis risus sed vulputate odio ut enim blandit volutpat maecenas. Condimentum mattis pellentesque id nibh tortor id. Non sodales neque sodales ut etiam sit amet. Ipsum consequat nisl vel pretium. Cursus in hac habitasse platea dictumst quisque sagittis purus sit. Fringilla est ullamcorper eget nulla facilisi etiam. Tellus elementum sagittis vitae et leo duis ut diam quam. Nisl vel pretium lectus quam id leo in.' = 'long' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4184365 tomlkit-0.12.4/tests/toml-spec-tests/values/qa-key-literal-40kb.yaml0000644000000000000000000011612014567257576022207 0ustar00? 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor. Amet consectetur adipiscing elit ut. Nulla facilisi etiam dignissim diam quis enim lobortis. Curabitur vitae nunc sed velit dignissim sodales ut eu. Fames ac turpis egestas sed tempus urna et. Facilisi cras fermentum odio eu feugiat pretium. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Est lorem ipsum dolor sit amet consectetur adipiscing elit. Vel quam elementum pulvinar etiam non quam lacus. Pharetra et ultrices neque ornare aenean euismod. Nisl nisi scelerisque eu ultrices. Eget dolor morbi non arcu risus. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Faucibus nisl tincidunt eget nullam. Nisl pretium fusce id velit ut tortor pretium viverra suspendisse. Mauris ultrices eros in cursus. Donec ac odio tempor orci dapibus ultrices in iaculis. Tellus cras adipiscing enim eu turpis egestas pretium aenean pharetra. Eros in cursus turpis massa. Nascetur ridiculus mus mauris vitae ultricies leo integer malesuada nunc. Velit sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Aenean euismod elementum nisi quis eleifend quam. Magnis dis parturient montes nascetur ridiculus mus. Eu tincidunt tortor aliquam nulla facilisi cras. Tristique senectus et netus et malesuada fames. Urna nec tincidunt praesent semper feugiat nibh sed pulvinar. Vitae ultricies leo integer malesuada nunc vel risus commodo viverra. Ac turpis egestas sed tempus urna et. Amet mauris commodo quis imperdiet massa tincidunt. Urna nunc id cursus metus aliquam eleifend mi. In nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Neque aliquam vestibulum morbi blandit cursus. Pulvinar mattis nunc sed blandit libero volutpat sed. Sed egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Blandit cursus risus at ultrices mi tempus. Turpis massa sed elementum tempus egestas sed sed. Dictum varius duis at consectetur lorem. Commodo ullamcorper a lacus vestibulum sed arcu non. Dolor magna eget est lorem. Tincidunt arcu non sodales neque sodales ut etiam sit amet. Sit amet risus nullam eget felis eget nunc lobortis. Risus in hendrerit gravida rutrum quisque non tellus orci. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Morbi tristique senectus et netus et malesuada. In aliquam sem fringilla ut morbi tincidunt. Ornare aenean euismod elementum nisi quis eleifend quam. Sed id semper risus in hendrerit gravida rutrum quisque. Lorem ipsum dolor sit amet consectetur adipiscing elit. A condimentum vitae sapien pellentesque habitant morbi tristique senectus et. Faucibus purus in massa tempor nec feugiat nisl. Vehicula ipsum a arcu cursus vitae congue. Facilisi cras fermentum odio eu feugiat pretium nibh. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Ultrices dui sapien eget mi proin sed libero enim. Nisi est sit amet facilisis magna etiam tempor. Posuere ac ut consequat semper viverra nam. Dis parturient montes nascetur ridiculus mus mauris vitae. Nec sagittis aliquam malesuada bibendum. Mattis pellentesque id nibh tortor id aliquet lectus. Vitae congue eu consequat ac felis donec et. Cras sed felis eget velit aliquet sagittis id consectetur purus. Pellentesque elit ullamcorper dignissim cras tincidunt. Pellentesque dignissim enim sit amet venenatis urna. A cras semper auctor neque vitae tempus. Amet massa vitae tortor condimentum lacinia quis vel eros donec. Tempor commodo ullamcorper a lacus. Nibh tellus molestie nunc non blandit massa enim nec dui. Viverra orci sagittis eu volutpat odio facilisis mauris sit. Sed augue lacus viverra vitae. Vulputate eu scelerisque felis imperdiet proin fermentum leo vel orci. Tellus rutrum tellus pellentesque eu tincidunt tortor. Cras semper auctor neque vitae tempus quam pellentesque nec. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Tristique magna sit amet purus gravida quis blandit turpis. Viverra ipsum nunc aliquet bibendum. Arcu bibendum at varius vel. Amet mattis vulputate enim nulla. Vulputate enim nulla aliquet porttitor. Volutpat blandit aliquam etiam erat velit scelerisque in dictum. Morbi tristique senectus et netus et malesuada fames ac. Faucibus et molestie ac feugiat sed. Tellus elementum sagittis vitae et leo duis. Id aliquet lectus proin nibh. Ornare arcu dui vivamus arcu. Morbi tincidunt augue interdum velit euismod in pellentesque massa placerat. Quis eleifend quam adipiscing vitae. Tristique senectus et netus et malesuada fames ac turpis. Pharetra convallis posuere morbi leo. Ornare arcu odio ut sem nulla pharetra diam sit. Morbi tristique senectus et netus et. Dictum non consectetur a erat nam at lectus urna. Varius vel pharetra vel turpis. Mi ipsum faucibus vitae aliquet. Tellus in metus vulputate eu scelerisque felis imperdiet proin. In est ante in nibh mauris cursus mattis. Massa ultricies mi quis hendrerit dolor magna eget. Fermentum leo vel orci porta. Elit ut aliquam purus sit amet luctus venenatis lectus. Eget aliquet nibh praesent tristique magna sit amet. Arcu non odio euismod lacinia at quis. Montes nascetur ridiculus mus mauris vitae ultricies. Tempus quam pellentesque nec nam aliquam sem et tortor. Morbi leo urna molestie at elementum eu facilisis sed. In fermentum posuere urna nec tincidunt. Neque aliquam vestibulum morbi blandit cursus risus. Vulputate dignissim suspendisse in est ante in nibh mauris cursus. Lorem ipsum dolor sit amet consectetur adipiscing. Orci eu lobortis elementum nibh tellus molestie nunc non. Enim diam vulputate ut pharetra sit amet aliquam. Convallis convallis tellus id interdum velit laoreet id donec ultrices. Sit amet mattis vulputate enim nulla aliquet porttitor lacus luctus. A lacus vestibulum sed arcu non odio. Ut tortor pretium viverra suspendisse potenti nullam ac tortor. Diam vel quam elementum pulvinar etiam non quam. Viverra justo nec ultrices dui. Eu volutpat odio facilisis mauris sit amet massa. Sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Ac felis donec et odio pellentesque. Nisl vel pretium lectus quam id leo in. Ultricies lacus sed turpis tincidunt id. At urna condimentum mattis pellentesque id nibh tortor id. Sem nulla pharetra diam sit amet nisl suscipit. Neque viverra justo nec ultrices. Arcu cursus euismod quis viverra nibh cras pulvinar. Dolor sit amet consectetur adipiscing elit ut aliquam purus. Id diam vel quam elementum pulvinar etiam non. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Id aliquet lectus proin nibh nisl condimentum id venenatis. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh. Sed faucibus turpis in eu mi bibendum neque egestas congue. Consectetur libero id faucibus nisl tincidunt eget nullam. At volutpat diam ut venenatis tellus in metus vulputate eu. Condimentum lacinia quis vel eros donec ac odio. Sit amet porttitor eget dolor morbi non arcu risus quis. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Metus dictum at tempor commodo ullamcorper. At ultrices mi tempus imperdiet nulla. Est ullamcorper eget nulla facilisi etiam dignissim diam quis. Lobortis elementum nibh tellus molestie nunc non. Placerat in egestas erat imperdiet sed. Placerat in egestas erat imperdiet sed euismod. Lobortis feugiat vivamus at augue eget arcu dictum varius. Ut sem nulla pharetra diam sit amet. Et tortor at risus viverra adipiscing at in. Tempor nec feugiat nisl pretium. Cursus euismod quis viverra nibh. Eget mi proin sed libero enim sed. Aliquam id diam maecenas ultricies. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Gravida quis blandit turpis cursus in hac habitasse platea dictumst. Sed tempus urna et pharetra pharetra massa massa. Dolor purus non enim praesent elementum facilisis leo vel. Pharetra vel turpis nunc eget. Quam pellentesque nec nam aliquam sem et tortor consequat id. Orci eu lobortis elementum nibh tellus molestie nunc non. Porttitor leo a diam sollicitudin tempor id. Tincidunt ornare massa eget egestas purus viverra accumsan in nisl. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor sit. Elit ut aliquam purus sit amet luctus venenatis lectus. Velit egestas dui id ornare arcu odio ut sem nulla. Lacus viverra vitae congue eu consequat ac felis donec. Nulla aliquet porttitor lacus luctus accumsan tortor posuere ac ut. Lorem dolor sed viverra ipsum. Blandit libero volutpat sed cras ornare arcu. Egestas erat imperdiet sed euismod nisi porta lorem mollis. Viverra maecenas accumsan lacus vel. Enim neque volutpat ac tincidunt. Porttitor massa id neque aliquam vestibulum morbi blandit cursus risus. Malesuada bibendum arcu vitae elementum curabitur vitae nunc. Et malesuada fames ac turpis egestas integer. Egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Est placerat in egestas erat imperdiet sed. Non arcu risus quis varius quam quisque. Lorem mollis aliquam ut porttitor leo a. Viverra tellus in hac habitasse platea dictumst vestibulum rhoncus. Fermentum iaculis eu non diam. Erat imperdiet sed euismod nisi porta lorem mollis aliquam. Varius vel pharetra vel turpis nunc eget lorem dolor. Rhoncus mattis rhoncus urna neque viverra. Hac habitasse platea dictumst quisque sagittis purus sit. At quis risus sed vulputate odio ut enim. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros. Rutrum quisque non tellus orci ac auctor. Iaculis eu non diam phasellus vestibulum lorem sed. Ut sem nulla pharetra diam sit amet nisl suscipit. Risus at ultrices mi tempus. Vitae tortor condimentum lacinia quis vel eros donec. Sed tempus urna et pharetra. Posuere sollicitudin aliquam ultrices sagittis orci. Congue quisque egestas diam in arcu. Hac habitasse platea dictumst vestibulum rhoncus est pellentesque elit. Pellentesque habitant morbi tristique senectus et netus et. Id interdum velit laoreet id. Fusce ut placerat orci nulla pellentesque dignissim. Pretium nibh ipsum consequat nisl vel pretium. Etiam erat velit scelerisque in dictum non consectetur a. Turpis in eu mi bibendum neque egestas congue quisque egestas. Pulvinar sapien et ligula ullamcorper malesuada. Ultricies tristique nulla aliquet enim tortor at. Suspendisse interdum consectetur libero id faucibus. Lorem sed risus ultricies tristique nulla aliquet. Tristique senectus et netus et malesuada fames. Eu augue ut lectus arcu bibendum at varius vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies. Aliquet eget sit amet tellus cras adipiscing. Massa placerat duis ultricies lacus sed turpis tincidunt id aliquet. Ornare massa eget egestas purus viverra accumsan in nisl. Justo laoreet sit amet cursus sit amet. In metus vulputate eu scelerisque felis imperdiet proin. At erat pellentesque adipiscing commodo elit at. Ipsum suspendisse ultrices gravida dictum fusce. Lectus sit amet est placerat in egestas erat. Aliquam ultrices sagittis orci a. Sagittis id consectetur purus ut faucibus pulvinar elementum. Ornare arcu odio ut sem nulla pharetra diam. Sit amet purus gravida quis blandit turpis cursus. Duis ultricies lacus sed turpis tincidunt. Malesuada fames ac turpis egestas sed tempus urna et. Viverra ipsum nunc aliquet bibendum enim facilisis. Et pharetra pharetra massa massa ultricies mi quis. Eget duis at tellus at urna condimentum mattis. Euismod in pellentesque massa placerat. Enim nunc faucibus a pellentesque sit amet porttitor. Dolor sed viverra ipsum nunc aliquet. Donec enim diam vulputate ut pharetra sit amet. Feugiat sed lectus vestibulum mattis ullamcorper velit sed. Erat pellentesque adipiscing commodo elit at imperdiet. Nisl purus in mollis nunc sed id semper risus. Tincidunt augue interdum velit euismod in pellentesque massa. Facilisis magna etiam tempor orci. Mauris in aliquam sem fringilla ut. Gravida dictum fusce ut placerat orci. Sed risus ultricies tristique nulla. Odio morbi quis commodo odio. Feugiat in ante metus dictum at tempor commodo ullamcorper. Porta non pulvinar neque laoreet suspendisse interdum. Etiam tempor orci eu lobortis elementum. Fusce ut placerat orci nulla pellentesque dignissim. Ornare lectus sit amet est placerat in egestas erat. Quis vel eros donec ac. Elementum pulvinar etiam non quam lacus. Sit amet tellus cras adipiscing enim eu turpis. Amet tellus cras adipiscing enim eu. Sed faucibus turpis in eu mi bibendum. Lectus proin nibh nisl condimentum id. Sollicitudin nibh sit amet commodo nulla. Sed tempus urna et pharetra pharetra massa massa. Magna eget est lorem ipsum. Elit ullamcorper dignissim cras tincidunt lobortis feugiat vivamus at. Fermentum dui faucibus in ornare quam viverra orci sagittis eu. Dignissim convallis aenean et tortor. Ut faucibus pulvinar elementum integer enim neque. Nibh cras pulvinar mattis nunc sed. Pellentesque sit amet porttitor eget dolor morbi. Mi eget mauris pharetra et ultrices neque ornare aenean euismod. Quis risus sed vulputate odio ut enim blandit volutpat. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. In vitae turpis massa sed elementum tempus egestas sed sed. Urna id volutpat lacus laoreet non. Egestas pretium aenean pharetra magna ac placerat. Amet commodo nulla facilisi nullam vehicula ipsum a arcu cursus. Donec et odio pellentesque diam volutpat commodo sed. Etiam non quam lacus suspendisse. Augue neque gravida in fermentum et sollicitudin ac orci. Eu feugiat pretium nibh ipsum. Nam at lectus urna duis convallis convallis tellus id. Egestas integer eget aliquet nibh. Viverra accumsan in nisl nisi scelerisque eu ultrices vitae auctor. Urna condimentum mattis pellentesque id nibh tortor id. In egestas erat imperdiet sed euismod. Ut sem viverra aliquet eget sit amet tellus. Feugiat pretium nibh ipsum consequat nisl vel pretium. Volutpat odio facilisis mauris sit amet. Mi sit amet mauris commodo quis imperdiet massa tincidunt. Neque volutpat ac tincidunt vitae semper quis lectus nulla at. Nec feugiat in fermentum posuere urna nec. Ut venenatis tellus in metus vulputate eu. Vestibulum rhoncus est pellentesque elit ullamcorper dignissim. Eu scelerisque felis imperdiet proin. Vitae et leo duis ut diam quam nulla. Ut venenatis tellus in metus vulputate eu scelerisque. Tincidunt dui ut ornare lectus sit amet. Adipiscing diam donec adipiscing tristique risus. Turpis nunc eget lorem dolor sed viverra ipsum nunc aliquet. Non sodales neque sodales ut. Massa placerat duis ultricies lacus sed turpis tincidunt. Viverra orci sagittis eu volutpat odio facilisis mauris sit amet. Adipiscing vitae proin sagittis nisl. Vitae aliquet nec ullamcorper sit. Potenti nullam ac tortor vitae purus. Ultricies lacus sed turpis tincidunt id. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Semper eget duis at tellus at urna condimentum mattis pellentesque. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin. Dictum fusce ut placerat orci nulla pellentesque dignissim. Amet luctus venenatis lectus magna fringilla urna. Quam quisque id diam vel quam elementum pulvinar. At tempor commodo ullamcorper a. Magna etiam tempor orci eu lobortis. Suspendisse ultrices gravida dictum fusce. Massa ultricies mi quis hendrerit dolor magna. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Aliquet enim tortor at auctor urna nunc id. Semper feugiat nibh sed pulvinar proin gravida. Porttitor rhoncus dolor purus non enim. Metus aliquam eleifend mi in nulla. Lectus arcu bibendum at varius vel pharetra. Sed vulputate odio ut enim blandit volutpat. Et ligula ullamcorper malesuada proin libero nunc consequat interdum varius. Donec et odio pellentesque diam volutpat commodo. Id ornare arcu odio ut sem nulla pharetra diam sit. Est ullamcorper eget nulla facilisi etiam dignissim diam quis enim. Sagittis vitae et leo duis ut diam quam nulla. Elementum nisi quis eleifend quam. Congue mauris rhoncus aenean vel elit. Adipiscing elit duis tristique sollicitudin nibh sit. Egestas egestas fringilla phasellus faucibus scelerisque. Morbi tincidunt augue interdum velit euismod. Massa sed elementum tempus egestas sed sed. Id leo in vitae turpis massa sed elementum tempus egestas. In pellentesque massa placerat duis ultricies lacus sed turpis. Vitae proin sagittis nisl rhoncus mattis rhoncus. Enim tortor at auctor urna nunc id. In fermentum posuere urna nec tincidunt praesent semper feugiat nibh. Aliquam ut porttitor leo a diam sollicitudin tempor id. Pellentesque elit eget gravida cum sociis natoque. Molestie at elementum eu facilisis sed odio morbi quis. Tristique senectus et netus et malesuada fames ac turpis. Proin libero nunc consequat interdum varius sit amet mattis. Pellentesque id nibh tortor id. Risus sed vulputate odio ut enim blandit. Laoreet suspendisse interdum consectetur libero id faucibus nisl tincidunt eget. Morbi tincidunt augue interdum velit euismod in pellentesque. Pharetra pharetra massa massa ultricies mi quis hendrerit. Nunc aliquet bibendum enim facilisis gravida neque. Feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Risus quis varius quam quisque id diam vel. Et ultrices neque ornare aenean. Aliquet sagittis id consectetur purus ut faucibus pulvinar elementum. Nibh ipsum consequat nisl vel. Mauris rhoncus aenean vel elit scelerisque mauris pellentesque pulvinar. Ornare quam viverra orci sagittis eu volutpat odio facilisis. Euismod nisi porta lorem mollis aliquam. Enim ut tellus elementum sagittis. Rhoncus mattis rhoncus urna neque. Malesuada fames ac turpis egestas. Cursus in hac habitasse platea dictumst quisque sagittis. Sit amet aliquam id diam maecenas ultricies mi eget mauris. Enim sit amet venenatis urna cursus eget nunc. Fermentum odio eu feugiat pretium nibh ipsum consequat. Eu scelerisque felis imperdiet proin. Nullam non nisi est sit amet facilisis magna etiam tempor. In mollis nunc sed id semper risus in hendrerit. Sollicitudin nibh sit amet commodo nulla facilisi nullam. Sit amet nisl purus in mollis nunc sed id. Nam libero justo laoreet sit amet cursus sit amet dictum. Condimentum id venenatis a condimentum vitae sapien pellentesque. Porta nibh venenatis cras sed felis. Lectus nulla at volutpat diam ut venenatis tellus in. Aliquam etiam erat velit scelerisque in dictum non consectetur a. Leo vel fringilla est ullamcorper eget. Sodales ut etiam sit amet nisl purus in mollis nunc. Euismod nisi porta lorem mollis aliquam. Ornare arcu odio ut sem nulla. Sed felis eget velit aliquet sagittis id consectetur. Pellentesque nec nam aliquam sem et tortor consequat id. Enim nec dui nunc mattis enim ut tellus elementum. Nullam non nisi est sit amet facilisis magna. Rutrum quisque non tellus orci ac auctor augue. Nunc vel risus commodo viverra maecenas accumsan lacus. Viverra vitae congue eu consequat. Sollicitudin nibh sit amet commodo nulla. Amet volutpat consequat mauris nunc congue nisi. Maecenas pharetra convallis posuere morbi leo urna molestie at. Mattis vulputate enim nulla aliquet porttitor lacus luctus accumsan tortor. Pulvinar sapien et ligula ullamcorper malesuada proin libero nunc consequat. Adipiscing diam donec adipiscing tristique risus. Elementum curabitur vitae nunc sed velit dignissim sodales ut. Eleifend donec pretium vulputate sapien nec. Commodo quis imperdiet massa tincidunt nunc pulvinar. Proin libero nunc consequat interdum varius sit amet mattis. Facilisis gravida neque convallis a cras semper auctor neque vitae. Quisque egestas diam in arcu cursus. Nunc eget lorem dolor sed viverra ipsum. Mauris sit amet massa vitae tortor condimentum lacinia quis vel. Aliquam sem et tortor consequat id porta nibh venenatis cras. Nunc sed id semper risus in. Enim sed faucibus turpis in eu mi bibendum neque. Molestie nunc non blandit massa enim. Enim praesent elementum facilisis leo vel fringilla est ullamcorper. Semper risus in hendrerit gravida rutrum quisque non tellus orci. Ac turpis egestas maecenas pharetra. In nulla posuere sollicitudin aliquam. Justo nec ultrices dui sapien eget mi proin sed libero. In ornare quam viverra orci sagittis eu. Proin nibh nisl condimentum id venenatis. Morbi enim nunc faucibus a pellentesque sit amet porttitor eget. Quis risus sed vulputate odio ut enim blandit. Risus feugiat in ante metus dictum at tempor commodo. Sodales neque sodales ut etiam. Nunc id cursus metus aliquam. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim enim. Augue ut lectus arcu bibendum at. Quis varius quam quisque id diam vel quam. Egestas congue quisque egestas diam in arcu. Condimentum mattis pellentesque id nibh tortor id aliquet lectus. Enim lobortis scelerisque fermentum dui faucibus in. In tellus integer feugiat scelerisque varius morbi enim nunc. Mattis molestie a iaculis at erat pellentesque. Elit scelerisque mauris pellentesque pulvinar pellentesque habitant morbi tristique. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Nisl rhoncus mattis rhoncus urna neque. Ac auctor augue mauris augue neque gravida in fermentum et. Sodales ut eu sem integer vitae justo eget. Sed egestas egestas fringilla phasellus. Viverra adipiscing at in tellus integer feugiat scelerisque varius. Purus gravida quis blandit turpis. Id porta nibh venenatis cras sed. Mattis vulputate enim nulla aliquet porttitor lacus. Augue eget arcu dictum varius duis at consectetur lorem donec. Nulla at volutpat diam ut venenatis tellus in metus. Aliquam etiam erat velit scelerisque in dictum non consectetur. Turpis cursus in hac habitasse platea dictumst. Consequat mauris nunc congue nisi vitae suscipit tellus. Volutpat maecenas volutpat blandit aliquam etiam. Massa massa ultricies mi quis hendrerit dolor magna eget est. Velit egestas dui id ornare arcu. Non consectetur a erat nam at. Orci sagittis eu volutpat odio facilisis mauris sit amet. Dui id ornare arcu odio. Sed arcu non odio euismod lacinia. Feugiat in ante metus dictum. Gravida arcu ac tortor dignissim convallis. Egestas sed tempus urna et pharetra pharetra massa massa. Nulla facilisi nullam vehicula ipsum a arcu. Ipsum a arcu cursus vitae congue mauris. Porttitor rhoncus dolor purus non. Magna sit amet purus gravida quis blandit. Sapien eget mi proin sed libero enim sed faucibus turpis. Nisl nunc mi ipsum faucibus vitae aliquet nec ullamcorper sit. Pellentesque dignissim enim sit amet venenatis urna cursus eget. Pharetra massa massa ultricies mi quis hendrerit. Sapien nec sagittis aliquam malesuada bibendum. Nunc scelerisque viverra mauris in aliquam sem fringilla ut. Dolor magna eget est lorem ipsum dolor. Amet commodo nulla facilisi nullam. Pellentesque elit ullamcorper dignissim cras. Id porta nibh venenatis cras sed felis eget. Nam at lectus urna duis. Laoreet non curabitur gravida arcu ac tortor dignissim convallis. Nunc lobortis mattis aliquam faucibus purus in massa tempor. Sit amet luctus venenatis lectus magna fringilla. Duis ultricies lacus sed turpis tincidunt id. Sed velit dignissim sodales ut eu. Ut tortor pretium viverra suspendisse potenti nullam. Iaculis at erat pellentesque adipiscing. Ipsum nunc aliquet bibendum enim facilisis gravida neque. Nulla aliquet enim tortor at auctor urna nunc id cursus. Amet cursus sit amet dictum sit amet justo donec enim. Enim nunc faucibus a pellentesque sit amet porttitor eget dolor. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros in. Nulla facilisi etiam dignissim diam quis enim. Ut enim blandit volutpat maecenas volutpat blandit aliquam etiam erat. Imperdiet proin fermentum leo vel orci porta non pulvinar neque. Vel fringilla est ullamcorper eget nulla. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Ipsum nunc aliquet bibendum enim facilisis gravida neque convallis a. Arcu cursus vitae congue mauris rhoncus aenean vel elit. Augue eget arcu dictum varius duis. Tristique et egestas quis ipsum. Quis varius quam quisque id. Varius sit amet mattis vulputate. Mattis molestie a iaculis at erat pellentesque. Libero justo laoreet sit amet cursus. Aliquam id diam maecenas ultricies mi eget mauris pharetra. Ut eu sem integer vitae justo eget. Fames ac turpis egestas sed. Suspendisse in est ante in nibh mauris cursus mattis. Faucibus pulvinar elementum integer enim neque volutpat ac tincidunt vitae. Neque vitae tempus quam pellentesque nec nam aliquam. Lobortis elementum nibh tellus molestie nunc non. Lacus vel facilisis volutpat est velit egestas dui. Justo laoreet sit amet cursus sit amet dictum sit amet. Adipiscing enim eu turpis egestas pretium aenean pharetra magna. Cursus metus aliquam eleifend mi in nulla posuere. Nibh mauris cursus mattis molestie a. Dignissim diam quis enim lobortis scelerisque fermentum. A scelerisque purus semper eget duis at tellus. Lacus sed turpis tincidunt id aliquet risus feugiat in. Non tellus orci ac auctor. Ultrices in iaculis nunc sed augue lacus. Tincidunt tortor aliquam nulla facilisi cras. Nulla facilisi nullam vehicula ipsum a arcu cursus vitae congue. Eget magna fermentum iaculis eu non diam phasellus. Pharetra massa massa ultricies mi quis. Eget mauris pharetra et ultrices neque ornare. Aliquam faucibus purus in massa. Facilisi morbi tempus iaculis urna id volutpat lacus. Accumsan lacus vel facilisis volutpat. Curabitur gravida arcu ac tortor. Quam lacus suspendisse faucibus interdum. Elementum nibh tellus molestie nunc non blandit massa enim. Libero id faucibus nisl tincidunt. Bibendum ut tristique et egestas. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Augue interdum velit euismod in pellentesque. Adipiscing diam donec adipiscing tristique risus nec feugiat. Fringilla ut morbi tincidunt augue interdum velit. Vitae et leo duis ut diam quam nulla porttitor massa. Egestas integer eget aliquet nibh praesent tristique. Posuere sollicitudin aliquam ultrices sagittis orci a. Nisi est sit amet facilisis. Risus quis varius quam quisque id diam. Faucibus turpis in eu mi. Et molestie ac feugiat sed lectus vestibulum. Porttitor lacus luctus accumsan tortor posuere ac. Platea dictumst vestibulum rhoncus est pellentesque. Tortor pretium viverra suspendisse potenti nullam ac tortor. Enim praesent elementum facilisis leo vel fringilla est. Proin libero nunc consequat interdum varius sit amet mattis vulputate. Turpis egestas pretium aenean pharetra magna ac placerat vestibulum lectus. Nulla pharetra diam sit amet nisl suscipit. Mauris nunc congue nisi vitae suscipit tellus mauris a diam. Faucibus in ornare quam viverra orci sagittis eu volutpat. Volutpat consequat mauris nunc congue nisi vitae. Dui nunc mattis enim ut tellus. Adipiscing elit ut aliquam purus sit amet luctus. Tempus egestas sed sed risus. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Massa ultricies mi quis hendrerit dolor magna eget. Pulvinar mattis nunc sed blandit libero volutpat sed cras ornare. Ut eu sem integer vitae justo eget magna fermentum. Ornare quam viverra orci sagittis. Eget dolor morbi non arcu risus quis varius quam. Tincidunt praesent semper feugiat nibh sed pulvinar. Sit amet justo donec enim diam vulputate. Dui faucibus in ornare quam viverra. Tincidunt tortor aliquam nulla facilisi cras fermentum odio eu. Turpis egestas sed tempus urna et. Pretium quam vulputate dignissim suspendisse in est ante in. Morbi quis commodo odio aenean sed adipiscing diam donec. Nunc mattis enim ut tellus elementum sagittis vitae et. Diam vel quam elementum pulvinar etiam non quam. Convallis posuere morbi leo urna molestie at elementum eu. Adipiscing at in tellus integer feugiat scelerisque varius morbi. Quis varius quam quisque id diam vel quam elementum. Dui accumsan sit amet nulla. Adipiscing elit duis tristique sollicitudin nibh sit amet commodo. Viverra ipsum nunc aliquet bibendum enim facilisis. Porta lorem mollis aliquam ut. Velit ut tortor pretium viverra suspendisse potenti. Quis viverra nibh cras pulvinar mattis nunc sed blandit. Pharetra magna ac placerat vestibulum. Mauris ultrices eros in cursus turpis massa. Lacus vestibulum sed arcu non odio euismod lacinia at. Dapibus ultrices in iaculis nunc sed. Cras adipiscing enim eu turpis egestas. Eget arcu dictum varius duis at consectetur. Consequat id porta nibh venenatis cras sed felis eget velit. Integer enim neque volutpat ac tincidunt vitae. Feugiat pretium nibh ipsum consequat nisl vel pretium lectus. Ut morbi tincidunt augue interdum velit euismod. Sed cras ornare arcu dui vivamus arcu felis bibendum ut. Eget felis eget nunc lobortis mattis aliquam faucibus purus in. Luctus venenatis lectus magna fringilla urna porttitor rhoncus dolor. Nisl nunc mi ipsum faucibus vitae. Proin fermentum leo vel orci porta. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. Et leo duis ut diam quam. Eros in cursus turpis massa tincidunt. Volutpat est velit egestas dui id. Commodo odio aenean sed adipiscing diam. Quis blandit turpis cursus in hac habitasse platea dictumst quisque. Magna fringilla urna porttitor rhoncus dolor. Amet consectetur adipiscing elit ut aliquam purus sit amet. Vitae justo eget magna fermentum iaculis eu non diam. Hendrerit dolor magna eget est. Ac placerat vestibulum lectus mauris ultrices eros in cursus turpis. Egestas diam in arcu cursus. At varius vel pharetra vel turpis nunc. Lacus vel facilisis volutpat est velit. Ut ornare lectus sit amet est placerat in egestas. Quam adipiscing vitae proin sagittis nisl rhoncus. Dolor purus non enim praesent. Urna condimentum mattis pellentesque id. Magnis dis parturient montes nascetur ridiculus. Feugiat nisl pretium fusce id. Sed cras ornare arcu dui vivamus. Vitae turpis massa sed elementum tempus egestas sed sed. Ac feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Ac ut consequat semper viverra nam libero. Consectetur lorem donec massa sapien faucibus. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Eu turpis egestas pretium aenean pharetra. Nisl rhoncus mattis rhoncus urna neque viverra justo nec ultrices. Pellentesque sit amet porttitor eget dolor morbi non arcu. Vitae justo eget magna fermentum iaculis. Quis auctor elit sed vulputate mi sit. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Semper auctor neque vitae tempus quam pellentesque nec nam. Rhoncus dolor purus non enim. Sed turpis tincidunt id aliquet risus feugiat. Sit amet justo donec enim diam vulputate ut pharetra sit. Risus pretium quam vulputate dignissim suspendisse in est ante in. Massa sapien faucibus et molestie ac feugiat. Id aliquet risus feugiat in ante metus. Risus ultricies tristique nulla aliquet enim tortor at auctor urna. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper morbi. Lacus sed turpis tincidunt id aliquet risus feugiat in. Risus ultricies tristique nulla aliquet enim tortor. In ornare quam viverra orci sagittis eu volutpat. Netus et malesuada fames ac turpis egestas sed tempus urna. Fames ac turpis egestas maecenas pharetra convallis posuere morbi. Etiam erat velit scelerisque in dictum non. Cursus turpis massa tincidunt dui ut ornare lectus. Tristique sollicitudin nibh sit amet commodo nulla facilisi. Pellentesque pulvinar pellentesque habitant morbi tristique senectus et. Aliquet eget sit amet tellus cras. Nullam ac tortor vitae purus faucibus ornare. Lacus viverra vitae congue eu consequat. Vulputate ut pharetra sit amet. Est ante in nibh mauris cursus mattis molestie a. Ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Et tortor at risus viverra. Sed libero enim sed faucibus turpis in eu. Id cursus metus aliquam eleifend mi in nulla posuere sollicitudin. Risus viverra adipiscing at in. Imperdiet massa tincidunt nunc pulvinar sapien et. Nec feugiat in fermentum posuere urna nec tincidunt. Ultricies mi eget mauris pharetra et. Morbi tristique senectus et netus et malesuada fames ac. At quis risus sed vulputate. Interdum velit laoreet id donec. Sapien pellentesque habitant morbi tristique. Pharetra vel turpis nunc eget lorem dolor sed viverra. In massa tempor nec feugiat nisl. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Mauris augue neque gravida in. Faucibus vitae aliquet nec ullamcorper sit amet risus. Id velit ut tortor pretium viverra suspendisse potenti. Leo integer malesuada nunc vel risus commodo viverra maecenas. Risus quis varius quam quisque id. Aliquam malesuada bibendum arcu vitae elementum curabitur vitae. Vestibulum lectus mauris ultrices eros in cursus turpis. Fermentum posuere urna nec tincidunt. Magna etiam tempor orci eu lobortis elementum nibh tellus molestie. Id ornare arcu odio ut. Facilisi nullam vehicula ipsum a arcu cursus vitae congue. Nulla pellentesque dignissim enim sit amet venenatis urna cursus eget. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Quis ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Sed cras ornare arcu dui vivamus arcu felis. Egestas diam in arcu cursus euismod quis. Tincidunt dui ut ornare lectus. Morbi tristique senectus et netus et. Ornare arcu dui vivamus arcu felis bibendum ut tristique. Habitant morbi tristique senectus et netus et malesuada fames ac. Ut tristique et egestas quis. Mollis aliquam ut porttitor leo. Venenatis tellus in metus vulputate eu scelerisque felis imperdiet proin. Sagittis eu volutpat odio facilisis mauris sit amet massa. Eu facilisis sed odio morbi. Nunc consequat interdum varius sit amet mattis. Velit dignissim sodales ut eu. Pellentesque eu tincidunt tortor aliquam. Porta lorem mollis aliquam ut porttitor. Rhoncus urna neque viverra justo nec ultrices. Viverra suspendisse potenti nullam ac tortor vitae purus. Fermentum posuere urna nec tincidunt praesent semper feugiat nibh sed. Purus sit amet luctus venenatis lectus magna fringilla urna porttitor. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Nisl nisi scelerisque eu ultrices vitae auctor. In vitae turpis massa sed elementum tempus egestas. Cursus sit amet dictum sit amet justo donec enim. Vitae congue eu consequat ac felis donec et. Augue interdum velit euismod in pellentesque massa placerat. Enim ut sem viverra aliquet eget sit amet. Velit scelerisque in dictum non consectetur a erat. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nunc faucibus a pellentesque sit amet porttitor eget. Tellus integer feugiat scelerisque varius morbi. Lorem sed risus ultricies tristique nulla aliquet enim tortor at. Eget nulla facilisi etiam dignissim diam quis enim lobortis scelerisque. Adipiscing elit duis tristique sollicitudin. Adipiscing elit pellentesque habitant morbi tristique. Ac tincidunt vitae semper quis lectus nulla at. Maecenas sed enim ut sem viverra. Erat pellentesque adipiscing commodo elit at imperdiet. Dolor morbi non arcu risus quis varius quam quisque. Fringilla urna porttitor rhoncus dolor purus non enim praesent. Tellus integer feugiat scelerisque varius morbi enim nunc faucibus a. Felis eget nunc lobortis mattis aliquam faucibus purus in. Fringilla phasellus faucibus scelerisque eleifend. Pulvinar etiam non quam lacus suspendisse faucibus interdum posuere. Risus ultricies tristique nulla aliquet. Lectus sit amet est placerat. Ac ut consequat semper viverra nam libero justo. Dapibus ultrices in iaculis nunc sed augue. Mattis ullamcorper velit sed ullamcorper. Eget nullam non nisi est. Vitae elementum curabitur vitae nunc sed velit. Sit amet commodo nulla facilisi nullam vehicula ipsum a arcu. Tempor nec feugiat nisl pretium fusce id velit ut. Nulla pellentesque dignissim enim sit amet venenatis. Sed tempus urna et pharetra pharetra. Congue quisque egestas diam in. Convallis posuere morbi leo urna. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Sagittis nisl rhoncus mattis rhoncus urna neque viverra justo. Scelerisque felis imperdiet proin fermentum leo vel. Ut placerat orci nulla pellentesque dignissim enim sit amet. In cursus turpis massa tincidunt dui. Rutrum quisque non tellus orci ac auctor augue mauris augue. Cursus vitae congue mauris rhoncus aenean vel elit scelerisque mauris. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Habitant morbi tristique senectus et netus et. Ridiculus mus mauris vitae ultricies leo. Vitae semper quis lectus nulla at volutpat diam. Purus faucibus ornare suspendisse sed nisi. Enim lobortis scelerisque fermentum dui faucibus in ornare quam. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Varius duis at consectetur lorem donec. Pulvinar pellentesque habitant morbi tristique senectus et netus et. A iaculis at erat pellentesque adipiscing commodo elit at imperdiet. Mi ipsum faucibus vitae aliquet nec. Libero volutpat sed cras ornare arcu dui vivamus arcu. Natoque penatibus et magnis dis parturient montes nascetur ridiculus. Maecenas volutpat blandit aliquam etiam erat velit scelerisque. Cras adipiscing enim eu turpis. Nec tincidunt praesent semper feugiat nibh sed pulvinar. Justo laoreet sit amet cursus sit amet dictum sit. Velit scelerisque in dictum non consectetur a erat nam. Turpis tincidunt id aliquet risus feugiat in ante. Aliquet risus feugiat in ante metus dictum. Hac habitasse platea dictumst quisque sagittis purus sit. Et pharetra pharetra massa massa ultricies. Sit amet nisl suscipit adipiscing bibendum est ultricies integer. Venenatis urna cursus eget nunc scelerisque viverra mauris in. Integer quis auctor elit sed. In est ante in nibh mauris cursus mattis molestie. Scelerisque in dictum non consectetur a erat nam at. Lectus sit amet est placerat in. Sit amet cursus sit amet. Nibh nisl condimentum id venenatis a condimentum. Purus ut faucibus pulvinar elementum integer enim. Pharetra sit amet aliquam id diam maecenas. Id cursus metus aliquam eleifend mi in nulla posuere. Lobortis mattis aliquam faucibus purus in massa tempor nec. Urna neque viverra justo nec ultrices dui sapien eget. Enim ut sem viverra aliquet eget sit amet. In eu mi bibendum neque egestas congue quisque egestas. Enim neque volutpat ac tincidunt. Orci ac auctor augue mauris augue neque gravida in fermentum. Velit aliquet sagittis id consectetur. Enim ut sem viverra aliquet eget sit amet tellus. Semper auctor neque vitae tempus quam pellentesque nec. Non blandit massa enim nec dui nunc. Morbi blandit cursus risus at ultrices mi tempus imperdiet nulla. Arcu non odio euismod lacinia at quis risus. Dictum varius duis at consectetur lorem donec massa. Blandit massa enim nec dui. Nibh ipsum consequat nisl vel. Turpis in eu mi bibendum neque. Ut tristique et egestas quis. Ac odio tempor orci dapibus. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim. Integer feugiat scelerisque varius morbi enim. Libero volutpat sed cras ornare arcu dui. Odio aenean sed adipiscing diam. Et egestas quis ipsum suspendisse ultrices. Aliquet lectus proin nibh nisl condimentum. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh sit. Blandit massa enim nec dui. Tellus molestie nunc non blandit massa enim nec. Tortor vitae purus faucibus ornare suspendisse sed nisi. Nascetur ridiculus mus mauris vitae ultricies leo. Elementum facilisis leo vel fringilla est ullamcorper eget nulla. Diam maecenas ultricies mi eget. Duis tristique sollicitudin nibh sit amet commodo nulla. Tempus iaculis urna id volutpat lacus laoreet non curabitur gravida. Dictumst quisque sagittis purus sit amet. Viverra mauris in aliquam sem. Quis risus sed vulputate odio ut enim blandit volutpat maecenas. Condimentum mattis pellentesque id nibh tortor id. Non sodales neque sodales ut etiam sit amet. Ipsum consequat nisl vel pretium. Cursus in hac habitasse platea dictumst quisque sagittis purus sit. Fringilla est ullamcorper eget nulla facilisi etiam. Tellus elementum sagittis vitae et leo duis ut diam quam. Nisl vel pretium lectus quam id leo in.' : long ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4224367 tomlkit-0.12.4/tests/toml-spec-tests/values/qa-key-string-40kb.toml0000644000000000000000000011611714567257576022100 0ustar00"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor. Amet consectetur adipiscing elit ut. Nulla facilisi etiam dignissim diam quis enim lobortis. Curabitur vitae nunc sed velit dignissim sodales ut eu. Fames ac turpis egestas sed tempus urna et. Facilisi cras fermentum odio eu feugiat pretium. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Est lorem ipsum dolor sit amet consectetur adipiscing elit. Vel quam elementum pulvinar etiam non quam lacus. Pharetra et ultrices neque ornare aenean euismod. Nisl nisi scelerisque eu ultrices. Eget dolor morbi non arcu risus. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Faucibus nisl tincidunt eget nullam. Nisl pretium fusce id velit ut tortor pretium viverra suspendisse. Mauris ultrices eros in cursus. Donec ac odio tempor orci dapibus ultrices in iaculis. Tellus cras adipiscing enim eu turpis egestas pretium aenean pharetra. Eros in cursus turpis massa. Nascetur ridiculus mus mauris vitae ultricies leo integer malesuada nunc. Velit sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Aenean euismod elementum nisi quis eleifend quam. Magnis dis parturient montes nascetur ridiculus mus. Eu tincidunt tortor aliquam nulla facilisi cras. Tristique senectus et netus et malesuada fames. Urna nec tincidunt praesent semper feugiat nibh sed pulvinar. Vitae ultricies leo integer malesuada nunc vel risus commodo viverra. Ac turpis egestas sed tempus urna et. Amet mauris commodo quis imperdiet massa tincidunt. Urna nunc id cursus metus aliquam eleifend mi. In nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Neque aliquam vestibulum morbi blandit cursus. Pulvinar mattis nunc sed blandit libero volutpat sed. Sed egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Blandit cursus risus at ultrices mi tempus. Turpis massa sed elementum tempus egestas sed sed. Dictum varius duis at consectetur lorem. Commodo ullamcorper a lacus vestibulum sed arcu non. Dolor magna eget est lorem. Tincidunt arcu non sodales neque sodales ut etiam sit amet. Sit amet risus nullam eget felis eget nunc lobortis. Risus in hendrerit gravida rutrum quisque non tellus orci. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Morbi tristique senectus et netus et malesuada. In aliquam sem fringilla ut morbi tincidunt. Ornare aenean euismod elementum nisi quis eleifend quam. Sed id semper risus in hendrerit gravida rutrum quisque. Lorem ipsum dolor sit amet consectetur adipiscing elit. A condimentum vitae sapien pellentesque habitant morbi tristique senectus et. Faucibus purus in massa tempor nec feugiat nisl. Vehicula ipsum a arcu cursus vitae congue. Facilisi cras fermentum odio eu feugiat pretium nibh. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Ultrices dui sapien eget mi proin sed libero enim. Nisi est sit amet facilisis magna etiam tempor. Posuere ac ut consequat semper viverra nam. Dis parturient montes nascetur ridiculus mus mauris vitae. Nec sagittis aliquam malesuada bibendum. Mattis pellentesque id nibh tortor id aliquet lectus. Vitae congue eu consequat ac felis donec et. Cras sed felis eget velit aliquet sagittis id consectetur purus. Pellentesque elit ullamcorper dignissim cras tincidunt. Pellentesque dignissim enim sit amet venenatis urna. A cras semper auctor neque vitae tempus. Amet massa vitae tortor condimentum lacinia quis vel eros donec. Tempor commodo ullamcorper a lacus. Nibh tellus molestie nunc non blandit massa enim nec dui. Viverra orci sagittis eu volutpat odio facilisis mauris sit. Sed augue lacus viverra vitae. Vulputate eu scelerisque felis imperdiet proin fermentum leo vel orci. Tellus rutrum tellus pellentesque eu tincidunt tortor. Cras semper auctor neque vitae tempus quam pellentesque nec. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Tristique magna sit amet purus gravida quis blandit turpis. Viverra ipsum nunc aliquet bibendum. Arcu bibendum at varius vel. Amet mattis vulputate enim nulla. Vulputate enim nulla aliquet porttitor. Volutpat blandit aliquam etiam erat velit scelerisque in dictum. Morbi tristique senectus et netus et malesuada fames ac. Faucibus et molestie ac feugiat sed. Tellus elementum sagittis vitae et leo duis. Id aliquet lectus proin nibh. Ornare arcu dui vivamus arcu. Morbi tincidunt augue interdum velit euismod in pellentesque massa placerat. Quis eleifend quam adipiscing vitae. Tristique senectus et netus et malesuada fames ac turpis. Pharetra convallis posuere morbi leo. Ornare arcu odio ut sem nulla pharetra diam sit. Morbi tristique senectus et netus et. Dictum non consectetur a erat nam at lectus urna. Varius vel pharetra vel turpis. Mi ipsum faucibus vitae aliquet. Tellus in metus vulputate eu scelerisque felis imperdiet proin. In est ante in nibh mauris cursus mattis. Massa ultricies mi quis hendrerit dolor magna eget. Fermentum leo vel orci porta. Elit ut aliquam purus sit amet luctus venenatis lectus. Eget aliquet nibh praesent tristique magna sit amet. Arcu non odio euismod lacinia at quis. Montes nascetur ridiculus mus mauris vitae ultricies. Tempus quam pellentesque nec nam aliquam sem et tortor. Morbi leo urna molestie at elementum eu facilisis sed. In fermentum posuere urna nec tincidunt. Neque aliquam vestibulum morbi blandit cursus risus. Vulputate dignissim suspendisse in est ante in nibh mauris cursus. Lorem ipsum dolor sit amet consectetur adipiscing. Orci eu lobortis elementum nibh tellus molestie nunc non. Enim diam vulputate ut pharetra sit amet aliquam. Convallis convallis tellus id interdum velit laoreet id donec ultrices. Sit amet mattis vulputate enim nulla aliquet porttitor lacus luctus. A lacus vestibulum sed arcu non odio. Ut tortor pretium viverra suspendisse potenti nullam ac tortor. Diam vel quam elementum pulvinar etiam non quam. Viverra justo nec ultrices dui. Eu volutpat odio facilisis mauris sit amet massa. Sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Ac felis donec et odio pellentesque. Nisl vel pretium lectus quam id leo in. Ultricies lacus sed turpis tincidunt id. At urna condimentum mattis pellentesque id nibh tortor id. Sem nulla pharetra diam sit amet nisl suscipit. Neque viverra justo nec ultrices. Arcu cursus euismod quis viverra nibh cras pulvinar. Dolor sit amet consectetur adipiscing elit ut aliquam purus. Id diam vel quam elementum pulvinar etiam non. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Id aliquet lectus proin nibh nisl condimentum id venenatis. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh. Sed faucibus turpis in eu mi bibendum neque egestas congue. Consectetur libero id faucibus nisl tincidunt eget nullam. At volutpat diam ut venenatis tellus in metus vulputate eu. Condimentum lacinia quis vel eros donec ac odio. Sit amet porttitor eget dolor morbi non arcu risus quis. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Metus dictum at tempor commodo ullamcorper. At ultrices mi tempus imperdiet nulla. Est ullamcorper eget nulla facilisi etiam dignissim diam quis. Lobortis elementum nibh tellus molestie nunc non. Placerat in egestas erat imperdiet sed. Placerat in egestas erat imperdiet sed euismod. Lobortis feugiat vivamus at augue eget arcu dictum varius. Ut sem nulla pharetra diam sit amet. Et tortor at risus viverra adipiscing at in. Tempor nec feugiat nisl pretium. Cursus euismod quis viverra nibh. Eget mi proin sed libero enim sed. Aliquam id diam maecenas ultricies. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Gravida quis blandit turpis cursus in hac habitasse platea dictumst. Sed tempus urna et pharetra pharetra massa massa. Dolor purus non enim praesent elementum facilisis leo vel. Pharetra vel turpis nunc eget. Quam pellentesque nec nam aliquam sem et tortor consequat id. Orci eu lobortis elementum nibh tellus molestie nunc non. Porttitor leo a diam sollicitudin tempor id. Tincidunt ornare massa eget egestas purus viverra accumsan in nisl. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor sit. Elit ut aliquam purus sit amet luctus venenatis lectus. Velit egestas dui id ornare arcu odio ut sem nulla. Lacus viverra vitae congue eu consequat ac felis donec. Nulla aliquet porttitor lacus luctus accumsan tortor posuere ac ut. Lorem dolor sed viverra ipsum. Blandit libero volutpat sed cras ornare arcu. Egestas erat imperdiet sed euismod nisi porta lorem mollis. Viverra maecenas accumsan lacus vel. Enim neque volutpat ac tincidunt. Porttitor massa id neque aliquam vestibulum morbi blandit cursus risus. Malesuada bibendum arcu vitae elementum curabitur vitae nunc. Et malesuada fames ac turpis egestas integer. Egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Est placerat in egestas erat imperdiet sed. Non arcu risus quis varius quam quisque. Lorem mollis aliquam ut porttitor leo a. Viverra tellus in hac habitasse platea dictumst vestibulum rhoncus. Fermentum iaculis eu non diam. Erat imperdiet sed euismod nisi porta lorem mollis aliquam. Varius vel pharetra vel turpis nunc eget lorem dolor. Rhoncus mattis rhoncus urna neque viverra. Hac habitasse platea dictumst quisque sagittis purus sit. At quis risus sed vulputate odio ut enim. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros. Rutrum quisque non tellus orci ac auctor. Iaculis eu non diam phasellus vestibulum lorem sed. Ut sem nulla pharetra diam sit amet nisl suscipit. Risus at ultrices mi tempus. Vitae tortor condimentum lacinia quis vel eros donec. Sed tempus urna et pharetra. Posuere sollicitudin aliquam ultrices sagittis orci. Congue quisque egestas diam in arcu. Hac habitasse platea dictumst vestibulum rhoncus est pellentesque elit. Pellentesque habitant morbi tristique senectus et netus et. Id interdum velit laoreet id. Fusce ut placerat orci nulla pellentesque dignissim. Pretium nibh ipsum consequat nisl vel pretium. Etiam erat velit scelerisque in dictum non consectetur a. Turpis in eu mi bibendum neque egestas congue quisque egestas. Pulvinar sapien et ligula ullamcorper malesuada. Ultricies tristique nulla aliquet enim tortor at. Suspendisse interdum consectetur libero id faucibus. Lorem sed risus ultricies tristique nulla aliquet. Tristique senectus et netus et malesuada fames. Eu augue ut lectus arcu bibendum at varius vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies. Aliquet eget sit amet tellus cras adipiscing. Massa placerat duis ultricies lacus sed turpis tincidunt id aliquet. Ornare massa eget egestas purus viverra accumsan in nisl. Justo laoreet sit amet cursus sit amet. In metus vulputate eu scelerisque felis imperdiet proin. At erat pellentesque adipiscing commodo elit at. Ipsum suspendisse ultrices gravida dictum fusce. Lectus sit amet est placerat in egestas erat. Aliquam ultrices sagittis orci a. Sagittis id consectetur purus ut faucibus pulvinar elementum. Ornare arcu odio ut sem nulla pharetra diam. Sit amet purus gravida quis blandit turpis cursus. Duis ultricies lacus sed turpis tincidunt. Malesuada fames ac turpis egestas sed tempus urna et. Viverra ipsum nunc aliquet bibendum enim facilisis. Et pharetra pharetra massa massa ultricies mi quis. Eget duis at tellus at urna condimentum mattis. Euismod in pellentesque massa placerat. Enim nunc faucibus a pellentesque sit amet porttitor. Dolor sed viverra ipsum nunc aliquet. Donec enim diam vulputate ut pharetra sit amet. Feugiat sed lectus vestibulum mattis ullamcorper velit sed. Erat pellentesque adipiscing commodo elit at imperdiet. Nisl purus in mollis nunc sed id semper risus. Tincidunt augue interdum velit euismod in pellentesque massa. Facilisis magna etiam tempor orci. Mauris in aliquam sem fringilla ut. Gravida dictum fusce ut placerat orci. Sed risus ultricies tristique nulla. Odio morbi quis commodo odio. Feugiat in ante metus dictum at tempor commodo ullamcorper. Porta non pulvinar neque laoreet suspendisse interdum. Etiam tempor orci eu lobortis elementum. Fusce ut placerat orci nulla pellentesque dignissim. Ornare lectus sit amet est placerat in egestas erat. Quis vel eros donec ac. Elementum pulvinar etiam non quam lacus. Sit amet tellus cras adipiscing enim eu turpis. Amet tellus cras adipiscing enim eu. Sed faucibus turpis in eu mi bibendum. Lectus proin nibh nisl condimentum id. Sollicitudin nibh sit amet commodo nulla. Sed tempus urna et pharetra pharetra massa massa. Magna eget est lorem ipsum. Elit ullamcorper dignissim cras tincidunt lobortis feugiat vivamus at. Fermentum dui faucibus in ornare quam viverra orci sagittis eu. Dignissim convallis aenean et tortor. Ut faucibus pulvinar elementum integer enim neque. Nibh cras pulvinar mattis nunc sed. Pellentesque sit amet porttitor eget dolor morbi. Mi eget mauris pharetra et ultrices neque ornare aenean euismod. Quis risus sed vulputate odio ut enim blandit volutpat. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. In vitae turpis massa sed elementum tempus egestas sed sed. Urna id volutpat lacus laoreet non. Egestas pretium aenean pharetra magna ac placerat. Amet commodo nulla facilisi nullam vehicula ipsum a arcu cursus. Donec et odio pellentesque diam volutpat commodo sed. Etiam non quam lacus suspendisse. Augue neque gravida in fermentum et sollicitudin ac orci. Eu feugiat pretium nibh ipsum. Nam at lectus urna duis convallis convallis tellus id. Egestas integer eget aliquet nibh. Viverra accumsan in nisl nisi scelerisque eu ultrices vitae auctor. Urna condimentum mattis pellentesque id nibh tortor id. In egestas erat imperdiet sed euismod. Ut sem viverra aliquet eget sit amet tellus. Feugiat pretium nibh ipsum consequat nisl vel pretium. Volutpat odio facilisis mauris sit amet. Mi sit amet mauris commodo quis imperdiet massa tincidunt. Neque volutpat ac tincidunt vitae semper quis lectus nulla at. Nec feugiat in fermentum posuere urna nec. Ut venenatis tellus in metus vulputate eu. Vestibulum rhoncus est pellentesque elit ullamcorper dignissim. Eu scelerisque felis imperdiet proin. Vitae et leo duis ut diam quam nulla. Ut venenatis tellus in metus vulputate eu scelerisque. Tincidunt dui ut ornare lectus sit amet. Adipiscing diam donec adipiscing tristique risus. Turpis nunc eget lorem dolor sed viverra ipsum nunc aliquet. Non sodales neque sodales ut. Massa placerat duis ultricies lacus sed turpis tincidunt. Viverra orci sagittis eu volutpat odio facilisis mauris sit amet. Adipiscing vitae proin sagittis nisl. Vitae aliquet nec ullamcorper sit. Potenti nullam ac tortor vitae purus. Ultricies lacus sed turpis tincidunt id. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Semper eget duis at tellus at urna condimentum mattis pellentesque. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin. Dictum fusce ut placerat orci nulla pellentesque dignissim. Amet luctus venenatis lectus magna fringilla urna. Quam quisque id diam vel quam elementum pulvinar. At tempor commodo ullamcorper a. Magna etiam tempor orci eu lobortis. Suspendisse ultrices gravida dictum fusce. Massa ultricies mi quis hendrerit dolor magna. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Aliquet enim tortor at auctor urna nunc id. Semper feugiat nibh sed pulvinar proin gravida. Porttitor rhoncus dolor purus non enim. Metus aliquam eleifend mi in nulla. Lectus arcu bibendum at varius vel pharetra. Sed vulputate odio ut enim blandit volutpat. Et ligula ullamcorper malesuada proin libero nunc consequat interdum varius. Donec et odio pellentesque diam volutpat commodo. Id ornare arcu odio ut sem nulla pharetra diam sit. Est ullamcorper eget nulla facilisi etiam dignissim diam quis enim. Sagittis vitae et leo duis ut diam quam nulla. Elementum nisi quis eleifend quam. Congue mauris rhoncus aenean vel elit. Adipiscing elit duis tristique sollicitudin nibh sit. Egestas egestas fringilla phasellus faucibus scelerisque. Morbi tincidunt augue interdum velit euismod. Massa sed elementum tempus egestas sed sed. Id leo in vitae turpis massa sed elementum tempus egestas. In pellentesque massa placerat duis ultricies lacus sed turpis. Vitae proin sagittis nisl rhoncus mattis rhoncus. Enim tortor at auctor urna nunc id. In fermentum posuere urna nec tincidunt praesent semper feugiat nibh. Aliquam ut porttitor leo a diam sollicitudin tempor id. Pellentesque elit eget gravida cum sociis natoque. Molestie at elementum eu facilisis sed odio morbi quis. Tristique senectus et netus et malesuada fames ac turpis. Proin libero nunc consequat interdum varius sit amet mattis. Pellentesque id nibh tortor id. Risus sed vulputate odio ut enim blandit. Laoreet suspendisse interdum consectetur libero id faucibus nisl tincidunt eget. Morbi tincidunt augue interdum velit euismod in pellentesque. Pharetra pharetra massa massa ultricies mi quis hendrerit. Nunc aliquet bibendum enim facilisis gravida neque. Feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Risus quis varius quam quisque id diam vel. Et ultrices neque ornare aenean. Aliquet sagittis id consectetur purus ut faucibus pulvinar elementum. Nibh ipsum consequat nisl vel. Mauris rhoncus aenean vel elit scelerisque mauris pellentesque pulvinar. Ornare quam viverra orci sagittis eu volutpat odio facilisis. Euismod nisi porta lorem mollis aliquam. Enim ut tellus elementum sagittis. Rhoncus mattis rhoncus urna neque. Malesuada fames ac turpis egestas. Cursus in hac habitasse platea dictumst quisque sagittis. Sit amet aliquam id diam maecenas ultricies mi eget mauris. Enim sit amet venenatis urna cursus eget nunc. Fermentum odio eu feugiat pretium nibh ipsum consequat. Eu scelerisque felis imperdiet proin. Nullam non nisi est sit amet facilisis magna etiam tempor. In mollis nunc sed id semper risus in hendrerit. Sollicitudin nibh sit amet commodo nulla facilisi nullam. Sit amet nisl purus in mollis nunc sed id. Nam libero justo laoreet sit amet cursus sit amet dictum. Condimentum id venenatis a condimentum vitae sapien pellentesque. Porta nibh venenatis cras sed felis. Lectus nulla at volutpat diam ut venenatis tellus in. Aliquam etiam erat velit scelerisque in dictum non consectetur a. Leo vel fringilla est ullamcorper eget. Sodales ut etiam sit amet nisl purus in mollis nunc. Euismod nisi porta lorem mollis aliquam. Ornare arcu odio ut sem nulla. Sed felis eget velit aliquet sagittis id consectetur. Pellentesque nec nam aliquam sem et tortor consequat id. Enim nec dui nunc mattis enim ut tellus elementum. Nullam non nisi est sit amet facilisis magna. Rutrum quisque non tellus orci ac auctor augue. Nunc vel risus commodo viverra maecenas accumsan lacus. Viverra vitae congue eu consequat. Sollicitudin nibh sit amet commodo nulla. Amet volutpat consequat mauris nunc congue nisi. Maecenas pharetra convallis posuere morbi leo urna molestie at. Mattis vulputate enim nulla aliquet porttitor lacus luctus accumsan tortor. Pulvinar sapien et ligula ullamcorper malesuada proin libero nunc consequat. Adipiscing diam donec adipiscing tristique risus. Elementum curabitur vitae nunc sed velit dignissim sodales ut. Eleifend donec pretium vulputate sapien nec. Commodo quis imperdiet massa tincidunt nunc pulvinar. Proin libero nunc consequat interdum varius sit amet mattis. Facilisis gravida neque convallis a cras semper auctor neque vitae. Quisque egestas diam in arcu cursus. Nunc eget lorem dolor sed viverra ipsum. Mauris sit amet massa vitae tortor condimentum lacinia quis vel. Aliquam sem et tortor consequat id porta nibh venenatis cras. Nunc sed id semper risus in. Enim sed faucibus turpis in eu mi bibendum neque. Molestie nunc non blandit massa enim. Enim praesent elementum facilisis leo vel fringilla est ullamcorper. Semper risus in hendrerit gravida rutrum quisque non tellus orci. Ac turpis egestas maecenas pharetra. In nulla posuere sollicitudin aliquam. Justo nec ultrices dui sapien eget mi proin sed libero. In ornare quam viverra orci sagittis eu. Proin nibh nisl condimentum id venenatis. Morbi enim nunc faucibus a pellentesque sit amet porttitor eget. Quis risus sed vulputate odio ut enim blandit. Risus feugiat in ante metus dictum at tempor commodo. Sodales neque sodales ut etiam. Nunc id cursus metus aliquam. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim enim. Augue ut lectus arcu bibendum at. Quis varius quam quisque id diam vel quam. Egestas congue quisque egestas diam in arcu. Condimentum mattis pellentesque id nibh tortor id aliquet lectus. Enim lobortis scelerisque fermentum dui faucibus in. In tellus integer feugiat scelerisque varius morbi enim nunc. Mattis molestie a iaculis at erat pellentesque. Elit scelerisque mauris pellentesque pulvinar pellentesque habitant morbi tristique. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Nisl rhoncus mattis rhoncus urna neque. Ac auctor augue mauris augue neque gravida in fermentum et. Sodales ut eu sem integer vitae justo eget. Sed egestas egestas fringilla phasellus. Viverra adipiscing at in tellus integer feugiat scelerisque varius. Purus gravida quis blandit turpis. Id porta nibh venenatis cras sed. Mattis vulputate enim nulla aliquet porttitor lacus. Augue eget arcu dictum varius duis at consectetur lorem donec. Nulla at volutpat diam ut venenatis tellus in metus. Aliquam etiam erat velit scelerisque in dictum non consectetur. Turpis cursus in hac habitasse platea dictumst. Consequat mauris nunc congue nisi vitae suscipit tellus. Volutpat maecenas volutpat blandit aliquam etiam. Massa massa ultricies mi quis hendrerit dolor magna eget est. Velit egestas dui id ornare arcu. Non consectetur a erat nam at. Orci sagittis eu volutpat odio facilisis mauris sit amet. Dui id ornare arcu odio. Sed arcu non odio euismod lacinia. Feugiat in ante metus dictum. Gravida arcu ac tortor dignissim convallis. Egestas sed tempus urna et pharetra pharetra massa massa. Nulla facilisi nullam vehicula ipsum a arcu. Ipsum a arcu cursus vitae congue mauris. Porttitor rhoncus dolor purus non. Magna sit amet purus gravida quis blandit. Sapien eget mi proin sed libero enim sed faucibus turpis. Nisl nunc mi ipsum faucibus vitae aliquet nec ullamcorper sit. Pellentesque dignissim enim sit amet venenatis urna cursus eget. Pharetra massa massa ultricies mi quis hendrerit. Sapien nec sagittis aliquam malesuada bibendum. Nunc scelerisque viverra mauris in aliquam sem fringilla ut. Dolor magna eget est lorem ipsum dolor. Amet commodo nulla facilisi nullam. Pellentesque elit ullamcorper dignissim cras. Id porta nibh venenatis cras sed felis eget. Nam at lectus urna duis. Laoreet non curabitur gravida arcu ac tortor dignissim convallis. Nunc lobortis mattis aliquam faucibus purus in massa tempor. Sit amet luctus venenatis lectus magna fringilla. Duis ultricies lacus sed turpis tincidunt id. Sed velit dignissim sodales ut eu. Ut tortor pretium viverra suspendisse potenti nullam. Iaculis at erat pellentesque adipiscing. Ipsum nunc aliquet bibendum enim facilisis gravida neque. Nulla aliquet enim tortor at auctor urna nunc id cursus. Amet cursus sit amet dictum sit amet justo donec enim. Enim nunc faucibus a pellentesque sit amet porttitor eget dolor. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros in. Nulla facilisi etiam dignissim diam quis enim. Ut enim blandit volutpat maecenas volutpat blandit aliquam etiam erat. Imperdiet proin fermentum leo vel orci porta non pulvinar neque. Vel fringilla est ullamcorper eget nulla. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Ipsum nunc aliquet bibendum enim facilisis gravida neque convallis a. Arcu cursus vitae congue mauris rhoncus aenean vel elit. Augue eget arcu dictum varius duis. Tristique et egestas quis ipsum. Quis varius quam quisque id. Varius sit amet mattis vulputate. Mattis molestie a iaculis at erat pellentesque. Libero justo laoreet sit amet cursus. Aliquam id diam maecenas ultricies mi eget mauris pharetra. Ut eu sem integer vitae justo eget. Fames ac turpis egestas sed. Suspendisse in est ante in nibh mauris cursus mattis. Faucibus pulvinar elementum integer enim neque volutpat ac tincidunt vitae. Neque vitae tempus quam pellentesque nec nam aliquam. Lobortis elementum nibh tellus molestie nunc non. Lacus vel facilisis volutpat est velit egestas dui. Justo laoreet sit amet cursus sit amet dictum sit amet. Adipiscing enim eu turpis egestas pretium aenean pharetra magna. Cursus metus aliquam eleifend mi in nulla posuere. Nibh mauris cursus mattis molestie a. Dignissim diam quis enim lobortis scelerisque fermentum. A scelerisque purus semper eget duis at tellus. Lacus sed turpis tincidunt id aliquet risus feugiat in. Non tellus orci ac auctor. Ultrices in iaculis nunc sed augue lacus. Tincidunt tortor aliquam nulla facilisi cras. Nulla facilisi nullam vehicula ipsum a arcu cursus vitae congue. Eget magna fermentum iaculis eu non diam phasellus. Pharetra massa massa ultricies mi quis. Eget mauris pharetra et ultrices neque ornare. Aliquam faucibus purus in massa. Facilisi morbi tempus iaculis urna id volutpat lacus. Accumsan lacus vel facilisis volutpat. Curabitur gravida arcu ac tortor. Quam lacus suspendisse faucibus interdum. Elementum nibh tellus molestie nunc non blandit massa enim. Libero id faucibus nisl tincidunt. Bibendum ut tristique et egestas. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Augue interdum velit euismod in pellentesque. Adipiscing diam donec adipiscing tristique risus nec feugiat. Fringilla ut morbi tincidunt augue interdum velit. Vitae et leo duis ut diam quam nulla porttitor massa. Egestas integer eget aliquet nibh praesent tristique. Posuere sollicitudin aliquam ultrices sagittis orci a. Nisi est sit amet facilisis. Risus quis varius quam quisque id diam. Faucibus turpis in eu mi. Et molestie ac feugiat sed lectus vestibulum. Porttitor lacus luctus accumsan tortor posuere ac. Platea dictumst vestibulum rhoncus est pellentesque. Tortor pretium viverra suspendisse potenti nullam ac tortor. Enim praesent elementum facilisis leo vel fringilla est. Proin libero nunc consequat interdum varius sit amet mattis vulputate. Turpis egestas pretium aenean pharetra magna ac placerat vestibulum lectus. Nulla pharetra diam sit amet nisl suscipit. Mauris nunc congue nisi vitae suscipit tellus mauris a diam. Faucibus in ornare quam viverra orci sagittis eu volutpat. Volutpat consequat mauris nunc congue nisi vitae. Dui nunc mattis enim ut tellus. Adipiscing elit ut aliquam purus sit amet luctus. Tempus egestas sed sed risus. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Massa ultricies mi quis hendrerit dolor magna eget. Pulvinar mattis nunc sed blandit libero volutpat sed cras ornare. Ut eu sem integer vitae justo eget magna fermentum. Ornare quam viverra orci sagittis. Eget dolor morbi non arcu risus quis varius quam. Tincidunt praesent semper feugiat nibh sed pulvinar. Sit amet justo donec enim diam vulputate. Dui faucibus in ornare quam viverra. Tincidunt tortor aliquam nulla facilisi cras fermentum odio eu. Turpis egestas sed tempus urna et. Pretium quam vulputate dignissim suspendisse in est ante in. Morbi quis commodo odio aenean sed adipiscing diam donec. Nunc mattis enim ut tellus elementum sagittis vitae et. Diam vel quam elementum pulvinar etiam non quam. Convallis posuere morbi leo urna molestie at elementum eu. Adipiscing at in tellus integer feugiat scelerisque varius morbi. Quis varius quam quisque id diam vel quam elementum. Dui accumsan sit amet nulla. Adipiscing elit duis tristique sollicitudin nibh sit amet commodo. Viverra ipsum nunc aliquet bibendum enim facilisis. Porta lorem mollis aliquam ut. Velit ut tortor pretium viverra suspendisse potenti. Quis viverra nibh cras pulvinar mattis nunc sed blandit. Pharetra magna ac placerat vestibulum. Mauris ultrices eros in cursus turpis massa. Lacus vestibulum sed arcu non odio euismod lacinia at. Dapibus ultrices in iaculis nunc sed. Cras adipiscing enim eu turpis egestas. Eget arcu dictum varius duis at consectetur. Consequat id porta nibh venenatis cras sed felis eget velit. Integer enim neque volutpat ac tincidunt vitae. Feugiat pretium nibh ipsum consequat nisl vel pretium lectus. Ut morbi tincidunt augue interdum velit euismod. Sed cras ornare arcu dui vivamus arcu felis bibendum ut. Eget felis eget nunc lobortis mattis aliquam faucibus purus in. Luctus venenatis lectus magna fringilla urna porttitor rhoncus dolor. Nisl nunc mi ipsum faucibus vitae. Proin fermentum leo vel orci porta. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. Et leo duis ut diam quam. Eros in cursus turpis massa tincidunt. Volutpat est velit egestas dui id. Commodo odio aenean sed adipiscing diam. Quis blandit turpis cursus in hac habitasse platea dictumst quisque. Magna fringilla urna porttitor rhoncus dolor. Amet consectetur adipiscing elit ut aliquam purus sit amet. Vitae justo eget magna fermentum iaculis eu non diam. Hendrerit dolor magna eget est. Ac placerat vestibulum lectus mauris ultrices eros in cursus turpis. Egestas diam in arcu cursus. At varius vel pharetra vel turpis nunc. Lacus vel facilisis volutpat est velit. Ut ornare lectus sit amet est placerat in egestas. Quam adipiscing vitae proin sagittis nisl rhoncus. Dolor purus non enim praesent. Urna condimentum mattis pellentesque id. Magnis dis parturient montes nascetur ridiculus. Feugiat nisl pretium fusce id. Sed cras ornare arcu dui vivamus. Vitae turpis massa sed elementum tempus egestas sed sed. Ac feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Ac ut consequat semper viverra nam libero. Consectetur lorem donec massa sapien faucibus. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Eu turpis egestas pretium aenean pharetra. Nisl rhoncus mattis rhoncus urna neque viverra justo nec ultrices. Pellentesque sit amet porttitor eget dolor morbi non arcu. Vitae justo eget magna fermentum iaculis. Quis auctor elit sed vulputate mi sit. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Semper auctor neque vitae tempus quam pellentesque nec nam. Rhoncus dolor purus non enim. Sed turpis tincidunt id aliquet risus feugiat. Sit amet justo donec enim diam vulputate ut pharetra sit. Risus pretium quam vulputate dignissim suspendisse in est ante in. Massa sapien faucibus et molestie ac feugiat. Id aliquet risus feugiat in ante metus. Risus ultricies tristique nulla aliquet enim tortor at auctor urna. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper morbi. Lacus sed turpis tincidunt id aliquet risus feugiat in. Risus ultricies tristique nulla aliquet enim tortor. In ornare quam viverra orci sagittis eu volutpat. Netus et malesuada fames ac turpis egestas sed tempus urna. Fames ac turpis egestas maecenas pharetra convallis posuere morbi. Etiam erat velit scelerisque in dictum non. Cursus turpis massa tincidunt dui ut ornare lectus. Tristique sollicitudin nibh sit amet commodo nulla facilisi. Pellentesque pulvinar pellentesque habitant morbi tristique senectus et. Aliquet eget sit amet tellus cras. Nullam ac tortor vitae purus faucibus ornare. Lacus viverra vitae congue eu consequat. Vulputate ut pharetra sit amet. Est ante in nibh mauris cursus mattis molestie a. Ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Et tortor at risus viverra. Sed libero enim sed faucibus turpis in eu. Id cursus metus aliquam eleifend mi in nulla posuere sollicitudin. Risus viverra adipiscing at in. Imperdiet massa tincidunt nunc pulvinar sapien et. Nec feugiat in fermentum posuere urna nec tincidunt. Ultricies mi eget mauris pharetra et. Morbi tristique senectus et netus et malesuada fames ac. At quis risus sed vulputate. Interdum velit laoreet id donec. Sapien pellentesque habitant morbi tristique. Pharetra vel turpis nunc eget lorem dolor sed viverra. In massa tempor nec feugiat nisl. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Mauris augue neque gravida in. Faucibus vitae aliquet nec ullamcorper sit amet risus. Id velit ut tortor pretium viverra suspendisse potenti. Leo integer malesuada nunc vel risus commodo viverra maecenas. Risus quis varius quam quisque id. Aliquam malesuada bibendum arcu vitae elementum curabitur vitae. Vestibulum lectus mauris ultrices eros in cursus turpis. Fermentum posuere urna nec tincidunt. Magna etiam tempor orci eu lobortis elementum nibh tellus molestie. Id ornare arcu odio ut. Facilisi nullam vehicula ipsum a arcu cursus vitae congue. Nulla pellentesque dignissim enim sit amet venenatis urna cursus eget. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Quis ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Sed cras ornare arcu dui vivamus arcu felis. Egestas diam in arcu cursus euismod quis. Tincidunt dui ut ornare lectus. Morbi tristique senectus et netus et. Ornare arcu dui vivamus arcu felis bibendum ut tristique. Habitant morbi tristique senectus et netus et malesuada fames ac. Ut tristique et egestas quis. Mollis aliquam ut porttitor leo. Venenatis tellus in metus vulputate eu scelerisque felis imperdiet proin. Sagittis eu volutpat odio facilisis mauris sit amet massa. Eu facilisis sed odio morbi. Nunc consequat interdum varius sit amet mattis. Velit dignissim sodales ut eu. Pellentesque eu tincidunt tortor aliquam. Porta lorem mollis aliquam ut porttitor. Rhoncus urna neque viverra justo nec ultrices. Viverra suspendisse potenti nullam ac tortor vitae purus. Fermentum posuere urna nec tincidunt praesent semper feugiat nibh sed. Purus sit amet luctus venenatis lectus magna fringilla urna porttitor. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Nisl nisi scelerisque eu ultrices vitae auctor. In vitae turpis massa sed elementum tempus egestas. Cursus sit amet dictum sit amet justo donec enim. Vitae congue eu consequat ac felis donec et. Augue interdum velit euismod in pellentesque massa placerat. Enim ut sem viverra aliquet eget sit amet. Velit scelerisque in dictum non consectetur a erat. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nunc faucibus a pellentesque sit amet porttitor eget. Tellus integer feugiat scelerisque varius morbi. Lorem sed risus ultricies tristique nulla aliquet enim tortor at. Eget nulla facilisi etiam dignissim diam quis enim lobortis scelerisque. Adipiscing elit duis tristique sollicitudin. Adipiscing elit pellentesque habitant morbi tristique. Ac tincidunt vitae semper quis lectus nulla at. Maecenas sed enim ut sem viverra. Erat pellentesque adipiscing commodo elit at imperdiet. Dolor morbi non arcu risus quis varius quam quisque. Fringilla urna porttitor rhoncus dolor purus non enim praesent. Tellus integer feugiat scelerisque varius morbi enim nunc faucibus a. Felis eget nunc lobortis mattis aliquam faucibus purus in. Fringilla phasellus faucibus scelerisque eleifend. Pulvinar etiam non quam lacus suspendisse faucibus interdum posuere. Risus ultricies tristique nulla aliquet. Lectus sit amet est placerat. Ac ut consequat semper viverra nam libero justo. Dapibus ultrices in iaculis nunc sed augue. Mattis ullamcorper velit sed ullamcorper. Eget nullam non nisi est. Vitae elementum curabitur vitae nunc sed velit. Sit amet commodo nulla facilisi nullam vehicula ipsum a arcu. Tempor nec feugiat nisl pretium fusce id velit ut. Nulla pellentesque dignissim enim sit amet venenatis. Sed tempus urna et pharetra pharetra. Congue quisque egestas diam in. Convallis posuere morbi leo urna. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Sagittis nisl rhoncus mattis rhoncus urna neque viverra justo. Scelerisque felis imperdiet proin fermentum leo vel. Ut placerat orci nulla pellentesque dignissim enim sit amet. In cursus turpis massa tincidunt dui. Rutrum quisque non tellus orci ac auctor augue mauris augue. Cursus vitae congue mauris rhoncus aenean vel elit scelerisque mauris. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Habitant morbi tristique senectus et netus et. Ridiculus mus mauris vitae ultricies leo. Vitae semper quis lectus nulla at volutpat diam. Purus faucibus ornare suspendisse sed nisi. Enim lobortis scelerisque fermentum dui faucibus in ornare quam. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Varius duis at consectetur lorem donec. Pulvinar pellentesque habitant morbi tristique senectus et netus et. A iaculis at erat pellentesque adipiscing commodo elit at imperdiet. Mi ipsum faucibus vitae aliquet nec. Libero volutpat sed cras ornare arcu dui vivamus arcu. Natoque penatibus et magnis dis parturient montes nascetur ridiculus. Maecenas volutpat blandit aliquam etiam erat velit scelerisque. Cras adipiscing enim eu turpis. Nec tincidunt praesent semper feugiat nibh sed pulvinar. Justo laoreet sit amet cursus sit amet dictum sit. Velit scelerisque in dictum non consectetur a erat nam. Turpis tincidunt id aliquet risus feugiat in ante. Aliquet risus feugiat in ante metus dictum. Hac habitasse platea dictumst quisque sagittis purus sit. Et pharetra pharetra massa massa ultricies. Sit amet nisl suscipit adipiscing bibendum est ultricies integer. Venenatis urna cursus eget nunc scelerisque viverra mauris in. Integer quis auctor elit sed. In est ante in nibh mauris cursus mattis molestie. Scelerisque in dictum non consectetur a erat nam at. Lectus sit amet est placerat in. Sit amet cursus sit amet. Nibh nisl condimentum id venenatis a condimentum. Purus ut faucibus pulvinar elementum integer enim. Pharetra sit amet aliquam id diam maecenas. Id cursus metus aliquam eleifend mi in nulla posuere. Lobortis mattis aliquam faucibus purus in massa tempor nec. Urna neque viverra justo nec ultrices dui sapien eget. Enim ut sem viverra aliquet eget sit amet. In eu mi bibendum neque egestas congue quisque egestas. Enim neque volutpat ac tincidunt. Orci ac auctor augue mauris augue neque gravida in fermentum. Velit aliquet sagittis id consectetur. Enim ut sem viverra aliquet eget sit amet tellus. Semper auctor neque vitae tempus quam pellentesque nec. Non blandit massa enim nec dui nunc. Morbi blandit cursus risus at ultrices mi tempus imperdiet nulla. Arcu non odio euismod lacinia at quis risus. Dictum varius duis at consectetur lorem donec massa. Blandit massa enim nec dui. Nibh ipsum consequat nisl vel. Turpis in eu mi bibendum neque. Ut tristique et egestas quis. Ac odio tempor orci dapibus. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim. Integer feugiat scelerisque varius morbi enim. Libero volutpat sed cras ornare arcu dui. Odio aenean sed adipiscing diam. Et egestas quis ipsum suspendisse ultrices. Aliquet lectus proin nibh nisl condimentum. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh sit. Blandit massa enim nec dui. Tellus molestie nunc non blandit massa enim nec. Tortor vitae purus faucibus ornare suspendisse sed nisi. Nascetur ridiculus mus mauris vitae ultricies leo. Elementum facilisis leo vel fringilla est ullamcorper eget nulla. Diam maecenas ultricies mi eget. Duis tristique sollicitudin nibh sit amet commodo nulla. Tempus iaculis urna id volutpat lacus laoreet non curabitur gravida. Dictumst quisque sagittis purus sit amet. Viverra mauris in aliquam sem. Quis risus sed vulputate odio ut enim blandit volutpat maecenas. Condimentum mattis pellentesque id nibh tortor id. Non sodales neque sodales ut etiam sit amet. Ipsum consequat nisl vel pretium. Cursus in hac habitasse platea dictumst quisque sagittis purus sit. Fringilla est ullamcorper eget nulla facilisi etiam. Tellus elementum sagittis vitae et leo duis ut diam quam. Nisl vel pretium lectus quam id leo in." = "long" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4224367 tomlkit-0.12.4/tests/toml-spec-tests/values/qa-key-string-40kb.yaml0000644000000000000000000011612014567257576022061 0ustar00? 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor. Amet consectetur adipiscing elit ut. Nulla facilisi etiam dignissim diam quis enim lobortis. Curabitur vitae nunc sed velit dignissim sodales ut eu. Fames ac turpis egestas sed tempus urna et. Facilisi cras fermentum odio eu feugiat pretium. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Est lorem ipsum dolor sit amet consectetur adipiscing elit. Vel quam elementum pulvinar etiam non quam lacus. Pharetra et ultrices neque ornare aenean euismod. Nisl nisi scelerisque eu ultrices. Eget dolor morbi non arcu risus. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Faucibus nisl tincidunt eget nullam. Nisl pretium fusce id velit ut tortor pretium viverra suspendisse. Mauris ultrices eros in cursus. Donec ac odio tempor orci dapibus ultrices in iaculis. Tellus cras adipiscing enim eu turpis egestas pretium aenean pharetra. Eros in cursus turpis massa. Nascetur ridiculus mus mauris vitae ultricies leo integer malesuada nunc. Velit sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Aenean euismod elementum nisi quis eleifend quam. Magnis dis parturient montes nascetur ridiculus mus. Eu tincidunt tortor aliquam nulla facilisi cras. Tristique senectus et netus et malesuada fames. Urna nec tincidunt praesent semper feugiat nibh sed pulvinar. Vitae ultricies leo integer malesuada nunc vel risus commodo viverra. Ac turpis egestas sed tempus urna et. Amet mauris commodo quis imperdiet massa tincidunt. Urna nunc id cursus metus aliquam eleifend mi. In nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Neque aliquam vestibulum morbi blandit cursus. Pulvinar mattis nunc sed blandit libero volutpat sed. Sed egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Blandit cursus risus at ultrices mi tempus. Turpis massa sed elementum tempus egestas sed sed. Dictum varius duis at consectetur lorem. Commodo ullamcorper a lacus vestibulum sed arcu non. Dolor magna eget est lorem. Tincidunt arcu non sodales neque sodales ut etiam sit amet. Sit amet risus nullam eget felis eget nunc lobortis. Risus in hendrerit gravida rutrum quisque non tellus orci. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Morbi tristique senectus et netus et malesuada. In aliquam sem fringilla ut morbi tincidunt. Ornare aenean euismod elementum nisi quis eleifend quam. Sed id semper risus in hendrerit gravida rutrum quisque. Lorem ipsum dolor sit amet consectetur adipiscing elit. A condimentum vitae sapien pellentesque habitant morbi tristique senectus et. Faucibus purus in massa tempor nec feugiat nisl. Vehicula ipsum a arcu cursus vitae congue. Facilisi cras fermentum odio eu feugiat pretium nibh. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Ultrices dui sapien eget mi proin sed libero enim. Nisi est sit amet facilisis magna etiam tempor. Posuere ac ut consequat semper viverra nam. Dis parturient montes nascetur ridiculus mus mauris vitae. Nec sagittis aliquam malesuada bibendum. Mattis pellentesque id nibh tortor id aliquet lectus. Vitae congue eu consequat ac felis donec et. Cras sed felis eget velit aliquet sagittis id consectetur purus. Pellentesque elit ullamcorper dignissim cras tincidunt. Pellentesque dignissim enim sit amet venenatis urna. A cras semper auctor neque vitae tempus. Amet massa vitae tortor condimentum lacinia quis vel eros donec. Tempor commodo ullamcorper a lacus. Nibh tellus molestie nunc non blandit massa enim nec dui. Viverra orci sagittis eu volutpat odio facilisis mauris sit. Sed augue lacus viverra vitae. Vulputate eu scelerisque felis imperdiet proin fermentum leo vel orci. Tellus rutrum tellus pellentesque eu tincidunt tortor. Cras semper auctor neque vitae tempus quam pellentesque nec. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Tristique magna sit amet purus gravida quis blandit turpis. Viverra ipsum nunc aliquet bibendum. Arcu bibendum at varius vel. Amet mattis vulputate enim nulla. Vulputate enim nulla aliquet porttitor. Volutpat blandit aliquam etiam erat velit scelerisque in dictum. Morbi tristique senectus et netus et malesuada fames ac. Faucibus et molestie ac feugiat sed. Tellus elementum sagittis vitae et leo duis. Id aliquet lectus proin nibh. Ornare arcu dui vivamus arcu. Morbi tincidunt augue interdum velit euismod in pellentesque massa placerat. Quis eleifend quam adipiscing vitae. Tristique senectus et netus et malesuada fames ac turpis. Pharetra convallis posuere morbi leo. Ornare arcu odio ut sem nulla pharetra diam sit. Morbi tristique senectus et netus et. Dictum non consectetur a erat nam at lectus urna. Varius vel pharetra vel turpis. Mi ipsum faucibus vitae aliquet. Tellus in metus vulputate eu scelerisque felis imperdiet proin. In est ante in nibh mauris cursus mattis. Massa ultricies mi quis hendrerit dolor magna eget. Fermentum leo vel orci porta. Elit ut aliquam purus sit amet luctus venenatis lectus. Eget aliquet nibh praesent tristique magna sit amet. Arcu non odio euismod lacinia at quis. Montes nascetur ridiculus mus mauris vitae ultricies. Tempus quam pellentesque nec nam aliquam sem et tortor. Morbi leo urna molestie at elementum eu facilisis sed. In fermentum posuere urna nec tincidunt. Neque aliquam vestibulum morbi blandit cursus risus. Vulputate dignissim suspendisse in est ante in nibh mauris cursus. Lorem ipsum dolor sit amet consectetur adipiscing. Orci eu lobortis elementum nibh tellus molestie nunc non. Enim diam vulputate ut pharetra sit amet aliquam. Convallis convallis tellus id interdum velit laoreet id donec ultrices. Sit amet mattis vulputate enim nulla aliquet porttitor lacus luctus. A lacus vestibulum sed arcu non odio. Ut tortor pretium viverra suspendisse potenti nullam ac tortor. Diam vel quam elementum pulvinar etiam non quam. Viverra justo nec ultrices dui. Eu volutpat odio facilisis mauris sit amet massa. Sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Ac felis donec et odio pellentesque. Nisl vel pretium lectus quam id leo in. Ultricies lacus sed turpis tincidunt id. At urna condimentum mattis pellentesque id nibh tortor id. Sem nulla pharetra diam sit amet nisl suscipit. Neque viverra justo nec ultrices. Arcu cursus euismod quis viverra nibh cras pulvinar. Dolor sit amet consectetur adipiscing elit ut aliquam purus. Id diam vel quam elementum pulvinar etiam non. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Id aliquet lectus proin nibh nisl condimentum id venenatis. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh. Sed faucibus turpis in eu mi bibendum neque egestas congue. Consectetur libero id faucibus nisl tincidunt eget nullam. At volutpat diam ut venenatis tellus in metus vulputate eu. Condimentum lacinia quis vel eros donec ac odio. Sit amet porttitor eget dolor morbi non arcu risus quis. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Metus dictum at tempor commodo ullamcorper. At ultrices mi tempus imperdiet nulla. Est ullamcorper eget nulla facilisi etiam dignissim diam quis. Lobortis elementum nibh tellus molestie nunc non. Placerat in egestas erat imperdiet sed. Placerat in egestas erat imperdiet sed euismod. Lobortis feugiat vivamus at augue eget arcu dictum varius. Ut sem nulla pharetra diam sit amet. Et tortor at risus viverra adipiscing at in. Tempor nec feugiat nisl pretium. Cursus euismod quis viverra nibh. Eget mi proin sed libero enim sed. Aliquam id diam maecenas ultricies. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Gravida quis blandit turpis cursus in hac habitasse platea dictumst. Sed tempus urna et pharetra pharetra massa massa. Dolor purus non enim praesent elementum facilisis leo vel. Pharetra vel turpis nunc eget. Quam pellentesque nec nam aliquam sem et tortor consequat id. Orci eu lobortis elementum nibh tellus molestie nunc non. Porttitor leo a diam sollicitudin tempor id. Tincidunt ornare massa eget egestas purus viverra accumsan in nisl. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor sit. Elit ut aliquam purus sit amet luctus venenatis lectus. Velit egestas dui id ornare arcu odio ut sem nulla. Lacus viverra vitae congue eu consequat ac felis donec. Nulla aliquet porttitor lacus luctus accumsan tortor posuere ac ut. Lorem dolor sed viverra ipsum. Blandit libero volutpat sed cras ornare arcu. Egestas erat imperdiet sed euismod nisi porta lorem mollis. Viverra maecenas accumsan lacus vel. Enim neque volutpat ac tincidunt. Porttitor massa id neque aliquam vestibulum morbi blandit cursus risus. Malesuada bibendum arcu vitae elementum curabitur vitae nunc. Et malesuada fames ac turpis egestas integer. Egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Est placerat in egestas erat imperdiet sed. Non arcu risus quis varius quam quisque. Lorem mollis aliquam ut porttitor leo a. Viverra tellus in hac habitasse platea dictumst vestibulum rhoncus. Fermentum iaculis eu non diam. Erat imperdiet sed euismod nisi porta lorem mollis aliquam. Varius vel pharetra vel turpis nunc eget lorem dolor. Rhoncus mattis rhoncus urna neque viverra. Hac habitasse platea dictumst quisque sagittis purus sit. At quis risus sed vulputate odio ut enim. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros. Rutrum quisque non tellus orci ac auctor. Iaculis eu non diam phasellus vestibulum lorem sed. Ut sem nulla pharetra diam sit amet nisl suscipit. Risus at ultrices mi tempus. Vitae tortor condimentum lacinia quis vel eros donec. Sed tempus urna et pharetra. Posuere sollicitudin aliquam ultrices sagittis orci. Congue quisque egestas diam in arcu. Hac habitasse platea dictumst vestibulum rhoncus est pellentesque elit. Pellentesque habitant morbi tristique senectus et netus et. Id interdum velit laoreet id. Fusce ut placerat orci nulla pellentesque dignissim. Pretium nibh ipsum consequat nisl vel pretium. Etiam erat velit scelerisque in dictum non consectetur a. Turpis in eu mi bibendum neque egestas congue quisque egestas. Pulvinar sapien et ligula ullamcorper malesuada. Ultricies tristique nulla aliquet enim tortor at. Suspendisse interdum consectetur libero id faucibus. Lorem sed risus ultricies tristique nulla aliquet. Tristique senectus et netus et malesuada fames. Eu augue ut lectus arcu bibendum at varius vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies. Aliquet eget sit amet tellus cras adipiscing. Massa placerat duis ultricies lacus sed turpis tincidunt id aliquet. Ornare massa eget egestas purus viverra accumsan in nisl. Justo laoreet sit amet cursus sit amet. In metus vulputate eu scelerisque felis imperdiet proin. At erat pellentesque adipiscing commodo elit at. Ipsum suspendisse ultrices gravida dictum fusce. Lectus sit amet est placerat in egestas erat. Aliquam ultrices sagittis orci a. Sagittis id consectetur purus ut faucibus pulvinar elementum. Ornare arcu odio ut sem nulla pharetra diam. Sit amet purus gravida quis blandit turpis cursus. Duis ultricies lacus sed turpis tincidunt. Malesuada fames ac turpis egestas sed tempus urna et. Viverra ipsum nunc aliquet bibendum enim facilisis. Et pharetra pharetra massa massa ultricies mi quis. Eget duis at tellus at urna condimentum mattis. Euismod in pellentesque massa placerat. Enim nunc faucibus a pellentesque sit amet porttitor. Dolor sed viverra ipsum nunc aliquet. Donec enim diam vulputate ut pharetra sit amet. Feugiat sed lectus vestibulum mattis ullamcorper velit sed. Erat pellentesque adipiscing commodo elit at imperdiet. Nisl purus in mollis nunc sed id semper risus. Tincidunt augue interdum velit euismod in pellentesque massa. Facilisis magna etiam tempor orci. Mauris in aliquam sem fringilla ut. Gravida dictum fusce ut placerat orci. Sed risus ultricies tristique nulla. Odio morbi quis commodo odio. Feugiat in ante metus dictum at tempor commodo ullamcorper. Porta non pulvinar neque laoreet suspendisse interdum. Etiam tempor orci eu lobortis elementum. Fusce ut placerat orci nulla pellentesque dignissim. Ornare lectus sit amet est placerat in egestas erat. Quis vel eros donec ac. Elementum pulvinar etiam non quam lacus. Sit amet tellus cras adipiscing enim eu turpis. Amet tellus cras adipiscing enim eu. Sed faucibus turpis in eu mi bibendum. Lectus proin nibh nisl condimentum id. Sollicitudin nibh sit amet commodo nulla. Sed tempus urna et pharetra pharetra massa massa. Magna eget est lorem ipsum. Elit ullamcorper dignissim cras tincidunt lobortis feugiat vivamus at. Fermentum dui faucibus in ornare quam viverra orci sagittis eu. Dignissim convallis aenean et tortor. Ut faucibus pulvinar elementum integer enim neque. Nibh cras pulvinar mattis nunc sed. Pellentesque sit amet porttitor eget dolor morbi. Mi eget mauris pharetra et ultrices neque ornare aenean euismod. Quis risus sed vulputate odio ut enim blandit volutpat. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. In vitae turpis massa sed elementum tempus egestas sed sed. Urna id volutpat lacus laoreet non. Egestas pretium aenean pharetra magna ac placerat. Amet commodo nulla facilisi nullam vehicula ipsum a arcu cursus. Donec et odio pellentesque diam volutpat commodo sed. Etiam non quam lacus suspendisse. Augue neque gravida in fermentum et sollicitudin ac orci. Eu feugiat pretium nibh ipsum. Nam at lectus urna duis convallis convallis tellus id. Egestas integer eget aliquet nibh. Viverra accumsan in nisl nisi scelerisque eu ultrices vitae auctor. Urna condimentum mattis pellentesque id nibh tortor id. In egestas erat imperdiet sed euismod. Ut sem viverra aliquet eget sit amet tellus. Feugiat pretium nibh ipsum consequat nisl vel pretium. Volutpat odio facilisis mauris sit amet. Mi sit amet mauris commodo quis imperdiet massa tincidunt. Neque volutpat ac tincidunt vitae semper quis lectus nulla at. Nec feugiat in fermentum posuere urna nec. Ut venenatis tellus in metus vulputate eu. Vestibulum rhoncus est pellentesque elit ullamcorper dignissim. Eu scelerisque felis imperdiet proin. Vitae et leo duis ut diam quam nulla. Ut venenatis tellus in metus vulputate eu scelerisque. Tincidunt dui ut ornare lectus sit amet. Adipiscing diam donec adipiscing tristique risus. Turpis nunc eget lorem dolor sed viverra ipsum nunc aliquet. Non sodales neque sodales ut. Massa placerat duis ultricies lacus sed turpis tincidunt. Viverra orci sagittis eu volutpat odio facilisis mauris sit amet. Adipiscing vitae proin sagittis nisl. Vitae aliquet nec ullamcorper sit. Potenti nullam ac tortor vitae purus. Ultricies lacus sed turpis tincidunt id. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Semper eget duis at tellus at urna condimentum mattis pellentesque. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin. Dictum fusce ut placerat orci nulla pellentesque dignissim. Amet luctus venenatis lectus magna fringilla urna. Quam quisque id diam vel quam elementum pulvinar. At tempor commodo ullamcorper a. Magna etiam tempor orci eu lobortis. Suspendisse ultrices gravida dictum fusce. Massa ultricies mi quis hendrerit dolor magna. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Aliquet enim tortor at auctor urna nunc id. Semper feugiat nibh sed pulvinar proin gravida. Porttitor rhoncus dolor purus non enim. Metus aliquam eleifend mi in nulla. Lectus arcu bibendum at varius vel pharetra. Sed vulputate odio ut enim blandit volutpat. Et ligula ullamcorper malesuada proin libero nunc consequat interdum varius. Donec et odio pellentesque diam volutpat commodo. Id ornare arcu odio ut sem nulla pharetra diam sit. Est ullamcorper eget nulla facilisi etiam dignissim diam quis enim. Sagittis vitae et leo duis ut diam quam nulla. Elementum nisi quis eleifend quam. Congue mauris rhoncus aenean vel elit. Adipiscing elit duis tristique sollicitudin nibh sit. Egestas egestas fringilla phasellus faucibus scelerisque. Morbi tincidunt augue interdum velit euismod. Massa sed elementum tempus egestas sed sed. Id leo in vitae turpis massa sed elementum tempus egestas. In pellentesque massa placerat duis ultricies lacus sed turpis. Vitae proin sagittis nisl rhoncus mattis rhoncus. Enim tortor at auctor urna nunc id. In fermentum posuere urna nec tincidunt praesent semper feugiat nibh. Aliquam ut porttitor leo a diam sollicitudin tempor id. Pellentesque elit eget gravida cum sociis natoque. Molestie at elementum eu facilisis sed odio morbi quis. Tristique senectus et netus et malesuada fames ac turpis. Proin libero nunc consequat interdum varius sit amet mattis. Pellentesque id nibh tortor id. Risus sed vulputate odio ut enim blandit. Laoreet suspendisse interdum consectetur libero id faucibus nisl tincidunt eget. Morbi tincidunt augue interdum velit euismod in pellentesque. Pharetra pharetra massa massa ultricies mi quis hendrerit. Nunc aliquet bibendum enim facilisis gravida neque. Feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Risus quis varius quam quisque id diam vel. Et ultrices neque ornare aenean. Aliquet sagittis id consectetur purus ut faucibus pulvinar elementum. Nibh ipsum consequat nisl vel. Mauris rhoncus aenean vel elit scelerisque mauris pellentesque pulvinar. Ornare quam viverra orci sagittis eu volutpat odio facilisis. Euismod nisi porta lorem mollis aliquam. Enim ut tellus elementum sagittis. Rhoncus mattis rhoncus urna neque. Malesuada fames ac turpis egestas. Cursus in hac habitasse platea dictumst quisque sagittis. Sit amet aliquam id diam maecenas ultricies mi eget mauris. Enim sit amet venenatis urna cursus eget nunc. Fermentum odio eu feugiat pretium nibh ipsum consequat. Eu scelerisque felis imperdiet proin. Nullam non nisi est sit amet facilisis magna etiam tempor. In mollis nunc sed id semper risus in hendrerit. Sollicitudin nibh sit amet commodo nulla facilisi nullam. Sit amet nisl purus in mollis nunc sed id. Nam libero justo laoreet sit amet cursus sit amet dictum. Condimentum id venenatis a condimentum vitae sapien pellentesque. Porta nibh venenatis cras sed felis. Lectus nulla at volutpat diam ut venenatis tellus in. Aliquam etiam erat velit scelerisque in dictum non consectetur a. Leo vel fringilla est ullamcorper eget. Sodales ut etiam sit amet nisl purus in mollis nunc. Euismod nisi porta lorem mollis aliquam. Ornare arcu odio ut sem nulla. Sed felis eget velit aliquet sagittis id consectetur. Pellentesque nec nam aliquam sem et tortor consequat id. Enim nec dui nunc mattis enim ut tellus elementum. Nullam non nisi est sit amet facilisis magna. Rutrum quisque non tellus orci ac auctor augue. Nunc vel risus commodo viverra maecenas accumsan lacus. Viverra vitae congue eu consequat. Sollicitudin nibh sit amet commodo nulla. Amet volutpat consequat mauris nunc congue nisi. Maecenas pharetra convallis posuere morbi leo urna molestie at. Mattis vulputate enim nulla aliquet porttitor lacus luctus accumsan tortor. Pulvinar sapien et ligula ullamcorper malesuada proin libero nunc consequat. Adipiscing diam donec adipiscing tristique risus. Elementum curabitur vitae nunc sed velit dignissim sodales ut. Eleifend donec pretium vulputate sapien nec. Commodo quis imperdiet massa tincidunt nunc pulvinar. Proin libero nunc consequat interdum varius sit amet mattis. Facilisis gravida neque convallis a cras semper auctor neque vitae. Quisque egestas diam in arcu cursus. Nunc eget lorem dolor sed viverra ipsum. Mauris sit amet massa vitae tortor condimentum lacinia quis vel. Aliquam sem et tortor consequat id porta nibh venenatis cras. Nunc sed id semper risus in. Enim sed faucibus turpis in eu mi bibendum neque. Molestie nunc non blandit massa enim. Enim praesent elementum facilisis leo vel fringilla est ullamcorper. Semper risus in hendrerit gravida rutrum quisque non tellus orci. Ac turpis egestas maecenas pharetra. In nulla posuere sollicitudin aliquam. Justo nec ultrices dui sapien eget mi proin sed libero. In ornare quam viverra orci sagittis eu. Proin nibh nisl condimentum id venenatis. Morbi enim nunc faucibus a pellentesque sit amet porttitor eget. Quis risus sed vulputate odio ut enim blandit. Risus feugiat in ante metus dictum at tempor commodo. Sodales neque sodales ut etiam. Nunc id cursus metus aliquam. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim enim. Augue ut lectus arcu bibendum at. Quis varius quam quisque id diam vel quam. Egestas congue quisque egestas diam in arcu. Condimentum mattis pellentesque id nibh tortor id aliquet lectus. Enim lobortis scelerisque fermentum dui faucibus in. In tellus integer feugiat scelerisque varius morbi enim nunc. Mattis molestie a iaculis at erat pellentesque. Elit scelerisque mauris pellentesque pulvinar pellentesque habitant morbi tristique. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Nisl rhoncus mattis rhoncus urna neque. Ac auctor augue mauris augue neque gravida in fermentum et. Sodales ut eu sem integer vitae justo eget. Sed egestas egestas fringilla phasellus. Viverra adipiscing at in tellus integer feugiat scelerisque varius. Purus gravida quis blandit turpis. Id porta nibh venenatis cras sed. Mattis vulputate enim nulla aliquet porttitor lacus. Augue eget arcu dictum varius duis at consectetur lorem donec. Nulla at volutpat diam ut venenatis tellus in metus. Aliquam etiam erat velit scelerisque in dictum non consectetur. Turpis cursus in hac habitasse platea dictumst. Consequat mauris nunc congue nisi vitae suscipit tellus. Volutpat maecenas volutpat blandit aliquam etiam. Massa massa ultricies mi quis hendrerit dolor magna eget est. Velit egestas dui id ornare arcu. Non consectetur a erat nam at. Orci sagittis eu volutpat odio facilisis mauris sit amet. Dui id ornare arcu odio. Sed arcu non odio euismod lacinia. Feugiat in ante metus dictum. Gravida arcu ac tortor dignissim convallis. Egestas sed tempus urna et pharetra pharetra massa massa. Nulla facilisi nullam vehicula ipsum a arcu. Ipsum a arcu cursus vitae congue mauris. Porttitor rhoncus dolor purus non. Magna sit amet purus gravida quis blandit. Sapien eget mi proin sed libero enim sed faucibus turpis. Nisl nunc mi ipsum faucibus vitae aliquet nec ullamcorper sit. Pellentesque dignissim enim sit amet venenatis urna cursus eget. Pharetra massa massa ultricies mi quis hendrerit. Sapien nec sagittis aliquam malesuada bibendum. Nunc scelerisque viverra mauris in aliquam sem fringilla ut. Dolor magna eget est lorem ipsum dolor. Amet commodo nulla facilisi nullam. Pellentesque elit ullamcorper dignissim cras. Id porta nibh venenatis cras sed felis eget. Nam at lectus urna duis. Laoreet non curabitur gravida arcu ac tortor dignissim convallis. Nunc lobortis mattis aliquam faucibus purus in massa tempor. Sit amet luctus venenatis lectus magna fringilla. Duis ultricies lacus sed turpis tincidunt id. Sed velit dignissim sodales ut eu. Ut tortor pretium viverra suspendisse potenti nullam. Iaculis at erat pellentesque adipiscing. Ipsum nunc aliquet bibendum enim facilisis gravida neque. Nulla aliquet enim tortor at auctor urna nunc id cursus. Amet cursus sit amet dictum sit amet justo donec enim. Enim nunc faucibus a pellentesque sit amet porttitor eget dolor. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros in. Nulla facilisi etiam dignissim diam quis enim. Ut enim blandit volutpat maecenas volutpat blandit aliquam etiam erat. Imperdiet proin fermentum leo vel orci porta non pulvinar neque. Vel fringilla est ullamcorper eget nulla. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Ipsum nunc aliquet bibendum enim facilisis gravida neque convallis a. Arcu cursus vitae congue mauris rhoncus aenean vel elit. Augue eget arcu dictum varius duis. Tristique et egestas quis ipsum. Quis varius quam quisque id. Varius sit amet mattis vulputate. Mattis molestie a iaculis at erat pellentesque. Libero justo laoreet sit amet cursus. Aliquam id diam maecenas ultricies mi eget mauris pharetra. Ut eu sem integer vitae justo eget. Fames ac turpis egestas sed. Suspendisse in est ante in nibh mauris cursus mattis. Faucibus pulvinar elementum integer enim neque volutpat ac tincidunt vitae. Neque vitae tempus quam pellentesque nec nam aliquam. Lobortis elementum nibh tellus molestie nunc non. Lacus vel facilisis volutpat est velit egestas dui. Justo laoreet sit amet cursus sit amet dictum sit amet. Adipiscing enim eu turpis egestas pretium aenean pharetra magna. Cursus metus aliquam eleifend mi in nulla posuere. Nibh mauris cursus mattis molestie a. Dignissim diam quis enim lobortis scelerisque fermentum. A scelerisque purus semper eget duis at tellus. Lacus sed turpis tincidunt id aliquet risus feugiat in. Non tellus orci ac auctor. Ultrices in iaculis nunc sed augue lacus. Tincidunt tortor aliquam nulla facilisi cras. Nulla facilisi nullam vehicula ipsum a arcu cursus vitae congue. Eget magna fermentum iaculis eu non diam phasellus. Pharetra massa massa ultricies mi quis. Eget mauris pharetra et ultrices neque ornare. Aliquam faucibus purus in massa. Facilisi morbi tempus iaculis urna id volutpat lacus. Accumsan lacus vel facilisis volutpat. Curabitur gravida arcu ac tortor. Quam lacus suspendisse faucibus interdum. Elementum nibh tellus molestie nunc non blandit massa enim. Libero id faucibus nisl tincidunt. Bibendum ut tristique et egestas. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Augue interdum velit euismod in pellentesque. Adipiscing diam donec adipiscing tristique risus nec feugiat. Fringilla ut morbi tincidunt augue interdum velit. Vitae et leo duis ut diam quam nulla porttitor massa. Egestas integer eget aliquet nibh praesent tristique. Posuere sollicitudin aliquam ultrices sagittis orci a. Nisi est sit amet facilisis. Risus quis varius quam quisque id diam. Faucibus turpis in eu mi. Et molestie ac feugiat sed lectus vestibulum. Porttitor lacus luctus accumsan tortor posuere ac. Platea dictumst vestibulum rhoncus est pellentesque. Tortor pretium viverra suspendisse potenti nullam ac tortor. Enim praesent elementum facilisis leo vel fringilla est. Proin libero nunc consequat interdum varius sit amet mattis vulputate. Turpis egestas pretium aenean pharetra magna ac placerat vestibulum lectus. Nulla pharetra diam sit amet nisl suscipit. Mauris nunc congue nisi vitae suscipit tellus mauris a diam. Faucibus in ornare quam viverra orci sagittis eu volutpat. Volutpat consequat mauris nunc congue nisi vitae. Dui nunc mattis enim ut tellus. Adipiscing elit ut aliquam purus sit amet luctus. Tempus egestas sed sed risus. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Massa ultricies mi quis hendrerit dolor magna eget. Pulvinar mattis nunc sed blandit libero volutpat sed cras ornare. Ut eu sem integer vitae justo eget magna fermentum. Ornare quam viverra orci sagittis. Eget dolor morbi non arcu risus quis varius quam. Tincidunt praesent semper feugiat nibh sed pulvinar. Sit amet justo donec enim diam vulputate. Dui faucibus in ornare quam viverra. Tincidunt tortor aliquam nulla facilisi cras fermentum odio eu. Turpis egestas sed tempus urna et. Pretium quam vulputate dignissim suspendisse in est ante in. Morbi quis commodo odio aenean sed adipiscing diam donec. Nunc mattis enim ut tellus elementum sagittis vitae et. Diam vel quam elementum pulvinar etiam non quam. Convallis posuere morbi leo urna molestie at elementum eu. Adipiscing at in tellus integer feugiat scelerisque varius morbi. Quis varius quam quisque id diam vel quam elementum. Dui accumsan sit amet nulla. Adipiscing elit duis tristique sollicitudin nibh sit amet commodo. Viverra ipsum nunc aliquet bibendum enim facilisis. Porta lorem mollis aliquam ut. Velit ut tortor pretium viverra suspendisse potenti. Quis viverra nibh cras pulvinar mattis nunc sed blandit. Pharetra magna ac placerat vestibulum. Mauris ultrices eros in cursus turpis massa. Lacus vestibulum sed arcu non odio euismod lacinia at. Dapibus ultrices in iaculis nunc sed. Cras adipiscing enim eu turpis egestas. Eget arcu dictum varius duis at consectetur. Consequat id porta nibh venenatis cras sed felis eget velit. Integer enim neque volutpat ac tincidunt vitae. Feugiat pretium nibh ipsum consequat nisl vel pretium lectus. Ut morbi tincidunt augue interdum velit euismod. Sed cras ornare arcu dui vivamus arcu felis bibendum ut. Eget felis eget nunc lobortis mattis aliquam faucibus purus in. Luctus venenatis lectus magna fringilla urna porttitor rhoncus dolor. Nisl nunc mi ipsum faucibus vitae. Proin fermentum leo vel orci porta. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. Et leo duis ut diam quam. Eros in cursus turpis massa tincidunt. Volutpat est velit egestas dui id. Commodo odio aenean sed adipiscing diam. Quis blandit turpis cursus in hac habitasse platea dictumst quisque. Magna fringilla urna porttitor rhoncus dolor. Amet consectetur adipiscing elit ut aliquam purus sit amet. Vitae justo eget magna fermentum iaculis eu non diam. Hendrerit dolor magna eget est. Ac placerat vestibulum lectus mauris ultrices eros in cursus turpis. Egestas diam in arcu cursus. At varius vel pharetra vel turpis nunc. Lacus vel facilisis volutpat est velit. Ut ornare lectus sit amet est placerat in egestas. Quam adipiscing vitae proin sagittis nisl rhoncus. Dolor purus non enim praesent. Urna condimentum mattis pellentesque id. Magnis dis parturient montes nascetur ridiculus. Feugiat nisl pretium fusce id. Sed cras ornare arcu dui vivamus. Vitae turpis massa sed elementum tempus egestas sed sed. Ac feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Ac ut consequat semper viverra nam libero. Consectetur lorem donec massa sapien faucibus. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Eu turpis egestas pretium aenean pharetra. Nisl rhoncus mattis rhoncus urna neque viverra justo nec ultrices. Pellentesque sit amet porttitor eget dolor morbi non arcu. Vitae justo eget magna fermentum iaculis. Quis auctor elit sed vulputate mi sit. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Semper auctor neque vitae tempus quam pellentesque nec nam. Rhoncus dolor purus non enim. Sed turpis tincidunt id aliquet risus feugiat. Sit amet justo donec enim diam vulputate ut pharetra sit. Risus pretium quam vulputate dignissim suspendisse in est ante in. Massa sapien faucibus et molestie ac feugiat. Id aliquet risus feugiat in ante metus. Risus ultricies tristique nulla aliquet enim tortor at auctor urna. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper morbi. Lacus sed turpis tincidunt id aliquet risus feugiat in. Risus ultricies tristique nulla aliquet enim tortor. In ornare quam viverra orci sagittis eu volutpat. Netus et malesuada fames ac turpis egestas sed tempus urna. Fames ac turpis egestas maecenas pharetra convallis posuere morbi. Etiam erat velit scelerisque in dictum non. Cursus turpis massa tincidunt dui ut ornare lectus. Tristique sollicitudin nibh sit amet commodo nulla facilisi. Pellentesque pulvinar pellentesque habitant morbi tristique senectus et. Aliquet eget sit amet tellus cras. Nullam ac tortor vitae purus faucibus ornare. Lacus viverra vitae congue eu consequat. Vulputate ut pharetra sit amet. Est ante in nibh mauris cursus mattis molestie a. Ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Et tortor at risus viverra. Sed libero enim sed faucibus turpis in eu. Id cursus metus aliquam eleifend mi in nulla posuere sollicitudin. Risus viverra adipiscing at in. Imperdiet massa tincidunt nunc pulvinar sapien et. Nec feugiat in fermentum posuere urna nec tincidunt. Ultricies mi eget mauris pharetra et. Morbi tristique senectus et netus et malesuada fames ac. At quis risus sed vulputate. Interdum velit laoreet id donec. Sapien pellentesque habitant morbi tristique. Pharetra vel turpis nunc eget lorem dolor sed viverra. In massa tempor nec feugiat nisl. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Mauris augue neque gravida in. Faucibus vitae aliquet nec ullamcorper sit amet risus. Id velit ut tortor pretium viverra suspendisse potenti. Leo integer malesuada nunc vel risus commodo viverra maecenas. Risus quis varius quam quisque id. Aliquam malesuada bibendum arcu vitae elementum curabitur vitae. Vestibulum lectus mauris ultrices eros in cursus turpis. Fermentum posuere urna nec tincidunt. Magna etiam tempor orci eu lobortis elementum nibh tellus molestie. Id ornare arcu odio ut. Facilisi nullam vehicula ipsum a arcu cursus vitae congue. Nulla pellentesque dignissim enim sit amet venenatis urna cursus eget. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Quis ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Sed cras ornare arcu dui vivamus arcu felis. Egestas diam in arcu cursus euismod quis. Tincidunt dui ut ornare lectus. Morbi tristique senectus et netus et. Ornare arcu dui vivamus arcu felis bibendum ut tristique. Habitant morbi tristique senectus et netus et malesuada fames ac. Ut tristique et egestas quis. Mollis aliquam ut porttitor leo. Venenatis tellus in metus vulputate eu scelerisque felis imperdiet proin. Sagittis eu volutpat odio facilisis mauris sit amet massa. Eu facilisis sed odio morbi. Nunc consequat interdum varius sit amet mattis. Velit dignissim sodales ut eu. Pellentesque eu tincidunt tortor aliquam. Porta lorem mollis aliquam ut porttitor. Rhoncus urna neque viverra justo nec ultrices. Viverra suspendisse potenti nullam ac tortor vitae purus. Fermentum posuere urna nec tincidunt praesent semper feugiat nibh sed. Purus sit amet luctus venenatis lectus magna fringilla urna porttitor. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Nisl nisi scelerisque eu ultrices vitae auctor. In vitae turpis massa sed elementum tempus egestas. Cursus sit amet dictum sit amet justo donec enim. Vitae congue eu consequat ac felis donec et. Augue interdum velit euismod in pellentesque massa placerat. Enim ut sem viverra aliquet eget sit amet. Velit scelerisque in dictum non consectetur a erat. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nunc faucibus a pellentesque sit amet porttitor eget. Tellus integer feugiat scelerisque varius morbi. Lorem sed risus ultricies tristique nulla aliquet enim tortor at. Eget nulla facilisi etiam dignissim diam quis enim lobortis scelerisque. Adipiscing elit duis tristique sollicitudin. Adipiscing elit pellentesque habitant morbi tristique. Ac tincidunt vitae semper quis lectus nulla at. Maecenas sed enim ut sem viverra. Erat pellentesque adipiscing commodo elit at imperdiet. Dolor morbi non arcu risus quis varius quam quisque. Fringilla urna porttitor rhoncus dolor purus non enim praesent. Tellus integer feugiat scelerisque varius morbi enim nunc faucibus a. Felis eget nunc lobortis mattis aliquam faucibus purus in. Fringilla phasellus faucibus scelerisque eleifend. Pulvinar etiam non quam lacus suspendisse faucibus interdum posuere. Risus ultricies tristique nulla aliquet. Lectus sit amet est placerat. Ac ut consequat semper viverra nam libero justo. Dapibus ultrices in iaculis nunc sed augue. Mattis ullamcorper velit sed ullamcorper. Eget nullam non nisi est. Vitae elementum curabitur vitae nunc sed velit. Sit amet commodo nulla facilisi nullam vehicula ipsum a arcu. Tempor nec feugiat nisl pretium fusce id velit ut. Nulla pellentesque dignissim enim sit amet venenatis. Sed tempus urna et pharetra pharetra. Congue quisque egestas diam in. Convallis posuere morbi leo urna. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Sagittis nisl rhoncus mattis rhoncus urna neque viverra justo. Scelerisque felis imperdiet proin fermentum leo vel. Ut placerat orci nulla pellentesque dignissim enim sit amet. In cursus turpis massa tincidunt dui. Rutrum quisque non tellus orci ac auctor augue mauris augue. Cursus vitae congue mauris rhoncus aenean vel elit scelerisque mauris. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Habitant morbi tristique senectus et netus et. Ridiculus mus mauris vitae ultricies leo. Vitae semper quis lectus nulla at volutpat diam. Purus faucibus ornare suspendisse sed nisi. Enim lobortis scelerisque fermentum dui faucibus in ornare quam. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Varius duis at consectetur lorem donec. Pulvinar pellentesque habitant morbi tristique senectus et netus et. A iaculis at erat pellentesque adipiscing commodo elit at imperdiet. Mi ipsum faucibus vitae aliquet nec. Libero volutpat sed cras ornare arcu dui vivamus arcu. Natoque penatibus et magnis dis parturient montes nascetur ridiculus. Maecenas volutpat blandit aliquam etiam erat velit scelerisque. Cras adipiscing enim eu turpis. Nec tincidunt praesent semper feugiat nibh sed pulvinar. Justo laoreet sit amet cursus sit amet dictum sit. Velit scelerisque in dictum non consectetur a erat nam. Turpis tincidunt id aliquet risus feugiat in ante. Aliquet risus feugiat in ante metus dictum. Hac habitasse platea dictumst quisque sagittis purus sit. Et pharetra pharetra massa massa ultricies. Sit amet nisl suscipit adipiscing bibendum est ultricies integer. Venenatis urna cursus eget nunc scelerisque viverra mauris in. Integer quis auctor elit sed. In est ante in nibh mauris cursus mattis molestie. Scelerisque in dictum non consectetur a erat nam at. Lectus sit amet est placerat in. Sit amet cursus sit amet. Nibh nisl condimentum id venenatis a condimentum. Purus ut faucibus pulvinar elementum integer enim. Pharetra sit amet aliquam id diam maecenas. Id cursus metus aliquam eleifend mi in nulla posuere. Lobortis mattis aliquam faucibus purus in massa tempor nec. Urna neque viverra justo nec ultrices dui sapien eget. Enim ut sem viverra aliquet eget sit amet. In eu mi bibendum neque egestas congue quisque egestas. Enim neque volutpat ac tincidunt. Orci ac auctor augue mauris augue neque gravida in fermentum. Velit aliquet sagittis id consectetur. Enim ut sem viverra aliquet eget sit amet tellus. Semper auctor neque vitae tempus quam pellentesque nec. Non blandit massa enim nec dui nunc. Morbi blandit cursus risus at ultrices mi tempus imperdiet nulla. Arcu non odio euismod lacinia at quis risus. Dictum varius duis at consectetur lorem donec massa. Blandit massa enim nec dui. Nibh ipsum consequat nisl vel. Turpis in eu mi bibendum neque. Ut tristique et egestas quis. Ac odio tempor orci dapibus. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim. Integer feugiat scelerisque varius morbi enim. Libero volutpat sed cras ornare arcu dui. Odio aenean sed adipiscing diam. Et egestas quis ipsum suspendisse ultrices. Aliquet lectus proin nibh nisl condimentum. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh sit. Blandit massa enim nec dui. Tellus molestie nunc non blandit massa enim nec. Tortor vitae purus faucibus ornare suspendisse sed nisi. Nascetur ridiculus mus mauris vitae ultricies leo. Elementum facilisis leo vel fringilla est ullamcorper eget nulla. Diam maecenas ultricies mi eget. Duis tristique sollicitudin nibh sit amet commodo nulla. Tempus iaculis urna id volutpat lacus laoreet non curabitur gravida. Dictumst quisque sagittis purus sit amet. Viverra mauris in aliquam sem. Quis risus sed vulputate odio ut enim blandit volutpat maecenas. Condimentum mattis pellentesque id nibh tortor id. Non sodales neque sodales ut etiam sit amet. Ipsum consequat nisl vel pretium. Cursus in hac habitasse platea dictumst quisque sagittis purus sit. Fringilla est ullamcorper eget nulla facilisi etiam. Tellus elementum sagittis vitae et leo duis ut diam quam. Nisl vel pretium lectus quam id leo in.' : long ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4224367 tomlkit-0.12.4/tests/toml-spec-tests/values/qa-scalar-literal-40kb.toml0000644000000000000000000011611514567257576022701 0ustar00long = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor. Amet consectetur adipiscing elit ut. Nulla facilisi etiam dignissim diam quis enim lobortis. Curabitur vitae nunc sed velit dignissim sodales ut eu. Fames ac turpis egestas sed tempus urna et. Facilisi cras fermentum odio eu feugiat pretium. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Est lorem ipsum dolor sit amet consectetur adipiscing elit. Vel quam elementum pulvinar etiam non quam lacus. Pharetra et ultrices neque ornare aenean euismod. Nisl nisi scelerisque eu ultrices. Eget dolor morbi non arcu risus. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Faucibus nisl tincidunt eget nullam. Nisl pretium fusce id velit ut tortor pretium viverra suspendisse. Mauris ultrices eros in cursus. Donec ac odio tempor orci dapibus ultrices in iaculis. Tellus cras adipiscing enim eu turpis egestas pretium aenean pharetra. Eros in cursus turpis massa. Nascetur ridiculus mus mauris vitae ultricies leo integer malesuada nunc. Velit sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Aenean euismod elementum nisi quis eleifend quam. Magnis dis parturient montes nascetur ridiculus mus. Eu tincidunt tortor aliquam nulla facilisi cras. Tristique senectus et netus et malesuada fames. Urna nec tincidunt praesent semper feugiat nibh sed pulvinar. Vitae ultricies leo integer malesuada nunc vel risus commodo viverra. Ac turpis egestas sed tempus urna et. Amet mauris commodo quis imperdiet massa tincidunt. Urna nunc id cursus metus aliquam eleifend mi. In nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Neque aliquam vestibulum morbi blandit cursus. Pulvinar mattis nunc sed blandit libero volutpat sed. Sed egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Blandit cursus risus at ultrices mi tempus. Turpis massa sed elementum tempus egestas sed sed. Dictum varius duis at consectetur lorem. Commodo ullamcorper a lacus vestibulum sed arcu non. Dolor magna eget est lorem. Tincidunt arcu non sodales neque sodales ut etiam sit amet. Sit amet risus nullam eget felis eget nunc lobortis. Risus in hendrerit gravida rutrum quisque non tellus orci. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Morbi tristique senectus et netus et malesuada. In aliquam sem fringilla ut morbi tincidunt. Ornare aenean euismod elementum nisi quis eleifend quam. Sed id semper risus in hendrerit gravida rutrum quisque. Lorem ipsum dolor sit amet consectetur adipiscing elit. A condimentum vitae sapien pellentesque habitant morbi tristique senectus et. Faucibus purus in massa tempor nec feugiat nisl. Vehicula ipsum a arcu cursus vitae congue. Facilisi cras fermentum odio eu feugiat pretium nibh. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Ultrices dui sapien eget mi proin sed libero enim. Nisi est sit amet facilisis magna etiam tempor. Posuere ac ut consequat semper viverra nam. Dis parturient montes nascetur ridiculus mus mauris vitae. Nec sagittis aliquam malesuada bibendum. Mattis pellentesque id nibh tortor id aliquet lectus. Vitae congue eu consequat ac felis donec et. Cras sed felis eget velit aliquet sagittis id consectetur purus. Pellentesque elit ullamcorper dignissim cras tincidunt. Pellentesque dignissim enim sit amet venenatis urna. A cras semper auctor neque vitae tempus. Amet massa vitae tortor condimentum lacinia quis vel eros donec. Tempor commodo ullamcorper a lacus. Nibh tellus molestie nunc non blandit massa enim nec dui. Viverra orci sagittis eu volutpat odio facilisis mauris sit. Sed augue lacus viverra vitae. Vulputate eu scelerisque felis imperdiet proin fermentum leo vel orci. Tellus rutrum tellus pellentesque eu tincidunt tortor. Cras semper auctor neque vitae tempus quam pellentesque nec. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Tristique magna sit amet purus gravida quis blandit turpis. Viverra ipsum nunc aliquet bibendum. Arcu bibendum at varius vel. Amet mattis vulputate enim nulla. Vulputate enim nulla aliquet porttitor. Volutpat blandit aliquam etiam erat velit scelerisque in dictum. Morbi tristique senectus et netus et malesuada fames ac. Faucibus et molestie ac feugiat sed. Tellus elementum sagittis vitae et leo duis. Id aliquet lectus proin nibh. Ornare arcu dui vivamus arcu. Morbi tincidunt augue interdum velit euismod in pellentesque massa placerat. Quis eleifend quam adipiscing vitae. Tristique senectus et netus et malesuada fames ac turpis. Pharetra convallis posuere morbi leo. Ornare arcu odio ut sem nulla pharetra diam sit. Morbi tristique senectus et netus et. Dictum non consectetur a erat nam at lectus urna. Varius vel pharetra vel turpis. Mi ipsum faucibus vitae aliquet. Tellus in metus vulputate eu scelerisque felis imperdiet proin. In est ante in nibh mauris cursus mattis. Massa ultricies mi quis hendrerit dolor magna eget. Fermentum leo vel orci porta. Elit ut aliquam purus sit amet luctus venenatis lectus. Eget aliquet nibh praesent tristique magna sit amet. Arcu non odio euismod lacinia at quis. Montes nascetur ridiculus mus mauris vitae ultricies. Tempus quam pellentesque nec nam aliquam sem et tortor. Morbi leo urna molestie at elementum eu facilisis sed. In fermentum posuere urna nec tincidunt. Neque aliquam vestibulum morbi blandit cursus risus. Vulputate dignissim suspendisse in est ante in nibh mauris cursus. Lorem ipsum dolor sit amet consectetur adipiscing. Orci eu lobortis elementum nibh tellus molestie nunc non. Enim diam vulputate ut pharetra sit amet aliquam. Convallis convallis tellus id interdum velit laoreet id donec ultrices. Sit amet mattis vulputate enim nulla aliquet porttitor lacus luctus. A lacus vestibulum sed arcu non odio. Ut tortor pretium viverra suspendisse potenti nullam ac tortor. Diam vel quam elementum pulvinar etiam non quam. Viverra justo nec ultrices dui. Eu volutpat odio facilisis mauris sit amet massa. Sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Ac felis donec et odio pellentesque. Nisl vel pretium lectus quam id leo in. Ultricies lacus sed turpis tincidunt id. At urna condimentum mattis pellentesque id nibh tortor id. Sem nulla pharetra diam sit amet nisl suscipit. Neque viverra justo nec ultrices. Arcu cursus euismod quis viverra nibh cras pulvinar. Dolor sit amet consectetur adipiscing elit ut aliquam purus. Id diam vel quam elementum pulvinar etiam non. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Id aliquet lectus proin nibh nisl condimentum id venenatis. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh. Sed faucibus turpis in eu mi bibendum neque egestas congue. Consectetur libero id faucibus nisl tincidunt eget nullam. At volutpat diam ut venenatis tellus in metus vulputate eu. Condimentum lacinia quis vel eros donec ac odio. Sit amet porttitor eget dolor morbi non arcu risus quis. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Metus dictum at tempor commodo ullamcorper. At ultrices mi tempus imperdiet nulla. Est ullamcorper eget nulla facilisi etiam dignissim diam quis. Lobortis elementum nibh tellus molestie nunc non. Placerat in egestas erat imperdiet sed. Placerat in egestas erat imperdiet sed euismod. Lobortis feugiat vivamus at augue eget arcu dictum varius. Ut sem nulla pharetra diam sit amet. Et tortor at risus viverra adipiscing at in. Tempor nec feugiat nisl pretium. Cursus euismod quis viverra nibh. Eget mi proin sed libero enim sed. Aliquam id diam maecenas ultricies. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Gravida quis blandit turpis cursus in hac habitasse platea dictumst. Sed tempus urna et pharetra pharetra massa massa. Dolor purus non enim praesent elementum facilisis leo vel. Pharetra vel turpis nunc eget. Quam pellentesque nec nam aliquam sem et tortor consequat id. Orci eu lobortis elementum nibh tellus molestie nunc non. Porttitor leo a diam sollicitudin tempor id. Tincidunt ornare massa eget egestas purus viverra accumsan in nisl. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor sit. Elit ut aliquam purus sit amet luctus venenatis lectus. Velit egestas dui id ornare arcu odio ut sem nulla. Lacus viverra vitae congue eu consequat ac felis donec. Nulla aliquet porttitor lacus luctus accumsan tortor posuere ac ut. Lorem dolor sed viverra ipsum. Blandit libero volutpat sed cras ornare arcu. Egestas erat imperdiet sed euismod nisi porta lorem mollis. Viverra maecenas accumsan lacus vel. Enim neque volutpat ac tincidunt. Porttitor massa id neque aliquam vestibulum morbi blandit cursus risus. Malesuada bibendum arcu vitae elementum curabitur vitae nunc. Et malesuada fames ac turpis egestas integer. Egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Est placerat in egestas erat imperdiet sed. Non arcu risus quis varius quam quisque. Lorem mollis aliquam ut porttitor leo a. Viverra tellus in hac habitasse platea dictumst vestibulum rhoncus. Fermentum iaculis eu non diam. Erat imperdiet sed euismod nisi porta lorem mollis aliquam. Varius vel pharetra vel turpis nunc eget lorem dolor. Rhoncus mattis rhoncus urna neque viverra. Hac habitasse platea dictumst quisque sagittis purus sit. At quis risus sed vulputate odio ut enim. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros. Rutrum quisque non tellus orci ac auctor. Iaculis eu non diam phasellus vestibulum lorem sed. Ut sem nulla pharetra diam sit amet nisl suscipit. Risus at ultrices mi tempus. Vitae tortor condimentum lacinia quis vel eros donec. Sed tempus urna et pharetra. Posuere sollicitudin aliquam ultrices sagittis orci. Congue quisque egestas diam in arcu. Hac habitasse platea dictumst vestibulum rhoncus est pellentesque elit. Pellentesque habitant morbi tristique senectus et netus et. Id interdum velit laoreet id. Fusce ut placerat orci nulla pellentesque dignissim. Pretium nibh ipsum consequat nisl vel pretium. Etiam erat velit scelerisque in dictum non consectetur a. Turpis in eu mi bibendum neque egestas congue quisque egestas. Pulvinar sapien et ligula ullamcorper malesuada. Ultricies tristique nulla aliquet enim tortor at. Suspendisse interdum consectetur libero id faucibus. Lorem sed risus ultricies tristique nulla aliquet. Tristique senectus et netus et malesuada fames. Eu augue ut lectus arcu bibendum at varius vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies. Aliquet eget sit amet tellus cras adipiscing. Massa placerat duis ultricies lacus sed turpis tincidunt id aliquet. Ornare massa eget egestas purus viverra accumsan in nisl. Justo laoreet sit amet cursus sit amet. In metus vulputate eu scelerisque felis imperdiet proin. At erat pellentesque adipiscing commodo elit at. Ipsum suspendisse ultrices gravida dictum fusce. Lectus sit amet est placerat in egestas erat. Aliquam ultrices sagittis orci a. Sagittis id consectetur purus ut faucibus pulvinar elementum. Ornare arcu odio ut sem nulla pharetra diam. Sit amet purus gravida quis blandit turpis cursus. Duis ultricies lacus sed turpis tincidunt. Malesuada fames ac turpis egestas sed tempus urna et. Viverra ipsum nunc aliquet bibendum enim facilisis. Et pharetra pharetra massa massa ultricies mi quis. Eget duis at tellus at urna condimentum mattis. Euismod in pellentesque massa placerat. Enim nunc faucibus a pellentesque sit amet porttitor. Dolor sed viverra ipsum nunc aliquet. Donec enim diam vulputate ut pharetra sit amet. Feugiat sed lectus vestibulum mattis ullamcorper velit sed. Erat pellentesque adipiscing commodo elit at imperdiet. Nisl purus in mollis nunc sed id semper risus. Tincidunt augue interdum velit euismod in pellentesque massa. Facilisis magna etiam tempor orci. Mauris in aliquam sem fringilla ut. Gravida dictum fusce ut placerat orci. Sed risus ultricies tristique nulla. Odio morbi quis commodo odio. Feugiat in ante metus dictum at tempor commodo ullamcorper. Porta non pulvinar neque laoreet suspendisse interdum. Etiam tempor orci eu lobortis elementum. Fusce ut placerat orci nulla pellentesque dignissim. Ornare lectus sit amet est placerat in egestas erat. Quis vel eros donec ac. Elementum pulvinar etiam non quam lacus. Sit amet tellus cras adipiscing enim eu turpis. Amet tellus cras adipiscing enim eu. Sed faucibus turpis in eu mi bibendum. Lectus proin nibh nisl condimentum id. Sollicitudin nibh sit amet commodo nulla. Sed tempus urna et pharetra pharetra massa massa. Magna eget est lorem ipsum. Elit ullamcorper dignissim cras tincidunt lobortis feugiat vivamus at. Fermentum dui faucibus in ornare quam viverra orci sagittis eu. Dignissim convallis aenean et tortor. Ut faucibus pulvinar elementum integer enim neque. Nibh cras pulvinar mattis nunc sed. Pellentesque sit amet porttitor eget dolor morbi. Mi eget mauris pharetra et ultrices neque ornare aenean euismod. Quis risus sed vulputate odio ut enim blandit volutpat. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. In vitae turpis massa sed elementum tempus egestas sed sed. Urna id volutpat lacus laoreet non. Egestas pretium aenean pharetra magna ac placerat. Amet commodo nulla facilisi nullam vehicula ipsum a arcu cursus. Donec et odio pellentesque diam volutpat commodo sed. Etiam non quam lacus suspendisse. Augue neque gravida in fermentum et sollicitudin ac orci. Eu feugiat pretium nibh ipsum. Nam at lectus urna duis convallis convallis tellus id. Egestas integer eget aliquet nibh. Viverra accumsan in nisl nisi scelerisque eu ultrices vitae auctor. Urna condimentum mattis pellentesque id nibh tortor id. In egestas erat imperdiet sed euismod. Ut sem viverra aliquet eget sit amet tellus. Feugiat pretium nibh ipsum consequat nisl vel pretium. Volutpat odio facilisis mauris sit amet. Mi sit amet mauris commodo quis imperdiet massa tincidunt. Neque volutpat ac tincidunt vitae semper quis lectus nulla at. Nec feugiat in fermentum posuere urna nec. Ut venenatis tellus in metus vulputate eu. Vestibulum rhoncus est pellentesque elit ullamcorper dignissim. Eu scelerisque felis imperdiet proin. Vitae et leo duis ut diam quam nulla. Ut venenatis tellus in metus vulputate eu scelerisque. Tincidunt dui ut ornare lectus sit amet. Adipiscing diam donec adipiscing tristique risus. Turpis nunc eget lorem dolor sed viverra ipsum nunc aliquet. Non sodales neque sodales ut. Massa placerat duis ultricies lacus sed turpis tincidunt. Viverra orci sagittis eu volutpat odio facilisis mauris sit amet. Adipiscing vitae proin sagittis nisl. Vitae aliquet nec ullamcorper sit. Potenti nullam ac tortor vitae purus. Ultricies lacus sed turpis tincidunt id. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Semper eget duis at tellus at urna condimentum mattis pellentesque. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin. Dictum fusce ut placerat orci nulla pellentesque dignissim. Amet luctus venenatis lectus magna fringilla urna. Quam quisque id diam vel quam elementum pulvinar. At tempor commodo ullamcorper a. Magna etiam tempor orci eu lobortis. Suspendisse ultrices gravida dictum fusce. Massa ultricies mi quis hendrerit dolor magna. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Aliquet enim tortor at auctor urna nunc id. Semper feugiat nibh sed pulvinar proin gravida. Porttitor rhoncus dolor purus non enim. Metus aliquam eleifend mi in nulla. Lectus arcu bibendum at varius vel pharetra. Sed vulputate odio ut enim blandit volutpat. Et ligula ullamcorper malesuada proin libero nunc consequat interdum varius. Donec et odio pellentesque diam volutpat commodo. Id ornare arcu odio ut sem nulla pharetra diam sit. Est ullamcorper eget nulla facilisi etiam dignissim diam quis enim. Sagittis vitae et leo duis ut diam quam nulla. Elementum nisi quis eleifend quam. Congue mauris rhoncus aenean vel elit. Adipiscing elit duis tristique sollicitudin nibh sit. Egestas egestas fringilla phasellus faucibus scelerisque. Morbi tincidunt augue interdum velit euismod. Massa sed elementum tempus egestas sed sed. Id leo in vitae turpis massa sed elementum tempus egestas. In pellentesque massa placerat duis ultricies lacus sed turpis. Vitae proin sagittis nisl rhoncus mattis rhoncus. Enim tortor at auctor urna nunc id. In fermentum posuere urna nec tincidunt praesent semper feugiat nibh. Aliquam ut porttitor leo a diam sollicitudin tempor id. Pellentesque elit eget gravida cum sociis natoque. Molestie at elementum eu facilisis sed odio morbi quis. Tristique senectus et netus et malesuada fames ac turpis. Proin libero nunc consequat interdum varius sit amet mattis. Pellentesque id nibh tortor id. Risus sed vulputate odio ut enim blandit. Laoreet suspendisse interdum consectetur libero id faucibus nisl tincidunt eget. Morbi tincidunt augue interdum velit euismod in pellentesque. Pharetra pharetra massa massa ultricies mi quis hendrerit. Nunc aliquet bibendum enim facilisis gravida neque. Feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Risus quis varius quam quisque id diam vel. Et ultrices neque ornare aenean. Aliquet sagittis id consectetur purus ut faucibus pulvinar elementum. Nibh ipsum consequat nisl vel. Mauris rhoncus aenean vel elit scelerisque mauris pellentesque pulvinar. Ornare quam viverra orci sagittis eu volutpat odio facilisis. Euismod nisi porta lorem mollis aliquam. Enim ut tellus elementum sagittis. Rhoncus mattis rhoncus urna neque. Malesuada fames ac turpis egestas. Cursus in hac habitasse platea dictumst quisque sagittis. Sit amet aliquam id diam maecenas ultricies mi eget mauris. Enim sit amet venenatis urna cursus eget nunc. Fermentum odio eu feugiat pretium nibh ipsum consequat. Eu scelerisque felis imperdiet proin. Nullam non nisi est sit amet facilisis magna etiam tempor. In mollis nunc sed id semper risus in hendrerit. Sollicitudin nibh sit amet commodo nulla facilisi nullam. Sit amet nisl purus in mollis nunc sed id. Nam libero justo laoreet sit amet cursus sit amet dictum. Condimentum id venenatis a condimentum vitae sapien pellentesque. Porta nibh venenatis cras sed felis. Lectus nulla at volutpat diam ut venenatis tellus in. Aliquam etiam erat velit scelerisque in dictum non consectetur a. Leo vel fringilla est ullamcorper eget. Sodales ut etiam sit amet nisl purus in mollis nunc. Euismod nisi porta lorem mollis aliquam. Ornare arcu odio ut sem nulla. Sed felis eget velit aliquet sagittis id consectetur. Pellentesque nec nam aliquam sem et tortor consequat id. Enim nec dui nunc mattis enim ut tellus elementum. Nullam non nisi est sit amet facilisis magna. Rutrum quisque non tellus orci ac auctor augue. Nunc vel risus commodo viverra maecenas accumsan lacus. Viverra vitae congue eu consequat. Sollicitudin nibh sit amet commodo nulla. Amet volutpat consequat mauris nunc congue nisi. Maecenas pharetra convallis posuere morbi leo urna molestie at. Mattis vulputate enim nulla aliquet porttitor lacus luctus accumsan tortor. Pulvinar sapien et ligula ullamcorper malesuada proin libero nunc consequat. Adipiscing diam donec adipiscing tristique risus. Elementum curabitur vitae nunc sed velit dignissim sodales ut. Eleifend donec pretium vulputate sapien nec. Commodo quis imperdiet massa tincidunt nunc pulvinar. Proin libero nunc consequat interdum varius sit amet mattis. Facilisis gravida neque convallis a cras semper auctor neque vitae. Quisque egestas diam in arcu cursus. Nunc eget lorem dolor sed viverra ipsum. Mauris sit amet massa vitae tortor condimentum lacinia quis vel. Aliquam sem et tortor consequat id porta nibh venenatis cras. Nunc sed id semper risus in. Enim sed faucibus turpis in eu mi bibendum neque. Molestie nunc non blandit massa enim. Enim praesent elementum facilisis leo vel fringilla est ullamcorper. Semper risus in hendrerit gravida rutrum quisque non tellus orci. Ac turpis egestas maecenas pharetra. In nulla posuere sollicitudin aliquam. Justo nec ultrices dui sapien eget mi proin sed libero. In ornare quam viverra orci sagittis eu. Proin nibh nisl condimentum id venenatis. Morbi enim nunc faucibus a pellentesque sit amet porttitor eget. Quis risus sed vulputate odio ut enim blandit. Risus feugiat in ante metus dictum at tempor commodo. Sodales neque sodales ut etiam. Nunc id cursus metus aliquam. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim enim. Augue ut lectus arcu bibendum at. Quis varius quam quisque id diam vel quam. Egestas congue quisque egestas diam in arcu. Condimentum mattis pellentesque id nibh tortor id aliquet lectus. Enim lobortis scelerisque fermentum dui faucibus in. In tellus integer feugiat scelerisque varius morbi enim nunc. Mattis molestie a iaculis at erat pellentesque. Elit scelerisque mauris pellentesque pulvinar pellentesque habitant morbi tristique. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Nisl rhoncus mattis rhoncus urna neque. Ac auctor augue mauris augue neque gravida in fermentum et. Sodales ut eu sem integer vitae justo eget. Sed egestas egestas fringilla phasellus. Viverra adipiscing at in tellus integer feugiat scelerisque varius. Purus gravida quis blandit turpis. Id porta nibh venenatis cras sed. Mattis vulputate enim nulla aliquet porttitor lacus. Augue eget arcu dictum varius duis at consectetur lorem donec. Nulla at volutpat diam ut venenatis tellus in metus. Aliquam etiam erat velit scelerisque in dictum non consectetur. Turpis cursus in hac habitasse platea dictumst. Consequat mauris nunc congue nisi vitae suscipit tellus. Volutpat maecenas volutpat blandit aliquam etiam. Massa massa ultricies mi quis hendrerit dolor magna eget est. Velit egestas dui id ornare arcu. Non consectetur a erat nam at. Orci sagittis eu volutpat odio facilisis mauris sit amet. Dui id ornare arcu odio. Sed arcu non odio euismod lacinia. Feugiat in ante metus dictum. Gravida arcu ac tortor dignissim convallis. Egestas sed tempus urna et pharetra pharetra massa massa. Nulla facilisi nullam vehicula ipsum a arcu. Ipsum a arcu cursus vitae congue mauris. Porttitor rhoncus dolor purus non. Magna sit amet purus gravida quis blandit. Sapien eget mi proin sed libero enim sed faucibus turpis. Nisl nunc mi ipsum faucibus vitae aliquet nec ullamcorper sit. Pellentesque dignissim enim sit amet venenatis urna cursus eget. Pharetra massa massa ultricies mi quis hendrerit. Sapien nec sagittis aliquam malesuada bibendum. Nunc scelerisque viverra mauris in aliquam sem fringilla ut. Dolor magna eget est lorem ipsum dolor. Amet commodo nulla facilisi nullam. Pellentesque elit ullamcorper dignissim cras. Id porta nibh venenatis cras sed felis eget. Nam at lectus urna duis. Laoreet non curabitur gravida arcu ac tortor dignissim convallis. Nunc lobortis mattis aliquam faucibus purus in massa tempor. Sit amet luctus venenatis lectus magna fringilla. Duis ultricies lacus sed turpis tincidunt id. Sed velit dignissim sodales ut eu. Ut tortor pretium viverra suspendisse potenti nullam. Iaculis at erat pellentesque adipiscing. Ipsum nunc aliquet bibendum enim facilisis gravida neque. Nulla aliquet enim tortor at auctor urna nunc id cursus. Amet cursus sit amet dictum sit amet justo donec enim. Enim nunc faucibus a pellentesque sit amet porttitor eget dolor. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros in. Nulla facilisi etiam dignissim diam quis enim. Ut enim blandit volutpat maecenas volutpat blandit aliquam etiam erat. Imperdiet proin fermentum leo vel orci porta non pulvinar neque. Vel fringilla est ullamcorper eget nulla. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Ipsum nunc aliquet bibendum enim facilisis gravida neque convallis a. Arcu cursus vitae congue mauris rhoncus aenean vel elit. Augue eget arcu dictum varius duis. Tristique et egestas quis ipsum. Quis varius quam quisque id. Varius sit amet mattis vulputate. Mattis molestie a iaculis at erat pellentesque. Libero justo laoreet sit amet cursus. Aliquam id diam maecenas ultricies mi eget mauris pharetra. Ut eu sem integer vitae justo eget. Fames ac turpis egestas sed. Suspendisse in est ante in nibh mauris cursus mattis. Faucibus pulvinar elementum integer enim neque volutpat ac tincidunt vitae. Neque vitae tempus quam pellentesque nec nam aliquam. Lobortis elementum nibh tellus molestie nunc non. Lacus vel facilisis volutpat est velit egestas dui. Justo laoreet sit amet cursus sit amet dictum sit amet. Adipiscing enim eu turpis egestas pretium aenean pharetra magna. Cursus metus aliquam eleifend mi in nulla posuere. Nibh mauris cursus mattis molestie a. Dignissim diam quis enim lobortis scelerisque fermentum. A scelerisque purus semper eget duis at tellus. Lacus sed turpis tincidunt id aliquet risus feugiat in. Non tellus orci ac auctor. Ultrices in iaculis nunc sed augue lacus. Tincidunt tortor aliquam nulla facilisi cras. Nulla facilisi nullam vehicula ipsum a arcu cursus vitae congue. Eget magna fermentum iaculis eu non diam phasellus. Pharetra massa massa ultricies mi quis. Eget mauris pharetra et ultrices neque ornare. Aliquam faucibus purus in massa. Facilisi morbi tempus iaculis urna id volutpat lacus. Accumsan lacus vel facilisis volutpat. Curabitur gravida arcu ac tortor. Quam lacus suspendisse faucibus interdum. Elementum nibh tellus molestie nunc non blandit massa enim. Libero id faucibus nisl tincidunt. Bibendum ut tristique et egestas. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Augue interdum velit euismod in pellentesque. Adipiscing diam donec adipiscing tristique risus nec feugiat. Fringilla ut morbi tincidunt augue interdum velit. Vitae et leo duis ut diam quam nulla porttitor massa. Egestas integer eget aliquet nibh praesent tristique. Posuere sollicitudin aliquam ultrices sagittis orci a. Nisi est sit amet facilisis. Risus quis varius quam quisque id diam. Faucibus turpis in eu mi. Et molestie ac feugiat sed lectus vestibulum. Porttitor lacus luctus accumsan tortor posuere ac. Platea dictumst vestibulum rhoncus est pellentesque. Tortor pretium viverra suspendisse potenti nullam ac tortor. Enim praesent elementum facilisis leo vel fringilla est. Proin libero nunc consequat interdum varius sit amet mattis vulputate. Turpis egestas pretium aenean pharetra magna ac placerat vestibulum lectus. Nulla pharetra diam sit amet nisl suscipit. Mauris nunc congue nisi vitae suscipit tellus mauris a diam. Faucibus in ornare quam viverra orci sagittis eu volutpat. Volutpat consequat mauris nunc congue nisi vitae. Dui nunc mattis enim ut tellus. Adipiscing elit ut aliquam purus sit amet luctus. Tempus egestas sed sed risus. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Massa ultricies mi quis hendrerit dolor magna eget. Pulvinar mattis nunc sed blandit libero volutpat sed cras ornare. Ut eu sem integer vitae justo eget magna fermentum. Ornare quam viverra orci sagittis. Eget dolor morbi non arcu risus quis varius quam. Tincidunt praesent semper feugiat nibh sed pulvinar. Sit amet justo donec enim diam vulputate. Dui faucibus in ornare quam viverra. Tincidunt tortor aliquam nulla facilisi cras fermentum odio eu. Turpis egestas sed tempus urna et. Pretium quam vulputate dignissim suspendisse in est ante in. Morbi quis commodo odio aenean sed adipiscing diam donec. Nunc mattis enim ut tellus elementum sagittis vitae et. Diam vel quam elementum pulvinar etiam non quam. Convallis posuere morbi leo urna molestie at elementum eu. Adipiscing at in tellus integer feugiat scelerisque varius morbi. Quis varius quam quisque id diam vel quam elementum. Dui accumsan sit amet nulla. Adipiscing elit duis tristique sollicitudin nibh sit amet commodo. Viverra ipsum nunc aliquet bibendum enim facilisis. Porta lorem mollis aliquam ut. Velit ut tortor pretium viverra suspendisse potenti. Quis viverra nibh cras pulvinar mattis nunc sed blandit. Pharetra magna ac placerat vestibulum. Mauris ultrices eros in cursus turpis massa. Lacus vestibulum sed arcu non odio euismod lacinia at. Dapibus ultrices in iaculis nunc sed. Cras adipiscing enim eu turpis egestas. Eget arcu dictum varius duis at consectetur. Consequat id porta nibh venenatis cras sed felis eget velit. Integer enim neque volutpat ac tincidunt vitae. Feugiat pretium nibh ipsum consequat nisl vel pretium lectus. Ut morbi tincidunt augue interdum velit euismod. Sed cras ornare arcu dui vivamus arcu felis bibendum ut. Eget felis eget nunc lobortis mattis aliquam faucibus purus in. Luctus venenatis lectus magna fringilla urna porttitor rhoncus dolor. Nisl nunc mi ipsum faucibus vitae. Proin fermentum leo vel orci porta. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. Et leo duis ut diam quam. Eros in cursus turpis massa tincidunt. Volutpat est velit egestas dui id. Commodo odio aenean sed adipiscing diam. Quis blandit turpis cursus in hac habitasse platea dictumst quisque. Magna fringilla urna porttitor rhoncus dolor. Amet consectetur adipiscing elit ut aliquam purus sit amet. Vitae justo eget magna fermentum iaculis eu non diam. Hendrerit dolor magna eget est. Ac placerat vestibulum lectus mauris ultrices eros in cursus turpis. Egestas diam in arcu cursus. At varius vel pharetra vel turpis nunc. Lacus vel facilisis volutpat est velit. Ut ornare lectus sit amet est placerat in egestas. Quam adipiscing vitae proin sagittis nisl rhoncus. Dolor purus non enim praesent. Urna condimentum mattis pellentesque id. Magnis dis parturient montes nascetur ridiculus. Feugiat nisl pretium fusce id. Sed cras ornare arcu dui vivamus. Vitae turpis massa sed elementum tempus egestas sed sed. Ac feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Ac ut consequat semper viverra nam libero. Consectetur lorem donec massa sapien faucibus. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Eu turpis egestas pretium aenean pharetra. Nisl rhoncus mattis rhoncus urna neque viverra justo nec ultrices. Pellentesque sit amet porttitor eget dolor morbi non arcu. Vitae justo eget magna fermentum iaculis. Quis auctor elit sed vulputate mi sit. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Semper auctor neque vitae tempus quam pellentesque nec nam. Rhoncus dolor purus non enim. Sed turpis tincidunt id aliquet risus feugiat. Sit amet justo donec enim diam vulputate ut pharetra sit. Risus pretium quam vulputate dignissim suspendisse in est ante in. Massa sapien faucibus et molestie ac feugiat. Id aliquet risus feugiat in ante metus. Risus ultricies tristique nulla aliquet enim tortor at auctor urna. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper morbi. Lacus sed turpis tincidunt id aliquet risus feugiat in. Risus ultricies tristique nulla aliquet enim tortor. In ornare quam viverra orci sagittis eu volutpat. Netus et malesuada fames ac turpis egestas sed tempus urna. Fames ac turpis egestas maecenas pharetra convallis posuere morbi. Etiam erat velit scelerisque in dictum non. Cursus turpis massa tincidunt dui ut ornare lectus. Tristique sollicitudin nibh sit amet commodo nulla facilisi. Pellentesque pulvinar pellentesque habitant morbi tristique senectus et. Aliquet eget sit amet tellus cras. Nullam ac tortor vitae purus faucibus ornare. Lacus viverra vitae congue eu consequat. Vulputate ut pharetra sit amet. Est ante in nibh mauris cursus mattis molestie a. Ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Et tortor at risus viverra. Sed libero enim sed faucibus turpis in eu. Id cursus metus aliquam eleifend mi in nulla posuere sollicitudin. Risus viverra adipiscing at in. Imperdiet massa tincidunt nunc pulvinar sapien et. Nec feugiat in fermentum posuere urna nec tincidunt. Ultricies mi eget mauris pharetra et. Morbi tristique senectus et netus et malesuada fames ac. At quis risus sed vulputate. Interdum velit laoreet id donec. Sapien pellentesque habitant morbi tristique. Pharetra vel turpis nunc eget lorem dolor sed viverra. In massa tempor nec feugiat nisl. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Mauris augue neque gravida in. Faucibus vitae aliquet nec ullamcorper sit amet risus. Id velit ut tortor pretium viverra suspendisse potenti. Leo integer malesuada nunc vel risus commodo viverra maecenas. Risus quis varius quam quisque id. Aliquam malesuada bibendum arcu vitae elementum curabitur vitae. Vestibulum lectus mauris ultrices eros in cursus turpis. Fermentum posuere urna nec tincidunt. Magna etiam tempor orci eu lobortis elementum nibh tellus molestie. Id ornare arcu odio ut. Facilisi nullam vehicula ipsum a arcu cursus vitae congue. Nulla pellentesque dignissim enim sit amet venenatis urna cursus eget. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Quis ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Sed cras ornare arcu dui vivamus arcu felis. Egestas diam in arcu cursus euismod quis. Tincidunt dui ut ornare lectus. Morbi tristique senectus et netus et. Ornare arcu dui vivamus arcu felis bibendum ut tristique. Habitant morbi tristique senectus et netus et malesuada fames ac. Ut tristique et egestas quis. Mollis aliquam ut porttitor leo. Venenatis tellus in metus vulputate eu scelerisque felis imperdiet proin. Sagittis eu volutpat odio facilisis mauris sit amet massa. Eu facilisis sed odio morbi. Nunc consequat interdum varius sit amet mattis. Velit dignissim sodales ut eu. Pellentesque eu tincidunt tortor aliquam. Porta lorem mollis aliquam ut porttitor. Rhoncus urna neque viverra justo nec ultrices. Viverra suspendisse potenti nullam ac tortor vitae purus. Fermentum posuere urna nec tincidunt praesent semper feugiat nibh sed. Purus sit amet luctus venenatis lectus magna fringilla urna porttitor. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Nisl nisi scelerisque eu ultrices vitae auctor. In vitae turpis massa sed elementum tempus egestas. Cursus sit amet dictum sit amet justo donec enim. Vitae congue eu consequat ac felis donec et. Augue interdum velit euismod in pellentesque massa placerat. Enim ut sem viverra aliquet eget sit amet. Velit scelerisque in dictum non consectetur a erat. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nunc faucibus a pellentesque sit amet porttitor eget. Tellus integer feugiat scelerisque varius morbi. Lorem sed risus ultricies tristique nulla aliquet enim tortor at. Eget nulla facilisi etiam dignissim diam quis enim lobortis scelerisque. Adipiscing elit duis tristique sollicitudin. Adipiscing elit pellentesque habitant morbi tristique. Ac tincidunt vitae semper quis lectus nulla at. Maecenas sed enim ut sem viverra. Erat pellentesque adipiscing commodo elit at imperdiet. Dolor morbi non arcu risus quis varius quam quisque. Fringilla urna porttitor rhoncus dolor purus non enim praesent. Tellus integer feugiat scelerisque varius morbi enim nunc faucibus a. Felis eget nunc lobortis mattis aliquam faucibus purus in. Fringilla phasellus faucibus scelerisque eleifend. Pulvinar etiam non quam lacus suspendisse faucibus interdum posuere. Risus ultricies tristique nulla aliquet. Lectus sit amet est placerat. Ac ut consequat semper viverra nam libero justo. Dapibus ultrices in iaculis nunc sed augue. Mattis ullamcorper velit sed ullamcorper. Eget nullam non nisi est. Vitae elementum curabitur vitae nunc sed velit. Sit amet commodo nulla facilisi nullam vehicula ipsum a arcu. Tempor nec feugiat nisl pretium fusce id velit ut. Nulla pellentesque dignissim enim sit amet venenatis. Sed tempus urna et pharetra pharetra. Congue quisque egestas diam in. Convallis posuere morbi leo urna. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Sagittis nisl rhoncus mattis rhoncus urna neque viverra justo. Scelerisque felis imperdiet proin fermentum leo vel. Ut placerat orci nulla pellentesque dignissim enim sit amet. In cursus turpis massa tincidunt dui. Rutrum quisque non tellus orci ac auctor augue mauris augue. Cursus vitae congue mauris rhoncus aenean vel elit scelerisque mauris. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Habitant morbi tristique senectus et netus et. Ridiculus mus mauris vitae ultricies leo. Vitae semper quis lectus nulla at volutpat diam. Purus faucibus ornare suspendisse sed nisi. Enim lobortis scelerisque fermentum dui faucibus in ornare quam. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Varius duis at consectetur lorem donec. Pulvinar pellentesque habitant morbi tristique senectus et netus et. A iaculis at erat pellentesque adipiscing commodo elit at imperdiet. Mi ipsum faucibus vitae aliquet nec. Libero volutpat sed cras ornare arcu dui vivamus arcu. Natoque penatibus et magnis dis parturient montes nascetur ridiculus. Maecenas volutpat blandit aliquam etiam erat velit scelerisque. Cras adipiscing enim eu turpis. Nec tincidunt praesent semper feugiat nibh sed pulvinar. Justo laoreet sit amet cursus sit amet dictum sit. Velit scelerisque in dictum non consectetur a erat nam. Turpis tincidunt id aliquet risus feugiat in ante. Aliquet risus feugiat in ante metus dictum. Hac habitasse platea dictumst quisque sagittis purus sit. Et pharetra pharetra massa massa ultricies. Sit amet nisl suscipit adipiscing bibendum est ultricies integer. Venenatis urna cursus eget nunc scelerisque viverra mauris in. Integer quis auctor elit sed. In est ante in nibh mauris cursus mattis molestie. Scelerisque in dictum non consectetur a erat nam at. Lectus sit amet est placerat in. Sit amet cursus sit amet. Nibh nisl condimentum id venenatis a condimentum. Purus ut faucibus pulvinar elementum integer enim. Pharetra sit amet aliquam id diam maecenas. Id cursus metus aliquam eleifend mi in nulla posuere. Lobortis mattis aliquam faucibus purus in massa tempor nec. Urna neque viverra justo nec ultrices dui sapien eget. Enim ut sem viverra aliquet eget sit amet. In eu mi bibendum neque egestas congue quisque egestas. Enim neque volutpat ac tincidunt. Orci ac auctor augue mauris augue neque gravida in fermentum. Velit aliquet sagittis id consectetur. Enim ut sem viverra aliquet eget sit amet tellus. Semper auctor neque vitae tempus quam pellentesque nec. Non blandit massa enim nec dui nunc. Morbi blandit cursus risus at ultrices mi tempus imperdiet nulla. Arcu non odio euismod lacinia at quis risus. Dictum varius duis at consectetur lorem donec massa. Blandit massa enim nec dui. Nibh ipsum consequat nisl vel. Turpis in eu mi bibendum neque. Ut tristique et egestas quis. Ac odio tempor orci dapibus. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim. Integer feugiat scelerisque varius morbi enim. Libero volutpat sed cras ornare arcu dui. Odio aenean sed adipiscing diam. Et egestas quis ipsum suspendisse ultrices. Aliquet lectus proin nibh nisl condimentum. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh sit. Blandit massa enim nec dui. Tellus molestie nunc non blandit massa enim nec. Tortor vitae purus faucibus ornare suspendisse sed nisi. Nascetur ridiculus mus mauris vitae ultricies leo. Elementum facilisis leo vel fringilla est ullamcorper eget nulla. Diam maecenas ultricies mi eget. Duis tristique sollicitudin nibh sit amet commodo nulla. Tempus iaculis urna id volutpat lacus laoreet non curabitur gravida. Dictumst quisque sagittis purus sit amet. Viverra mauris in aliquam sem. Quis risus sed vulputate odio ut enim blandit volutpat maecenas. Condimentum mattis pellentesque id nibh tortor id. Non sodales neque sodales ut etiam sit amet. Ipsum consequat nisl vel pretium. Cursus in hac habitasse platea dictumst quisque sagittis purus sit. Fringilla est ullamcorper eget nulla facilisi etiam. Tellus elementum sagittis vitae et leo duis ut diam quam. Nisl vel pretium lectus quam id leo in.' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4224367 tomlkit-0.12.4/tests/toml-spec-tests/values/qa-scalar-literal-40kb.yaml0000644000000000000000000012016214567257576022665 0ustar00long: >- Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor. Amet consectetur adipiscing elit ut. Nulla facilisi etiam dignissim diam quis enim lobortis. Curabitur vitae nunc sed velit dignissim sodales ut eu. Fames ac turpis egestas sed tempus urna et. Facilisi cras fermentum odio eu feugiat pretium. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Est lorem ipsum dolor sit amet consectetur adipiscing elit. Vel quam elementum pulvinar etiam non quam lacus. Pharetra et ultrices neque ornare aenean euismod. Nisl nisi scelerisque eu ultrices. Eget dolor morbi non arcu risus. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Faucibus nisl tincidunt eget nullam. Nisl pretium fusce id velit ut tortor pretium viverra suspendisse. Mauris ultrices eros in cursus. Donec ac odio tempor orci dapibus ultrices in iaculis. Tellus cras adipiscing enim eu turpis egestas pretium aenean pharetra. Eros in cursus turpis massa. Nascetur ridiculus mus mauris vitae ultricies leo integer malesuada nunc. Velit sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Aenean euismod elementum nisi quis eleifend quam. Magnis dis parturient montes nascetur ridiculus mus. Eu tincidunt tortor aliquam nulla facilisi cras. Tristique senectus et netus et malesuada fames. Urna nec tincidunt praesent semper feugiat nibh sed pulvinar. Vitae ultricies leo integer malesuada nunc vel risus commodo viverra. Ac turpis egestas sed tempus urna et. Amet mauris commodo quis imperdiet massa tincidunt. Urna nunc id cursus metus aliquam eleifend mi. In nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Neque aliquam vestibulum morbi blandit cursus. Pulvinar mattis nunc sed blandit libero volutpat sed. Sed egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Blandit cursus risus at ultrices mi tempus. Turpis massa sed elementum tempus egestas sed sed. Dictum varius duis at consectetur lorem. Commodo ullamcorper a lacus vestibulum sed arcu non. Dolor magna eget est lorem. Tincidunt arcu non sodales neque sodales ut etiam sit amet. Sit amet risus nullam eget felis eget nunc lobortis. Risus in hendrerit gravida rutrum quisque non tellus orci. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Morbi tristique senectus et netus et malesuada. In aliquam sem fringilla ut morbi tincidunt. Ornare aenean euismod elementum nisi quis eleifend quam. Sed id semper risus in hendrerit gravida rutrum quisque. Lorem ipsum dolor sit amet consectetur adipiscing elit. A condimentum vitae sapien pellentesque habitant morbi tristique senectus et. Faucibus purus in massa tempor nec feugiat nisl. Vehicula ipsum a arcu cursus vitae congue. Facilisi cras fermentum odio eu feugiat pretium nibh. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Ultrices dui sapien eget mi proin sed libero enim. Nisi est sit amet facilisis magna etiam tempor. Posuere ac ut consequat semper viverra nam. Dis parturient montes nascetur ridiculus mus mauris vitae. Nec sagittis aliquam malesuada bibendum. Mattis pellentesque id nibh tortor id aliquet lectus. Vitae congue eu consequat ac felis donec et. Cras sed felis eget velit aliquet sagittis id consectetur purus. Pellentesque elit ullamcorper dignissim cras tincidunt. Pellentesque dignissim enim sit amet venenatis urna. A cras semper auctor neque vitae tempus. Amet massa vitae tortor condimentum lacinia quis vel eros donec. Tempor commodo ullamcorper a lacus. Nibh tellus molestie nunc non blandit massa enim nec dui. Viverra orci sagittis eu volutpat odio facilisis mauris sit. Sed augue lacus viverra vitae. Vulputate eu scelerisque felis imperdiet proin fermentum leo vel orci. Tellus rutrum tellus pellentesque eu tincidunt tortor. Cras semper auctor neque vitae tempus quam pellentesque nec. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Tristique magna sit amet purus gravida quis blandit turpis. Viverra ipsum nunc aliquet bibendum. Arcu bibendum at varius vel. Amet mattis vulputate enim nulla. Vulputate enim nulla aliquet porttitor. Volutpat blandit aliquam etiam erat velit scelerisque in dictum. Morbi tristique senectus et netus et malesuada fames ac. Faucibus et molestie ac feugiat sed. Tellus elementum sagittis vitae et leo duis. Id aliquet lectus proin nibh. Ornare arcu dui vivamus arcu. Morbi tincidunt augue interdum velit euismod in pellentesque massa placerat. Quis eleifend quam adipiscing vitae. Tristique senectus et netus et malesuada fames ac turpis. Pharetra convallis posuere morbi leo. Ornare arcu odio ut sem nulla pharetra diam sit. Morbi tristique senectus et netus et. Dictum non consectetur a erat nam at lectus urna. Varius vel pharetra vel turpis. Mi ipsum faucibus vitae aliquet. Tellus in metus vulputate eu scelerisque felis imperdiet proin. In est ante in nibh mauris cursus mattis. Massa ultricies mi quis hendrerit dolor magna eget. Fermentum leo vel orci porta. Elit ut aliquam purus sit amet luctus venenatis lectus. Eget aliquet nibh praesent tristique magna sit amet. Arcu non odio euismod lacinia at quis. Montes nascetur ridiculus mus mauris vitae ultricies. Tempus quam pellentesque nec nam aliquam sem et tortor. Morbi leo urna molestie at elementum eu facilisis sed. In fermentum posuere urna nec tincidunt. Neque aliquam vestibulum morbi blandit cursus risus. Vulputate dignissim suspendisse in est ante in nibh mauris cursus. Lorem ipsum dolor sit amet consectetur adipiscing. Orci eu lobortis elementum nibh tellus molestie nunc non. Enim diam vulputate ut pharetra sit amet aliquam. Convallis convallis tellus id interdum velit laoreet id donec ultrices. Sit amet mattis vulputate enim nulla aliquet porttitor lacus luctus. A lacus vestibulum sed arcu non odio. Ut tortor pretium viverra suspendisse potenti nullam ac tortor. Diam vel quam elementum pulvinar etiam non quam. Viverra justo nec ultrices dui. Eu volutpat odio facilisis mauris sit amet massa. Sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Ac felis donec et odio pellentesque. Nisl vel pretium lectus quam id leo in. Ultricies lacus sed turpis tincidunt id. At urna condimentum mattis pellentesque id nibh tortor id. Sem nulla pharetra diam sit amet nisl suscipit. Neque viverra justo nec ultrices. Arcu cursus euismod quis viverra nibh cras pulvinar. Dolor sit amet consectetur adipiscing elit ut aliquam purus. Id diam vel quam elementum pulvinar etiam non. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Id aliquet lectus proin nibh nisl condimentum id venenatis. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh. Sed faucibus turpis in eu mi bibendum neque egestas congue. Consectetur libero id faucibus nisl tincidunt eget nullam. At volutpat diam ut venenatis tellus in metus vulputate eu. Condimentum lacinia quis vel eros donec ac odio. Sit amet porttitor eget dolor morbi non arcu risus quis. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Metus dictum at tempor commodo ullamcorper. At ultrices mi tempus imperdiet nulla. Est ullamcorper eget nulla facilisi etiam dignissim diam quis. Lobortis elementum nibh tellus molestie nunc non. Placerat in egestas erat imperdiet sed. Placerat in egestas erat imperdiet sed euismod. Lobortis feugiat vivamus at augue eget arcu dictum varius. Ut sem nulla pharetra diam sit amet. Et tortor at risus viverra adipiscing at in. Tempor nec feugiat nisl pretium. Cursus euismod quis viverra nibh. Eget mi proin sed libero enim sed. Aliquam id diam maecenas ultricies. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Gravida quis blandit turpis cursus in hac habitasse platea dictumst. Sed tempus urna et pharetra pharetra massa massa. Dolor purus non enim praesent elementum facilisis leo vel. Pharetra vel turpis nunc eget. Quam pellentesque nec nam aliquam sem et tortor consequat id. Orci eu lobortis elementum nibh tellus molestie nunc non. Porttitor leo a diam sollicitudin tempor id. Tincidunt ornare massa eget egestas purus viverra accumsan in nisl. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor sit. Elit ut aliquam purus sit amet luctus venenatis lectus. Velit egestas dui id ornare arcu odio ut sem nulla. Lacus viverra vitae congue eu consequat ac felis donec. Nulla aliquet porttitor lacus luctus accumsan tortor posuere ac ut. Lorem dolor sed viverra ipsum. Blandit libero volutpat sed cras ornare arcu. Egestas erat imperdiet sed euismod nisi porta lorem mollis. Viverra maecenas accumsan lacus vel. Enim neque volutpat ac tincidunt. Porttitor massa id neque aliquam vestibulum morbi blandit cursus risus. Malesuada bibendum arcu vitae elementum curabitur vitae nunc. Et malesuada fames ac turpis egestas integer. Egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Est placerat in egestas erat imperdiet sed. Non arcu risus quis varius quam quisque. Lorem mollis aliquam ut porttitor leo a. Viverra tellus in hac habitasse platea dictumst vestibulum rhoncus. Fermentum iaculis eu non diam. Erat imperdiet sed euismod nisi porta lorem mollis aliquam. Varius vel pharetra vel turpis nunc eget lorem dolor. Rhoncus mattis rhoncus urna neque viverra. Hac habitasse platea dictumst quisque sagittis purus sit. At quis risus sed vulputate odio ut enim. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros. Rutrum quisque non tellus orci ac auctor. Iaculis eu non diam phasellus vestibulum lorem sed. Ut sem nulla pharetra diam sit amet nisl suscipit. Risus at ultrices mi tempus. Vitae tortor condimentum lacinia quis vel eros donec. Sed tempus urna et pharetra. Posuere sollicitudin aliquam ultrices sagittis orci. Congue quisque egestas diam in arcu. Hac habitasse platea dictumst vestibulum rhoncus est pellentesque elit. Pellentesque habitant morbi tristique senectus et netus et. Id interdum velit laoreet id. Fusce ut placerat orci nulla pellentesque dignissim. Pretium nibh ipsum consequat nisl vel pretium. Etiam erat velit scelerisque in dictum non consectetur a. Turpis in eu mi bibendum neque egestas congue quisque egestas. Pulvinar sapien et ligula ullamcorper malesuada. Ultricies tristique nulla aliquet enim tortor at. Suspendisse interdum consectetur libero id faucibus. Lorem sed risus ultricies tristique nulla aliquet. Tristique senectus et netus et malesuada fames. Eu augue ut lectus arcu bibendum at varius vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies. Aliquet eget sit amet tellus cras adipiscing. Massa placerat duis ultricies lacus sed turpis tincidunt id aliquet. Ornare massa eget egestas purus viverra accumsan in nisl. Justo laoreet sit amet cursus sit amet. In metus vulputate eu scelerisque felis imperdiet proin. At erat pellentesque adipiscing commodo elit at. Ipsum suspendisse ultrices gravida dictum fusce. Lectus sit amet est placerat in egestas erat. Aliquam ultrices sagittis orci a. Sagittis id consectetur purus ut faucibus pulvinar elementum. Ornare arcu odio ut sem nulla pharetra diam. Sit amet purus gravida quis blandit turpis cursus. Duis ultricies lacus sed turpis tincidunt. Malesuada fames ac turpis egestas sed tempus urna et. Viverra ipsum nunc aliquet bibendum enim facilisis. Et pharetra pharetra massa massa ultricies mi quis. Eget duis at tellus at urna condimentum mattis. Euismod in pellentesque massa placerat. Enim nunc faucibus a pellentesque sit amet porttitor. Dolor sed viverra ipsum nunc aliquet. Donec enim diam vulputate ut pharetra sit amet. Feugiat sed lectus vestibulum mattis ullamcorper velit sed. Erat pellentesque adipiscing commodo elit at imperdiet. Nisl purus in mollis nunc sed id semper risus. Tincidunt augue interdum velit euismod in pellentesque massa. Facilisis magna etiam tempor orci. Mauris in aliquam sem fringilla ut. Gravida dictum fusce ut placerat orci. Sed risus ultricies tristique nulla. Odio morbi quis commodo odio. Feugiat in ante metus dictum at tempor commodo ullamcorper. Porta non pulvinar neque laoreet suspendisse interdum. Etiam tempor orci eu lobortis elementum. Fusce ut placerat orci nulla pellentesque dignissim. Ornare lectus sit amet est placerat in egestas erat. Quis vel eros donec ac. Elementum pulvinar etiam non quam lacus. Sit amet tellus cras adipiscing enim eu turpis. Amet tellus cras adipiscing enim eu. Sed faucibus turpis in eu mi bibendum. Lectus proin nibh nisl condimentum id. Sollicitudin nibh sit amet commodo nulla. Sed tempus urna et pharetra pharetra massa massa. Magna eget est lorem ipsum. Elit ullamcorper dignissim cras tincidunt lobortis feugiat vivamus at. Fermentum dui faucibus in ornare quam viverra orci sagittis eu. Dignissim convallis aenean et tortor. Ut faucibus pulvinar elementum integer enim neque. Nibh cras pulvinar mattis nunc sed. Pellentesque sit amet porttitor eget dolor morbi. Mi eget mauris pharetra et ultrices neque ornare aenean euismod. Quis risus sed vulputate odio ut enim blandit volutpat. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. In vitae turpis massa sed elementum tempus egestas sed sed. Urna id volutpat lacus laoreet non. Egestas pretium aenean pharetra magna ac placerat. Amet commodo nulla facilisi nullam vehicula ipsum a arcu cursus. Donec et odio pellentesque diam volutpat commodo sed. Etiam non quam lacus suspendisse. Augue neque gravida in fermentum et sollicitudin ac orci. Eu feugiat pretium nibh ipsum. Nam at lectus urna duis convallis convallis tellus id. Egestas integer eget aliquet nibh. Viverra accumsan in nisl nisi scelerisque eu ultrices vitae auctor. Urna condimentum mattis pellentesque id nibh tortor id. In egestas erat imperdiet sed euismod. Ut sem viverra aliquet eget sit amet tellus. Feugiat pretium nibh ipsum consequat nisl vel pretium. Volutpat odio facilisis mauris sit amet. Mi sit amet mauris commodo quis imperdiet massa tincidunt. Neque volutpat ac tincidunt vitae semper quis lectus nulla at. Nec feugiat in fermentum posuere urna nec. Ut venenatis tellus in metus vulputate eu. Vestibulum rhoncus est pellentesque elit ullamcorper dignissim. Eu scelerisque felis imperdiet proin. Vitae et leo duis ut diam quam nulla. Ut venenatis tellus in metus vulputate eu scelerisque. Tincidunt dui ut ornare lectus sit amet. Adipiscing diam donec adipiscing tristique risus. Turpis nunc eget lorem dolor sed viverra ipsum nunc aliquet. Non sodales neque sodales ut. Massa placerat duis ultricies lacus sed turpis tincidunt. Viverra orci sagittis eu volutpat odio facilisis mauris sit amet. Adipiscing vitae proin sagittis nisl. Vitae aliquet nec ullamcorper sit. Potenti nullam ac tortor vitae purus. Ultricies lacus sed turpis tincidunt id. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Semper eget duis at tellus at urna condimentum mattis pellentesque. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin. Dictum fusce ut placerat orci nulla pellentesque dignissim. Amet luctus venenatis lectus magna fringilla urna. Quam quisque id diam vel quam elementum pulvinar. At tempor commodo ullamcorper a. Magna etiam tempor orci eu lobortis. Suspendisse ultrices gravida dictum fusce. Massa ultricies mi quis hendrerit dolor magna. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Aliquet enim tortor at auctor urna nunc id. Semper feugiat nibh sed pulvinar proin gravida. Porttitor rhoncus dolor purus non enim. Metus aliquam eleifend mi in nulla. Lectus arcu bibendum at varius vel pharetra. Sed vulputate odio ut enim blandit volutpat. Et ligula ullamcorper malesuada proin libero nunc consequat interdum varius. Donec et odio pellentesque diam volutpat commodo. Id ornare arcu odio ut sem nulla pharetra diam sit. Est ullamcorper eget nulla facilisi etiam dignissim diam quis enim. Sagittis vitae et leo duis ut diam quam nulla. Elementum nisi quis eleifend quam. Congue mauris rhoncus aenean vel elit. Adipiscing elit duis tristique sollicitudin nibh sit. Egestas egestas fringilla phasellus faucibus scelerisque. Morbi tincidunt augue interdum velit euismod. Massa sed elementum tempus egestas sed sed. Id leo in vitae turpis massa sed elementum tempus egestas. In pellentesque massa placerat duis ultricies lacus sed turpis. Vitae proin sagittis nisl rhoncus mattis rhoncus. Enim tortor at auctor urna nunc id. In fermentum posuere urna nec tincidunt praesent semper feugiat nibh. Aliquam ut porttitor leo a diam sollicitudin tempor id. Pellentesque elit eget gravida cum sociis natoque. Molestie at elementum eu facilisis sed odio morbi quis. Tristique senectus et netus et malesuada fames ac turpis. Proin libero nunc consequat interdum varius sit amet mattis. Pellentesque id nibh tortor id. Risus sed vulputate odio ut enim blandit. Laoreet suspendisse interdum consectetur libero id faucibus nisl tincidunt eget. Morbi tincidunt augue interdum velit euismod in pellentesque. Pharetra pharetra massa massa ultricies mi quis hendrerit. Nunc aliquet bibendum enim facilisis gravida neque. Feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Risus quis varius quam quisque id diam vel. Et ultrices neque ornare aenean. Aliquet sagittis id consectetur purus ut faucibus pulvinar elementum. Nibh ipsum consequat nisl vel. Mauris rhoncus aenean vel elit scelerisque mauris pellentesque pulvinar. Ornare quam viverra orci sagittis eu volutpat odio facilisis. Euismod nisi porta lorem mollis aliquam. Enim ut tellus elementum sagittis. Rhoncus mattis rhoncus urna neque. Malesuada fames ac turpis egestas. Cursus in hac habitasse platea dictumst quisque sagittis. Sit amet aliquam id diam maecenas ultricies mi eget mauris. Enim sit amet venenatis urna cursus eget nunc. Fermentum odio eu feugiat pretium nibh ipsum consequat. Eu scelerisque felis imperdiet proin. Nullam non nisi est sit amet facilisis magna etiam tempor. In mollis nunc sed id semper risus in hendrerit. Sollicitudin nibh sit amet commodo nulla facilisi nullam. Sit amet nisl purus in mollis nunc sed id. Nam libero justo laoreet sit amet cursus sit amet dictum. Condimentum id venenatis a condimentum vitae sapien pellentesque. Porta nibh venenatis cras sed felis. Lectus nulla at volutpat diam ut venenatis tellus in. Aliquam etiam erat velit scelerisque in dictum non consectetur a. Leo vel fringilla est ullamcorper eget. Sodales ut etiam sit amet nisl purus in mollis nunc. Euismod nisi porta lorem mollis aliquam. Ornare arcu odio ut sem nulla. Sed felis eget velit aliquet sagittis id consectetur. Pellentesque nec nam aliquam sem et tortor consequat id. Enim nec dui nunc mattis enim ut tellus elementum. Nullam non nisi est sit amet facilisis magna. Rutrum quisque non tellus orci ac auctor augue. Nunc vel risus commodo viverra maecenas accumsan lacus. Viverra vitae congue eu consequat. Sollicitudin nibh sit amet commodo nulla. Amet volutpat consequat mauris nunc congue nisi. Maecenas pharetra convallis posuere morbi leo urna molestie at. Mattis vulputate enim nulla aliquet porttitor lacus luctus accumsan tortor. Pulvinar sapien et ligula ullamcorper malesuada proin libero nunc consequat. Adipiscing diam donec adipiscing tristique risus. Elementum curabitur vitae nunc sed velit dignissim sodales ut. Eleifend donec pretium vulputate sapien nec. Commodo quis imperdiet massa tincidunt nunc pulvinar. Proin libero nunc consequat interdum varius sit amet mattis. Facilisis gravida neque convallis a cras semper auctor neque vitae. Quisque egestas diam in arcu cursus. Nunc eget lorem dolor sed viverra ipsum. Mauris sit amet massa vitae tortor condimentum lacinia quis vel. Aliquam sem et tortor consequat id porta nibh venenatis cras. Nunc sed id semper risus in. Enim sed faucibus turpis in eu mi bibendum neque. Molestie nunc non blandit massa enim. Enim praesent elementum facilisis leo vel fringilla est ullamcorper. Semper risus in hendrerit gravida rutrum quisque non tellus orci. Ac turpis egestas maecenas pharetra. In nulla posuere sollicitudin aliquam. Justo nec ultrices dui sapien eget mi proin sed libero. In ornare quam viverra orci sagittis eu. Proin nibh nisl condimentum id venenatis. Morbi enim nunc faucibus a pellentesque sit amet porttitor eget. Quis risus sed vulputate odio ut enim blandit. Risus feugiat in ante metus dictum at tempor commodo. Sodales neque sodales ut etiam. Nunc id cursus metus aliquam. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim enim. Augue ut lectus arcu bibendum at. Quis varius quam quisque id diam vel quam. Egestas congue quisque egestas diam in arcu. Condimentum mattis pellentesque id nibh tortor id aliquet lectus. Enim lobortis scelerisque fermentum dui faucibus in. In tellus integer feugiat scelerisque varius morbi enim nunc. Mattis molestie a iaculis at erat pellentesque. Elit scelerisque mauris pellentesque pulvinar pellentesque habitant morbi tristique. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Nisl rhoncus mattis rhoncus urna neque. Ac auctor augue mauris augue neque gravida in fermentum et. Sodales ut eu sem integer vitae justo eget. Sed egestas egestas fringilla phasellus. Viverra adipiscing at in tellus integer feugiat scelerisque varius. Purus gravida quis blandit turpis. Id porta nibh venenatis cras sed. Mattis vulputate enim nulla aliquet porttitor lacus. Augue eget arcu dictum varius duis at consectetur lorem donec. Nulla at volutpat diam ut venenatis tellus in metus. Aliquam etiam erat velit scelerisque in dictum non consectetur. Turpis cursus in hac habitasse platea dictumst. Consequat mauris nunc congue nisi vitae suscipit tellus. Volutpat maecenas volutpat blandit aliquam etiam. Massa massa ultricies mi quis hendrerit dolor magna eget est. Velit egestas dui id ornare arcu. Non consectetur a erat nam at. Orci sagittis eu volutpat odio facilisis mauris sit amet. Dui id ornare arcu odio. Sed arcu non odio euismod lacinia. Feugiat in ante metus dictum. Gravida arcu ac tortor dignissim convallis. Egestas sed tempus urna et pharetra pharetra massa massa. Nulla facilisi nullam vehicula ipsum a arcu. Ipsum a arcu cursus vitae congue mauris. Porttitor rhoncus dolor purus non. Magna sit amet purus gravida quis blandit. Sapien eget mi proin sed libero enim sed faucibus turpis. Nisl nunc mi ipsum faucibus vitae aliquet nec ullamcorper sit. Pellentesque dignissim enim sit amet venenatis urna cursus eget. Pharetra massa massa ultricies mi quis hendrerit. Sapien nec sagittis aliquam malesuada bibendum. Nunc scelerisque viverra mauris in aliquam sem fringilla ut. Dolor magna eget est lorem ipsum dolor. Amet commodo nulla facilisi nullam. Pellentesque elit ullamcorper dignissim cras. Id porta nibh venenatis cras sed felis eget. Nam at lectus urna duis. Laoreet non curabitur gravida arcu ac tortor dignissim convallis. Nunc lobortis mattis aliquam faucibus purus in massa tempor. Sit amet luctus venenatis lectus magna fringilla. Duis ultricies lacus sed turpis tincidunt id. Sed velit dignissim sodales ut eu. Ut tortor pretium viverra suspendisse potenti nullam. Iaculis at erat pellentesque adipiscing. Ipsum nunc aliquet bibendum enim facilisis gravida neque. Nulla aliquet enim tortor at auctor urna nunc id cursus. Amet cursus sit amet dictum sit amet justo donec enim. Enim nunc faucibus a pellentesque sit amet porttitor eget dolor. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros in. Nulla facilisi etiam dignissim diam quis enim. Ut enim blandit volutpat maecenas volutpat blandit aliquam etiam erat. Imperdiet proin fermentum leo vel orci porta non pulvinar neque. Vel fringilla est ullamcorper eget nulla. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Ipsum nunc aliquet bibendum enim facilisis gravida neque convallis a. Arcu cursus vitae congue mauris rhoncus aenean vel elit. Augue eget arcu dictum varius duis. Tristique et egestas quis ipsum. Quis varius quam quisque id. Varius sit amet mattis vulputate. Mattis molestie a iaculis at erat pellentesque. Libero justo laoreet sit amet cursus. Aliquam id diam maecenas ultricies mi eget mauris pharetra. Ut eu sem integer vitae justo eget. Fames ac turpis egestas sed. Suspendisse in est ante in nibh mauris cursus mattis. Faucibus pulvinar elementum integer enim neque volutpat ac tincidunt vitae. Neque vitae tempus quam pellentesque nec nam aliquam. Lobortis elementum nibh tellus molestie nunc non. Lacus vel facilisis volutpat est velit egestas dui. Justo laoreet sit amet cursus sit amet dictum sit amet. Adipiscing enim eu turpis egestas pretium aenean pharetra magna. Cursus metus aliquam eleifend mi in nulla posuere. Nibh mauris cursus mattis molestie a. Dignissim diam quis enim lobortis scelerisque fermentum. A scelerisque purus semper eget duis at tellus. Lacus sed turpis tincidunt id aliquet risus feugiat in. Non tellus orci ac auctor. Ultrices in iaculis nunc sed augue lacus. Tincidunt tortor aliquam nulla facilisi cras. Nulla facilisi nullam vehicula ipsum a arcu cursus vitae congue. Eget magna fermentum iaculis eu non diam phasellus. Pharetra massa massa ultricies mi quis. Eget mauris pharetra et ultrices neque ornare. Aliquam faucibus purus in massa. Facilisi morbi tempus iaculis urna id volutpat lacus. Accumsan lacus vel facilisis volutpat. Curabitur gravida arcu ac tortor. Quam lacus suspendisse faucibus interdum. Elementum nibh tellus molestie nunc non blandit massa enim. Libero id faucibus nisl tincidunt. Bibendum ut tristique et egestas. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Augue interdum velit euismod in pellentesque. Adipiscing diam donec adipiscing tristique risus nec feugiat. Fringilla ut morbi tincidunt augue interdum velit. Vitae et leo duis ut diam quam nulla porttitor massa. Egestas integer eget aliquet nibh praesent tristique. Posuere sollicitudin aliquam ultrices sagittis orci a. Nisi est sit amet facilisis. Risus quis varius quam quisque id diam. Faucibus turpis in eu mi. Et molestie ac feugiat sed lectus vestibulum. Porttitor lacus luctus accumsan tortor posuere ac. Platea dictumst vestibulum rhoncus est pellentesque. Tortor pretium viverra suspendisse potenti nullam ac tortor. Enim praesent elementum facilisis leo vel fringilla est. Proin libero nunc consequat interdum varius sit amet mattis vulputate. Turpis egestas pretium aenean pharetra magna ac placerat vestibulum lectus. Nulla pharetra diam sit amet nisl suscipit. Mauris nunc congue nisi vitae suscipit tellus mauris a diam. Faucibus in ornare quam viverra orci sagittis eu volutpat. Volutpat consequat mauris nunc congue nisi vitae. Dui nunc mattis enim ut tellus. Adipiscing elit ut aliquam purus sit amet luctus. Tempus egestas sed sed risus. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Massa ultricies mi quis hendrerit dolor magna eget. Pulvinar mattis nunc sed blandit libero volutpat sed cras ornare. Ut eu sem integer vitae justo eget magna fermentum. Ornare quam viverra orci sagittis. Eget dolor morbi non arcu risus quis varius quam. Tincidunt praesent semper feugiat nibh sed pulvinar. Sit amet justo donec enim diam vulputate. Dui faucibus in ornare quam viverra. Tincidunt tortor aliquam nulla facilisi cras fermentum odio eu. Turpis egestas sed tempus urna et. Pretium quam vulputate dignissim suspendisse in est ante in. Morbi quis commodo odio aenean sed adipiscing diam donec. Nunc mattis enim ut tellus elementum sagittis vitae et. Diam vel quam elementum pulvinar etiam non quam. Convallis posuere morbi leo urna molestie at elementum eu. Adipiscing at in tellus integer feugiat scelerisque varius morbi. Quis varius quam quisque id diam vel quam elementum. Dui accumsan sit amet nulla. Adipiscing elit duis tristique sollicitudin nibh sit amet commodo. Viverra ipsum nunc aliquet bibendum enim facilisis. Porta lorem mollis aliquam ut. Velit ut tortor pretium viverra suspendisse potenti. Quis viverra nibh cras pulvinar mattis nunc sed blandit. Pharetra magna ac placerat vestibulum. Mauris ultrices eros in cursus turpis massa. Lacus vestibulum sed arcu non odio euismod lacinia at. Dapibus ultrices in iaculis nunc sed. Cras adipiscing enim eu turpis egestas. Eget arcu dictum varius duis at consectetur. Consequat id porta nibh venenatis cras sed felis eget velit. Integer enim neque volutpat ac tincidunt vitae. Feugiat pretium nibh ipsum consequat nisl vel pretium lectus. Ut morbi tincidunt augue interdum velit euismod. Sed cras ornare arcu dui vivamus arcu felis bibendum ut. Eget felis eget nunc lobortis mattis aliquam faucibus purus in. Luctus venenatis lectus magna fringilla urna porttitor rhoncus dolor. Nisl nunc mi ipsum faucibus vitae. Proin fermentum leo vel orci porta. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. Et leo duis ut diam quam. Eros in cursus turpis massa tincidunt. Volutpat est velit egestas dui id. Commodo odio aenean sed adipiscing diam. Quis blandit turpis cursus in hac habitasse platea dictumst quisque. Magna fringilla urna porttitor rhoncus dolor. Amet consectetur adipiscing elit ut aliquam purus sit amet. Vitae justo eget magna fermentum iaculis eu non diam. Hendrerit dolor magna eget est. Ac placerat vestibulum lectus mauris ultrices eros in cursus turpis. Egestas diam in arcu cursus. At varius vel pharetra vel turpis nunc. Lacus vel facilisis volutpat est velit. Ut ornare lectus sit amet est placerat in egestas. Quam adipiscing vitae proin sagittis nisl rhoncus. Dolor purus non enim praesent. Urna condimentum mattis pellentesque id. Magnis dis parturient montes nascetur ridiculus. Feugiat nisl pretium fusce id. Sed cras ornare arcu dui vivamus. Vitae turpis massa sed elementum tempus egestas sed sed. Ac feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Ac ut consequat semper viverra nam libero. Consectetur lorem donec massa sapien faucibus. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Eu turpis egestas pretium aenean pharetra. Nisl rhoncus mattis rhoncus urna neque viverra justo nec ultrices. Pellentesque sit amet porttitor eget dolor morbi non arcu. Vitae justo eget magna fermentum iaculis. Quis auctor elit sed vulputate mi sit. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Semper auctor neque vitae tempus quam pellentesque nec nam. Rhoncus dolor purus non enim. Sed turpis tincidunt id aliquet risus feugiat. Sit amet justo donec enim diam vulputate ut pharetra sit. Risus pretium quam vulputate dignissim suspendisse in est ante in. Massa sapien faucibus et molestie ac feugiat. Id aliquet risus feugiat in ante metus. Risus ultricies tristique nulla aliquet enim tortor at auctor urna. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper morbi. Lacus sed turpis tincidunt id aliquet risus feugiat in. Risus ultricies tristique nulla aliquet enim tortor. In ornare quam viverra orci sagittis eu volutpat. Netus et malesuada fames ac turpis egestas sed tempus urna. Fames ac turpis egestas maecenas pharetra convallis posuere morbi. Etiam erat velit scelerisque in dictum non. Cursus turpis massa tincidunt dui ut ornare lectus. Tristique sollicitudin nibh sit amet commodo nulla facilisi. Pellentesque pulvinar pellentesque habitant morbi tristique senectus et. Aliquet eget sit amet tellus cras. Nullam ac tortor vitae purus faucibus ornare. Lacus viverra vitae congue eu consequat. Vulputate ut pharetra sit amet. Est ante in nibh mauris cursus mattis molestie a. Ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Et tortor at risus viverra. Sed libero enim sed faucibus turpis in eu. Id cursus metus aliquam eleifend mi in nulla posuere sollicitudin. Risus viverra adipiscing at in. Imperdiet massa tincidunt nunc pulvinar sapien et. Nec feugiat in fermentum posuere urna nec tincidunt. Ultricies mi eget mauris pharetra et. Morbi tristique senectus et netus et malesuada fames ac. At quis risus sed vulputate. Interdum velit laoreet id donec. Sapien pellentesque habitant morbi tristique. Pharetra vel turpis nunc eget lorem dolor sed viverra. In massa tempor nec feugiat nisl. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Mauris augue neque gravida in. Faucibus vitae aliquet nec ullamcorper sit amet risus. Id velit ut tortor pretium viverra suspendisse potenti. Leo integer malesuada nunc vel risus commodo viverra maecenas. Risus quis varius quam quisque id. Aliquam malesuada bibendum arcu vitae elementum curabitur vitae. Vestibulum lectus mauris ultrices eros in cursus turpis. Fermentum posuere urna nec tincidunt. Magna etiam tempor orci eu lobortis elementum nibh tellus molestie. Id ornare arcu odio ut. Facilisi nullam vehicula ipsum a arcu cursus vitae congue. Nulla pellentesque dignissim enim sit amet venenatis urna cursus eget. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Quis ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Sed cras ornare arcu dui vivamus arcu felis. Egestas diam in arcu cursus euismod quis. Tincidunt dui ut ornare lectus. Morbi tristique senectus et netus et. Ornare arcu dui vivamus arcu felis bibendum ut tristique. Habitant morbi tristique senectus et netus et malesuada fames ac. Ut tristique et egestas quis. Mollis aliquam ut porttitor leo. Venenatis tellus in metus vulputate eu scelerisque felis imperdiet proin. Sagittis eu volutpat odio facilisis mauris sit amet massa. Eu facilisis sed odio morbi. Nunc consequat interdum varius sit amet mattis. Velit dignissim sodales ut eu. Pellentesque eu tincidunt tortor aliquam. Porta lorem mollis aliquam ut porttitor. Rhoncus urna neque viverra justo nec ultrices. Viverra suspendisse potenti nullam ac tortor vitae purus. Fermentum posuere urna nec tincidunt praesent semper feugiat nibh sed. Purus sit amet luctus venenatis lectus magna fringilla urna porttitor. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Nisl nisi scelerisque eu ultrices vitae auctor. In vitae turpis massa sed elementum tempus egestas. Cursus sit amet dictum sit amet justo donec enim. Vitae congue eu consequat ac felis donec et. Augue interdum velit euismod in pellentesque massa placerat. Enim ut sem viverra aliquet eget sit amet. Velit scelerisque in dictum non consectetur a erat. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nunc faucibus a pellentesque sit amet porttitor eget. Tellus integer feugiat scelerisque varius morbi. Lorem sed risus ultricies tristique nulla aliquet enim tortor at. Eget nulla facilisi etiam dignissim diam quis enim lobortis scelerisque. Adipiscing elit duis tristique sollicitudin. Adipiscing elit pellentesque habitant morbi tristique. Ac tincidunt vitae semper quis lectus nulla at. Maecenas sed enim ut sem viverra. Erat pellentesque adipiscing commodo elit at imperdiet. Dolor morbi non arcu risus quis varius quam quisque. Fringilla urna porttitor rhoncus dolor purus non enim praesent. Tellus integer feugiat scelerisque varius morbi enim nunc faucibus a. Felis eget nunc lobortis mattis aliquam faucibus purus in. Fringilla phasellus faucibus scelerisque eleifend. Pulvinar etiam non quam lacus suspendisse faucibus interdum posuere. Risus ultricies tristique nulla aliquet. Lectus sit amet est placerat. Ac ut consequat semper viverra nam libero justo. Dapibus ultrices in iaculis nunc sed augue. Mattis ullamcorper velit sed ullamcorper. Eget nullam non nisi est. Vitae elementum curabitur vitae nunc sed velit. Sit amet commodo nulla facilisi nullam vehicula ipsum a arcu. Tempor nec feugiat nisl pretium fusce id velit ut. Nulla pellentesque dignissim enim sit amet venenatis. Sed tempus urna et pharetra pharetra. Congue quisque egestas diam in. Convallis posuere morbi leo urna. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Sagittis nisl rhoncus mattis rhoncus urna neque viverra justo. Scelerisque felis imperdiet proin fermentum leo vel. Ut placerat orci nulla pellentesque dignissim enim sit amet. In cursus turpis massa tincidunt dui. Rutrum quisque non tellus orci ac auctor augue mauris augue. Cursus vitae congue mauris rhoncus aenean vel elit scelerisque mauris. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Habitant morbi tristique senectus et netus et. Ridiculus mus mauris vitae ultricies leo. Vitae semper quis lectus nulla at volutpat diam. Purus faucibus ornare suspendisse sed nisi. Enim lobortis scelerisque fermentum dui faucibus in ornare quam. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Varius duis at consectetur lorem donec. Pulvinar pellentesque habitant morbi tristique senectus et netus et. A iaculis at erat pellentesque adipiscing commodo elit at imperdiet. Mi ipsum faucibus vitae aliquet nec. Libero volutpat sed cras ornare arcu dui vivamus arcu. Natoque penatibus et magnis dis parturient montes nascetur ridiculus. Maecenas volutpat blandit aliquam etiam erat velit scelerisque. Cras adipiscing enim eu turpis. Nec tincidunt praesent semper feugiat nibh sed pulvinar. Justo laoreet sit amet cursus sit amet dictum sit. Velit scelerisque in dictum non consectetur a erat nam. Turpis tincidunt id aliquet risus feugiat in ante. Aliquet risus feugiat in ante metus dictum. Hac habitasse platea dictumst quisque sagittis purus sit. Et pharetra pharetra massa massa ultricies. Sit amet nisl suscipit adipiscing bibendum est ultricies integer. Venenatis urna cursus eget nunc scelerisque viverra mauris in. Integer quis auctor elit sed. In est ante in nibh mauris cursus mattis molestie. Scelerisque in dictum non consectetur a erat nam at. Lectus sit amet est placerat in. Sit amet cursus sit amet. Nibh nisl condimentum id venenatis a condimentum. Purus ut faucibus pulvinar elementum integer enim. Pharetra sit amet aliquam id diam maecenas. Id cursus metus aliquam eleifend mi in nulla posuere. Lobortis mattis aliquam faucibus purus in massa tempor nec. Urna neque viverra justo nec ultrices dui sapien eget. Enim ut sem viverra aliquet eget sit amet. In eu mi bibendum neque egestas congue quisque egestas. Enim neque volutpat ac tincidunt. Orci ac auctor augue mauris augue neque gravida in fermentum. Velit aliquet sagittis id consectetur. Enim ut sem viverra aliquet eget sit amet tellus. Semper auctor neque vitae tempus quam pellentesque nec. Non blandit massa enim nec dui nunc. Morbi blandit cursus risus at ultrices mi tempus imperdiet nulla. Arcu non odio euismod lacinia at quis risus. Dictum varius duis at consectetur lorem donec massa. Blandit massa enim nec dui. Nibh ipsum consequat nisl vel. Turpis in eu mi bibendum neque. Ut tristique et egestas quis. Ac odio tempor orci dapibus. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim. Integer feugiat scelerisque varius morbi enim. Libero volutpat sed cras ornare arcu dui. Odio aenean sed adipiscing diam. Et egestas quis ipsum suspendisse ultrices. Aliquet lectus proin nibh nisl condimentum. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh sit. Blandit massa enim nec dui. Tellus molestie nunc non blandit massa enim nec. Tortor vitae purus faucibus ornare suspendisse sed nisi. Nascetur ridiculus mus mauris vitae ultricies leo. Elementum facilisis leo vel fringilla est ullamcorper eget nulla. Diam maecenas ultricies mi eget. Duis tristique sollicitudin nibh sit amet commodo nulla. Tempus iaculis urna id volutpat lacus laoreet non curabitur gravida. Dictumst quisque sagittis purus sit amet. Viverra mauris in aliquam sem. Quis risus sed vulputate odio ut enim blandit volutpat maecenas. Condimentum mattis pellentesque id nibh tortor id. Non sodales neque sodales ut etiam sit amet. Ipsum consequat nisl vel pretium. Cursus in hac habitasse platea dictumst quisque sagittis purus sit. Fringilla est ullamcorper eget nulla facilisi etiam. Tellus elementum sagittis vitae et leo duis ut diam quam. Nisl vel pretium lectus quam id leo in. ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4224367 tomlkit-0.12.4/tests/toml-spec-tests/values/qa-scalar-literal-multiline-40kb.toml0000644000000000000000000011612114567257576024676 0ustar00long = """Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor. Amet consectetur adipiscing elit ut. Nulla facilisi etiam dignissim diam quis enim lobortis. Curabitur vitae nunc sed velit dignissim sodales ut eu. Fames ac turpis egestas sed tempus urna et. Facilisi cras fermentum odio eu feugiat pretium. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Est lorem ipsum dolor sit amet consectetur adipiscing elit. Vel quam elementum pulvinar etiam non quam lacus. Pharetra et ultrices neque ornare aenean euismod. Nisl nisi scelerisque eu ultrices. Eget dolor morbi non arcu risus. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Faucibus nisl tincidunt eget nullam. Nisl pretium fusce id velit ut tortor pretium viverra suspendisse. Mauris ultrices eros in cursus. Donec ac odio tempor orci dapibus ultrices in iaculis. Tellus cras adipiscing enim eu turpis egestas pretium aenean pharetra. Eros in cursus turpis massa. Nascetur ridiculus mus mauris vitae ultricies leo integer malesuada nunc. Velit sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Aenean euismod elementum nisi quis eleifend quam. Magnis dis parturient montes nascetur ridiculus mus. Eu tincidunt tortor aliquam nulla facilisi cras. Tristique senectus et netus et malesuada fames. Urna nec tincidunt praesent semper feugiat nibh sed pulvinar. Vitae ultricies leo integer malesuada nunc vel risus commodo viverra. Ac turpis egestas sed tempus urna et. Amet mauris commodo quis imperdiet massa tincidunt. Urna nunc id cursus metus aliquam eleifend mi. In nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Neque aliquam vestibulum morbi blandit cursus. Pulvinar mattis nunc sed blandit libero volutpat sed. Sed egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Blandit cursus risus at ultrices mi tempus. Turpis massa sed elementum tempus egestas sed sed. Dictum varius duis at consectetur lorem. Commodo ullamcorper a lacus vestibulum sed arcu non. Dolor magna eget est lorem. Tincidunt arcu non sodales neque sodales ut etiam sit amet. Sit amet risus nullam eget felis eget nunc lobortis. Risus in hendrerit gravida rutrum quisque non tellus orci. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Morbi tristique senectus et netus et malesuada. In aliquam sem fringilla ut morbi tincidunt. Ornare aenean euismod elementum nisi quis eleifend quam. Sed id semper risus in hendrerit gravida rutrum quisque. Lorem ipsum dolor sit amet consectetur adipiscing elit. A condimentum vitae sapien pellentesque habitant morbi tristique senectus et. Faucibus purus in massa tempor nec feugiat nisl. Vehicula ipsum a arcu cursus vitae congue. Facilisi cras fermentum odio eu feugiat pretium nibh. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Ultrices dui sapien eget mi proin sed libero enim. Nisi est sit amet facilisis magna etiam tempor. Posuere ac ut consequat semper viverra nam. Dis parturient montes nascetur ridiculus mus mauris vitae. Nec sagittis aliquam malesuada bibendum. Mattis pellentesque id nibh tortor id aliquet lectus. Vitae congue eu consequat ac felis donec et. Cras sed felis eget velit aliquet sagittis id consectetur purus. Pellentesque elit ullamcorper dignissim cras tincidunt. Pellentesque dignissim enim sit amet venenatis urna. A cras semper auctor neque vitae tempus. Amet massa vitae tortor condimentum lacinia quis vel eros donec. Tempor commodo ullamcorper a lacus. Nibh tellus molestie nunc non blandit massa enim nec dui. Viverra orci sagittis eu volutpat odio facilisis mauris sit. Sed augue lacus viverra vitae. Vulputate eu scelerisque felis imperdiet proin fermentum leo vel orci. Tellus rutrum tellus pellentesque eu tincidunt tortor. Cras semper auctor neque vitae tempus quam pellentesque nec. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Tristique magna sit amet purus gravida quis blandit turpis. Viverra ipsum nunc aliquet bibendum. Arcu bibendum at varius vel. Amet mattis vulputate enim nulla. Vulputate enim nulla aliquet porttitor. Volutpat blandit aliquam etiam erat velit scelerisque in dictum. Morbi tristique senectus et netus et malesuada fames ac. Faucibus et molestie ac feugiat sed. Tellus elementum sagittis vitae et leo duis. Id aliquet lectus proin nibh. Ornare arcu dui vivamus arcu. Morbi tincidunt augue interdum velit euismod in pellentesque massa placerat. Quis eleifend quam adipiscing vitae. Tristique senectus et netus et malesuada fames ac turpis. Pharetra convallis posuere morbi leo. Ornare arcu odio ut sem nulla pharetra diam sit. Morbi tristique senectus et netus et. Dictum non consectetur a erat nam at lectus urna. Varius vel pharetra vel turpis. Mi ipsum faucibus vitae aliquet. Tellus in metus vulputate eu scelerisque felis imperdiet proin. In est ante in nibh mauris cursus mattis. Massa ultricies mi quis hendrerit dolor magna eget. Fermentum leo vel orci porta. Elit ut aliquam purus sit amet luctus venenatis lectus. Eget aliquet nibh praesent tristique magna sit amet. Arcu non odio euismod lacinia at quis. Montes nascetur ridiculus mus mauris vitae ultricies. Tempus quam pellentesque nec nam aliquam sem et tortor. Morbi leo urna molestie at elementum eu facilisis sed. In fermentum posuere urna nec tincidunt. Neque aliquam vestibulum morbi blandit cursus risus. Vulputate dignissim suspendisse in est ante in nibh mauris cursus. Lorem ipsum dolor sit amet consectetur adipiscing. Orci eu lobortis elementum nibh tellus molestie nunc non. Enim diam vulputate ut pharetra sit amet aliquam. Convallis convallis tellus id interdum velit laoreet id donec ultrices. Sit amet mattis vulputate enim nulla aliquet porttitor lacus luctus. A lacus vestibulum sed arcu non odio. Ut tortor pretium viverra suspendisse potenti nullam ac tortor. Diam vel quam elementum pulvinar etiam non quam. Viverra justo nec ultrices dui. Eu volutpat odio facilisis mauris sit amet massa. Sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Ac felis donec et odio pellentesque. Nisl vel pretium lectus quam id leo in. Ultricies lacus sed turpis tincidunt id. At urna condimentum mattis pellentesque id nibh tortor id. Sem nulla pharetra diam sit amet nisl suscipit. Neque viverra justo nec ultrices. Arcu cursus euismod quis viverra nibh cras pulvinar. Dolor sit amet consectetur adipiscing elit ut aliquam purus. Id diam vel quam elementum pulvinar etiam non. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Id aliquet lectus proin nibh nisl condimentum id venenatis. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh. Sed faucibus turpis in eu mi bibendum neque egestas congue. Consectetur libero id faucibus nisl tincidunt eget nullam. At volutpat diam ut venenatis tellus in metus vulputate eu. Condimentum lacinia quis vel eros donec ac odio. Sit amet porttitor eget dolor morbi non arcu risus quis. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Metus dictum at tempor commodo ullamcorper. At ultrices mi tempus imperdiet nulla. Est ullamcorper eget nulla facilisi etiam dignissim diam quis. Lobortis elementum nibh tellus molestie nunc non. Placerat in egestas erat imperdiet sed. Placerat in egestas erat imperdiet sed euismod. Lobortis feugiat vivamus at augue eget arcu dictum varius. Ut sem nulla pharetra diam sit amet. Et tortor at risus viverra adipiscing at in. Tempor nec feugiat nisl pretium. Cursus euismod quis viverra nibh. Eget mi proin sed libero enim sed. Aliquam id diam maecenas ultricies. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Gravida quis blandit turpis cursus in hac habitasse platea dictumst. Sed tempus urna et pharetra pharetra massa massa. Dolor purus non enim praesent elementum facilisis leo vel. Pharetra vel turpis nunc eget. Quam pellentesque nec nam aliquam sem et tortor consequat id. Orci eu lobortis elementum nibh tellus molestie nunc non. Porttitor leo a diam sollicitudin tempor id. Tincidunt ornare massa eget egestas purus viverra accumsan in nisl. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor sit. Elit ut aliquam purus sit amet luctus venenatis lectus. Velit egestas dui id ornare arcu odio ut sem nulla. Lacus viverra vitae congue eu consequat ac felis donec. Nulla aliquet porttitor lacus luctus accumsan tortor posuere ac ut. Lorem dolor sed viverra ipsum. Blandit libero volutpat sed cras ornare arcu. Egestas erat imperdiet sed euismod nisi porta lorem mollis. Viverra maecenas accumsan lacus vel. Enim neque volutpat ac tincidunt. Porttitor massa id neque aliquam vestibulum morbi blandit cursus risus. Malesuada bibendum arcu vitae elementum curabitur vitae nunc. Et malesuada fames ac turpis egestas integer. Egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Est placerat in egestas erat imperdiet sed. Non arcu risus quis varius quam quisque. Lorem mollis aliquam ut porttitor leo a. Viverra tellus in hac habitasse platea dictumst vestibulum rhoncus. Fermentum iaculis eu non diam. Erat imperdiet sed euismod nisi porta lorem mollis aliquam. Varius vel pharetra vel turpis nunc eget lorem dolor. Rhoncus mattis rhoncus urna neque viverra. Hac habitasse platea dictumst quisque sagittis purus sit. At quis risus sed vulputate odio ut enim. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros. Rutrum quisque non tellus orci ac auctor. Iaculis eu non diam phasellus vestibulum lorem sed. Ut sem nulla pharetra diam sit amet nisl suscipit. Risus at ultrices mi tempus. Vitae tortor condimentum lacinia quis vel eros donec. Sed tempus urna et pharetra. Posuere sollicitudin aliquam ultrices sagittis orci. Congue quisque egestas diam in arcu. Hac habitasse platea dictumst vestibulum rhoncus est pellentesque elit. Pellentesque habitant morbi tristique senectus et netus et. Id interdum velit laoreet id. Fusce ut placerat orci nulla pellentesque dignissim. Pretium nibh ipsum consequat nisl vel pretium. Etiam erat velit scelerisque in dictum non consectetur a. Turpis in eu mi bibendum neque egestas congue quisque egestas. Pulvinar sapien et ligula ullamcorper malesuada. Ultricies tristique nulla aliquet enim tortor at. Suspendisse interdum consectetur libero id faucibus. Lorem sed risus ultricies tristique nulla aliquet. Tristique senectus et netus et malesuada fames. Eu augue ut lectus arcu bibendum at varius vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies. Aliquet eget sit amet tellus cras adipiscing. Massa placerat duis ultricies lacus sed turpis tincidunt id aliquet. Ornare massa eget egestas purus viverra accumsan in nisl. Justo laoreet sit amet cursus sit amet. In metus vulputate eu scelerisque felis imperdiet proin. At erat pellentesque adipiscing commodo elit at. Ipsum suspendisse ultrices gravida dictum fusce. Lectus sit amet est placerat in egestas erat. Aliquam ultrices sagittis orci a. Sagittis id consectetur purus ut faucibus pulvinar elementum. Ornare arcu odio ut sem nulla pharetra diam. Sit amet purus gravida quis blandit turpis cursus. Duis ultricies lacus sed turpis tincidunt. Malesuada fames ac turpis egestas sed tempus urna et. Viverra ipsum nunc aliquet bibendum enim facilisis. Et pharetra pharetra massa massa ultricies mi quis. Eget duis at tellus at urna condimentum mattis. Euismod in pellentesque massa placerat. Enim nunc faucibus a pellentesque sit amet porttitor. Dolor sed viverra ipsum nunc aliquet. Donec enim diam vulputate ut pharetra sit amet. Feugiat sed lectus vestibulum mattis ullamcorper velit sed. Erat pellentesque adipiscing commodo elit at imperdiet. Nisl purus in mollis nunc sed id semper risus. Tincidunt augue interdum velit euismod in pellentesque massa. Facilisis magna etiam tempor orci. Mauris in aliquam sem fringilla ut. Gravida dictum fusce ut placerat orci. Sed risus ultricies tristique nulla. Odio morbi quis commodo odio. Feugiat in ante metus dictum at tempor commodo ullamcorper. Porta non pulvinar neque laoreet suspendisse interdum. Etiam tempor orci eu lobortis elementum. Fusce ut placerat orci nulla pellentesque dignissim. Ornare lectus sit amet est placerat in egestas erat. Quis vel eros donec ac. Elementum pulvinar etiam non quam lacus. Sit amet tellus cras adipiscing enim eu turpis. Amet tellus cras adipiscing enim eu. Sed faucibus turpis in eu mi bibendum. Lectus proin nibh nisl condimentum id. Sollicitudin nibh sit amet commodo nulla. Sed tempus urna et pharetra pharetra massa massa. Magna eget est lorem ipsum. Elit ullamcorper dignissim cras tincidunt lobortis feugiat vivamus at. Fermentum dui faucibus in ornare quam viverra orci sagittis eu. Dignissim convallis aenean et tortor. Ut faucibus pulvinar elementum integer enim neque. Nibh cras pulvinar mattis nunc sed. Pellentesque sit amet porttitor eget dolor morbi. Mi eget mauris pharetra et ultrices neque ornare aenean euismod. Quis risus sed vulputate odio ut enim blandit volutpat. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. In vitae turpis massa sed elementum tempus egestas sed sed. Urna id volutpat lacus laoreet non. Egestas pretium aenean pharetra magna ac placerat. Amet commodo nulla facilisi nullam vehicula ipsum a arcu cursus. Donec et odio pellentesque diam volutpat commodo sed. Etiam non quam lacus suspendisse. Augue neque gravida in fermentum et sollicitudin ac orci. Eu feugiat pretium nibh ipsum. Nam at lectus urna duis convallis convallis tellus id. Egestas integer eget aliquet nibh. Viverra accumsan in nisl nisi scelerisque eu ultrices vitae auctor. Urna condimentum mattis pellentesque id nibh tortor id. In egestas erat imperdiet sed euismod. Ut sem viverra aliquet eget sit amet tellus. Feugiat pretium nibh ipsum consequat nisl vel pretium. Volutpat odio facilisis mauris sit amet. Mi sit amet mauris commodo quis imperdiet massa tincidunt. Neque volutpat ac tincidunt vitae semper quis lectus nulla at. Nec feugiat in fermentum posuere urna nec. Ut venenatis tellus in metus vulputate eu. Vestibulum rhoncus est pellentesque elit ullamcorper dignissim. Eu scelerisque felis imperdiet proin. Vitae et leo duis ut diam quam nulla. Ut venenatis tellus in metus vulputate eu scelerisque. Tincidunt dui ut ornare lectus sit amet. Adipiscing diam donec adipiscing tristique risus. Turpis nunc eget lorem dolor sed viverra ipsum nunc aliquet. Non sodales neque sodales ut. Massa placerat duis ultricies lacus sed turpis tincidunt. Viverra orci sagittis eu volutpat odio facilisis mauris sit amet. Adipiscing vitae proin sagittis nisl. Vitae aliquet nec ullamcorper sit. Potenti nullam ac tortor vitae purus. Ultricies lacus sed turpis tincidunt id. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Semper eget duis at tellus at urna condimentum mattis pellentesque. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin. Dictum fusce ut placerat orci nulla pellentesque dignissim. Amet luctus venenatis lectus magna fringilla urna. Quam quisque id diam vel quam elementum pulvinar. At tempor commodo ullamcorper a. Magna etiam tempor orci eu lobortis. Suspendisse ultrices gravida dictum fusce. Massa ultricies mi quis hendrerit dolor magna. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Aliquet enim tortor at auctor urna nunc id. Semper feugiat nibh sed pulvinar proin gravida. Porttitor rhoncus dolor purus non enim. Metus aliquam eleifend mi in nulla. Lectus arcu bibendum at varius vel pharetra. Sed vulputate odio ut enim blandit volutpat. Et ligula ullamcorper malesuada proin libero nunc consequat interdum varius. Donec et odio pellentesque diam volutpat commodo. Id ornare arcu odio ut sem nulla pharetra diam sit. Est ullamcorper eget nulla facilisi etiam dignissim diam quis enim. Sagittis vitae et leo duis ut diam quam nulla. Elementum nisi quis eleifend quam. Congue mauris rhoncus aenean vel elit. Adipiscing elit duis tristique sollicitudin nibh sit. Egestas egestas fringilla phasellus faucibus scelerisque. Morbi tincidunt augue interdum velit euismod. Massa sed elementum tempus egestas sed sed. Id leo in vitae turpis massa sed elementum tempus egestas. In pellentesque massa placerat duis ultricies lacus sed turpis. Vitae proin sagittis nisl rhoncus mattis rhoncus. Enim tortor at auctor urna nunc id. In fermentum posuere urna nec tincidunt praesent semper feugiat nibh. Aliquam ut porttitor leo a diam sollicitudin tempor id. Pellentesque elit eget gravida cum sociis natoque. Molestie at elementum eu facilisis sed odio morbi quis. Tristique senectus et netus et malesuada fames ac turpis. Proin libero nunc consequat interdum varius sit amet mattis. Pellentesque id nibh tortor id. Risus sed vulputate odio ut enim blandit. Laoreet suspendisse interdum consectetur libero id faucibus nisl tincidunt eget. Morbi tincidunt augue interdum velit euismod in pellentesque. Pharetra pharetra massa massa ultricies mi quis hendrerit. Nunc aliquet bibendum enim facilisis gravida neque. Feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Risus quis varius quam quisque id diam vel. Et ultrices neque ornare aenean. Aliquet sagittis id consectetur purus ut faucibus pulvinar elementum. Nibh ipsum consequat nisl vel. Mauris rhoncus aenean vel elit scelerisque mauris pellentesque pulvinar. Ornare quam viverra orci sagittis eu volutpat odio facilisis. Euismod nisi porta lorem mollis aliquam. Enim ut tellus elementum sagittis. Rhoncus mattis rhoncus urna neque. Malesuada fames ac turpis egestas. Cursus in hac habitasse platea dictumst quisque sagittis. Sit amet aliquam id diam maecenas ultricies mi eget mauris. Enim sit amet venenatis urna cursus eget nunc. Fermentum odio eu feugiat pretium nibh ipsum consequat. Eu scelerisque felis imperdiet proin. Nullam non nisi est sit amet facilisis magna etiam tempor. In mollis nunc sed id semper risus in hendrerit. Sollicitudin nibh sit amet commodo nulla facilisi nullam. Sit amet nisl purus in mollis nunc sed id. Nam libero justo laoreet sit amet cursus sit amet dictum. Condimentum id venenatis a condimentum vitae sapien pellentesque. Porta nibh venenatis cras sed felis. Lectus nulla at volutpat diam ut venenatis tellus in. Aliquam etiam erat velit scelerisque in dictum non consectetur a. Leo vel fringilla est ullamcorper eget. Sodales ut etiam sit amet nisl purus in mollis nunc. Euismod nisi porta lorem mollis aliquam. Ornare arcu odio ut sem nulla. Sed felis eget velit aliquet sagittis id consectetur. Pellentesque nec nam aliquam sem et tortor consequat id. Enim nec dui nunc mattis enim ut tellus elementum. Nullam non nisi est sit amet facilisis magna. Rutrum quisque non tellus orci ac auctor augue. Nunc vel risus commodo viverra maecenas accumsan lacus. Viverra vitae congue eu consequat. Sollicitudin nibh sit amet commodo nulla. Amet volutpat consequat mauris nunc congue nisi. Maecenas pharetra convallis posuere morbi leo urna molestie at. Mattis vulputate enim nulla aliquet porttitor lacus luctus accumsan tortor. Pulvinar sapien et ligula ullamcorper malesuada proin libero nunc consequat. Adipiscing diam donec adipiscing tristique risus. Elementum curabitur vitae nunc sed velit dignissim sodales ut. Eleifend donec pretium vulputate sapien nec. Commodo quis imperdiet massa tincidunt nunc pulvinar. Proin libero nunc consequat interdum varius sit amet mattis. Facilisis gravida neque convallis a cras semper auctor neque vitae. Quisque egestas diam in arcu cursus. Nunc eget lorem dolor sed viverra ipsum. Mauris sit amet massa vitae tortor condimentum lacinia quis vel. Aliquam sem et tortor consequat id porta nibh venenatis cras. Nunc sed id semper risus in. Enim sed faucibus turpis in eu mi bibendum neque. Molestie nunc non blandit massa enim. Enim praesent elementum facilisis leo vel fringilla est ullamcorper. Semper risus in hendrerit gravida rutrum quisque non tellus orci. Ac turpis egestas maecenas pharetra. In nulla posuere sollicitudin aliquam. Justo nec ultrices dui sapien eget mi proin sed libero. In ornare quam viverra orci sagittis eu. Proin nibh nisl condimentum id venenatis. Morbi enim nunc faucibus a pellentesque sit amet porttitor eget. Quis risus sed vulputate odio ut enim blandit. Risus feugiat in ante metus dictum at tempor commodo. Sodales neque sodales ut etiam. Nunc id cursus metus aliquam. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim enim. Augue ut lectus arcu bibendum at. Quis varius quam quisque id diam vel quam. Egestas congue quisque egestas diam in arcu. Condimentum mattis pellentesque id nibh tortor id aliquet lectus. Enim lobortis scelerisque fermentum dui faucibus in. In tellus integer feugiat scelerisque varius morbi enim nunc. Mattis molestie a iaculis at erat pellentesque. Elit scelerisque mauris pellentesque pulvinar pellentesque habitant morbi tristique. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Nisl rhoncus mattis rhoncus urna neque. Ac auctor augue mauris augue neque gravida in fermentum et. Sodales ut eu sem integer vitae justo eget. Sed egestas egestas fringilla phasellus. Viverra adipiscing at in tellus integer feugiat scelerisque varius. Purus gravida quis blandit turpis. Id porta nibh venenatis cras sed. Mattis vulputate enim nulla aliquet porttitor lacus. Augue eget arcu dictum varius duis at consectetur lorem donec. Nulla at volutpat diam ut venenatis tellus in metus. Aliquam etiam erat velit scelerisque in dictum non consectetur. Turpis cursus in hac habitasse platea dictumst. Consequat mauris nunc congue nisi vitae suscipit tellus. Volutpat maecenas volutpat blandit aliquam etiam. Massa massa ultricies mi quis hendrerit dolor magna eget est. Velit egestas dui id ornare arcu. Non consectetur a erat nam at. Orci sagittis eu volutpat odio facilisis mauris sit amet. Dui id ornare arcu odio. Sed arcu non odio euismod lacinia. Feugiat in ante metus dictum. Gravida arcu ac tortor dignissim convallis. Egestas sed tempus urna et pharetra pharetra massa massa. Nulla facilisi nullam vehicula ipsum a arcu. Ipsum a arcu cursus vitae congue mauris. Porttitor rhoncus dolor purus non. Magna sit amet purus gravida quis blandit. Sapien eget mi proin sed libero enim sed faucibus turpis. Nisl nunc mi ipsum faucibus vitae aliquet nec ullamcorper sit. Pellentesque dignissim enim sit amet venenatis urna cursus eget. Pharetra massa massa ultricies mi quis hendrerit. Sapien nec sagittis aliquam malesuada bibendum. Nunc scelerisque viverra mauris in aliquam sem fringilla ut. Dolor magna eget est lorem ipsum dolor. Amet commodo nulla facilisi nullam. Pellentesque elit ullamcorper dignissim cras. Id porta nibh venenatis cras sed felis eget. Nam at lectus urna duis. Laoreet non curabitur gravida arcu ac tortor dignissim convallis. Nunc lobortis mattis aliquam faucibus purus in massa tempor. Sit amet luctus venenatis lectus magna fringilla. Duis ultricies lacus sed turpis tincidunt id. Sed velit dignissim sodales ut eu. Ut tortor pretium viverra suspendisse potenti nullam. Iaculis at erat pellentesque adipiscing. Ipsum nunc aliquet bibendum enim facilisis gravida neque. Nulla aliquet enim tortor at auctor urna nunc id cursus. Amet cursus sit amet dictum sit amet justo donec enim. Enim nunc faucibus a pellentesque sit amet porttitor eget dolor. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros in. Nulla facilisi etiam dignissim diam quis enim. Ut enim blandit volutpat maecenas volutpat blandit aliquam etiam erat. Imperdiet proin fermentum leo vel orci porta non pulvinar neque. Vel fringilla est ullamcorper eget nulla. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Ipsum nunc aliquet bibendum enim facilisis gravida neque convallis a. Arcu cursus vitae congue mauris rhoncus aenean vel elit. Augue eget arcu dictum varius duis. Tristique et egestas quis ipsum. Quis varius quam quisque id. Varius sit amet mattis vulputate. Mattis molestie a iaculis at erat pellentesque. Libero justo laoreet sit amet cursus. Aliquam id diam maecenas ultricies mi eget mauris pharetra. Ut eu sem integer vitae justo eget. Fames ac turpis egestas sed. Suspendisse in est ante in nibh mauris cursus mattis. Faucibus pulvinar elementum integer enim neque volutpat ac tincidunt vitae. Neque vitae tempus quam pellentesque nec nam aliquam. Lobortis elementum nibh tellus molestie nunc non. Lacus vel facilisis volutpat est velit egestas dui. Justo laoreet sit amet cursus sit amet dictum sit amet. Adipiscing enim eu turpis egestas pretium aenean pharetra magna. Cursus metus aliquam eleifend mi in nulla posuere. Nibh mauris cursus mattis molestie a. Dignissim diam quis enim lobortis scelerisque fermentum. A scelerisque purus semper eget duis at tellus. Lacus sed turpis tincidunt id aliquet risus feugiat in. Non tellus orci ac auctor. Ultrices in iaculis nunc sed augue lacus. Tincidunt tortor aliquam nulla facilisi cras. Nulla facilisi nullam vehicula ipsum a arcu cursus vitae congue. Eget magna fermentum iaculis eu non diam phasellus. Pharetra massa massa ultricies mi quis. Eget mauris pharetra et ultrices neque ornare. Aliquam faucibus purus in massa. Facilisi morbi tempus iaculis urna id volutpat lacus. Accumsan lacus vel facilisis volutpat. Curabitur gravida arcu ac tortor. Quam lacus suspendisse faucibus interdum. Elementum nibh tellus molestie nunc non blandit massa enim. Libero id faucibus nisl tincidunt. Bibendum ut tristique et egestas. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Augue interdum velit euismod in pellentesque. Adipiscing diam donec adipiscing tristique risus nec feugiat. Fringilla ut morbi tincidunt augue interdum velit. Vitae et leo duis ut diam quam nulla porttitor massa. Egestas integer eget aliquet nibh praesent tristique. Posuere sollicitudin aliquam ultrices sagittis orci a. Nisi est sit amet facilisis. Risus quis varius quam quisque id diam. Faucibus turpis in eu mi. Et molestie ac feugiat sed lectus vestibulum. Porttitor lacus luctus accumsan tortor posuere ac. Platea dictumst vestibulum rhoncus est pellentesque. Tortor pretium viverra suspendisse potenti nullam ac tortor. Enim praesent elementum facilisis leo vel fringilla est. Proin libero nunc consequat interdum varius sit amet mattis vulputate. Turpis egestas pretium aenean pharetra magna ac placerat vestibulum lectus. Nulla pharetra diam sit amet nisl suscipit. Mauris nunc congue nisi vitae suscipit tellus mauris a diam. Faucibus in ornare quam viverra orci sagittis eu volutpat. Volutpat consequat mauris nunc congue nisi vitae. Dui nunc mattis enim ut tellus. Adipiscing elit ut aliquam purus sit amet luctus. Tempus egestas sed sed risus. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Massa ultricies mi quis hendrerit dolor magna eget. Pulvinar mattis nunc sed blandit libero volutpat sed cras ornare. Ut eu sem integer vitae justo eget magna fermentum. Ornare quam viverra orci sagittis. Eget dolor morbi non arcu risus quis varius quam. Tincidunt praesent semper feugiat nibh sed pulvinar. Sit amet justo donec enim diam vulputate. Dui faucibus in ornare quam viverra. Tincidunt tortor aliquam nulla facilisi cras fermentum odio eu. Turpis egestas sed tempus urna et. Pretium quam vulputate dignissim suspendisse in est ante in. Morbi quis commodo odio aenean sed adipiscing diam donec. Nunc mattis enim ut tellus elementum sagittis vitae et. Diam vel quam elementum pulvinar etiam non quam. Convallis posuere morbi leo urna molestie at elementum eu. Adipiscing at in tellus integer feugiat scelerisque varius morbi. Quis varius quam quisque id diam vel quam elementum. Dui accumsan sit amet nulla. Adipiscing elit duis tristique sollicitudin nibh sit amet commodo. Viverra ipsum nunc aliquet bibendum enim facilisis. Porta lorem mollis aliquam ut. Velit ut tortor pretium viverra suspendisse potenti. Quis viverra nibh cras pulvinar mattis nunc sed blandit. Pharetra magna ac placerat vestibulum. Mauris ultrices eros in cursus turpis massa. Lacus vestibulum sed arcu non odio euismod lacinia at. Dapibus ultrices in iaculis nunc sed. Cras adipiscing enim eu turpis egestas. Eget arcu dictum varius duis at consectetur. Consequat id porta nibh venenatis cras sed felis eget velit. Integer enim neque volutpat ac tincidunt vitae. Feugiat pretium nibh ipsum consequat nisl vel pretium lectus. Ut morbi tincidunt augue interdum velit euismod. Sed cras ornare arcu dui vivamus arcu felis bibendum ut. Eget felis eget nunc lobortis mattis aliquam faucibus purus in. Luctus venenatis lectus magna fringilla urna porttitor rhoncus dolor. Nisl nunc mi ipsum faucibus vitae. Proin fermentum leo vel orci porta. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. Et leo duis ut diam quam. Eros in cursus turpis massa tincidunt. Volutpat est velit egestas dui id. Commodo odio aenean sed adipiscing diam. Quis blandit turpis cursus in hac habitasse platea dictumst quisque. Magna fringilla urna porttitor rhoncus dolor. Amet consectetur adipiscing elit ut aliquam purus sit amet. Vitae justo eget magna fermentum iaculis eu non diam. Hendrerit dolor magna eget est. Ac placerat vestibulum lectus mauris ultrices eros in cursus turpis. Egestas diam in arcu cursus. At varius vel pharetra vel turpis nunc. Lacus vel facilisis volutpat est velit. Ut ornare lectus sit amet est placerat in egestas. Quam adipiscing vitae proin sagittis nisl rhoncus. Dolor purus non enim praesent. Urna condimentum mattis pellentesque id. Magnis dis parturient montes nascetur ridiculus. Feugiat nisl pretium fusce id. Sed cras ornare arcu dui vivamus. Vitae turpis massa sed elementum tempus egestas sed sed. Ac feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Ac ut consequat semper viverra nam libero. Consectetur lorem donec massa sapien faucibus. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Eu turpis egestas pretium aenean pharetra. Nisl rhoncus mattis rhoncus urna neque viverra justo nec ultrices. Pellentesque sit amet porttitor eget dolor morbi non arcu. Vitae justo eget magna fermentum iaculis. Quis auctor elit sed vulputate mi sit. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Semper auctor neque vitae tempus quam pellentesque nec nam. Rhoncus dolor purus non enim. Sed turpis tincidunt id aliquet risus feugiat. Sit amet justo donec enim diam vulputate ut pharetra sit. Risus pretium quam vulputate dignissim suspendisse in est ante in. Massa sapien faucibus et molestie ac feugiat. Id aliquet risus feugiat in ante metus. Risus ultricies tristique nulla aliquet enim tortor at auctor urna. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper morbi. Lacus sed turpis tincidunt id aliquet risus feugiat in. Risus ultricies tristique nulla aliquet enim tortor. In ornare quam viverra orci sagittis eu volutpat. Netus et malesuada fames ac turpis egestas sed tempus urna. Fames ac turpis egestas maecenas pharetra convallis posuere morbi. Etiam erat velit scelerisque in dictum non. Cursus turpis massa tincidunt dui ut ornare lectus. Tristique sollicitudin nibh sit amet commodo nulla facilisi. Pellentesque pulvinar pellentesque habitant morbi tristique senectus et. Aliquet eget sit amet tellus cras. Nullam ac tortor vitae purus faucibus ornare. Lacus viverra vitae congue eu consequat. Vulputate ut pharetra sit amet. Est ante in nibh mauris cursus mattis molestie a. Ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Et tortor at risus viverra. Sed libero enim sed faucibus turpis in eu. Id cursus metus aliquam eleifend mi in nulla posuere sollicitudin. Risus viverra adipiscing at in. Imperdiet massa tincidunt nunc pulvinar sapien et. Nec feugiat in fermentum posuere urna nec tincidunt. Ultricies mi eget mauris pharetra et. Morbi tristique senectus et netus et malesuada fames ac. At quis risus sed vulputate. Interdum velit laoreet id donec. Sapien pellentesque habitant morbi tristique. Pharetra vel turpis nunc eget lorem dolor sed viverra. In massa tempor nec feugiat nisl. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Mauris augue neque gravida in. Faucibus vitae aliquet nec ullamcorper sit amet risus. Id velit ut tortor pretium viverra suspendisse potenti. Leo integer malesuada nunc vel risus commodo viverra maecenas. Risus quis varius quam quisque id. Aliquam malesuada bibendum arcu vitae elementum curabitur vitae. Vestibulum lectus mauris ultrices eros in cursus turpis. Fermentum posuere urna nec tincidunt. Magna etiam tempor orci eu lobortis elementum nibh tellus molestie. Id ornare arcu odio ut. Facilisi nullam vehicula ipsum a arcu cursus vitae congue. Nulla pellentesque dignissim enim sit amet venenatis urna cursus eget. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Quis ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Sed cras ornare arcu dui vivamus arcu felis. Egestas diam in arcu cursus euismod quis. Tincidunt dui ut ornare lectus. Morbi tristique senectus et netus et. Ornare arcu dui vivamus arcu felis bibendum ut tristique. Habitant morbi tristique senectus et netus et malesuada fames ac. Ut tristique et egestas quis. Mollis aliquam ut porttitor leo. Venenatis tellus in metus vulputate eu scelerisque felis imperdiet proin. Sagittis eu volutpat odio facilisis mauris sit amet massa. Eu facilisis sed odio morbi. Nunc consequat interdum varius sit amet mattis. Velit dignissim sodales ut eu. Pellentesque eu tincidunt tortor aliquam. Porta lorem mollis aliquam ut porttitor. Rhoncus urna neque viverra justo nec ultrices. Viverra suspendisse potenti nullam ac tortor vitae purus. Fermentum posuere urna nec tincidunt praesent semper feugiat nibh sed. Purus sit amet luctus venenatis lectus magna fringilla urna porttitor. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Nisl nisi scelerisque eu ultrices vitae auctor. In vitae turpis massa sed elementum tempus egestas. Cursus sit amet dictum sit amet justo donec enim. Vitae congue eu consequat ac felis donec et. Augue interdum velit euismod in pellentesque massa placerat. Enim ut sem viverra aliquet eget sit amet. Velit scelerisque in dictum non consectetur a erat. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nunc faucibus a pellentesque sit amet porttitor eget. Tellus integer feugiat scelerisque varius morbi. Lorem sed risus ultricies tristique nulla aliquet enim tortor at. Eget nulla facilisi etiam dignissim diam quis enim lobortis scelerisque. Adipiscing elit duis tristique sollicitudin. Adipiscing elit pellentesque habitant morbi tristique. Ac tincidunt vitae semper quis lectus nulla at. Maecenas sed enim ut sem viverra. Erat pellentesque adipiscing commodo elit at imperdiet. Dolor morbi non arcu risus quis varius quam quisque. Fringilla urna porttitor rhoncus dolor purus non enim praesent. Tellus integer feugiat scelerisque varius morbi enim nunc faucibus a. Felis eget nunc lobortis mattis aliquam faucibus purus in. Fringilla phasellus faucibus scelerisque eleifend. Pulvinar etiam non quam lacus suspendisse faucibus interdum posuere. Risus ultricies tristique nulla aliquet. Lectus sit amet est placerat. Ac ut consequat semper viverra nam libero justo. Dapibus ultrices in iaculis nunc sed augue. Mattis ullamcorper velit sed ullamcorper. Eget nullam non nisi est. Vitae elementum curabitur vitae nunc sed velit. Sit amet commodo nulla facilisi nullam vehicula ipsum a arcu. Tempor nec feugiat nisl pretium fusce id velit ut. Nulla pellentesque dignissim enim sit amet venenatis. Sed tempus urna et pharetra pharetra. Congue quisque egestas diam in. Convallis posuere morbi leo urna. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Sagittis nisl rhoncus mattis rhoncus urna neque viverra justo. Scelerisque felis imperdiet proin fermentum leo vel. Ut placerat orci nulla pellentesque dignissim enim sit amet. In cursus turpis massa tincidunt dui. Rutrum quisque non tellus orci ac auctor augue mauris augue. Cursus vitae congue mauris rhoncus aenean vel elit scelerisque mauris. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Habitant morbi tristique senectus et netus et. Ridiculus mus mauris vitae ultricies leo. Vitae semper quis lectus nulla at volutpat diam. Purus faucibus ornare suspendisse sed nisi. Enim lobortis scelerisque fermentum dui faucibus in ornare quam. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Varius duis at consectetur lorem donec. Pulvinar pellentesque habitant morbi tristique senectus et netus et. A iaculis at erat pellentesque adipiscing commodo elit at imperdiet. Mi ipsum faucibus vitae aliquet nec. Libero volutpat sed cras ornare arcu dui vivamus arcu. Natoque penatibus et magnis dis parturient montes nascetur ridiculus. Maecenas volutpat blandit aliquam etiam erat velit scelerisque. Cras adipiscing enim eu turpis. Nec tincidunt praesent semper feugiat nibh sed pulvinar. Justo laoreet sit amet cursus sit amet dictum sit. Velit scelerisque in dictum non consectetur a erat nam. Turpis tincidunt id aliquet risus feugiat in ante. Aliquet risus feugiat in ante metus dictum. Hac habitasse platea dictumst quisque sagittis purus sit. Et pharetra pharetra massa massa ultricies. Sit amet nisl suscipit adipiscing bibendum est ultricies integer. Venenatis urna cursus eget nunc scelerisque viverra mauris in. Integer quis auctor elit sed. In est ante in nibh mauris cursus mattis molestie. Scelerisque in dictum non consectetur a erat nam at. Lectus sit amet est placerat in. Sit amet cursus sit amet. Nibh nisl condimentum id venenatis a condimentum. Purus ut faucibus pulvinar elementum integer enim. Pharetra sit amet aliquam id diam maecenas. Id cursus metus aliquam eleifend mi in nulla posuere. Lobortis mattis aliquam faucibus purus in massa tempor nec. Urna neque viverra justo nec ultrices dui sapien eget. Enim ut sem viverra aliquet eget sit amet. In eu mi bibendum neque egestas congue quisque egestas. Enim neque volutpat ac tincidunt. Orci ac auctor augue mauris augue neque gravida in fermentum. Velit aliquet sagittis id consectetur. Enim ut sem viverra aliquet eget sit amet tellus. Semper auctor neque vitae tempus quam pellentesque nec. Non blandit massa enim nec dui nunc. Morbi blandit cursus risus at ultrices mi tempus imperdiet nulla. Arcu non odio euismod lacinia at quis risus. Dictum varius duis at consectetur lorem donec massa. Blandit massa enim nec dui. Nibh ipsum consequat nisl vel. Turpis in eu mi bibendum neque. Ut tristique et egestas quis. Ac odio tempor orci dapibus. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim. Integer feugiat scelerisque varius morbi enim. Libero volutpat sed cras ornare arcu dui. Odio aenean sed adipiscing diam. Et egestas quis ipsum suspendisse ultrices. Aliquet lectus proin nibh nisl condimentum. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh sit. Blandit massa enim nec dui. Tellus molestie nunc non blandit massa enim nec. Tortor vitae purus faucibus ornare suspendisse sed nisi. Nascetur ridiculus mus mauris vitae ultricies leo. Elementum facilisis leo vel fringilla est ullamcorper eget nulla. Diam maecenas ultricies mi eget. Duis tristique sollicitudin nibh sit amet commodo nulla. Tempus iaculis urna id volutpat lacus laoreet non curabitur gravida. Dictumst quisque sagittis purus sit amet. Viverra mauris in aliquam sem. Quis risus sed vulputate odio ut enim blandit volutpat maecenas. Condimentum mattis pellentesque id nibh tortor id. Non sodales neque sodales ut etiam sit amet. Ipsum consequat nisl vel pretium. Cursus in hac habitasse platea dictumst quisque sagittis purus sit. Fringilla est ullamcorper eget nulla facilisi etiam. Tellus elementum sagittis vitae et leo duis ut diam quam. Nisl vel pretium lectus quam id leo in.""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4224367 tomlkit-0.12.4/tests/toml-spec-tests/values/qa-scalar-literal-multiline-40kb.yaml0000644000000000000000000012030314567257576024662 0ustar00long: >- Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor. Amet consectetur adipiscing elit ut. Nulla facilisi etiam dignissim diam quis enim lobortis. Curabitur vitae nunc sed velit dignissim sodales ut eu. Fames ac turpis egestas sed tempus urna et. Facilisi cras fermentum odio eu feugiat pretium. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Est lorem ipsum dolor sit amet consectetur adipiscing elit. Vel quam elementum pulvinar etiam non quam lacus. Pharetra et ultrices neque ornare aenean euismod. Nisl nisi scelerisque eu ultrices. Eget dolor morbi non arcu risus. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Faucibus nisl tincidunt eget nullam. Nisl pretium fusce id velit ut tortor pretium viverra suspendisse. Mauris ultrices eros in cursus. Donec ac odio tempor orci dapibus ultrices in iaculis. Tellus cras adipiscing enim eu turpis egestas pretium aenean pharetra. Eros in cursus turpis massa. Nascetur ridiculus mus mauris vitae ultricies leo integer malesuada nunc. Velit sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Aenean euismod elementum nisi quis eleifend quam. Magnis dis parturient montes nascetur ridiculus mus. Eu tincidunt tortor aliquam nulla facilisi cras. Tristique senectus et netus et malesuada fames. Urna nec tincidunt praesent semper feugiat nibh sed pulvinar. Vitae ultricies leo integer malesuada nunc vel risus commodo viverra. Ac turpis egestas sed tempus urna et. Amet mauris commodo quis imperdiet massa tincidunt. Urna nunc id cursus metus aliquam eleifend mi. In nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Neque aliquam vestibulum morbi blandit cursus. Pulvinar mattis nunc sed blandit libero volutpat sed. Sed egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Blandit cursus risus at ultrices mi tempus. Turpis massa sed elementum tempus egestas sed sed. Dictum varius duis at consectetur lorem. Commodo ullamcorper a lacus vestibulum sed arcu non. Dolor magna eget est lorem. Tincidunt arcu non sodales neque sodales ut etiam sit amet. Sit amet risus nullam eget felis eget nunc lobortis. Risus in hendrerit gravida rutrum quisque non tellus orci. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Morbi tristique senectus et netus et malesuada. In aliquam sem fringilla ut morbi tincidunt. Ornare aenean euismod elementum nisi quis eleifend quam. Sed id semper risus in hendrerit gravida rutrum quisque. Lorem ipsum dolor sit amet consectetur adipiscing elit. A condimentum vitae sapien pellentesque habitant morbi tristique senectus et. Faucibus purus in massa tempor nec feugiat nisl. Vehicula ipsum a arcu cursus vitae congue. Facilisi cras fermentum odio eu feugiat pretium nibh. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Ultrices dui sapien eget mi proin sed libero enim. Nisi est sit amet facilisis magna etiam tempor. Posuere ac ut consequat semper viverra nam. Dis parturient montes nascetur ridiculus mus mauris vitae. Nec sagittis aliquam malesuada bibendum. Mattis pellentesque id nibh tortor id aliquet lectus. Vitae congue eu consequat ac felis donec et. Cras sed felis eget velit aliquet sagittis id consectetur purus. Pellentesque elit ullamcorper dignissim cras tincidunt. Pellentesque dignissim enim sit amet venenatis urna. A cras semper auctor neque vitae tempus. Amet massa vitae tortor condimentum lacinia quis vel eros donec. Tempor commodo ullamcorper a lacus. Nibh tellus molestie nunc non blandit massa enim nec dui. Viverra orci sagittis eu volutpat odio facilisis mauris sit. Sed augue lacus viverra vitae. Vulputate eu scelerisque felis imperdiet proin fermentum leo vel orci. Tellus rutrum tellus pellentesque eu tincidunt tortor. Cras semper auctor neque vitae tempus quam pellentesque nec. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Tristique magna sit amet purus gravida quis blandit turpis. Viverra ipsum nunc aliquet bibendum. Arcu bibendum at varius vel. Amet mattis vulputate enim nulla. Vulputate enim nulla aliquet porttitor. Volutpat blandit aliquam etiam erat velit scelerisque in dictum. Morbi tristique senectus et netus et malesuada fames ac. Faucibus et molestie ac feugiat sed. Tellus elementum sagittis vitae et leo duis. Id aliquet lectus proin nibh. Ornare arcu dui vivamus arcu. Morbi tincidunt augue interdum velit euismod in pellentesque massa placerat. Quis eleifend quam adipiscing vitae. Tristique senectus et netus et malesuada fames ac turpis. Pharetra convallis posuere morbi leo. Ornare arcu odio ut sem nulla pharetra diam sit. Morbi tristique senectus et netus et. Dictum non consectetur a erat nam at lectus urna. Varius vel pharetra vel turpis. Mi ipsum faucibus vitae aliquet. Tellus in metus vulputate eu scelerisque felis imperdiet proin. In est ante in nibh mauris cursus mattis. Massa ultricies mi quis hendrerit dolor magna eget. Fermentum leo vel orci porta. Elit ut aliquam purus sit amet luctus venenatis lectus. Eget aliquet nibh praesent tristique magna sit amet. Arcu non odio euismod lacinia at quis. Montes nascetur ridiculus mus mauris vitae ultricies. Tempus quam pellentesque nec nam aliquam sem et tortor. Morbi leo urna molestie at elementum eu facilisis sed. In fermentum posuere urna nec tincidunt. Neque aliquam vestibulum morbi blandit cursus risus. Vulputate dignissim suspendisse in est ante in nibh mauris cursus. Lorem ipsum dolor sit amet consectetur adipiscing. Orci eu lobortis elementum nibh tellus molestie nunc non. Enim diam vulputate ut pharetra sit amet aliquam. Convallis convallis tellus id interdum velit laoreet id donec ultrices. Sit amet mattis vulputate enim nulla aliquet porttitor lacus luctus. A lacus vestibulum sed arcu non odio. Ut tortor pretium viverra suspendisse potenti nullam ac tortor. Diam vel quam elementum pulvinar etiam non quam. Viverra justo nec ultrices dui. Eu volutpat odio facilisis mauris sit amet massa. Sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Ac felis donec et odio pellentesque. Nisl vel pretium lectus quam id leo in. Ultricies lacus sed turpis tincidunt id. At urna condimentum mattis pellentesque id nibh tortor id. Sem nulla pharetra diam sit amet nisl suscipit. Neque viverra justo nec ultrices. Arcu cursus euismod quis viverra nibh cras pulvinar. Dolor sit amet consectetur adipiscing elit ut aliquam purus. Id diam vel quam elementum pulvinar etiam non. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Id aliquet lectus proin nibh nisl condimentum id venenatis. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh. Sed faucibus turpis in eu mi bibendum neque egestas congue. Consectetur libero id faucibus nisl tincidunt eget nullam. At volutpat diam ut venenatis tellus in metus vulputate eu. Condimentum lacinia quis vel eros donec ac odio. Sit amet porttitor eget dolor morbi non arcu risus quis. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Metus dictum at tempor commodo ullamcorper. At ultrices mi tempus imperdiet nulla. Est ullamcorper eget nulla facilisi etiam dignissim diam quis. Lobortis elementum nibh tellus molestie nunc non. Placerat in egestas erat imperdiet sed. Placerat in egestas erat imperdiet sed euismod. Lobortis feugiat vivamus at augue eget arcu dictum varius. Ut sem nulla pharetra diam sit amet. Et tortor at risus viverra adipiscing at in. Tempor nec feugiat nisl pretium. Cursus euismod quis viverra nibh. Eget mi proin sed libero enim sed. Aliquam id diam maecenas ultricies. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Gravida quis blandit turpis cursus in hac habitasse platea dictumst. Sed tempus urna et pharetra pharetra massa massa. Dolor purus non enim praesent elementum facilisis leo vel. Pharetra vel turpis nunc eget. Quam pellentesque nec nam aliquam sem et tortor consequat id. Orci eu lobortis elementum nibh tellus molestie nunc non. Porttitor leo a diam sollicitudin tempor id. Tincidunt ornare massa eget egestas purus viverra accumsan in nisl. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor sit. Elit ut aliquam purus sit amet luctus venenatis lectus. Velit egestas dui id ornare arcu odio ut sem nulla. Lacus viverra vitae congue eu consequat ac felis donec. Nulla aliquet porttitor lacus luctus accumsan tortor posuere ac ut. Lorem dolor sed viverra ipsum. Blandit libero volutpat sed cras ornare arcu. Egestas erat imperdiet sed euismod nisi porta lorem mollis. Viverra maecenas accumsan lacus vel. Enim neque volutpat ac tincidunt. Porttitor massa id neque aliquam vestibulum morbi blandit cursus risus. Malesuada bibendum arcu vitae elementum curabitur vitae nunc. Et malesuada fames ac turpis egestas integer. Egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Est placerat in egestas erat imperdiet sed. Non arcu risus quis varius quam quisque. Lorem mollis aliquam ut porttitor leo a. Viverra tellus in hac habitasse platea dictumst vestibulum rhoncus. Fermentum iaculis eu non diam. Erat imperdiet sed euismod nisi porta lorem mollis aliquam. Varius vel pharetra vel turpis nunc eget lorem dolor. Rhoncus mattis rhoncus urna neque viverra. Hac habitasse platea dictumst quisque sagittis purus sit. At quis risus sed vulputate odio ut enim. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros. Rutrum quisque non tellus orci ac auctor. Iaculis eu non diam phasellus vestibulum lorem sed. Ut sem nulla pharetra diam sit amet nisl suscipit. Risus at ultrices mi tempus. Vitae tortor condimentum lacinia quis vel eros donec. Sed tempus urna et pharetra. Posuere sollicitudin aliquam ultrices sagittis orci. Congue quisque egestas diam in arcu. Hac habitasse platea dictumst vestibulum rhoncus est pellentesque elit. Pellentesque habitant morbi tristique senectus et netus et. Id interdum velit laoreet id. Fusce ut placerat orci nulla pellentesque dignissim. Pretium nibh ipsum consequat nisl vel pretium. Etiam erat velit scelerisque in dictum non consectetur a. Turpis in eu mi bibendum neque egestas congue quisque egestas. Pulvinar sapien et ligula ullamcorper malesuada. Ultricies tristique nulla aliquet enim tortor at. Suspendisse interdum consectetur libero id faucibus. Lorem sed risus ultricies tristique nulla aliquet. Tristique senectus et netus et malesuada fames. Eu augue ut lectus arcu bibendum at varius vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies. Aliquet eget sit amet tellus cras adipiscing. Massa placerat duis ultricies lacus sed turpis tincidunt id aliquet. Ornare massa eget egestas purus viverra accumsan in nisl. Justo laoreet sit amet cursus sit amet. In metus vulputate eu scelerisque felis imperdiet proin. At erat pellentesque adipiscing commodo elit at. Ipsum suspendisse ultrices gravida dictum fusce. Lectus sit amet est placerat in egestas erat. Aliquam ultrices sagittis orci a. Sagittis id consectetur purus ut faucibus pulvinar elementum. Ornare arcu odio ut sem nulla pharetra diam. Sit amet purus gravida quis blandit turpis cursus. Duis ultricies lacus sed turpis tincidunt. Malesuada fames ac turpis egestas sed tempus urna et. Viverra ipsum nunc aliquet bibendum enim facilisis. Et pharetra pharetra massa massa ultricies mi quis. Eget duis at tellus at urna condimentum mattis. Euismod in pellentesque massa placerat. Enim nunc faucibus a pellentesque sit amet porttitor. Dolor sed viverra ipsum nunc aliquet. Donec enim diam vulputate ut pharetra sit amet. Feugiat sed lectus vestibulum mattis ullamcorper velit sed. Erat pellentesque adipiscing commodo elit at imperdiet. Nisl purus in mollis nunc sed id semper risus. Tincidunt augue interdum velit euismod in pellentesque massa. Facilisis magna etiam tempor orci. Mauris in aliquam sem fringilla ut. Gravida dictum fusce ut placerat orci. Sed risus ultricies tristique nulla. Odio morbi quis commodo odio. Feugiat in ante metus dictum at tempor commodo ullamcorper. Porta non pulvinar neque laoreet suspendisse interdum. Etiam tempor orci eu lobortis elementum. Fusce ut placerat orci nulla pellentesque dignissim. Ornare lectus sit amet est placerat in egestas erat. Quis vel eros donec ac. Elementum pulvinar etiam non quam lacus. Sit amet tellus cras adipiscing enim eu turpis. Amet tellus cras adipiscing enim eu. Sed faucibus turpis in eu mi bibendum. Lectus proin nibh nisl condimentum id. Sollicitudin nibh sit amet commodo nulla. Sed tempus urna et pharetra pharetra massa massa. Magna eget est lorem ipsum. Elit ullamcorper dignissim cras tincidunt lobortis feugiat vivamus at. Fermentum dui faucibus in ornare quam viverra orci sagittis eu. Dignissim convallis aenean et tortor. Ut faucibus pulvinar elementum integer enim neque. Nibh cras pulvinar mattis nunc sed. Pellentesque sit amet porttitor eget dolor morbi. Mi eget mauris pharetra et ultrices neque ornare aenean euismod. Quis risus sed vulputate odio ut enim blandit volutpat. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. In vitae turpis massa sed elementum tempus egestas sed sed. Urna id volutpat lacus laoreet non. Egestas pretium aenean pharetra magna ac placerat. Amet commodo nulla facilisi nullam vehicula ipsum a arcu cursus. Donec et odio pellentesque diam volutpat commodo sed. Etiam non quam lacus suspendisse. Augue neque gravida in fermentum et sollicitudin ac orci. Eu feugiat pretium nibh ipsum. Nam at lectus urna duis convallis convallis tellus id. Egestas integer eget aliquet nibh. Viverra accumsan in nisl nisi scelerisque eu ultrices vitae auctor. Urna condimentum mattis pellentesque id nibh tortor id. In egestas erat imperdiet sed euismod. Ut sem viverra aliquet eget sit amet tellus. Feugiat pretium nibh ipsum consequat nisl vel pretium. Volutpat odio facilisis mauris sit amet. Mi sit amet mauris commodo quis imperdiet massa tincidunt. Neque volutpat ac tincidunt vitae semper quis lectus nulla at. Nec feugiat in fermentum posuere urna nec. Ut venenatis tellus in metus vulputate eu. Vestibulum rhoncus est pellentesque elit ullamcorper dignissim. Eu scelerisque felis imperdiet proin. Vitae et leo duis ut diam quam nulla. Ut venenatis tellus in metus vulputate eu scelerisque. Tincidunt dui ut ornare lectus sit amet. Adipiscing diam donec adipiscing tristique risus. Turpis nunc eget lorem dolor sed viverra ipsum nunc aliquet. Non sodales neque sodales ut. Massa placerat duis ultricies lacus sed turpis tincidunt. Viverra orci sagittis eu volutpat odio facilisis mauris sit amet. Adipiscing vitae proin sagittis nisl. Vitae aliquet nec ullamcorper sit. Potenti nullam ac tortor vitae purus. Ultricies lacus sed turpis tincidunt id. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Semper eget duis at tellus at urna condimentum mattis pellentesque. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin. Dictum fusce ut placerat orci nulla pellentesque dignissim. Amet luctus venenatis lectus magna fringilla urna. Quam quisque id diam vel quam elementum pulvinar. At tempor commodo ullamcorper a. Magna etiam tempor orci eu lobortis. Suspendisse ultrices gravida dictum fusce. Massa ultricies mi quis hendrerit dolor magna. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Aliquet enim tortor at auctor urna nunc id. Semper feugiat nibh sed pulvinar proin gravida. Porttitor rhoncus dolor purus non enim. Metus aliquam eleifend mi in nulla. Lectus arcu bibendum at varius vel pharetra. Sed vulputate odio ut enim blandit volutpat. Et ligula ullamcorper malesuada proin libero nunc consequat interdum varius. Donec et odio pellentesque diam volutpat commodo. Id ornare arcu odio ut sem nulla pharetra diam sit. Est ullamcorper eget nulla facilisi etiam dignissim diam quis enim. Sagittis vitae et leo duis ut diam quam nulla. Elementum nisi quis eleifend quam. Congue mauris rhoncus aenean vel elit. Adipiscing elit duis tristique sollicitudin nibh sit. Egestas egestas fringilla phasellus faucibus scelerisque. Morbi tincidunt augue interdum velit euismod. Massa sed elementum tempus egestas sed sed. Id leo in vitae turpis massa sed elementum tempus egestas. In pellentesque massa placerat duis ultricies lacus sed turpis. Vitae proin sagittis nisl rhoncus mattis rhoncus. Enim tortor at auctor urna nunc id. In fermentum posuere urna nec tincidunt praesent semper feugiat nibh. Aliquam ut porttitor leo a diam sollicitudin tempor id. Pellentesque elit eget gravida cum sociis natoque. Molestie at elementum eu facilisis sed odio morbi quis. Tristique senectus et netus et malesuada fames ac turpis. Proin libero nunc consequat interdum varius sit amet mattis. Pellentesque id nibh tortor id. Risus sed vulputate odio ut enim blandit. Laoreet suspendisse interdum consectetur libero id faucibus nisl tincidunt eget. Morbi tincidunt augue interdum velit euismod in pellentesque. Pharetra pharetra massa massa ultricies mi quis hendrerit. Nunc aliquet bibendum enim facilisis gravida neque. Feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Risus quis varius quam quisque id diam vel. Et ultrices neque ornare aenean. Aliquet sagittis id consectetur purus ut faucibus pulvinar elementum. Nibh ipsum consequat nisl vel. Mauris rhoncus aenean vel elit scelerisque mauris pellentesque pulvinar. Ornare quam viverra orci sagittis eu volutpat odio facilisis. Euismod nisi porta lorem mollis aliquam. Enim ut tellus elementum sagittis. Rhoncus mattis rhoncus urna neque. Malesuada fames ac turpis egestas. Cursus in hac habitasse platea dictumst quisque sagittis. Sit amet aliquam id diam maecenas ultricies mi eget mauris. Enim sit amet venenatis urna cursus eget nunc. Fermentum odio eu feugiat pretium nibh ipsum consequat. Eu scelerisque felis imperdiet proin. Nullam non nisi est sit amet facilisis magna etiam tempor. In mollis nunc sed id semper risus in hendrerit. Sollicitudin nibh sit amet commodo nulla facilisi nullam. Sit amet nisl purus in mollis nunc sed id. Nam libero justo laoreet sit amet cursus sit amet dictum. Condimentum id venenatis a condimentum vitae sapien pellentesque. Porta nibh venenatis cras sed felis. Lectus nulla at volutpat diam ut venenatis tellus in. Aliquam etiam erat velit scelerisque in dictum non consectetur a. Leo vel fringilla est ullamcorper eget. Sodales ut etiam sit amet nisl purus in mollis nunc. Euismod nisi porta lorem mollis aliquam. Ornare arcu odio ut sem nulla. Sed felis eget velit aliquet sagittis id consectetur. Pellentesque nec nam aliquam sem et tortor consequat id. Enim nec dui nunc mattis enim ut tellus elementum. Nullam non nisi est sit amet facilisis magna. Rutrum quisque non tellus orci ac auctor augue. Nunc vel risus commodo viverra maecenas accumsan lacus. Viverra vitae congue eu consequat. Sollicitudin nibh sit amet commodo nulla. Amet volutpat consequat mauris nunc congue nisi. Maecenas pharetra convallis posuere morbi leo urna molestie at. Mattis vulputate enim nulla aliquet porttitor lacus luctus accumsan tortor. Pulvinar sapien et ligula ullamcorper malesuada proin libero nunc consequat. Adipiscing diam donec adipiscing tristique risus. Elementum curabitur vitae nunc sed velit dignissim sodales ut. Eleifend donec pretium vulputate sapien nec. Commodo quis imperdiet massa tincidunt nunc pulvinar. Proin libero nunc consequat interdum varius sit amet mattis. Facilisis gravida neque convallis a cras semper auctor neque vitae. Quisque egestas diam in arcu cursus. Nunc eget lorem dolor sed viverra ipsum. Mauris sit amet massa vitae tortor condimentum lacinia quis vel. Aliquam sem et tortor consequat id porta nibh venenatis cras. Nunc sed id semper risus in. Enim sed faucibus turpis in eu mi bibendum neque. Molestie nunc non blandit massa enim. Enim praesent elementum facilisis leo vel fringilla est ullamcorper. Semper risus in hendrerit gravida rutrum quisque non tellus orci. Ac turpis egestas maecenas pharetra. In nulla posuere sollicitudin aliquam. Justo nec ultrices dui sapien eget mi proin sed libero. In ornare quam viverra orci sagittis eu. Proin nibh nisl condimentum id venenatis. Morbi enim nunc faucibus a pellentesque sit amet porttitor eget. Quis risus sed vulputate odio ut enim blandit. Risus feugiat in ante metus dictum at tempor commodo. Sodales neque sodales ut etiam. Nunc id cursus metus aliquam. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim enim. Augue ut lectus arcu bibendum at. Quis varius quam quisque id diam vel quam. Egestas congue quisque egestas diam in arcu. Condimentum mattis pellentesque id nibh tortor id aliquet lectus. Enim lobortis scelerisque fermentum dui faucibus in. In tellus integer feugiat scelerisque varius morbi enim nunc. Mattis molestie a iaculis at erat pellentesque. Elit scelerisque mauris pellentesque pulvinar pellentesque habitant morbi tristique. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Nisl rhoncus mattis rhoncus urna neque. Ac auctor augue mauris augue neque gravida in fermentum et. Sodales ut eu sem integer vitae justo eget. Sed egestas egestas fringilla phasellus. Viverra adipiscing at in tellus integer feugiat scelerisque varius. Purus gravida quis blandit turpis. Id porta nibh venenatis cras sed. Mattis vulputate enim nulla aliquet porttitor lacus. Augue eget arcu dictum varius duis at consectetur lorem donec. Nulla at volutpat diam ut venenatis tellus in metus. Aliquam etiam erat velit scelerisque in dictum non consectetur. Turpis cursus in hac habitasse platea dictumst. Consequat mauris nunc congue nisi vitae suscipit tellus. Volutpat maecenas volutpat blandit aliquam etiam. Massa massa ultricies mi quis hendrerit dolor magna eget est. Velit egestas dui id ornare arcu. Non consectetur a erat nam at. Orci sagittis eu volutpat odio facilisis mauris sit amet. Dui id ornare arcu odio. Sed arcu non odio euismod lacinia. Feugiat in ante metus dictum. Gravida arcu ac tortor dignissim convallis. Egestas sed tempus urna et pharetra pharetra massa massa. Nulla facilisi nullam vehicula ipsum a arcu. Ipsum a arcu cursus vitae congue mauris. Porttitor rhoncus dolor purus non. Magna sit amet purus gravida quis blandit. Sapien eget mi proin sed libero enim sed faucibus turpis. Nisl nunc mi ipsum faucibus vitae aliquet nec ullamcorper sit. Pellentesque dignissim enim sit amet venenatis urna cursus eget. Pharetra massa massa ultricies mi quis hendrerit. Sapien nec sagittis aliquam malesuada bibendum. Nunc scelerisque viverra mauris in aliquam sem fringilla ut. Dolor magna eget est lorem ipsum dolor. Amet commodo nulla facilisi nullam. Pellentesque elit ullamcorper dignissim cras. Id porta nibh venenatis cras sed felis eget. Nam at lectus urna duis. Laoreet non curabitur gravida arcu ac tortor dignissim convallis. Nunc lobortis mattis aliquam faucibus purus in massa tempor. Sit amet luctus venenatis lectus magna fringilla. Duis ultricies lacus sed turpis tincidunt id. Sed velit dignissim sodales ut eu. Ut tortor pretium viverra suspendisse potenti nullam. Iaculis at erat pellentesque adipiscing. Ipsum nunc aliquet bibendum enim facilisis gravida neque. Nulla aliquet enim tortor at auctor urna nunc id cursus. Amet cursus sit amet dictum sit amet justo donec enim. Enim nunc faucibus a pellentesque sit amet porttitor eget dolor. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros in. Nulla facilisi etiam dignissim diam quis enim. Ut enim blandit volutpat maecenas volutpat blandit aliquam etiam erat. Imperdiet proin fermentum leo vel orci porta non pulvinar neque. Vel fringilla est ullamcorper eget nulla. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Ipsum nunc aliquet bibendum enim facilisis gravida neque convallis a. Arcu cursus vitae congue mauris rhoncus aenean vel elit. Augue eget arcu dictum varius duis. Tristique et egestas quis ipsum. Quis varius quam quisque id. Varius sit amet mattis vulputate. Mattis molestie a iaculis at erat pellentesque. Libero justo laoreet sit amet cursus. Aliquam id diam maecenas ultricies mi eget mauris pharetra. Ut eu sem integer vitae justo eget. Fames ac turpis egestas sed. Suspendisse in est ante in nibh mauris cursus mattis. Faucibus pulvinar elementum integer enim neque volutpat ac tincidunt vitae. Neque vitae tempus quam pellentesque nec nam aliquam. Lobortis elementum nibh tellus molestie nunc non. Lacus vel facilisis volutpat est velit egestas dui. Justo laoreet sit amet cursus sit amet dictum sit amet. Adipiscing enim eu turpis egestas pretium aenean pharetra magna. Cursus metus aliquam eleifend mi in nulla posuere. Nibh mauris cursus mattis molestie a. Dignissim diam quis enim lobortis scelerisque fermentum. A scelerisque purus semper eget duis at tellus. Lacus sed turpis tincidunt id aliquet risus feugiat in. Non tellus orci ac auctor. Ultrices in iaculis nunc sed augue lacus. Tincidunt tortor aliquam nulla facilisi cras. Nulla facilisi nullam vehicula ipsum a arcu cursus vitae congue. Eget magna fermentum iaculis eu non diam phasellus. Pharetra massa massa ultricies mi quis. Eget mauris pharetra et ultrices neque ornare. Aliquam faucibus purus in massa. Facilisi morbi tempus iaculis urna id volutpat lacus. Accumsan lacus vel facilisis volutpat. Curabitur gravida arcu ac tortor. Quam lacus suspendisse faucibus interdum. Elementum nibh tellus molestie nunc non blandit massa enim. Libero id faucibus nisl tincidunt. Bibendum ut tristique et egestas. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Augue interdum velit euismod in pellentesque. Adipiscing diam donec adipiscing tristique risus nec feugiat. Fringilla ut morbi tincidunt augue interdum velit. Vitae et leo duis ut diam quam nulla porttitor massa. Egestas integer eget aliquet nibh praesent tristique. Posuere sollicitudin aliquam ultrices sagittis orci a. Nisi est sit amet facilisis. Risus quis varius quam quisque id diam. Faucibus turpis in eu mi. Et molestie ac feugiat sed lectus vestibulum. Porttitor lacus luctus accumsan tortor posuere ac. Platea dictumst vestibulum rhoncus est pellentesque. Tortor pretium viverra suspendisse potenti nullam ac tortor. Enim praesent elementum facilisis leo vel fringilla est. Proin libero nunc consequat interdum varius sit amet mattis vulputate. Turpis egestas pretium aenean pharetra magna ac placerat vestibulum lectus. Nulla pharetra diam sit amet nisl suscipit. Mauris nunc congue nisi vitae suscipit tellus mauris a diam. Faucibus in ornare quam viverra orci sagittis eu volutpat. Volutpat consequat mauris nunc congue nisi vitae. Dui nunc mattis enim ut tellus. Adipiscing elit ut aliquam purus sit amet luctus. Tempus egestas sed sed risus. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Massa ultricies mi quis hendrerit dolor magna eget. Pulvinar mattis nunc sed blandit libero volutpat sed cras ornare. Ut eu sem integer vitae justo eget magna fermentum. Ornare quam viverra orci sagittis. Eget dolor morbi non arcu risus quis varius quam. Tincidunt praesent semper feugiat nibh sed pulvinar. Sit amet justo donec enim diam vulputate. Dui faucibus in ornare quam viverra. Tincidunt tortor aliquam nulla facilisi cras fermentum odio eu. Turpis egestas sed tempus urna et. Pretium quam vulputate dignissim suspendisse in est ante in. Morbi quis commodo odio aenean sed adipiscing diam donec. Nunc mattis enim ut tellus elementum sagittis vitae et. Diam vel quam elementum pulvinar etiam non quam. Convallis posuere morbi leo urna molestie at elementum eu. Adipiscing at in tellus integer feugiat scelerisque varius morbi. Quis varius quam quisque id diam vel quam elementum. Dui accumsan sit amet nulla. Adipiscing elit duis tristique sollicitudin nibh sit amet commodo. Viverra ipsum nunc aliquet bibendum enim facilisis. Porta lorem mollis aliquam ut. Velit ut tortor pretium viverra suspendisse potenti. Quis viverra nibh cras pulvinar mattis nunc sed blandit. Pharetra magna ac placerat vestibulum. Mauris ultrices eros in cursus turpis massa. Lacus vestibulum sed arcu non odio euismod lacinia at. Dapibus ultrices in iaculis nunc sed. Cras adipiscing enim eu turpis egestas. Eget arcu dictum varius duis at consectetur. Consequat id porta nibh venenatis cras sed felis eget velit. Integer enim neque volutpat ac tincidunt vitae. Feugiat pretium nibh ipsum consequat nisl vel pretium lectus. Ut morbi tincidunt augue interdum velit euismod. Sed cras ornare arcu dui vivamus arcu felis bibendum ut. Eget felis eget nunc lobortis mattis aliquam faucibus purus in. Luctus venenatis lectus magna fringilla urna porttitor rhoncus dolor. Nisl nunc mi ipsum faucibus vitae. Proin fermentum leo vel orci porta. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. Et leo duis ut diam quam. Eros in cursus turpis massa tincidunt. Volutpat est velit egestas dui id. Commodo odio aenean sed adipiscing diam. Quis blandit turpis cursus in hac habitasse platea dictumst quisque. Magna fringilla urna porttitor rhoncus dolor. Amet consectetur adipiscing elit ut aliquam purus sit amet. Vitae justo eget magna fermentum iaculis eu non diam. Hendrerit dolor magna eget est. Ac placerat vestibulum lectus mauris ultrices eros in cursus turpis. Egestas diam in arcu cursus. At varius vel pharetra vel turpis nunc. Lacus vel facilisis volutpat est velit. Ut ornare lectus sit amet est placerat in egestas. Quam adipiscing vitae proin sagittis nisl rhoncus. Dolor purus non enim praesent. Urna condimentum mattis pellentesque id. Magnis dis parturient montes nascetur ridiculus. Feugiat nisl pretium fusce id. Sed cras ornare arcu dui vivamus. Vitae turpis massa sed elementum tempus egestas sed sed. Ac feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Ac ut consequat semper viverra nam libero. Consectetur lorem donec massa sapien faucibus. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Eu turpis egestas pretium aenean pharetra. Nisl rhoncus mattis rhoncus urna neque viverra justo nec ultrices. Pellentesque sit amet porttitor eget dolor morbi non arcu. Vitae justo eget magna fermentum iaculis. Quis auctor elit sed vulputate mi sit. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Semper auctor neque vitae tempus quam pellentesque nec nam. Rhoncus dolor purus non enim. Sed turpis tincidunt id aliquet risus feugiat. Sit amet justo donec enim diam vulputate ut pharetra sit. Risus pretium quam vulputate dignissim suspendisse in est ante in. Massa sapien faucibus et molestie ac feugiat. Id aliquet risus feugiat in ante metus. Risus ultricies tristique nulla aliquet enim tortor at auctor urna. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper morbi. Lacus sed turpis tincidunt id aliquet risus feugiat in. Risus ultricies tristique nulla aliquet enim tortor. In ornare quam viverra orci sagittis eu volutpat. Netus et malesuada fames ac turpis egestas sed tempus urna. Fames ac turpis egestas maecenas pharetra convallis posuere morbi. Etiam erat velit scelerisque in dictum non. Cursus turpis massa tincidunt dui ut ornare lectus. Tristique sollicitudin nibh sit amet commodo nulla facilisi. Pellentesque pulvinar pellentesque habitant morbi tristique senectus et. Aliquet eget sit amet tellus cras. Nullam ac tortor vitae purus faucibus ornare. Lacus viverra vitae congue eu consequat. Vulputate ut pharetra sit amet. Est ante in nibh mauris cursus mattis molestie a. Ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Et tortor at risus viverra. Sed libero enim sed faucibus turpis in eu. Id cursus metus aliquam eleifend mi in nulla posuere sollicitudin. Risus viverra adipiscing at in. Imperdiet massa tincidunt nunc pulvinar sapien et. Nec feugiat in fermentum posuere urna nec tincidunt. Ultricies mi eget mauris pharetra et. Morbi tristique senectus et netus et malesuada fames ac. At quis risus sed vulputate. Interdum velit laoreet id donec. Sapien pellentesque habitant morbi tristique. Pharetra vel turpis nunc eget lorem dolor sed viverra. In massa tempor nec feugiat nisl. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Mauris augue neque gravida in. Faucibus vitae aliquet nec ullamcorper sit amet risus. Id velit ut tortor pretium viverra suspendisse potenti. Leo integer malesuada nunc vel risus commodo viverra maecenas. Risus quis varius quam quisque id. Aliquam malesuada bibendum arcu vitae elementum curabitur vitae. Vestibulum lectus mauris ultrices eros in cursus turpis. Fermentum posuere urna nec tincidunt. Magna etiam tempor orci eu lobortis elementum nibh tellus molestie. Id ornare arcu odio ut. Facilisi nullam vehicula ipsum a arcu cursus vitae congue. Nulla pellentesque dignissim enim sit amet venenatis urna cursus eget. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Quis ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Sed cras ornare arcu dui vivamus arcu felis. Egestas diam in arcu cursus euismod quis. Tincidunt dui ut ornare lectus. Morbi tristique senectus et netus et. Ornare arcu dui vivamus arcu felis bibendum ut tristique. Habitant morbi tristique senectus et netus et malesuada fames ac. Ut tristique et egestas quis. Mollis aliquam ut porttitor leo. Venenatis tellus in metus vulputate eu scelerisque felis imperdiet proin. Sagittis eu volutpat odio facilisis mauris sit amet massa. Eu facilisis sed odio morbi. Nunc consequat interdum varius sit amet mattis. Velit dignissim sodales ut eu. Pellentesque eu tincidunt tortor aliquam. Porta lorem mollis aliquam ut porttitor. Rhoncus urna neque viverra justo nec ultrices. Viverra suspendisse potenti nullam ac tortor vitae purus. Fermentum posuere urna nec tincidunt praesent semper feugiat nibh sed. Purus sit amet luctus venenatis lectus magna fringilla urna porttitor. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Nisl nisi scelerisque eu ultrices vitae auctor. In vitae turpis massa sed elementum tempus egestas. Cursus sit amet dictum sit amet justo donec enim. Vitae congue eu consequat ac felis donec et. Augue interdum velit euismod in pellentesque massa placerat. Enim ut sem viverra aliquet eget sit amet. Velit scelerisque in dictum non consectetur a erat. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nunc faucibus a pellentesque sit amet porttitor eget. Tellus integer feugiat scelerisque varius morbi. Lorem sed risus ultricies tristique nulla aliquet enim tortor at. Eget nulla facilisi etiam dignissim diam quis enim lobortis scelerisque. Adipiscing elit duis tristique sollicitudin. Adipiscing elit pellentesque habitant morbi tristique. Ac tincidunt vitae semper quis lectus nulla at. Maecenas sed enim ut sem viverra. Erat pellentesque adipiscing commodo elit at imperdiet. Dolor morbi non arcu risus quis varius quam quisque. Fringilla urna porttitor rhoncus dolor purus non enim praesent. Tellus integer feugiat scelerisque varius morbi enim nunc faucibus a. Felis eget nunc lobortis mattis aliquam faucibus purus in. Fringilla phasellus faucibus scelerisque eleifend. Pulvinar etiam non quam lacus suspendisse faucibus interdum posuere. Risus ultricies tristique nulla aliquet. Lectus sit amet est placerat. Ac ut consequat semper viverra nam libero justo. Dapibus ultrices in iaculis nunc sed augue. Mattis ullamcorper velit sed ullamcorper. Eget nullam non nisi est. Vitae elementum curabitur vitae nunc sed velit. Sit amet commodo nulla facilisi nullam vehicula ipsum a arcu. Tempor nec feugiat nisl pretium fusce id velit ut. Nulla pellentesque dignissim enim sit amet venenatis. Sed tempus urna et pharetra pharetra. Congue quisque egestas diam in. Convallis posuere morbi leo urna. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Sagittis nisl rhoncus mattis rhoncus urna neque viverra justo. Scelerisque felis imperdiet proin fermentum leo vel. Ut placerat orci nulla pellentesque dignissim enim sit amet. In cursus turpis massa tincidunt dui. Rutrum quisque non tellus orci ac auctor augue mauris augue. Cursus vitae congue mauris rhoncus aenean vel elit scelerisque mauris. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Habitant morbi tristique senectus et netus et. Ridiculus mus mauris vitae ultricies leo. Vitae semper quis lectus nulla at volutpat diam. Purus faucibus ornare suspendisse sed nisi. Enim lobortis scelerisque fermentum dui faucibus in ornare quam. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Varius duis at consectetur lorem donec. Pulvinar pellentesque habitant morbi tristique senectus et netus et. A iaculis at erat pellentesque adipiscing commodo elit at imperdiet. Mi ipsum faucibus vitae aliquet nec. Libero volutpat sed cras ornare arcu dui vivamus arcu. Natoque penatibus et magnis dis parturient montes nascetur ridiculus. Maecenas volutpat blandit aliquam etiam erat velit scelerisque. Cras adipiscing enim eu turpis. Nec tincidunt praesent semper feugiat nibh sed pulvinar. Justo laoreet sit amet cursus sit amet dictum sit. Velit scelerisque in dictum non consectetur a erat nam. Turpis tincidunt id aliquet risus feugiat in ante. Aliquet risus feugiat in ante metus dictum. Hac habitasse platea dictumst quisque sagittis purus sit. Et pharetra pharetra massa massa ultricies. Sit amet nisl suscipit adipiscing bibendum est ultricies integer. Venenatis urna cursus eget nunc scelerisque viverra mauris in. Integer quis auctor elit sed. In est ante in nibh mauris cursus mattis molestie. Scelerisque in dictum non consectetur a erat nam at. Lectus sit amet est placerat in. Sit amet cursus sit amet. Nibh nisl condimentum id venenatis a condimentum. Purus ut faucibus pulvinar elementum integer enim. Pharetra sit amet aliquam id diam maecenas. Id cursus metus aliquam eleifend mi in nulla posuere. Lobortis mattis aliquam faucibus purus in massa tempor nec. Urna neque viverra justo nec ultrices dui sapien eget. Enim ut sem viverra aliquet eget sit amet. In eu mi bibendum neque egestas congue quisque egestas. Enim neque volutpat ac tincidunt. Orci ac auctor augue mauris augue neque gravida in fermentum. Velit aliquet sagittis id consectetur. Enim ut sem viverra aliquet eget sit amet tellus. Semper auctor neque vitae tempus quam pellentesque nec. Non blandit massa enim nec dui nunc. Morbi blandit cursus risus at ultrices mi tempus imperdiet nulla. Arcu non odio euismod lacinia at quis risus. Dictum varius duis at consectetur lorem donec massa. Blandit massa enim nec dui. Nibh ipsum consequat nisl vel. Turpis in eu mi bibendum neque. Ut tristique et egestas quis. Ac odio tempor orci dapibus. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim. Integer feugiat scelerisque varius morbi enim. Libero volutpat sed cras ornare arcu dui. Odio aenean sed adipiscing diam. Et egestas quis ipsum suspendisse ultrices. Aliquet lectus proin nibh nisl condimentum. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh sit. Blandit massa enim nec dui. Tellus molestie nunc non blandit massa enim nec. Tortor vitae purus faucibus ornare suspendisse sed nisi. Nascetur ridiculus mus mauris vitae ultricies leo. Elementum facilisis leo vel fringilla est ullamcorper eget nulla. Diam maecenas ultricies mi eget. Duis tristique sollicitudin nibh sit amet commodo nulla. Tempus iaculis urna id volutpat lacus laoreet non curabitur gravida. Dictumst quisque sagittis purus sit amet. Viverra mauris in aliquam sem. Quis risus sed vulputate odio ut enim blandit volutpat maecenas. Condimentum mattis pellentesque id nibh tortor id. Non sodales neque sodales ut etiam sit amet. Ipsum consequat nisl vel pretium. Cursus in hac habitasse platea dictumst quisque sagittis purus sit. Fringilla est ullamcorper eget nulla facilisi etiam. Tellus elementum sagittis vitae et leo duis ut diam quam. Nisl vel pretium lectus quam id leo in. ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4224367 tomlkit-0.12.4/tests/toml-spec-tests/values/qa-scalar-string-40kb.toml0000644000000000000000000011611514567257576022553 0ustar00long = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor. Amet consectetur adipiscing elit ut. Nulla facilisi etiam dignissim diam quis enim lobortis. Curabitur vitae nunc sed velit dignissim sodales ut eu. Fames ac turpis egestas sed tempus urna et. Facilisi cras fermentum odio eu feugiat pretium. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Est lorem ipsum dolor sit amet consectetur adipiscing elit. Vel quam elementum pulvinar etiam non quam lacus. Pharetra et ultrices neque ornare aenean euismod. Nisl nisi scelerisque eu ultrices. Eget dolor morbi non arcu risus. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Faucibus nisl tincidunt eget nullam. Nisl pretium fusce id velit ut tortor pretium viverra suspendisse. Mauris ultrices eros in cursus. Donec ac odio tempor orci dapibus ultrices in iaculis. Tellus cras adipiscing enim eu turpis egestas pretium aenean pharetra. Eros in cursus turpis massa. Nascetur ridiculus mus mauris vitae ultricies leo integer malesuada nunc. Velit sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Aenean euismod elementum nisi quis eleifend quam. Magnis dis parturient montes nascetur ridiculus mus. Eu tincidunt tortor aliquam nulla facilisi cras. Tristique senectus et netus et malesuada fames. Urna nec tincidunt praesent semper feugiat nibh sed pulvinar. Vitae ultricies leo integer malesuada nunc vel risus commodo viverra. Ac turpis egestas sed tempus urna et. Amet mauris commodo quis imperdiet massa tincidunt. Urna nunc id cursus metus aliquam eleifend mi. In nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Neque aliquam vestibulum morbi blandit cursus. Pulvinar mattis nunc sed blandit libero volutpat sed. Sed egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Blandit cursus risus at ultrices mi tempus. Turpis massa sed elementum tempus egestas sed sed. Dictum varius duis at consectetur lorem. Commodo ullamcorper a lacus vestibulum sed arcu non. Dolor magna eget est lorem. Tincidunt arcu non sodales neque sodales ut etiam sit amet. Sit amet risus nullam eget felis eget nunc lobortis. Risus in hendrerit gravida rutrum quisque non tellus orci. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Morbi tristique senectus et netus et malesuada. In aliquam sem fringilla ut morbi tincidunt. Ornare aenean euismod elementum nisi quis eleifend quam. Sed id semper risus in hendrerit gravida rutrum quisque. Lorem ipsum dolor sit amet consectetur adipiscing elit. A condimentum vitae sapien pellentesque habitant morbi tristique senectus et. Faucibus purus in massa tempor nec feugiat nisl. Vehicula ipsum a arcu cursus vitae congue. Facilisi cras fermentum odio eu feugiat pretium nibh. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Ultrices dui sapien eget mi proin sed libero enim. Nisi est sit amet facilisis magna etiam tempor. Posuere ac ut consequat semper viverra nam. Dis parturient montes nascetur ridiculus mus mauris vitae. Nec sagittis aliquam malesuada bibendum. Mattis pellentesque id nibh tortor id aliquet lectus. Vitae congue eu consequat ac felis donec et. Cras sed felis eget velit aliquet sagittis id consectetur purus. Pellentesque elit ullamcorper dignissim cras tincidunt. Pellentesque dignissim enim sit amet venenatis urna. A cras semper auctor neque vitae tempus. Amet massa vitae tortor condimentum lacinia quis vel eros donec. Tempor commodo ullamcorper a lacus. Nibh tellus molestie nunc non blandit massa enim nec dui. Viverra orci sagittis eu volutpat odio facilisis mauris sit. Sed augue lacus viverra vitae. Vulputate eu scelerisque felis imperdiet proin fermentum leo vel orci. Tellus rutrum tellus pellentesque eu tincidunt tortor. Cras semper auctor neque vitae tempus quam pellentesque nec. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Tristique magna sit amet purus gravida quis blandit turpis. Viverra ipsum nunc aliquet bibendum. Arcu bibendum at varius vel. Amet mattis vulputate enim nulla. Vulputate enim nulla aliquet porttitor. Volutpat blandit aliquam etiam erat velit scelerisque in dictum. Morbi tristique senectus et netus et malesuada fames ac. Faucibus et molestie ac feugiat sed. Tellus elementum sagittis vitae et leo duis. Id aliquet lectus proin nibh. Ornare arcu dui vivamus arcu. Morbi tincidunt augue interdum velit euismod in pellentesque massa placerat. Quis eleifend quam adipiscing vitae. Tristique senectus et netus et malesuada fames ac turpis. Pharetra convallis posuere morbi leo. Ornare arcu odio ut sem nulla pharetra diam sit. Morbi tristique senectus et netus et. Dictum non consectetur a erat nam at lectus urna. Varius vel pharetra vel turpis. Mi ipsum faucibus vitae aliquet. Tellus in metus vulputate eu scelerisque felis imperdiet proin. In est ante in nibh mauris cursus mattis. Massa ultricies mi quis hendrerit dolor magna eget. Fermentum leo vel orci porta. Elit ut aliquam purus sit amet luctus venenatis lectus. Eget aliquet nibh praesent tristique magna sit amet. Arcu non odio euismod lacinia at quis. Montes nascetur ridiculus mus mauris vitae ultricies. Tempus quam pellentesque nec nam aliquam sem et tortor. Morbi leo urna molestie at elementum eu facilisis sed. In fermentum posuere urna nec tincidunt. Neque aliquam vestibulum morbi blandit cursus risus. Vulputate dignissim suspendisse in est ante in nibh mauris cursus. Lorem ipsum dolor sit amet consectetur adipiscing. Orci eu lobortis elementum nibh tellus molestie nunc non. Enim diam vulputate ut pharetra sit amet aliquam. Convallis convallis tellus id interdum velit laoreet id donec ultrices. Sit amet mattis vulputate enim nulla aliquet porttitor lacus luctus. A lacus vestibulum sed arcu non odio. Ut tortor pretium viverra suspendisse potenti nullam ac tortor. Diam vel quam elementum pulvinar etiam non quam. Viverra justo nec ultrices dui. Eu volutpat odio facilisis mauris sit amet massa. Sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Ac felis donec et odio pellentesque. Nisl vel pretium lectus quam id leo in. Ultricies lacus sed turpis tincidunt id. At urna condimentum mattis pellentesque id nibh tortor id. Sem nulla pharetra diam sit amet nisl suscipit. Neque viverra justo nec ultrices. Arcu cursus euismod quis viverra nibh cras pulvinar. Dolor sit amet consectetur adipiscing elit ut aliquam purus. Id diam vel quam elementum pulvinar etiam non. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Id aliquet lectus proin nibh nisl condimentum id venenatis. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh. Sed faucibus turpis in eu mi bibendum neque egestas congue. Consectetur libero id faucibus nisl tincidunt eget nullam. At volutpat diam ut venenatis tellus in metus vulputate eu. Condimentum lacinia quis vel eros donec ac odio. Sit amet porttitor eget dolor morbi non arcu risus quis. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Metus dictum at tempor commodo ullamcorper. At ultrices mi tempus imperdiet nulla. Est ullamcorper eget nulla facilisi etiam dignissim diam quis. Lobortis elementum nibh tellus molestie nunc non. Placerat in egestas erat imperdiet sed. Placerat in egestas erat imperdiet sed euismod. Lobortis feugiat vivamus at augue eget arcu dictum varius. Ut sem nulla pharetra diam sit amet. Et tortor at risus viverra adipiscing at in. Tempor nec feugiat nisl pretium. Cursus euismod quis viverra nibh. Eget mi proin sed libero enim sed. Aliquam id diam maecenas ultricies. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Gravida quis blandit turpis cursus in hac habitasse platea dictumst. Sed tempus urna et pharetra pharetra massa massa. Dolor purus non enim praesent elementum facilisis leo vel. Pharetra vel turpis nunc eget. Quam pellentesque nec nam aliquam sem et tortor consequat id. Orci eu lobortis elementum nibh tellus molestie nunc non. Porttitor leo a diam sollicitudin tempor id. Tincidunt ornare massa eget egestas purus viverra accumsan in nisl. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor sit. Elit ut aliquam purus sit amet luctus venenatis lectus. Velit egestas dui id ornare arcu odio ut sem nulla. Lacus viverra vitae congue eu consequat ac felis donec. Nulla aliquet porttitor lacus luctus accumsan tortor posuere ac ut. Lorem dolor sed viverra ipsum. Blandit libero volutpat sed cras ornare arcu. Egestas erat imperdiet sed euismod nisi porta lorem mollis. Viverra maecenas accumsan lacus vel. Enim neque volutpat ac tincidunt. Porttitor massa id neque aliquam vestibulum morbi blandit cursus risus. Malesuada bibendum arcu vitae elementum curabitur vitae nunc. Et malesuada fames ac turpis egestas integer. Egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Est placerat in egestas erat imperdiet sed. Non arcu risus quis varius quam quisque. Lorem mollis aliquam ut porttitor leo a. Viverra tellus in hac habitasse platea dictumst vestibulum rhoncus. Fermentum iaculis eu non diam. Erat imperdiet sed euismod nisi porta lorem mollis aliquam. Varius vel pharetra vel turpis nunc eget lorem dolor. Rhoncus mattis rhoncus urna neque viverra. Hac habitasse platea dictumst quisque sagittis purus sit. At quis risus sed vulputate odio ut enim. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros. Rutrum quisque non tellus orci ac auctor. Iaculis eu non diam phasellus vestibulum lorem sed. Ut sem nulla pharetra diam sit amet nisl suscipit. Risus at ultrices mi tempus. Vitae tortor condimentum lacinia quis vel eros donec. Sed tempus urna et pharetra. Posuere sollicitudin aliquam ultrices sagittis orci. Congue quisque egestas diam in arcu. Hac habitasse platea dictumst vestibulum rhoncus est pellentesque elit. Pellentesque habitant morbi tristique senectus et netus et. Id interdum velit laoreet id. Fusce ut placerat orci nulla pellentesque dignissim. Pretium nibh ipsum consequat nisl vel pretium. Etiam erat velit scelerisque in dictum non consectetur a. Turpis in eu mi bibendum neque egestas congue quisque egestas. Pulvinar sapien et ligula ullamcorper malesuada. Ultricies tristique nulla aliquet enim tortor at. Suspendisse interdum consectetur libero id faucibus. Lorem sed risus ultricies tristique nulla aliquet. Tristique senectus et netus et malesuada fames. Eu augue ut lectus arcu bibendum at varius vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies. Aliquet eget sit amet tellus cras adipiscing. Massa placerat duis ultricies lacus sed turpis tincidunt id aliquet. Ornare massa eget egestas purus viverra accumsan in nisl. Justo laoreet sit amet cursus sit amet. In metus vulputate eu scelerisque felis imperdiet proin. At erat pellentesque adipiscing commodo elit at. Ipsum suspendisse ultrices gravida dictum fusce. Lectus sit amet est placerat in egestas erat. Aliquam ultrices sagittis orci a. Sagittis id consectetur purus ut faucibus pulvinar elementum. Ornare arcu odio ut sem nulla pharetra diam. Sit amet purus gravida quis blandit turpis cursus. Duis ultricies lacus sed turpis tincidunt. Malesuada fames ac turpis egestas sed tempus urna et. Viverra ipsum nunc aliquet bibendum enim facilisis. Et pharetra pharetra massa massa ultricies mi quis. Eget duis at tellus at urna condimentum mattis. Euismod in pellentesque massa placerat. Enim nunc faucibus a pellentesque sit amet porttitor. Dolor sed viverra ipsum nunc aliquet. Donec enim diam vulputate ut pharetra sit amet. Feugiat sed lectus vestibulum mattis ullamcorper velit sed. Erat pellentesque adipiscing commodo elit at imperdiet. Nisl purus in mollis nunc sed id semper risus. Tincidunt augue interdum velit euismod in pellentesque massa. Facilisis magna etiam tempor orci. Mauris in aliquam sem fringilla ut. Gravida dictum fusce ut placerat orci. Sed risus ultricies tristique nulla. Odio morbi quis commodo odio. Feugiat in ante metus dictum at tempor commodo ullamcorper. Porta non pulvinar neque laoreet suspendisse interdum. Etiam tempor orci eu lobortis elementum. Fusce ut placerat orci nulla pellentesque dignissim. Ornare lectus sit amet est placerat in egestas erat. Quis vel eros donec ac. Elementum pulvinar etiam non quam lacus. Sit amet tellus cras adipiscing enim eu turpis. Amet tellus cras adipiscing enim eu. Sed faucibus turpis in eu mi bibendum. Lectus proin nibh nisl condimentum id. Sollicitudin nibh sit amet commodo nulla. Sed tempus urna et pharetra pharetra massa massa. Magna eget est lorem ipsum. Elit ullamcorper dignissim cras tincidunt lobortis feugiat vivamus at. Fermentum dui faucibus in ornare quam viverra orci sagittis eu. Dignissim convallis aenean et tortor. Ut faucibus pulvinar elementum integer enim neque. Nibh cras pulvinar mattis nunc sed. Pellentesque sit amet porttitor eget dolor morbi. Mi eget mauris pharetra et ultrices neque ornare aenean euismod. Quis risus sed vulputate odio ut enim blandit volutpat. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. In vitae turpis massa sed elementum tempus egestas sed sed. Urna id volutpat lacus laoreet non. Egestas pretium aenean pharetra magna ac placerat. Amet commodo nulla facilisi nullam vehicula ipsum a arcu cursus. Donec et odio pellentesque diam volutpat commodo sed. Etiam non quam lacus suspendisse. Augue neque gravida in fermentum et sollicitudin ac orci. Eu feugiat pretium nibh ipsum. Nam at lectus urna duis convallis convallis tellus id. Egestas integer eget aliquet nibh. Viverra accumsan in nisl nisi scelerisque eu ultrices vitae auctor. Urna condimentum mattis pellentesque id nibh tortor id. In egestas erat imperdiet sed euismod. Ut sem viverra aliquet eget sit amet tellus. Feugiat pretium nibh ipsum consequat nisl vel pretium. Volutpat odio facilisis mauris sit amet. Mi sit amet mauris commodo quis imperdiet massa tincidunt. Neque volutpat ac tincidunt vitae semper quis lectus nulla at. Nec feugiat in fermentum posuere urna nec. Ut venenatis tellus in metus vulputate eu. Vestibulum rhoncus est pellentesque elit ullamcorper dignissim. Eu scelerisque felis imperdiet proin. Vitae et leo duis ut diam quam nulla. Ut venenatis tellus in metus vulputate eu scelerisque. Tincidunt dui ut ornare lectus sit amet. Adipiscing diam donec adipiscing tristique risus. Turpis nunc eget lorem dolor sed viverra ipsum nunc aliquet. Non sodales neque sodales ut. Massa placerat duis ultricies lacus sed turpis tincidunt. Viverra orci sagittis eu volutpat odio facilisis mauris sit amet. Adipiscing vitae proin sagittis nisl. Vitae aliquet nec ullamcorper sit. Potenti nullam ac tortor vitae purus. Ultricies lacus sed turpis tincidunt id. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Semper eget duis at tellus at urna condimentum mattis pellentesque. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin. Dictum fusce ut placerat orci nulla pellentesque dignissim. Amet luctus venenatis lectus magna fringilla urna. Quam quisque id diam vel quam elementum pulvinar. At tempor commodo ullamcorper a. Magna etiam tempor orci eu lobortis. Suspendisse ultrices gravida dictum fusce. Massa ultricies mi quis hendrerit dolor magna. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Aliquet enim tortor at auctor urna nunc id. Semper feugiat nibh sed pulvinar proin gravida. Porttitor rhoncus dolor purus non enim. Metus aliquam eleifend mi in nulla. Lectus arcu bibendum at varius vel pharetra. Sed vulputate odio ut enim blandit volutpat. Et ligula ullamcorper malesuada proin libero nunc consequat interdum varius. Donec et odio pellentesque diam volutpat commodo. Id ornare arcu odio ut sem nulla pharetra diam sit. Est ullamcorper eget nulla facilisi etiam dignissim diam quis enim. Sagittis vitae et leo duis ut diam quam nulla. Elementum nisi quis eleifend quam. Congue mauris rhoncus aenean vel elit. Adipiscing elit duis tristique sollicitudin nibh sit. Egestas egestas fringilla phasellus faucibus scelerisque. Morbi tincidunt augue interdum velit euismod. Massa sed elementum tempus egestas sed sed. Id leo in vitae turpis massa sed elementum tempus egestas. In pellentesque massa placerat duis ultricies lacus sed turpis. Vitae proin sagittis nisl rhoncus mattis rhoncus. Enim tortor at auctor urna nunc id. In fermentum posuere urna nec tincidunt praesent semper feugiat nibh. Aliquam ut porttitor leo a diam sollicitudin tempor id. Pellentesque elit eget gravida cum sociis natoque. Molestie at elementum eu facilisis sed odio morbi quis. Tristique senectus et netus et malesuada fames ac turpis. Proin libero nunc consequat interdum varius sit amet mattis. Pellentesque id nibh tortor id. Risus sed vulputate odio ut enim blandit. Laoreet suspendisse interdum consectetur libero id faucibus nisl tincidunt eget. Morbi tincidunt augue interdum velit euismod in pellentesque. Pharetra pharetra massa massa ultricies mi quis hendrerit. Nunc aliquet bibendum enim facilisis gravida neque. Feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Risus quis varius quam quisque id diam vel. Et ultrices neque ornare aenean. Aliquet sagittis id consectetur purus ut faucibus pulvinar elementum. Nibh ipsum consequat nisl vel. Mauris rhoncus aenean vel elit scelerisque mauris pellentesque pulvinar. Ornare quam viverra orci sagittis eu volutpat odio facilisis. Euismod nisi porta lorem mollis aliquam. Enim ut tellus elementum sagittis. Rhoncus mattis rhoncus urna neque. Malesuada fames ac turpis egestas. Cursus in hac habitasse platea dictumst quisque sagittis. Sit amet aliquam id diam maecenas ultricies mi eget mauris. Enim sit amet venenatis urna cursus eget nunc. Fermentum odio eu feugiat pretium nibh ipsum consequat. Eu scelerisque felis imperdiet proin. Nullam non nisi est sit amet facilisis magna etiam tempor. In mollis nunc sed id semper risus in hendrerit. Sollicitudin nibh sit amet commodo nulla facilisi nullam. Sit amet nisl purus in mollis nunc sed id. Nam libero justo laoreet sit amet cursus sit amet dictum. Condimentum id venenatis a condimentum vitae sapien pellentesque. Porta nibh venenatis cras sed felis. Lectus nulla at volutpat diam ut venenatis tellus in. Aliquam etiam erat velit scelerisque in dictum non consectetur a. Leo vel fringilla est ullamcorper eget. Sodales ut etiam sit amet nisl purus in mollis nunc. Euismod nisi porta lorem mollis aliquam. Ornare arcu odio ut sem nulla. Sed felis eget velit aliquet sagittis id consectetur. Pellentesque nec nam aliquam sem et tortor consequat id. Enim nec dui nunc mattis enim ut tellus elementum. Nullam non nisi est sit amet facilisis magna. Rutrum quisque non tellus orci ac auctor augue. Nunc vel risus commodo viverra maecenas accumsan lacus. Viverra vitae congue eu consequat. Sollicitudin nibh sit amet commodo nulla. Amet volutpat consequat mauris nunc congue nisi. Maecenas pharetra convallis posuere morbi leo urna molestie at. Mattis vulputate enim nulla aliquet porttitor lacus luctus accumsan tortor. Pulvinar sapien et ligula ullamcorper malesuada proin libero nunc consequat. Adipiscing diam donec adipiscing tristique risus. Elementum curabitur vitae nunc sed velit dignissim sodales ut. Eleifend donec pretium vulputate sapien nec. Commodo quis imperdiet massa tincidunt nunc pulvinar. Proin libero nunc consequat interdum varius sit amet mattis. Facilisis gravida neque convallis a cras semper auctor neque vitae. Quisque egestas diam in arcu cursus. Nunc eget lorem dolor sed viverra ipsum. Mauris sit amet massa vitae tortor condimentum lacinia quis vel. Aliquam sem et tortor consequat id porta nibh venenatis cras. Nunc sed id semper risus in. Enim sed faucibus turpis in eu mi bibendum neque. Molestie nunc non blandit massa enim. Enim praesent elementum facilisis leo vel fringilla est ullamcorper. Semper risus in hendrerit gravida rutrum quisque non tellus orci. Ac turpis egestas maecenas pharetra. In nulla posuere sollicitudin aliquam. Justo nec ultrices dui sapien eget mi proin sed libero. In ornare quam viverra orci sagittis eu. Proin nibh nisl condimentum id venenatis. Morbi enim nunc faucibus a pellentesque sit amet porttitor eget. Quis risus sed vulputate odio ut enim blandit. Risus feugiat in ante metus dictum at tempor commodo. Sodales neque sodales ut etiam. Nunc id cursus metus aliquam. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim enim. Augue ut lectus arcu bibendum at. Quis varius quam quisque id diam vel quam. Egestas congue quisque egestas diam in arcu. Condimentum mattis pellentesque id nibh tortor id aliquet lectus. Enim lobortis scelerisque fermentum dui faucibus in. In tellus integer feugiat scelerisque varius morbi enim nunc. Mattis molestie a iaculis at erat pellentesque. Elit scelerisque mauris pellentesque pulvinar pellentesque habitant morbi tristique. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Nisl rhoncus mattis rhoncus urna neque. Ac auctor augue mauris augue neque gravida in fermentum et. Sodales ut eu sem integer vitae justo eget. Sed egestas egestas fringilla phasellus. Viverra adipiscing at in tellus integer feugiat scelerisque varius. Purus gravida quis blandit turpis. Id porta nibh venenatis cras sed. Mattis vulputate enim nulla aliquet porttitor lacus. Augue eget arcu dictum varius duis at consectetur lorem donec. Nulla at volutpat diam ut venenatis tellus in metus. Aliquam etiam erat velit scelerisque in dictum non consectetur. Turpis cursus in hac habitasse platea dictumst. Consequat mauris nunc congue nisi vitae suscipit tellus. Volutpat maecenas volutpat blandit aliquam etiam. Massa massa ultricies mi quis hendrerit dolor magna eget est. Velit egestas dui id ornare arcu. Non consectetur a erat nam at. Orci sagittis eu volutpat odio facilisis mauris sit amet. Dui id ornare arcu odio. Sed arcu non odio euismod lacinia. Feugiat in ante metus dictum. Gravida arcu ac tortor dignissim convallis. Egestas sed tempus urna et pharetra pharetra massa massa. Nulla facilisi nullam vehicula ipsum a arcu. Ipsum a arcu cursus vitae congue mauris. Porttitor rhoncus dolor purus non. Magna sit amet purus gravida quis blandit. Sapien eget mi proin sed libero enim sed faucibus turpis. Nisl nunc mi ipsum faucibus vitae aliquet nec ullamcorper sit. Pellentesque dignissim enim sit amet venenatis urna cursus eget. Pharetra massa massa ultricies mi quis hendrerit. Sapien nec sagittis aliquam malesuada bibendum. Nunc scelerisque viverra mauris in aliquam sem fringilla ut. Dolor magna eget est lorem ipsum dolor. Amet commodo nulla facilisi nullam. Pellentesque elit ullamcorper dignissim cras. Id porta nibh venenatis cras sed felis eget. Nam at lectus urna duis. Laoreet non curabitur gravida arcu ac tortor dignissim convallis. Nunc lobortis mattis aliquam faucibus purus in massa tempor. Sit amet luctus venenatis lectus magna fringilla. Duis ultricies lacus sed turpis tincidunt id. Sed velit dignissim sodales ut eu. Ut tortor pretium viverra suspendisse potenti nullam. Iaculis at erat pellentesque adipiscing. Ipsum nunc aliquet bibendum enim facilisis gravida neque. Nulla aliquet enim tortor at auctor urna nunc id cursus. Amet cursus sit amet dictum sit amet justo donec enim. Enim nunc faucibus a pellentesque sit amet porttitor eget dolor. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros in. Nulla facilisi etiam dignissim diam quis enim. Ut enim blandit volutpat maecenas volutpat blandit aliquam etiam erat. Imperdiet proin fermentum leo vel orci porta non pulvinar neque. Vel fringilla est ullamcorper eget nulla. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Ipsum nunc aliquet bibendum enim facilisis gravida neque convallis a. Arcu cursus vitae congue mauris rhoncus aenean vel elit. Augue eget arcu dictum varius duis. Tristique et egestas quis ipsum. Quis varius quam quisque id. Varius sit amet mattis vulputate. Mattis molestie a iaculis at erat pellentesque. Libero justo laoreet sit amet cursus. Aliquam id diam maecenas ultricies mi eget mauris pharetra. Ut eu sem integer vitae justo eget. Fames ac turpis egestas sed. Suspendisse in est ante in nibh mauris cursus mattis. Faucibus pulvinar elementum integer enim neque volutpat ac tincidunt vitae. Neque vitae tempus quam pellentesque nec nam aliquam. Lobortis elementum nibh tellus molestie nunc non. Lacus vel facilisis volutpat est velit egestas dui. Justo laoreet sit amet cursus sit amet dictum sit amet. Adipiscing enim eu turpis egestas pretium aenean pharetra magna. Cursus metus aliquam eleifend mi in nulla posuere. Nibh mauris cursus mattis molestie a. Dignissim diam quis enim lobortis scelerisque fermentum. A scelerisque purus semper eget duis at tellus. Lacus sed turpis tincidunt id aliquet risus feugiat in. Non tellus orci ac auctor. Ultrices in iaculis nunc sed augue lacus. Tincidunt tortor aliquam nulla facilisi cras. Nulla facilisi nullam vehicula ipsum a arcu cursus vitae congue. Eget magna fermentum iaculis eu non diam phasellus. Pharetra massa massa ultricies mi quis. Eget mauris pharetra et ultrices neque ornare. Aliquam faucibus purus in massa. Facilisi morbi tempus iaculis urna id volutpat lacus. Accumsan lacus vel facilisis volutpat. Curabitur gravida arcu ac tortor. Quam lacus suspendisse faucibus interdum. Elementum nibh tellus molestie nunc non blandit massa enim. Libero id faucibus nisl tincidunt. Bibendum ut tristique et egestas. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Augue interdum velit euismod in pellentesque. Adipiscing diam donec adipiscing tristique risus nec feugiat. Fringilla ut morbi tincidunt augue interdum velit. Vitae et leo duis ut diam quam nulla porttitor massa. Egestas integer eget aliquet nibh praesent tristique. Posuere sollicitudin aliquam ultrices sagittis orci a. Nisi est sit amet facilisis. Risus quis varius quam quisque id diam. Faucibus turpis in eu mi. Et molestie ac feugiat sed lectus vestibulum. Porttitor lacus luctus accumsan tortor posuere ac. Platea dictumst vestibulum rhoncus est pellentesque. Tortor pretium viverra suspendisse potenti nullam ac tortor. Enim praesent elementum facilisis leo vel fringilla est. Proin libero nunc consequat interdum varius sit amet mattis vulputate. Turpis egestas pretium aenean pharetra magna ac placerat vestibulum lectus. Nulla pharetra diam sit amet nisl suscipit. Mauris nunc congue nisi vitae suscipit tellus mauris a diam. Faucibus in ornare quam viverra orci sagittis eu volutpat. Volutpat consequat mauris nunc congue nisi vitae. Dui nunc mattis enim ut tellus. Adipiscing elit ut aliquam purus sit amet luctus. Tempus egestas sed sed risus. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Massa ultricies mi quis hendrerit dolor magna eget. Pulvinar mattis nunc sed blandit libero volutpat sed cras ornare. Ut eu sem integer vitae justo eget magna fermentum. Ornare quam viverra orci sagittis. Eget dolor morbi non arcu risus quis varius quam. Tincidunt praesent semper feugiat nibh sed pulvinar. Sit amet justo donec enim diam vulputate. Dui faucibus in ornare quam viverra. Tincidunt tortor aliquam nulla facilisi cras fermentum odio eu. Turpis egestas sed tempus urna et. Pretium quam vulputate dignissim suspendisse in est ante in. Morbi quis commodo odio aenean sed adipiscing diam donec. Nunc mattis enim ut tellus elementum sagittis vitae et. Diam vel quam elementum pulvinar etiam non quam. Convallis posuere morbi leo urna molestie at elementum eu. Adipiscing at in tellus integer feugiat scelerisque varius morbi. Quis varius quam quisque id diam vel quam elementum. Dui accumsan sit amet nulla. Adipiscing elit duis tristique sollicitudin nibh sit amet commodo. Viverra ipsum nunc aliquet bibendum enim facilisis. Porta lorem mollis aliquam ut. Velit ut tortor pretium viverra suspendisse potenti. Quis viverra nibh cras pulvinar mattis nunc sed blandit. Pharetra magna ac placerat vestibulum. Mauris ultrices eros in cursus turpis massa. Lacus vestibulum sed arcu non odio euismod lacinia at. Dapibus ultrices in iaculis nunc sed. Cras adipiscing enim eu turpis egestas. Eget arcu dictum varius duis at consectetur. Consequat id porta nibh venenatis cras sed felis eget velit. Integer enim neque volutpat ac tincidunt vitae. Feugiat pretium nibh ipsum consequat nisl vel pretium lectus. Ut morbi tincidunt augue interdum velit euismod. Sed cras ornare arcu dui vivamus arcu felis bibendum ut. Eget felis eget nunc lobortis mattis aliquam faucibus purus in. Luctus venenatis lectus magna fringilla urna porttitor rhoncus dolor. Nisl nunc mi ipsum faucibus vitae. Proin fermentum leo vel orci porta. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. Et leo duis ut diam quam. Eros in cursus turpis massa tincidunt. Volutpat est velit egestas dui id. Commodo odio aenean sed adipiscing diam. Quis blandit turpis cursus in hac habitasse platea dictumst quisque. Magna fringilla urna porttitor rhoncus dolor. Amet consectetur adipiscing elit ut aliquam purus sit amet. Vitae justo eget magna fermentum iaculis eu non diam. Hendrerit dolor magna eget est. Ac placerat vestibulum lectus mauris ultrices eros in cursus turpis. Egestas diam in arcu cursus. At varius vel pharetra vel turpis nunc. Lacus vel facilisis volutpat est velit. Ut ornare lectus sit amet est placerat in egestas. Quam adipiscing vitae proin sagittis nisl rhoncus. Dolor purus non enim praesent. Urna condimentum mattis pellentesque id. Magnis dis parturient montes nascetur ridiculus. Feugiat nisl pretium fusce id. Sed cras ornare arcu dui vivamus. Vitae turpis massa sed elementum tempus egestas sed sed. Ac feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Ac ut consequat semper viverra nam libero. Consectetur lorem donec massa sapien faucibus. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Eu turpis egestas pretium aenean pharetra. Nisl rhoncus mattis rhoncus urna neque viverra justo nec ultrices. Pellentesque sit amet porttitor eget dolor morbi non arcu. Vitae justo eget magna fermentum iaculis. Quis auctor elit sed vulputate mi sit. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Semper auctor neque vitae tempus quam pellentesque nec nam. Rhoncus dolor purus non enim. Sed turpis tincidunt id aliquet risus feugiat. Sit amet justo donec enim diam vulputate ut pharetra sit. Risus pretium quam vulputate dignissim suspendisse in est ante in. Massa sapien faucibus et molestie ac feugiat. Id aliquet risus feugiat in ante metus. Risus ultricies tristique nulla aliquet enim tortor at auctor urna. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper morbi. Lacus sed turpis tincidunt id aliquet risus feugiat in. Risus ultricies tristique nulla aliquet enim tortor. In ornare quam viverra orci sagittis eu volutpat. Netus et malesuada fames ac turpis egestas sed tempus urna. Fames ac turpis egestas maecenas pharetra convallis posuere morbi. Etiam erat velit scelerisque in dictum non. Cursus turpis massa tincidunt dui ut ornare lectus. Tristique sollicitudin nibh sit amet commodo nulla facilisi. Pellentesque pulvinar pellentesque habitant morbi tristique senectus et. Aliquet eget sit amet tellus cras. Nullam ac tortor vitae purus faucibus ornare. Lacus viverra vitae congue eu consequat. Vulputate ut pharetra sit amet. Est ante in nibh mauris cursus mattis molestie a. Ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Et tortor at risus viverra. Sed libero enim sed faucibus turpis in eu. Id cursus metus aliquam eleifend mi in nulla posuere sollicitudin. Risus viverra adipiscing at in. Imperdiet massa tincidunt nunc pulvinar sapien et. Nec feugiat in fermentum posuere urna nec tincidunt. Ultricies mi eget mauris pharetra et. Morbi tristique senectus et netus et malesuada fames ac. At quis risus sed vulputate. Interdum velit laoreet id donec. Sapien pellentesque habitant morbi tristique. Pharetra vel turpis nunc eget lorem dolor sed viverra. In massa tempor nec feugiat nisl. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Mauris augue neque gravida in. Faucibus vitae aliquet nec ullamcorper sit amet risus. Id velit ut tortor pretium viverra suspendisse potenti. Leo integer malesuada nunc vel risus commodo viverra maecenas. Risus quis varius quam quisque id. Aliquam malesuada bibendum arcu vitae elementum curabitur vitae. Vestibulum lectus mauris ultrices eros in cursus turpis. Fermentum posuere urna nec tincidunt. Magna etiam tempor orci eu lobortis elementum nibh tellus molestie. Id ornare arcu odio ut. Facilisi nullam vehicula ipsum a arcu cursus vitae congue. Nulla pellentesque dignissim enim sit amet venenatis urna cursus eget. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Quis ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Sed cras ornare arcu dui vivamus arcu felis. Egestas diam in arcu cursus euismod quis. Tincidunt dui ut ornare lectus. Morbi tristique senectus et netus et. Ornare arcu dui vivamus arcu felis bibendum ut tristique. Habitant morbi tristique senectus et netus et malesuada fames ac. Ut tristique et egestas quis. Mollis aliquam ut porttitor leo. Venenatis tellus in metus vulputate eu scelerisque felis imperdiet proin. Sagittis eu volutpat odio facilisis mauris sit amet massa. Eu facilisis sed odio morbi. Nunc consequat interdum varius sit amet mattis. Velit dignissim sodales ut eu. Pellentesque eu tincidunt tortor aliquam. Porta lorem mollis aliquam ut porttitor. Rhoncus urna neque viverra justo nec ultrices. Viverra suspendisse potenti nullam ac tortor vitae purus. Fermentum posuere urna nec tincidunt praesent semper feugiat nibh sed. Purus sit amet luctus venenatis lectus magna fringilla urna porttitor. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Nisl nisi scelerisque eu ultrices vitae auctor. In vitae turpis massa sed elementum tempus egestas. Cursus sit amet dictum sit amet justo donec enim. Vitae congue eu consequat ac felis donec et. Augue interdum velit euismod in pellentesque massa placerat. Enim ut sem viverra aliquet eget sit amet. Velit scelerisque in dictum non consectetur a erat. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nunc faucibus a pellentesque sit amet porttitor eget. Tellus integer feugiat scelerisque varius morbi. Lorem sed risus ultricies tristique nulla aliquet enim tortor at. Eget nulla facilisi etiam dignissim diam quis enim lobortis scelerisque. Adipiscing elit duis tristique sollicitudin. Adipiscing elit pellentesque habitant morbi tristique. Ac tincidunt vitae semper quis lectus nulla at. Maecenas sed enim ut sem viverra. Erat pellentesque adipiscing commodo elit at imperdiet. Dolor morbi non arcu risus quis varius quam quisque. Fringilla urna porttitor rhoncus dolor purus non enim praesent. Tellus integer feugiat scelerisque varius morbi enim nunc faucibus a. Felis eget nunc lobortis mattis aliquam faucibus purus in. Fringilla phasellus faucibus scelerisque eleifend. Pulvinar etiam non quam lacus suspendisse faucibus interdum posuere. Risus ultricies tristique nulla aliquet. Lectus sit amet est placerat. Ac ut consequat semper viverra nam libero justo. Dapibus ultrices in iaculis nunc sed augue. Mattis ullamcorper velit sed ullamcorper. Eget nullam non nisi est. Vitae elementum curabitur vitae nunc sed velit. Sit amet commodo nulla facilisi nullam vehicula ipsum a arcu. Tempor nec feugiat nisl pretium fusce id velit ut. Nulla pellentesque dignissim enim sit amet venenatis. Sed tempus urna et pharetra pharetra. Congue quisque egestas diam in. Convallis posuere morbi leo urna. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Sagittis nisl rhoncus mattis rhoncus urna neque viverra justo. Scelerisque felis imperdiet proin fermentum leo vel. Ut placerat orci nulla pellentesque dignissim enim sit amet. In cursus turpis massa tincidunt dui. Rutrum quisque non tellus orci ac auctor augue mauris augue. Cursus vitae congue mauris rhoncus aenean vel elit scelerisque mauris. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Habitant morbi tristique senectus et netus et. Ridiculus mus mauris vitae ultricies leo. Vitae semper quis lectus nulla at volutpat diam. Purus faucibus ornare suspendisse sed nisi. Enim lobortis scelerisque fermentum dui faucibus in ornare quam. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Varius duis at consectetur lorem donec. Pulvinar pellentesque habitant morbi tristique senectus et netus et. A iaculis at erat pellentesque adipiscing commodo elit at imperdiet. Mi ipsum faucibus vitae aliquet nec. Libero volutpat sed cras ornare arcu dui vivamus arcu. Natoque penatibus et magnis dis parturient montes nascetur ridiculus. Maecenas volutpat blandit aliquam etiam erat velit scelerisque. Cras adipiscing enim eu turpis. Nec tincidunt praesent semper feugiat nibh sed pulvinar. Justo laoreet sit amet cursus sit amet dictum sit. Velit scelerisque in dictum non consectetur a erat nam. Turpis tincidunt id aliquet risus feugiat in ante. Aliquet risus feugiat in ante metus dictum. Hac habitasse platea dictumst quisque sagittis purus sit. Et pharetra pharetra massa massa ultricies. Sit amet nisl suscipit adipiscing bibendum est ultricies integer. Venenatis urna cursus eget nunc scelerisque viverra mauris in. Integer quis auctor elit sed. In est ante in nibh mauris cursus mattis molestie. Scelerisque in dictum non consectetur a erat nam at. Lectus sit amet est placerat in. Sit amet cursus sit amet. Nibh nisl condimentum id venenatis a condimentum. Purus ut faucibus pulvinar elementum integer enim. Pharetra sit amet aliquam id diam maecenas. Id cursus metus aliquam eleifend mi in nulla posuere. Lobortis mattis aliquam faucibus purus in massa tempor nec. Urna neque viverra justo nec ultrices dui sapien eget. Enim ut sem viverra aliquet eget sit amet. In eu mi bibendum neque egestas congue quisque egestas. Enim neque volutpat ac tincidunt. Orci ac auctor augue mauris augue neque gravida in fermentum. Velit aliquet sagittis id consectetur. Enim ut sem viverra aliquet eget sit amet tellus. Semper auctor neque vitae tempus quam pellentesque nec. Non blandit massa enim nec dui nunc. Morbi blandit cursus risus at ultrices mi tempus imperdiet nulla. Arcu non odio euismod lacinia at quis risus. Dictum varius duis at consectetur lorem donec massa. Blandit massa enim nec dui. Nibh ipsum consequat nisl vel. Turpis in eu mi bibendum neque. Ut tristique et egestas quis. Ac odio tempor orci dapibus. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim. Integer feugiat scelerisque varius morbi enim. Libero volutpat sed cras ornare arcu dui. Odio aenean sed adipiscing diam. Et egestas quis ipsum suspendisse ultrices. Aliquet lectus proin nibh nisl condimentum. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh sit. Blandit massa enim nec dui. Tellus molestie nunc non blandit massa enim nec. Tortor vitae purus faucibus ornare suspendisse sed nisi. Nascetur ridiculus mus mauris vitae ultricies leo. Elementum facilisis leo vel fringilla est ullamcorper eget nulla. Diam maecenas ultricies mi eget. Duis tristique sollicitudin nibh sit amet commodo nulla. Tempus iaculis urna id volutpat lacus laoreet non curabitur gravida. Dictumst quisque sagittis purus sit amet. Viverra mauris in aliquam sem. Quis risus sed vulputate odio ut enim blandit volutpat maecenas. Condimentum mattis pellentesque id nibh tortor id. Non sodales neque sodales ut etiam sit amet. Ipsum consequat nisl vel pretium. Cursus in hac habitasse platea dictumst quisque sagittis purus sit. Fringilla est ullamcorper eget nulla facilisi etiam. Tellus elementum sagittis vitae et leo duis ut diam quam. Nisl vel pretium lectus quam id leo in." ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4224367 tomlkit-0.12.4/tests/toml-spec-tests/values/qa-scalar-string-40kb.yaml0000644000000000000000000012016214567257576022537 0ustar00long: >- Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor. Amet consectetur adipiscing elit ut. Nulla facilisi etiam dignissim diam quis enim lobortis. Curabitur vitae nunc sed velit dignissim sodales ut eu. Fames ac turpis egestas sed tempus urna et. Facilisi cras fermentum odio eu feugiat pretium. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Est lorem ipsum dolor sit amet consectetur adipiscing elit. Vel quam elementum pulvinar etiam non quam lacus. Pharetra et ultrices neque ornare aenean euismod. Nisl nisi scelerisque eu ultrices. Eget dolor morbi non arcu risus. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Faucibus nisl tincidunt eget nullam. Nisl pretium fusce id velit ut tortor pretium viverra suspendisse. Mauris ultrices eros in cursus. Donec ac odio tempor orci dapibus ultrices in iaculis. Tellus cras adipiscing enim eu turpis egestas pretium aenean pharetra. Eros in cursus turpis massa. Nascetur ridiculus mus mauris vitae ultricies leo integer malesuada nunc. Velit sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Aenean euismod elementum nisi quis eleifend quam. Magnis dis parturient montes nascetur ridiculus mus. Eu tincidunt tortor aliquam nulla facilisi cras. Tristique senectus et netus et malesuada fames. Urna nec tincidunt praesent semper feugiat nibh sed pulvinar. Vitae ultricies leo integer malesuada nunc vel risus commodo viverra. Ac turpis egestas sed tempus urna et. Amet mauris commodo quis imperdiet massa tincidunt. Urna nunc id cursus metus aliquam eleifend mi. In nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Neque aliquam vestibulum morbi blandit cursus. Pulvinar mattis nunc sed blandit libero volutpat sed. Sed egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Blandit cursus risus at ultrices mi tempus. Turpis massa sed elementum tempus egestas sed sed. Dictum varius duis at consectetur lorem. Commodo ullamcorper a lacus vestibulum sed arcu non. Dolor magna eget est lorem. Tincidunt arcu non sodales neque sodales ut etiam sit amet. Sit amet risus nullam eget felis eget nunc lobortis. Risus in hendrerit gravida rutrum quisque non tellus orci. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Morbi tristique senectus et netus et malesuada. In aliquam sem fringilla ut morbi tincidunt. Ornare aenean euismod elementum nisi quis eleifend quam. Sed id semper risus in hendrerit gravida rutrum quisque. Lorem ipsum dolor sit amet consectetur adipiscing elit. A condimentum vitae sapien pellentesque habitant morbi tristique senectus et. Faucibus purus in massa tempor nec feugiat nisl. Vehicula ipsum a arcu cursus vitae congue. Facilisi cras fermentum odio eu feugiat pretium nibh. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Ultrices dui sapien eget mi proin sed libero enim. Nisi est sit amet facilisis magna etiam tempor. Posuere ac ut consequat semper viverra nam. Dis parturient montes nascetur ridiculus mus mauris vitae. Nec sagittis aliquam malesuada bibendum. Mattis pellentesque id nibh tortor id aliquet lectus. Vitae congue eu consequat ac felis donec et. Cras sed felis eget velit aliquet sagittis id consectetur purus. Pellentesque elit ullamcorper dignissim cras tincidunt. Pellentesque dignissim enim sit amet venenatis urna. A cras semper auctor neque vitae tempus. Amet massa vitae tortor condimentum lacinia quis vel eros donec. Tempor commodo ullamcorper a lacus. Nibh tellus molestie nunc non blandit massa enim nec dui. Viverra orci sagittis eu volutpat odio facilisis mauris sit. Sed augue lacus viverra vitae. Vulputate eu scelerisque felis imperdiet proin fermentum leo vel orci. Tellus rutrum tellus pellentesque eu tincidunt tortor. Cras semper auctor neque vitae tempus quam pellentesque nec. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Tristique magna sit amet purus gravida quis blandit turpis. Viverra ipsum nunc aliquet bibendum. Arcu bibendum at varius vel. Amet mattis vulputate enim nulla. Vulputate enim nulla aliquet porttitor. Volutpat blandit aliquam etiam erat velit scelerisque in dictum. Morbi tristique senectus et netus et malesuada fames ac. Faucibus et molestie ac feugiat sed. Tellus elementum sagittis vitae et leo duis. Id aliquet lectus proin nibh. Ornare arcu dui vivamus arcu. Morbi tincidunt augue interdum velit euismod in pellentesque massa placerat. Quis eleifend quam adipiscing vitae. Tristique senectus et netus et malesuada fames ac turpis. Pharetra convallis posuere morbi leo. Ornare arcu odio ut sem nulla pharetra diam sit. Morbi tristique senectus et netus et. Dictum non consectetur a erat nam at lectus urna. Varius vel pharetra vel turpis. Mi ipsum faucibus vitae aliquet. Tellus in metus vulputate eu scelerisque felis imperdiet proin. In est ante in nibh mauris cursus mattis. Massa ultricies mi quis hendrerit dolor magna eget. Fermentum leo vel orci porta. Elit ut aliquam purus sit amet luctus venenatis lectus. Eget aliquet nibh praesent tristique magna sit amet. Arcu non odio euismod lacinia at quis. Montes nascetur ridiculus mus mauris vitae ultricies. Tempus quam pellentesque nec nam aliquam sem et tortor. Morbi leo urna molestie at elementum eu facilisis sed. In fermentum posuere urna nec tincidunt. Neque aliquam vestibulum morbi blandit cursus risus. Vulputate dignissim suspendisse in est ante in nibh mauris cursus. Lorem ipsum dolor sit amet consectetur adipiscing. Orci eu lobortis elementum nibh tellus molestie nunc non. Enim diam vulputate ut pharetra sit amet aliquam. Convallis convallis tellus id interdum velit laoreet id donec ultrices. Sit amet mattis vulputate enim nulla aliquet porttitor lacus luctus. A lacus vestibulum sed arcu non odio. Ut tortor pretium viverra suspendisse potenti nullam ac tortor. Diam vel quam elementum pulvinar etiam non quam. Viverra justo nec ultrices dui. Eu volutpat odio facilisis mauris sit amet massa. Sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Ac felis donec et odio pellentesque. Nisl vel pretium lectus quam id leo in. Ultricies lacus sed turpis tincidunt id. At urna condimentum mattis pellentesque id nibh tortor id. Sem nulla pharetra diam sit amet nisl suscipit. Neque viverra justo nec ultrices. Arcu cursus euismod quis viverra nibh cras pulvinar. Dolor sit amet consectetur adipiscing elit ut aliquam purus. Id diam vel quam elementum pulvinar etiam non. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Id aliquet lectus proin nibh nisl condimentum id venenatis. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh. Sed faucibus turpis in eu mi bibendum neque egestas congue. Consectetur libero id faucibus nisl tincidunt eget nullam. At volutpat diam ut venenatis tellus in metus vulputate eu. Condimentum lacinia quis vel eros donec ac odio. Sit amet porttitor eget dolor morbi non arcu risus quis. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Metus dictum at tempor commodo ullamcorper. At ultrices mi tempus imperdiet nulla. Est ullamcorper eget nulla facilisi etiam dignissim diam quis. Lobortis elementum nibh tellus molestie nunc non. Placerat in egestas erat imperdiet sed. Placerat in egestas erat imperdiet sed euismod. Lobortis feugiat vivamus at augue eget arcu dictum varius. Ut sem nulla pharetra diam sit amet. Et tortor at risus viverra adipiscing at in. Tempor nec feugiat nisl pretium. Cursus euismod quis viverra nibh. Eget mi proin sed libero enim sed. Aliquam id diam maecenas ultricies. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Gravida quis blandit turpis cursus in hac habitasse platea dictumst. Sed tempus urna et pharetra pharetra massa massa. Dolor purus non enim praesent elementum facilisis leo vel. Pharetra vel turpis nunc eget. Quam pellentesque nec nam aliquam sem et tortor consequat id. Orci eu lobortis elementum nibh tellus molestie nunc non. Porttitor leo a diam sollicitudin tempor id. Tincidunt ornare massa eget egestas purus viverra accumsan in nisl. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor sit. Elit ut aliquam purus sit amet luctus venenatis lectus. Velit egestas dui id ornare arcu odio ut sem nulla. Lacus viverra vitae congue eu consequat ac felis donec. Nulla aliquet porttitor lacus luctus accumsan tortor posuere ac ut. Lorem dolor sed viverra ipsum. Blandit libero volutpat sed cras ornare arcu. Egestas erat imperdiet sed euismod nisi porta lorem mollis. Viverra maecenas accumsan lacus vel. Enim neque volutpat ac tincidunt. Porttitor massa id neque aliquam vestibulum morbi blandit cursus risus. Malesuada bibendum arcu vitae elementum curabitur vitae nunc. Et malesuada fames ac turpis egestas integer. Egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Est placerat in egestas erat imperdiet sed. Non arcu risus quis varius quam quisque. Lorem mollis aliquam ut porttitor leo a. Viverra tellus in hac habitasse platea dictumst vestibulum rhoncus. Fermentum iaculis eu non diam. Erat imperdiet sed euismod nisi porta lorem mollis aliquam. Varius vel pharetra vel turpis nunc eget lorem dolor. Rhoncus mattis rhoncus urna neque viverra. Hac habitasse platea dictumst quisque sagittis purus sit. At quis risus sed vulputate odio ut enim. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros. Rutrum quisque non tellus orci ac auctor. Iaculis eu non diam phasellus vestibulum lorem sed. Ut sem nulla pharetra diam sit amet nisl suscipit. Risus at ultrices mi tempus. Vitae tortor condimentum lacinia quis vel eros donec. Sed tempus urna et pharetra. Posuere sollicitudin aliquam ultrices sagittis orci. Congue quisque egestas diam in arcu. Hac habitasse platea dictumst vestibulum rhoncus est pellentesque elit. Pellentesque habitant morbi tristique senectus et netus et. Id interdum velit laoreet id. Fusce ut placerat orci nulla pellentesque dignissim. Pretium nibh ipsum consequat nisl vel pretium. Etiam erat velit scelerisque in dictum non consectetur a. Turpis in eu mi bibendum neque egestas congue quisque egestas. Pulvinar sapien et ligula ullamcorper malesuada. Ultricies tristique nulla aliquet enim tortor at. Suspendisse interdum consectetur libero id faucibus. Lorem sed risus ultricies tristique nulla aliquet. Tristique senectus et netus et malesuada fames. Eu augue ut lectus arcu bibendum at varius vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies. Aliquet eget sit amet tellus cras adipiscing. Massa placerat duis ultricies lacus sed turpis tincidunt id aliquet. Ornare massa eget egestas purus viverra accumsan in nisl. Justo laoreet sit amet cursus sit amet. In metus vulputate eu scelerisque felis imperdiet proin. At erat pellentesque adipiscing commodo elit at. Ipsum suspendisse ultrices gravida dictum fusce. Lectus sit amet est placerat in egestas erat. Aliquam ultrices sagittis orci a. Sagittis id consectetur purus ut faucibus pulvinar elementum. Ornare arcu odio ut sem nulla pharetra diam. Sit amet purus gravida quis blandit turpis cursus. Duis ultricies lacus sed turpis tincidunt. Malesuada fames ac turpis egestas sed tempus urna et. Viverra ipsum nunc aliquet bibendum enim facilisis. Et pharetra pharetra massa massa ultricies mi quis. Eget duis at tellus at urna condimentum mattis. Euismod in pellentesque massa placerat. Enim nunc faucibus a pellentesque sit amet porttitor. Dolor sed viverra ipsum nunc aliquet. Donec enim diam vulputate ut pharetra sit amet. Feugiat sed lectus vestibulum mattis ullamcorper velit sed. Erat pellentesque adipiscing commodo elit at imperdiet. Nisl purus in mollis nunc sed id semper risus. Tincidunt augue interdum velit euismod in pellentesque massa. Facilisis magna etiam tempor orci. Mauris in aliquam sem fringilla ut. Gravida dictum fusce ut placerat orci. Sed risus ultricies tristique nulla. Odio morbi quis commodo odio. Feugiat in ante metus dictum at tempor commodo ullamcorper. Porta non pulvinar neque laoreet suspendisse interdum. Etiam tempor orci eu lobortis elementum. Fusce ut placerat orci nulla pellentesque dignissim. Ornare lectus sit amet est placerat in egestas erat. Quis vel eros donec ac. Elementum pulvinar etiam non quam lacus. Sit amet tellus cras adipiscing enim eu turpis. Amet tellus cras adipiscing enim eu. Sed faucibus turpis in eu mi bibendum. Lectus proin nibh nisl condimentum id. Sollicitudin nibh sit amet commodo nulla. Sed tempus urna et pharetra pharetra massa massa. Magna eget est lorem ipsum. Elit ullamcorper dignissim cras tincidunt lobortis feugiat vivamus at. Fermentum dui faucibus in ornare quam viverra orci sagittis eu. Dignissim convallis aenean et tortor. Ut faucibus pulvinar elementum integer enim neque. Nibh cras pulvinar mattis nunc sed. Pellentesque sit amet porttitor eget dolor morbi. Mi eget mauris pharetra et ultrices neque ornare aenean euismod. Quis risus sed vulputate odio ut enim blandit volutpat. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. In vitae turpis massa sed elementum tempus egestas sed sed. Urna id volutpat lacus laoreet non. Egestas pretium aenean pharetra magna ac placerat. Amet commodo nulla facilisi nullam vehicula ipsum a arcu cursus. Donec et odio pellentesque diam volutpat commodo sed. Etiam non quam lacus suspendisse. Augue neque gravida in fermentum et sollicitudin ac orci. Eu feugiat pretium nibh ipsum. Nam at lectus urna duis convallis convallis tellus id. Egestas integer eget aliquet nibh. Viverra accumsan in nisl nisi scelerisque eu ultrices vitae auctor. Urna condimentum mattis pellentesque id nibh tortor id. In egestas erat imperdiet sed euismod. Ut sem viverra aliquet eget sit amet tellus. Feugiat pretium nibh ipsum consequat nisl vel pretium. Volutpat odio facilisis mauris sit amet. Mi sit amet mauris commodo quis imperdiet massa tincidunt. Neque volutpat ac tincidunt vitae semper quis lectus nulla at. Nec feugiat in fermentum posuere urna nec. Ut venenatis tellus in metus vulputate eu. Vestibulum rhoncus est pellentesque elit ullamcorper dignissim. Eu scelerisque felis imperdiet proin. Vitae et leo duis ut diam quam nulla. Ut venenatis tellus in metus vulputate eu scelerisque. Tincidunt dui ut ornare lectus sit amet. Adipiscing diam donec adipiscing tristique risus. Turpis nunc eget lorem dolor sed viverra ipsum nunc aliquet. Non sodales neque sodales ut. Massa placerat duis ultricies lacus sed turpis tincidunt. Viverra orci sagittis eu volutpat odio facilisis mauris sit amet. Adipiscing vitae proin sagittis nisl. Vitae aliquet nec ullamcorper sit. Potenti nullam ac tortor vitae purus. Ultricies lacus sed turpis tincidunt id. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Semper eget duis at tellus at urna condimentum mattis pellentesque. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin. Dictum fusce ut placerat orci nulla pellentesque dignissim. Amet luctus venenatis lectus magna fringilla urna. Quam quisque id diam vel quam elementum pulvinar. At tempor commodo ullamcorper a. Magna etiam tempor orci eu lobortis. Suspendisse ultrices gravida dictum fusce. Massa ultricies mi quis hendrerit dolor magna. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Aliquet enim tortor at auctor urna nunc id. Semper feugiat nibh sed pulvinar proin gravida. Porttitor rhoncus dolor purus non enim. Metus aliquam eleifend mi in nulla. Lectus arcu bibendum at varius vel pharetra. Sed vulputate odio ut enim blandit volutpat. Et ligula ullamcorper malesuada proin libero nunc consequat interdum varius. Donec et odio pellentesque diam volutpat commodo. Id ornare arcu odio ut sem nulla pharetra diam sit. Est ullamcorper eget nulla facilisi etiam dignissim diam quis enim. Sagittis vitae et leo duis ut diam quam nulla. Elementum nisi quis eleifend quam. Congue mauris rhoncus aenean vel elit. Adipiscing elit duis tristique sollicitudin nibh sit. Egestas egestas fringilla phasellus faucibus scelerisque. Morbi tincidunt augue interdum velit euismod. Massa sed elementum tempus egestas sed sed. Id leo in vitae turpis massa sed elementum tempus egestas. In pellentesque massa placerat duis ultricies lacus sed turpis. Vitae proin sagittis nisl rhoncus mattis rhoncus. Enim tortor at auctor urna nunc id. In fermentum posuere urna nec tincidunt praesent semper feugiat nibh. Aliquam ut porttitor leo a diam sollicitudin tempor id. Pellentesque elit eget gravida cum sociis natoque. Molestie at elementum eu facilisis sed odio morbi quis. Tristique senectus et netus et malesuada fames ac turpis. Proin libero nunc consequat interdum varius sit amet mattis. Pellentesque id nibh tortor id. Risus sed vulputate odio ut enim blandit. Laoreet suspendisse interdum consectetur libero id faucibus nisl tincidunt eget. Morbi tincidunt augue interdum velit euismod in pellentesque. Pharetra pharetra massa massa ultricies mi quis hendrerit. Nunc aliquet bibendum enim facilisis gravida neque. Feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Risus quis varius quam quisque id diam vel. Et ultrices neque ornare aenean. Aliquet sagittis id consectetur purus ut faucibus pulvinar elementum. Nibh ipsum consequat nisl vel. Mauris rhoncus aenean vel elit scelerisque mauris pellentesque pulvinar. Ornare quam viverra orci sagittis eu volutpat odio facilisis. Euismod nisi porta lorem mollis aliquam. Enim ut tellus elementum sagittis. Rhoncus mattis rhoncus urna neque. Malesuada fames ac turpis egestas. Cursus in hac habitasse platea dictumst quisque sagittis. Sit amet aliquam id diam maecenas ultricies mi eget mauris. Enim sit amet venenatis urna cursus eget nunc. Fermentum odio eu feugiat pretium nibh ipsum consequat. Eu scelerisque felis imperdiet proin. Nullam non nisi est sit amet facilisis magna etiam tempor. In mollis nunc sed id semper risus in hendrerit. Sollicitudin nibh sit amet commodo nulla facilisi nullam. Sit amet nisl purus in mollis nunc sed id. Nam libero justo laoreet sit amet cursus sit amet dictum. Condimentum id venenatis a condimentum vitae sapien pellentesque. Porta nibh venenatis cras sed felis. Lectus nulla at volutpat diam ut venenatis tellus in. Aliquam etiam erat velit scelerisque in dictum non consectetur a. Leo vel fringilla est ullamcorper eget. Sodales ut etiam sit amet nisl purus in mollis nunc. Euismod nisi porta lorem mollis aliquam. Ornare arcu odio ut sem nulla. Sed felis eget velit aliquet sagittis id consectetur. Pellentesque nec nam aliquam sem et tortor consequat id. Enim nec dui nunc mattis enim ut tellus elementum. Nullam non nisi est sit amet facilisis magna. Rutrum quisque non tellus orci ac auctor augue. Nunc vel risus commodo viverra maecenas accumsan lacus. Viverra vitae congue eu consequat. Sollicitudin nibh sit amet commodo nulla. Amet volutpat consequat mauris nunc congue nisi. Maecenas pharetra convallis posuere morbi leo urna molestie at. Mattis vulputate enim nulla aliquet porttitor lacus luctus accumsan tortor. Pulvinar sapien et ligula ullamcorper malesuada proin libero nunc consequat. Adipiscing diam donec adipiscing tristique risus. Elementum curabitur vitae nunc sed velit dignissim sodales ut. Eleifend donec pretium vulputate sapien nec. Commodo quis imperdiet massa tincidunt nunc pulvinar. Proin libero nunc consequat interdum varius sit amet mattis. Facilisis gravida neque convallis a cras semper auctor neque vitae. Quisque egestas diam in arcu cursus. Nunc eget lorem dolor sed viverra ipsum. Mauris sit amet massa vitae tortor condimentum lacinia quis vel. Aliquam sem et tortor consequat id porta nibh venenatis cras. Nunc sed id semper risus in. Enim sed faucibus turpis in eu mi bibendum neque. Molestie nunc non blandit massa enim. Enim praesent elementum facilisis leo vel fringilla est ullamcorper. Semper risus in hendrerit gravida rutrum quisque non tellus orci. Ac turpis egestas maecenas pharetra. In nulla posuere sollicitudin aliquam. Justo nec ultrices dui sapien eget mi proin sed libero. In ornare quam viverra orci sagittis eu. Proin nibh nisl condimentum id venenatis. Morbi enim nunc faucibus a pellentesque sit amet porttitor eget. Quis risus sed vulputate odio ut enim blandit. Risus feugiat in ante metus dictum at tempor commodo. Sodales neque sodales ut etiam. Nunc id cursus metus aliquam. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim enim. Augue ut lectus arcu bibendum at. Quis varius quam quisque id diam vel quam. Egestas congue quisque egestas diam in arcu. Condimentum mattis pellentesque id nibh tortor id aliquet lectus. Enim lobortis scelerisque fermentum dui faucibus in. In tellus integer feugiat scelerisque varius morbi enim nunc. Mattis molestie a iaculis at erat pellentesque. Elit scelerisque mauris pellentesque pulvinar pellentesque habitant morbi tristique. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Nisl rhoncus mattis rhoncus urna neque. Ac auctor augue mauris augue neque gravida in fermentum et. Sodales ut eu sem integer vitae justo eget. Sed egestas egestas fringilla phasellus. Viverra adipiscing at in tellus integer feugiat scelerisque varius. Purus gravida quis blandit turpis. Id porta nibh venenatis cras sed. Mattis vulputate enim nulla aliquet porttitor lacus. Augue eget arcu dictum varius duis at consectetur lorem donec. Nulla at volutpat diam ut venenatis tellus in metus. Aliquam etiam erat velit scelerisque in dictum non consectetur. Turpis cursus in hac habitasse platea dictumst. Consequat mauris nunc congue nisi vitae suscipit tellus. Volutpat maecenas volutpat blandit aliquam etiam. Massa massa ultricies mi quis hendrerit dolor magna eget est. Velit egestas dui id ornare arcu. Non consectetur a erat nam at. Orci sagittis eu volutpat odio facilisis mauris sit amet. Dui id ornare arcu odio. Sed arcu non odio euismod lacinia. Feugiat in ante metus dictum. Gravida arcu ac tortor dignissim convallis. Egestas sed tempus urna et pharetra pharetra massa massa. Nulla facilisi nullam vehicula ipsum a arcu. Ipsum a arcu cursus vitae congue mauris. Porttitor rhoncus dolor purus non. Magna sit amet purus gravida quis blandit. Sapien eget mi proin sed libero enim sed faucibus turpis. Nisl nunc mi ipsum faucibus vitae aliquet nec ullamcorper sit. Pellentesque dignissim enim sit amet venenatis urna cursus eget. Pharetra massa massa ultricies mi quis hendrerit. Sapien nec sagittis aliquam malesuada bibendum. Nunc scelerisque viverra mauris in aliquam sem fringilla ut. Dolor magna eget est lorem ipsum dolor. Amet commodo nulla facilisi nullam. Pellentesque elit ullamcorper dignissim cras. Id porta nibh venenatis cras sed felis eget. Nam at lectus urna duis. Laoreet non curabitur gravida arcu ac tortor dignissim convallis. Nunc lobortis mattis aliquam faucibus purus in massa tempor. Sit amet luctus venenatis lectus magna fringilla. Duis ultricies lacus sed turpis tincidunt id. Sed velit dignissim sodales ut eu. Ut tortor pretium viverra suspendisse potenti nullam. Iaculis at erat pellentesque adipiscing. Ipsum nunc aliquet bibendum enim facilisis gravida neque. Nulla aliquet enim tortor at auctor urna nunc id cursus. Amet cursus sit amet dictum sit amet justo donec enim. Enim nunc faucibus a pellentesque sit amet porttitor eget dolor. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros in. Nulla facilisi etiam dignissim diam quis enim. Ut enim blandit volutpat maecenas volutpat blandit aliquam etiam erat. Imperdiet proin fermentum leo vel orci porta non pulvinar neque. Vel fringilla est ullamcorper eget nulla. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Ipsum nunc aliquet bibendum enim facilisis gravida neque convallis a. Arcu cursus vitae congue mauris rhoncus aenean vel elit. Augue eget arcu dictum varius duis. Tristique et egestas quis ipsum. Quis varius quam quisque id. Varius sit amet mattis vulputate. Mattis molestie a iaculis at erat pellentesque. Libero justo laoreet sit amet cursus. Aliquam id diam maecenas ultricies mi eget mauris pharetra. Ut eu sem integer vitae justo eget. Fames ac turpis egestas sed. Suspendisse in est ante in nibh mauris cursus mattis. Faucibus pulvinar elementum integer enim neque volutpat ac tincidunt vitae. Neque vitae tempus quam pellentesque nec nam aliquam. Lobortis elementum nibh tellus molestie nunc non. Lacus vel facilisis volutpat est velit egestas dui. Justo laoreet sit amet cursus sit amet dictum sit amet. Adipiscing enim eu turpis egestas pretium aenean pharetra magna. Cursus metus aliquam eleifend mi in nulla posuere. Nibh mauris cursus mattis molestie a. Dignissim diam quis enim lobortis scelerisque fermentum. A scelerisque purus semper eget duis at tellus. Lacus sed turpis tincidunt id aliquet risus feugiat in. Non tellus orci ac auctor. Ultrices in iaculis nunc sed augue lacus. Tincidunt tortor aliquam nulla facilisi cras. Nulla facilisi nullam vehicula ipsum a arcu cursus vitae congue. Eget magna fermentum iaculis eu non diam phasellus. Pharetra massa massa ultricies mi quis. Eget mauris pharetra et ultrices neque ornare. Aliquam faucibus purus in massa. Facilisi morbi tempus iaculis urna id volutpat lacus. Accumsan lacus vel facilisis volutpat. Curabitur gravida arcu ac tortor. Quam lacus suspendisse faucibus interdum. Elementum nibh tellus molestie nunc non blandit massa enim. Libero id faucibus nisl tincidunt. Bibendum ut tristique et egestas. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Augue interdum velit euismod in pellentesque. Adipiscing diam donec adipiscing tristique risus nec feugiat. Fringilla ut morbi tincidunt augue interdum velit. Vitae et leo duis ut diam quam nulla porttitor massa. Egestas integer eget aliquet nibh praesent tristique. Posuere sollicitudin aliquam ultrices sagittis orci a. Nisi est sit amet facilisis. Risus quis varius quam quisque id diam. Faucibus turpis in eu mi. Et molestie ac feugiat sed lectus vestibulum. Porttitor lacus luctus accumsan tortor posuere ac. Platea dictumst vestibulum rhoncus est pellentesque. Tortor pretium viverra suspendisse potenti nullam ac tortor. Enim praesent elementum facilisis leo vel fringilla est. Proin libero nunc consequat interdum varius sit amet mattis vulputate. Turpis egestas pretium aenean pharetra magna ac placerat vestibulum lectus. Nulla pharetra diam sit amet nisl suscipit. Mauris nunc congue nisi vitae suscipit tellus mauris a diam. Faucibus in ornare quam viverra orci sagittis eu volutpat. Volutpat consequat mauris nunc congue nisi vitae. Dui nunc mattis enim ut tellus. Adipiscing elit ut aliquam purus sit amet luctus. Tempus egestas sed sed risus. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Massa ultricies mi quis hendrerit dolor magna eget. Pulvinar mattis nunc sed blandit libero volutpat sed cras ornare. Ut eu sem integer vitae justo eget magna fermentum. Ornare quam viverra orci sagittis. Eget dolor morbi non arcu risus quis varius quam. Tincidunt praesent semper feugiat nibh sed pulvinar. Sit amet justo donec enim diam vulputate. Dui faucibus in ornare quam viverra. Tincidunt tortor aliquam nulla facilisi cras fermentum odio eu. Turpis egestas sed tempus urna et. Pretium quam vulputate dignissim suspendisse in est ante in. Morbi quis commodo odio aenean sed adipiscing diam donec. Nunc mattis enim ut tellus elementum sagittis vitae et. Diam vel quam elementum pulvinar etiam non quam. Convallis posuere morbi leo urna molestie at elementum eu. Adipiscing at in tellus integer feugiat scelerisque varius morbi. Quis varius quam quisque id diam vel quam elementum. Dui accumsan sit amet nulla. Adipiscing elit duis tristique sollicitudin nibh sit amet commodo. Viverra ipsum nunc aliquet bibendum enim facilisis. Porta lorem mollis aliquam ut. Velit ut tortor pretium viverra suspendisse potenti. Quis viverra nibh cras pulvinar mattis nunc sed blandit. Pharetra magna ac placerat vestibulum. Mauris ultrices eros in cursus turpis massa. Lacus vestibulum sed arcu non odio euismod lacinia at. Dapibus ultrices in iaculis nunc sed. Cras adipiscing enim eu turpis egestas. Eget arcu dictum varius duis at consectetur. Consequat id porta nibh venenatis cras sed felis eget velit. Integer enim neque volutpat ac tincidunt vitae. Feugiat pretium nibh ipsum consequat nisl vel pretium lectus. Ut morbi tincidunt augue interdum velit euismod. Sed cras ornare arcu dui vivamus arcu felis bibendum ut. Eget felis eget nunc lobortis mattis aliquam faucibus purus in. Luctus venenatis lectus magna fringilla urna porttitor rhoncus dolor. Nisl nunc mi ipsum faucibus vitae. Proin fermentum leo vel orci porta. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. Et leo duis ut diam quam. Eros in cursus turpis massa tincidunt. Volutpat est velit egestas dui id. Commodo odio aenean sed adipiscing diam. Quis blandit turpis cursus in hac habitasse platea dictumst quisque. Magna fringilla urna porttitor rhoncus dolor. Amet consectetur adipiscing elit ut aliquam purus sit amet. Vitae justo eget magna fermentum iaculis eu non diam. Hendrerit dolor magna eget est. Ac placerat vestibulum lectus mauris ultrices eros in cursus turpis. Egestas diam in arcu cursus. At varius vel pharetra vel turpis nunc. Lacus vel facilisis volutpat est velit. Ut ornare lectus sit amet est placerat in egestas. Quam adipiscing vitae proin sagittis nisl rhoncus. Dolor purus non enim praesent. Urna condimentum mattis pellentesque id. Magnis dis parturient montes nascetur ridiculus. Feugiat nisl pretium fusce id. Sed cras ornare arcu dui vivamus. Vitae turpis massa sed elementum tempus egestas sed sed. Ac feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Ac ut consequat semper viverra nam libero. Consectetur lorem donec massa sapien faucibus. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Eu turpis egestas pretium aenean pharetra. Nisl rhoncus mattis rhoncus urna neque viverra justo nec ultrices. Pellentesque sit amet porttitor eget dolor morbi non arcu. Vitae justo eget magna fermentum iaculis. Quis auctor elit sed vulputate mi sit. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Semper auctor neque vitae tempus quam pellentesque nec nam. Rhoncus dolor purus non enim. Sed turpis tincidunt id aliquet risus feugiat. Sit amet justo donec enim diam vulputate ut pharetra sit. Risus pretium quam vulputate dignissim suspendisse in est ante in. Massa sapien faucibus et molestie ac feugiat. Id aliquet risus feugiat in ante metus. Risus ultricies tristique nulla aliquet enim tortor at auctor urna. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper morbi. Lacus sed turpis tincidunt id aliquet risus feugiat in. Risus ultricies tristique nulla aliquet enim tortor. In ornare quam viverra orci sagittis eu volutpat. Netus et malesuada fames ac turpis egestas sed tempus urna. Fames ac turpis egestas maecenas pharetra convallis posuere morbi. Etiam erat velit scelerisque in dictum non. Cursus turpis massa tincidunt dui ut ornare lectus. Tristique sollicitudin nibh sit amet commodo nulla facilisi. Pellentesque pulvinar pellentesque habitant morbi tristique senectus et. Aliquet eget sit amet tellus cras. Nullam ac tortor vitae purus faucibus ornare. Lacus viverra vitae congue eu consequat. Vulputate ut pharetra sit amet. Est ante in nibh mauris cursus mattis molestie a. Ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Et tortor at risus viverra. Sed libero enim sed faucibus turpis in eu. Id cursus metus aliquam eleifend mi in nulla posuere sollicitudin. Risus viverra adipiscing at in. Imperdiet massa tincidunt nunc pulvinar sapien et. Nec feugiat in fermentum posuere urna nec tincidunt. Ultricies mi eget mauris pharetra et. Morbi tristique senectus et netus et malesuada fames ac. At quis risus sed vulputate. Interdum velit laoreet id donec. Sapien pellentesque habitant morbi tristique. Pharetra vel turpis nunc eget lorem dolor sed viverra. In massa tempor nec feugiat nisl. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Mauris augue neque gravida in. Faucibus vitae aliquet nec ullamcorper sit amet risus. Id velit ut tortor pretium viverra suspendisse potenti. Leo integer malesuada nunc vel risus commodo viverra maecenas. Risus quis varius quam quisque id. Aliquam malesuada bibendum arcu vitae elementum curabitur vitae. Vestibulum lectus mauris ultrices eros in cursus turpis. Fermentum posuere urna nec tincidunt. Magna etiam tempor orci eu lobortis elementum nibh tellus molestie. Id ornare arcu odio ut. Facilisi nullam vehicula ipsum a arcu cursus vitae congue. Nulla pellentesque dignissim enim sit amet venenatis urna cursus eget. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Quis ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Sed cras ornare arcu dui vivamus arcu felis. Egestas diam in arcu cursus euismod quis. Tincidunt dui ut ornare lectus. Morbi tristique senectus et netus et. Ornare arcu dui vivamus arcu felis bibendum ut tristique. Habitant morbi tristique senectus et netus et malesuada fames ac. Ut tristique et egestas quis. Mollis aliquam ut porttitor leo. Venenatis tellus in metus vulputate eu scelerisque felis imperdiet proin. Sagittis eu volutpat odio facilisis mauris sit amet massa. Eu facilisis sed odio morbi. Nunc consequat interdum varius sit amet mattis. Velit dignissim sodales ut eu. Pellentesque eu tincidunt tortor aliquam. Porta lorem mollis aliquam ut porttitor. Rhoncus urna neque viverra justo nec ultrices. Viverra suspendisse potenti nullam ac tortor vitae purus. Fermentum posuere urna nec tincidunt praesent semper feugiat nibh sed. Purus sit amet luctus venenatis lectus magna fringilla urna porttitor. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Nisl nisi scelerisque eu ultrices vitae auctor. In vitae turpis massa sed elementum tempus egestas. Cursus sit amet dictum sit amet justo donec enim. Vitae congue eu consequat ac felis donec et. Augue interdum velit euismod in pellentesque massa placerat. Enim ut sem viverra aliquet eget sit amet. Velit scelerisque in dictum non consectetur a erat. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nunc faucibus a pellentesque sit amet porttitor eget. Tellus integer feugiat scelerisque varius morbi. Lorem sed risus ultricies tristique nulla aliquet enim tortor at. Eget nulla facilisi etiam dignissim diam quis enim lobortis scelerisque. Adipiscing elit duis tristique sollicitudin. Adipiscing elit pellentesque habitant morbi tristique. Ac tincidunt vitae semper quis lectus nulla at. Maecenas sed enim ut sem viverra. Erat pellentesque adipiscing commodo elit at imperdiet. Dolor morbi non arcu risus quis varius quam quisque. Fringilla urna porttitor rhoncus dolor purus non enim praesent. Tellus integer feugiat scelerisque varius morbi enim nunc faucibus a. Felis eget nunc lobortis mattis aliquam faucibus purus in. Fringilla phasellus faucibus scelerisque eleifend. Pulvinar etiam non quam lacus suspendisse faucibus interdum posuere. Risus ultricies tristique nulla aliquet. Lectus sit amet est placerat. Ac ut consequat semper viverra nam libero justo. Dapibus ultrices in iaculis nunc sed augue. Mattis ullamcorper velit sed ullamcorper. Eget nullam non nisi est. Vitae elementum curabitur vitae nunc sed velit. Sit amet commodo nulla facilisi nullam vehicula ipsum a arcu. Tempor nec feugiat nisl pretium fusce id velit ut. Nulla pellentesque dignissim enim sit amet venenatis. Sed tempus urna et pharetra pharetra. Congue quisque egestas diam in. Convallis posuere morbi leo urna. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Sagittis nisl rhoncus mattis rhoncus urna neque viverra justo. Scelerisque felis imperdiet proin fermentum leo vel. Ut placerat orci nulla pellentesque dignissim enim sit amet. In cursus turpis massa tincidunt dui. Rutrum quisque non tellus orci ac auctor augue mauris augue. Cursus vitae congue mauris rhoncus aenean vel elit scelerisque mauris. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Habitant morbi tristique senectus et netus et. Ridiculus mus mauris vitae ultricies leo. Vitae semper quis lectus nulla at volutpat diam. Purus faucibus ornare suspendisse sed nisi. Enim lobortis scelerisque fermentum dui faucibus in ornare quam. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Varius duis at consectetur lorem donec. Pulvinar pellentesque habitant morbi tristique senectus et netus et. A iaculis at erat pellentesque adipiscing commodo elit at imperdiet. Mi ipsum faucibus vitae aliquet nec. Libero volutpat sed cras ornare arcu dui vivamus arcu. Natoque penatibus et magnis dis parturient montes nascetur ridiculus. Maecenas volutpat blandit aliquam etiam erat velit scelerisque. Cras adipiscing enim eu turpis. Nec tincidunt praesent semper feugiat nibh sed pulvinar. Justo laoreet sit amet cursus sit amet dictum sit. Velit scelerisque in dictum non consectetur a erat nam. Turpis tincidunt id aliquet risus feugiat in ante. Aliquet risus feugiat in ante metus dictum. Hac habitasse platea dictumst quisque sagittis purus sit. Et pharetra pharetra massa massa ultricies. Sit amet nisl suscipit adipiscing bibendum est ultricies integer. Venenatis urna cursus eget nunc scelerisque viverra mauris in. Integer quis auctor elit sed. In est ante in nibh mauris cursus mattis molestie. Scelerisque in dictum non consectetur a erat nam at. Lectus sit amet est placerat in. Sit amet cursus sit amet. Nibh nisl condimentum id venenatis a condimentum. Purus ut faucibus pulvinar elementum integer enim. Pharetra sit amet aliquam id diam maecenas. Id cursus metus aliquam eleifend mi in nulla posuere. Lobortis mattis aliquam faucibus purus in massa tempor nec. Urna neque viverra justo nec ultrices dui sapien eget. Enim ut sem viverra aliquet eget sit amet. In eu mi bibendum neque egestas congue quisque egestas. Enim neque volutpat ac tincidunt. Orci ac auctor augue mauris augue neque gravida in fermentum. Velit aliquet sagittis id consectetur. Enim ut sem viverra aliquet eget sit amet tellus. Semper auctor neque vitae tempus quam pellentesque nec. Non blandit massa enim nec dui nunc. Morbi blandit cursus risus at ultrices mi tempus imperdiet nulla. Arcu non odio euismod lacinia at quis risus. Dictum varius duis at consectetur lorem donec massa. Blandit massa enim nec dui. Nibh ipsum consequat nisl vel. Turpis in eu mi bibendum neque. Ut tristique et egestas quis. Ac odio tempor orci dapibus. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim. Integer feugiat scelerisque varius morbi enim. Libero volutpat sed cras ornare arcu dui. Odio aenean sed adipiscing diam. Et egestas quis ipsum suspendisse ultrices. Aliquet lectus proin nibh nisl condimentum. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh sit. Blandit massa enim nec dui. Tellus molestie nunc non blandit massa enim nec. Tortor vitae purus faucibus ornare suspendisse sed nisi. Nascetur ridiculus mus mauris vitae ultricies leo. Elementum facilisis leo vel fringilla est ullamcorper eget nulla. Diam maecenas ultricies mi eget. Duis tristique sollicitudin nibh sit amet commodo nulla. Tempus iaculis urna id volutpat lacus laoreet non curabitur gravida. Dictumst quisque sagittis purus sit amet. Viverra mauris in aliquam sem. Quis risus sed vulputate odio ut enim blandit volutpat maecenas. Condimentum mattis pellentesque id nibh tortor id. Non sodales neque sodales ut etiam sit amet. Ipsum consequat nisl vel pretium. Cursus in hac habitasse platea dictumst quisque sagittis purus sit. Fringilla est ullamcorper eget nulla facilisi etiam. Tellus elementum sagittis vitae et leo duis ut diam quam. Nisl vel pretium lectus quam id leo in. ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4224367 tomlkit-0.12.4/tests/toml-spec-tests/values/qa-scalar-string-multiline-40kb.toml0000644000000000000000000011612114567257576024550 0ustar00long = '''Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor. Amet consectetur adipiscing elit ut. Nulla facilisi etiam dignissim diam quis enim lobortis. Curabitur vitae nunc sed velit dignissim sodales ut eu. Fames ac turpis egestas sed tempus urna et. Facilisi cras fermentum odio eu feugiat pretium. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Est lorem ipsum dolor sit amet consectetur adipiscing elit. Vel quam elementum pulvinar etiam non quam lacus. Pharetra et ultrices neque ornare aenean euismod. Nisl nisi scelerisque eu ultrices. Eget dolor morbi non arcu risus. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Faucibus nisl tincidunt eget nullam. Nisl pretium fusce id velit ut tortor pretium viverra suspendisse. Mauris ultrices eros in cursus. Donec ac odio tempor orci dapibus ultrices in iaculis. Tellus cras adipiscing enim eu turpis egestas pretium aenean pharetra. Eros in cursus turpis massa. Nascetur ridiculus mus mauris vitae ultricies leo integer malesuada nunc. Velit sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Aenean euismod elementum nisi quis eleifend quam. Magnis dis parturient montes nascetur ridiculus mus. Eu tincidunt tortor aliquam nulla facilisi cras. Tristique senectus et netus et malesuada fames. Urna nec tincidunt praesent semper feugiat nibh sed pulvinar. Vitae ultricies leo integer malesuada nunc vel risus commodo viverra. Ac turpis egestas sed tempus urna et. Amet mauris commodo quis imperdiet massa tincidunt. Urna nunc id cursus metus aliquam eleifend mi. In nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Neque aliquam vestibulum morbi blandit cursus. Pulvinar mattis nunc sed blandit libero volutpat sed. Sed egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Blandit cursus risus at ultrices mi tempus. Turpis massa sed elementum tempus egestas sed sed. Dictum varius duis at consectetur lorem. Commodo ullamcorper a lacus vestibulum sed arcu non. Dolor magna eget est lorem. Tincidunt arcu non sodales neque sodales ut etiam sit amet. Sit amet risus nullam eget felis eget nunc lobortis. Risus in hendrerit gravida rutrum quisque non tellus orci. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Morbi tristique senectus et netus et malesuada. In aliquam sem fringilla ut morbi tincidunt. Ornare aenean euismod elementum nisi quis eleifend quam. Sed id semper risus in hendrerit gravida rutrum quisque. Lorem ipsum dolor sit amet consectetur adipiscing elit. A condimentum vitae sapien pellentesque habitant morbi tristique senectus et. Faucibus purus in massa tempor nec feugiat nisl. Vehicula ipsum a arcu cursus vitae congue. Facilisi cras fermentum odio eu feugiat pretium nibh. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Ultrices dui sapien eget mi proin sed libero enim. Nisi est sit amet facilisis magna etiam tempor. Posuere ac ut consequat semper viverra nam. Dis parturient montes nascetur ridiculus mus mauris vitae. Nec sagittis aliquam malesuada bibendum. Mattis pellentesque id nibh tortor id aliquet lectus. Vitae congue eu consequat ac felis donec et. Cras sed felis eget velit aliquet sagittis id consectetur purus. Pellentesque elit ullamcorper dignissim cras tincidunt. Pellentesque dignissim enim sit amet venenatis urna. A cras semper auctor neque vitae tempus. Amet massa vitae tortor condimentum lacinia quis vel eros donec. Tempor commodo ullamcorper a lacus. Nibh tellus molestie nunc non blandit massa enim nec dui. Viverra orci sagittis eu volutpat odio facilisis mauris sit. Sed augue lacus viverra vitae. Vulputate eu scelerisque felis imperdiet proin fermentum leo vel orci. Tellus rutrum tellus pellentesque eu tincidunt tortor. Cras semper auctor neque vitae tempus quam pellentesque nec. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Tristique magna sit amet purus gravida quis blandit turpis. Viverra ipsum nunc aliquet bibendum. Arcu bibendum at varius vel. Amet mattis vulputate enim nulla. Vulputate enim nulla aliquet porttitor. Volutpat blandit aliquam etiam erat velit scelerisque in dictum. Morbi tristique senectus et netus et malesuada fames ac. Faucibus et molestie ac feugiat sed. Tellus elementum sagittis vitae et leo duis. Id aliquet lectus proin nibh. Ornare arcu dui vivamus arcu. Morbi tincidunt augue interdum velit euismod in pellentesque massa placerat. Quis eleifend quam adipiscing vitae. Tristique senectus et netus et malesuada fames ac turpis. Pharetra convallis posuere morbi leo. Ornare arcu odio ut sem nulla pharetra diam sit. Morbi tristique senectus et netus et. Dictum non consectetur a erat nam at lectus urna. Varius vel pharetra vel turpis. Mi ipsum faucibus vitae aliquet. Tellus in metus vulputate eu scelerisque felis imperdiet proin. In est ante in nibh mauris cursus mattis. Massa ultricies mi quis hendrerit dolor magna eget. Fermentum leo vel orci porta. Elit ut aliquam purus sit amet luctus venenatis lectus. Eget aliquet nibh praesent tristique magna sit amet. Arcu non odio euismod lacinia at quis. Montes nascetur ridiculus mus mauris vitae ultricies. Tempus quam pellentesque nec nam aliquam sem et tortor. Morbi leo urna molestie at elementum eu facilisis sed. In fermentum posuere urna nec tincidunt. Neque aliquam vestibulum morbi blandit cursus risus. Vulputate dignissim suspendisse in est ante in nibh mauris cursus. Lorem ipsum dolor sit amet consectetur adipiscing. Orci eu lobortis elementum nibh tellus molestie nunc non. Enim diam vulputate ut pharetra sit amet aliquam. Convallis convallis tellus id interdum velit laoreet id donec ultrices. Sit amet mattis vulputate enim nulla aliquet porttitor lacus luctus. A lacus vestibulum sed arcu non odio. Ut tortor pretium viverra suspendisse potenti nullam ac tortor. Diam vel quam elementum pulvinar etiam non quam. Viverra justo nec ultrices dui. Eu volutpat odio facilisis mauris sit amet massa. Sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Ac felis donec et odio pellentesque. Nisl vel pretium lectus quam id leo in. Ultricies lacus sed turpis tincidunt id. At urna condimentum mattis pellentesque id nibh tortor id. Sem nulla pharetra diam sit amet nisl suscipit. Neque viverra justo nec ultrices. Arcu cursus euismod quis viverra nibh cras pulvinar. Dolor sit amet consectetur adipiscing elit ut aliquam purus. Id diam vel quam elementum pulvinar etiam non. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Id aliquet lectus proin nibh nisl condimentum id venenatis. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh. Sed faucibus turpis in eu mi bibendum neque egestas congue. Consectetur libero id faucibus nisl tincidunt eget nullam. At volutpat diam ut venenatis tellus in metus vulputate eu. Condimentum lacinia quis vel eros donec ac odio. Sit amet porttitor eget dolor morbi non arcu risus quis. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Metus dictum at tempor commodo ullamcorper. At ultrices mi tempus imperdiet nulla. Est ullamcorper eget nulla facilisi etiam dignissim diam quis. Lobortis elementum nibh tellus molestie nunc non. Placerat in egestas erat imperdiet sed. Placerat in egestas erat imperdiet sed euismod. Lobortis feugiat vivamus at augue eget arcu dictum varius. Ut sem nulla pharetra diam sit amet. Et tortor at risus viverra adipiscing at in. Tempor nec feugiat nisl pretium. Cursus euismod quis viverra nibh. Eget mi proin sed libero enim sed. Aliquam id diam maecenas ultricies. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Gravida quis blandit turpis cursus in hac habitasse platea dictumst. Sed tempus urna et pharetra pharetra massa massa. Dolor purus non enim praesent elementum facilisis leo vel. Pharetra vel turpis nunc eget. Quam pellentesque nec nam aliquam sem et tortor consequat id. Orci eu lobortis elementum nibh tellus molestie nunc non. Porttitor leo a diam sollicitudin tempor id. Tincidunt ornare massa eget egestas purus viverra accumsan in nisl. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor sit. Elit ut aliquam purus sit amet luctus venenatis lectus. Velit egestas dui id ornare arcu odio ut sem nulla. Lacus viverra vitae congue eu consequat ac felis donec. Nulla aliquet porttitor lacus luctus accumsan tortor posuere ac ut. Lorem dolor sed viverra ipsum. Blandit libero volutpat sed cras ornare arcu. Egestas erat imperdiet sed euismod nisi porta lorem mollis. Viverra maecenas accumsan lacus vel. Enim neque volutpat ac tincidunt. Porttitor massa id neque aliquam vestibulum morbi blandit cursus risus. Malesuada bibendum arcu vitae elementum curabitur vitae nunc. Et malesuada fames ac turpis egestas integer. Egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Est placerat in egestas erat imperdiet sed. Non arcu risus quis varius quam quisque. Lorem mollis aliquam ut porttitor leo a. Viverra tellus in hac habitasse platea dictumst vestibulum rhoncus. Fermentum iaculis eu non diam. Erat imperdiet sed euismod nisi porta lorem mollis aliquam. Varius vel pharetra vel turpis nunc eget lorem dolor. Rhoncus mattis rhoncus urna neque viverra. Hac habitasse platea dictumst quisque sagittis purus sit. At quis risus sed vulputate odio ut enim. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros. Rutrum quisque non tellus orci ac auctor. Iaculis eu non diam phasellus vestibulum lorem sed. Ut sem nulla pharetra diam sit amet nisl suscipit. Risus at ultrices mi tempus. Vitae tortor condimentum lacinia quis vel eros donec. Sed tempus urna et pharetra. Posuere sollicitudin aliquam ultrices sagittis orci. Congue quisque egestas diam in arcu. Hac habitasse platea dictumst vestibulum rhoncus est pellentesque elit. Pellentesque habitant morbi tristique senectus et netus et. Id interdum velit laoreet id. Fusce ut placerat orci nulla pellentesque dignissim. Pretium nibh ipsum consequat nisl vel pretium. Etiam erat velit scelerisque in dictum non consectetur a. Turpis in eu mi bibendum neque egestas congue quisque egestas. Pulvinar sapien et ligula ullamcorper malesuada. Ultricies tristique nulla aliquet enim tortor at. Suspendisse interdum consectetur libero id faucibus. Lorem sed risus ultricies tristique nulla aliquet. Tristique senectus et netus et malesuada fames. Eu augue ut lectus arcu bibendum at varius vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies. Aliquet eget sit amet tellus cras adipiscing. Massa placerat duis ultricies lacus sed turpis tincidunt id aliquet. Ornare massa eget egestas purus viverra accumsan in nisl. Justo laoreet sit amet cursus sit amet. In metus vulputate eu scelerisque felis imperdiet proin. At erat pellentesque adipiscing commodo elit at. Ipsum suspendisse ultrices gravida dictum fusce. Lectus sit amet est placerat in egestas erat. Aliquam ultrices sagittis orci a. Sagittis id consectetur purus ut faucibus pulvinar elementum. Ornare arcu odio ut sem nulla pharetra diam. Sit amet purus gravida quis blandit turpis cursus. Duis ultricies lacus sed turpis tincidunt. Malesuada fames ac turpis egestas sed tempus urna et. Viverra ipsum nunc aliquet bibendum enim facilisis. Et pharetra pharetra massa massa ultricies mi quis. Eget duis at tellus at urna condimentum mattis. Euismod in pellentesque massa placerat. Enim nunc faucibus a pellentesque sit amet porttitor. Dolor sed viverra ipsum nunc aliquet. Donec enim diam vulputate ut pharetra sit amet. Feugiat sed lectus vestibulum mattis ullamcorper velit sed. Erat pellentesque adipiscing commodo elit at imperdiet. Nisl purus in mollis nunc sed id semper risus. Tincidunt augue interdum velit euismod in pellentesque massa. Facilisis magna etiam tempor orci. Mauris in aliquam sem fringilla ut. Gravida dictum fusce ut placerat orci. Sed risus ultricies tristique nulla. Odio morbi quis commodo odio. Feugiat in ante metus dictum at tempor commodo ullamcorper. Porta non pulvinar neque laoreet suspendisse interdum. Etiam tempor orci eu lobortis elementum. Fusce ut placerat orci nulla pellentesque dignissim. Ornare lectus sit amet est placerat in egestas erat. Quis vel eros donec ac. Elementum pulvinar etiam non quam lacus. Sit amet tellus cras adipiscing enim eu turpis. Amet tellus cras adipiscing enim eu. Sed faucibus turpis in eu mi bibendum. Lectus proin nibh nisl condimentum id. Sollicitudin nibh sit amet commodo nulla. Sed tempus urna et pharetra pharetra massa massa. Magna eget est lorem ipsum. Elit ullamcorper dignissim cras tincidunt lobortis feugiat vivamus at. Fermentum dui faucibus in ornare quam viverra orci sagittis eu. Dignissim convallis aenean et tortor. Ut faucibus pulvinar elementum integer enim neque. Nibh cras pulvinar mattis nunc sed. Pellentesque sit amet porttitor eget dolor morbi. Mi eget mauris pharetra et ultrices neque ornare aenean euismod. Quis risus sed vulputate odio ut enim blandit volutpat. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. In vitae turpis massa sed elementum tempus egestas sed sed. Urna id volutpat lacus laoreet non. Egestas pretium aenean pharetra magna ac placerat. Amet commodo nulla facilisi nullam vehicula ipsum a arcu cursus. Donec et odio pellentesque diam volutpat commodo sed. Etiam non quam lacus suspendisse. Augue neque gravida in fermentum et sollicitudin ac orci. Eu feugiat pretium nibh ipsum. Nam at lectus urna duis convallis convallis tellus id. Egestas integer eget aliquet nibh. Viverra accumsan in nisl nisi scelerisque eu ultrices vitae auctor. Urna condimentum mattis pellentesque id nibh tortor id. In egestas erat imperdiet sed euismod. Ut sem viverra aliquet eget sit amet tellus. Feugiat pretium nibh ipsum consequat nisl vel pretium. Volutpat odio facilisis mauris sit amet. Mi sit amet mauris commodo quis imperdiet massa tincidunt. Neque volutpat ac tincidunt vitae semper quis lectus nulla at. Nec feugiat in fermentum posuere urna nec. Ut venenatis tellus in metus vulputate eu. Vestibulum rhoncus est pellentesque elit ullamcorper dignissim. Eu scelerisque felis imperdiet proin. Vitae et leo duis ut diam quam nulla. Ut venenatis tellus in metus vulputate eu scelerisque. Tincidunt dui ut ornare lectus sit amet. Adipiscing diam donec adipiscing tristique risus. Turpis nunc eget lorem dolor sed viverra ipsum nunc aliquet. Non sodales neque sodales ut. Massa placerat duis ultricies lacus sed turpis tincidunt. Viverra orci sagittis eu volutpat odio facilisis mauris sit amet. Adipiscing vitae proin sagittis nisl. Vitae aliquet nec ullamcorper sit. Potenti nullam ac tortor vitae purus. Ultricies lacus sed turpis tincidunt id. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Semper eget duis at tellus at urna condimentum mattis pellentesque. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin. Dictum fusce ut placerat orci nulla pellentesque dignissim. Amet luctus venenatis lectus magna fringilla urna. Quam quisque id diam vel quam elementum pulvinar. At tempor commodo ullamcorper a. Magna etiam tempor orci eu lobortis. Suspendisse ultrices gravida dictum fusce. Massa ultricies mi quis hendrerit dolor magna. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Aliquet enim tortor at auctor urna nunc id. Semper feugiat nibh sed pulvinar proin gravida. Porttitor rhoncus dolor purus non enim. Metus aliquam eleifend mi in nulla. Lectus arcu bibendum at varius vel pharetra. Sed vulputate odio ut enim blandit volutpat. Et ligula ullamcorper malesuada proin libero nunc consequat interdum varius. Donec et odio pellentesque diam volutpat commodo. Id ornare arcu odio ut sem nulla pharetra diam sit. Est ullamcorper eget nulla facilisi etiam dignissim diam quis enim. Sagittis vitae et leo duis ut diam quam nulla. Elementum nisi quis eleifend quam. Congue mauris rhoncus aenean vel elit. Adipiscing elit duis tristique sollicitudin nibh sit. Egestas egestas fringilla phasellus faucibus scelerisque. Morbi tincidunt augue interdum velit euismod. Massa sed elementum tempus egestas sed sed. Id leo in vitae turpis massa sed elementum tempus egestas. In pellentesque massa placerat duis ultricies lacus sed turpis. Vitae proin sagittis nisl rhoncus mattis rhoncus. Enim tortor at auctor urna nunc id. In fermentum posuere urna nec tincidunt praesent semper feugiat nibh. Aliquam ut porttitor leo a diam sollicitudin tempor id. Pellentesque elit eget gravida cum sociis natoque. Molestie at elementum eu facilisis sed odio morbi quis. Tristique senectus et netus et malesuada fames ac turpis. Proin libero nunc consequat interdum varius sit amet mattis. Pellentesque id nibh tortor id. Risus sed vulputate odio ut enim blandit. Laoreet suspendisse interdum consectetur libero id faucibus nisl tincidunt eget. Morbi tincidunt augue interdum velit euismod in pellentesque. Pharetra pharetra massa massa ultricies mi quis hendrerit. Nunc aliquet bibendum enim facilisis gravida neque. Feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Risus quis varius quam quisque id diam vel. Et ultrices neque ornare aenean. Aliquet sagittis id consectetur purus ut faucibus pulvinar elementum. Nibh ipsum consequat nisl vel. Mauris rhoncus aenean vel elit scelerisque mauris pellentesque pulvinar. Ornare quam viverra orci sagittis eu volutpat odio facilisis. Euismod nisi porta lorem mollis aliquam. Enim ut tellus elementum sagittis. Rhoncus mattis rhoncus urna neque. Malesuada fames ac turpis egestas. Cursus in hac habitasse platea dictumst quisque sagittis. Sit amet aliquam id diam maecenas ultricies mi eget mauris. Enim sit amet venenatis urna cursus eget nunc. Fermentum odio eu feugiat pretium nibh ipsum consequat. Eu scelerisque felis imperdiet proin. Nullam non nisi est sit amet facilisis magna etiam tempor. In mollis nunc sed id semper risus in hendrerit. Sollicitudin nibh sit amet commodo nulla facilisi nullam. Sit amet nisl purus in mollis nunc sed id. Nam libero justo laoreet sit amet cursus sit amet dictum. Condimentum id venenatis a condimentum vitae sapien pellentesque. Porta nibh venenatis cras sed felis. Lectus nulla at volutpat diam ut venenatis tellus in. Aliquam etiam erat velit scelerisque in dictum non consectetur a. Leo vel fringilla est ullamcorper eget. Sodales ut etiam sit amet nisl purus in mollis nunc. Euismod nisi porta lorem mollis aliquam. Ornare arcu odio ut sem nulla. Sed felis eget velit aliquet sagittis id consectetur. Pellentesque nec nam aliquam sem et tortor consequat id. Enim nec dui nunc mattis enim ut tellus elementum. Nullam non nisi est sit amet facilisis magna. Rutrum quisque non tellus orci ac auctor augue. Nunc vel risus commodo viverra maecenas accumsan lacus. Viverra vitae congue eu consequat. Sollicitudin nibh sit amet commodo nulla. Amet volutpat consequat mauris nunc congue nisi. Maecenas pharetra convallis posuere morbi leo urna molestie at. Mattis vulputate enim nulla aliquet porttitor lacus luctus accumsan tortor. Pulvinar sapien et ligula ullamcorper malesuada proin libero nunc consequat. Adipiscing diam donec adipiscing tristique risus. Elementum curabitur vitae nunc sed velit dignissim sodales ut. Eleifend donec pretium vulputate sapien nec. Commodo quis imperdiet massa tincidunt nunc pulvinar. Proin libero nunc consequat interdum varius sit amet mattis. Facilisis gravida neque convallis a cras semper auctor neque vitae. Quisque egestas diam in arcu cursus. Nunc eget lorem dolor sed viverra ipsum. Mauris sit amet massa vitae tortor condimentum lacinia quis vel. Aliquam sem et tortor consequat id porta nibh venenatis cras. Nunc sed id semper risus in. Enim sed faucibus turpis in eu mi bibendum neque. Molestie nunc non blandit massa enim. Enim praesent elementum facilisis leo vel fringilla est ullamcorper. Semper risus in hendrerit gravida rutrum quisque non tellus orci. Ac turpis egestas maecenas pharetra. In nulla posuere sollicitudin aliquam. Justo nec ultrices dui sapien eget mi proin sed libero. In ornare quam viverra orci sagittis eu. Proin nibh nisl condimentum id venenatis. Morbi enim nunc faucibus a pellentesque sit amet porttitor eget. Quis risus sed vulputate odio ut enim blandit. Risus feugiat in ante metus dictum at tempor commodo. Sodales neque sodales ut etiam. Nunc id cursus metus aliquam. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim enim. Augue ut lectus arcu bibendum at. Quis varius quam quisque id diam vel quam. Egestas congue quisque egestas diam in arcu. Condimentum mattis pellentesque id nibh tortor id aliquet lectus. Enim lobortis scelerisque fermentum dui faucibus in. In tellus integer feugiat scelerisque varius morbi enim nunc. Mattis molestie a iaculis at erat pellentesque. Elit scelerisque mauris pellentesque pulvinar pellentesque habitant morbi tristique. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Nisl rhoncus mattis rhoncus urna neque. Ac auctor augue mauris augue neque gravida in fermentum et. Sodales ut eu sem integer vitae justo eget. Sed egestas egestas fringilla phasellus. Viverra adipiscing at in tellus integer feugiat scelerisque varius. Purus gravida quis blandit turpis. Id porta nibh venenatis cras sed. Mattis vulputate enim nulla aliquet porttitor lacus. Augue eget arcu dictum varius duis at consectetur lorem donec. Nulla at volutpat diam ut venenatis tellus in metus. Aliquam etiam erat velit scelerisque in dictum non consectetur. Turpis cursus in hac habitasse platea dictumst. Consequat mauris nunc congue nisi vitae suscipit tellus. Volutpat maecenas volutpat blandit aliquam etiam. Massa massa ultricies mi quis hendrerit dolor magna eget est. Velit egestas dui id ornare arcu. Non consectetur a erat nam at. Orci sagittis eu volutpat odio facilisis mauris sit amet. Dui id ornare arcu odio. Sed arcu non odio euismod lacinia. Feugiat in ante metus dictum. Gravida arcu ac tortor dignissim convallis. Egestas sed tempus urna et pharetra pharetra massa massa. Nulla facilisi nullam vehicula ipsum a arcu. Ipsum a arcu cursus vitae congue mauris. Porttitor rhoncus dolor purus non. Magna sit amet purus gravida quis blandit. Sapien eget mi proin sed libero enim sed faucibus turpis. Nisl nunc mi ipsum faucibus vitae aliquet nec ullamcorper sit. Pellentesque dignissim enim sit amet venenatis urna cursus eget. Pharetra massa massa ultricies mi quis hendrerit. Sapien nec sagittis aliquam malesuada bibendum. Nunc scelerisque viverra mauris in aliquam sem fringilla ut. Dolor magna eget est lorem ipsum dolor. Amet commodo nulla facilisi nullam. Pellentesque elit ullamcorper dignissim cras. Id porta nibh venenatis cras sed felis eget. Nam at lectus urna duis. Laoreet non curabitur gravida arcu ac tortor dignissim convallis. Nunc lobortis mattis aliquam faucibus purus in massa tempor. Sit amet luctus venenatis lectus magna fringilla. Duis ultricies lacus sed turpis tincidunt id. Sed velit dignissim sodales ut eu. Ut tortor pretium viverra suspendisse potenti nullam. Iaculis at erat pellentesque adipiscing. Ipsum nunc aliquet bibendum enim facilisis gravida neque. Nulla aliquet enim tortor at auctor urna nunc id cursus. Amet cursus sit amet dictum sit amet justo donec enim. Enim nunc faucibus a pellentesque sit amet porttitor eget dolor. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros in. Nulla facilisi etiam dignissim diam quis enim. Ut enim blandit volutpat maecenas volutpat blandit aliquam etiam erat. Imperdiet proin fermentum leo vel orci porta non pulvinar neque. Vel fringilla est ullamcorper eget nulla. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Ipsum nunc aliquet bibendum enim facilisis gravida neque convallis a. Arcu cursus vitae congue mauris rhoncus aenean vel elit. Augue eget arcu dictum varius duis. Tristique et egestas quis ipsum. Quis varius quam quisque id. Varius sit amet mattis vulputate. Mattis molestie a iaculis at erat pellentesque. Libero justo laoreet sit amet cursus. Aliquam id diam maecenas ultricies mi eget mauris pharetra. Ut eu sem integer vitae justo eget. Fames ac turpis egestas sed. Suspendisse in est ante in nibh mauris cursus mattis. Faucibus pulvinar elementum integer enim neque volutpat ac tincidunt vitae. Neque vitae tempus quam pellentesque nec nam aliquam. Lobortis elementum nibh tellus molestie nunc non. Lacus vel facilisis volutpat est velit egestas dui. Justo laoreet sit amet cursus sit amet dictum sit amet. Adipiscing enim eu turpis egestas pretium aenean pharetra magna. Cursus metus aliquam eleifend mi in nulla posuere. Nibh mauris cursus mattis molestie a. Dignissim diam quis enim lobortis scelerisque fermentum. A scelerisque purus semper eget duis at tellus. Lacus sed turpis tincidunt id aliquet risus feugiat in. Non tellus orci ac auctor. Ultrices in iaculis nunc sed augue lacus. Tincidunt tortor aliquam nulla facilisi cras. Nulla facilisi nullam vehicula ipsum a arcu cursus vitae congue. Eget magna fermentum iaculis eu non diam phasellus. Pharetra massa massa ultricies mi quis. Eget mauris pharetra et ultrices neque ornare. Aliquam faucibus purus in massa. Facilisi morbi tempus iaculis urna id volutpat lacus. Accumsan lacus vel facilisis volutpat. Curabitur gravida arcu ac tortor. Quam lacus suspendisse faucibus interdum. Elementum nibh tellus molestie nunc non blandit massa enim. Libero id faucibus nisl tincidunt. Bibendum ut tristique et egestas. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Augue interdum velit euismod in pellentesque. Adipiscing diam donec adipiscing tristique risus nec feugiat. Fringilla ut morbi tincidunt augue interdum velit. Vitae et leo duis ut diam quam nulla porttitor massa. Egestas integer eget aliquet nibh praesent tristique. Posuere sollicitudin aliquam ultrices sagittis orci a. Nisi est sit amet facilisis. Risus quis varius quam quisque id diam. Faucibus turpis in eu mi. Et molestie ac feugiat sed lectus vestibulum. Porttitor lacus luctus accumsan tortor posuere ac. Platea dictumst vestibulum rhoncus est pellentesque. Tortor pretium viverra suspendisse potenti nullam ac tortor. Enim praesent elementum facilisis leo vel fringilla est. Proin libero nunc consequat interdum varius sit amet mattis vulputate. Turpis egestas pretium aenean pharetra magna ac placerat vestibulum lectus. Nulla pharetra diam sit amet nisl suscipit. Mauris nunc congue nisi vitae suscipit tellus mauris a diam. Faucibus in ornare quam viverra orci sagittis eu volutpat. Volutpat consequat mauris nunc congue nisi vitae. Dui nunc mattis enim ut tellus. Adipiscing elit ut aliquam purus sit amet luctus. Tempus egestas sed sed risus. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Massa ultricies mi quis hendrerit dolor magna eget. Pulvinar mattis nunc sed blandit libero volutpat sed cras ornare. Ut eu sem integer vitae justo eget magna fermentum. Ornare quam viverra orci sagittis. Eget dolor morbi non arcu risus quis varius quam. Tincidunt praesent semper feugiat nibh sed pulvinar. Sit amet justo donec enim diam vulputate. Dui faucibus in ornare quam viverra. Tincidunt tortor aliquam nulla facilisi cras fermentum odio eu. Turpis egestas sed tempus urna et. Pretium quam vulputate dignissim suspendisse in est ante in. Morbi quis commodo odio aenean sed adipiscing diam donec. Nunc mattis enim ut tellus elementum sagittis vitae et. Diam vel quam elementum pulvinar etiam non quam. Convallis posuere morbi leo urna molestie at elementum eu. Adipiscing at in tellus integer feugiat scelerisque varius morbi. Quis varius quam quisque id diam vel quam elementum. Dui accumsan sit amet nulla. Adipiscing elit duis tristique sollicitudin nibh sit amet commodo. Viverra ipsum nunc aliquet bibendum enim facilisis. Porta lorem mollis aliquam ut. Velit ut tortor pretium viverra suspendisse potenti. Quis viverra nibh cras pulvinar mattis nunc sed blandit. Pharetra magna ac placerat vestibulum. Mauris ultrices eros in cursus turpis massa. Lacus vestibulum sed arcu non odio euismod lacinia at. Dapibus ultrices in iaculis nunc sed. Cras adipiscing enim eu turpis egestas. Eget arcu dictum varius duis at consectetur. Consequat id porta nibh venenatis cras sed felis eget velit. Integer enim neque volutpat ac tincidunt vitae. Feugiat pretium nibh ipsum consequat nisl vel pretium lectus. Ut morbi tincidunt augue interdum velit euismod. Sed cras ornare arcu dui vivamus arcu felis bibendum ut. Eget felis eget nunc lobortis mattis aliquam faucibus purus in. Luctus venenatis lectus magna fringilla urna porttitor rhoncus dolor. Nisl nunc mi ipsum faucibus vitae. Proin fermentum leo vel orci porta. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. Et leo duis ut diam quam. Eros in cursus turpis massa tincidunt. Volutpat est velit egestas dui id. Commodo odio aenean sed adipiscing diam. Quis blandit turpis cursus in hac habitasse platea dictumst quisque. Magna fringilla urna porttitor rhoncus dolor. Amet consectetur adipiscing elit ut aliquam purus sit amet. Vitae justo eget magna fermentum iaculis eu non diam. Hendrerit dolor magna eget est. Ac placerat vestibulum lectus mauris ultrices eros in cursus turpis. Egestas diam in arcu cursus. At varius vel pharetra vel turpis nunc. Lacus vel facilisis volutpat est velit. Ut ornare lectus sit amet est placerat in egestas. Quam adipiscing vitae proin sagittis nisl rhoncus. Dolor purus non enim praesent. Urna condimentum mattis pellentesque id. Magnis dis parturient montes nascetur ridiculus. Feugiat nisl pretium fusce id. Sed cras ornare arcu dui vivamus. Vitae turpis massa sed elementum tempus egestas sed sed. Ac feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Ac ut consequat semper viverra nam libero. Consectetur lorem donec massa sapien faucibus. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Eu turpis egestas pretium aenean pharetra. Nisl rhoncus mattis rhoncus urna neque viverra justo nec ultrices. Pellentesque sit amet porttitor eget dolor morbi non arcu. Vitae justo eget magna fermentum iaculis. Quis auctor elit sed vulputate mi sit. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Semper auctor neque vitae tempus quam pellentesque nec nam. Rhoncus dolor purus non enim. Sed turpis tincidunt id aliquet risus feugiat. Sit amet justo donec enim diam vulputate ut pharetra sit. Risus pretium quam vulputate dignissim suspendisse in est ante in. Massa sapien faucibus et molestie ac feugiat. Id aliquet risus feugiat in ante metus. Risus ultricies tristique nulla aliquet enim tortor at auctor urna. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper morbi. Lacus sed turpis tincidunt id aliquet risus feugiat in. Risus ultricies tristique nulla aliquet enim tortor. In ornare quam viverra orci sagittis eu volutpat. Netus et malesuada fames ac turpis egestas sed tempus urna. Fames ac turpis egestas maecenas pharetra convallis posuere morbi. Etiam erat velit scelerisque in dictum non. Cursus turpis massa tincidunt dui ut ornare lectus. Tristique sollicitudin nibh sit amet commodo nulla facilisi. Pellentesque pulvinar pellentesque habitant morbi tristique senectus et. Aliquet eget sit amet tellus cras. Nullam ac tortor vitae purus faucibus ornare. Lacus viverra vitae congue eu consequat. Vulputate ut pharetra sit amet. Est ante in nibh mauris cursus mattis molestie a. Ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Et tortor at risus viverra. Sed libero enim sed faucibus turpis in eu. Id cursus metus aliquam eleifend mi in nulla posuere sollicitudin. Risus viverra adipiscing at in. Imperdiet massa tincidunt nunc pulvinar sapien et. Nec feugiat in fermentum posuere urna nec tincidunt. Ultricies mi eget mauris pharetra et. Morbi tristique senectus et netus et malesuada fames ac. At quis risus sed vulputate. Interdum velit laoreet id donec. Sapien pellentesque habitant morbi tristique. Pharetra vel turpis nunc eget lorem dolor sed viverra. In massa tempor nec feugiat nisl. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Mauris augue neque gravida in. Faucibus vitae aliquet nec ullamcorper sit amet risus. Id velit ut tortor pretium viverra suspendisse potenti. Leo integer malesuada nunc vel risus commodo viverra maecenas. Risus quis varius quam quisque id. Aliquam malesuada bibendum arcu vitae elementum curabitur vitae. Vestibulum lectus mauris ultrices eros in cursus turpis. Fermentum posuere urna nec tincidunt. Magna etiam tempor orci eu lobortis elementum nibh tellus molestie. Id ornare arcu odio ut. Facilisi nullam vehicula ipsum a arcu cursus vitae congue. Nulla pellentesque dignissim enim sit amet venenatis urna cursus eget. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Quis ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Sed cras ornare arcu dui vivamus arcu felis. Egestas diam in arcu cursus euismod quis. Tincidunt dui ut ornare lectus. Morbi tristique senectus et netus et. Ornare arcu dui vivamus arcu felis bibendum ut tristique. Habitant morbi tristique senectus et netus et malesuada fames ac. Ut tristique et egestas quis. Mollis aliquam ut porttitor leo. Venenatis tellus in metus vulputate eu scelerisque felis imperdiet proin. Sagittis eu volutpat odio facilisis mauris sit amet massa. Eu facilisis sed odio morbi. Nunc consequat interdum varius sit amet mattis. Velit dignissim sodales ut eu. Pellentesque eu tincidunt tortor aliquam. Porta lorem mollis aliquam ut porttitor. Rhoncus urna neque viverra justo nec ultrices. Viverra suspendisse potenti nullam ac tortor vitae purus. Fermentum posuere urna nec tincidunt praesent semper feugiat nibh sed. Purus sit amet luctus venenatis lectus magna fringilla urna porttitor. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Nisl nisi scelerisque eu ultrices vitae auctor. In vitae turpis massa sed elementum tempus egestas. Cursus sit amet dictum sit amet justo donec enim. Vitae congue eu consequat ac felis donec et. Augue interdum velit euismod in pellentesque massa placerat. Enim ut sem viverra aliquet eget sit amet. Velit scelerisque in dictum non consectetur a erat. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nunc faucibus a pellentesque sit amet porttitor eget. Tellus integer feugiat scelerisque varius morbi. Lorem sed risus ultricies tristique nulla aliquet enim tortor at. Eget nulla facilisi etiam dignissim diam quis enim lobortis scelerisque. Adipiscing elit duis tristique sollicitudin. Adipiscing elit pellentesque habitant morbi tristique. Ac tincidunt vitae semper quis lectus nulla at. Maecenas sed enim ut sem viverra. Erat pellentesque adipiscing commodo elit at imperdiet. Dolor morbi non arcu risus quis varius quam quisque. Fringilla urna porttitor rhoncus dolor purus non enim praesent. Tellus integer feugiat scelerisque varius morbi enim nunc faucibus a. Felis eget nunc lobortis mattis aliquam faucibus purus in. Fringilla phasellus faucibus scelerisque eleifend. Pulvinar etiam non quam lacus suspendisse faucibus interdum posuere. Risus ultricies tristique nulla aliquet. Lectus sit amet est placerat. Ac ut consequat semper viverra nam libero justo. Dapibus ultrices in iaculis nunc sed augue. Mattis ullamcorper velit sed ullamcorper. Eget nullam non nisi est. Vitae elementum curabitur vitae nunc sed velit. Sit amet commodo nulla facilisi nullam vehicula ipsum a arcu. Tempor nec feugiat nisl pretium fusce id velit ut. Nulla pellentesque dignissim enim sit amet venenatis. Sed tempus urna et pharetra pharetra. Congue quisque egestas diam in. Convallis posuere morbi leo urna. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Sagittis nisl rhoncus mattis rhoncus urna neque viverra justo. Scelerisque felis imperdiet proin fermentum leo vel. Ut placerat orci nulla pellentesque dignissim enim sit amet. In cursus turpis massa tincidunt dui. Rutrum quisque non tellus orci ac auctor augue mauris augue. Cursus vitae congue mauris rhoncus aenean vel elit scelerisque mauris. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Habitant morbi tristique senectus et netus et. Ridiculus mus mauris vitae ultricies leo. Vitae semper quis lectus nulla at volutpat diam. Purus faucibus ornare suspendisse sed nisi. Enim lobortis scelerisque fermentum dui faucibus in ornare quam. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Varius duis at consectetur lorem donec. Pulvinar pellentesque habitant morbi tristique senectus et netus et. A iaculis at erat pellentesque adipiscing commodo elit at imperdiet. Mi ipsum faucibus vitae aliquet nec. Libero volutpat sed cras ornare arcu dui vivamus arcu. Natoque penatibus et magnis dis parturient montes nascetur ridiculus. Maecenas volutpat blandit aliquam etiam erat velit scelerisque. Cras adipiscing enim eu turpis. Nec tincidunt praesent semper feugiat nibh sed pulvinar. Justo laoreet sit amet cursus sit amet dictum sit. Velit scelerisque in dictum non consectetur a erat nam. Turpis tincidunt id aliquet risus feugiat in ante. Aliquet risus feugiat in ante metus dictum. Hac habitasse platea dictumst quisque sagittis purus sit. Et pharetra pharetra massa massa ultricies. Sit amet nisl suscipit adipiscing bibendum est ultricies integer. Venenatis urna cursus eget nunc scelerisque viverra mauris in. Integer quis auctor elit sed. In est ante in nibh mauris cursus mattis molestie. Scelerisque in dictum non consectetur a erat nam at. Lectus sit amet est placerat in. Sit amet cursus sit amet. Nibh nisl condimentum id venenatis a condimentum. Purus ut faucibus pulvinar elementum integer enim. Pharetra sit amet aliquam id diam maecenas. Id cursus metus aliquam eleifend mi in nulla posuere. Lobortis mattis aliquam faucibus purus in massa tempor nec. Urna neque viverra justo nec ultrices dui sapien eget. Enim ut sem viverra aliquet eget sit amet. In eu mi bibendum neque egestas congue quisque egestas. Enim neque volutpat ac tincidunt. Orci ac auctor augue mauris augue neque gravida in fermentum. Velit aliquet sagittis id consectetur. Enim ut sem viverra aliquet eget sit amet tellus. Semper auctor neque vitae tempus quam pellentesque nec. Non blandit massa enim nec dui nunc. Morbi blandit cursus risus at ultrices mi tempus imperdiet nulla. Arcu non odio euismod lacinia at quis risus. Dictum varius duis at consectetur lorem donec massa. Blandit massa enim nec dui. Nibh ipsum consequat nisl vel. Turpis in eu mi bibendum neque. Ut tristique et egestas quis. Ac odio tempor orci dapibus. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim. Integer feugiat scelerisque varius morbi enim. Libero volutpat sed cras ornare arcu dui. Odio aenean sed adipiscing diam. Et egestas quis ipsum suspendisse ultrices. Aliquet lectus proin nibh nisl condimentum. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh sit. Blandit massa enim nec dui. Tellus molestie nunc non blandit massa enim nec. Tortor vitae purus faucibus ornare suspendisse sed nisi. Nascetur ridiculus mus mauris vitae ultricies leo. Elementum facilisis leo vel fringilla est ullamcorper eget nulla. Diam maecenas ultricies mi eget. Duis tristique sollicitudin nibh sit amet commodo nulla. Tempus iaculis urna id volutpat lacus laoreet non curabitur gravida. Dictumst quisque sagittis purus sit amet. Viverra mauris in aliquam sem. Quis risus sed vulputate odio ut enim blandit volutpat maecenas. Condimentum mattis pellentesque id nibh tortor id. Non sodales neque sodales ut etiam sit amet. Ipsum consequat nisl vel pretium. Cursus in hac habitasse platea dictumst quisque sagittis purus sit. Fringilla est ullamcorper eget nulla facilisi etiam. Tellus elementum sagittis vitae et leo duis ut diam quam. Nisl vel pretium lectus quam id leo in.''' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4224367 tomlkit-0.12.4/tests/toml-spec-tests/values/qa-scalar-string-multiline-40kb.yaml0000644000000000000000000012030314567257576024534 0ustar00long: >- Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor. Amet consectetur adipiscing elit ut. Nulla facilisi etiam dignissim diam quis enim lobortis. Curabitur vitae nunc sed velit dignissim sodales ut eu. Fames ac turpis egestas sed tempus urna et. Facilisi cras fermentum odio eu feugiat pretium. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Est lorem ipsum dolor sit amet consectetur adipiscing elit. Vel quam elementum pulvinar etiam non quam lacus. Pharetra et ultrices neque ornare aenean euismod. Nisl nisi scelerisque eu ultrices. Eget dolor morbi non arcu risus. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Faucibus nisl tincidunt eget nullam. Nisl pretium fusce id velit ut tortor pretium viverra suspendisse. Mauris ultrices eros in cursus. Donec ac odio tempor orci dapibus ultrices in iaculis. Tellus cras adipiscing enim eu turpis egestas pretium aenean pharetra. Eros in cursus turpis massa. Nascetur ridiculus mus mauris vitae ultricies leo integer malesuada nunc. Velit sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Aenean euismod elementum nisi quis eleifend quam. Magnis dis parturient montes nascetur ridiculus mus. Eu tincidunt tortor aliquam nulla facilisi cras. Tristique senectus et netus et malesuada fames. Urna nec tincidunt praesent semper feugiat nibh sed pulvinar. Vitae ultricies leo integer malesuada nunc vel risus commodo viverra. Ac turpis egestas sed tempus urna et. Amet mauris commodo quis imperdiet massa tincidunt. Urna nunc id cursus metus aliquam eleifend mi. In nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Neque aliquam vestibulum morbi blandit cursus. Pulvinar mattis nunc sed blandit libero volutpat sed. Sed egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Blandit cursus risus at ultrices mi tempus. Turpis massa sed elementum tempus egestas sed sed. Dictum varius duis at consectetur lorem. Commodo ullamcorper a lacus vestibulum sed arcu non. Dolor magna eget est lorem. Tincidunt arcu non sodales neque sodales ut etiam sit amet. Sit amet risus nullam eget felis eget nunc lobortis. Risus in hendrerit gravida rutrum quisque non tellus orci. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Morbi tristique senectus et netus et malesuada. In aliquam sem fringilla ut morbi tincidunt. Ornare aenean euismod elementum nisi quis eleifend quam. Sed id semper risus in hendrerit gravida rutrum quisque. Lorem ipsum dolor sit amet consectetur adipiscing elit. A condimentum vitae sapien pellentesque habitant morbi tristique senectus et. Faucibus purus in massa tempor nec feugiat nisl. Vehicula ipsum a arcu cursus vitae congue. Facilisi cras fermentum odio eu feugiat pretium nibh. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Ultrices dui sapien eget mi proin sed libero enim. Nisi est sit amet facilisis magna etiam tempor. Posuere ac ut consequat semper viverra nam. Dis parturient montes nascetur ridiculus mus mauris vitae. Nec sagittis aliquam malesuada bibendum. Mattis pellentesque id nibh tortor id aliquet lectus. Vitae congue eu consequat ac felis donec et. Cras sed felis eget velit aliquet sagittis id consectetur purus. Pellentesque elit ullamcorper dignissim cras tincidunt. Pellentesque dignissim enim sit amet venenatis urna. A cras semper auctor neque vitae tempus. Amet massa vitae tortor condimentum lacinia quis vel eros donec. Tempor commodo ullamcorper a lacus. Nibh tellus molestie nunc non blandit massa enim nec dui. Viverra orci sagittis eu volutpat odio facilisis mauris sit. Sed augue lacus viverra vitae. Vulputate eu scelerisque felis imperdiet proin fermentum leo vel orci. Tellus rutrum tellus pellentesque eu tincidunt tortor. Cras semper auctor neque vitae tempus quam pellentesque nec. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Tristique magna sit amet purus gravida quis blandit turpis. Viverra ipsum nunc aliquet bibendum. Arcu bibendum at varius vel. Amet mattis vulputate enim nulla. Vulputate enim nulla aliquet porttitor. Volutpat blandit aliquam etiam erat velit scelerisque in dictum. Morbi tristique senectus et netus et malesuada fames ac. Faucibus et molestie ac feugiat sed. Tellus elementum sagittis vitae et leo duis. Id aliquet lectus proin nibh. Ornare arcu dui vivamus arcu. Morbi tincidunt augue interdum velit euismod in pellentesque massa placerat. Quis eleifend quam adipiscing vitae. Tristique senectus et netus et malesuada fames ac turpis. Pharetra convallis posuere morbi leo. Ornare arcu odio ut sem nulla pharetra diam sit. Morbi tristique senectus et netus et. Dictum non consectetur a erat nam at lectus urna. Varius vel pharetra vel turpis. Mi ipsum faucibus vitae aliquet. Tellus in metus vulputate eu scelerisque felis imperdiet proin. In est ante in nibh mauris cursus mattis. Massa ultricies mi quis hendrerit dolor magna eget. Fermentum leo vel orci porta. Elit ut aliquam purus sit amet luctus venenatis lectus. Eget aliquet nibh praesent tristique magna sit amet. Arcu non odio euismod lacinia at quis. Montes nascetur ridiculus mus mauris vitae ultricies. Tempus quam pellentesque nec nam aliquam sem et tortor. Morbi leo urna molestie at elementum eu facilisis sed. In fermentum posuere urna nec tincidunt. Neque aliquam vestibulum morbi blandit cursus risus. Vulputate dignissim suspendisse in est ante in nibh mauris cursus. Lorem ipsum dolor sit amet consectetur adipiscing. Orci eu lobortis elementum nibh tellus molestie nunc non. Enim diam vulputate ut pharetra sit amet aliquam. Convallis convallis tellus id interdum velit laoreet id donec ultrices. Sit amet mattis vulputate enim nulla aliquet porttitor lacus luctus. A lacus vestibulum sed arcu non odio. Ut tortor pretium viverra suspendisse potenti nullam ac tortor. Diam vel quam elementum pulvinar etiam non quam. Viverra justo nec ultrices dui. Eu volutpat odio facilisis mauris sit amet massa. Sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Ac felis donec et odio pellentesque. Nisl vel pretium lectus quam id leo in. Ultricies lacus sed turpis tincidunt id. At urna condimentum mattis pellentesque id nibh tortor id. Sem nulla pharetra diam sit amet nisl suscipit. Neque viverra justo nec ultrices. Arcu cursus euismod quis viverra nibh cras pulvinar. Dolor sit amet consectetur adipiscing elit ut aliquam purus. Id diam vel quam elementum pulvinar etiam non. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Id aliquet lectus proin nibh nisl condimentum id venenatis. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh. Sed faucibus turpis in eu mi bibendum neque egestas congue. Consectetur libero id faucibus nisl tincidunt eget nullam. At volutpat diam ut venenatis tellus in metus vulputate eu. Condimentum lacinia quis vel eros donec ac odio. Sit amet porttitor eget dolor morbi non arcu risus quis. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Metus dictum at tempor commodo ullamcorper. At ultrices mi tempus imperdiet nulla. Est ullamcorper eget nulla facilisi etiam dignissim diam quis. Lobortis elementum nibh tellus molestie nunc non. Placerat in egestas erat imperdiet sed. Placerat in egestas erat imperdiet sed euismod. Lobortis feugiat vivamus at augue eget arcu dictum varius. Ut sem nulla pharetra diam sit amet. Et tortor at risus viverra adipiscing at in. Tempor nec feugiat nisl pretium. Cursus euismod quis viverra nibh. Eget mi proin sed libero enim sed. Aliquam id diam maecenas ultricies. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Gravida quis blandit turpis cursus in hac habitasse platea dictumst. Sed tempus urna et pharetra pharetra massa massa. Dolor purus non enim praesent elementum facilisis leo vel. Pharetra vel turpis nunc eget. Quam pellentesque nec nam aliquam sem et tortor consequat id. Orci eu lobortis elementum nibh tellus molestie nunc non. Porttitor leo a diam sollicitudin tempor id. Tincidunt ornare massa eget egestas purus viverra accumsan in nisl. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor sit. Elit ut aliquam purus sit amet luctus venenatis lectus. Velit egestas dui id ornare arcu odio ut sem nulla. Lacus viverra vitae congue eu consequat ac felis donec. Nulla aliquet porttitor lacus luctus accumsan tortor posuere ac ut. Lorem dolor sed viverra ipsum. Blandit libero volutpat sed cras ornare arcu. Egestas erat imperdiet sed euismod nisi porta lorem mollis. Viverra maecenas accumsan lacus vel. Enim neque volutpat ac tincidunt. Porttitor massa id neque aliquam vestibulum morbi blandit cursus risus. Malesuada bibendum arcu vitae elementum curabitur vitae nunc. Et malesuada fames ac turpis egestas integer. Egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Est placerat in egestas erat imperdiet sed. Non arcu risus quis varius quam quisque. Lorem mollis aliquam ut porttitor leo a. Viverra tellus in hac habitasse platea dictumst vestibulum rhoncus. Fermentum iaculis eu non diam. Erat imperdiet sed euismod nisi porta lorem mollis aliquam. Varius vel pharetra vel turpis nunc eget lorem dolor. Rhoncus mattis rhoncus urna neque viverra. Hac habitasse platea dictumst quisque sagittis purus sit. At quis risus sed vulputate odio ut enim. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros. Rutrum quisque non tellus orci ac auctor. Iaculis eu non diam phasellus vestibulum lorem sed. Ut sem nulla pharetra diam sit amet nisl suscipit. Risus at ultrices mi tempus. Vitae tortor condimentum lacinia quis vel eros donec. Sed tempus urna et pharetra. Posuere sollicitudin aliquam ultrices sagittis orci. Congue quisque egestas diam in arcu. Hac habitasse platea dictumst vestibulum rhoncus est pellentesque elit. Pellentesque habitant morbi tristique senectus et netus et. Id interdum velit laoreet id. Fusce ut placerat orci nulla pellentesque dignissim. Pretium nibh ipsum consequat nisl vel pretium. Etiam erat velit scelerisque in dictum non consectetur a. Turpis in eu mi bibendum neque egestas congue quisque egestas. Pulvinar sapien et ligula ullamcorper malesuada. Ultricies tristique nulla aliquet enim tortor at. Suspendisse interdum consectetur libero id faucibus. Lorem sed risus ultricies tristique nulla aliquet. Tristique senectus et netus et malesuada fames. Eu augue ut lectus arcu bibendum at varius vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies. Aliquet eget sit amet tellus cras adipiscing. Massa placerat duis ultricies lacus sed turpis tincidunt id aliquet. Ornare massa eget egestas purus viverra accumsan in nisl. Justo laoreet sit amet cursus sit amet. In metus vulputate eu scelerisque felis imperdiet proin. At erat pellentesque adipiscing commodo elit at. Ipsum suspendisse ultrices gravida dictum fusce. Lectus sit amet est placerat in egestas erat. Aliquam ultrices sagittis orci a. Sagittis id consectetur purus ut faucibus pulvinar elementum. Ornare arcu odio ut sem nulla pharetra diam. Sit amet purus gravida quis blandit turpis cursus. Duis ultricies lacus sed turpis tincidunt. Malesuada fames ac turpis egestas sed tempus urna et. Viverra ipsum nunc aliquet bibendum enim facilisis. Et pharetra pharetra massa massa ultricies mi quis. Eget duis at tellus at urna condimentum mattis. Euismod in pellentesque massa placerat. Enim nunc faucibus a pellentesque sit amet porttitor. Dolor sed viverra ipsum nunc aliquet. Donec enim diam vulputate ut pharetra sit amet. Feugiat sed lectus vestibulum mattis ullamcorper velit sed. Erat pellentesque adipiscing commodo elit at imperdiet. Nisl purus in mollis nunc sed id semper risus. Tincidunt augue interdum velit euismod in pellentesque massa. Facilisis magna etiam tempor orci. Mauris in aliquam sem fringilla ut. Gravida dictum fusce ut placerat orci. Sed risus ultricies tristique nulla. Odio morbi quis commodo odio. Feugiat in ante metus dictum at tempor commodo ullamcorper. Porta non pulvinar neque laoreet suspendisse interdum. Etiam tempor orci eu lobortis elementum. Fusce ut placerat orci nulla pellentesque dignissim. Ornare lectus sit amet est placerat in egestas erat. Quis vel eros donec ac. Elementum pulvinar etiam non quam lacus. Sit amet tellus cras adipiscing enim eu turpis. Amet tellus cras adipiscing enim eu. Sed faucibus turpis in eu mi bibendum. Lectus proin nibh nisl condimentum id. Sollicitudin nibh sit amet commodo nulla. Sed tempus urna et pharetra pharetra massa massa. Magna eget est lorem ipsum. Elit ullamcorper dignissim cras tincidunt lobortis feugiat vivamus at. Fermentum dui faucibus in ornare quam viverra orci sagittis eu. Dignissim convallis aenean et tortor. Ut faucibus pulvinar elementum integer enim neque. Nibh cras pulvinar mattis nunc sed. Pellentesque sit amet porttitor eget dolor morbi. Mi eget mauris pharetra et ultrices neque ornare aenean euismod. Quis risus sed vulputate odio ut enim blandit volutpat. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. In vitae turpis massa sed elementum tempus egestas sed sed. Urna id volutpat lacus laoreet non. Egestas pretium aenean pharetra magna ac placerat. Amet commodo nulla facilisi nullam vehicula ipsum a arcu cursus. Donec et odio pellentesque diam volutpat commodo sed. Etiam non quam lacus suspendisse. Augue neque gravida in fermentum et sollicitudin ac orci. Eu feugiat pretium nibh ipsum. Nam at lectus urna duis convallis convallis tellus id. Egestas integer eget aliquet nibh. Viverra accumsan in nisl nisi scelerisque eu ultrices vitae auctor. Urna condimentum mattis pellentesque id nibh tortor id. In egestas erat imperdiet sed euismod. Ut sem viverra aliquet eget sit amet tellus. Feugiat pretium nibh ipsum consequat nisl vel pretium. Volutpat odio facilisis mauris sit amet. Mi sit amet mauris commodo quis imperdiet massa tincidunt. Neque volutpat ac tincidunt vitae semper quis lectus nulla at. Nec feugiat in fermentum posuere urna nec. Ut venenatis tellus in metus vulputate eu. Vestibulum rhoncus est pellentesque elit ullamcorper dignissim. Eu scelerisque felis imperdiet proin. Vitae et leo duis ut diam quam nulla. Ut venenatis tellus in metus vulputate eu scelerisque. Tincidunt dui ut ornare lectus sit amet. Adipiscing diam donec adipiscing tristique risus. Turpis nunc eget lorem dolor sed viverra ipsum nunc aliquet. Non sodales neque sodales ut. Massa placerat duis ultricies lacus sed turpis tincidunt. Viverra orci sagittis eu volutpat odio facilisis mauris sit amet. Adipiscing vitae proin sagittis nisl. Vitae aliquet nec ullamcorper sit. Potenti nullam ac tortor vitae purus. Ultricies lacus sed turpis tincidunt id. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Semper eget duis at tellus at urna condimentum mattis pellentesque. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin. Dictum fusce ut placerat orci nulla pellentesque dignissim. Amet luctus venenatis lectus magna fringilla urna. Quam quisque id diam vel quam elementum pulvinar. At tempor commodo ullamcorper a. Magna etiam tempor orci eu lobortis. Suspendisse ultrices gravida dictum fusce. Massa ultricies mi quis hendrerit dolor magna. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Aliquet enim tortor at auctor urna nunc id. Semper feugiat nibh sed pulvinar proin gravida. Porttitor rhoncus dolor purus non enim. Metus aliquam eleifend mi in nulla. Lectus arcu bibendum at varius vel pharetra. Sed vulputate odio ut enim blandit volutpat. Et ligula ullamcorper malesuada proin libero nunc consequat interdum varius. Donec et odio pellentesque diam volutpat commodo. Id ornare arcu odio ut sem nulla pharetra diam sit. Est ullamcorper eget nulla facilisi etiam dignissim diam quis enim. Sagittis vitae et leo duis ut diam quam nulla. Elementum nisi quis eleifend quam. Congue mauris rhoncus aenean vel elit. Adipiscing elit duis tristique sollicitudin nibh sit. Egestas egestas fringilla phasellus faucibus scelerisque. Morbi tincidunt augue interdum velit euismod. Massa sed elementum tempus egestas sed sed. Id leo in vitae turpis massa sed elementum tempus egestas. In pellentesque massa placerat duis ultricies lacus sed turpis. Vitae proin sagittis nisl rhoncus mattis rhoncus. Enim tortor at auctor urna nunc id. In fermentum posuere urna nec tincidunt praesent semper feugiat nibh. Aliquam ut porttitor leo a diam sollicitudin tempor id. Pellentesque elit eget gravida cum sociis natoque. Molestie at elementum eu facilisis sed odio morbi quis. Tristique senectus et netus et malesuada fames ac turpis. Proin libero nunc consequat interdum varius sit amet mattis. Pellentesque id nibh tortor id. Risus sed vulputate odio ut enim blandit. Laoreet suspendisse interdum consectetur libero id faucibus nisl tincidunt eget. Morbi tincidunt augue interdum velit euismod in pellentesque. Pharetra pharetra massa massa ultricies mi quis hendrerit. Nunc aliquet bibendum enim facilisis gravida neque. Feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Risus quis varius quam quisque id diam vel. Et ultrices neque ornare aenean. Aliquet sagittis id consectetur purus ut faucibus pulvinar elementum. Nibh ipsum consequat nisl vel. Mauris rhoncus aenean vel elit scelerisque mauris pellentesque pulvinar. Ornare quam viverra orci sagittis eu volutpat odio facilisis. Euismod nisi porta lorem mollis aliquam. Enim ut tellus elementum sagittis. Rhoncus mattis rhoncus urna neque. Malesuada fames ac turpis egestas. Cursus in hac habitasse platea dictumst quisque sagittis. Sit amet aliquam id diam maecenas ultricies mi eget mauris. Enim sit amet venenatis urna cursus eget nunc. Fermentum odio eu feugiat pretium nibh ipsum consequat. Eu scelerisque felis imperdiet proin. Nullam non nisi est sit amet facilisis magna etiam tempor. In mollis nunc sed id semper risus in hendrerit. Sollicitudin nibh sit amet commodo nulla facilisi nullam. Sit amet nisl purus in mollis nunc sed id. Nam libero justo laoreet sit amet cursus sit amet dictum. Condimentum id venenatis a condimentum vitae sapien pellentesque. Porta nibh venenatis cras sed felis. Lectus nulla at volutpat diam ut venenatis tellus in. Aliquam etiam erat velit scelerisque in dictum non consectetur a. Leo vel fringilla est ullamcorper eget. Sodales ut etiam sit amet nisl purus in mollis nunc. Euismod nisi porta lorem mollis aliquam. Ornare arcu odio ut sem nulla. Sed felis eget velit aliquet sagittis id consectetur. Pellentesque nec nam aliquam sem et tortor consequat id. Enim nec dui nunc mattis enim ut tellus elementum. Nullam non nisi est sit amet facilisis magna. Rutrum quisque non tellus orci ac auctor augue. Nunc vel risus commodo viverra maecenas accumsan lacus. Viverra vitae congue eu consequat. Sollicitudin nibh sit amet commodo nulla. Amet volutpat consequat mauris nunc congue nisi. Maecenas pharetra convallis posuere morbi leo urna molestie at. Mattis vulputate enim nulla aliquet porttitor lacus luctus accumsan tortor. Pulvinar sapien et ligula ullamcorper malesuada proin libero nunc consequat. Adipiscing diam donec adipiscing tristique risus. Elementum curabitur vitae nunc sed velit dignissim sodales ut. Eleifend donec pretium vulputate sapien nec. Commodo quis imperdiet massa tincidunt nunc pulvinar. Proin libero nunc consequat interdum varius sit amet mattis. Facilisis gravida neque convallis a cras semper auctor neque vitae. Quisque egestas diam in arcu cursus. Nunc eget lorem dolor sed viverra ipsum. Mauris sit amet massa vitae tortor condimentum lacinia quis vel. Aliquam sem et tortor consequat id porta nibh venenatis cras. Nunc sed id semper risus in. Enim sed faucibus turpis in eu mi bibendum neque. Molestie nunc non blandit massa enim. Enim praesent elementum facilisis leo vel fringilla est ullamcorper. Semper risus in hendrerit gravida rutrum quisque non tellus orci. Ac turpis egestas maecenas pharetra. In nulla posuere sollicitudin aliquam. Justo nec ultrices dui sapien eget mi proin sed libero. In ornare quam viverra orci sagittis eu. Proin nibh nisl condimentum id venenatis. Morbi enim nunc faucibus a pellentesque sit amet porttitor eget. Quis risus sed vulputate odio ut enim blandit. Risus feugiat in ante metus dictum at tempor commodo. Sodales neque sodales ut etiam. Nunc id cursus metus aliquam. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim enim. Augue ut lectus arcu bibendum at. Quis varius quam quisque id diam vel quam. Egestas congue quisque egestas diam in arcu. Condimentum mattis pellentesque id nibh tortor id aliquet lectus. Enim lobortis scelerisque fermentum dui faucibus in. In tellus integer feugiat scelerisque varius morbi enim nunc. Mattis molestie a iaculis at erat pellentesque. Elit scelerisque mauris pellentesque pulvinar pellentesque habitant morbi tristique. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Nisl rhoncus mattis rhoncus urna neque. Ac auctor augue mauris augue neque gravida in fermentum et. Sodales ut eu sem integer vitae justo eget. Sed egestas egestas fringilla phasellus. Viverra adipiscing at in tellus integer feugiat scelerisque varius. Purus gravida quis blandit turpis. Id porta nibh venenatis cras sed. Mattis vulputate enim nulla aliquet porttitor lacus. Augue eget arcu dictum varius duis at consectetur lorem donec. Nulla at volutpat diam ut venenatis tellus in metus. Aliquam etiam erat velit scelerisque in dictum non consectetur. Turpis cursus in hac habitasse platea dictumst. Consequat mauris nunc congue nisi vitae suscipit tellus. Volutpat maecenas volutpat blandit aliquam etiam. Massa massa ultricies mi quis hendrerit dolor magna eget est. Velit egestas dui id ornare arcu. Non consectetur a erat nam at. Orci sagittis eu volutpat odio facilisis mauris sit amet. Dui id ornare arcu odio. Sed arcu non odio euismod lacinia. Feugiat in ante metus dictum. Gravida arcu ac tortor dignissim convallis. Egestas sed tempus urna et pharetra pharetra massa massa. Nulla facilisi nullam vehicula ipsum a arcu. Ipsum a arcu cursus vitae congue mauris. Porttitor rhoncus dolor purus non. Magna sit amet purus gravida quis blandit. Sapien eget mi proin sed libero enim sed faucibus turpis. Nisl nunc mi ipsum faucibus vitae aliquet nec ullamcorper sit. Pellentesque dignissim enim sit amet venenatis urna cursus eget. Pharetra massa massa ultricies mi quis hendrerit. Sapien nec sagittis aliquam malesuada bibendum. Nunc scelerisque viverra mauris in aliquam sem fringilla ut. Dolor magna eget est lorem ipsum dolor. Amet commodo nulla facilisi nullam. Pellentesque elit ullamcorper dignissim cras. Id porta nibh venenatis cras sed felis eget. Nam at lectus urna duis. Laoreet non curabitur gravida arcu ac tortor dignissim convallis. Nunc lobortis mattis aliquam faucibus purus in massa tempor. Sit amet luctus venenatis lectus magna fringilla. Duis ultricies lacus sed turpis tincidunt id. Sed velit dignissim sodales ut eu. Ut tortor pretium viverra suspendisse potenti nullam. Iaculis at erat pellentesque adipiscing. Ipsum nunc aliquet bibendum enim facilisis gravida neque. Nulla aliquet enim tortor at auctor urna nunc id cursus. Amet cursus sit amet dictum sit amet justo donec enim. Enim nunc faucibus a pellentesque sit amet porttitor eget dolor. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros in. Nulla facilisi etiam dignissim diam quis enim. Ut enim blandit volutpat maecenas volutpat blandit aliquam etiam erat. Imperdiet proin fermentum leo vel orci porta non pulvinar neque. Vel fringilla est ullamcorper eget nulla. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Ipsum nunc aliquet bibendum enim facilisis gravida neque convallis a. Arcu cursus vitae congue mauris rhoncus aenean vel elit. Augue eget arcu dictum varius duis. Tristique et egestas quis ipsum. Quis varius quam quisque id. Varius sit amet mattis vulputate. Mattis molestie a iaculis at erat pellentesque. Libero justo laoreet sit amet cursus. Aliquam id diam maecenas ultricies mi eget mauris pharetra. Ut eu sem integer vitae justo eget. Fames ac turpis egestas sed. Suspendisse in est ante in nibh mauris cursus mattis. Faucibus pulvinar elementum integer enim neque volutpat ac tincidunt vitae. Neque vitae tempus quam pellentesque nec nam aliquam. Lobortis elementum nibh tellus molestie nunc non. Lacus vel facilisis volutpat est velit egestas dui. Justo laoreet sit amet cursus sit amet dictum sit amet. Adipiscing enim eu turpis egestas pretium aenean pharetra magna. Cursus metus aliquam eleifend mi in nulla posuere. Nibh mauris cursus mattis molestie a. Dignissim diam quis enim lobortis scelerisque fermentum. A scelerisque purus semper eget duis at tellus. Lacus sed turpis tincidunt id aliquet risus feugiat in. Non tellus orci ac auctor. Ultrices in iaculis nunc sed augue lacus. Tincidunt tortor aliquam nulla facilisi cras. Nulla facilisi nullam vehicula ipsum a arcu cursus vitae congue. Eget magna fermentum iaculis eu non diam phasellus. Pharetra massa massa ultricies mi quis. Eget mauris pharetra et ultrices neque ornare. Aliquam faucibus purus in massa. Facilisi morbi tempus iaculis urna id volutpat lacus. Accumsan lacus vel facilisis volutpat. Curabitur gravida arcu ac tortor. Quam lacus suspendisse faucibus interdum. Elementum nibh tellus molestie nunc non blandit massa enim. Libero id faucibus nisl tincidunt. Bibendum ut tristique et egestas. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Augue interdum velit euismod in pellentesque. Adipiscing diam donec adipiscing tristique risus nec feugiat. Fringilla ut morbi tincidunt augue interdum velit. Vitae et leo duis ut diam quam nulla porttitor massa. Egestas integer eget aliquet nibh praesent tristique. Posuere sollicitudin aliquam ultrices sagittis orci a. Nisi est sit amet facilisis. Risus quis varius quam quisque id diam. Faucibus turpis in eu mi. Et molestie ac feugiat sed lectus vestibulum. Porttitor lacus luctus accumsan tortor posuere ac. Platea dictumst vestibulum rhoncus est pellentesque. Tortor pretium viverra suspendisse potenti nullam ac tortor. Enim praesent elementum facilisis leo vel fringilla est. Proin libero nunc consequat interdum varius sit amet mattis vulputate. Turpis egestas pretium aenean pharetra magna ac placerat vestibulum lectus. Nulla pharetra diam sit amet nisl suscipit. Mauris nunc congue nisi vitae suscipit tellus mauris a diam. Faucibus in ornare quam viverra orci sagittis eu volutpat. Volutpat consequat mauris nunc congue nisi vitae. Dui nunc mattis enim ut tellus. Adipiscing elit ut aliquam purus sit amet luctus. Tempus egestas sed sed risus. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Massa ultricies mi quis hendrerit dolor magna eget. Pulvinar mattis nunc sed blandit libero volutpat sed cras ornare. Ut eu sem integer vitae justo eget magna fermentum. Ornare quam viverra orci sagittis. Eget dolor morbi non arcu risus quis varius quam. Tincidunt praesent semper feugiat nibh sed pulvinar. Sit amet justo donec enim diam vulputate. Dui faucibus in ornare quam viverra. Tincidunt tortor aliquam nulla facilisi cras fermentum odio eu. Turpis egestas sed tempus urna et. Pretium quam vulputate dignissim suspendisse in est ante in. Morbi quis commodo odio aenean sed adipiscing diam donec. Nunc mattis enim ut tellus elementum sagittis vitae et. Diam vel quam elementum pulvinar etiam non quam. Convallis posuere morbi leo urna molestie at elementum eu. Adipiscing at in tellus integer feugiat scelerisque varius morbi. Quis varius quam quisque id diam vel quam elementum. Dui accumsan sit amet nulla. Adipiscing elit duis tristique sollicitudin nibh sit amet commodo. Viverra ipsum nunc aliquet bibendum enim facilisis. Porta lorem mollis aliquam ut. Velit ut tortor pretium viverra suspendisse potenti. Quis viverra nibh cras pulvinar mattis nunc sed blandit. Pharetra magna ac placerat vestibulum. Mauris ultrices eros in cursus turpis massa. Lacus vestibulum sed arcu non odio euismod lacinia at. Dapibus ultrices in iaculis nunc sed. Cras adipiscing enim eu turpis egestas. Eget arcu dictum varius duis at consectetur. Consequat id porta nibh venenatis cras sed felis eget velit. Integer enim neque volutpat ac tincidunt vitae. Feugiat pretium nibh ipsum consequat nisl vel pretium lectus. Ut morbi tincidunt augue interdum velit euismod. Sed cras ornare arcu dui vivamus arcu felis bibendum ut. Eget felis eget nunc lobortis mattis aliquam faucibus purus in. Luctus venenatis lectus magna fringilla urna porttitor rhoncus dolor. Nisl nunc mi ipsum faucibus vitae. Proin fermentum leo vel orci porta. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. Et leo duis ut diam quam. Eros in cursus turpis massa tincidunt. Volutpat est velit egestas dui id. Commodo odio aenean sed adipiscing diam. Quis blandit turpis cursus in hac habitasse platea dictumst quisque. Magna fringilla urna porttitor rhoncus dolor. Amet consectetur adipiscing elit ut aliquam purus sit amet. Vitae justo eget magna fermentum iaculis eu non diam. Hendrerit dolor magna eget est. Ac placerat vestibulum lectus mauris ultrices eros in cursus turpis. Egestas diam in arcu cursus. At varius vel pharetra vel turpis nunc. Lacus vel facilisis volutpat est velit. Ut ornare lectus sit amet est placerat in egestas. Quam adipiscing vitae proin sagittis nisl rhoncus. Dolor purus non enim praesent. Urna condimentum mattis pellentesque id. Magnis dis parturient montes nascetur ridiculus. Feugiat nisl pretium fusce id. Sed cras ornare arcu dui vivamus. Vitae turpis massa sed elementum tempus egestas sed sed. Ac feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Ac ut consequat semper viverra nam libero. Consectetur lorem donec massa sapien faucibus. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Eu turpis egestas pretium aenean pharetra. Nisl rhoncus mattis rhoncus urna neque viverra justo nec ultrices. Pellentesque sit amet porttitor eget dolor morbi non arcu. Vitae justo eget magna fermentum iaculis. Quis auctor elit sed vulputate mi sit. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Semper auctor neque vitae tempus quam pellentesque nec nam. Rhoncus dolor purus non enim. Sed turpis tincidunt id aliquet risus feugiat. Sit amet justo donec enim diam vulputate ut pharetra sit. Risus pretium quam vulputate dignissim suspendisse in est ante in. Massa sapien faucibus et molestie ac feugiat. Id aliquet risus feugiat in ante metus. Risus ultricies tristique nulla aliquet enim tortor at auctor urna. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper morbi. Lacus sed turpis tincidunt id aliquet risus feugiat in. Risus ultricies tristique nulla aliquet enim tortor. In ornare quam viverra orci sagittis eu volutpat. Netus et malesuada fames ac turpis egestas sed tempus urna. Fames ac turpis egestas maecenas pharetra convallis posuere morbi. Etiam erat velit scelerisque in dictum non. Cursus turpis massa tincidunt dui ut ornare lectus. Tristique sollicitudin nibh sit amet commodo nulla facilisi. Pellentesque pulvinar pellentesque habitant morbi tristique senectus et. Aliquet eget sit amet tellus cras. Nullam ac tortor vitae purus faucibus ornare. Lacus viverra vitae congue eu consequat. Vulputate ut pharetra sit amet. Est ante in nibh mauris cursus mattis molestie a. Ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Et tortor at risus viverra. Sed libero enim sed faucibus turpis in eu. Id cursus metus aliquam eleifend mi in nulla posuere sollicitudin. Risus viverra adipiscing at in. Imperdiet massa tincidunt nunc pulvinar sapien et. Nec feugiat in fermentum posuere urna nec tincidunt. Ultricies mi eget mauris pharetra et. Morbi tristique senectus et netus et malesuada fames ac. At quis risus sed vulputate. Interdum velit laoreet id donec. Sapien pellentesque habitant morbi tristique. Pharetra vel turpis nunc eget lorem dolor sed viverra. In massa tempor nec feugiat nisl. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Mauris augue neque gravida in. Faucibus vitae aliquet nec ullamcorper sit amet risus. Id velit ut tortor pretium viverra suspendisse potenti. Leo integer malesuada nunc vel risus commodo viverra maecenas. Risus quis varius quam quisque id. Aliquam malesuada bibendum arcu vitae elementum curabitur vitae. Vestibulum lectus mauris ultrices eros in cursus turpis. Fermentum posuere urna nec tincidunt. Magna etiam tempor orci eu lobortis elementum nibh tellus molestie. Id ornare arcu odio ut. Facilisi nullam vehicula ipsum a arcu cursus vitae congue. Nulla pellentesque dignissim enim sit amet venenatis urna cursus eget. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Quis ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Sed cras ornare arcu dui vivamus arcu felis. Egestas diam in arcu cursus euismod quis. Tincidunt dui ut ornare lectus. Morbi tristique senectus et netus et. Ornare arcu dui vivamus arcu felis bibendum ut tristique. Habitant morbi tristique senectus et netus et malesuada fames ac. Ut tristique et egestas quis. Mollis aliquam ut porttitor leo. Venenatis tellus in metus vulputate eu scelerisque felis imperdiet proin. Sagittis eu volutpat odio facilisis mauris sit amet massa. Eu facilisis sed odio morbi. Nunc consequat interdum varius sit amet mattis. Velit dignissim sodales ut eu. Pellentesque eu tincidunt tortor aliquam. Porta lorem mollis aliquam ut porttitor. Rhoncus urna neque viverra justo nec ultrices. Viverra suspendisse potenti nullam ac tortor vitae purus. Fermentum posuere urna nec tincidunt praesent semper feugiat nibh sed. Purus sit amet luctus venenatis lectus magna fringilla urna porttitor. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Nisl nisi scelerisque eu ultrices vitae auctor. In vitae turpis massa sed elementum tempus egestas. Cursus sit amet dictum sit amet justo donec enim. Vitae congue eu consequat ac felis donec et. Augue interdum velit euismod in pellentesque massa placerat. Enim ut sem viverra aliquet eget sit amet. Velit scelerisque in dictum non consectetur a erat. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nunc faucibus a pellentesque sit amet porttitor eget. Tellus integer feugiat scelerisque varius morbi. Lorem sed risus ultricies tristique nulla aliquet enim tortor at. Eget nulla facilisi etiam dignissim diam quis enim lobortis scelerisque. Adipiscing elit duis tristique sollicitudin. Adipiscing elit pellentesque habitant morbi tristique. Ac tincidunt vitae semper quis lectus nulla at. Maecenas sed enim ut sem viverra. Erat pellentesque adipiscing commodo elit at imperdiet. Dolor morbi non arcu risus quis varius quam quisque. Fringilla urna porttitor rhoncus dolor purus non enim praesent. Tellus integer feugiat scelerisque varius morbi enim nunc faucibus a. Felis eget nunc lobortis mattis aliquam faucibus purus in. Fringilla phasellus faucibus scelerisque eleifend. Pulvinar etiam non quam lacus suspendisse faucibus interdum posuere. Risus ultricies tristique nulla aliquet. Lectus sit amet est placerat. Ac ut consequat semper viverra nam libero justo. Dapibus ultrices in iaculis nunc sed augue. Mattis ullamcorper velit sed ullamcorper. Eget nullam non nisi est. Vitae elementum curabitur vitae nunc sed velit. Sit amet commodo nulla facilisi nullam vehicula ipsum a arcu. Tempor nec feugiat nisl pretium fusce id velit ut. Nulla pellentesque dignissim enim sit amet venenatis. Sed tempus urna et pharetra pharetra. Congue quisque egestas diam in. Convallis posuere morbi leo urna. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Sagittis nisl rhoncus mattis rhoncus urna neque viverra justo. Scelerisque felis imperdiet proin fermentum leo vel. Ut placerat orci nulla pellentesque dignissim enim sit amet. In cursus turpis massa tincidunt dui. Rutrum quisque non tellus orci ac auctor augue mauris augue. Cursus vitae congue mauris rhoncus aenean vel elit scelerisque mauris. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Habitant morbi tristique senectus et netus et. Ridiculus mus mauris vitae ultricies leo. Vitae semper quis lectus nulla at volutpat diam. Purus faucibus ornare suspendisse sed nisi. Enim lobortis scelerisque fermentum dui faucibus in ornare quam. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Varius duis at consectetur lorem donec. Pulvinar pellentesque habitant morbi tristique senectus et netus et. A iaculis at erat pellentesque adipiscing commodo elit at imperdiet. Mi ipsum faucibus vitae aliquet nec. Libero volutpat sed cras ornare arcu dui vivamus arcu. Natoque penatibus et magnis dis parturient montes nascetur ridiculus. Maecenas volutpat blandit aliquam etiam erat velit scelerisque. Cras adipiscing enim eu turpis. Nec tincidunt praesent semper feugiat nibh sed pulvinar. Justo laoreet sit amet cursus sit amet dictum sit. Velit scelerisque in dictum non consectetur a erat nam. Turpis tincidunt id aliquet risus feugiat in ante. Aliquet risus feugiat in ante metus dictum. Hac habitasse platea dictumst quisque sagittis purus sit. Et pharetra pharetra massa massa ultricies. Sit amet nisl suscipit adipiscing bibendum est ultricies integer. Venenatis urna cursus eget nunc scelerisque viverra mauris in. Integer quis auctor elit sed. In est ante in nibh mauris cursus mattis molestie. Scelerisque in dictum non consectetur a erat nam at. Lectus sit amet est placerat in. Sit amet cursus sit amet. Nibh nisl condimentum id venenatis a condimentum. Purus ut faucibus pulvinar elementum integer enim. Pharetra sit amet aliquam id diam maecenas. Id cursus metus aliquam eleifend mi in nulla posuere. Lobortis mattis aliquam faucibus purus in massa tempor nec. Urna neque viverra justo nec ultrices dui sapien eget. Enim ut sem viverra aliquet eget sit amet. In eu mi bibendum neque egestas congue quisque egestas. Enim neque volutpat ac tincidunt. Orci ac auctor augue mauris augue neque gravida in fermentum. Velit aliquet sagittis id consectetur. Enim ut sem viverra aliquet eget sit amet tellus. Semper auctor neque vitae tempus quam pellentesque nec. Non blandit massa enim nec dui nunc. Morbi blandit cursus risus at ultrices mi tempus imperdiet nulla. Arcu non odio euismod lacinia at quis risus. Dictum varius duis at consectetur lorem donec massa. Blandit massa enim nec dui. Nibh ipsum consequat nisl vel. Turpis in eu mi bibendum neque. Ut tristique et egestas quis. Ac odio tempor orci dapibus. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim. Integer feugiat scelerisque varius morbi enim. Libero volutpat sed cras ornare arcu dui. Odio aenean sed adipiscing diam. Et egestas quis ipsum suspendisse ultrices. Aliquet lectus proin nibh nisl condimentum. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh sit. Blandit massa enim nec dui. Tellus molestie nunc non blandit massa enim nec. Tortor vitae purus faucibus ornare suspendisse sed nisi. Nascetur ridiculus mus mauris vitae ultricies leo. Elementum facilisis leo vel fringilla est ullamcorper eget nulla. Diam maecenas ultricies mi eget. Duis tristique sollicitudin nibh sit amet commodo nulla. Tempus iaculis urna id volutpat lacus laoreet non curabitur gravida. Dictumst quisque sagittis purus sit amet. Viverra mauris in aliquam sem. Quis risus sed vulputate odio ut enim blandit volutpat maecenas. Condimentum mattis pellentesque id nibh tortor id. Non sodales neque sodales ut etiam sit amet. Ipsum consequat nisl vel pretium. Cursus in hac habitasse platea dictumst quisque sagittis purus sit. Fringilla est ullamcorper eget nulla facilisi etiam. Tellus elementum sagittis vitae et leo duis ut diam quam. Nisl vel pretium lectus quam id leo in. ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4224367 tomlkit-0.12.4/tests/toml-spec-tests/values/qa-table-inline-1000.toml0000644000000000000000000004671114567257576022171 0ustar00key = { key1 = "abcdefg", key2 = "abcdefg", key3 = "abcdefg", key4 = "abcdefg", key5 = "abcdefg", key6 = "abcdefg", key7 = "abcdefg", key8 = "abcdefg", key9 = "abcdefg", key10 = "abcdefg", key11 = "abcdefg", key12 = "abcdefg", key13 = "abcdefg", key14 = "abcdefg", key15 = "abcdefg", key16 = "abcdefg", key17 = "abcdefg", key18 = "abcdefg", key19 = "abcdefg", key20 = "abcdefg", key21 = "abcdefg", key22 = "abcdefg", key23 = "abcdefg", key24 = "abcdefg", key25 = "abcdefg", key26 = "abcdefg", key27 = "abcdefg", key28 = "abcdefg", key29 = "abcdefg", key30 = "abcdefg", key31 = "abcdefg", key32 = "abcdefg", key33 = "abcdefg", key34 = "abcdefg", key35 = "abcdefg", key36 = "abcdefg", key37 = "abcdefg", key38 = "abcdefg", key39 = "abcdefg", key40 = "abcdefg", key41 = "abcdefg", key42 = "abcdefg", key43 = "abcdefg", key44 = "abcdefg", key45 = "abcdefg", key46 = "abcdefg", key47 = "abcdefg", key48 = "abcdefg", key49 = "abcdefg", key50 = "abcdefg", key51 = "abcdefg", key52 = "abcdefg", key53 = "abcdefg", key54 = "abcdefg", key55 = "abcdefg", key56 = "abcdefg", key57 = "abcdefg", key58 = "abcdefg", key59 = "abcdefg", key60 = "abcdefg", key61 = "abcdefg", key62 = "abcdefg", key63 = "abcdefg", key64 = "abcdefg", key65 = "abcdefg", key66 = "abcdefg", key67 = "abcdefg", key68 = "abcdefg", key69 = "abcdefg", key70 = "abcdefg", key71 = "abcdefg", key72 = "abcdefg", key73 = "abcdefg", key74 = "abcdefg", key75 = "abcdefg", key76 = "abcdefg", key77 = "abcdefg", key78 = "abcdefg", key79 = "abcdefg", key80 = "abcdefg", key81 = "abcdefg", key82 = "abcdefg", key83 = "abcdefg", key84 = "abcdefg", key85 = "abcdefg", key86 = "abcdefg", key87 = "abcdefg", key88 = "abcdefg", key89 = "abcdefg", key90 = "abcdefg", key91 = "abcdefg", key92 = "abcdefg", key93 = "abcdefg", key94 = "abcdefg", key95 = "abcdefg", key96 = "abcdefg", key97 = "abcdefg", key98 = "abcdefg", key99 = "abcdefg", key100 = "abcdefg", key101 = "abcdefg", key102 = "abcdefg", key103 = "abcdefg", key104 = "abcdefg", key105 = "abcdefg", key106 = "abcdefg", key107 = "abcdefg", key108 = "abcdefg", key109 = "abcdefg", key110 = "abcdefg", key111 = "abcdefg", key112 = "abcdefg", key113 = "abcdefg", key114 = "abcdefg", key115 = "abcdefg", key116 = "abcdefg", key117 = "abcdefg", key118 = "abcdefg", key119 = "abcdefg", key120 = "abcdefg", key121 = "abcdefg", key122 = "abcdefg", key123 = "abcdefg", key124 = "abcdefg", key125 = "abcdefg", key126 = "abcdefg", key127 = "abcdefg", key128 = "abcdefg", key129 = "abcdefg", key130 = "abcdefg", key131 = "abcdefg", key132 = "abcdefg", key133 = "abcdefg", key134 = "abcdefg", key135 = "abcdefg", key136 = "abcdefg", key137 = "abcdefg", key138 = "abcdefg", key139 = "abcdefg", key140 = "abcdefg", key141 = "abcdefg", key142 = "abcdefg", key143 = "abcdefg", key144 = "abcdefg", key145 = "abcdefg", key146 = "abcdefg", key147 = "abcdefg", key148 = "abcdefg", key149 = "abcdefg", key150 = "abcdefg", key151 = "abcdefg", key152 = "abcdefg", key153 = "abcdefg", key154 = "abcdefg", key155 = "abcdefg", key156 = "abcdefg", key157 = "abcdefg", key158 = "abcdefg", key159 = "abcdefg", key160 = "abcdefg", key161 = "abcdefg", key162 = "abcdefg", key163 = "abcdefg", key164 = "abcdefg", key165 = "abcdefg", key166 = "abcdefg", key167 = "abcdefg", key168 = "abcdefg", key169 = "abcdefg", key170 = "abcdefg", key171 = "abcdefg", key172 = "abcdefg", key173 = "abcdefg", key174 = "abcdefg", key175 = "abcdefg", key176 = "abcdefg", key177 = "abcdefg", key178 = "abcdefg", key179 = "abcdefg", key180 = "abcdefg", key181 = "abcdefg", key182 = "abcdefg", key183 = "abcdefg", key184 = "abcdefg", key185 = "abcdefg", key186 = "abcdefg", key187 = "abcdefg", key188 = "abcdefg", key189 = "abcdefg", key190 = "abcdefg", key191 = "abcdefg", key192 = "abcdefg", key193 = "abcdefg", key194 = "abcdefg", key195 = "abcdefg", key196 = "abcdefg", key197 = "abcdefg", key198 = "abcdefg", key199 = "abcdefg", key200 = "abcdefg", key201 = "abcdefg", key202 = "abcdefg", key203 = "abcdefg", key204 = "abcdefg", key205 = "abcdefg", key206 = "abcdefg", key207 = "abcdefg", key208 = "abcdefg", key209 = "abcdefg", key210 = "abcdefg", key211 = "abcdefg", key212 = "abcdefg", key213 = "abcdefg", key214 = "abcdefg", key215 = "abcdefg", key216 = "abcdefg", key217 = "abcdefg", key218 = "abcdefg", key219 = "abcdefg", key220 = "abcdefg", key221 = "abcdefg", key222 = "abcdefg", key223 = "abcdefg", key224 = "abcdefg", key225 = "abcdefg", key226 = "abcdefg", key227 = "abcdefg", key228 = "abcdefg", key229 = "abcdefg", key230 = "abcdefg", key231 = "abcdefg", key232 = "abcdefg", key233 = "abcdefg", key234 = "abcdefg", key235 = "abcdefg", key236 = "abcdefg", key237 = "abcdefg", key238 = "abcdefg", key239 = "abcdefg", key240 = "abcdefg", key241 = "abcdefg", key242 = "abcdefg", key243 = "abcdefg", key244 = "abcdefg", key245 = "abcdefg", key246 = "abcdefg", key247 = "abcdefg", key248 = "abcdefg", key249 = "abcdefg", key250 = "abcdefg", key251 = "abcdefg", key252 = "abcdefg", key253 = "abcdefg", key254 = "abcdefg", key255 = "abcdefg", key256 = "abcdefg", key257 = "abcdefg", key258 = "abcdefg", key259 = "abcdefg", key260 = "abcdefg", key261 = "abcdefg", key262 = "abcdefg", key263 = "abcdefg", key264 = "abcdefg", key265 = "abcdefg", key266 = "abcdefg", key267 = "abcdefg", key268 = "abcdefg", key269 = "abcdefg", key270 = "abcdefg", key271 = "abcdefg", key272 = "abcdefg", key273 = "abcdefg", key274 = "abcdefg", key275 = "abcdefg", key276 = "abcdefg", key277 = "abcdefg", key278 = "abcdefg", key279 = "abcdefg", key280 = "abcdefg", key281 = "abcdefg", key282 = "abcdefg", key283 = "abcdefg", key284 = "abcdefg", key285 = "abcdefg", key286 = "abcdefg", key287 = "abcdefg", key288 = "abcdefg", key289 = "abcdefg", key290 = "abcdefg", key291 = "abcdefg", key292 = "abcdefg", key293 = "abcdefg", key294 = "abcdefg", key295 = "abcdefg", key296 = "abcdefg", key297 = "abcdefg", key298 = "abcdefg", key299 = "abcdefg", key300 = "abcdefg", key301 = "abcdefg", key302 = "abcdefg", key303 = "abcdefg", key304 = "abcdefg", key305 = "abcdefg", key306 = "abcdefg", key307 = "abcdefg", key308 = "abcdefg", key309 = "abcdefg", key310 = "abcdefg", key311 = "abcdefg", key312 = "abcdefg", key313 = "abcdefg", key314 = "abcdefg", key315 = "abcdefg", key316 = "abcdefg", key317 = "abcdefg", key318 = "abcdefg", key319 = "abcdefg", key320 = "abcdefg", key321 = "abcdefg", key322 = "abcdefg", key323 = "abcdefg", key324 = "abcdefg", key325 = "abcdefg", key326 = "abcdefg", key327 = "abcdefg", key328 = "abcdefg", key329 = "abcdefg", key330 = "abcdefg", key331 = "abcdefg", key332 = "abcdefg", key333 = "abcdefg", key334 = "abcdefg", key335 = "abcdefg", key336 = "abcdefg", key337 = "abcdefg", key338 = "abcdefg", key339 = "abcdefg", key340 = "abcdefg", key341 = "abcdefg", key342 = "abcdefg", key343 = "abcdefg", key344 = "abcdefg", key345 = "abcdefg", key346 = "abcdefg", key347 = "abcdefg", key348 = "abcdefg", key349 = "abcdefg", key350 = "abcdefg", key351 = "abcdefg", key352 = "abcdefg", key353 = "abcdefg", key354 = "abcdefg", key355 = "abcdefg", key356 = "abcdefg", key357 = "abcdefg", key358 = "abcdefg", key359 = "abcdefg", key360 = "abcdefg", key361 = "abcdefg", key362 = "abcdefg", key363 = "abcdefg", key364 = "abcdefg", key365 = "abcdefg", key366 = "abcdefg", key367 = "abcdefg", key368 = "abcdefg", key369 = "abcdefg", key370 = "abcdefg", key371 = "abcdefg", key372 = "abcdefg", key373 = "abcdefg", key374 = "abcdefg", key375 = "abcdefg", key376 = "abcdefg", key377 = "abcdefg", key378 = "abcdefg", key379 = "abcdefg", key380 = "abcdefg", key381 = "abcdefg", key382 = "abcdefg", key383 = "abcdefg", key384 = "abcdefg", key385 = "abcdefg", key386 = "abcdefg", key387 = "abcdefg", key388 = "abcdefg", key389 = "abcdefg", key390 = "abcdefg", key391 = "abcdefg", key392 = "abcdefg", key393 = "abcdefg", key394 = "abcdefg", key395 = "abcdefg", key396 = "abcdefg", key397 = "abcdefg", key398 = "abcdefg", key399 = "abcdefg", key400 = "abcdefg", key401 = "abcdefg", key402 = "abcdefg", key403 = "abcdefg", key404 = "abcdefg", key405 = "abcdefg", key406 = "abcdefg", key407 = "abcdefg", key408 = "abcdefg", key409 = "abcdefg", key410 = "abcdefg", key411 = "abcdefg", key412 = "abcdefg", key413 = "abcdefg", key414 = "abcdefg", key415 = "abcdefg", key416 = "abcdefg", key417 = "abcdefg", key418 = "abcdefg", key419 = "abcdefg", key420 = "abcdefg", key421 = "abcdefg", key422 = "abcdefg", key423 = "abcdefg", key424 = "abcdefg", key425 = "abcdefg", key426 = "abcdefg", key427 = "abcdefg", key428 = "abcdefg", key429 = "abcdefg", key430 = "abcdefg", key431 = "abcdefg", key432 = "abcdefg", key433 = "abcdefg", key434 = "abcdefg", key435 = "abcdefg", key436 = "abcdefg", key437 = "abcdefg", key438 = "abcdefg", key439 = "abcdefg", key440 = "abcdefg", key441 = "abcdefg", key442 = "abcdefg", key443 = "abcdefg", key444 = "abcdefg", key445 = "abcdefg", key446 = "abcdefg", key447 = "abcdefg", key448 = "abcdefg", key449 = "abcdefg", key450 = "abcdefg", key451 = "abcdefg", key452 = "abcdefg", key453 = "abcdefg", key454 = "abcdefg", key455 = "abcdefg", key456 = "abcdefg", key457 = "abcdefg", key458 = "abcdefg", key459 = "abcdefg", key460 = "abcdefg", key461 = "abcdefg", key462 = "abcdefg", key463 = "abcdefg", key464 = "abcdefg", key465 = "abcdefg", key466 = "abcdefg", key467 = "abcdefg", key468 = "abcdefg", key469 = "abcdefg", key470 = "abcdefg", key471 = "abcdefg", key472 = "abcdefg", key473 = "abcdefg", key474 = "abcdefg", key475 = "abcdefg", key476 = "abcdefg", key477 = "abcdefg", key478 = "abcdefg", key479 = "abcdefg", key480 = "abcdefg", key481 = "abcdefg", key482 = "abcdefg", key483 = "abcdefg", key484 = "abcdefg", key485 = "abcdefg", key486 = "abcdefg", key487 = "abcdefg", key488 = "abcdefg", key489 = "abcdefg", key490 = "abcdefg", key491 = "abcdefg", key492 = "abcdefg", key493 = "abcdefg", key494 = "abcdefg", key495 = "abcdefg", key496 = "abcdefg", key497 = "abcdefg", key498 = "abcdefg", key499 = "abcdefg", key500 = "abcdefg", key501 = "abcdefg", key502 = "abcdefg", key503 = "abcdefg", key504 = "abcdefg", key505 = "abcdefg", key506 = "abcdefg", key507 = "abcdefg", key508 = "abcdefg", key509 = "abcdefg", key510 = "abcdefg", key511 = "abcdefg", key512 = "abcdefg", key513 = "abcdefg", key514 = "abcdefg", key515 = "abcdefg", key516 = "abcdefg", key517 = "abcdefg", key518 = "abcdefg", key519 = "abcdefg", key520 = "abcdefg", key521 = "abcdefg", key522 = "abcdefg", key523 = "abcdefg", key524 = "abcdefg", key525 = "abcdefg", key526 = "abcdefg", key527 = "abcdefg", key528 = "abcdefg", key529 = "abcdefg", key530 = "abcdefg", key531 = "abcdefg", key532 = "abcdefg", key533 = "abcdefg", key534 = "abcdefg", key535 = "abcdefg", key536 = "abcdefg", key537 = "abcdefg", key538 = "abcdefg", key539 = "abcdefg", key540 = "abcdefg", key541 = "abcdefg", key542 = "abcdefg", key543 = "abcdefg", key544 = "abcdefg", key545 = "abcdefg", key546 = "abcdefg", key547 = "abcdefg", key548 = "abcdefg", key549 = "abcdefg", key550 = "abcdefg", key551 = "abcdefg", key552 = "abcdefg", key553 = "abcdefg", key554 = "abcdefg", key555 = "abcdefg", key556 = "abcdefg", key557 = "abcdefg", key558 = "abcdefg", key559 = "abcdefg", key560 = "abcdefg", key561 = "abcdefg", key562 = "abcdefg", key563 = "abcdefg", key564 = "abcdefg", key565 = "abcdefg", key566 = "abcdefg", key567 = "abcdefg", key568 = "abcdefg", key569 = "abcdefg", key570 = "abcdefg", key571 = "abcdefg", key572 = "abcdefg", key573 = "abcdefg", key574 = "abcdefg", key575 = "abcdefg", key576 = "abcdefg", key577 = "abcdefg", key578 = "abcdefg", key579 = "abcdefg", key580 = "abcdefg", key581 = "abcdefg", key582 = "abcdefg", key583 = "abcdefg", key584 = "abcdefg", key585 = "abcdefg", key586 = "abcdefg", key587 = "abcdefg", key588 = "abcdefg", key589 = "abcdefg", key590 = "abcdefg", key591 = "abcdefg", key592 = "abcdefg", key593 = "abcdefg", key594 = "abcdefg", key595 = "abcdefg", key596 = "abcdefg", key597 = "abcdefg", key598 = "abcdefg", key599 = "abcdefg", key600 = "abcdefg", key601 = "abcdefg", key602 = "abcdefg", key603 = "abcdefg", key604 = "abcdefg", key605 = "abcdefg", key606 = "abcdefg", key607 = "abcdefg", key608 = "abcdefg", key609 = "abcdefg", key610 = "abcdefg", key611 = "abcdefg", key612 = "abcdefg", key613 = "abcdefg", key614 = "abcdefg", key615 = "abcdefg", key616 = "abcdefg", key617 = "abcdefg", key618 = "abcdefg", key619 = "abcdefg", key620 = "abcdefg", key621 = "abcdefg", key622 = "abcdefg", key623 = "abcdefg", key624 = "abcdefg", key625 = "abcdefg", key626 = "abcdefg", key627 = "abcdefg", key628 = "abcdefg", key629 = "abcdefg", key630 = "abcdefg", key631 = "abcdefg", key632 = "abcdefg", key633 = "abcdefg", key634 = "abcdefg", key635 = "abcdefg", key636 = "abcdefg", key637 = "abcdefg", key638 = "abcdefg", key639 = "abcdefg", key640 = "abcdefg", key641 = "abcdefg", key642 = "abcdefg", key643 = "abcdefg", key644 = "abcdefg", key645 = "abcdefg", key646 = "abcdefg", key647 = "abcdefg", key648 = "abcdefg", key649 = "abcdefg", key650 = "abcdefg", key651 = "abcdefg", key652 = "abcdefg", key653 = "abcdefg", key654 = "abcdefg", key655 = "abcdefg", key656 = "abcdefg", key657 = "abcdefg", key658 = "abcdefg", key659 = "abcdefg", key660 = "abcdefg", key661 = "abcdefg", key662 = "abcdefg", key663 = "abcdefg", key664 = "abcdefg", key665 = "abcdefg", key666 = "abcdefg", key667 = "abcdefg", key668 = "abcdefg", key669 = "abcdefg", key670 = "abcdefg", key671 = "abcdefg", key672 = "abcdefg", key673 = "abcdefg", key674 = "abcdefg", key675 = "abcdefg", key676 = "abcdefg", key677 = "abcdefg", key678 = "abcdefg", key679 = "abcdefg", key680 = "abcdefg", key681 = "abcdefg", key682 = "abcdefg", key683 = "abcdefg", key684 = "abcdefg", key685 = "abcdefg", key686 = "abcdefg", key687 = "abcdefg", key688 = "abcdefg", key689 = "abcdefg", key690 = "abcdefg", key691 = "abcdefg", key692 = "abcdefg", key693 = "abcdefg", key694 = "abcdefg", key695 = "abcdefg", key696 = "abcdefg", key697 = "abcdefg", key698 = "abcdefg", key699 = "abcdefg", key700 = "abcdefg", key701 = "abcdefg", key702 = "abcdefg", key703 = "abcdefg", key704 = "abcdefg", key705 = "abcdefg", key706 = "abcdefg", key707 = "abcdefg", key708 = "abcdefg", key709 = "abcdefg", key710 = "abcdefg", key711 = "abcdefg", key712 = "abcdefg", key713 = "abcdefg", key714 = "abcdefg", key715 = "abcdefg", key716 = "abcdefg", key717 = "abcdefg", key718 = "abcdefg", key719 = "abcdefg", key720 = "abcdefg", key721 = "abcdefg", key722 = "abcdefg", key723 = "abcdefg", key724 = "abcdefg", key725 = "abcdefg", key726 = "abcdefg", key727 = "abcdefg", key728 = "abcdefg", key729 = "abcdefg", key730 = "abcdefg", key731 = "abcdefg", key732 = "abcdefg", key733 = "abcdefg", key734 = "abcdefg", key735 = "abcdefg", key736 = "abcdefg", key737 = "abcdefg", key738 = "abcdefg", key739 = "abcdefg", key740 = "abcdefg", key741 = "abcdefg", key742 = "abcdefg", key743 = "abcdefg", key744 = "abcdefg", key745 = "abcdefg", key746 = "abcdefg", key747 = "abcdefg", key748 = "abcdefg", key749 = "abcdefg", key750 = "abcdefg", key751 = "abcdefg", key752 = "abcdefg", key753 = "abcdefg", key754 = "abcdefg", key755 = "abcdefg", key756 = "abcdefg", key757 = "abcdefg", key758 = "abcdefg", key759 = "abcdefg", key760 = "abcdefg", key761 = "abcdefg", key762 = "abcdefg", key763 = "abcdefg", key764 = "abcdefg", key765 = "abcdefg", key766 = "abcdefg", key767 = "abcdefg", key768 = "abcdefg", key769 = "abcdefg", key770 = "abcdefg", key771 = "abcdefg", key772 = "abcdefg", key773 = "abcdefg", key774 = "abcdefg", key775 = "abcdefg", key776 = "abcdefg", key777 = "abcdefg", key778 = "abcdefg", key779 = "abcdefg", key780 = "abcdefg", key781 = "abcdefg", key782 = "abcdefg", key783 = "abcdefg", key784 = "abcdefg", key785 = "abcdefg", key786 = "abcdefg", key787 = "abcdefg", key788 = "abcdefg", key789 = "abcdefg", key790 = "abcdefg", key791 = "abcdefg", key792 = "abcdefg", key793 = "abcdefg", key794 = "abcdefg", key795 = "abcdefg", key796 = "abcdefg", key797 = "abcdefg", key798 = "abcdefg", key799 = "abcdefg", key800 = "abcdefg", key801 = "abcdefg", key802 = "abcdefg", key803 = "abcdefg", key804 = "abcdefg", key805 = "abcdefg", key806 = "abcdefg", key807 = "abcdefg", key808 = "abcdefg", key809 = "abcdefg", key810 = "abcdefg", key811 = "abcdefg", key812 = "abcdefg", key813 = "abcdefg", key814 = "abcdefg", key815 = "abcdefg", key816 = "abcdefg", key817 = "abcdefg", key818 = "abcdefg", key819 = "abcdefg", key820 = "abcdefg", key821 = "abcdefg", key822 = "abcdefg", key823 = "abcdefg", key824 = "abcdefg", key825 = "abcdefg", key826 = "abcdefg", key827 = "abcdefg", key828 = "abcdefg", key829 = "abcdefg", key830 = "abcdefg", key831 = "abcdefg", key832 = "abcdefg", key833 = "abcdefg", key834 = "abcdefg", key835 = "abcdefg", key836 = "abcdefg", key837 = "abcdefg", key838 = "abcdefg", key839 = "abcdefg", key840 = "abcdefg", key841 = "abcdefg", key842 = "abcdefg", key843 = "abcdefg", key844 = "abcdefg", key845 = "abcdefg", key846 = "abcdefg", key847 = "abcdefg", key848 = "abcdefg", key849 = "abcdefg", key850 = "abcdefg", key851 = "abcdefg", key852 = "abcdefg", key853 = "abcdefg", key854 = "abcdefg", key855 = "abcdefg", key856 = "abcdefg", key857 = "abcdefg", key858 = "abcdefg", key859 = "abcdefg", key860 = "abcdefg", key861 = "abcdefg", key862 = "abcdefg", key863 = "abcdefg", key864 = "abcdefg", key865 = "abcdefg", key866 = "abcdefg", key867 = "abcdefg", key868 = "abcdefg", key869 = "abcdefg", key870 = "abcdefg", key871 = "abcdefg", key872 = "abcdefg", key873 = "abcdefg", key874 = "abcdefg", key875 = "abcdefg", key876 = "abcdefg", key877 = "abcdefg", key878 = "abcdefg", key879 = "abcdefg", key880 = "abcdefg", key881 = "abcdefg", key882 = "abcdefg", key883 = "abcdefg", key884 = "abcdefg", key885 = "abcdefg", key886 = "abcdefg", key887 = "abcdefg", key888 = "abcdefg", key889 = "abcdefg", key890 = "abcdefg", key891 = "abcdefg", key892 = "abcdefg", key893 = "abcdefg", key894 = "abcdefg", key895 = "abcdefg", key896 = "abcdefg", key897 = "abcdefg", key898 = "abcdefg", key899 = "abcdefg", key900 = "abcdefg", key901 = "abcdefg", key902 = "abcdefg", key903 = "abcdefg", key904 = "abcdefg", key905 = "abcdefg", key906 = "abcdefg", key907 = "abcdefg", key908 = "abcdefg", key909 = "abcdefg", key910 = "abcdefg", key911 = "abcdefg", key912 = "abcdefg", key913 = "abcdefg", key914 = "abcdefg", key915 = "abcdefg", key916 = "abcdefg", key917 = "abcdefg", key918 = "abcdefg", key919 = "abcdefg", key920 = "abcdefg", key921 = "abcdefg", key922 = "abcdefg", key923 = "abcdefg", key924 = "abcdefg", key925 = "abcdefg", key926 = "abcdefg", key927 = "abcdefg", key928 = "abcdefg", key929 = "abcdefg", key930 = "abcdefg", key931 = "abcdefg", key932 = "abcdefg", key933 = "abcdefg", key934 = "abcdefg", key935 = "abcdefg", key936 = "abcdefg", key937 = "abcdefg", key938 = "abcdefg", key939 = "abcdefg", key940 = "abcdefg", key941 = "abcdefg", key942 = "abcdefg", key943 = "abcdefg", key944 = "abcdefg", key945 = "abcdefg", key946 = "abcdefg", key947 = "abcdefg", key948 = "abcdefg", key949 = "abcdefg", key950 = "abcdefg", key951 = "abcdefg", key952 = "abcdefg", key953 = "abcdefg", key954 = "abcdefg", key955 = "abcdefg", key956 = "abcdefg", key957 = "abcdefg", key958 = "abcdefg", key959 = "abcdefg", key960 = "abcdefg", key961 = "abcdefg", key962 = "abcdefg", key963 = "abcdefg", key964 = "abcdefg", key965 = "abcdefg", key966 = "abcdefg", key967 = "abcdefg", key968 = "abcdefg", key969 = "abcdefg", key970 = "abcdefg", key971 = "abcdefg", key972 = "abcdefg", key973 = "abcdefg", key974 = "abcdefg", key975 = "abcdefg", key976 = "abcdefg", key977 = "abcdefg", key978 = "abcdefg", key979 = "abcdefg", key980 = "abcdefg", key981 = "abcdefg", key982 = "abcdefg", key983 = "abcdefg", key984 = "abcdefg", key985 = "abcdefg", key986 = "abcdefg", key987 = "abcdefg", key988 = "abcdefg", key989 = "abcdefg", key990 = "abcdefg", key991 = "abcdefg", key992 = "abcdefg", key993 = "abcdefg", key994 = "abcdefg", key995 = "abcdefg", key996 = "abcdefg", key997 = "abcdefg", key998 = "abcdefg", key999 = "abcdefg", key1000 = "abcdefg", end = true} ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4224367 tomlkit-0.12.4/tests/toml-spec-tests/values/qa-table-inline-1000.yaml0000644000000000000000000004276714567257576022167 0ustar00key: key1: abcdefg key2: abcdefg key3: abcdefg key4: abcdefg key5: abcdefg key6: abcdefg key7: abcdefg key8: abcdefg key9: abcdefg key10: abcdefg key11: abcdefg key12: abcdefg key13: abcdefg key14: abcdefg key15: abcdefg key16: abcdefg key17: abcdefg key18: abcdefg key19: abcdefg key20: abcdefg key21: abcdefg key22: abcdefg key23: abcdefg key24: abcdefg key25: abcdefg key26: abcdefg key27: abcdefg key28: abcdefg key29: abcdefg key30: abcdefg key31: abcdefg key32: abcdefg key33: abcdefg key34: abcdefg key35: abcdefg key36: abcdefg key37: abcdefg key38: abcdefg key39: abcdefg key40: abcdefg key41: abcdefg key42: abcdefg key43: abcdefg key44: abcdefg key45: abcdefg key46: abcdefg key47: abcdefg key48: abcdefg key49: abcdefg key50: abcdefg key51: abcdefg key52: abcdefg key53: abcdefg key54: abcdefg key55: abcdefg key56: abcdefg key57: abcdefg key58: abcdefg key59: abcdefg key60: abcdefg key61: abcdefg key62: abcdefg key63: abcdefg key64: abcdefg key65: abcdefg key66: abcdefg key67: abcdefg key68: abcdefg key69: abcdefg key70: abcdefg key71: abcdefg key72: abcdefg key73: abcdefg key74: abcdefg key75: abcdefg key76: abcdefg key77: abcdefg key78: abcdefg key79: abcdefg key80: abcdefg key81: abcdefg key82: abcdefg key83: abcdefg key84: abcdefg key85: abcdefg key86: abcdefg key87: abcdefg key88: abcdefg key89: abcdefg key90: abcdefg key91: abcdefg key92: abcdefg key93: abcdefg key94: abcdefg key95: abcdefg key96: abcdefg key97: abcdefg key98: abcdefg key99: abcdefg key100: abcdefg key101: abcdefg key102: abcdefg key103: abcdefg key104: abcdefg key105: abcdefg key106: abcdefg key107: abcdefg key108: abcdefg key109: abcdefg key110: abcdefg key111: abcdefg key112: abcdefg key113: abcdefg key114: abcdefg key115: abcdefg key116: abcdefg key117: abcdefg key118: abcdefg key119: abcdefg key120: abcdefg key121: abcdefg key122: abcdefg key123: abcdefg key124: abcdefg key125: abcdefg key126: abcdefg key127: abcdefg key128: abcdefg key129: abcdefg key130: abcdefg key131: abcdefg key132: abcdefg key133: abcdefg key134: abcdefg key135: abcdefg key136: abcdefg key137: abcdefg key138: abcdefg key139: abcdefg key140: abcdefg key141: abcdefg key142: abcdefg key143: abcdefg key144: abcdefg key145: abcdefg key146: abcdefg key147: abcdefg key148: abcdefg key149: abcdefg key150: abcdefg key151: abcdefg key152: abcdefg key153: abcdefg key154: abcdefg key155: abcdefg key156: abcdefg key157: abcdefg key158: abcdefg key159: abcdefg key160: abcdefg key161: abcdefg key162: abcdefg key163: abcdefg key164: abcdefg key165: abcdefg key166: abcdefg key167: abcdefg key168: abcdefg key169: abcdefg key170: abcdefg key171: abcdefg key172: abcdefg key173: abcdefg key174: abcdefg key175: abcdefg key176: abcdefg key177: abcdefg key178: abcdefg key179: abcdefg key180: abcdefg key181: abcdefg key182: abcdefg key183: abcdefg key184: abcdefg key185: abcdefg key186: abcdefg key187: abcdefg key188: abcdefg key189: abcdefg key190: abcdefg key191: abcdefg key192: abcdefg key193: abcdefg key194: abcdefg key195: abcdefg key196: abcdefg key197: abcdefg key198: abcdefg key199: abcdefg key200: abcdefg key201: abcdefg key202: abcdefg key203: abcdefg key204: abcdefg key205: abcdefg key206: abcdefg key207: abcdefg key208: abcdefg key209: abcdefg key210: abcdefg key211: abcdefg key212: abcdefg key213: abcdefg key214: abcdefg key215: abcdefg key216: abcdefg key217: abcdefg key218: abcdefg key219: abcdefg key220: abcdefg key221: abcdefg key222: abcdefg key223: abcdefg key224: abcdefg key225: abcdefg key226: abcdefg key227: abcdefg key228: abcdefg key229: abcdefg key230: abcdefg key231: abcdefg key232: abcdefg key233: abcdefg key234: abcdefg key235: abcdefg key236: abcdefg key237: abcdefg key238: abcdefg key239: abcdefg key240: abcdefg key241: abcdefg key242: abcdefg key243: abcdefg key244: abcdefg key245: abcdefg key246: abcdefg key247: abcdefg key248: abcdefg key249: abcdefg key250: abcdefg key251: abcdefg key252: abcdefg key253: abcdefg key254: abcdefg key255: abcdefg key256: abcdefg key257: abcdefg key258: abcdefg key259: abcdefg key260: abcdefg key261: abcdefg key262: abcdefg key263: abcdefg key264: abcdefg key265: abcdefg key266: abcdefg key267: abcdefg key268: abcdefg key269: abcdefg key270: abcdefg key271: abcdefg key272: abcdefg key273: abcdefg key274: abcdefg key275: abcdefg key276: abcdefg key277: abcdefg key278: abcdefg key279: abcdefg key280: abcdefg key281: abcdefg key282: abcdefg key283: abcdefg key284: abcdefg key285: abcdefg key286: abcdefg key287: abcdefg key288: abcdefg key289: abcdefg key290: abcdefg key291: abcdefg key292: abcdefg key293: abcdefg key294: abcdefg key295: abcdefg key296: abcdefg key297: abcdefg key298: abcdefg key299: abcdefg key300: abcdefg key301: abcdefg key302: abcdefg key303: abcdefg key304: abcdefg key305: abcdefg key306: abcdefg key307: abcdefg key308: abcdefg key309: abcdefg key310: abcdefg key311: abcdefg key312: abcdefg key313: abcdefg key314: abcdefg key315: abcdefg key316: abcdefg key317: abcdefg key318: abcdefg key319: abcdefg key320: abcdefg key321: abcdefg key322: abcdefg key323: abcdefg key324: abcdefg key325: abcdefg key326: abcdefg key327: abcdefg key328: abcdefg key329: abcdefg key330: abcdefg key331: abcdefg key332: abcdefg key333: abcdefg key334: abcdefg key335: abcdefg key336: abcdefg key337: abcdefg key338: abcdefg key339: abcdefg key340: abcdefg key341: abcdefg key342: abcdefg key343: abcdefg key344: abcdefg key345: abcdefg key346: abcdefg key347: abcdefg key348: abcdefg key349: abcdefg key350: abcdefg key351: abcdefg key352: abcdefg key353: abcdefg key354: abcdefg key355: abcdefg key356: abcdefg key357: abcdefg key358: abcdefg key359: abcdefg key360: abcdefg key361: abcdefg key362: abcdefg key363: abcdefg key364: abcdefg key365: abcdefg key366: abcdefg key367: abcdefg key368: abcdefg key369: abcdefg key370: abcdefg key371: abcdefg key372: abcdefg key373: abcdefg key374: abcdefg key375: abcdefg key376: abcdefg key377: abcdefg key378: abcdefg key379: abcdefg key380: abcdefg key381: abcdefg key382: abcdefg key383: abcdefg key384: abcdefg key385: abcdefg key386: abcdefg key387: abcdefg key388: abcdefg key389: abcdefg key390: abcdefg key391: abcdefg key392: abcdefg key393: abcdefg key394: abcdefg key395: abcdefg key396: abcdefg key397: abcdefg key398: abcdefg key399: abcdefg key400: abcdefg key401: abcdefg key402: abcdefg key403: abcdefg key404: abcdefg key405: abcdefg key406: abcdefg key407: abcdefg key408: abcdefg key409: abcdefg key410: abcdefg key411: abcdefg key412: abcdefg key413: abcdefg key414: abcdefg key415: abcdefg key416: abcdefg key417: abcdefg key418: abcdefg key419: abcdefg key420: abcdefg key421: abcdefg key422: abcdefg key423: abcdefg key424: abcdefg key425: abcdefg key426: abcdefg key427: abcdefg key428: abcdefg key429: abcdefg key430: abcdefg key431: abcdefg key432: abcdefg key433: abcdefg key434: abcdefg key435: abcdefg key436: abcdefg key437: abcdefg key438: abcdefg key439: abcdefg key440: abcdefg key441: abcdefg key442: abcdefg key443: abcdefg key444: abcdefg key445: abcdefg key446: abcdefg key447: abcdefg key448: abcdefg key449: abcdefg key450: abcdefg key451: abcdefg key452: abcdefg key453: abcdefg key454: abcdefg key455: abcdefg key456: abcdefg key457: abcdefg key458: abcdefg key459: abcdefg key460: abcdefg key461: abcdefg key462: abcdefg key463: abcdefg key464: abcdefg key465: abcdefg key466: abcdefg key467: abcdefg key468: abcdefg key469: abcdefg key470: abcdefg key471: abcdefg key472: abcdefg key473: abcdefg key474: abcdefg key475: abcdefg key476: abcdefg key477: abcdefg key478: abcdefg key479: abcdefg key480: abcdefg key481: abcdefg key482: abcdefg key483: abcdefg key484: abcdefg key485: abcdefg key486: abcdefg key487: abcdefg key488: abcdefg key489: abcdefg key490: abcdefg key491: abcdefg key492: abcdefg key493: abcdefg key494: abcdefg key495: abcdefg key496: abcdefg key497: abcdefg key498: abcdefg key499: abcdefg key500: abcdefg key501: abcdefg key502: abcdefg key503: abcdefg key504: abcdefg key505: abcdefg key506: abcdefg key507: abcdefg key508: abcdefg key509: abcdefg key510: abcdefg key511: abcdefg key512: abcdefg key513: abcdefg key514: abcdefg key515: abcdefg key516: abcdefg key517: abcdefg key518: abcdefg key519: abcdefg key520: abcdefg key521: abcdefg key522: abcdefg key523: abcdefg key524: abcdefg key525: abcdefg key526: abcdefg key527: abcdefg key528: abcdefg key529: abcdefg key530: abcdefg key531: abcdefg key532: abcdefg key533: abcdefg key534: abcdefg key535: abcdefg key536: abcdefg key537: abcdefg key538: abcdefg key539: abcdefg key540: abcdefg key541: abcdefg key542: abcdefg key543: abcdefg key544: abcdefg key545: abcdefg key546: abcdefg key547: abcdefg key548: abcdefg key549: abcdefg key550: abcdefg key551: abcdefg key552: abcdefg key553: abcdefg key554: abcdefg key555: abcdefg key556: abcdefg key557: abcdefg key558: abcdefg key559: abcdefg key560: abcdefg key561: abcdefg key562: abcdefg key563: abcdefg key564: abcdefg key565: abcdefg key566: abcdefg key567: abcdefg key568: abcdefg key569: abcdefg key570: abcdefg key571: abcdefg key572: abcdefg key573: abcdefg key574: abcdefg key575: abcdefg key576: abcdefg key577: abcdefg key578: abcdefg key579: abcdefg key580: abcdefg key581: abcdefg key582: abcdefg key583: abcdefg key584: abcdefg key585: abcdefg key586: abcdefg key587: abcdefg key588: abcdefg key589: abcdefg key590: abcdefg key591: abcdefg key592: abcdefg key593: abcdefg key594: abcdefg key595: abcdefg key596: abcdefg key597: abcdefg key598: abcdefg key599: abcdefg key600: abcdefg key601: abcdefg key602: abcdefg key603: abcdefg key604: abcdefg key605: abcdefg key606: abcdefg key607: abcdefg key608: abcdefg key609: abcdefg key610: abcdefg key611: abcdefg key612: abcdefg key613: abcdefg key614: abcdefg key615: abcdefg key616: abcdefg key617: abcdefg key618: abcdefg key619: abcdefg key620: abcdefg key621: abcdefg key622: abcdefg key623: abcdefg key624: abcdefg key625: abcdefg key626: abcdefg key627: abcdefg key628: abcdefg key629: abcdefg key630: abcdefg key631: abcdefg key632: abcdefg key633: abcdefg key634: abcdefg key635: abcdefg key636: abcdefg key637: abcdefg key638: abcdefg key639: abcdefg key640: abcdefg key641: abcdefg key642: abcdefg key643: abcdefg key644: abcdefg key645: abcdefg key646: abcdefg key647: abcdefg key648: abcdefg key649: abcdefg key650: abcdefg key651: abcdefg key652: abcdefg key653: abcdefg key654: abcdefg key655: abcdefg key656: abcdefg key657: abcdefg key658: abcdefg key659: abcdefg key660: abcdefg key661: abcdefg key662: abcdefg key663: abcdefg key664: abcdefg key665: abcdefg key666: abcdefg key667: abcdefg key668: abcdefg key669: abcdefg key670: abcdefg key671: abcdefg key672: abcdefg key673: abcdefg key674: abcdefg key675: abcdefg key676: abcdefg key677: abcdefg key678: abcdefg key679: abcdefg key680: abcdefg key681: abcdefg key682: abcdefg key683: abcdefg key684: abcdefg key685: abcdefg key686: abcdefg key687: abcdefg key688: abcdefg key689: abcdefg key690: abcdefg key691: abcdefg key692: abcdefg key693: abcdefg key694: abcdefg key695: abcdefg key696: abcdefg key697: abcdefg key698: abcdefg key699: abcdefg key700: abcdefg key701: abcdefg key702: abcdefg key703: abcdefg key704: abcdefg key705: abcdefg key706: abcdefg key707: abcdefg key708: abcdefg key709: abcdefg key710: abcdefg key711: abcdefg key712: abcdefg key713: abcdefg key714: abcdefg key715: abcdefg key716: abcdefg key717: abcdefg key718: abcdefg key719: abcdefg key720: abcdefg key721: abcdefg key722: abcdefg key723: abcdefg key724: abcdefg key725: abcdefg key726: abcdefg key727: abcdefg key728: abcdefg key729: abcdefg key730: abcdefg key731: abcdefg key732: abcdefg key733: abcdefg key734: abcdefg key735: abcdefg key736: abcdefg key737: abcdefg key738: abcdefg key739: abcdefg key740: abcdefg key741: abcdefg key742: abcdefg key743: abcdefg key744: abcdefg key745: abcdefg key746: abcdefg key747: abcdefg key748: abcdefg key749: abcdefg key750: abcdefg key751: abcdefg key752: abcdefg key753: abcdefg key754: abcdefg key755: abcdefg key756: abcdefg key757: abcdefg key758: abcdefg key759: abcdefg key760: abcdefg key761: abcdefg key762: abcdefg key763: abcdefg key764: abcdefg key765: abcdefg key766: abcdefg key767: abcdefg key768: abcdefg key769: abcdefg key770: abcdefg key771: abcdefg key772: abcdefg key773: abcdefg key774: abcdefg key775: abcdefg key776: abcdefg key777: abcdefg key778: abcdefg key779: abcdefg key780: abcdefg key781: abcdefg key782: abcdefg key783: abcdefg key784: abcdefg key785: abcdefg key786: abcdefg key787: abcdefg key788: abcdefg key789: abcdefg key790: abcdefg key791: abcdefg key792: abcdefg key793: abcdefg key794: abcdefg key795: abcdefg key796: abcdefg key797: abcdefg key798: abcdefg key799: abcdefg key800: abcdefg key801: abcdefg key802: abcdefg key803: abcdefg key804: abcdefg key805: abcdefg key806: abcdefg key807: abcdefg key808: abcdefg key809: abcdefg key810: abcdefg key811: abcdefg key812: abcdefg key813: abcdefg key814: abcdefg key815: abcdefg key816: abcdefg key817: abcdefg key818: abcdefg key819: abcdefg key820: abcdefg key821: abcdefg key822: abcdefg key823: abcdefg key824: abcdefg key825: abcdefg key826: abcdefg key827: abcdefg key828: abcdefg key829: abcdefg key830: abcdefg key831: abcdefg key832: abcdefg key833: abcdefg key834: abcdefg key835: abcdefg key836: abcdefg key837: abcdefg key838: abcdefg key839: abcdefg key840: abcdefg key841: abcdefg key842: abcdefg key843: abcdefg key844: abcdefg key845: abcdefg key846: abcdefg key847: abcdefg key848: abcdefg key849: abcdefg key850: abcdefg key851: abcdefg key852: abcdefg key853: abcdefg key854: abcdefg key855: abcdefg key856: abcdefg key857: abcdefg key858: abcdefg key859: abcdefg key860: abcdefg key861: abcdefg key862: abcdefg key863: abcdefg key864: abcdefg key865: abcdefg key866: abcdefg key867: abcdefg key868: abcdefg key869: abcdefg key870: abcdefg key871: abcdefg key872: abcdefg key873: abcdefg key874: abcdefg key875: abcdefg key876: abcdefg key877: abcdefg key878: abcdefg key879: abcdefg key880: abcdefg key881: abcdefg key882: abcdefg key883: abcdefg key884: abcdefg key885: abcdefg key886: abcdefg key887: abcdefg key888: abcdefg key889: abcdefg key890: abcdefg key891: abcdefg key892: abcdefg key893: abcdefg key894: abcdefg key895: abcdefg key896: abcdefg key897: abcdefg key898: abcdefg key899: abcdefg key900: abcdefg key901: abcdefg key902: abcdefg key903: abcdefg key904: abcdefg key905: abcdefg key906: abcdefg key907: abcdefg key908: abcdefg key909: abcdefg key910: abcdefg key911: abcdefg key912: abcdefg key913: abcdefg key914: abcdefg key915: abcdefg key916: abcdefg key917: abcdefg key918: abcdefg key919: abcdefg key920: abcdefg key921: abcdefg key922: abcdefg key923: abcdefg key924: abcdefg key925: abcdefg key926: abcdefg key927: abcdefg key928: abcdefg key929: abcdefg key930: abcdefg key931: abcdefg key932: abcdefg key933: abcdefg key934: abcdefg key935: abcdefg key936: abcdefg key937: abcdefg key938: abcdefg key939: abcdefg key940: abcdefg key941: abcdefg key942: abcdefg key943: abcdefg key944: abcdefg key945: abcdefg key946: abcdefg key947: abcdefg key948: abcdefg key949: abcdefg key950: abcdefg key951: abcdefg key952: abcdefg key953: abcdefg key954: abcdefg key955: abcdefg key956: abcdefg key957: abcdefg key958: abcdefg key959: abcdefg key960: abcdefg key961: abcdefg key962: abcdefg key963: abcdefg key964: abcdefg key965: abcdefg key966: abcdefg key967: abcdefg key968: abcdefg key969: abcdefg key970: abcdefg key971: abcdefg key972: abcdefg key973: abcdefg key974: abcdefg key975: abcdefg key976: abcdefg key977: abcdefg key978: abcdefg key979: abcdefg key980: abcdefg key981: abcdefg key982: abcdefg key983: abcdefg key984: abcdefg key985: abcdefg key986: abcdefg key987: abcdefg key988: abcdefg key989: abcdefg key990: abcdefg key991: abcdefg key992: abcdefg key993: abcdefg key994: abcdefg key995: abcdefg key996: abcdefg key997: abcdefg key998: abcdefg key999: abcdefg key1000: abcdefg end: true ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4224367 tomlkit-0.12.4/tests/toml-spec-tests/values/qa-table-inline-nested-1000.toml0000644000000000000000000001751214567257576023446 0ustar00key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}} } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4224367 tomlkit-0.12.4/tests/toml-spec-tests/values/qa-table-inline-nested-1000.yaml0000644000000000000000000365467114567257576023455 0ustar00key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: {} ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-array-1.toml0000644000000000000000000000002714567257576021043 0ustar00integers = [ 1, 2, 3 ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-array-1.yaml0000644000000000000000000000002614567257576021031 0ustar00integers: [ 1, 2, 3 ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-array-2.toml0000644000000000000000000000004614567257576021045 0ustar00colors = [ "red", "yellow", "green" ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-array-2.yaml0000644000000000000000000000004514567257576021033 0ustar00colors: [ "red", "yellow", "green" ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-array-3.toml0000644000000000000000000000005614567257576021047 0ustar00nested_array_of_int = [ [ 1, 2 ], [3, 4, 5] ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-array-3.yaml0000644000000000000000000000005514567257576021035 0ustar00nested_array_of_int: [ [ 1, 2 ], [3, 4, 5] ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-array-4.toml0000644000000000000000000000010314567257576021041 0ustar00string_array = [ "all", 'strings', """are the same""", '''type'''] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-array-4.yaml0000644000000000000000000000007314567257576021036 0ustar00string_array: [ "all", "strings", "are the same", "type" ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-array-5.toml0000644000000000000000000000006314567257576021047 0ustar00nested_mixed_array = [ [ 1, 2 ], ["a", "b", "c"] ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-array-5.yaml0000644000000000000000000000006214567257576021035 0ustar00nested_mixed_array: [ [ 1, 2 ], ["a", "b", "c"] ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-array-7.toml0000644000000000000000000000003214567257576021045 0ustar00integers2 = [ 1, 2, 3 ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-array-7.yaml0000644000000000000000000000003114567257576021033 0ustar00integers2: [ 1, 2, 3 ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-array-8.toml0000644000000000000000000000004714567257576021054 0ustar00integers3 = [ 1, 2, # this is ok ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-array-8.yaml0000644000000000000000000000004614567257576021042 0ustar00integers3: [ 1, 2, # this is ok ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-array-mixed-number-types.toml0000644000000000000000000000004514567257576024441 0ustar00numbers = [ 0.1, 0.2, 0.5, 1, 2, 5 ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-array-mixed-number-types.yaml0000644000000000000000000000004414567257576024427 0ustar00numbers: [ 0.1, 0.2, 0.5, 1, 2, 5 ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-array-more-mixed-types.toml0000644000000000000000000000021214567257576024107 0ustar00contributors = [ "Foo Bar ", { name = "Baz Qux", email = "bazqux@example.com", url = "https://example.com/bazqux" } ]././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-array-more-mixed-types.yaml0000644000000000000000000000020714567257576024102 0ustar00contributors: [ "Foo Bar ", { name: "Baz Qux", email: "bazqux@example.com", url: "https://example.com/bazqux" } ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-array-of-tables-1.toml0000644000000000000000000000016614567257576022721 0ustar00[[products]] name = "Hammer" sku = 738594937 [[products]] [[products]] name = "Nail" sku = 284758393 color = "gray" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-array-of-tables-1.yaml0000644000000000000000000000015114567257576022702 0ustar00products: [ {name: "Hammer", sku: 738594937}, {}, {name: "Nail", sku: 284758393, color: "gray" } ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-array-of-tables-2.toml0000644000000000000000000000037414567257576022723 0ustar00[[fruit]] name = "apple" [fruit.physical] color = "red" shape = "round" [[fruit.variety]] name = "red delicious" [[fruit.variety]] name = "granny smith" [[fruit]] name = "banana" [[fruit.variety]] name = "plantain" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-array-of-tables-2.yaml0000644000000000000000000000041014567257576022701 0ustar00fruit: [ { name: "apple", physical: { color: "red", shape: "round" }, variety: [ { name: "red delicious" }, { name: "granny smith" } ] }, { name: "banana", variety: [ { name: "plantain" } ] } ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-array-of-tables-3.toml0000644000000000000000000000015514567257576022721 0ustar00points = [ { x = 1, y = 2, z = 3 }, { x = 7, y = 8, z = 9 }, { x = 2, y = 4, z = 8 } ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-array-of-tables-3.yaml0000644000000000000000000000014114567257576022703 0ustar00points: [ { x: 1, y: 2, z: 3 }, { x: 7, y: 8, z: 9 }, { x: 2, y: 4, z: 8 } ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-boolean-1.toml0000644000000000000000000000001514567257576021341 0ustar00bool1 = true ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-boolean-1.yaml0000644000000000000000000000001414567257576021327 0ustar00bool1: true ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-boolean-2.toml0000644000000000000000000000001614567257576021343 0ustar00bool1 = false ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-boolean-2.yaml0000644000000000000000000000001514567257576021331 0ustar00bool1: false ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-case-sensitive.toml0000644000000000000000000000005614567257576022513 0ustar00# TOML is case sensitive. abc = 123 ABC = 456 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-case-sensitive.yaml0000644000000000000000000000002214567257576022473 0ustar00abc: 123 ABC: 456 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-comment-mid-array.toml0000644000000000000000000000017014567257576023113 0ustar00# eol commetns can go anywhere abc = [ # this is valid 123,#as is this 456 #so is this ]# and this # here too ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-comment-mid-array.yaml0000644000000000000000000000016714567257576023110 0ustar00# eol commetns can go anywhere abc: [ # this is valid 123,#as is this 456 #so is this ]# and this # here too ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-comment-mid-string.toml0000644000000000000000000000004414567257576023303 0ustar00another = "# This is not a comment" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-comment-mid-string.yaml0000644000000000000000000000004314567257576023271 0ustar00another: "# This is not a comment" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-comment-tab.toml0000644000000000000000000000020614567257576021774 0ustar00# This is a full-line comment with a tab in the middle key = "value" # This is a commen with a tab in the middle at the end of a line ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-comment-tab.yaml0000644000000000000000000000001514567257576021761 0ustar00key: "value" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-comment.toml0000644000000000000000000000012514567257576021230 0ustar00# This is a full-line comment key = "value" # This is a comment at the end of a line ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-comment.yaml0000644000000000000000000000012414567257576021216 0ustar00# This is a full-line comment key: "value" # This is a comment at the end of a line ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-date-local-1.json0000644000000000000000000000010114567257576021721 0ustar00{ "ld1": { "type": "date", "value": "1979-05-27" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-date-local-1.toml0000644000000000000000000000002114567257576021724 0ustar00ld1 = 1979-05-27 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-date-time-1.toml0000644000000000000000000000003414567257576021574 0ustar00odt1 = 1979-05-27T07:32:00Z ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-date-time-1.yaml0000644000000000000000000000003314567257576021562 0ustar00odt1: 1979-05-27T07:32:00Z ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-date-time-2.toml0000644000000000000000000000004114567257576021573 0ustar00odt2 = 1979-05-27T00:32:00-07:00 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-date-time-2.yaml0000644000000000000000000000004014567257576021561 0ustar00odt2: 1979-05-27T00:32:00-07:00 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-date-time-3.toml0000644000000000000000000000005014567257576021574 0ustar00odt3 = 1979-05-27T00:32:00.999999-07:00 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-date-time-3.yaml0000644000000000000000000000004714567257576021571 0ustar00odt3: 1979-05-27T00:32:00.999999-07:00 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-date-time-4.toml0000644000000000000000000000003414567257576021577 0ustar00odt4 = 1979-05-27 07:32:00Z ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-date-time-4.yaml0000644000000000000000000000003314567257576021565 0ustar00odt4: 1979-05-27 07:32:00Z ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-date-time-5.toml0000644000000000000000000000004014567257576021575 0ustar00odt5 = 1979-05-27T07:32:00.123Z ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-date-time-5.yaml0000644000000000000000000000003714567257576021572 0ustar00odt5: 1979-05-27T07:32:00.123Z ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-date-time-6.toml0000644000000000000000000000004114567257576021577 0ustar00odt6 = 1979-05-27T07:32:00.1239Z ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-date-time-6.yaml0000644000000000000000000000003714567257576021573 0ustar00odt6: 1979-05-27T07:32:00.123Z ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-date-time-local-1.json0000644000000000000000000000013114567257576022660 0ustar00{ "ldt1": { "type": "datetime-local", "value": "1979-05-27T07:32:00.000" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-date-time-local-1.toml0000644000000000000000000000003314567257576022663 0ustar00ldt1 = 1979-05-27T07:32:00 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-date-time-local-2.json0000644000000000000000000000013114567257576022661 0ustar00{ "ldt2": { "type": "datetime-local", "value": "1979-05-27T00:32:00.999" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-date-time-local-2.toml0000644000000000000000000000004214567257576022664 0ustar00ldt2 = 1979-05-27T00:32:00.999999 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-dotted-keys-1.toml0000644000000000000000000000013414567257576022160 0ustar00name = "Orange" physical.color = "orange" physical.shape = "round" site."google.com" = true ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-dotted-keys-1.yaml0000644000000000000000000000012714567257576022151 0ustar00name: "Orange" physical: color: "orange" shape: "round" site: "google.com": true ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-dotted-keys-2.toml0000644000000000000000000000001514567257576022157 0ustar00a . b = 23 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-dotted-keys-2.yaml0000644000000000000000000000001314567257576022144 0ustar00a: b: 23 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-dotted-keys-3.toml0000644000000000000000000000001614567257576022161 0ustar00a . b = 23 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-dotted-keys-3.yaml0000644000000000000000000000001314567257576022145 0ustar00a: b: 23 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-empty-key-name-1.toml0000644000000000000000000000005114567257576022564 0ustar00"" = "blank" # VALID but discouraged ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-empty-key-name-1.yaml0000644000000000000000000000001414567257576022552 0ustar00"": "blank" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-empty-key-name-2.toml0000644000000000000000000000005114567257576022565 0ustar00'' = "blank" # VALID but discouraged ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-empty-key-name-2.yaml0000644000000000000000000000001414567257576022553 0ustar00"": "blank" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-extend-dotted-object-1.toml0000644000000000000000000000021314567257576023736 0ustar00# This makes the key "fruit" into a table. fruit.apple.smooth = true # So then you can add to the table "fruit" like so: fruit.orange = 2 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-extend-dotted-object-1.yaml0000644000000000000000000000005514567257576023731 0ustar00fruit: apple: smooth: true orange: 2 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-extend-dotted-object-2.toml0000644000000000000000000000023414567257576023742 0ustar00# VALID BUT DISCOURAGED apple.type = "fruit" orange.type = "fruit" apple.skin = "thin" orange.skin = "thick" apple.color = "red" orange.color = "orange" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-extend-dotted-object-2.yaml0000644000000000000000000000016014567257576023727 0ustar00apple: type: "fruit" skin: "thin" color: "red" orange: type: "fruit" skin: "thick" color: "orange" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-extend-dotted-object-3.toml0000644000000000000000000000022114567257576023737 0ustar00# RECOMMENDED apple.type = "fruit" apple.skin = "thin" apple.color = "red" orange.type = "fruit" orange.skin = "thick" orange.color = "orange" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-extend-dotted-object-3.yaml0000644000000000000000000000016014567257576023730 0ustar00apple: type: "fruit" skin: "thin" color: "red" orange: type: "fruit" skin: "thick" color: "orange" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-float-1.toml0000644000000000000000000000001414567257576021026 0ustar00flt1 = +1.0 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-float-1.yaml0000644000000000000000000000001214567257576021013 0ustar00flt1: 1.0 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-float-10.toml0000644000000000000000000000003714567257576021113 0ustar00sf1 = inf # positive infinity ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-float-10.yaml0000644000000000000000000000003714567257576021102 0ustar00sf1: .inf # positive infinity ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-float-11.toml0000644000000000000000000000003714567257576021114 0ustar00sf2 = +inf # positive infinity ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-float-11.yaml0000644000000000000000000000003714567257576021103 0ustar00sf2: .inf # positive infinity ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-float-12.toml0000644000000000000000000000003714567257576021115 0ustar00sf2 = -inf # negative infinity ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-float-12.yaml0000644000000000000000000000004014567257576021076 0ustar00sf2: -.inf # negative infinity ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-float-13.toml0000644000000000000000000000010214567257576021107 0ustar00sf4 = nan # actual sNaN/qNaN encoding is implementation specific ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-float-13.yaml0000644000000000000000000000010214567257576021076 0ustar00sf4: .NAN # actual sNaN/qNaN encoding is implementation specific ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-float-14.toml0000644000000000000000000000003314567257576021113 0ustar00sf5 = +nan # same as `nan` ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-float-14.yaml0000644000000000000000000000001214567257576021077 0ustar00sf5: .nan ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-float-15.toml0000644000000000000000000000007714567257576021124 0ustar00sf6 = -nan # valid, actual encoding is implementation specific ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-float-15.yaml0000644000000000000000000000001214567257576021100 0ustar00sf6: .NAN ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-float-2.toml0000644000000000000000000000001614567257576021031 0ustar00flt2 = 3.1415 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-float-2.yaml0000644000000000000000000000001514567257576021017 0ustar00flt2: 3.1415 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-float-3.toml0000644000000000000000000000001514567257576021031 0ustar00flt3 = -0.01 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-float-3.yaml0000644000000000000000000000001414567257576021017 0ustar00flt3: -0.01 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-float-4.toml0000644000000000000000000000001514567257576021032 0ustar00flt4 = 5e+22 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-float-4.yaml0000644000000000000000000000001414567257576021020 0ustar00flt4: 5e+22 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-float-5.toml0000644000000000000000000000001414567257576021032 0ustar00flt5 = 1e06 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-float-5.yaml0000644000000000000000000000001214567257576021017 0ustar00flt5: 1e6 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-float-6.toml0000644000000000000000000000001514567257576021034 0ustar00flt6 = -2E-2 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-float-6.yaml0000644000000000000000000000001414567257576021022 0ustar00flt6: -2E-2 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-float-7.toml0000644000000000000000000000002114567257576021032 0ustar00flt7 = 6.626e-34 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-float-7.yaml0000644000000000000000000000002014567257576021020 0ustar00flt7: 6.626e-34 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-float-8.toml0000644000000000000000000000003314567257576021036 0ustar00flt8 = 224_617.445_991_228 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-float-8.yaml0000644000000000000000000000003114567257576021023 0ustar00flt8: 224_617.445_991_228././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-float-9.toml0000644000000000000000000000001414567257576021036 0ustar00flt9 = -0e0 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4264367 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-float-9.yaml0000644000000000000000000000001314567257576021024 0ustar00flt9: -0e0 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-int-1.toml0000644000000000000000000000001314567257576020512 0ustar00int1 = +99 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-int-1.yaml0000644000000000000000000000001114567257576020477 0ustar00int1: 99 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-int-2.toml0000644000000000000000000000001214567257576020512 0ustar00int2 = 42 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-int-2.yaml0000644000000000000000000000001114567257576020500 0ustar00int2: 42 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-int-3.toml0000644000000000000000000000001114567257576020512 0ustar00int3 = 0 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-int-3.yaml0000644000000000000000000000001014567257576020500 0ustar00int3: 0 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-int-3a.toml0000644000000000000000000000001214567257576020654 0ustar00int3 = +0 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-int-3a.yaml0000644000000000000000000000001014567257576020641 0ustar00int3: 0 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-int-3b.toml0000644000000000000000000000001214567257576020655 0ustar00int3 = -0 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-int-3b.yaml0000644000000000000000000000001014567257576020642 0ustar00int3: 0 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-int-4.toml0000644000000000000000000000001314567257576020515 0ustar00int4 = -17 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-int-4.yaml0000644000000000000000000000001214567257576020503 0ustar00int4: -17 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-int-5.toml0000644000000000000000000000001514567257576020520 0ustar00int5 = 1_000 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-int-5.yaml0000644000000000000000000000001414567257576020506 0ustar00int5: 1_000 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-int-6.toml0000644000000000000000000000002114567257576020516 0ustar00int6 = 5_349_221 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-int-6.yaml0000644000000000000000000000002014567257576020504 0ustar00int6: 5_349_221 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-int-7.toml0000644000000000000000000000005514567257576020526 0ustar00int7 = 1_2_3_4_5 # VALID but discouraged ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-int-7.yaml0000644000000000000000000000005414567257576020514 0ustar00int7: 1_2_3_4_5 # VALID but discouraged ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-int-bin1.toml0000644000000000000000000000002214567257576021203 0ustar00bin1 = 0b11010110 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-int-bin1.yaml0000644000000000000000000000001214567257576021171 0ustar00bin1: 214 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-int-hex1.toml0000644000000000000000000000002214567257576021217 0ustar00hex1 = 0xDEADBEEF ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-int-hex1.yaml0000644000000000000000000000002114567257576021205 0ustar00hex1: 3735928559 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-int-hex2.toml0000644000000000000000000000002214567257576021220 0ustar00hex2 = 0xdeadbeef ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-int-hex2.yaml0000644000000000000000000000002114567257576021206 0ustar00hex2: 3735928559 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-int-hex3.toml0000644000000000000000000000002314567257576021222 0ustar00hex3 = 0xdead_beef ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-int-hex3.yaml0000644000000000000000000000002114567257576021207 0ustar00hex3: 3735928559 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-int-max.json0000644000000000000000000000010314567257576021135 0ustar00{ "max": {"type": "integer", "value": "9223372036854775807"} } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-int-max.toml0000644000000000000000000000003614567257576021144 0ustar00max=9_223_372_036_854_775_807 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-int-min.json0000644000000000000000000000010414567257576021134 0ustar00{ "min": {"type": "integer", "value": "-9223372036854775808"} } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-int-min.toml0000644000000000000000000000003714567257576021143 0ustar00min=-9_223_372_036_854_775_808 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-int-oct1.toml0000644000000000000000000000002214567257576021220 0ustar00oct1 = 0o01234567 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-int-oct1.yaml0000644000000000000000000000001514567257576021211 0ustar00oct1: 342391 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-int-oct2.toml0000644000000000000000000000006014567257576021223 0ustar00oct2 = 0o755 # useful for Unix file permissions ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-int-oct2.yaml0000644000000000000000000000001214567257576021207 0ustar00oct2: 493 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-key-value-pair-1.toml0000644000000000000000000000001614567257576022556 0ustar00key = "value" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-key-value-pair-1.yaml0000644000000000000000000000001514567257576022544 0ustar00key: "value" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-key-value-pair-2.toml0000644000000000000000000000002314567257576022555 0ustar00bare_key = "value" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-key-value-pair-2.yaml0000644000000000000000000000002214567257576022543 0ustar00bare_key: "value" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-key-value-pair-3.toml0000644000000000000000000000002314567257576022556 0ustar00bare-key = "value" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-key-value-pair-3.yaml0000644000000000000000000000002214567257576022544 0ustar00bare-key: "value" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-key-value-pair-4.toml0000644000000000000000000000001714567257576022562 0ustar001234 = "value" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-key-value-pair-4.yaml0000644000000000000000000000002014567257576022543 0ustar00"1234": "value" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-key-value-pair-5.toml0000644000000000000000000000001514567257576022561 0ustar001234="value" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-key-value-pair-5.yaml0000644000000000000000000000002014567257576022544 0ustar00"1234": "value" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-key-value-pair-6.toml0000644000000000000000000000000414567257576022560 0ustar00-=1 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-key-value-pair-6.yaml0000644000000000000000000000000614567257576022551 0ustar00"-": 1././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-key-value-pair-7.toml0000644000000000000000000000000414567257576022561 0ustar00_=1 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-key-value-pair-7.yaml0000644000000000000000000000000614567257576022552 0ustar00"_": 1././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-key-value-pair-8.toml0000644000000000000000000000001414567257576022563 0ustar00-_-_-_-_-=1 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-key-value-pair-8.yaml0000644000000000000000000000001614567257576022554 0ustar00"-_-_-_-_-": 1././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-key-value-pair-9.toml0000644000000000000000000000001714567257576022567 0ustar003.14159 = "pi" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-key-value-pair-9.yaml0000644000000000000000000000002114567257576022551 0ustar003: 14159: "pi" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-newline-1.toml0000644000000000000000000000002414567257576021363 0ustar00abc = 123 def = 456 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-newline-1.yaml0000644000000000000000000000002214567257576021350 0ustar00abc: 123 def: 456 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-newline-2.toml0000644000000000000000000000002614567257576021366 0ustar00abc = 123 def = 456 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-newline-2.yaml0000644000000000000000000000002214567257576021351 0ustar00abc: 123 def: 456 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-newline-3.toml0000644000000000000000000000003614567257576021370 0ustar00abc = 123 def = 456 ghi = 789././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-newline-3.yaml0000644000000000000000000000003314567257576021354 0ustar00abc: 123 def: 456 ghi: 789 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-quoted-basic-keys-1.toml0000644000000000000000000000002314567257576023252 0ustar00"ʎǝʞ" = "value" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-quoted-basic-keys-1.yaml0000644000000000000000000000002214567257576023240 0ustar00"ʎǝʞ": "value" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-quoted-literal-keys-1.toml0000644000000000000000000000003314567257576023626 0ustar00'quoted "value"' = "value" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-quoted-literal-keys-1.yaml0000644000000000000000000000003214567257576023614 0ustar00'quoted "value"': "value" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-readme-example.toml0000644000000000000000000000104114567257576022452 0ustar00# This is a TOML document. title = "TOML Example" [owner] name = "Tom Preston-Werner" dob = 1979-05-27T07:32:00-08:00 # First class dates [database] server = "192.168.1.1" ports = [ 8001, 8001, 8002 ] connection_max = 5000 enabled = true [servers] # Indentation (tabs and/or spaces) is allowed but not required [servers.alpha] ip = "10.0.0.1" dc = "eqdc10" [servers.beta] ip = "10.0.0.2" dc = "eqdc10" [clients] data = [ ["gamma", "delta"], [1, 2] ] # Line breaks are OK when inside arrays hosts = [ "alpha", "omega" ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-readme-example.yaml0000644000000000000000000000066014567257576022447 0ustar00# This is a TOML document. title: "TOML Example" owner: name: "Tom Preston-Werner" dob: 1979-05-27T07:32:00-08:00 # First class dates database: server: "192.168.1.1" ports: [ 8001, 8001, 8002 ] connection_max: 5000 enabled: true servers: alpha: ip: "10.0.0.1" dc: "eqdc10" beta: ip: "10.0.0.2" dc: "eqdc10" clients: data: [ ["gamma", "delta"], [1, 2] ] hosts: [ "alpha", "omega" ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-string-basic-multiline-1.toml0000644000000000000000000000005514567257576024313 0ustar00str1 = """ Roses are red Violets are blue""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-string-basic-multiline-1.yaml0000644000000000000000000000005014567257576024275 0ustar00str1: "Roses are red\nViolets are blue" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-string-basic-multiline-2.toml0000644000000000000000000000010614567257576024311 0ustar00str = """ The quick brown \ fox jumps over \ the lazy dog.""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-string-basic-multiline-2.yaml0000644000000000000000000000006414567257576024303 0ustar00str: "The quick brown fox jumps over the lazy dog." ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-string-basic-multiline-3.toml0000644000000000000000000000013114567257576024310 0ustar00str = """\ The quick brown \ fox jumps over \ the lazy dog.\ """ ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-string-basic-multiline-3.yaml0000644000000000000000000000006414567257576024304 0ustar00str: "The quick brown fox jumps over the lazy dog." ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-string-basic-multiline-4.toml0000644000000000000000000000002614567257576024314 0ustar00a = """abc\ def""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-string-basic-multiline-4.yaml0000644000000000000000000000001414567257576024300 0ustar00a: "abcdef" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-string-basic-multiline-5.toml0000644000000000000000000000007114567257576024315 0ustar00ml-escaped-nl = """ foo \ bar \\ baz \\\ quux""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-string-basic-multiline-5.yaml0000644000000000000000000000005414567257576024305 0ustar00ml-escaped-nl: " foo bar \\\n baz \\quux" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-string-basic-multiline-6.toml0000644000000000000000000000007614567257576024323 0ustar00str4 = """Here are two quotation marks: "". Simple enough.""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-string-basic-multiline-6.yaml0000644000000000000000000000007114567257576024305 0ustar00str4: 'Here are two quotation marks: "". Simple enough.' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-string-basic-multiline-7.toml0000644000000000000000000000006314567257576024320 0ustar00str5 = """Here are three quotation marks: ""\".""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-string-basic-multiline-7.yaml0000644000000000000000000000005514567257576024310 0ustar00str5: 'Here are three quotation marks: """.' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-string-basic-multiline-8.toml0000644000000000000000000000010514567257576024316 0ustar00str6 = """Here are fifteen quotation marks: ""\"""\"""\"""\"""\".""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-string-basic-multiline-8.yaml0000644000000000000000000000007314567257576024311 0ustar00str6: 'Here are fifteen quotation marks: """"""""""""""".' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-string-basic-multiline-9.toml0000644000000000000000000000010014567257576024312 0ustar00str7 = """"This," she said, "is just a pointless statement."""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-string-basic-multiline-9.yaml0000644000000000000000000000007314567257576024312 0ustar00str7: '"This," she said, "is just a pointless statement."' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-string-basic-tab-multiline.toml0000644000000000000000000000003214567257576024714 0ustar00str = """This is a tab""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-string-basic-tab-multiline.yaml0000644000000000000000000000002614567257576024706 0ustar00str: "This is a\ttab" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-string-basic-tab.toml0000644000000000000000000000002614567257576022717 0ustar00str = "This is a tab" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-string-basic-tab.yaml0000644000000000000000000000002614567257576022706 0ustar00str: "This is a\ttab" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-string-basic.toml0000644000000000000000000000011314567257576022150 0ustar00str = "I'm a string. \"You can quote me\". Name\tJos\u00E9\nLocation\tSF." ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-string-basic.yaml0000644000000000000000000000011214567257576022136 0ustar00str: "I'm a string. \"You can quote me\". Name\tJos\u00E9\nLocation\tSF." ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-string-escape-1.toml0000644000000000000000000000001114567257576022462 0ustar00a = "\b" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-string-escape-1.yaml0000644000000000000000000000001014567257576022450 0ustar00a: "\b" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-string-escape-2.toml0000644000000000000000000000001114567257576022463 0ustar00a = "\t" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-string-escape-2.yaml0000644000000000000000000000001014567257576022451 0ustar00a: "\t" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-string-escape-3.toml0000644000000000000000000000001114567257576022464 0ustar00a = "\n" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-string-escape-3.yaml0000644000000000000000000000001014567257576022452 0ustar00a: "\n" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-string-escape-4.toml0000644000000000000000000000001114567257576022465 0ustar00a = "\f" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-string-escape-4.yaml0000644000000000000000000000001014567257576022453 0ustar00a: "\f" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-string-escape-5.toml0000644000000000000000000000001114567257576022466 0ustar00a = "\r" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-string-escape-5.yaml0000644000000000000000000000001014567257576022454 0ustar00a: "\r" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-string-escape-6.toml0000644000000000000000000000001114567257576022467 0ustar00a = "\"" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-string-escape-6.yaml0000644000000000000000000000001014567257576022455 0ustar00a: "\"" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-string-escape-7.toml0000644000000000000000000000001114567257576022470 0ustar00a = "\\" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-string-escape-7.yaml0000644000000000000000000000001014567257576022456 0ustar00a: "\\" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-string-escape-8.toml0000644000000000000000000000001514567257576022475 0ustar00a = "\u0000" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-string-escape-8.yaml0000644000000000000000000000001214567257576022461 0ustar00a: "\x00" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-string-escape-9.toml0000644000000000000000000000002114567257576022473 0ustar00a = "\U00000000" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-string-escape-9.yaml0000644000000000000000000000001214567257576022462 0ustar00a: "\x00" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-string-literal-1.toml0000644000000000000000000000004714567257576022667 0ustar00winpath = 'C:\Users\nodejs\templates' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-string-literal-1.yaml0000644000000000000000000000004514567257576022654 0ustar00winpath: 'C:\Users\nodejs\templates' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-string-literal-2.toml0000644000000000000000000000005014567257576022662 0ustar00winpath2 = '\\ServerX\admin$\system32\' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-string-literal-2.yaml0000644000000000000000000000004714567257576022657 0ustar00winpath2: '\\ServerX\admin$\system32\' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-string-literal-3.toml0000644000000000000000000000004714567257576022671 0ustar00quoted = 'Tom "Dubs" Preston-Werner' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-string-literal-3.yaml0000644000000000000000000000004414567257576022655 0ustar00quoted: 'Tom "Dubs" Preston-Werner' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-string-literal-4.toml0000644000000000000000000000003014567257576022662 0ustar00regex = '<\i\c*\s*>' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-string-literal-4.yaml0000644000000000000000000000002414567257576022654 0ustar00regex: '<\i\c*\s*>' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-string-literal-multiline-1.toml0000644000000000000000000000005414567257576024665 0ustar00regex2 = '''I [dw]on't need \d{2} apples''' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-string-literal-multiline-1.yaml0000644000000000000000000000005014567257576024650 0ustar00regex2: "I [dw]on't need \\d{2} apples" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-string-literal-multiline-2.toml0000644000000000000000000000014714567257576024671 0ustar00lines = ''' The first newline is trimmed in raw strings. All other whitespace is preserved. ''' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-string-literal-multiline-2.yaml0000644000000000000000000000014414567257576024655 0ustar00lines: "The first newline is\ntrimmed in raw strings.\n All other whitespace\n is preserved.\n" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-string-literal-multiline-3.toml0000644000000000000000000000010114567257576024660 0ustar00quot15 = '''Here are fifteen quotation marks: """""""""""""""''' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-string-literal-multiline-3.yaml0000644000000000000000000000007414567257576024660 0ustar00quot15: 'Here are fifteen quotation marks: """""""""""""""' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-string-literal-multiline-4.toml0000644000000000000000000000006414567257576024671 0ustar00str = ''''That,' she said, 'is still pointless.'''' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-string-literal-multiline-4.yaml0000644000000000000000000000005714567257576024662 0ustar00str: "'That,' she said, 'is still pointless.'" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4304366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-table-1.toml0000644000000000000000000000013014567257576021007 0ustar00[table-1] key1 = "some string" key2 = 123 [table-2] key1 = "another string" key2 = 456 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4344366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-table-1.yaml0000644000000000000000000000013114567257576020777 0ustar00table-1: key1: "some string" key2: 123 table-2: key1: "another string" key2: 456 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4344366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-table-2.toml0000644000000000000000000000004414567257576021014 0ustar00[dog."tater.man"] type.name = "pug" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4344366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-table-2.yaml0000644000000000000000000000006014567257576021001 0ustar00dog: "tater.man": type: name: "pug" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4344366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-table-3.toml0000644000000000000000000000001014567257576021006 0ustar00[a.b.c] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4344366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-table-3.yaml0000644000000000000000000000002214567257576021000 0ustar00a: b: c: {} ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4344366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-table-4.toml0000644000000000000000000000004514567257576021017 0ustar00[ d.e.f ] # same as [d.e.f] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4344366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-table-4.yaml0000644000000000000000000000002214567257576021001 0ustar00d: e: f: {} ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4344366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-table-5.toml0000644000000000000000000000004514567257576021020 0ustar00[ g . h . i ] # same as [g.h.i] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4344366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-table-5.yaml0000644000000000000000000000002214567257576021002 0ustar00g: h: i: {} ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4344366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-table-6.toml0000644000000000000000000000005314567257576021020 0ustar00[ j . "ʞ" . 'l' ] # same as [j."ʞ".'l'] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4344366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-table-6.yaml0000644000000000000000000000002514567257576021006 0ustar00j: "ʞ": l: {} ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4344366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-table-7.toml0000644000000000000000000000017014567257576021021 0ustar00# [x] you # [x.y] don't # [x.y.z] need these [x.y.z.w] # for this to work [x] # defining a super-table afterwards is ok ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4344366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-table-7.yaml0000644000000000000000000000003314567257576021006 0ustar00x: y: z: w: {} ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4344366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-table-8.toml0000644000000000000000000000016414567257576021025 0ustar00[fruit] apple.color = "red" apple.taste.sweet = true [fruit.apple.texture] # you can add sub-tables smooth = true ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4344366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-table-8.yaml0000644000000000000000000000013614567257576021013 0ustar00fruit: apple: color: "red" taste: sweet: true texture: smooth: true ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4344366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-table-inline-1.toml0000644000000000000000000000006214567257576022267 0ustar00name = { first = "Tom", last = "Preston-Werner" } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4344366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-table-inline-1.yaml0000644000000000000000000000005714567257576022262 0ustar00name: { first: "Tom", last: "Preston-Werner" } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4344366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-table-inline-2.toml0000644000000000000000000000003114567257576022264 0ustar00point = { x = 1, y = 2 } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4344366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-table-inline-2.yaml0000644000000000000000000000003114567257576022253 0ustar00point: { x: 1, y: 2 } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4344366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-table-inline-3.toml0000644000000000000000000000004014567257576022265 0ustar00animal = { type.name = "pug" } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4344366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-table-inline-3.yaml0000644000000000000000000000004514567257576022261 0ustar00animal: { type: { name: "pug" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4344366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-table.toml0000644000000000000000000000001014567257576020646 0ustar00[table] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4344366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-table.yaml0000644000000000000000000000001214567257576020637 0ustar00table: {} ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4344366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-time-1.json0000644000000000000000000000010314567257576020654 0ustar00{ "lt1": { "type": "time", "value": "07:32:00.000" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4344366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-time-1.toml0000644000000000000000000000001714567257576020662 0ustar00lt1 = 07:32:00 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4344366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-time-2.json0000644000000000000000000000010314567257576020655 0ustar00{ "lt2": { "type": "time", "value": "00:32:00.999" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4344366 tomlkit-0.12.4/tests/toml-spec-tests/values/spec-time-2.toml0000644000000000000000000000002614567257576020663 0ustar00lt2 = 00:32:00.999999 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.7504363 tomlkit-0.12.4/tests/toml-test/.git0000644000000000000000000000005314567257577014114 0ustar00gitdir: ../../.git/modules/tests/toml-test ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/.github/workflows/test.yml0000644000000000000000000000137214567257577020434 0ustar00{ "name": "go test", "on": ["push", "pull_request"], "jobs": { "test": { "strategy": { "matrix": { "go-version": ["1.16.x"], "os": ["ubuntu-latest", "macos-latest", "windows-latest"] } }, "runs-on": "${{ matrix.os }}", "steps": [ { "name": "Install Go", "uses": "actions/setup-go@v2", "with": {"go-version": "${{ matrix.go-version }}"} }, { "name": "Checkout code", "uses": "actions/checkout@v2" }, { "name": "Test", "run": "go test -v ./..." }, { "name": "Install", "run": "go install -v ./cmd/toml-test" } ] } } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/.gitignore0000644000000000000000000000002114567257577015313 0ustar00/dist /toml-test ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/.gogo-release0000644000000000000000000000005314567257577015702 0ustar00build_flags="$build_flags ./cmd/toml-test" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/COPYING0000644000000000000000000000206714567257577014372 0ustar00The MIT License (MIT) Copyright (c) 2018 TOML authors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/README.md0000644000000000000000000002170114567257577014612 0ustar00`toml-test` is a language-agnostic test suite to verify the correctness of [TOML][t] parsers and writers. Tests are divided into two groups: "invalid" and "valid". Decoders or encoders that reject "invalid" tests pass the tests, and decoders that accept "valid" tests and output precisely what is expected pass the tests. The output format is JSON, described below. Both encoders and decoders share valid tests, except an encoder accepts JSON and outputs TOML rather than the reverse. The TOML representations are read with a blessed decoder and is compared. Encoders have their own set of invalid tests in the invalid-encoder directory. The JSON given to a TOML encoder is in the same format as the JSON that a TOML decoder should output. Compatible with TOML version [v1.0.0][v1]. [t]: https://toml.io [v1]: https://toml.io/en/v1.0.0 Installation ------------ There are binaries on the [release page][r]; these are statically compiled and should run in most environments. It's recommended you use a binary, or a tagged release if you build from source especially in CI environments. This prevents your tests from breaking on changes to tests in this tool. To compile from source you will need Go 1.16 or newer (older versions will *not* work): $ git clone https://github.com/BurntSushi/toml-test.git $ cd toml-test $ go build ./cmd/toml-test This will build a `./toml-test` binary. [r]: https://github.com/BurntSushi/toml-test/releases Usage ----- `toml-test` accepts an encoder or decoder as the first positional argument, for example: $ toml-test my-toml-decoder $ toml-test my-toml-encoder -encoder The `-encoder` flag is used to signal that this is an encoder rather than a decoder. For example, to run the tests against the Go TOML library: # Install my parser $ go install github.com/BurntSushi/toml/cmd/toml-test-decoder@master $ go install github.com/BurntSushi/toml/cmd/toml-test-encoder@master $ toml-test toml-test-decoder toml-test [toml-test-decoder]: using embeded tests: 278 passed $ toml-test -encoder toml-test-encoder toml-test [toml-test-encoder]: using embeded tests: 94 passed, 0 failed The default is to use the tests compiled in the binary; you can use `-testdir` to load tests from the filesystem. You can use `-run [name]` or `-skip [name]` to run or skip specific tests. Both flags can be given more than once and accept glob patterns: `-run 'valid/string/*'`. See `toml-test -help` for detailed usage. ### Implementing a decoder For your decoder to be compatible with `toml-test` it **must** satisfy the expected interface: - Your decoder **must** accept TOML data on `stdin` until EOF. - If the TOML data is invalid, your decoder **must** return with a non-zero exit, code indicating an error. - If the TOML data is valid, your decoder **must** output a JSON encoding of that data on `stdout` and return with a zero exit code indicating success. An example in pseudocode: toml_data = read_stdin() parsed_toml = decode_toml(toml_data) if error_parsing_toml(): print_error_to_stderr() exit(1) print_as_tagged_json(parsed_toml) exit(0) Details on the tagged JSON is explained below in "JSON encoding". ### Implementing an encoder For your encoder to be compatible with `toml-test`, it **must** satisfy the expected interface: - Your encoder **must** accept JSON data on `stdin` until EOF. - If the JSON data cannot be converted to a valid TOML representation, your encoder **must** return with a non-zero exit code indicating an error. - If the JSON data can be converted to a valid TOML representation, your encoder **must** output a TOML encoding of that data on `stdout` and return with a zero exit code indicating success. An example in pseudocode: json_data = read_stdin() parsed_json_with_tags = decode_json(json_data) if error_parsing_json(): print_error_to_stderr() exit(1) print_as_toml(parsed_json_with_tags) exit(0) JSON encoding ------------- The following JSON encoding applies equally to both encoders and decoders: - TOML tables correspond to JSON objects. - TOML table arrays correspond to JSON arrays. - TOML values correspond to a special JSON object of the form: `{"type": "{TTYPE}", "value": {TVALUE}}` In the above, `TTYPE` may be one of: - string - integer - float - bool - datetime - datetime-local - date-local - time-local `TVALUE` is always a JSON string. Empty hashes correspond to empty JSON objects (`{}`) and empty arrays correspond to empty JSON arrays (`[]`). Offset datetimes should be encoded in RFC 3339; Local datetimes should be encoded following RFC 3339 without the offset part. Local dates should be encoded as the date part of RFC 3339 and Local times as the time part. Examples: TOML JSON a = 42 {"type": "integer": "value": "42} --- [tbl] {"tbl": { a = 42 "a": {"type": "integer": "value": "42} }} --- a = ["a", 2] {"a": [ {"type": "string", "value": "1"}, {"type: "integer": "value": "2"} ]} Or a more complex example: ```toml best-day-ever = 1987-07-05T17:45:00Z [numtheory] boring = false perfection = [6, 28, 496] ``` And the JSON encoding expected by `toml-test` is: ```json { "best-day-ever": {"type": "datetime", "value": "1987-07-05T17:45:00Z"}, "numtheory": { "boring": {"type": "bool", "value": "false"}, "perfection": [ {"type": "integer", "value": "6"}, {"type": "integer", "value": "28"}, {"type": "integer", "value": "496"} ] } } ``` Note that the only JSON values ever used are objects, arrays and strings. An example implementation can be found in the BurnSushi/toml: - [Add tags](https://github.com/BurntSushi/toml/blob/master/internal/tag/add.go) - [Remove tags](https://github.com/BurntSushi/toml/blob/master/internal/tag/rm.go) Assumptions of Truth -------------------- The following are taken as ground truths by `toml-test`: - All tests classified as `invalid` **are** invalid. - All tests classified as `valid` **are** valid. - All expected outputs in `valid/test-name.json` are exactly correct. - The Go standard library package `encoding/json` decodes JSON correctly. - When testing encoders, the TOML decoder at [BurntSushi/toml](https://github.com/BurntSushi/toml) is assumed to be correct. (Note that this assumption is not made when testing decoders!) Of particular note is that **no TOML decoder** is taken as ground truth when testing decoders. This means that most changes to the spec will only require an update of the tests in `toml-test`. (Bigger changes may require an adjustment of how two things are considered equal. Particularly if a new type of data is added.) Obviously, this advantage does not apply to testing TOML encoders since there must exist a TOML decoder that conforms to the specification in order to read the output of a TOML encoder. Adding tests ------------ `toml-test` was designed so that tests can be easily added and removed. As mentioned above, tests are split into two groups: invalid and valid tests. Invalid tests **only check if a decoder rejects invalid TOML data**. Or, in the case of testing encoders, invalid tests **only check if an encoder rejects an invalid representation of TOML** (e.g., a hetergeneous array). Therefore, all invalid tests should try to **test one thing and one thing only**. Invalid tests should be named after the fault it is trying to expose. Invalid tests for decoders are in the `tests/invalid` directory while invalid tests for encoders are in the `tests/invalid-encoder` directory. Valid tests check that a decoder accepts valid TOML data **and** that the parser has the correct representation of the TOML data. Therefore, valid tests need a JSON encoding in addition to the TOML data. The tests should be small enough that writing the JSON encoding by hand will not give you brain damage. The exact reverse is true when testing encoders. A valid test without either a `.json` or `.toml` file will automatically fail. If you have tests that you'd like to add, please submit a pull request. Why JSON? --------- In order for a language agnostic test suite to work, we need some kind of data exchange format. TOML cannot be used, as it would imply that a particular parser has a blessing of correctness. My decision to use JSON was not a careful one. It was based on expediency. The Go standard library has an excellent `encoding/json` package built in, which made it easy to compare JSON data. The problem with JSON is that the types in TOML are not in one-to-one correspondence with JSON. This is why every TOML value represented in JSON is tagged with a type annotation, as described above. YAML may be closer in correspondence with TOML, but I don't believe we should rely on that correspondence. Making things explicit with JSON means that writing tests is a little more cumbersome, but it also reduces the number of assumptions we need to make. ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/cmd/toml-test/main.go0000644000000000000000000001075614567257577017311 0ustar00package main import ( "fmt" "io/fs" "os" "path/filepath" "strings" tomltest "github.com/BurntSushi/toml-test" "zgo.at/zli" ) var hlErr = zli.ColorHex("#f6d6d6").Bg() | zli.Black | zli.Bold var version = "git" func parseFlags() (tomltest.Runner, []string, int, string) { f := zli.NewFlags(os.Args) var ( help = f.Bool(false, "help", "h") versionFlag = f.Bool(false, "version", "V") encoder = f.Bool(false, "encoder") testDir = f.String("", "testdir") showAll = f.IntCounter(0, "v") color = f.String("always", "color") skip = f.StringList(nil, "skip") run = f.StringList(nil, "run") ) zli.F(f.Parse()) if help.Bool() { fmt.Printf(usage, filepath.Base(os.Args[0])) zli.Exit(0) } if versionFlag.Bool() { fmt.Println(version) zli.Exit(0) } r := tomltest.Runner{ Encoder: encoder.Bool(), RunTests: run.StringsSplit(","), SkipTests: skip.StringsSplit(","), } if len(f.Args) == 0 { zli.Fatalf("no parser command") } for _, r := range r.RunTests { _, err := filepath.Match(r, "") if err != nil { zli.Fatalf("invalid glob pattern %q in -run: %s", r, err) } } for _, r := range r.SkipTests { _, err := filepath.Match(r, "") if err != nil { zli.Fatalf("invalid glob pattern %q in -skip: %s", r, err) } } r.Files = tomltest.EmbeddedTests() if testDir.Set() { r.Files = os.DirFS(testDir.String()) // So I used the path to toml-dir a few times, be forgiving by looking // for a "tests" directory and sub-ing to that. ls, err := fs.ReadDir(r.Files, ".") zli.F(err) var f, t int for _, l := range ls { if l.IsDir() && (l.Name() == "valid" || l.Name() == "invalid") { f++ } if l.IsDir() && l.Name() == "tests" { t++ } } if f < 2 { if t == 0 { zli.Fatalf("%q does not seem to contain any tests (no valid and/or invalid directory)", testDir) } r.Files, err = fs.Sub(r.Files, "tests") zli.F(err) } } r.Parser = tomltest.NewCommandParser(r.Files, f.Args) switch color.String() { case "always", "yes": zli.WantColor = true case "never", "no": zli.WantColor = false case "bold", "monochrome": zli.WantColor = true hlErr = zli.Bold default: zli.Fatalf("invalid value for -color: %q", color) } return r, f.Args, showAll.Int(), testDir.String() } func main() { runner, cmd, showAll, testDir := parseFlags() tests, err := runner.Run() zli.F(err) for _, t := range tests.Tests { if t.Failed() || showAll > 1 { fmt.Print(detailed(runner, t)) } else if showAll == 1 { fmt.Print(short(runner, t)) } } fmt.Printf("toml-test %s: ", cmd) if testDir == "" { fmt.Print("using embeded tests: ") } else { fmt.Printf("tests from %q: ", testDir) } fmt.Printf("%3d passed, %2d failed", tests.Passed, tests.Failed) if tests.Skipped > 0 { fmt.Printf(", %2d skipped", tests.Skipped) } fmt.Println() if tests.Failed > 0 { zli.Exit(1) } zli.Exit(0) } func short(r tomltest.Runner, t tomltest.Test) string { b := new(strings.Builder) switch { case t.Failure != "": b.WriteString(zli.Colorf("FAIL", hlErr)) b.WriteByte(' ') b.WriteString(zli.Bold.String()) b.WriteString(t.Path) b.WriteString(zli.Reset.String()) case t.Skipped: b.WriteString(hlErr.String()) b.WriteString("SKIP") b.WriteString(zli.Reset.String()) b.WriteByte(' ') b.WriteString(t.Path) default: b.WriteString("PASS ") b.WriteString(t.Path) } b.WriteByte('\n') return b.String() } func detailed(r tomltest.Runner, t tomltest.Test) string { b := new(strings.Builder) b.WriteString(short(r, t)) if t.Failed() { b.WriteString(indentWith( indent(t.Failure, 4), zli.Colorf(" ", hlErr))) b.WriteByte('\n') } showStream(b, "input sent to parser-cmd", t.Input) if t.OutputFromStderr { showStream(b, "output from parser-cmd (stderr)", t.Output) } else { showStream(b, "output from parser-cmd (stdout)", t.Output) } if t.Type() == tomltest.TypeValid { showStream(b, "want", t.Want) } else { showStream(b, "want", "Exit code 1") } b.WriteByte('\n') return b.String() } func showStream(b *strings.Builder, name, s string) { b.WriteByte('\n') fmt.Fprintln(b, zli.Colorf(" "+name+":", zli.Bold)) if s == "" { fmt.Fprintln(b, " ") return } fmt.Fprintln(b, indent(s, 7)) } func indentWith(s, with string) string { return with + strings.ReplaceAll(strings.TrimRight(s, "\n"), "\n", "\n"+with) } func indent(s string, n int) string { sp := strings.Repeat(" ", n) return sp + strings.ReplaceAll(strings.TrimRight(s, "\n"), "\n", "\n"+sp) } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/cmd/toml-test/usage.go0000644000000000000000000000660214567257577017464 0ustar00package main const usage = `Usage: %[1]s parser-cmd [ parser-cmd-flags ] toml-test is a tool to verify the correctness of TOML parsers and writers. https://github.com/BurntSushi/toml-test The parser-cmd positional argument should be a program that accepts TOML data on stdin until EOF, and is expected to write the corresponding JSON encoding on stdout. Please see 'README.md' for details on how to satisfy the interface expected by 'toml-test' with your own parser. Any positional arguments are use as the parser-cmd; to pass flags, remember to stop toml-test's flag parsing with -- $ %[1]s -- my-parser -x -y There are two tests: decoder This is the default. encoder When -encoder is given. Tests are split in to two groups: valid Valid TOML files invalid Invalid TOML files that should be rejected with an error. invalid-encoder Invalid input for the encoder All tests are referred to relative to to the tests/ directory: valid/dir/name or invalid/dir/name. Flags: -help Show this help and exit. -version Show version and exit. -encoder The given parser-cmd will be tested as a TOML encoder. The parser-cmd will be sent JSON on stdin and is expected to write TOML to stdout. The JSON will be in the same format as specified in the toml-test README. Note that this depends on the correctness of my TOML parser! -v List all tests, even passing ones. Add twice to show detailed output for passing tests. -run Specify a list of tests to run; the default is to run all tests. Test names include the directory, i.e. "valid/test-name" or "invalid/test-name". You can use globbing patterns , for example to run all string tests: $ toml-test toml-test-decoder -run 'valid/string*' You can specify this argument more than once, and/or specify multiple tests by separating them with a comma: $ toml-test toml-test-decoder \ -run valid/string-empty \ -run valid/string-nl,valid/string-simple This will run three tests (string-empty, string-nl, string-simple). Globbing patterns: https://pkg.go.dev/path/filepath#Match -skip Tests to skip, this uses the same syntax as the -run flag. -color Output color; possible values: always Show test failures in bold and red (default). bold Show test failures in bold only. never Never output any escape codes. -testdir Location of the tests; the default is to use the tests compiled in the binary; this is only useful if you want to add or modify tests. A test in the invalid directory is a toml file that is known to be invalid and should be rejected by the parser. A test in the valid directory is a toml and json file with the same name, where the json file is the JSON representation of the TOML file according to the syntax described in the README. For encoders, the same directory scheme above is used, except the invalid-encoder directory is used instead of the invalid directory. ` ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/gen-multi.py0000755000000000000000000000060614567257577015612 0ustar00#!/usr/bin/env python3 import glob import os.path for f in glob.glob('tests/invalid/*/*.multi'): base = os.path.dirname(f[:-6]) for l in open(f, 'rb').readlines(): name = l.split(b'=')[0].strip().decode() if name == '' or name[0] == '#': continue path = base + "/" + name + '.toml' with open(path, 'wb+') as fp: fp.write(l) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/go.mod0000644000000000000000000000031414567257577014436 0ustar00module github.com/BurntSushi/toml-test go 1.16 require ( github.com/BurntSushi/toml v0.4.0 // no_term branch, which doesn't depend on x/term and x/sys zgo.at/zli v0.0.0-20210619044753-e7020a328e59 ) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/go.sum0000644000000000000000000000247214567257577014472 0ustar00github.com/BurntSushi/toml v0.3.2-0.20210614224209-34d990aa228d/go.mod h1:2QZjSXA5e+XyFeCAxxtL8Z4StYUsTquL8ODGPR3C3MA= github.com/BurntSushi/toml v0.3.2-0.20210621044154-20a94d639b8e/go.mod h1:t4zg8TkHfP16Vb3x4WKIw7zVYMit5QFtPEO8lOWxzTg= github.com/BurntSushi/toml v0.3.2-0.20210624061728-01bfc69d1057/go.mod h1:NMj2lD5LfMqcE0w8tnqOsH6944oaqpI1974lrIwerfE= github.com/BurntSushi/toml v0.3.2-0.20210704081116-ccff24ee4463/go.mod h1:EkRrMiQQmfxK6kIldz3QbPlhmVkrjW1RDJUnbDqGYvc= github.com/BurntSushi/toml v0.4.0 h1:qD/r9AL67srjW6O3fcSKZDsXqzBNX6ieSRywr2hRrdE= github.com/BurntSushi/toml v0.4.0/go.mod h1:wtejDu7Q0FhCWAo2aXkywSJyYFg01EDTKozLNCz2JBA= github.com/BurntSushi/toml-test v0.1.1-0.20210620192437-de01089bbf76/go.mod h1:P/PrhmZ37t5llHfDuiouWXtFgqOoQ12SAh9j6EjrBR4= github.com/BurntSushi/toml-test v0.1.1-0.20210624055653-1f6389604dc6/go.mod h1:UAIt+Eo8itMZAAgImXkPGDMYsT1SsJkVdB5TuONl86A= github.com/BurntSushi/toml-test v0.1.1-0.20210704062846-269931e74e3f/go.mod h1:fnFWrIwqgHsEjVsW3RYCJmDo86oq9eiJ9u6bnqhtm2g= github.com/BurntSushi/toml-test v0.1.1-0.20210723065233-facb9eccd4da/go.mod h1:ve9Q/RRu2vHi42LocPLNvagxuUJh993/95b18bw/Nws= zgo.at/zli v0.0.0-20210619044753-e7020a328e59 h1:NId7flXh2TTB7XD/0/WBTuZ8L5mpNMCdYyqJ/VQIlFM= zgo.at/zli v0.0.0-20210619044753-e7020a328e59/go.mod h1:HLAc12TjNGT+VRXr76JnsNE3pbooQtwKWhX+RlDjQ2Y= ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/json.go0000644000000000000000000001505114567257577014634 0ustar00package tomltest import ( "strconv" "strings" "time" ) // cmpJSON consumes the recursive structure of both want and have // simultaneously. If anything is unequal, the result has failed and comparison // stops. // // reflect.DeepEqual could work here, but it won't tell us how the two // structures are different. func (r Test) cmpJSON(want, have interface{}) Test { switch w := want.(type) { case map[string]interface{}: return r.cmpJSONMaps(w, have) case []interface{}: return r.cmpJSONArrays(w, have) default: return r.fail( "Key '%s' in expected output should be a map or a list of maps, but it's a %T", r.Key, want) } } func (r Test) cmpJSONMaps(want map[string]interface{}, have interface{}) Test { haveMap, ok := have.(map[string]interface{}) if !ok { return r.mismatch("table", want, haveMap) } // Check to make sure both or neither are values. if isValue(want) && !isValue(haveMap) { return r.fail( "Key '%s' is supposed to be a value, but the parser reports it as a table", r.Key) } if !isValue(want) && isValue(haveMap) { return r.fail( "Key '%s' is supposed to be a table, but the parser reports it as a value", r.Key) } if isValue(want) && isValue(haveMap) { return r.cmpJSONValues(want, haveMap) } // Check that the keys of each map are equivalent. for k := range want { if _, ok := haveMap[k]; !ok { bunk := r.kjoin(k) return bunk.fail("Could not find key '%s' in parser output.", bunk.Key) } } for k := range haveMap { if _, ok := want[k]; !ok { bunk := r.kjoin(k) return bunk.fail("Could not find key '%s' in expected output.", bunk.Key) } } // Okay, now make sure that each value is equivalent. for k := range want { if sub := r.kjoin(k).cmpJSON(want[k], haveMap[k]); sub.Failed() { return sub } } return r } func (r Test) cmpJSONArrays(want, have interface{}) Test { wantSlice, ok := want.([]interface{}) if !ok { return r.bug("'value' should be a JSON array when 'type=array', but it is a %T", want) } haveSlice, ok := have.([]interface{}) if !ok { return r.fail( "Malformed output from your encoder: 'value' is not a JSON array: %T", have) } if len(wantSlice) != len(haveSlice) { return r.fail("Array lengths differ for key '%s':\n"+ " Expected: %d\n"+ " Your encoder: %d", r.Key, len(wantSlice), len(haveSlice)) } for i := 0; i < len(wantSlice); i++ { if sub := r.cmpJSON(wantSlice[i], haveSlice[i]); sub.Failed() { return sub } } return r } func (r Test) cmpJSONValues(want, have map[string]interface{}) Test { wantType, ok := want["type"].(string) if !ok { return r.bug("'type' should be a string, but it is a %T", want["type"]) } haveType, ok := have["type"].(string) if !ok { return r.fail("Malformed output from your encoder: 'type' is not a string: %T", have["type"]) } if wantType != haveType { return r.valMismatch(wantType, haveType, want, have) } // If this is an array, then we've got to do some work to check equality. if wantType == "array" { return r.cmpJSONArrays(want, have) } // Atomic values are always strings wantVal, ok := want["value"].(string) if !ok { return r.bug("'value' %v should be a string, but it is a %[1]T", want["value"]) } haveVal, ok := have["value"].(string) if !ok { return r.fail("Malformed output from your encoder: %T is not a string", have["value"]) } // Excepting floats and datetimes, other values can be compared as strings. switch wantType { case "float": return r.cmpFloats(wantVal, haveVal) case "datetime", "datetime-local", "date-local", "time-local": return r.cmpAsDatetimes(wantType, wantVal, haveVal) default: return r.cmpAsStrings(wantVal, haveVal) } } func (r Test) cmpAsStrings(want, have string) Test { if want != have { return r.fail("Values for key '%s' don't match:\n"+ " Expected: %s\n"+ " Your encoder: %s", r.Key, want, have) } return r } func (r Test) cmpFloats(want, have string) Test { // Special case for NaN, since NaN != NaN. if strings.HasSuffix(want, "nan") || strings.HasSuffix(have, "nan") { if want != have { return r.fail("Values for key '%s' don't match:\n"+ " Expected: %v\n"+ " Your encoder: %v", r.Key, want, have) } return r } wantF, err := strconv.ParseFloat(want, 64) if err != nil { return r.bug("Could not read '%s' as a float value for key '%s'", want, r.Key) } haveF, err := strconv.ParseFloat(have, 64) if err != nil { return r.fail("Malformed output from your encoder: key '%s' is not a float: '%s'", r.Key, have) } if wantF != haveF { return r.fail("Values for key '%s' don't match:\n"+ " Expected: %v\n"+ " Your encoder: %v", r.Key, wantF, haveF) } return r } var datetimeRepl = strings.NewReplacer( " ", "T", "t", "T", "z", "Z") var layouts = map[string]string{ "datetime": time.RFC3339Nano, "datetime-local": "2006-01-02T15:04:05.999999999", "date-local": "2006-01-02", "time-local": "15:04:05", } func (r Test) cmpAsDatetimes(kind, want, have string) Test { layout, ok := layouts[kind] if !ok { panic("should never happen") } wantT, err := time.Parse(layout, datetimeRepl.Replace(want)) if err != nil { return r.bug("Could not read '%s' as a datetime value for key '%s'", want, r.Key) } haveT, err := time.Parse(layout, datetimeRepl.Replace(want)) if err != nil { return r.fail("Malformed output from your encoder: key '%s' is not a datetime: '%s'", r.Key, have) } if !wantT.Equal(haveT) { return r.fail("Values for key '%s' don't match:\n"+ " Expected: %v\n"+ " Your encoder: %v", r.Key, wantT, haveT) } return r } func (r Test) cmpAsDatetimesLocal(want, have string) Test { if datetimeRepl.Replace(want) != datetimeRepl.Replace(have) { return r.fail("Values for key '%s' don't match:\n"+ " Expected: %v\n"+ " Your encoder: %v", r.Key, want, have) } return r } func (r Test) kjoin(key string) Test { if len(r.Key) == 0 { r.Key = key } else { r.Key += "." + key } return r } func isValue(m map[string]interface{}) bool { if len(m) != 2 { return false } if _, ok := m["type"]; !ok { return false } if _, ok := m["value"]; !ok { return false } return true } func (r Test) mismatch(wantType string, want, have interface{}) Test { return r.fail("Key '%s' is not an %s but %[4]T:\n"+ " Expected: %#[3]v\n"+ " Your encoder: %#[4]v", r.Key, wantType, want, have) } func (r Test) valMismatch(wantType, haveType string, want, have interface{}) Test { return r.fail("Key '%s' is not an %s but %s:\n"+ " Expected: %#[3]v\n"+ " Your encoder: %#[4]v", r.Key, wantType, want, have) } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/runner.go0000644000000000000000000002265614567257577015205 0ustar00//go:generate ./gen-multi.py package tomltest import ( "bytes" "embed" "encoding/json" "errors" "fmt" "io/fs" "os" "os/exec" "path/filepath" "strings" "github.com/BurntSushi/toml" ) type testType uint8 const ( TypeValid testType = iota TypeInvalid ) //go:embed tests/* var embeddedTests embed.FS // EmbeddedTests are the tests embedded in toml-test, rooted to the "test/" // directory. func EmbeddedTests() fs.FS { f, err := fs.Sub(embeddedTests, "tests") if err != nil { panic(err) } return f } // Runner runs a set of tests. // // The validity of the parameters is not checked extensively; the caller should // verify this if need be. See ./cmd/toml-test for an example. type Runner struct { Files fs.FS // Test files. Encoder bool // Are we testing an encoder? RunTests []string // Tests to run; run all if blank. SkipTests []string // Tests to skip. Parser Parser // Send data to a parser. } // A Parser instance is used to call the TOML parser we test. // // By default this is done through an external command. type Parser interface { // Encode a JSON string to TOML. // // The output is the TOML string; if outputIsError is true then it's assumed // that an encoding error occurred. // // An error return should only be used in case an unrecoverable error // occurred; failing to encode to TOML is not an error, but the encoder // unexpectedly panicking is. Encode(jsonInput string) (output string, outputIsError bool, err error) // Decode a TOML string to JSON. The same semantics as Encode apply. Decode(tomlInput string) (output string, outputIsError bool, err error) } // CommandParser calls an external command. type CommandParser struct { fsys fs.FS cmd []string } // Tests are tests to run. type Tests struct { Tests []Test // Set when test are run. Skipped, Passed, Failed int } // Result is the result of a single test. type Test struct { Path string // Path of test, e.g. "valid/string-test" // Set when a test is run. Skipped bool // Skipped this test? Failure string // Failure message. Key string // TOML key the failure occured on; may be blank. Encoder bool // Encoder test? Input string // The test case that we sent to the external program. Output string // Output from the external program. Want string // The output we want. OutputFromStderr bool // The Output came from stderr, not stdout. } // List all tests in Files. func (r Runner) List() ([]string, error) { ls := make([]string, 0, 256) if err := r.findTOML("valid", &ls); err != nil { return nil, fmt.Errorf("reading 'valid/' dir: %w", err) } d := "invalid" + map[bool]string{true: "-encoder", false: ""}[r.Encoder] if err := r.findTOML(d, &ls); err != nil { return nil, fmt.Errorf("reading %q dir: %w", d, err) } return ls, nil } // Run all tests listed in t.RunTests. // // TODO: give option to: // - Run all tests with \n replaced with \r\n // - Run all tests with '# comment' appended to every line. func (r Runner) Run() (Tests, error) { skipped, err := r.findTests() if err != nil { return Tests{}, fmt.Errorf("tomltest.Runner.Run: %w", err) } tests := Tests{Tests: make([]Test, 0, len(r.RunTests)), Skipped: skipped} for _, p := range r.RunTests { if r.hasSkip(p) { tests.Skipped++ tests.Tests = append(tests.Tests, Test{Path: p, Skipped: true, Encoder: r.Encoder}) continue } t := Test{Path: p, Encoder: r.Encoder}.Run(r.Parser, r.Files) tests.Tests = append(tests.Tests, t) if t.Failed() { tests.Failed++ } else { tests.Passed++ } } return tests, nil } // find all TOML files in 'path' relative to the test directory. func (r Runner) findTOML(path string, appendTo *[]string) error { err := fs.WalkDir(r.Files, path, func(path string, d fs.DirEntry, err error) error { if err != nil { return err } if d.IsDir() || !strings.HasSuffix(path, ".toml") { return nil } *appendTo = append(*appendTo, strings.TrimSuffix(path, ".toml")) return nil }) // It's okay if the directory doesn't exist. var pErr *os.PathError if errors.As(err, &pErr) && pErr.Op == "open" && pErr.Path == path { return nil } return err } // Expand RunTest glob patterns, or return all tests if RunTests if empty. func (r *Runner) findTests() (int, error) { ls, err := r.List() if err != nil { return 0, err } var skip int if len(r.RunTests) == 0 { r.RunTests = ls } else { run := make([]string, 0, len(r.RunTests)) for _, l := range ls { for _, r := range r.RunTests { if m, _ := filepath.Match(r, l); m { run = append(run, l) break } } } r.RunTests, skip = run, len(ls)-len(run) } // Expand invalid tests ending in ".multi.toml" expanded := make([]string, 0, len(r.RunTests)) for _, path := range r.RunTests { if !strings.HasSuffix(path, ".multi") { expanded = append(expanded, path) continue } d, err := fs.ReadFile(r.Files, path+".toml") if err != nil { return 0, err } fmt.Println(string(d)) } r.RunTests = expanded return skip, nil } func (r Runner) hasSkip(path string) bool { for _, s := range r.SkipTests { if m, _ := filepath.Match(s, path); m { return true } } return false } func (c CommandParser) Encode(input string) (output string, outputIsError bool, err error) { stdout, stderr := new(bytes.Buffer), new(bytes.Buffer) cmd := exec.Command(c.cmd[0]) cmd.Args = c.cmd cmd.Stdin, cmd.Stdout, cmd.Stderr = strings.NewReader(input), stdout, stderr err = cmd.Run() if err != nil { eErr := &exec.ExitError{} if errors.As(err, &eErr) { fmt.Fprintf(stderr, "\nExit %d\n", eErr.ProcessState.ExitCode()) err = nil } } if stderr.Len() > 0 { return strings.TrimSpace(stderr.String()) + "\n", true, err } return strings.TrimSpace(stdout.String()) + "\n", false, err } func NewCommandParser(fsys fs.FS, cmd []string) CommandParser { return CommandParser{fsys, cmd} } func (c CommandParser) Decode(input string) (string, bool, error) { return c.Encode(input) } // Run this test. func (t Test) Run(p Parser, fsys fs.FS) Test { if t.Type() == TypeInvalid { return t.runInvalid(p, fsys) } return t.runValid(p, fsys) } func (t Test) runInvalid(p Parser, fsys fs.FS) Test { var err error _, t.Input, err = t.ReadInput(fsys) if err != nil { return t.bug(err.Error()) } if t.Encoder { t.Output, t.OutputFromStderr, err = p.Encode(t.Input) } else { t.Output, t.OutputFromStderr, err = p.Decode(t.Input) } if err != nil { return t.fail(err.Error()) } if !t.OutputFromStderr { return t.fail("Expected an error, but no error was reported.") } return t } func (t Test) runValid(p Parser, fsys fs.FS) Test { var err error _, t.Input, err = t.ReadInput(fsys) if err != nil { return t.bug(err.Error()) } if t.Encoder { t.Output, t.OutputFromStderr, err = p.Encode(t.Input) } else { t.Output, t.OutputFromStderr, err = p.Decode(t.Input) } if err != nil { return t.fail(err.Error()) } if t.OutputFromStderr { return t.fail(t.Output) } if t.Output == "" { // Special case: we expect an empty output here. if t.Path != "valid/empty-file" { return t.fail("stdout is empty") } } // Compare for encoder test if t.Encoder { want, err := t.ReadWantTOML(fsys) if err != nil { return t.bug(err.Error()) } var have interface{} if _, err := toml.Decode(t.Output, &have); err != nil { //return t.fail("decode TOML from encoder %q:\n %s", cmd, err) return t.fail("decode TOML from encoder:\n %s", err) } return t.cmpTOML(want, have) } // Compare for decoder test want, err := t.ReadWantJSON(fsys) if err != nil { return t.fail(err.Error()) } var have interface{} if err := json.Unmarshal([]byte(t.Output), &have); err != nil { return t.fail("decode JSON output from parser:\n %s", err) } return t.cmpJSON(want, have) } // ReadInput reads the file sent to the encoder. func (t Test) ReadInput(fsys fs.FS) (path, data string, err error) { path = t.Path + map[bool]string{true: ".json", false: ".toml"}[t.Encoder] d, err := fs.ReadFile(fsys, path) if err != nil { return path, "", err } return path, string(d), nil } func (t Test) ReadWant(fsys fs.FS) (path, data string, err error) { if t.Type() == TypeInvalid { panic("testoml.Test.ReadWant: invalid tests do not have a 'correct' version") } path = t.Path + map[bool]string{true: ".toml", false: ".json"}[t.Encoder] d, err := fs.ReadFile(fsys, path) if err != nil { return path, "", err } return path, string(d), nil } func (t *Test) ReadWantJSON(fsys fs.FS) (v interface{}, err error) { var path string path, t.Want, err = t.ReadWant(fsys) if err != nil { return nil, err } if err := json.Unmarshal([]byte(t.Want), &v); err != nil { return nil, fmt.Errorf("decode JSON file %q:\n %s", path, err) } return v, nil } func (t *Test) ReadWantTOML(fsys fs.FS) (v interface{}, err error) { var path string path, t.Want, err = t.ReadWant(fsys) if err != nil { return nil, err } _, err = toml.Decode(t.Want, &v) if err != nil { return nil, fmt.Errorf("Could not decode TOML file %q:\n %s", path, err) } return v, nil } // Test type: "valid", "invalid" func (t Test) Type() testType { if strings.HasPrefix(t.Path, "invalid") { return TypeInvalid } return TypeValid } func (t Test) fail(format string, v ...interface{}) Test { t.Failure = fmt.Sprintf(format, v...) return t } func (t Test) bug(format string, v ...interface{}) Test { return t.fail("BUG IN TEST CASE: "+format, v...) } func (t Test) Failed() bool { return t.Failure != "" } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/.gitattributes0000644000000000000000000000001614567257577017364 0ustar00*.toml -text ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/array/missing-separator.toml0000644000000000000000000000002214567257577023576 0ustar00wrong = [ 1 2 3 ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/array/no-close-2.toml0000644000000000000000000000001214567257577022004 0ustar00x = [42 # ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/array/no-close-table-2.toml0000644000000000000000000000002214567257577023072 0ustar00x = [{ key = 42 # ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/array/no-close-table.toml0000644000000000000000000000002014567257577022731 0ustar00x = [{ key = 42 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/array/no-close.toml0000644000000000000000000000002714567257577021653 0ustar00long_array = [ 1, 2, 3 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/array/tables-1.toml0000644000000000000000000000006714567257577021550 0ustar00# INVALID TOML DOC fruit = [] [[fruit]] # Not allowed ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/array/tables-2.toml0000644000000000000000000000027414567257577021551 0ustar00# INVALID TOML DOC [[fruit]] name = "apple" [[fruit.variety]] name = "red delicious" # This table conflicts with the previous table [fruit.variety] name = "granny smith" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/array/text-after-array-entries.toml0000644000000000000000000000010614567257577025000 0ustar00array = [ "Is there life after an array separator?", No "Entry" ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/array/text-before-array-separator.toml0000644000000000000000000000010714567257577025471 0ustar00array = [ "Is there life before an array separator?" No, "Entry" ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/array/text-in-array.toml0000644000000000000000000000007014567257577022636 0ustar00array = [ "Entry 1", I don't belong, "Entry 2", ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/bool/mixed-case.toml0000644000000000000000000000001614567257577021766 0ustar00valid = False ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/bool/wrong-case-false.toml0000644000000000000000000000001214567257577023100 0ustar00b = FALSE ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/bool/wrong-case-true.toml0000644000000000000000000000001114567257577022764 0ustar00a = TRUE ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/control/comment-del.toml0000644000000000000000000000003114567257577022675 0ustar00comment-del = "0x7f" #  ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/control/comment-lf.toml0000644000000000000000000000003214567257577022533 0ustar00comment-lf = "ctrl-P" #  ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/control/comment-null.toml0000644000000000000000000000003214567257577023104 0ustar00comment-null = "null" # ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/control/comment-us.toml0000644000000000000000000000003214567257577022561 0ustar00comment-us = "ctrl-_" #  ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/control/control.multi0000644000000000000000000000107014567257577022334 0ustar00# NOTE: this file contains literal control characters. comment-null = "null" # comment-lf = "ctrl-P" #  comment-us = "ctrl-_" #  comment-del = "0x7f" #  string-null = "null" string-lf = "null" string-us = "null" string-del = "null" rawstring-null = 'null' rawstring-lf = 'null' rawstring-us = 'null' rawstring-del = 'null' multi-null = """null""" multi-lf = """null""" multi-us = """null""" multi-del = """null""" rawmulti-null = '''null''' rawmulti-lf = '''null''' rawmulti-us = '''null''' rawmulti-del = '''null''' string-bs = "backspace" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/control/multi-del.toml0000644000000000000000000000003014567257577022364 0ustar00multi-del = """null""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/control/multi-lf.toml0000644000000000000000000000002714567257577022227 0ustar00multi-lf = """null""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/control/multi-null.toml0000644000000000000000000000003114567257577022573 0ustar00multi-null = """null""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/control/multi-us.toml0000644000000000000000000000002714567257577022255 0ustar00multi-us = """null""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/control/rawmulti-del.toml0000644000000000000000000000003314567257577023101 0ustar00rawmulti-del = '''null''' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/control/rawmulti-lf.toml0000644000000000000000000000003214567257577022735 0ustar00rawmulti-lf = '''null''' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/control/rawmulti-null.toml0000644000000000000000000000003414567257577023310 0ustar00rawmulti-null = '''null''' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/control/rawmulti-us.toml0000644000000000000000000000003214567257577022763 0ustar00rawmulti-us = '''null''' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/control/rawstring-del.toml0000644000000000000000000000003014567257577023252 0ustar00rawstring-del = 'null' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/control/rawstring-lf.toml0000644000000000000000000000002714567257577023115 0ustar00rawstring-lf = 'null' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/control/rawstring-null.toml0000644000000000000000000000003114567257577023461 0ustar00rawstring-null = 'null' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/control/rawstring-us.toml0000644000000000000000000000002714567257577023143 0ustar00rawstring-us = 'null' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/control/string-bs.toml0000644000000000000000000000003114567257577022401 0ustar00string-bs = "backspace" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/control/string-del.toml0000644000000000000000000000002514567257577022544 0ustar00string-del = "null" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/control/string-lf.toml0000644000000000000000000000002414567257577022400 0ustar00string-lf = "null" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/control/string-null.toml0000644000000000000000000000002614567257577022753 0ustar00string-null = "null" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/control/string-us.toml0000644000000000000000000000002414567257577022426 0ustar00string-us = "null" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/datetime/impossible-date.toml0000644000000000000000000000003114567257577023666 0ustar00d = 2006-01-50T00:00:00Z ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/datetime/no-leads-with-milli.toml0000644000000000000000000000004414567257577024370 0ustar00with-milli = 1987-07-5T17:45:00.12Z ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/datetime/no-leads.toml0000644000000000000000000000003714567257577022315 0ustar00no-leads = 1987-7-05T17:45:00Z ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/datetime/no-secs.toml0000644000000000000000000000003414567257577022157 0ustar00no-secs = 1987-07-05T17:45Z ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/datetime/no-t.toml0000644000000000000000000000003314567257577021464 0ustar00no-t = 1987-07-0517:45:00Z ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/datetime/trailing-t.toml0000644000000000000000000000002014567257577022655 0ustar00d = 2006-01-30T ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/encoding/bad-utf8-at-end.toml0000644000000000000000000000036214567257577023366 0ustar00# There is a 0xda at after the quotes, and no EOL at the end of the file. # # This is a bit of an edge case: This indicates there should be two bytes # (0b1101_1010) but there is no byte to follow because it's the end of the file. x = """"""././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/encoding/bad-utf8-in-comment.toml0000644000000000000000000000000414567257577024255 0ustar00# ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/encoding/bad-utf8-in-string.toml0000644000000000000000000000010314567257577024121 0ustar00# The following line contains an invalid UTF-8 sequence. bad = "" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/encoding/bom-not-at-start-1.toml0000644000000000000000000000002414567257577024047 0ustar00bom-not-at-start ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/encoding/bom-not-at-start-2.toml0000644000000000000000000000002514567257577024051 0ustar00bom-not-at-start= ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/encoding/utf16-bom.toml0000644000000000000000000000004614567257577022325 0ustar00# UTF-16 with BOM ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/encoding/utf16.toml0000644000000000000000000000005214567257577021547 0ustar00# UTF-16 without BOM ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/float/double-point-1.toml0000644000000000000000000000002614567257577022661 0ustar00double-point-1 = 0..1 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/float/double-point-2.toml0000644000000000000000000000002714567257577022663 0ustar00double-point-2 = 0.1.2 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/float/exp-double-e-1.toml0000644000000000000000000000002614567257577022546 0ustar00exp-double-e-1 = 1ee2 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/float/exp-double-e-2.toml0000644000000000000000000000002714567257577022550 0ustar00exp-double-e-2 = 1e2e3 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/float/exp-double-us.toml0000644000000000000000000000002714567257577022614 0ustar00exp-double-us = 1e__23 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/float/exp-leading-us.toml0000644000000000000000000000002714567257577022745 0ustar00exp-leading-us = 1e_23 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/float/exp-point-1.toml0000644000000000000000000000002414567257577022201 0ustar00exp-point-1 = 1e2.3 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/float/exp-point-2.toml0000644000000000000000000000002314567257577022201 0ustar00exp-point-2 = 1.e2 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/float/exp-trailing-us.toml0000644000000000000000000000003114567257577023146 0ustar00exp-trailing-us = 1e_23_ ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/float/float.multi0000644000000000000000000000127114567257577021411 0ustar00leading-zero = 03.14 leading-zero-neg = -03.14 leading-zero-plus = +03.14 leading-point = .12345 leading-point-neg = -.12345 leading-point-plus = +.12345 trailing-point = 1. trailing-point-min = -1. trailing-point-plus = +1. trailing-us = 1.2_ leading-us = _1.2 us-before-point = 1_.2 us-after-point = 1._2 double-point-1 = 0..1 double-point-2 = 0.1.2 exp-point-1 = 1e2.3 exp-point-2 = 1.e2 exp-double-e-1 = 1ee2 exp-double-e-2 = 1e2e3 exp-leading-us = 1e_23 exp-trailing-us = 1e_23_ exp-double-us = 1e__23 inf-incomplete-1 = in inf-incomplete-2 = +in inf-incomplete-3 = -in nan-incomplete-1 = na nan-incomplete-2 = +na nan-incomplete-3 = -na nan_underscore = na_n inf_underscore = in_f ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/float/inf-incomplete-1.toml0000644000000000000000000000002614567257577023171 0ustar00inf-incomplete-1 = in ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/float/inf-incomplete-2.toml0000644000000000000000000000002714567257577023173 0ustar00inf-incomplete-2 = +in ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/float/inf-incomplete-3.toml0000644000000000000000000000002714567257577023174 0ustar00inf-incomplete-3 = -in ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/float/inf_underscore.toml0000644000000000000000000000002614567257577023127 0ustar00inf_underscore = in_f ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/float/leading-point-neg.toml0000644000000000000000000000003414567257577023422 0ustar00leading-point-neg = -.12345 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/float/leading-point-plus.toml0000644000000000000000000000003514567257577023635 0ustar00leading-point-plus = +.12345 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/float/leading-point.toml0000644000000000000000000000002714567257577022655 0ustar00leading-point = .12345 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/float/leading-us.toml0000644000000000000000000000002214567257577022146 0ustar00leading-us = _1.2 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/float/leading-zero-neg.toml0000644000000000000000000000003214567257577023246 0ustar00leading-zero-neg = -03.14 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/float/leading-zero-plus.toml0000644000000000000000000000003314567257577023461 0ustar00leading-zero-plus = +03.14 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/float/leading-zero.toml0000644000000000000000000000002514567257577022501 0ustar00leading-zero = 03.14 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/float/nan-incomplete-1.toml0000644000000000000000000000002614567257577023171 0ustar00nan-incomplete-1 = na ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/float/nan-incomplete-2.toml0000644000000000000000000000002714567257577023173 0ustar00nan-incomplete-2 = +na ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/float/nan-incomplete-3.toml0000644000000000000000000000002714567257577023174 0ustar00nan-incomplete-3 = -na ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/float/nan_underscore.toml0000644000000000000000000000002614567257577023127 0ustar00nan_underscore = na_n ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/float/trailing-point-min.toml0000644000000000000000000000003114567257577023637 0ustar00trailing-point-min = -1. ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/float/trailing-point-plus.toml0000644000000000000000000000003214567257577024040 0ustar00trailing-point-plus = +1. ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/float/trailing-point.toml0000644000000000000000000000002414567257577023060 0ustar00trailing-point = 1. ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/float/trailing-us.toml0000644000000000000000000000002314567257577022355 0ustar00trailing-us = 1.2_ ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/float/us-after-point.toml0000644000000000000000000000002614567257577022777 0ustar00us-after-point = 1._2 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/float/us-before-point.toml0000644000000000000000000000002714567257577023141 0ustar00us-before-point = 1_.2 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/inline-table/double-comma.toml0000644000000000000000000000001714567257577023724 0ustar00t = {x=3,,y=4} ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/inline-table/empty.toml0000644000000000000000000000001014567257577022507 0ustar00t = {,} ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/inline-table/linebreak-1.toml0000644000000000000000000000015714567257577023457 0ustar00# No newlines are allowed between the curly braces unless they are valid within # a value. simple = { a = 1 } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/inline-table/linebreak-2.toml0000644000000000000000000000001714567257577023453 0ustar00t = {a=1, b=2} ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/inline-table/linebreak-3.toml0000644000000000000000000000001714567257577023454 0ustar00t = {a=1 ,b=2} ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/inline-table/linebreak-4.toml0000644000000000000000000000011314567257577023452 0ustar00json_like = { first = "Tom", last = "Preston-Werner" } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/inline-table/no-comma.toml0000644000000000000000000000002214567257577023062 0ustar00t = {x = 3 y = 4} ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/inline-table/trailing-comma.toml0000644000000000000000000000021414567257577024262 0ustar00# A terminating comma (also called trailing comma) is not permitted after the # last key/value pair in an inline table abc = { abc = 123, } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/integer/capital-bin.toml0000644000000000000000000000002214567257577022631 0ustar00capital-bin = 0B0 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/integer/capital-hex.toml0000644000000000000000000000002214567257577022645 0ustar00capital-hex = 0X1 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/integer/capital-oct.toml0000644000000000000000000000002214567257577022646 0ustar00capital-oct = 0O0 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/integer/double-sign-nex.toml0000644000000000000000000000002714567257577023453 0ustar00double-sign-nex = --99 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/integer/double-sign-plus.toml0000644000000000000000000000003014567257577023636 0ustar00double-sign-plus = ++99 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/integer/double-us.toml0000644000000000000000000000002214567257577022345 0ustar00double-us = 1__23 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/integer/integer.multi0000644000000000000000000000121414567257577022266 0ustar00leading-zero-1 = 01 leading-zero-2 = 00 leading-zero-sign-1 = -01 leading-zero-sign-2 = +01 double-sign-plus = ++99 double-sign-nex = --99 negative-hex = -0xff negative-bin = -0b11010110 negative-oct = -0o99 positive-hex = +0xff positive-bin = +0b11010110 positive-oct = +0o99 trailing-us = 123_ leading-us = _123 double-us = 1__23 us-after-hex = 0x_1 us-after-oct = 0o_1 us-after-bin = 0b_1 trailing-us-hex = 0x1_ trailing-us-oct = 0o1_ trailing-us-bin = 0b1_ leading-us-hex = _0o1 leading-us-oct = _0o1 leading-us-bin = _0o1 invalid-hex = 0xaafz invalid-oct = 0o778 invalid-bin = 0b0012 capital-hex = 0X1 capital-oct = 0O0 capital-bin = 0B0 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/integer/invalid-bin.toml0000644000000000000000000000002514567257577022645 0ustar00invalid-bin = 0b0012 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/integer/invalid-hex.toml0000644000000000000000000000002514567257577022661 0ustar00invalid-hex = 0xaafz ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/integer/invalid-oct.toml0000644000000000000000000000002414567257577022661 0ustar00invalid-oct = 0o778 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/integer/leading-us-bin.toml0000644000000000000000000000002614567257577023250 0ustar00leading-us-bin = _0o1 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3104358 tomlkit-0.12.4/tests/toml-test/tests/invalid/integer/leading-us-hex.toml0000644000000000000000000000002614567257577023264 0ustar00leading-us-hex = _0o1 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/integer/leading-us-oct.toml0000644000000000000000000000002614567257577023265 0ustar00leading-us-oct = _0o1 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/integer/leading-us.toml0000644000000000000000000000002214567257577022476 0ustar00leading-us = _123 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/integer/leading-zero-1.toml0000644000000000000000000000002414567257577023166 0ustar00leading-zero-1 = 01 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/integer/leading-zero-2.toml0000644000000000000000000000002414567257577023167 0ustar00leading-zero-2 = 00 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/integer/leading-zero-sign-1.toml0000644000000000000000000000003214567257577024123 0ustar00leading-zero-sign-1 = -01 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/integer/leading-zero-sign-2.toml0000644000000000000000000000003214567257577024124 0ustar00leading-zero-sign-2 = +01 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/integer/negative-bin.toml0000644000000000000000000000003314567257577023020 0ustar00negative-bin = -0b11010110 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/integer/negative-hex.toml0000644000000000000000000000002514567257577023035 0ustar00negative-hex = -0xff ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/integer/negative-oct.toml0000644000000000000000000000002514567257577023036 0ustar00negative-oct = -0o99 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/integer/positive-bin.toml0000644000000000000000000000003314567257577023060 0ustar00positive-bin = +0b11010110 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/integer/positive-hex.toml0000644000000000000000000000002514567257577023075 0ustar00positive-hex = +0xff ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/integer/positive-oct.toml0000644000000000000000000000002514567257577023076 0ustar00positive-oct = +0o99 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/integer/text-after-integer.toml0000644000000000000000000000004114567257577024165 0ustar00answer = 42 the ultimate answer? ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/integer/trailing-us-bin.toml0000644000000000000000000000002714567257577023457 0ustar00trailing-us-bin = 0b1_ ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/integer/trailing-us-hex.toml0000644000000000000000000000002714567257577023473 0ustar00trailing-us-hex = 0x1_ ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/integer/trailing-us-oct.toml0000644000000000000000000000002714567257577023474 0ustar00trailing-us-oct = 0o1_ ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/integer/trailing-us.toml0000644000000000000000000000002314567257577022705 0ustar00trailing-us = 123_ ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/integer/us-after-bin.toml0000644000000000000000000000002414567257577022744 0ustar00us-after-bin = 0b_1 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/integer/us-after-hex.toml0000644000000000000000000000002414567257577022760 0ustar00us-after-hex = 0x_1 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/integer/us-after-oct.toml0000644000000000000000000000002414567257577022761 0ustar00us-after-oct = 0o_1 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/key/after-array.toml0000644000000000000000000000004014567257577022016 0ustar00[[agencies]] owner = "S Cjelli" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/key/after-table.toml0000644000000000000000000000004414567257577021773 0ustar00[error] this = "should not be here" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/key/after-value.toml0000644000000000000000000000006014567257577022016 0ustar00first = "Tom" last = "Preston-Werner" # INVALID ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/key/bare-invalid-character.toml0000644000000000000000000000001714567257577024074 0ustar00bare!key = 123 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/key/dotted-redefine-table.toml0000644000000000000000000000011414567257577023732 0ustar00# Defined a.b as int a.b = 1 # Tries to access it as table: error a.b.c = 2 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/key/duplicate-keys.toml0000644000000000000000000000003114567257577022524 0ustar00dupe = false dupe = true ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/key/duplicate.toml0000644000000000000000000000005714567257577021563 0ustar00# DO NOT DO THIS name = "Tom" name = "Pradyun" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/key/empty.toml0000644000000000000000000000000514567257577020740 0ustar00 = 1 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/key/escape.toml0000644000000000000000000000005514567257577021047 0ustar00\u00c0 = "latin capital letter A with grave" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/key/hash.toml0000644000000000000000000000000714567257577020527 0ustar00a# = 1 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/key/multiline.toml0000644000000000000000000000002314567257577021604 0ustar00"""long key""" = 1 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/key/newline.toml0000644000000000000000000000002114567257577021241 0ustar00barekey = 123 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/key/no-eol.toml0000644000000000000000000000001414567257577020773 0ustar00a = 1 b = 2 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/key/open-bracket.toml0000644000000000000000000000001114567257577022151 0ustar00[abc = 1 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/key/partial-quoted.toml0000644000000000000000000000002414567257577022536 0ustar00partial"quoted" = 5 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/key/single-open-bracket.toml0000644000000000000000000000000214567257577023430 0ustar00[ ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/key/space.toml0000644000000000000000000000001014567257577020671 0ustar00a b = 1 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/key/special-character.toml0000644000000000000000000000003514567257577023157 0ustar00μ = "greek small letter mu" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/key/start-bracket.toml0000644000000000000000000000002114567257577022346 0ustar00[a] [xyz = 5 [b] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/key/two-equals.toml0000644000000000000000000000001114567257577021700 0ustar00key= = 1 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/key/two-equals2.toml0000644000000000000000000000000514567257577021765 0ustar00a==1 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/key/two-equals3.toml0000644000000000000000000000000614567257577021767 0ustar00a=b=1 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/key/without-value-1.toml0000644000000000000000000000000414567257577022554 0ustar00key ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/key/without-value-2.toml0000644000000000000000000000000714567257577022560 0ustar00key = ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/string/bad-byte-escape.toml0000644000000000000000000000002114567257577023243 0ustar00naughty = "\xAg" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/string/bad-codepoint.toml0000644000000000000000000000012114567257577023027 0ustar00invalid-codepoint = "This string contains a non scalar unicode codepoint \uD801" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/string/bad-concat.toml0000644000000000000000000000003514567257577022316 0ustar00no_concat = "first" "second" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/string/bad-escape.toml0000644000000000000000000000007614567257577022314 0ustar00invalid-escape = "This string has a bad \a escape character." ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/string/bad-multiline.toml0000644000000000000000000000004114567257577023046 0ustar00multi = "first line second line" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/string/bad-slash-escape.toml0000644000000000000000000000007614567257577023424 0ustar00invalid-escape = "This string has a bad \/ escape character." ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/string/bad-uni-esc.toml0000644000000000000000000000001714567257577022412 0ustar00str = "val\ue" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/string/basic-byte-escapes.toml0000644000000000000000000000002014567257577023760 0ustar00answer = "\x33" ././@PaxHeader0000000000000000000000000000021400000000000010212 xustar00112 path=tomlkit-0.12.4/tests/toml-test/tests/invalid/string/basic-multiline-out-of-range-unicode-escape-1.toml 28 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/string/basic-multiline-out-of-range-unicode-escape-1.to0000644000000000000000000000002514567257577030373 0ustar00a = """\UFFFFFFFF""" ././@PaxHeader0000000000000000000000000000021400000000000010212 xustar00112 path=tomlkit-0.12.4/tests/toml-test/tests/invalid/string/basic-multiline-out-of-range-unicode-escape-2.toml 28 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/string/basic-multiline-out-of-range-unicode-escape-2.to0000644000000000000000000000002514567257577030374 0ustar00a = """\U00D80000""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/string/basic-multiline-quotes.toml0000644000000000000000000000006214567257577024722 0ustar00str5 = """Here are three quotation marks: """.""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/string/basic-multiline-unknown-escape.toml0000644000000000000000000000001514567257577026335 0ustar00a = """\@""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/string/basic-out-of-range-unicode-escape-1.toml0000644000000000000000000000002114567257577026720 0ustar00a = "\UFFFFFFFF" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/string/basic-out-of-range-unicode-escape-2.toml0000644000000000000000000000002114567257577026721 0ustar00a = "\U00D80000" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/string/basic-unknown-escape.toml0000644000000000000000000000001114567257577024331 0ustar00a = "\@" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/string/literal-multiline-quotes-1.toml0000644000000000000000000000003614567257577025434 0ustar00a = '''6 apostrophes: '''''' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/string/literal-multiline-quotes-2.toml0000644000000000000000000000005214567257577025433 0ustar00a = '''15 apostrophes: '''''''''''''''''' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/string/missing-quotes.toml0000644000000000000000000000001514567257577023310 0ustar00name = value ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/string/multiline-escape-space.toml0000644000000000000000000000003414567257577024653 0ustar00a = """ foo \ \n bar""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/string/multiline-no-close-2.toml0000644000000000000000000000000614567257577024177 0ustar00x=""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/string/multiline-no-close.toml0000644000000000000000000000004114567257577024037 0ustar00invalid = """ this will fail ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/string/multiline-quotes-1.toml0000644000000000000000000000003014567257577023774 0ustar00a = """6 quotes: """""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/string/multiline-quotes-2.toml0000644000000000000000000000003014567257577023775 0ustar00a = """6 quotes: """""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/string/no-close.toml0000644000000000000000000000005214567257577022041 0ustar00no-ending-quote = "One time, at band camp ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/string/text-after-string.toml0000644000000000000000000000005414567257577023713 0ustar00string = "Is there life after strings?" No. ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/string/wrong-close.toml0000644000000000000000000000004714567257577022565 0ustar00bad-ending-quote = "double and single' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/table/array-empty.toml0000644000000000000000000000003214567257577022353 0ustar00[[]] name = "Born to Run" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/table/array-implicit.toml0000644000000000000000000000115614567257577023037 0ustar00# This test is a bit tricky. It should fail because the first use of # `[[albums.songs]]` without first declaring `albums` implies that `albums` # must be a table. The alternative would be quite weird. Namely, it wouldn't # comply with the TOML spec: "Each double-bracketed sub-table will belong to # the most *recently* defined table element *above* it." # # This is in contrast to the *valid* test, table-array-implicit where # `[[albums.songs]]` works by itself, so long as `[[albums]]` isn't declared # later. (Although, `[albums]` could be.) [[albums.songs]] name = "Glory Days" [[albums]] name = "Born in the USA" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/table/array-missing-bracket.toml0000644000000000000000000000003714567257577024304 0ustar00[[albums] name = "Born to Run" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/table/duplicate-key-table.toml0000644000000000000000000000006314567257577023732 0ustar00[fruit] type = "apple" [fruit.type] apple = "yes" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/table/duplicate-table-array.toml0000644000000000000000000000001614567257577024256 0ustar00[tbl] [[tbl]] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/table/duplicate-table-array2.toml0000644000000000000000000000001614567257577024340 0ustar00[[tbl]] [tbl] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/table/duplicate.toml0000644000000000000000000000002514567257577022055 0ustar00[a] b = 1 [a] c = 2 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/table/empty-implicit-table.toml0000644000000000000000000000002314567257577024134 0ustar00[naughty..naughty] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/table/empty.toml0000644000000000000000000000000314567257577021235 0ustar00[] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/table/equals-sign.toml0000644000000000000000000000001314567257577022330 0ustar00[name=bad] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/table/llbrace.toml0000644000000000000000000000001314567257577021504 0ustar00[ [table]] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/table/nested-brackets-close.toml0000644000000000000000000000001714567257577024265 0ustar00[a]b] zyx = 42 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/table/nested-brackets-open.toml0000644000000000000000000000001714567257577024121 0ustar00[a[b] zyx = 42 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/table/quoted-no-close.toml0000644000000000000000000000004214567257577023120 0ustar00["where will it end] name = value ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/table/redefine.toml0000644000000000000000000000011614567257577021665 0ustar00# Define b as int, and try to use it as a table: error [a] b = 1 [a.b] c = 2 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/table/rrbrace.toml0000644000000000000000000000001314567257577021520 0ustar00[[table] ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/table/text-after-table.toml0000644000000000000000000000003714567257577023256 0ustar00[error] this shouldn't be here ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/table/whitespace.toml0000644000000000000000000000001614567257577022237 0ustar00[invalid key] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/invalid/table/with-pound.toml0000644000000000000000000000003014567257577022175 0ustar00[key#group] answer = 42 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/valid/array/array.json0000644000000000000000000000166414567257577020731 0ustar00{ "comments": [ { "type": "integer", "value": "1" }, { "type": "integer", "value": "2" } ], "dates": [ { "type": "datetime", "value": "1987-07-05T17:45:00Z" }, { "type": "datetime", "value": "1979-05-27T07:32:00Z" }, { "type": "datetime", "value": "2006-06-01T11:00:00Z" } ], "floats": [ { "type": "float", "value": "1.1" }, { "type": "float", "value": "2.1" }, { "type": "float", "value": "3.1" } ], "ints": [ { "type": "integer", "value": "1" }, { "type": "integer", "value": "2" }, { "type": "integer", "value": "3" } ], "strings": [ { "type": "string", "value": "a" }, { "type": "string", "value": "b" }, { "type": "string", "value": "c" } ] } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/valid/array/array.toml0000644000000000000000000000031514567257577020723 0ustar00ints = [1, 2, 3, ] floats = [1.1, 2.1, 3.1] strings = ["a", "b", "c"] dates = [ 1987-07-05T17:45:00Z, 1979-05-27T07:32:00Z, 2006-06-01T11:00:00Z, ] comments = [ 1, 2, #this is ok ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/valid/array/bool.json0000644000000000000000000000020314567257577020532 0ustar00{ "a": [ { "type": "bool", "value": "true" }, { "type": "bool", "value": "false" } ] } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/valid/array/bool.toml0000644000000000000000000000002214567257577020533 0ustar00a = [true, false] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/valid/array/empty.json0000644000000000000000000000012414567257577020737 0ustar00{ "thevoid": [ [ [ [ [] ] ] ] ] } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/valid/array/empty.toml0000644000000000000000000000002514567257577020741 0ustar00thevoid = [[[[[]]]]] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/valid/array/hetergeneous.json0000644000000000000000000000067414567257577022310 0ustar00{ "mixed": [ [ { "type": "integer", "value": "1" }, { "type": "integer", "value": "2" } ], [ { "type": "string", "value": "a" }, { "type": "string", "value": "b" } ], [ { "type": "float", "value": "1.1" }, { "type": "float", "value": "2.1" } ] ] } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/valid/array/hetergeneous.toml0000644000000000000000000000005114567257577022277 0ustar00mixed = [[1, 2], ["a", "b"], [1.1, 2.1]] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/valid/array/mixed-int-array.json0000644000000000000000000000027214567257577022617 0ustar00{ "arrays-and-ints": [ { "type": "integer", "value": "1" }, [ { "type": "string", "value": "Arrays are not integers." } ] ] } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/valid/array/mixed-int-array.toml0000644000000000000000000000006514567257577022621 0ustar00arrays-and-ints = [1, ["Arrays are not integers."]] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/valid/array/mixed-int-float.json0000644000000000000000000000022014567257577022577 0ustar00{ "ints-and-floats": [ { "type": "integer", "value": "1" }, { "type": "float", "value": "1.1" } ] } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/valid/array/mixed-int-float.toml0000644000000000000000000000003314567257577022603 0ustar00ints-and-floats = [1, 1.1] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/valid/array/mixed-int-string.json0000644000000000000000000000022214567257577023002 0ustar00{ "strings-and-ints": [ { "type": "string", "value": "hi" }, { "type": "integer", "value": "42" } ] } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/valid/array/mixed-int-string.toml0000644000000000000000000000003614567257577023007 0ustar00strings-and-ints = ["hi", 42] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/valid/array/mixed-string-table.json0000644000000000000000000000061114567257577023301 0ustar00{ "contributors": [ { "type": "string", "value": "Foo Bar \u003cfoo@example.com\u003e" }, { "email": { "type": "string", "value": "bazqux@example.com" }, "name": { "type": "string", "value": "Baz Qux" }, "url": { "type": "string", "value": "https://example.com/bazqux" } } ] } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/valid/array/mixed-string-table.toml0000644000000000000000000000021314567257577023301 0ustar00contributors = [ "Foo Bar ", { name = "Baz Qux", email = "bazqux@example.com", url = "https://example.com/bazqux" } ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/valid/array/nested-double.json0000644000000000000000000000057614567257577022346 0ustar00{ "nest": [ [ [ { "type": "string", "value": "a" } ], [ { "type": "integer", "value": "1" }, { "type": "integer", "value": "2" }, [ { "type": "integer", "value": "3" } ] ] ] ] } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/valid/array/nested-double.toml0000644000000000000000000000005014567257577022333 0ustar00nest = [ [ ["a"], [1, 2, [3]] ] ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/valid/array/nested-inline-table.json0000644000000000000000000000005314567257577023425 0ustar00{ "a": [ { "b": {} } ] } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/valid/array/nested-inline-table.toml0000644000000000000000000000002314567257577023424 0ustar00a = [ { b = {} } ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/valid/array/nested.json0000644000000000000000000000025314567257577021066 0ustar00{ "nest": [ [ { "type": "string", "value": "a" } ], [ { "type": "string", "value": "b" } ] ] } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/valid/array/nested.toml0000644000000000000000000000002614567257577021066 0ustar00nest = [["a"], ["b"]] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/valid/array/nospaces.json0000644000000000000000000000027614567257577021424 0ustar00{ "ints": [ { "type": "integer", "value": "1" }, { "type": "integer", "value": "2" }, { "type": "integer", "value": "3" } ] } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/valid/array/nospaces.toml0000644000000000000000000000001714567257577021417 0ustar00ints = [1,2,3] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/valid/array/string-quote-comma-2.json0000644000000000000000000000012014567257577023467 0ustar00{ "title": [ { "type": "string", "value": " \", " } ] } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/valid/array/string-quote-comma-2.toml0000644000000000000000000000002414567257577023474 0ustar00title = [ " \", ",] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/valid/array/string-quote-comma.json0000644000000000000000000000024714567257577023342 0ustar00{ "title": [ { "type": "string", "value": "Client: \"XXXX\", Job: XXXX" }, { "type": "string", "value": "Code: XXXX" } ] } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/valid/array/string-quote-comma.toml0000644000000000000000000000007014567257577023336 0ustar00title = [ "Client: \"XXXX\", Job: XXXX", "Code: XXXX" ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/valid/array/string-with-comma.json0000644000000000000000000000024314567257577023154 0ustar00{ "title": [ { "type": "string", "value": "Client: XXXX, Job: XXXX" }, { "type": "string", "value": "Code: XXXX" } ] } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/valid/array/string-with-comma.toml0000644000000000000000000000006414567257577023157 0ustar00title = [ "Client: XXXX, Job: XXXX", "Code: XXXX" ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/valid/array/strings.json0000644000000000000000000000042114567257577021272 0ustar00{ "string_array": [ { "type": "string", "value": "all" }, { "type": "string", "value": "strings" }, { "type": "string", "value": "are the same" }, { "type": "string", "value": "type" } ] } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/valid/array/strings.toml0000644000000000000000000000010314567257577021271 0ustar00string_array = [ "all", 'strings', """are the same""", '''type'''] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/valid/array/table-array-string-backslash.json0000644000000000000000000000015714567257577025247 0ustar00{ "foo": [ { "bar": { "type": "string", "value": "\"{{baz}}\"" } } ] } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/valid/array/table-array-string-backslash.toml0000644000000000000000000000003714567257577025246 0ustar00foo = [ { bar="\"{{baz}}\""} ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/valid/bool/bool.json0000644000000000000000000000016014567257577020351 0ustar00{ "f": { "type": "bool", "value": "false" }, "t": { "type": "bool", "value": "true" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/valid/bool/bool.toml0000644000000000000000000000002314567257577020351 0ustar00t = true f = false ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/valid/comment/at-eof.json0000644000000000000000000000007614567257577021306 0ustar00{ "key": { "type": "string", "value": "value" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/valid/comment/at-eof.toml0000644000000000000000000000012514567257577021303 0ustar00# This is a full-line comment key = "value" # This is a comment at the end of a line ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/valid/comment/at-eof2.json0000644000000000000000000000007614567257577021370 0ustar00{ "key": { "type": "string", "value": "value" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/valid/comment/at-eof2.toml0000644000000000000000000000012514567257577021365 0ustar00# This is a full-line comment key = "value" # This is a comment at the end of a line ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/valid/comment/everywhere.json0000644000000000000000000000050714567257577022317 0ustar00{ "group": { "answer": { "type": "integer", "value": "42" }, "d": { "type": "datetime", "value": "1979-05-27T07:32:12-07:00" }, "more": [ { "type": "integer", "value": "42" }, { "type": "integer", "value": "42" } ] } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/valid/comment/everywhere.toml0000644000000000000000000000105414567257577022317 0ustar00# Top comment. # Top comment. # Top comment. # [no-extraneous-groups-please] [group] # Comment answer = 42 # Comment # no-extraneous-keys-please = 999 # Inbetween comment. more = [ # Comment # What about multiple # comments? # Can you handle it? # # Evil. # Evil. 42, 42, # Comments within arrays are fun. # What about multiple # comments? # Can you handle it? # # Evil. # Evil. # ] Did I fool you? ] # Hopefully not. # Make sure the space between the datetime and "#" isn't lexed. d = 1979-05-27T07:32:12-07:00 # c ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/valid/comment/tricky.json0000644000000000000000000000277114567257577021444 0ustar00{ "hash#tag": { "#!": { "type": "string", "value": "hash bang" }, "arr3": [ { "type": "string", "value": "#" }, { "type": "string", "value": "#" }, { "type": "string", "value": "###" } ], "arr4": [ { "type": "integer", "value": "1" }, { "type": "integer", "value": "2" }, { "type": "integer", "value": "3" }, { "type": "integer", "value": "4" } ], "arr5": [ [ [ [ [ { "type": "string", "value": "#" } ] ] ] ] ], "tbl1": { "#": { "type": "string", "value": "}#" } } }, "section": { "8": { "type": "string", "value": "eight" }, "eleven": { "type": "float", "value": "11.1" }, "five": { "type": "float", "value": "5.5" }, "four": { "type": "string", "value": "# no comment\n# nor this\n#also not comment" }, "one": { "type": "string", "value": "11" }, "six": { "type": "integer", "value": "6" }, "ten": { "type": "float", "value": "1000.0" }, "three": { "type": "string", "value": "#" }, "two": { "type": "string", "value": "22#" } } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/valid/comment/tricky.toml0000644000000000000000000000060114567257577021434 0ustar00[section]#attached comment #[notsection] one = "11"#cmt two = "22#" three = '#' four = """# no comment # nor this #also not comment"""#is_comment five = 5.5#66 six = 6#7 8 = "eight" #nine = 99 ten = 10e2#1 eleven = 1.11e1#23 ["hash#tag"] "#!" = "hash bang" arr3 = [ "#", '#', """###""" ] arr4 = [ 1,# 9, 9, 2#,9 ,#9 3#] ,4] arr5 = [[[[#["#"], ["#"]]]]#] ] tbl1 = { "#" = '}#'}#}} ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/valid/datetime/datetime.json0000644000000000000000000000023714567257577022060 0ustar00{ "lower": { "type": "datetime", "value": "1987-07-05T17:45:00Z" }, "space": { "type": "datetime", "value": "1987-07-05T17:45:00Z" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3144357 tomlkit-0.12.4/tests/toml-test/tests/valid/datetime/datetime.toml0000644000000000000000000000007214567257577022057 0ustar00space = 1987-07-05 17:45:00Z lower = 1987-07-05t17:45:00z ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/datetime/local-date.json0000644000000000000000000000011714567257577022266 0ustar00{ "bestdayever": { "type": "date-local", "value": "1987-07-05" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/datetime/local-date.toml0000644000000000000000000000003114567257577022263 0ustar00bestdayever = 1987-07-05 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/datetime/local-time.json0000644000000000000000000000023514567257577022310 0ustar00{ "besttimeever": { "type": "time-local", "value": "17:45:00" }, "milliseconds": { "type": "time-local", "value": "10:32:00.555" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/datetime/local-time.toml0000644000000000000000000000006414567257577022312 0ustar00besttimeever = 17:45:00 milliseconds = 10:32:00.555 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/datetime/local.json0000644000000000000000000000040014567257577021346 0ustar00{ "local": { "type": "datetime-local", "value": "1987-07-05T17:45:00" }, "milli": { "type": "datetime-local", "value": "1977-12-21T10:32:00.555" }, "space": { "type": "datetime-local", "value": "1987-07-05T17:45:00" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/datetime/local.toml0000644000000000000000000000013014567257577021350 0ustar00local = 1987-07-05T17:45:00 milli = 1977-12-21T10:32:00.555 space = 1987-07-05 17:45:00 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/datetime/milliseconds.json0000644000000000000000000000053714567257577022754 0ustar00{ "utc1": { "type": "datetime", "value": "1987-07-05T17:45:56.123456Z" }, "utc2": { "type": "datetime", "value": "1987-07-05T17:45:56.600000Z" }, "wita1": { "type": "datetime", "value": "1987-07-05T17:45:56.123456+08:00" }, "wita2": { "type": "datetime", "value": "1987-07-05T17:45:56.600000+08:00" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/datetime/milliseconds.toml0000644000000000000000000000022014567257577022743 0ustar00utc1 = 1987-07-05T17:45:56.123456Z utc2 = 1987-07-05T17:45:56.6Z wita1 = 1987-07-05T17:45:56.123456+08:00 wita2 = 1987-07-05T17:45:56.6+08:00 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/datetime/timezone.json0000644000000000000000000000050414567257577022113 0ustar00{ "nzdt": { "type": "datetime", "value": "1987-07-05T17:45:56+13:00" }, "nzst": { "type": "datetime", "value": "1987-07-05T17:45:56+12:00" }, "pdt": { "type": "datetime", "value": "1987-07-05T17:45:56-05:00" }, "utc": { "type": "datetime", "value": "1987-07-05T17:45:56Z" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/datetime/timezone.toml0000644000000000000000000000020614567257577022114 0ustar00utc = 1987-07-05T17:45:56Z pdt = 1987-07-05T17:45:56-05:00 nzst = 1987-07-05T17:45:56+12:00 nzdt = 1987-07-05T17:45:56+13:00 # DST ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/empty-file.json0000644000000000000000000000000314567257577020532 0ustar00{} ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/empty-file.toml0000644000000000000000000000000014567257577020531 0ustar00././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/example.json0000644000000000000000000000062214567257577020121 0ustar00{ "best-day-ever": { "type": "datetime", "value": "1987-07-05T17:45:00Z" }, "numtheory": { "boring": { "type": "bool", "value": "false" }, "perfection": [ { "type": "integer", "value": "6" }, { "type": "integer", "value": "28" }, { "type": "integer", "value": "496" } ] } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/example.toml0000644000000000000000000000013314567257577020120 0ustar00best-day-ever = 1987-07-05T17:45:00Z [numtheory] boring = false perfection = [6, 28, 496] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/float/exponent.json0000644000000000000000000000075114567257577021436 0ustar00{ "lower": { "type": "float", "value": "300.0" }, "minustenth": { "type": "float", "value": "-0.1" }, "neg": { "type": "float", "value": "0.03" }, "pointlower": { "type": "float", "value": "310.0" }, "pointupper": { "type": "float", "value": "310.0" }, "pos": { "type": "float", "value": "300.0" }, "upper": { "type": "float", "value": "300.0" }, "zero": { "type": "float", "value": "3.0" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/float/exponent.toml0000644000000000000000000000016214567257577021434 0ustar00lower = 3e2 upper = 3E2 neg = 3e-2 pos = 3E+2 zero = 3e0 pointlower = 3.1e2 pointupper = 3.1E2 minustenth = -1E-1 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/float/float.json0000644000000000000000000000036514567257577020704 0ustar00{ "negpi": { "type": "float", "value": "-3.14" }, "pi": { "type": "float", "value": "3.14" }, "pospi": { "type": "float", "value": "3.14" }, "zero-intpart": { "type": "float", "value": "0.123" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/float/float.toml0000644000000000000000000000007314567257577020702 0ustar00pi = 3.14 pospi = +3.14 negpi = -3.14 zero-intpart = 0.123 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/float/inf-and-nan.json0000644000000000000000000000056614567257577021670 0ustar00{ "infinity": { "type": "float", "value": "inf" }, "infinity_neg": { "type": "float", "value": "-inf" }, "infinity_plus": { "type": "float", "value": "+inf" }, "nan": { "type": "float", "value": "nan" }, "nan_neg": { "type": "float", "value": "nan" }, "nan_plus": { "type": "float", "value": "nan" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/float/inf-and-nan.toml0000644000000000000000000000035014567257577021661 0ustar00# We don't encode +nan and -nan back with the signs; many languages don't # support a sign on NaN (it doesn't really make much sense). nan = nan nan_neg = -nan nan_plus = +nan infinity = inf infinity_neg = -inf infinity_plus = +inf ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/float/long.json0000644000000000000000000000023114567257577020526 0ustar00{ "longpi": { "type": "float", "value": "3.141592653589793" }, "neglongpi": { "type": "float", "value": "-3.141592653589793" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/float/long.toml0000644000000000000000000000007214567257577020533 0ustar00longpi = 3.141592653589793 neglongpi = -3.141592653589793 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/float/underscore.json0000644000000000000000000000030414567257577021741 0ustar00{ "after": { "type": "float", "value": "3141.5927" }, "before": { "type": "float", "value": "3141.5927" }, "exponent": { "type": "float", "value": "3.0e14" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/float/underscore.toml0000644000000000000000000000007014567257577021743 0ustar00before = 3_141.5927 after = 3141.592_7 exponent = 3e1_4 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/float/zero.json0000644000000000000000000000056614567257577020561 0ustar00{ "f1": { "type": "float", "value": "0" }, "f2": { "type": "float", "value": "0" }, "f3": { "type": "float", "value": "0" }, "f4": { "type": "float", "value": "0" }, "f5": { "type": "float", "value": "0" }, "f6": { "type": "float", "value": "0" }, "f7": { "type": "float", "value": "0" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/float/zero.toml0000644000000000000000000000010414567257577020547 0ustar00f1 = 0.0 f2 = +0.0 f3 = -0.0 f4 = 0e0 f5 = 0e00 f6 = +0e0 f7 = -0e0 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/implicit-and-explicit-after.json0000644000000000000000000000031614567257577023756 0ustar00{ "a": { "b": { "c": { "answer": { "type": "integer", "value": "42" } } }, "better": { "type": "integer", "value": "43" } } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/implicit-and-explicit-after.toml0000644000000000000000000000004514567257577023757 0ustar00[a.b.c] answer = 42 [a] better = 43 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/implicit-and-explicit-before.json0000644000000000000000000000031614567257577024117 0ustar00{ "a": { "b": { "c": { "answer": { "type": "integer", "value": "42" } } }, "better": { "type": "integer", "value": "43" } } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/implicit-and-explicit-before.toml0000644000000000000000000000004514567257577024120 0ustar00[a] better = 43 [a.b.c] answer = 42 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/implicit-groups.json0000644000000000000000000000021214567257577021610 0ustar00{ "a": { "b": { "c": { "answer": { "type": "integer", "value": "42" } } } } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/implicit-groups.toml0000644000000000000000000000002414567257577021613 0ustar00[a.b.c] answer = 42 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/inline-table/array.json0000644000000000000000000000104714567257577022151 0ustar00{ "people": [ { "first_name": { "type": "string", "value": "Bruce" }, "last_name": { "type": "string", "value": "Springsteen" } }, { "first_name": { "type": "string", "value": "Eric" }, "last_name": { "type": "string", "value": "Clapton" } }, { "first_name": { "type": "string", "value": "Bob" }, "last_name": { "type": "string", "value": "Seger" } } ] } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/inline-table/array.toml0000644000000000000000000000025214567257577022150 0ustar00people = [{first_name = "Bruce", last_name = "Springsteen"}, {first_name = "Eric", last_name = "Clapton"}, {first_name = "Bob", last_name = "Seger"}] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/inline-table/bool.json0000644000000000000000000000021514567257577021762 0ustar00{ "a": { "a": { "type": "bool", "value": "true" }, "b": { "type": "bool", "value": "false" } } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/inline-table/bool.toml0000644000000000000000000000003214567257577021761 0ustar00a = {a = true, b = false} ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/inline-table/empty.json0000644000000000000000000000056314567257577022173 0ustar00{ "empty1": {}, "empty2": {}, "empty_in_array": [ { "not_empty": { "type": "integer", "value": "1" } }, {} ], "empty_in_array2": [ {}, { "not_empty": { "type": "integer", "value": "1" } } ], "many_empty": [ {}, {}, {} ], "nested_empty": { "empty": {} } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/inline-table/empty.toml0000644000000000000000000000023514567257577022171 0ustar00empty1 = {} empty2 = { } empty_in_array = [ { not_empty = 1 }, {} ] empty_in_array2 = [{},{not_empty=1}] many_empty = [{},{},{}] nested_empty = {"empty"={}} ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/inline-table/end-in-bool.json0000644000000000000000000000037314567257577023137 0ustar00{ "black": { "allow_prereleases": { "type": "bool", "value": "true" }, "python": { "type": "string", "value": "\u003e3.6" }, "version": { "type": "string", "value": "\u003e=18.9b0" } } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/inline-table/end-in-bool.toml0000644000000000000000000000010614567257577023133 0ustar00black = { python=">3.6", version=">=18.9b0", allow_prereleases=true } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/inline-table/inline-table.json0000644000000000000000000000121414567257577023372 0ustar00{ "name": { "first": { "type": "string", "value": "Tom" }, "last": { "type": "string", "value": "Preston-Werner" } }, "point": { "x": { "type": "integer", "value": "1" }, "y": { "type": "integer", "value": "2" } }, "simple": { "a": { "type": "integer", "value": "1" } }, "str-key": { "a": { "type": "integer", "value": "1" } }, "table-array": [ { "a": { "type": "integer", "value": "1" } }, { "b": { "type": "integer", "value": "2" } } ] } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/inline-table/inline-table.toml0000644000000000000000000000023514567257577023376 0ustar00name = { first = "Tom", last = "Preston-Werner" } point = { x = 1, y = 2 } simple = { a = 1 } str-key = { "a" = 1 } table-array = [{ "a" = 1 }, { "b" = 2 }] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/inline-table/key-dotted.json0000644000000000000000000000402714567257577023105 0ustar00{ "a": { "a": { "b": { "type": "integer", "value": "1" } } }, "arr": [ { "T": { "a": { "b": { "type": "integer", "value": "1" } } }, "t": { "a": { "b": { "type": "integer", "value": "1" } } } }, { "T": { "a": { "b": { "type": "integer", "value": "2" } } }, "t": { "a": { "b": { "type": "integer", "value": "2" } } } } ], "b": { "a": { "b": { "type": "integer", "value": "1" } } }, "c": { "a": { "b": { "type": "integer", "value": "1" } } }, "d": { "a": { "b": { "type": "integer", "value": "1" } } }, "e": { "a": { "b": { "type": "integer", "value": "1" } } }, "inline": { "a": { "b": { "type": "integer", "value": "42" } } }, "many": { "dots": { "here": { "dot": { "dot": { "dot": { "a": { "b": { "c": { "type": "integer", "value": "1" }, "d": { "type": "integer", "value": "2" } } } } } } } } }, "tbl": { "a": { "b": { "c": { "d": { "e": { "type": "integer", "value": "1" } } } } }, "x": { "a": { "b": { "c": { "d": { "e": { "type": "integer", "value": "1" } } } } } } } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/inline-table/key-dotted.toml0000644000000000000000000000046414567257577023110 0ustar00inline = {a.b = 42} many.dots.here.dot.dot.dot = {a.b.c = 1, a.b.d = 2} a = { a.b = 1 } b = { "a"."b" = 1 } c = { a . b = 1 } d = { 'a' . "b" = 1 } e = {a.b=1} [tbl] a.b.c = {d.e=1} [tbl.x] a.b.c = {d.e=1} [[arr]] t = {a.b=1} T = {a.b=1} [[arr]] t = {a.b=2} T = {a.b=2} ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/inline-table/multiline.json0000644000000000000000000000046014567257577023033 0ustar00{ "tbl_multiline": { "a": { "type": "integer", "value": "1" }, "b": { "type": "string", "value": "multiline\n" }, "c": { "type": "string", "value": "and yet\nanother line" }, "d": { "type": "integer", "value": "4" } } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/inline-table/multiline.toml0000644000000000000000000000013014567257577023027 0ustar00tbl_multiline = { a = 1, b = """ multiline """, c = """and yet another line""", d = 4 } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/inline-table/nest.json0000644000000000000000000000152714567257577022007 0ustar00{ "arr_arr_tbl_empty": [ [ {} ] ], "arr_arr_tbl_val": [ [ { "one": { "type": "integer", "value": "1" } } ] ], "arr_arr_tbls": [ [ { "one": { "type": "integer", "value": "1" } }, { "two": { "type": "integer", "value": "2" } } ] ], "arr_tbl_tbl": [ { "tbl": { "one": { "type": "integer", "value": "1" } } } ], "tbl_arr_tbl": { "arr_tbl": [ { "one": { "type": "integer", "value": "1" } } ] }, "tbl_tbl_empty": { "tbl_0": {} }, "tbl_tbl_val": { "tbl_1": { "one": { "type": "integer", "value": "1" } } } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/inline-table/nest.toml0000644000000000000000000000056414567257577022011 0ustar00tbl_tbl_empty = { tbl_0 = {} } tbl_tbl_val = { tbl_1 = { one = 1 } } tbl_arr_tbl = { arr_tbl = [ { one = 1 } ] } arr_tbl_tbl = [ { tbl = { one = 1 } } ] # Array-of-array-of-table is interesting because it can only # be represented in inline form. arr_arr_tbl_empty = [ [ {} ] ] arr_arr_tbl_val = [ [ { one = 1 } ] ] arr_arr_tbls = [ [ { one = 1 }, { two = 2 } ] ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/integer/integer.json0000644000000000000000000000036714567257577021566 0ustar00{ "answer": { "type": "integer", "value": "42" }, "neganswer": { "type": "integer", "value": "-42" }, "posanswer": { "type": "integer", "value": "42" }, "zero": { "type": "integer", "value": "0" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/integer/integer.toml0000644000000000000000000000006514567257577021563 0ustar00answer = 42 posanswer = +42 neganswer = -42 zero = 0 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/integer/literals.json0000644000000000000000000000105514567257577021743 0ustar00{ "bin1": { "type": "integer", "value": "214" }, "bin2": { "type": "integer", "value": "5" }, "hex1": { "type": "integer", "value": "3735928559" }, "hex2": { "type": "integer", "value": "3735928559" }, "hex3": { "type": "integer", "value": "3735928559" }, "hex4": { "type": "integer", "value": "2439" }, "oct1": { "type": "integer", "value": "342391" }, "oct2": { "type": "integer", "value": "493" }, "oct3": { "type": "integer", "value": "501" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/integer/literals.toml0000644000000000000000000000022714567257577021745 0ustar00bin1 = 0b11010110 bin2 = 0b1_0_1 oct1 = 0o01234567 oct2 = 0o755 oct3 = 0o7_6_5 hex1 = 0xDEADBEEF hex2 = 0xdeadbeef hex3 = 0xdead_beef hex4 = 0x00987 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/integer/long.json0000644000000000000000000000025014567257577021057 0ustar00{ "int64-max": { "type": "integer", "value": "9223372036854775807" }, "int64-max-neg": { "type": "integer", "value": "-9223372036854775808" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/integer/long.toml0000644000000000000000000000010514567257577021060 0ustar00int64-max = 9223372036854775807 int64-max-neg = -9223372036854775808 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/integer/underscore.json0000644000000000000000000000017014567257577022272 0ustar00{ "kilo": { "type": "integer", "value": "1000" }, "x": { "type": "integer", "value": "1111" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/integer/underscore.toml0000644000000000000000000000003114567257577022270 0ustar00kilo = 1_000 x = 1_1_1_1 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/integer/zero.json0000644000000000000000000000122714567257577021104 0ustar00{ "a2": { "type": "integer", "value": "0" }, "a3": { "type": "integer", "value": "0" }, "b1": { "type": "integer", "value": "0" }, "b2": { "type": "integer", "value": "0" }, "b3": { "type": "integer", "value": "0" }, "d1": { "type": "integer", "value": "0" }, "d2": { "type": "integer", "value": "0" }, "d3": { "type": "integer", "value": "0" }, "h1": { "type": "integer", "value": "0" }, "h2": { "type": "integer", "value": "0" }, "h3": { "type": "integer", "value": "0" }, "o1": { "type": "integer", "value": "0" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/integer/zero.toml0000644000000000000000000000017214567257577021104 0ustar00d1 = 0 d2 = +0 d3 = -0 h1 = 0x0 h2 = 0x00 h3 = 0x00000 o1 = 0o0 a2 = 0o00 a3 = 0o00000 b1 = 0b0 b2 = 0b00 b3 = 0b00000 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/key/alphanum.json0000644000000000000000000000123014567257577021057 0ustar00{ "000111": { "type": "string", "value": "leading" }, "10e3": { "type": "string", "value": "false float" }, "123": { "type": "string", "value": "num" }, "2018_10": { "001": { "type": "integer", "value": "1" } }, "34-11": { "type": "integer", "value": "23" }, "a-a-a": { "_": { "type": "bool", "value": "false" } }, "alpha": { "type": "string", "value": "a" }, "one1two2": { "type": "string", "value": "mixed" }, "under_score": { "type": "string", "value": "___" }, "with-dash": { "type": "string", "value": "dashed" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/key/alphanum.toml0000644000000000000000000000025514567257577021067 0ustar00alpha = "a" 123 = "num" 000111 = "leading" 10e3 = "false float" one1two2 = "mixed" with-dash = "dashed" under_score = "___" 34-11 = 23 [2018_10] 001 = 1 [a-a-a] _ = false ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/key/case-sensitive.json0000644000000000000000000000117114567257577022200 0ustar00{ "Section": { "M": { "type": "string", "value": "latin letter M" }, "name": { "type": "string", "value": "different section!!" }, "Μ": { "type": "string", "value": "greek capital letter MU" }, "μ": { "type": "string", "value": "greek small letter mu" } }, "sectioN": { "type": "string", "value": "NN" }, "section": { "NAME": { "type": "string", "value": "upper" }, "Name": { "type": "string", "value": "capitalized" }, "name": { "type": "string", "value": "lower" } } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/key/case-sensitive.toml0000644000000000000000000000031314567257577022177 0ustar00sectioN = "NN" [section] name = "lower" NAME = "upper" Name = "capitalized" [Section] name = "different section!!" "μ" = "greek small letter mu" "Μ" = "greek capital letter MU" M = "latin letter M" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/key/dotted.json0000644000000000000000000000374114567257577020546 0ustar00{ "a": { "few": { "dots": { "polka": { "dance-with": { "type": "string", "value": "Dot" }, "dot": { "type": "string", "value": "again?" } } } } }, "arr": [ { "a": { "b": { "c": { "type": "integer", "value": "1" }, "d": { "type": "integer", "value": "2" } } } }, { "a": { "b": { "c": { "type": "integer", "value": "3" }, "d": { "type": "integer", "value": "4" } } } } ], "count": { "a": { "type": "integer", "value": "1" }, "b": { "type": "integer", "value": "2" }, "c": { "type": "integer", "value": "3" }, "d": { "type": "integer", "value": "4" }, "e": { "type": "integer", "value": "5" }, "f": { "type": "integer", "value": "6" }, "g": { "type": "integer", "value": "7" }, "h": { "type": "integer", "value": "8" }, "i": { "type": "integer", "value": "9" }, "j": { "type": "integer", "value": "10" }, "k": { "type": "integer", "value": "11" }, "l": { "type": "integer", "value": "12" } }, "many": { "dots": { "here": { "dot": { "dot": { "dot": { "type": "integer", "value": "42" } } } } } }, "name": { "first": { "type": "string", "value": "Arthur" }, "last": { "type": "string", "value": "Dent" } }, "tbl": { "a": { "b": { "c": { "type": "float", "value": "42.666" } } } } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/key/dotted.toml0000644000000000000000000000102714567257577020543 0ustar00# Note: this file contains literal tab characters. name.first = "Arthur" "name".'last' = "Dent" many.dots.here.dot.dot.dot = 42 # Space are ignored, and key parts can be quoted. count.a = 1 count . b = 2 "count"."c" = 3 "count" . "d" = 4 'count'.'e' = 5 'count' . 'f' = 6 "count".'g' = 7 "count" . 'h' = 8 count.'i' = 9 count . 'j' = 10 "count".k = 11 "count" . l = 12 [tbl] a.b.c = 42.666 [a.few.dots] polka.dot = "again?" polka.dance-with = "Dot" [[arr]] a.b.c=1 a.b.d=2 [[arr]] a.b.c=3 a.b.d=4 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/key/empty.json0000644000000000000000000000007314567257577020414 0ustar00{ "": { "type": "string", "value": "blank" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/key/empty.toml0000644000000000000000000000001514567257577020412 0ustar00"" = "blank" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/key/equals-nospace.json0000644000000000000000000000007714567257577022202 0ustar00{ "answer": { "type": "integer", "value": "42" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/key/equals-nospace.toml0000644000000000000000000000001214567257577022171 0ustar00answer=42 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/key/escapes.json0000644000000000000000000000054714567257577020707 0ustar00{ "\n": { "type": "string", "value": "newline" }, "\"": { "type": "string", "value": "just a quote" }, "\"quoted\"": { "quote": { "type": "bool", "value": "true" } }, "a.b": { "À": {} }, "backsp\u0008\u0008": {}, "À": { "type": "string", "value": "latin capital letter A with grave" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/key/escapes.toml0000644000000000000000000000022514567257577020702 0ustar00"\n" = "newline" "\u00c0" = "latin capital letter A with grave" "\"" = "just a quote" ["backsp\b\b"] ["\"quoted\""] quote = true ["a.b"."\u00c0"] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/key/numeric-dotted.json0000644000000000000000000000011614567257577022177 0ustar00{ "1": { "2": { "type": "integer", "value": "3" } } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/key/numeric-dotted.toml0000644000000000000000000000001014567257577022172 0ustar001.2 = 3 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/key/numeric.json0000644000000000000000000000007114567257577020716 0ustar00{ "1": { "type": "integer", "value": "1" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/key/numeric.toml0000644000000000000000000000000614567257577020716 0ustar001 = 1 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/key/quoted-dots.json0000644000000000000000000000073414567257577021532 0ustar00{ "plain": { "type": "integer", "value": "1" }, "plain_table": { "plain": { "type": "integer", "value": "3" }, "with.dot": { "type": "integer", "value": "4" } }, "table": { "withdot": { "key.with.dots": { "type": "integer", "value": "6" }, "plain": { "type": "integer", "value": "5" } } }, "with.dot": { "type": "integer", "value": "2" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/key/quoted-dots.toml0000644000000000000000000000016014567257577021525 0ustar00plain = 1 "with.dot" = 2 [plain_table] plain = 3 "with.dot" = 4 [table.withdot] plain = 5 "key.with.dots" = 6 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/key/space.json0000644000000000000000000000007314567257577020351 0ustar00{ "a b": { "type": "integer", "value": "1" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/key/space.toml0000644000000000000000000000001214567257577020344 0ustar00"a b" = 1 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/key/special-chars.json0000644000000000000000000000015214567257577021772 0ustar00{ "~!@$^\u0026*()_+-`1234567890[]|/?\u003e\u003c.,;:'": { "type": "integer", "value": "1" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/key/special-chars.toml0000644000000000000000000000005214567257577021773 0ustar00"~!@$^&*()_+-`1234567890[]|/?><.,;:'" = 1 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/key/special-word.json0000644000000000000000000000040514567257577021646 0ustar00{ "false": { "type": "bool", "value": "false" }, "inf": { "type": "integer", "value": "100000000" }, "nan": { "type": "string", "value": "ceci n'est pas un nombre" }, "true": { "type": "integer", "value": "1" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/key/special-word.toml0000644000000000000000000000011114567257577021642 0ustar00false = false true = 1 inf = 100000000 nan = "ceci n'est pas un nombre" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/newline-crlf.json0000644000000000000000000000017114567257577021052 0ustar00{ "newline": { "type": "string", "value": "crlf" }, "os": { "type": "string", "value": "DOS" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/newline-crlf.toml0000644000000000000000000000003614567257577021054 0ustar00os = "DOS" newline = "crlf" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/newline-lf.json0000644000000000000000000000017014567257577020524 0ustar00{ "newline": { "type": "string", "value": "lf" }, "os": { "type": "string", "value": "unix" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/newline-lf.toml0000644000000000000000000000003314567257577020524 0ustar00os = "unix" newline = "lf" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/spec-example-1-compact.json0000644000000000000000000000311314567257577022631 0ustar00{ "clients": { "data": [ [ { "type": "string", "value": "gamma" }, { "type": "string", "value": "delta" } ], [ { "type": "integer", "value": "1" }, { "type": "integer", "value": "2" } ] ], "hosts": [ { "type": "string", "value": "alpha" }, { "type": "string", "value": "omega" } ] }, "database": { "connection_max": { "type": "integer", "value": "5000" }, "enabled": { "type": "bool", "value": "true" }, "ports": [ { "type": "integer", "value": "8001" }, { "type": "integer", "value": "8001" }, { "type": "integer", "value": "8002" } ], "server": { "type": "string", "value": "192.168.1.1" } }, "owner": { "dob": { "type": "datetime", "value": "1979-05-27T07:32:00-08:00" }, "name": { "type": "string", "value": "Lance Uppercut" } }, "servers": { "alpha": { "dc": { "type": "string", "value": "eqdc10" }, "ip": { "type": "string", "value": "10.0.0.1" } }, "beta": { "dc": { "type": "string", "value": "eqdc10" }, "ip": { "type": "string", "value": "10.0.0.2" } } }, "title": { "type": "string", "value": "TOML Example" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/spec-example-1-compact.toml0000644000000000000000000000057014567257577022637 0ustar00#Useless spaces eliminated. title="TOML Example" [owner] name="Lance Uppercut" dob=1979-05-27T07:32:00-08:00#First class dates [database] server="192.168.1.1" ports=[8001,8001,8002] connection_max=5000 enabled=true [servers] [servers.alpha] ip="10.0.0.1" dc="eqdc10" [servers.beta] ip="10.0.0.2" dc="eqdc10" [clients] data=[["gamma","delta"],[1,2]] hosts=[ "alpha", "omega" ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/spec-example-1.json0000644000000000000000000000311314567257577021205 0ustar00{ "clients": { "data": [ [ { "type": "string", "value": "gamma" }, { "type": "string", "value": "delta" } ], [ { "type": "integer", "value": "1" }, { "type": "integer", "value": "2" } ] ], "hosts": [ { "type": "string", "value": "alpha" }, { "type": "string", "value": "omega" } ] }, "database": { "connection_max": { "type": "integer", "value": "5000" }, "enabled": { "type": "bool", "value": "true" }, "ports": [ { "type": "integer", "value": "8001" }, { "type": "integer", "value": "8001" }, { "type": "integer", "value": "8002" } ], "server": { "type": "string", "value": "192.168.1.1" } }, "owner": { "dob": { "type": "datetime", "value": "1979-05-27T07:32:00-08:00" }, "name": { "type": "string", "value": "Lance Uppercut" } }, "servers": { "alpha": { "dc": { "type": "string", "value": "eqdc10" }, "ip": { "type": "string", "value": "10.0.0.1" } }, "beta": { "dc": { "type": "string", "value": "eqdc10" }, "ip": { "type": "string", "value": "10.0.0.2" } } }, "title": { "type": "string", "value": "TOML Example" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/spec-example-1.toml0000644000000000000000000000105714567257577021214 0ustar00# This is a TOML document. Boom. title = "TOML Example" [owner] name = "Lance Uppercut" dob = 1979-05-27T07:32:00-08:00 # First class dates? Why not? [database] server = "192.168.1.1" ports = [ 8001, 8001, 8002 ] connection_max = 5000 enabled = true [servers] # You can indent as you please. Tabs or spaces. TOML don't care. [servers.alpha] ip = "10.0.0.1" dc = "eqdc10" [servers.beta] ip = "10.0.0.2" dc = "eqdc10" [clients] data = [ ["gamma", "delta"], [1, 2] ] # Line breaks are OK when inside arrays hosts = [ "alpha", "omega" ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/string/double-quote-escape.json0000644000000000000000000000010114567257577023627 0ustar00{ "test": { "type": "string", "value": "\"one\"" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/string/double-quote-escape.toml0000644000000000000000000000002114567257577023632 0ustar00test = "\"one\"" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/string/empty.json0000644000000000000000000000007414567257577021133 0ustar00{ "answer": { "type": "string", "value": "" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/string/empty.toml0000644000000000000000000000001414567257577021127 0ustar00answer = "" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/string/escape-tricky.json0000644000000000000000000000115514567257577022541 0ustar00{ "end_esc": { "type": "string", "value": "String does not end here\" but ends here\\" }, "lit_end_esc": { "type": "string", "value": "String ends here\\" }, "lit_multiline_end": { "type": "string", "value": "There is no escape\\" }, "lit_multiline_not_unicode": { "type": "string", "value": "\\u007f" }, "multiline_end_esc": { "type": "string", "value": "When will it end? \"\"\"...\"\"\" should be here\"" }, "multiline_not_unicode": { "type": "string", "value": "\\u0041" }, "multiline_unicode": { "type": "string", "value": " " } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/string/escape-tricky.toml0000644000000000000000000000051014567257577022535 0ustar00end_esc = "String does not end here\" but ends here\\" lit_end_esc = 'String ends here\' multiline_unicode = """ \u00a0""" multiline_not_unicode = """ \\u0041""" multiline_end_esc = """When will it end? \"""...""\" should be here\"""" lit_multiline_not_unicode = ''' \u007f''' lit_multiline_end = '''There is no escape\''' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/string/escaped-escape.json0000644000000000000000000000010114567257577022626 0ustar00{ "answer": { "type": "string", "value": "\\x64" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/string/escaped-escape.toml0000644000000000000000000000002114567257577022631 0ustar00answer = "\\x64" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/string/escapes.json0000644000000000000000000000251114567257577021416 0ustar00{ "backslash": { "type": "string", "value": "This string has a \\ backslash character." }, "backspace": { "type": "string", "value": "This string has a \u0008 backspace character." }, "carriage": { "type": "string", "value": "This string has a \r carriage return character." }, "delete": { "type": "string", "value": "This string has a  delete control code." }, "formfeed": { "type": "string", "value": "This string has a \u000c form feed character." }, "newline": { "type": "string", "value": "This string has a \n new line character." }, "notunicode1": { "type": "string", "value": "This string does not have a unicode \\u escape." }, "notunicode2": { "type": "string", "value": "This string does not have a unicode \\u escape." }, "notunicode3": { "type": "string", "value": "This string does not have a unicode \\u0075 escape." }, "notunicode4": { "type": "string", "value": "This string does not have a unicode \\u escape." }, "quote": { "type": "string", "value": "This string has a \" quote character." }, "tab": { "type": "string", "value": "This string has a \t tab character." }, "unitseparator": { "type": "string", "value": "This string has a \u001f unit separator control code." } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/string/escapes.toml0000644000000000000000000000140314567257577021417 0ustar00backspace = "This string has a \b backspace character." tab = "This string has a \t tab character." newline = "This string has a \n new line character." formfeed = "This string has a \f form feed character." carriage = "This string has a \r carriage return character." quote = "This string has a \" quote character." backslash = "This string has a \\ backslash character." notunicode1 = "This string does not have a unicode \\u escape." notunicode2 = "This string does not have a unicode \u005Cu escape." notunicode3 = "This string does not have a unicode \\u0075 escape." notunicode4 = "This string does not have a unicode \\\u0075 escape." delete = "This string has a \u007F delete control code." unitseparator = "This string has a \u001F unit separator control code." ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/string/multiline-json0000644000000000000000000000205714567257577022001 0ustar00{ "equivalent_one": { "type": "string", "value": "The quick brown fox jumps over the lazy dog." }, "equivalent_three": { "type": "string", "value": "The quick brown fox jumps over the lazy dog." }, "equivalent_two": { "type": "string", "value": "The quick brown fox jumps over the lazy dog." }, "escape-bs-1": { "type": "string", "value": "a \\\nb" }, "escape-bs-2": { "type": "string", "value": "a \\b" }, "escape-bs-3": { "type": "string", "value": "a \\\\\n b" }, "keep-ws-before": { "type": "string", "value": "a \tb" }, "multiline_empty_four": { "type": "string", "value": "" }, "multiline_empty_one": { "type": "string", "value": "" }, "multiline_empty_three": { "type": "string", "value": "" }, "multiline_empty_two": { "type": "string", "value": "" }, "no-space": { "type": "string", "value": "ab" }, "whitespace-after-bs": { "type": "string", "value": "The quick brown fox jumps over the lazy dog." } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/string/multiline-quotes.json0000644000000000000000000000134014567257577023312 0ustar00{ "lit_one": { "type": "string", "value": "'one quote'" }, "lit_one_space": { "type": "string", "value": " 'one quote' " }, "lit_two": { "type": "string", "value": "''two quotes''" }, "lit_two_space": { "type": "string", "value": " ''two quotes'' " }, "mismatch1": { "type": "string", "value": "aaa'''bbb" }, "mismatch2": { "type": "string", "value": "aaa\"\"\"bbb" }, "one": { "type": "string", "value": "\"one quote\"" }, "one_space": { "type": "string", "value": " \"one quote\" " }, "two": { "type": "string", "value": "\"\"two quotes\"\"" }, "two_space": { "type": "string", "value": " \"\"two quotes\"\" " } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/string/multiline-quotes.toml0000644000000000000000000000070014567257577023313 0ustar00# Make sure that quotes inside multiline strings are allowed, including right # after the opening '''/""" and before the closing '''/""" lit_one = ''''one quote'''' lit_two = '''''two quotes''''' lit_one_space = ''' 'one quote' ''' lit_two_space = ''' ''two quotes'' ''' one = """"one quote"""" two = """""two quotes""""" one_space = """ "one quote" """ two_space = """ ""two quotes"" """ mismatch1 = """aaa'''bbb""" mismatch2 = '''aaa"""bbb''' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/string/multiline-toml0000644000000000000000000000131714567257577022001 0ustar00# NOTE: this file includes some literal tab characters. multiline_empty_one = """""" multiline_empty_two = """ """ multiline_empty_three = """\ """ multiline_empty_four = """\ \ \ """ equivalent_one = "The quick brown fox jumps over the lazy dog." equivalent_two = """ The quick brown \ fox jumps over \ the lazy dog.""" equivalent_three = """\ The quick brown \ fox jumps over \ the lazy dog.\ """ whitespace-after-bs = """\ The quick brown \ fox jumps over \ the lazy dog.\ """ no-space = """a\ b""" keep-ws-before = """a \ b""" escape-bs-1 = """a \\ b""" escape-bs-2 = """a \\\ b""" escape-bs-3 = """a \\\\ b""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/string/nl.json0000644000000000000000000000052114567257577020403 0ustar00{ "lit_nl_end": { "type": "string", "value": "value\\n" }, "lit_nl_mid": { "type": "string", "value": "val\\nue" }, "lit_nl_uni": { "type": "string", "value": "val\\ue" }, "nl_end": { "type": "string", "value": "value\n" }, "nl_mid": { "type": "string", "value": "val\nue" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/string/nl.toml0000644000000000000000000000016314567257577020407 0ustar00nl_mid = "val\nue" nl_end = """value\n""" lit_nl_end = '''value\n''' lit_nl_mid = 'val\nue' lit_nl_uni = 'val\ue' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/string/raw-multiline.json0000644000000000000000000000050314567257577022563 0ustar00{ "firstnl": { "type": "string", "value": "This string has a ' quote character." }, "multiline": { "type": "string", "value": "This string\nhas ' a quote character\nand more than\none newline\nin it." }, "oneline": { "type": "string", "value": "This string has a ' quote character." } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/string/raw-multiline.toml0000644000000000000000000000030314567257577022563 0ustar00oneline = '''This string has a ' quote character.''' firstnl = ''' This string has a ' quote character.''' multiline = ''' This string has ' a quote character and more than one newline in it.''' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/string/raw.json0000644000000000000000000000127314567257577020570 0ustar00{ "backslash": { "type": "string", "value": "This string has a \\\\ backslash character." }, "backspace": { "type": "string", "value": "This string has a \\b backspace character." }, "carriage": { "type": "string", "value": "This string has a \\r carriage return character." }, "formfeed": { "type": "string", "value": "This string has a \\f form feed character." }, "newline": { "type": "string", "value": "This string has a \\n new line character." }, "slash": { "type": "string", "value": "This string has a \\/ slash character." }, "tab": { "type": "string", "value": "This string has a \\t tab character." } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/string/raw.toml0000644000000000000000000000056514567257577020575 0ustar00backspace = 'This string has a \b backspace character.' tab = 'This string has a \t tab character.' newline = 'This string has a \n new line character.' formfeed = 'This string has a \f form feed character.' carriage = 'This string has a \r carriage return character.' slash = 'This string has a \/ slash character.' backslash = 'This string has a \\ backslash character.' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/string/simple.json0000644000000000000000000000013714567257577021266 0ustar00{ "answer": { "type": "string", "value": "You are not drinking enough whisky." } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/string/simple.toml0000644000000000000000000000005714567257577021271 0ustar00answer = "You are not drinking enough whisky." ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/string/unicode-escape.json0000644000000000000000000000017314567257577022661 0ustar00{ "answer4": { "type": "string", "value": "δ" }, "answer8": { "type": "string", "value": "δ" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/string/unicode-escape.toml0000644000000000000000000000005214567257577022657 0ustar00answer4 = "\u03B4" answer8 = "\U000003B4" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/string/unicode-literal.json0000644000000000000000000000007614567257577023057 0ustar00{ "answer": { "type": "string", "value": "δ" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/string/unicode-literal.toml0000644000000000000000000000001614567257577023053 0ustar00answer = "δ" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/string/with-pound.json0000644000000000000000000000026714567257577022077 0ustar00{ "pound": { "type": "string", "value": "We see no # comments here." }, "poundcomment": { "type": "string", "value": "But there are # some comments here." } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/string/with-pound.toml0000644000000000000000000000016114567257577022072 0ustar00pound = "We see no # comments here." poundcomment = "But there are # some comments here." # Did I # mess you up? ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/table/array-implicit.json0000644000000000000000000000022314567257577022500 0ustar00{ "albums": { "songs": [ { "name": { "type": "string", "value": "Glory Days" } } ] } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/table/array-implicit.toml0000644000000000000000000000004514567257577022504 0ustar00[[albums.songs]] name = "Glory Days" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/table/array-many.json0000644000000000000000000000104714567257577021637 0ustar00{ "people": [ { "first_name": { "type": "string", "value": "Bruce" }, "last_name": { "type": "string", "value": "Springsteen" } }, { "first_name": { "type": "string", "value": "Eric" }, "last_name": { "type": "string", "value": "Clapton" } }, { "first_name": { "type": "string", "value": "Bob" }, "last_name": { "type": "string", "value": "Seger" } } ] } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/table/array-many.toml0000644000000000000000000000024314567257577021636 0ustar00[[people]] first_name = "Bruce" last_name = "Springsteen" [[people]] first_name = "Eric" last_name = "Clapton" [[people]] first_name = "Bob" last_name = "Seger" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/table/array-nest.json0000644000000000000000000000136214567257577021644 0ustar00{ "albums": [ { "name": { "type": "string", "value": "Born to Run" }, "songs": [ { "name": { "type": "string", "value": "Jungleland" } }, { "name": { "type": "string", "value": "Meeting Across the River" } } ] }, { "name": { "type": "string", "value": "Born in the USA" }, "songs": [ { "name": { "type": "string", "value": "Glory Days" } }, { "name": { "type": "string", "value": "Dancing in the Dark" } } ] } ] } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/table/array-nest.toml0000644000000000000000000000040614567257577021644 0ustar00[[albums]] name = "Born to Run" [[albums.songs]] name = "Jungleland" [[albums.songs]] name = "Meeting Across the River" [[albums]] name = "Born in the USA" [[albums.songs]] name = "Glory Days" [[albums.songs]] name = "Dancing in the Dark" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/table/array-one.json0000644000000000000000000000031214567257577021446 0ustar00{ "people": [ { "first_name": { "type": "string", "value": "Bruce" }, "last_name": { "type": "string", "value": "Springsteen" } } ] } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/table/array-one.toml0000644000000000000000000000007214567257577021453 0ustar00[[people]] first_name = "Bruce" last_name = "Springsteen" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/table/array-table-array.json0000644000000000000000000000052314567257577023074 0ustar00{ "a": [ { "b": [ { "c": { "d": { "type": "string", "value": "val0" } } }, { "c": { "d": { "type": "string", "value": "val1" } } } ] } ] } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/table/array-table-array.toml0000644000000000000000000000015414567257577023076 0ustar00[[a]] [[a.b]] [a.b.c] d = "val0" [[a.b]] [a.b.c] d = "val1" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/table/empty.json0000644000000000000000000000001614567257577020710 0ustar00{ "a": {} } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/table/empty.toml0000644000000000000000000000000414567257577020707 0ustar00[a] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/table/keyword.json0000644000000000000000000000007214567257577021240 0ustar00{ "true": {}, "false": {}, "inf": {}, "nan": {} } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/table/keyword.toml0000644000000000000000000000004014567257577021235 0ustar00[true] [false] [inf] [nan] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3184357 tomlkit-0.12.4/tests/toml-test/tests/valid/table/names.json0000644000000000000000000000042214567257577020656 0ustar00{ "a": { " x ": {}, "b": { "c": {} }, "b.c": {}, "d.e": {} }, "d": { "e": { "f": {} } }, "g": { "h": { "i": {} } }, "j": { "ʞ": { "l": {} } }, "x": { "1": { "2": {} } } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3224356 tomlkit-0.12.4/tests/toml-test/tests/valid/table/names.toml0000644000000000000000000000013214567257577020656 0ustar00[a.b.c] [a."b.c"] [a.'d.e'] [a.' x '] [ d.e.f ] [ g . h . i ] [ j . "ʞ" . 'l' ] [x.1.2] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3224356 tomlkit-0.12.4/tests/toml-test/tests/valid/table/no-eol.json0000644000000000000000000000002214567257577020740 0ustar00{ "table": {} } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3224356 tomlkit-0.12.4/tests/toml-test/tests/valid/table/no-eol.toml0000644000000000000000000000001014567257577020737 0ustar00[table] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3224356 tomlkit-0.12.4/tests/toml-test/tests/valid/table/sub-empty.json0000644000000000000000000000003514567257577021500 0ustar00{ "a": { "b": {} } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3224356 tomlkit-0.12.4/tests/toml-test/tests/valid/table/sub-empty.toml0000644000000000000000000000001214567257577021475 0ustar00[a] [a.b] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3224356 tomlkit-0.12.4/tests/toml-test/tests/valid/table/whitespace.json0000644000000000000000000000002614567257577021707 0ustar00{ "valid key": {} } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3224356 tomlkit-0.12.4/tests/toml-test/tests/valid/table/whitespace.toml0000644000000000000000000000001614567257577021710 0ustar00["valid key"] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3224356 tomlkit-0.12.4/tests/toml-test/tests/valid/table/with-literal-string.json0000644000000000000000000000021614567257577023465 0ustar00{ "a": { "\"b\"": { "c": { "answer": { "type": "integer", "value": "42" } } } } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3224356 tomlkit-0.12.4/tests/toml-test/tests/valid/table/with-literal-string.toml0000644000000000000000000000005114567257577023464 0ustar00['a'] [a.'"b"'] [a.'"b"'.c] answer = 42 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3224356 tomlkit-0.12.4/tests/toml-test/tests/valid/table/with-pound.json0000644000000000000000000000013414567257577021651 0ustar00{ "key#group": { "answer": { "type": "integer", "value": "42" } } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3224356 tomlkit-0.12.4/tests/toml-test/tests/valid/table/with-pound.toml0000644000000000000000000000003214567257577021650 0ustar00["key#group"] answer = 42 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3224356 tomlkit-0.12.4/tests/toml-test/tests/valid/table/with-single-quotes.json0000644000000000000000000000021214567257577023320 0ustar00{ "a": { "b": { "c": { "answer": { "type": "integer", "value": "42" } } } } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3224356 tomlkit-0.12.4/tests/toml-test/tests/valid/table/with-single-quotes.toml0000644000000000000000000000004514567257577023326 0ustar00['a'] [a.'b'] [a.'b'.c] answer = 42 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3224356 tomlkit-0.12.4/tests/toml-test/tests/valid/table/without-super.json0000644000000000000000000000010714567257577022412 0ustar00{ "x": { "y": { "z": { "w": {} } } } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3224356 tomlkit-0.12.4/tests/toml-test/tests/valid/table/without-super.toml0000644000000000000000000000017014567257577022414 0ustar00# [x] you # [x.y] don't # [x.y.z] need these [x.y.z.w] # for this to work [x] # defining a super-table afterwards is ok ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006719.3224356 tomlkit-0.12.4/tests/toml-test/toml.go0000644000000000000000000000613214567257577014636 0ustar00package tomltest import ( "math" "reflect" ) // cmpTOML consumes the recursive structure of both want and have // simultaneously. If anything is unequal the result has failed and comparison // stops. // // reflect.DeepEqual could work here, but it won't tell us how the two // structures are different. func (r Test) cmpTOML(want, have interface{}) Test { if isTomlValue(want) { if !isTomlValue(have) { return r.fail("Type for key '%s' differs:\n"+ " Expected: %[2]v (%[2]T)\n"+ " Your encoder: %[3]v (%[3]T)", r.Key, want, have) } if !deepEqual(want, have) { return r.fail("Values for key '%s' differ:\n"+ " Expected: %[2]v (%[2]T)\n"+ " Your encoder: %[3]v (%[3]T)", r.Key, want, have) } return r } switch w := want.(type) { case map[string]interface{}: return r.cmpTOMLMap(w, have) case []interface{}: return r.cmpTOMLArrays(w, have) default: return r.fail("Unrecognized TOML structure: %T", want) } } func (r Test) cmpTOMLMap(want map[string]interface{}, have interface{}) Test { haveMap, ok := have.(map[string]interface{}) if !ok { return r.mismatch("table", want, haveMap) } // Check that the keys of each map are equivalent. for k := range want { if _, ok := haveMap[k]; !ok { bunk := r.kjoin(k) return bunk.fail("Could not find key '%s' in encoder output", bunk.Key) } } for k := range haveMap { if _, ok := want[k]; !ok { bunk := r.kjoin(k) return bunk.fail("Could not find key '%s' in expected output", bunk.Key) } } // Okay, now make sure that each value is equivalent. for k := range want { if sub := r.kjoin(k).cmpTOML(want[k], haveMap[k]); sub.Failed() { return sub } } return r } func (r Test) cmpTOMLArrays(want []interface{}, have interface{}) Test { // Slice can be decoded to []interface{} for an array of primitives, or // []map[string]interface{} for an array of tables. // // TODO: it would be nicer if it could always decode to []interface{}? haveSlice, ok := have.([]interface{}) if !ok { tblArray, ok := have.([]map[string]interface{}) if !ok { return r.mismatch("array", want, have) } haveSlice = make([]interface{}, len(tblArray)) for i := range tblArray { haveSlice[i] = tblArray[i] } } if len(want) != len(haveSlice) { return r.fail("Array lengths differ for key '%s'"+ " Expected: %[2]v (len=%[4]d)\n"+ " Your encoder: %[3]v (len=%[5]d)", r.Key, want, haveSlice, len(want), len(haveSlice)) } for i := 0; i < len(want); i++ { if sub := r.cmpTOML(want[i], haveSlice[i]); sub.Failed() { return sub } } return r } // reflect.DeepEqual() that deals with NaN != NaN func deepEqual(want, have interface{}) bool { var wantF, haveF float64 switch f := want.(type) { case float32: wantF = float64(f) case float64: wantF = f } switch f := have.(type) { case float32: haveF = float64(f) case float64: haveF = f } if math.IsNaN(wantF) && math.IsNaN(haveF) { return true } return reflect.DeepEqual(want, have) } func isTomlValue(v interface{}) bool { switch v.(type) { case map[string]interface{}, []interface{}: return false } return true } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4344366 tomlkit-0.12.4/tests/util.py0000644000000000000000000000241614567257576012733 0ustar00from tomlkit.items import AoT from tomlkit.items import Array from tomlkit.items import Bool from tomlkit.items import Comment from tomlkit.items import Date from tomlkit.items import DateTime from tomlkit.items import Float from tomlkit.items import InlineTable from tomlkit.items import Integer from tomlkit.items import Item from tomlkit.items import KeyType from tomlkit.items import Null from tomlkit.items import SingleKey as Key from tomlkit.items import String from tomlkit.items import StringType from tomlkit.items import Table from tomlkit.items import Time from tomlkit.items import Trivia from tomlkit.toml_document import TOMLDocument TOMLKIT_TYPES = [ Bool, Comment, InlineTable, Integer, Float, DateTime, Date, Time, Array, KeyType, Key, String, StringType, Table, Trivia, Item, AoT, Null, TOMLDocument, ] def assert_not_tomlkit_type(v): for _, tomlkit_type in enumerate(TOMLKIT_TYPES): assert not isinstance(v, tomlkit_type) def assert_is_ppo(v_unwrapped, unwrapped_type): assert_not_tomlkit_type(v_unwrapped) assert isinstance(v_unwrapped, unwrapped_type) def elementary_test(v, unwrapped_type): v_unwrapped = v.unwrap() assert_is_ppo(v_unwrapped, unwrapped_type) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4344366 tomlkit-0.12.4/tomlkit/__init__.py0000644000000000000000000000240214567257576014031 0ustar00from tomlkit.api import TOMLDocument from tomlkit.api import aot from tomlkit.api import array from tomlkit.api import boolean from tomlkit.api import comment from tomlkit.api import date from tomlkit.api import datetime from tomlkit.api import document from tomlkit.api import dump from tomlkit.api import dumps from tomlkit.api import float_ from tomlkit.api import inline_table from tomlkit.api import integer from tomlkit.api import item from tomlkit.api import key from tomlkit.api import key_value from tomlkit.api import load from tomlkit.api import loads from tomlkit.api import nl from tomlkit.api import parse from tomlkit.api import register_encoder from tomlkit.api import string from tomlkit.api import table from tomlkit.api import time from tomlkit.api import unregister_encoder from tomlkit.api import value from tomlkit.api import ws __version__ = "0.12.4" __all__ = [ "aot", "array", "boolean", "comment", "date", "datetime", "document", "dump", "dumps", "float_", "inline_table", "integer", "item", "key", "key_value", "load", "loads", "nl", "parse", "string", "table", "time", "TOMLDocument", "value", "ws", "register_encoder", "unregister_encoder", ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4344366 tomlkit-0.12.4/tomlkit/_compat.py0000644000000000000000000000100114567257576013706 0ustar00from __future__ import annotations import contextlib import sys from typing import Any PY38 = sys.version_info >= (3, 8) def decode(string: Any, encodings: list[str] | None = None): if not isinstance(string, bytes): return string encodings = encodings or ["utf-8", "latin1", "ascii"] for encoding in encodings: with contextlib.suppress(UnicodeEncodeError, UnicodeDecodeError): return string.decode(encoding) return string.decode(encodings[0], errors="ignore") ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4344366 tomlkit-0.12.4/tomlkit/_types.py0000644000000000000000000000517714567257576013611 0ustar00from __future__ import annotations from typing import TYPE_CHECKING from typing import Any from typing import TypeVar WT = TypeVar("WT", bound="WrapperType") if TYPE_CHECKING: # pragma: no cover # Define _CustomList and _CustomDict as a workaround for: # https://github.com/python/mypy/issues/11427 # # According to this issue, the typeshed contains a "lie" # (it adds MutableSequence to the ancestry of list and MutableMapping to # the ancestry of dict) which completely messes with the type inference for # Table, InlineTable, Array and Container. # # Importing from builtins is preferred over simple assignment, see issues: # https://github.com/python/mypy/issues/8715 # https://github.com/python/mypy/issues/10068 from builtins import dict as _CustomDict # noqa: N812 from builtins import float as _CustomFloat # noqa: N812 from builtins import int as _CustomInt # noqa: N812 from builtins import list as _CustomList # noqa: N812 from typing import Callable from typing import Concatenate from typing import ParamSpec from typing import Protocol P = ParamSpec("P") class WrapperType(Protocol): def _new(self: WT, value: Any) -> WT: ... else: from collections.abc import MutableMapping from collections.abc import MutableSequence from numbers import Integral from numbers import Real class _CustomList(MutableSequence, list): """Adds MutableSequence mixin while pretending to be a builtin list""" def __add__(self, other): new_list = self.copy() new_list.extend(other) return new_list def __iadd__(self, other): self.extend(other) return self class _CustomDict(MutableMapping, dict): """Adds MutableMapping mixin while pretending to be a builtin dict""" def __or__(self, other): new_dict = self.copy() new_dict.update(other) return new_dict def __ior__(self, other): self.update(other) return self class _CustomInt(Integral, int): """Adds Integral mixin while pretending to be a builtin int""" class _CustomFloat(Real, float): """Adds Real mixin while pretending to be a builtin float""" def wrap_method( original_method: Callable[Concatenate[WT, P], Any], ) -> Callable[Concatenate[WT, P], Any]: def wrapper(self: WT, *args: P.args, **kwargs: P.kwargs) -> Any: result = original_method(self, *args, **kwargs) if result is NotImplemented: return result return self._new(result) return wrapper ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4344366 tomlkit-0.12.4/tomlkit/_utils.py0000644000000000000000000000777114567257576013607 0ustar00from __future__ import annotations import re from collections.abc import Mapping from datetime import date from datetime import datetime from datetime import time from datetime import timedelta from datetime import timezone from typing import Collection from tomlkit._compat import decode RFC_3339_LOOSE = re.compile( "^" r"(([0-9]+)-(\d{2})-(\d{2}))?" # Date "(" "([Tt ])?" # Separator r"(\d{2}):(\d{2}):(\d{2})(\.([0-9]+))?" # Time r"(([Zz])|([\+|\-]([01][0-9]|2[0-3]):([0-5][0-9])))?" # Timezone ")?" "$" ) RFC_3339_DATETIME = re.compile( "^" "([0-9]+)-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])" # Date "[Tt ]" # Separator r"([01][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9]|60)(\.([0-9]+))?" # Time r"(([Zz])|([\+|\-]([01][0-9]|2[0-3]):([0-5][0-9])))?" # Timezone "$" ) RFC_3339_DATE = re.compile("^([0-9]+)-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$") RFC_3339_TIME = re.compile( r"^([01][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9]|60)(\.([0-9]+))?$" ) _utc = timezone(timedelta(), "UTC") def parse_rfc3339(string: str) -> datetime | date | time: m = RFC_3339_DATETIME.match(string) if m: year = int(m.group(1)) month = int(m.group(2)) day = int(m.group(3)) hour = int(m.group(4)) minute = int(m.group(5)) second = int(m.group(6)) microsecond = 0 if m.group(7): microsecond = int((f"{m.group(8):<06s}")[:6]) if m.group(9): # Timezone tz = m.group(9) if tz.upper() == "Z": tzinfo = _utc else: sign = m.group(11)[0] hour_offset, minute_offset = int(m.group(12)), int(m.group(13)) offset = timedelta(seconds=hour_offset * 3600 + minute_offset * 60) if sign == "-": offset = -offset tzinfo = timezone(offset, f"{sign}{m.group(12)}:{m.group(13)}") return datetime( year, month, day, hour, minute, second, microsecond, tzinfo=tzinfo ) else: return datetime(year, month, day, hour, minute, second, microsecond) m = RFC_3339_DATE.match(string) if m: year = int(m.group(1)) month = int(m.group(2)) day = int(m.group(3)) return date(year, month, day) m = RFC_3339_TIME.match(string) if m: hour = int(m.group(1)) minute = int(m.group(2)) second = int(m.group(3)) microsecond = 0 if m.group(4): microsecond = int((f"{m.group(5):<06s}")[:6]) return time(hour, minute, second, microsecond) raise ValueError("Invalid RFC 339 string") # https://toml.io/en/v1.0.0#string CONTROL_CHARS = frozenset(chr(c) for c in range(0x20)) | {chr(0x7F)} _escaped = { "b": "\b", "t": "\t", "n": "\n", "f": "\f", "r": "\r", '"': '"', "\\": "\\", } _compact_escapes = { **{v: f"\\{k}" for k, v in _escaped.items()}, '"""': '""\\"', } _basic_escapes = CONTROL_CHARS | {'"', "\\"} def _unicode_escape(seq: str) -> str: return "".join(f"\\u{ord(c):04x}" for c in seq) def escape_string(s: str, escape_sequences: Collection[str] = _basic_escapes) -> str: s = decode(s) res = [] start = 0 def flush(inc=1): if start != i: res.append(s[start:i]) return i + inc found_sequences = {seq for seq in escape_sequences if seq in s} i = 0 while i < len(s): for seq in found_sequences: seq_len = len(seq) if s[i:].startswith(seq): start = flush(seq_len) res.append(_compact_escapes.get(seq) or _unicode_escape(seq)) i += seq_len - 1 # fast-forward escape sequence i += 1 flush() return "".join(res) def merge_dicts(d1: dict, d2: dict) -> dict: for k, v in d2.items(): if k in d1 and isinstance(d1[k], dict) and isinstance(v, Mapping): merge_dicts(d1[k], v) else: d1[k] = d2[k] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4344366 tomlkit-0.12.4/tomlkit/api.py0000644000000000000000000001703314567257576013051 0ustar00from __future__ import annotations import contextlib import datetime as _datetime from collections.abc import Mapping from typing import IO from typing import Iterable from typing import TypeVar from tomlkit._utils import parse_rfc3339 from tomlkit.container import Container from tomlkit.exceptions import UnexpectedCharError from tomlkit.items import CUSTOM_ENCODERS from tomlkit.items import AoT from tomlkit.items import Array from tomlkit.items import Bool from tomlkit.items import Comment from tomlkit.items import Date from tomlkit.items import DateTime from tomlkit.items import DottedKey from tomlkit.items import Encoder from tomlkit.items import Float from tomlkit.items import InlineTable from tomlkit.items import Integer from tomlkit.items import Item as _Item from tomlkit.items import Key from tomlkit.items import SingleKey from tomlkit.items import String from tomlkit.items import StringType as _StringType from tomlkit.items import Table from tomlkit.items import Time from tomlkit.items import Trivia from tomlkit.items import Whitespace from tomlkit.items import item from tomlkit.parser import Parser from tomlkit.toml_document import TOMLDocument def loads(string: str | bytes) -> TOMLDocument: """ Parses a string into a TOMLDocument. Alias for parse(). """ return parse(string) def dumps(data: Mapping, sort_keys: bool = False) -> str: """ Dumps a TOMLDocument into a string. """ if not isinstance(data, Container) and isinstance(data, Mapping): data = item(dict(data), _sort_keys=sort_keys) try: # data should be a `Container` (and therefore implement `as_string`) # for all type safe invocations of this function return data.as_string() # type: ignore[attr-defined] except AttributeError as ex: msg = f"Expecting Mapping or TOML Container, {type(data)} given" raise TypeError(msg) from ex def load(fp: IO[str] | IO[bytes]) -> TOMLDocument: """ Load toml document from a file-like object. """ return parse(fp.read()) def dump(data: Mapping, fp: IO[str], *, sort_keys: bool = False) -> None: """ Dump a TOMLDocument into a writable file stream. :param data: a dict-like object to dump :param sort_keys: if true, sort the keys in alphabetic order """ fp.write(dumps(data, sort_keys=sort_keys)) def parse(string: str | bytes) -> TOMLDocument: """ Parses a string or bytes into a TOMLDocument. """ return Parser(string).parse() def document() -> TOMLDocument: """ Returns a new TOMLDocument instance. """ return TOMLDocument() # Items def integer(raw: str | int) -> Integer: """Create an integer item from a number or string.""" return item(int(raw)) def float_(raw: str | float) -> Float: """Create an float item from a number or string.""" return item(float(raw)) def boolean(raw: str) -> Bool: """Turn `true` or `false` into a boolean item.""" return item(raw == "true") def string( raw: str, *, literal: bool = False, multiline: bool = False, escape: bool = True, ) -> String: """Create a string item. By default, this function will create *single line basic* strings, but boolean flags (e.g. ``literal=True`` and/or ``multiline=True``) can be used for personalization. For more information, please check the spec: ``__. Common escaping rules will be applied for basic strings. This can be controlled by explicitly setting ``escape=False``. Please note that, if you disable escaping, you will have to make sure that the given strings don't contain any forbidden character or sequence. """ type_ = _StringType.select(literal, multiline) return String.from_raw(raw, type_, escape) def date(raw: str) -> Date: """Create a TOML date.""" value = parse_rfc3339(raw) if not isinstance(value, _datetime.date): raise ValueError("date() only accepts date strings.") return item(value) def time(raw: str) -> Time: """Create a TOML time.""" value = parse_rfc3339(raw) if not isinstance(value, _datetime.time): raise ValueError("time() only accepts time strings.") return item(value) def datetime(raw: str) -> DateTime: """Create a TOML datetime.""" value = parse_rfc3339(raw) if not isinstance(value, _datetime.datetime): raise ValueError("datetime() only accepts datetime strings.") return item(value) def array(raw: str = None) -> Array: """Create an array item for its string representation. :Example: >>> array("[1, 2, 3]") # Create from a string [1, 2, 3] >>> a = array() >>> a.extend([1, 2, 3]) # Create from a list >>> a [1, 2, 3] """ if raw is None: raw = "[]" return value(raw) def table(is_super_table: bool | None = None) -> Table: """Create an empty table. :param is_super_table: if true, the table is a super table :Example: >>> doc = document() >>> foo = table(True) >>> bar = table() >>> bar.update({'x': 1}) >>> foo.append('bar', bar) >>> doc.append('foo', foo) >>> print(doc.as_string()) [foo.bar] x = 1 """ return Table(Container(), Trivia(), False, is_super_table) def inline_table() -> InlineTable: """Create an inline table. :Example: >>> table = inline_table() >>> table.update({'x': 1, 'y': 2}) >>> print(table.as_string()) {x = 1, y = 2} """ return InlineTable(Container(), Trivia(), new=True) def aot() -> AoT: """Create an array of table. :Example: >>> doc = document() >>> aot = aot() >>> aot.append(item({'x': 1})) >>> doc.append('foo', aot) >>> print(doc.as_string()) [[foo]] x = 1 """ return AoT([]) def key(k: str | Iterable[str]) -> Key: """Create a key from a string. When a list of string is given, it will create a dotted key. :Example: >>> doc = document() >>> doc.append(key('foo'), 1) >>> doc.append(key(['bar', 'baz']), 2) >>> print(doc.as_string()) foo = 1 bar.baz = 2 """ if isinstance(k, str): return SingleKey(k) return DottedKey([key(_k) for _k in k]) def value(raw: str) -> _Item: """Parse a simple value from a string. :Example: >>> value("1") 1 >>> value("true") True >>> value("[1, 2, 3]") [1, 2, 3] """ parser = Parser(raw) v = parser._parse_value() if not parser.end(): raise parser.parse_error(UnexpectedCharError, char=parser._current) return v def key_value(src: str) -> tuple[Key, _Item]: """Parse a key-value pair from a string. :Example: >>> key_value("foo = 1") (Key('foo'), 1) """ return Parser(src)._parse_key_value() def ws(src: str) -> Whitespace: """Create a whitespace from a string.""" return Whitespace(src, fixed=True) def nl() -> Whitespace: """Create a newline item.""" return ws("\n") def comment(string: str) -> Comment: """Create a comment item.""" return Comment(Trivia(comment_ws=" ", comment="# " + string)) E = TypeVar("E", bound=Encoder) def register_encoder(encoder: E) -> E: """Add a custom encoder, which should be a function that will be called if the value can't otherwise be converted. It should takes a single value and return a TOMLKit item or raise a ``TypeError``. """ CUSTOM_ENCODERS.append(encoder) return encoder def unregister_encoder(encoder: Encoder) -> None: """Unregister a custom encoder.""" with contextlib.suppress(ValueError): CUSTOM_ENCODERS.remove(encoder) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4344366 tomlkit-0.12.4/tomlkit/container.py0000644000000000000000000006773514567257576014300 0ustar00from __future__ import annotations import copy from typing import Any from typing import Iterator from tomlkit._compat import decode from tomlkit._types import _CustomDict from tomlkit._utils import merge_dicts from tomlkit.exceptions import KeyAlreadyPresent from tomlkit.exceptions import NonExistentKey from tomlkit.exceptions import TOMLKitError from tomlkit.items import AoT from tomlkit.items import Comment from tomlkit.items import Item from tomlkit.items import Key from tomlkit.items import Null from tomlkit.items import SingleKey from tomlkit.items import Table from tomlkit.items import Trivia from tomlkit.items import Whitespace from tomlkit.items import item as _item _NOT_SET = object() class Container(_CustomDict): """ A container for items within a TOMLDocument. This class implements the `dict` interface with copy/deepcopy protocol. """ def __init__(self, parsed: bool = False) -> None: self._map: dict[SingleKey, int | tuple[int, ...]] = {} self._body: list[tuple[Key | None, Item]] = [] self._parsed = parsed self._table_keys = [] @property def body(self) -> list[tuple[Key | None, Item]]: return self._body def unwrap(self) -> dict[str, Any]: """Returns as pure python object (ppo)""" unwrapped = {} for k, v in self.items(): if k is None: continue if isinstance(k, Key): k = k.key if hasattr(v, "unwrap"): v = v.unwrap() if k in unwrapped: merge_dicts(unwrapped[k], v) else: unwrapped[k] = v return unwrapped @property def value(self) -> dict[str, Any]: """The wrapped dict value""" d = {} for k, v in self._body: if k is None: continue k = k.key v = v.value if isinstance(v, Container): v = v.value if k in d: merge_dicts(d[k], v) else: d[k] = v return d def parsing(self, parsing: bool) -> None: self._parsed = parsing for _, v in self._body: if isinstance(v, Table): v.value.parsing(parsing) elif isinstance(v, AoT): for t in v.body: t.value.parsing(parsing) def add(self, key: Key | Item | str, item: Item | None = None) -> Container: """ Adds an item to the current Container. :Example: >>> # add a key-value pair >>> doc.add('key', 'value') >>> # add a comment or whitespace or newline >>> doc.add(comment('# comment')) """ if item is None: if not isinstance(key, (Comment, Whitespace)): raise ValueError( "Non comment/whitespace items must have an associated key" ) key, item = None, key return self.append(key, item) def _handle_dotted_key(self, key: Key, value: Item) -> None: if isinstance(value, (Table, AoT)): raise TOMLKitError("Can't add a table to a dotted key") name, *mid, last = key name._dotted = True table = current = Table(Container(True), Trivia(), False, is_super_table=True) for _name in mid: _name._dotted = True new_table = Table(Container(True), Trivia(), False, is_super_table=True) current.append(_name, new_table) current = new_table last.sep = key.sep current.append(last, value) self.append(name, table) return def _get_last_index_before_table(self) -> int: last_index = -1 for i, (k, v) in enumerate(self._body): if isinstance(v, Null): continue # Null elements are inserted after deletion if isinstance(v, Whitespace) and not v.is_fixed(): continue if isinstance(v, (Table, AoT)) and not k.is_dotted(): break last_index = i return last_index + 1 def _validate_out_of_order_table(self, key: SingleKey | None = None) -> None: if key is None: for k in self._map: assert k is not None self._validate_out_of_order_table(k) return if key not in self._map or not isinstance(self._map[key], tuple): return OutOfOrderTableProxy(self, self._map[key]) def append( self, key: Key | str | None, item: Item, validate: bool = True ) -> Container: """Similar to :meth:`add` but both key and value must be given.""" if not isinstance(key, Key) and key is not None: key = SingleKey(key) if not isinstance(item, Item): item = _item(item) if key is not None and key.is_multi(): self._handle_dotted_key(key, item) return self if isinstance(item, (AoT, Table)) and item.name is None: item.name = key.key prev = self._previous_item() prev_ws = isinstance(prev, Whitespace) or ends_with_whitespace(prev) if isinstance(item, Table): if not self._parsed: item.invalidate_display_name() if ( self._body and not (self._parsed or item.trivia.indent or prev_ws) and not key.is_dotted() ): item.trivia.indent = "\n" if isinstance(item, AoT) and self._body and not self._parsed: item.invalidate_display_name() if item and not ("\n" in item[0].trivia.indent or prev_ws): item[0].trivia.indent = "\n" + item[0].trivia.indent if key is not None and key in self: current_idx = self._map[key] if isinstance(current_idx, tuple): current_body_element = self._body[current_idx[-1]] else: current_body_element = self._body[current_idx] current = current_body_element[1] if isinstance(item, Table): if not isinstance(current, (Table, AoT)): raise KeyAlreadyPresent(key) if item.is_aot_element(): # New AoT element found later on # Adding it to the current AoT if not isinstance(current, AoT): current = AoT([current, item], parsed=self._parsed) self._replace(key, key, current) else: current.append(item) return self elif current.is_aot(): if not item.is_aot_element(): # Tried to define a table after an AoT with the same name. raise KeyAlreadyPresent(key) current.append(item) return self elif current.is_super_table(): if item.is_super_table(): # We need to merge both super tables if ( key.is_dotted() or current_body_element[0].is_dotted() or self._table_keys[-1] != current_body_element[0] ): if key.is_dotted() and not self._parsed: idx = self._get_last_index_before_table() else: idx = len(self._body) if idx < len(self._body): self._insert_at(idx, key, item) else: self._raw_append(key, item) if validate: self._validate_out_of_order_table(key) return self # Create a new element to replace the old one current = copy.deepcopy(current) for k, v in item.value.body: current.append(k, v) self._body[ current_idx[-1] if isinstance(current_idx, tuple) else current_idx ] = (current_body_element[0], current) return self elif current_body_element[0].is_dotted(): raise TOMLKitError("Redefinition of an existing table") elif not item.is_super_table(): raise KeyAlreadyPresent(key) elif isinstance(item, AoT): if not isinstance(current, AoT): # Tried to define an AoT after a table with the same name. raise KeyAlreadyPresent(key) for table in item.body: current.append(table) return self else: raise KeyAlreadyPresent(key) is_table = isinstance(item, (Table, AoT)) if ( key is not None and self._body and not self._parsed and (not is_table or key.is_dotted()) ): # If there is already at least one table in the current container # and the given item is not a table, we need to find the last # item that is not a table and insert after it # If no such item exists, insert at the top of the table last_index = self._get_last_index_before_table() if last_index < len(self._body): return self._insert_at(last_index, key, item) else: previous_item = self._body[-1][1] if not ( isinstance(previous_item, Whitespace) or ends_with_whitespace(previous_item) or "\n" in previous_item.trivia.trail ): previous_item.trivia.trail += "\n" self._raw_append(key, item) return self def _raw_append(self, key: Key | None, item: Item) -> None: if key in self._map: current_idx = self._map[key] if not isinstance(current_idx, tuple): current_idx = (current_idx,) current = self._body[current_idx[-1]][1] if key is not None and not isinstance(current, Table): raise KeyAlreadyPresent(key) self._map[key] = current_idx + (len(self._body),) elif key is not None: self._map[key] = len(self._body) self._body.append((key, item)) if item.is_table(): self._table_keys.append(key) if key is not None: dict.__setitem__(self, key.key, item.value) return self def _remove_at(self, idx: int) -> None: key = self._body[idx][0] index = self._map.get(key) if index is None: raise NonExistentKey(key) self._body[idx] = (None, Null()) if isinstance(index, tuple): index = list(index) index.remove(idx) if len(index) == 1: index = index.pop() else: index = tuple(index) self._map[key] = index else: dict.__delitem__(self, key.key) self._map.pop(key) def remove(self, key: Key | str) -> Container: """Remove a key from the container.""" if not isinstance(key, Key): key = SingleKey(key) idx = self._map.pop(key, None) if idx is None: raise NonExistentKey(key) if isinstance(idx, tuple): for i in idx: self._body[i] = (None, Null()) else: self._body[idx] = (None, Null()) dict.__delitem__(self, key.key) return self def _insert_after( self, key: Key | str, other_key: Key | str, item: Any ) -> Container: if key is None: raise ValueError("Key cannot be null in insert_after()") if key not in self: raise NonExistentKey(key) if not isinstance(key, Key): key = SingleKey(key) if not isinstance(other_key, Key): other_key = SingleKey(other_key) item = _item(item) idx = self._map[key] # Insert after the max index if there are many. if isinstance(idx, tuple): idx = max(idx) current_item = self._body[idx][1] if "\n" not in current_item.trivia.trail: current_item.trivia.trail += "\n" # Increment indices after the current index for k, v in self._map.items(): if isinstance(v, tuple): new_indices = [] for v_ in v: if v_ > idx: v_ = v_ + 1 new_indices.append(v_) self._map[k] = tuple(new_indices) elif v > idx: self._map[k] = v + 1 self._map[other_key] = idx + 1 self._body.insert(idx + 1, (other_key, item)) if key is not None: dict.__setitem__(self, other_key.key, item.value) return self def _insert_at(self, idx: int, key: Key | str, item: Any) -> Container: if idx > len(self._body) - 1: raise ValueError(f"Unable to insert at position {idx}") if not isinstance(key, Key): key = SingleKey(key) item = _item(item) if idx > 0: previous_item = self._body[idx - 1][1] if not ( isinstance(previous_item, Whitespace) or ends_with_whitespace(previous_item) or isinstance(item, (AoT, Table)) or "\n" in previous_item.trivia.trail ): previous_item.trivia.trail += "\n" # Increment indices after the current index for k, v in self._map.items(): if isinstance(v, tuple): new_indices = [] for v_ in v: if v_ >= idx: v_ = v_ + 1 new_indices.append(v_) self._map[k] = tuple(new_indices) elif v >= idx: self._map[k] = v + 1 if key in self._map: current_idx = self._map[key] if not isinstance(current_idx, tuple): current_idx = (current_idx,) self._map[key] = current_idx + (idx,) else: self._map[key] = idx self._body.insert(idx, (key, item)) dict.__setitem__(self, key.key, item.value) return self def item(self, key: Key | str) -> Item: """Get an item for the given key.""" if not isinstance(key, Key): key = SingleKey(key) idx = self._map.get(key) if idx is None: raise NonExistentKey(key) if isinstance(idx, tuple): # The item we are getting is an out of order table # so we need a proxy to retrieve the proper objects # from the parent container return OutOfOrderTableProxy(self, idx) return self._body[idx][1] def last_item(self) -> Item | None: """Get the last item.""" if self._body: return self._body[-1][1] def as_string(self) -> str: """Render as TOML string.""" s = "" for k, v in self._body: if k is not None: if isinstance(v, Table): s += self._render_table(k, v) elif isinstance(v, AoT): s += self._render_aot(k, v) else: s += self._render_simple_item(k, v) else: s += self._render_simple_item(k, v) return s def _render_table(self, key: Key, table: Table, prefix: str | None = None) -> str: cur = "" if table.display_name is not None: _key = table.display_name else: _key = key.as_string() if prefix is not None: _key = prefix + "." + _key if not table.is_super_table() or ( any( not isinstance(v, (Table, AoT, Whitespace, Null)) for _, v in table.value.body ) and not key.is_dotted() ): open_, close = "[", "]" if table.is_aot_element(): open_, close = "[[", "]]" newline_in_table_trivia = ( "\n" if "\n" not in table.trivia.trail and len(table.value) > 0 else "" ) cur += ( f"{table.trivia.indent}" f"{open_}" f"{decode(_key)}" f"{close}" f"{table.trivia.comment_ws}" f"{decode(table.trivia.comment)}" f"{table.trivia.trail}" f"{newline_in_table_trivia}" ) elif table.trivia.indent == "\n": cur += table.trivia.indent for k, v in table.value.body: if isinstance(v, Table): if v.is_super_table(): if k.is_dotted() and not key.is_dotted(): # Dotted key inside table cur += self._render_table(k, v) else: cur += self._render_table(k, v, prefix=_key) else: cur += self._render_table(k, v, prefix=_key) elif isinstance(v, AoT): cur += self._render_aot(k, v, prefix=_key) else: cur += self._render_simple_item( k, v, prefix=_key if key.is_dotted() else None ) return cur def _render_aot(self, key, aot, prefix=None): _key = key.as_string() if prefix is not None: _key = prefix + "." + _key cur = "" _key = decode(_key) for table in aot.body: cur += self._render_aot_table(table, prefix=_key) return cur def _render_aot_table(self, table: Table, prefix: str | None = None) -> str: cur = "" _key = prefix or "" open_, close = "[[", "]]" cur += ( f"{table.trivia.indent}" f"{open_}" f"{decode(_key)}" f"{close}" f"{table.trivia.comment_ws}" f"{decode(table.trivia.comment)}" f"{table.trivia.trail}" ) for k, v in table.value.body: if isinstance(v, Table): if v.is_super_table(): if k.is_dotted(): # Dotted key inside table cur += self._render_table(k, v) else: cur += self._render_table(k, v, prefix=_key) else: cur += self._render_table(k, v, prefix=_key) elif isinstance(v, AoT): cur += self._render_aot(k, v, prefix=_key) else: cur += self._render_simple_item(k, v) return cur def _render_simple_item(self, key, item, prefix=None): if key is None: return item.as_string() _key = key.as_string() if prefix is not None: _key = prefix + "." + _key return ( f"{item.trivia.indent}" f"{decode(_key)}" f"{key.sep}" f"{decode(item.as_string())}" f"{item.trivia.comment_ws}" f"{decode(item.trivia.comment)}" f"{item.trivia.trail}" ) def __len__(self) -> int: return dict.__len__(self) def __iter__(self) -> Iterator[str]: return iter(dict.keys(self)) # Dictionary methods def __getitem__(self, key: Key | str) -> Item | Container: item = self.item(key) if isinstance(item, Item) and item.is_boolean(): return item.value return item def __setitem__(self, key: Key | str, value: Any) -> None: if key is not None and key in self: old_key = next(filter(lambda k: k == key, self._map)) self._replace(old_key, key, value) else: self.append(key, value) def __delitem__(self, key: Key | str) -> None: self.remove(key) def setdefault(self, key: Key | str, default: Any) -> Any: super().setdefault(key, default=default) return self[key] def _replace(self, key: Key | str, new_key: Key | str, value: Item) -> None: if not isinstance(key, Key): key = SingleKey(key) idx = self._map.get(key) if idx is None: raise NonExistentKey(key) self._replace_at(idx, new_key, value) def _replace_at( self, idx: int | tuple[int], new_key: Key | str, value: Item ) -> None: value = _item(value) if isinstance(idx, tuple): for i in idx[1:]: self._body[i] = (None, Null()) idx = idx[0] k, v = self._body[idx] if not isinstance(new_key, Key): if ( isinstance(value, (AoT, Table)) != isinstance(v, (AoT, Table)) or new_key != k.key ): new_key = SingleKey(new_key) else: # Inherit the sep of the old key new_key = k del self._map[k] self._map[new_key] = idx if new_key != k: dict.__delitem__(self, k) if isinstance(value, (AoT, Table)) != isinstance(v, (AoT, Table)): # new tables should appear after all non-table values self.remove(k) for i in range(idx, len(self._body)): if isinstance(self._body[i][1], (AoT, Table)): self._insert_at(i, new_key, value) idx = i break else: idx = -1 self.append(new_key, value) else: # Copying trivia if not isinstance(value, (Whitespace, AoT)): value.trivia.indent = v.trivia.indent value.trivia.comment_ws = value.trivia.comment_ws or v.trivia.comment_ws value.trivia.comment = value.trivia.comment or v.trivia.comment value.trivia.trail = v.trivia.trail self._body[idx] = (new_key, value) if hasattr(value, "invalidate_display_name"): value.invalidate_display_name() # type: ignore[attr-defined] if isinstance(value, Table): # Insert a cosmetic new line for tables if: # - it does not have it yet OR is not followed by one # - it is not the last item, or # - The table being replaced has a newline last, _ = self._previous_item_with_index() idx = last if idx < 0 else idx has_ws = ends_with_whitespace(value) replace_has_ws = ( isinstance(v, Table) and v.value.body and isinstance(v.value.body[-1][1], Whitespace) ) next_ws = idx < last and isinstance(self._body[idx + 1][1], Whitespace) if (idx < last or replace_has_ws) and not (next_ws or has_ws): value.append(None, Whitespace("\n")) dict.__setitem__(self, new_key.key, value.value) def __str__(self) -> str: return str(self.value) def __repr__(self) -> str: return repr(self.value) def __eq__(self, other: dict) -> bool: if not isinstance(other, dict): return NotImplemented return self.value == other def _getstate(self, protocol): return (self._parsed,) def __reduce__(self): return self.__reduce_ex__(2) def __reduce_ex__(self, protocol): return ( self.__class__, self._getstate(protocol), (self._map, self._body, self._parsed, self._table_keys), ) def __setstate__(self, state): self._map = state[0] self._body = state[1] self._parsed = state[2] self._table_keys = state[3] for key, item in self._body: if key is not None: dict.__setitem__(self, key.key, item.value) def copy(self) -> Container: return copy.copy(self) def __copy__(self) -> Container: c = self.__class__(self._parsed) for k, v in dict.items(self): dict.__setitem__(c, k, v) c._body += self.body c._map.update(self._map) return c def _previous_item_with_index( self, idx: int | None = None, ignore=(Null,) ) -> tuple[int, Item] | None: """Find the immediate previous item before index ``idx``""" if idx is None or idx > len(self._body): idx = len(self._body) for i in range(idx - 1, -1, -1): v = self._body[i][-1] if not isinstance(v, ignore): return i, v return None def _previous_item(self, idx: int | None = None, ignore=(Null,)) -> Item | None: """Find the immediate previous item before index ``idx``. If ``idx`` is not given, the last item is returned. """ prev = self._previous_item_with_index(idx, ignore) return prev[-1] if prev else None class OutOfOrderTableProxy(_CustomDict): def __init__(self, container: Container, indices: tuple[int]) -> None: self._container = container self._internal_container = Container(True) self._tables = [] self._tables_map = {} for i in indices: _, item = self._container._body[i] if isinstance(item, Table): self._tables.append(item) table_idx = len(self._tables) - 1 for k, v in item.value.body: self._internal_container.append(k, v, validate=False) self._tables_map[k] = table_idx if k is not None: dict.__setitem__(self, k.key, v) self._internal_container._validate_out_of_order_table() def unwrap(self) -> str: return self._internal_container.unwrap() @property def value(self): return self._internal_container.value def __getitem__(self, key: Key | str) -> Any: if key not in self._internal_container: raise NonExistentKey(key) return self._internal_container[key] def __setitem__(self, key: Key | str, item: Any) -> None: if key in self._tables_map: table = self._tables[self._tables_map[key]] table[key] = item elif self._tables: table = self._tables[0] table[key] = item else: self._container[key] = item self._internal_container[key] = item if key is not None: dict.__setitem__(self, key, item) def _remove_table(self, table: Table) -> None: """Remove table from the parent container""" self._tables.remove(table) for idx, item in enumerate(self._container._body): if item[1] is table: self._container._remove_at(idx) break def __delitem__(self, key: Key | str) -> None: if key in self._tables_map: table = self._tables[self._tables_map[key]] del table[key] if not table and len(self._tables) > 1: self._remove_table(table) del self._tables_map[key] else: raise NonExistentKey(key) del self._internal_container[key] if key is not None: dict.__delitem__(self, key) def __iter__(self) -> Iterator[str]: return iter(dict.keys(self)) def __len__(self) -> int: return dict.__len__(self) def setdefault(self, key: Key | str, default: Any) -> Any: super().setdefault(key, default=default) return self[key] def ends_with_whitespace(it: Any) -> bool: """Returns ``True`` if the given item ``it`` is a ``Table`` or ``AoT`` object ending with a ``Whitespace``. """ return ( isinstance(it, Table) and isinstance(it.value._previous_item(), Whitespace) ) or (isinstance(it, AoT) and len(it) > 0 and isinstance(it[-1], Whitespace)) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4344366 tomlkit-0.12.4/tomlkit/exceptions.py0000644000000000000000000001255714567257576014467 0ustar00from __future__ import annotations from typing import Collection class TOMLKitError(Exception): pass class ParseError(ValueError, TOMLKitError): """ This error occurs when the parser encounters a syntax error in the TOML being parsed. The error references the line and location within the line where the error was encountered. """ def __init__(self, line: int, col: int, message: str | None = None) -> None: self._line = line self._col = col if message is None: message = "TOML parse error" super().__init__(f"{message} at line {self._line} col {self._col}") @property def line(self): return self._line @property def col(self): return self._col class MixedArrayTypesError(ParseError): """ An array was found that had two or more element types. """ def __init__(self, line: int, col: int) -> None: message = "Mixed types found in array" super().__init__(line, col, message=message) class InvalidNumberError(ParseError): """ A numeric field was improperly specified. """ def __init__(self, line: int, col: int) -> None: message = "Invalid number" super().__init__(line, col, message=message) class InvalidDateTimeError(ParseError): """ A datetime field was improperly specified. """ def __init__(self, line: int, col: int) -> None: message = "Invalid datetime" super().__init__(line, col, message=message) class InvalidDateError(ParseError): """ A date field was improperly specified. """ def __init__(self, line: int, col: int) -> None: message = "Invalid date" super().__init__(line, col, message=message) class InvalidTimeError(ParseError): """ A date field was improperly specified. """ def __init__(self, line: int, col: int) -> None: message = "Invalid time" super().__init__(line, col, message=message) class InvalidNumberOrDateError(ParseError): """ A numeric or date field was improperly specified. """ def __init__(self, line: int, col: int) -> None: message = "Invalid number or date format" super().__init__(line, col, message=message) class InvalidUnicodeValueError(ParseError): """ A unicode code was improperly specified. """ def __init__(self, line: int, col: int) -> None: message = "Invalid unicode value" super().__init__(line, col, message=message) class UnexpectedCharError(ParseError): """ An unexpected character was found during parsing. """ def __init__(self, line: int, col: int, char: str) -> None: message = f"Unexpected character: {repr(char)}" super().__init__(line, col, message=message) class EmptyKeyError(ParseError): """ An empty key was found during parsing. """ def __init__(self, line: int, col: int) -> None: message = "Empty key" super().__init__(line, col, message=message) class EmptyTableNameError(ParseError): """ An empty table name was found during parsing. """ def __init__(self, line: int, col: int) -> None: message = "Empty table name" super().__init__(line, col, message=message) class InvalidCharInStringError(ParseError): """ The string being parsed contains an invalid character. """ def __init__(self, line: int, col: int, char: str) -> None: message = f"Invalid character {repr(char)} in string" super().__init__(line, col, message=message) class UnexpectedEofError(ParseError): """ The TOML being parsed ended before the end of a statement. """ def __init__(self, line: int, col: int) -> None: message = "Unexpected end of file" super().__init__(line, col, message=message) class InternalParserError(ParseError): """ An error that indicates a bug in the parser. """ def __init__(self, line: int, col: int, message: str | None = None) -> None: msg = "Internal parser error" if message: msg += f" ({message})" super().__init__(line, col, message=msg) class NonExistentKey(KeyError, TOMLKitError): """ A non-existent key was used. """ def __init__(self, key): message = f'Key "{key}" does not exist.' super().__init__(message) class KeyAlreadyPresent(TOMLKitError): """ An already present key was used. """ def __init__(self, key): key = getattr(key, "key", key) message = f'Key "{key}" already exists.' super().__init__(message) class InvalidControlChar(ParseError): def __init__(self, line: int, col: int, char: int, type: str) -> None: display_code = "\\u00" if char < 16: display_code += "0" display_code += hex(char)[2:] message = ( "Control characters (codes less than 0x1f and 0x7f)" f" are not allowed in {type}, " f"use {display_code} instead" ) super().__init__(line, col, message=message) class InvalidStringError(ValueError, TOMLKitError): def __init__(self, value: str, invalid_sequences: Collection[str], delimiter: str): repr_ = repr(value)[1:-1] super().__init__( f"Invalid string: {delimiter}{repr_}{delimiter}. " f"The character sequences {invalid_sequences} are invalid." ) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4344366 tomlkit-0.12.4/tomlkit/items.py0000644000000000000000000015016714567257576013427 0ustar00from __future__ import annotations import abc import copy import dataclasses import math import re import string import sys from datetime import date from datetime import datetime from datetime import time from datetime import tzinfo from enum import Enum from typing import TYPE_CHECKING from typing import Any from typing import Callable from typing import Collection from typing import Iterable from typing import Iterator from typing import Sequence from typing import TypeVar from typing import cast from typing import overload from tomlkit._compat import PY38 from tomlkit._compat import decode from tomlkit._types import _CustomDict from tomlkit._types import _CustomFloat from tomlkit._types import _CustomInt from tomlkit._types import _CustomList from tomlkit._types import wrap_method from tomlkit._utils import CONTROL_CHARS from tomlkit._utils import escape_string from tomlkit.exceptions import InvalidStringError if TYPE_CHECKING: from tomlkit import container ItemT = TypeVar("ItemT", bound="Item") Encoder = Callable[[Any], "Item"] CUSTOM_ENCODERS: list[Encoder] = [] AT = TypeVar("AT", bound="AbstractTable") class _ConvertError(TypeError, ValueError): """An internal error raised when item() fails to convert a value. It should be a TypeError, but due to historical reasons it needs to subclass ValueError as well. """ @overload def item(value: bool, _parent: Item | None = ..., _sort_keys: bool = ...) -> Bool: ... @overload def item(value: int, _parent: Item | None = ..., _sort_keys: bool = ...) -> Integer: ... @overload def item(value: float, _parent: Item | None = ..., _sort_keys: bool = ...) -> Float: ... @overload def item(value: str, _parent: Item | None = ..., _sort_keys: bool = ...) -> String: ... @overload def item( value: datetime, _parent: Item | None = ..., _sort_keys: bool = ... ) -> DateTime: ... @overload def item(value: date, _parent: Item | None = ..., _sort_keys: bool = ...) -> Date: ... @overload def item(value: time, _parent: Item | None = ..., _sort_keys: bool = ...) -> Time: ... @overload def item( value: Sequence[dict], _parent: Item | None = ..., _sort_keys: bool = ... ) -> AoT: ... @overload def item(value: Sequence, _parent: Item | None = ..., _sort_keys: bool = ...) -> Array: ... @overload def item(value: dict, _parent: Array = ..., _sort_keys: bool = ...) -> InlineTable: ... @overload def item(value: dict, _parent: Item | None = ..., _sort_keys: bool = ...) -> Table: ... @overload def item(value: ItemT, _parent: Item | None = ..., _sort_keys: bool = ...) -> ItemT: ... def item(value: Any, _parent: Item | None = None, _sort_keys: bool = False) -> Item: """Create a TOML item from a Python object. :Example: >>> item(42) 42 >>> item([1, 2, 3]) [1, 2, 3] >>> item({'a': 1, 'b': 2}) a = 1 b = 2 """ from tomlkit.container import Container if isinstance(value, Item): return value if isinstance(value, bool): return Bool(value, Trivia()) elif isinstance(value, int): return Integer(value, Trivia(), str(value)) elif isinstance(value, float): return Float(value, Trivia(), str(value)) elif isinstance(value, dict): table_constructor = ( InlineTable if isinstance(_parent, (Array, InlineTable)) else Table ) val = table_constructor(Container(), Trivia(), False) for k, v in sorted( value.items(), key=lambda i: (isinstance(i[1], dict), i[0]) if _sort_keys else 1, ): val[k] = item(v, _parent=val, _sort_keys=_sort_keys) return val elif isinstance(value, (list, tuple)): if ( value and all(isinstance(v, dict) for v in value) and (_parent is None or isinstance(_parent, Table)) ): a = AoT([]) table_constructor = Table else: a = Array([], Trivia()) table_constructor = InlineTable for v in value: if isinstance(v, dict): table = table_constructor(Container(), Trivia(), True) for k, _v in sorted( v.items(), key=lambda i: (isinstance(i[1], dict), i[0] if _sort_keys else 1), ): i = item(_v, _parent=table, _sort_keys=_sort_keys) if isinstance(table, InlineTable): i.trivia.trail = "" table[k] = i v = table a.append(v) return a elif isinstance(value, str): return String.from_raw(value) elif isinstance(value, datetime): return DateTime( value.year, value.month, value.day, value.hour, value.minute, value.second, value.microsecond, value.tzinfo, Trivia(), value.isoformat().replace("+00:00", "Z"), ) elif isinstance(value, date): return Date(value.year, value.month, value.day, Trivia(), value.isoformat()) elif isinstance(value, time): return Time( value.hour, value.minute, value.second, value.microsecond, value.tzinfo, Trivia(), value.isoformat(), ) else: for encoder in CUSTOM_ENCODERS: try: rv = encoder(value) except TypeError: pass else: if not isinstance(rv, Item): raise _ConvertError( f"Custom encoder returned {type(rv)}, not a subclass of Item" ) return rv raise _ConvertError(f"Invalid type {type(value)}") class StringType(Enum): # Single Line Basic SLB = '"' # Multi Line Basic MLB = '"""' # Single Line Literal SLL = "'" # Multi Line Literal MLL = "'''" @classmethod def select(cls, literal=False, multiline=False) -> StringType: return { (False, False): cls.SLB, (False, True): cls.MLB, (True, False): cls.SLL, (True, True): cls.MLL, }[(literal, multiline)] @property def escaped_sequences(self) -> Collection[str]: # https://toml.io/en/v1.0.0#string escaped_in_basic = CONTROL_CHARS | {"\\"} allowed_in_multiline = {"\n", "\r"} return { StringType.SLB: escaped_in_basic | {'"'}, StringType.MLB: (escaped_in_basic | {'"""'}) - allowed_in_multiline, StringType.SLL: (), StringType.MLL: (), }[self] @property def invalid_sequences(self) -> Collection[str]: # https://toml.io/en/v1.0.0#string forbidden_in_literal = CONTROL_CHARS - {"\t"} allowed_in_multiline = {"\n", "\r"} return { StringType.SLB: (), StringType.MLB: (), StringType.SLL: forbidden_in_literal | {"'"}, StringType.MLL: (forbidden_in_literal | {"'''"}) - allowed_in_multiline, }[self] @property def unit(self) -> str: return self.value[0] def is_basic(self) -> bool: return self in {StringType.SLB, StringType.MLB} def is_literal(self) -> bool: return self in {StringType.SLL, StringType.MLL} def is_singleline(self) -> bool: return self in {StringType.SLB, StringType.SLL} def is_multiline(self) -> bool: return self in {StringType.MLB, StringType.MLL} def toggle(self) -> StringType: return { StringType.SLB: StringType.MLB, StringType.MLB: StringType.SLB, StringType.SLL: StringType.MLL, StringType.MLL: StringType.SLL, }[self] class BoolType(Enum): TRUE = "true" FALSE = "false" def __bool__(self): return {BoolType.TRUE: True, BoolType.FALSE: False}[self] def __iter__(self): return iter(self.value) def __len__(self): return len(self.value) @dataclasses.dataclass class Trivia: """ Trivia information (aka metadata). """ # Whitespace before a value. indent: str = "" # Whitespace after a value, but before a comment. comment_ws: str = "" # Comment, starting with # character, or empty string if no comment. comment: str = "" # Trailing newline. trail: str = "\n" def copy(self) -> Trivia: return dataclasses.replace(self) class KeyType(Enum): """ The type of a Key. Keys can be bare (unquoted), or quoted using basic ("), or literal (') quotes following the same escaping rules as single-line StringType. """ Bare = "" Basic = '"' Literal = "'" class Key(abc.ABC): """Base class for a key""" sep: str _original: str _keys: list[SingleKey] _dotted: bool key: str @abc.abstractmethod def __hash__(self) -> int: pass @abc.abstractmethod def __eq__(self, __o: object) -> bool: pass def is_dotted(self) -> bool: """If the key is followed by other keys""" return self._dotted def __iter__(self) -> Iterator[SingleKey]: return iter(self._keys) def concat(self, other: Key) -> DottedKey: """Concatenate keys into a dotted key""" keys = self._keys + other._keys return DottedKey(keys, sep=self.sep) def is_multi(self) -> bool: """Check if the key contains multiple keys""" return len(self._keys) > 1 def as_string(self) -> str: """The TOML representation""" return self._original def __str__(self) -> str: return self.as_string() def __repr__(self) -> str: return f"" class SingleKey(Key): """A single key""" def __init__( self, k: str, t: KeyType | None = None, sep: str | None = None, original: str | None = None, ) -> None: if t is None: if not k or any( c not in string.ascii_letters + string.digits + "-" + "_" for c in k ): t = KeyType.Basic else: t = KeyType.Bare self.t = t if sep is None: sep = " = " self.sep = sep self.key = k if original is None: key_str = escape_string(k) if t == KeyType.Basic else k original = f"{t.value}{key_str}{t.value}" self._original = original self._keys = [self] self._dotted = False @property def delimiter(self) -> str: """The delimiter: double quote/single quote/none""" return self.t.value def is_bare(self) -> bool: """Check if the key is bare""" return self.t == KeyType.Bare def __hash__(self) -> int: return hash(self.key) def __eq__(self, other: Any) -> bool: if isinstance(other, Key): return isinstance(other, SingleKey) and self.key == other.key return self.key == other class DottedKey(Key): def __init__( self, keys: Iterable[SingleKey], sep: str | None = None, original: str | None = None, ) -> None: self._keys = list(keys) if original is None: original = ".".join(k.as_string() for k in self._keys) self.sep = " = " if sep is None else sep self._original = original self._dotted = False self.key = ".".join(k.key for k in self._keys) def __hash__(self) -> int: return hash(tuple(self._keys)) def __eq__(self, __o: object) -> bool: return isinstance(__o, DottedKey) and self._keys == __o._keys class Item: """ An item within a TOML document. """ def __init__(self, trivia: Trivia) -> None: self._trivia = trivia @property def trivia(self) -> Trivia: """The trivia element associated with this item""" return self._trivia @property def discriminant(self) -> int: raise NotImplementedError() def as_string(self) -> str: """The TOML representation""" raise NotImplementedError() @property def value(self) -> Any: return self def unwrap(self) -> Any: """Returns as pure python object (ppo)""" raise NotImplementedError() # Helpers def comment(self, comment: str) -> Item: """Attach a comment to this item""" if not comment.strip().startswith("#"): comment = "# " + comment self._trivia.comment_ws = " " self._trivia.comment = comment return self def indent(self, indent: int) -> Item: """Indent this item with given number of spaces""" if self._trivia.indent.startswith("\n"): self._trivia.indent = "\n" + " " * indent else: self._trivia.indent = " " * indent return self def is_boolean(self) -> bool: return isinstance(self, Bool) def is_table(self) -> bool: return isinstance(self, Table) def is_inline_table(self) -> bool: return isinstance(self, InlineTable) def is_aot(self) -> bool: return isinstance(self, AoT) def _getstate(self, protocol=3): return (self._trivia,) def __reduce__(self): return self.__reduce_ex__(2) def __reduce_ex__(self, protocol): return self.__class__, self._getstate(protocol) class Whitespace(Item): """ A whitespace literal. """ def __init__(self, s: str, fixed: bool = False) -> None: self._s = s self._fixed = fixed @property def s(self) -> str: return self._s @property def value(self) -> str: """The wrapped string of the whitespace""" return self._s @property def trivia(self) -> Trivia: raise RuntimeError("Called trivia on a Whitespace variant.") @property def discriminant(self) -> int: return 0 def is_fixed(self) -> bool: """If the whitespace is fixed, it can't be merged or discarded from the output.""" return self._fixed def as_string(self) -> str: return self._s def __repr__(self) -> str: return f"<{self.__class__.__name__} {repr(self._s)}>" def _getstate(self, protocol=3): return self._s, self._fixed class Comment(Item): """ A comment literal. """ @property def discriminant(self) -> int: return 1 def as_string(self) -> str: return ( f"{self._trivia.indent}{decode(self._trivia.comment)}{self._trivia.trail}" ) def __str__(self) -> str: return f"{self._trivia.indent}{decode(self._trivia.comment)}" class Integer(Item, _CustomInt): """ An integer literal. """ def __new__(cls, value: int, trivia: Trivia, raw: str) -> Integer: return int.__new__(cls, value) def __init__(self, value: int, trivia: Trivia, raw: str) -> None: super().__init__(trivia) self._original = value self._raw = raw self._sign = False if re.match(r"^[+\-]\d+$", raw): self._sign = True def unwrap(self) -> int: return self._original __int__ = unwrap def __hash__(self) -> int: return hash(self.unwrap()) @property def discriminant(self) -> int: return 2 @property def value(self) -> int: """The wrapped integer value""" return self def as_string(self) -> str: return self._raw def _new(self, result): raw = str(result) if self._sign: sign = "+" if result >= 0 else "-" raw = sign + raw return Integer(result, self._trivia, raw) def _getstate(self, protocol=3): return int(self), self._trivia, self._raw # int methods __abs__ = wrap_method(int.__abs__) __add__ = wrap_method(int.__add__) __and__ = wrap_method(int.__and__) __ceil__ = wrap_method(int.__ceil__) __eq__ = int.__eq__ __floor__ = wrap_method(int.__floor__) __floordiv__ = wrap_method(int.__floordiv__) __invert__ = wrap_method(int.__invert__) __le__ = int.__le__ __lshift__ = wrap_method(int.__lshift__) __lt__ = int.__lt__ __mod__ = wrap_method(int.__mod__) __mul__ = wrap_method(int.__mul__) __neg__ = wrap_method(int.__neg__) __or__ = wrap_method(int.__or__) __pos__ = wrap_method(int.__pos__) __pow__ = wrap_method(int.__pow__) __radd__ = wrap_method(int.__radd__) __rand__ = wrap_method(int.__rand__) __rfloordiv__ = wrap_method(int.__rfloordiv__) __rlshift__ = wrap_method(int.__rlshift__) __rmod__ = wrap_method(int.__rmod__) __rmul__ = wrap_method(int.__rmul__) __ror__ = wrap_method(int.__ror__) __round__ = wrap_method(int.__round__) __rpow__ = wrap_method(int.__rpow__) __rrshift__ = wrap_method(int.__rrshift__) __rshift__ = wrap_method(int.__rshift__) __rxor__ = wrap_method(int.__rxor__) __trunc__ = wrap_method(int.__trunc__) __xor__ = wrap_method(int.__xor__) def __rtruediv__(self, other): result = int.__rtruediv__(self, other) if result is NotImplemented: return result return Float._new(self, result) def __truediv__(self, other): result = int.__truediv__(self, other) if result is NotImplemented: return result return Float._new(self, result) class Float(Item, _CustomFloat): """ A float literal. """ def __new__(cls, value: float, trivia: Trivia, raw: str) -> Float: return float.__new__(cls, value) def __init__(self, value: float, trivia: Trivia, raw: str) -> None: super().__init__(trivia) self._original = value self._raw = raw self._sign = False if re.match(r"^[+\-].+$", raw): self._sign = True def unwrap(self) -> float: return self._original __float__ = unwrap def __hash__(self) -> int: return hash(self.unwrap()) @property def discriminant(self) -> int: return 3 @property def value(self) -> float: """The wrapped float value""" return self def as_string(self) -> str: return self._raw def _new(self, result): raw = str(result) if self._sign: sign = "+" if result >= 0 else "-" raw = sign + raw return Float(result, self._trivia, raw) def _getstate(self, protocol=3): return float(self), self._trivia, self._raw # float methods __abs__ = wrap_method(float.__abs__) __add__ = wrap_method(float.__add__) __eq__ = float.__eq__ __floordiv__ = wrap_method(float.__floordiv__) __le__ = float.__le__ __lt__ = float.__lt__ __mod__ = wrap_method(float.__mod__) __mul__ = wrap_method(float.__mul__) __neg__ = wrap_method(float.__neg__) __pos__ = wrap_method(float.__pos__) __pow__ = wrap_method(float.__pow__) __radd__ = wrap_method(float.__radd__) __rfloordiv__ = wrap_method(float.__rfloordiv__) __rmod__ = wrap_method(float.__rmod__) __rmul__ = wrap_method(float.__rmul__) __round__ = wrap_method(float.__round__) __rpow__ = wrap_method(float.__rpow__) __rtruediv__ = wrap_method(float.__rtruediv__) __truediv__ = wrap_method(float.__truediv__) __trunc__ = float.__trunc__ if sys.version_info >= (3, 9): __ceil__ = float.__ceil__ __floor__ = float.__floor__ else: __ceil__ = math.ceil __floor__ = math.floor class Bool(Item): """ A boolean literal. """ def __init__(self, t: int, trivia: Trivia) -> None: super().__init__(trivia) self._value = bool(t) def unwrap(self) -> bool: return bool(self) @property def discriminant(self) -> int: return 4 @property def value(self) -> bool: """The wrapped boolean value""" return self._value def as_string(self) -> str: return str(self._value).lower() def _getstate(self, protocol=3): return self._value, self._trivia def __bool__(self): return self._value __nonzero__ = __bool__ def __eq__(self, other): if not isinstance(other, bool): return NotImplemented return other == self._value def __hash__(self): return hash(self._value) def __repr__(self): return repr(self._value) class DateTime(Item, datetime): """ A datetime literal. """ def __new__( cls, year: int, month: int, day: int, hour: int, minute: int, second: int, microsecond: int, tzinfo: tzinfo | None, *_: Any, **kwargs: Any, ) -> datetime: return datetime.__new__( cls, year, month, day, hour, minute, second, microsecond, tzinfo=tzinfo, **kwargs, ) def __init__( self, year: int, month: int, day: int, hour: int, minute: int, second: int, microsecond: int, tzinfo: tzinfo | None, trivia: Trivia | None = None, raw: str | None = None, **kwargs: Any, ) -> None: super().__init__(trivia or Trivia()) self._raw = raw or self.isoformat() def unwrap(self) -> datetime: ( year, month, day, hour, minute, second, microsecond, tzinfo, _, _, ) = self._getstate() return datetime(year, month, day, hour, minute, second, microsecond, tzinfo) @property def discriminant(self) -> int: return 5 @property def value(self) -> datetime: return self def as_string(self) -> str: return self._raw def __add__(self, other): if PY38: result = datetime( self.year, self.month, self.day, self.hour, self.minute, self.second, self.microsecond, self.tzinfo, ).__add__(other) else: result = super().__add__(other) return self._new(result) def __sub__(self, other): if PY38: result = datetime( self.year, self.month, self.day, self.hour, self.minute, self.second, self.microsecond, self.tzinfo, ).__sub__(other) else: result = super().__sub__(other) if isinstance(result, datetime): result = self._new(result) return result def replace(self, *args: Any, **kwargs: Any) -> datetime: return self._new(super().replace(*args, **kwargs)) def astimezone(self, tz: tzinfo) -> datetime: result = super().astimezone(tz) if PY38: return result return self._new(result) def _new(self, result) -> DateTime: raw = result.isoformat() return DateTime( result.year, result.month, result.day, result.hour, result.minute, result.second, result.microsecond, result.tzinfo, self._trivia, raw, ) def _getstate(self, protocol=3): return ( self.year, self.month, self.day, self.hour, self.minute, self.second, self.microsecond, self.tzinfo, self._trivia, self._raw, ) class Date(Item, date): """ A date literal. """ def __new__(cls, year: int, month: int, day: int, *_: Any) -> date: return date.__new__(cls, year, month, day) def __init__( self, year: int, month: int, day: int, trivia: Trivia, raw: str ) -> None: super().__init__(trivia) self._raw = raw def unwrap(self) -> date: (year, month, day, _, _) = self._getstate() return date(year, month, day) @property def discriminant(self) -> int: return 6 @property def value(self) -> date: return self def as_string(self) -> str: return self._raw def __add__(self, other): if PY38: result = date(self.year, self.month, self.day).__add__(other) else: result = super().__add__(other) return self._new(result) def __sub__(self, other): if PY38: result = date(self.year, self.month, self.day).__sub__(other) else: result = super().__sub__(other) if isinstance(result, date): result = self._new(result) return result def replace(self, *args: Any, **kwargs: Any) -> date: return self._new(super().replace(*args, **kwargs)) def _new(self, result): raw = result.isoformat() return Date(result.year, result.month, result.day, self._trivia, raw) def _getstate(self, protocol=3): return (self.year, self.month, self.day, self._trivia, self._raw) class Time(Item, time): """ A time literal. """ def __new__( cls, hour: int, minute: int, second: int, microsecond: int, tzinfo: tzinfo | None, *_: Any, ) -> time: return time.__new__(cls, hour, minute, second, microsecond, tzinfo) def __init__( self, hour: int, minute: int, second: int, microsecond: int, tzinfo: tzinfo | None, trivia: Trivia, raw: str, ) -> None: super().__init__(trivia) self._raw = raw def unwrap(self) -> time: (hour, minute, second, microsecond, tzinfo, _, _) = self._getstate() return time(hour, minute, second, microsecond, tzinfo) @property def discriminant(self) -> int: return 7 @property def value(self) -> time: return self def as_string(self) -> str: return self._raw def replace(self, *args: Any, **kwargs: Any) -> time: return self._new(super().replace(*args, **kwargs)) def _new(self, result): raw = result.isoformat() return Time( result.hour, result.minute, result.second, result.microsecond, result.tzinfo, self._trivia, raw, ) def _getstate(self, protocol: int = 3) -> tuple: return ( self.hour, self.minute, self.second, self.microsecond, self.tzinfo, self._trivia, self._raw, ) class _ArrayItemGroup: __slots__ = ("value", "indent", "comma", "comment") def __init__( self, value: Item | None = None, indent: Whitespace | None = None, comma: Whitespace | None = None, comment: Comment | None = None, ) -> None: self.value = value self.indent = indent self.comma = comma self.comment = comment def __iter__(self) -> Iterator[Item]: return filter( lambda x: x is not None, (self.indent, self.value, self.comma, self.comment) ) def __repr__(self) -> str: return repr(tuple(self)) def is_whitespace(self) -> bool: return self.value is None and self.comment is None def __bool__(self) -> bool: try: next(iter(self)) except StopIteration: return False return True class Array(Item, _CustomList): """ An array literal """ def __init__( self, value: list[Item], trivia: Trivia, multiline: bool = False ) -> None: super().__init__(trivia) list.__init__( self, [v for v in value if not isinstance(v, (Whitespace, Comment, Null))], ) self._index_map: dict[int, int] = {} self._value = self._group_values(value) self._multiline = multiline self._reindex() def _group_values(self, value: list[Item]) -> list[_ArrayItemGroup]: """Group the values into (indent, value, comma, comment) tuples""" groups = [] this_group = _ArrayItemGroup() for item in value: if isinstance(item, Whitespace): if "," not in item.s: groups.append(this_group) this_group = _ArrayItemGroup(indent=item) else: if this_group.value is None: # when comma is met and no value is provided, add a dummy Null this_group.value = Null() this_group.comma = item elif isinstance(item, Comment): if this_group.value is None: this_group.value = Null() this_group.comment = item elif this_group.value is None: this_group.value = item else: groups.append(this_group) this_group = _ArrayItemGroup(value=item) groups.append(this_group) return [group for group in groups if group] def unwrap(self) -> list[Any]: unwrapped = [] for v in self: if hasattr(v, "unwrap"): unwrapped.append(v.unwrap()) else: unwrapped.append(v) return unwrapped @property def discriminant(self) -> int: return 8 @property def value(self) -> list: return self def _iter_items(self) -> Iterator[Item]: for v in self._value: yield from v def multiline(self, multiline: bool) -> Array: """Change the array to display in multiline or not. :Example: >>> a = item([1, 2, 3]) >>> print(a.as_string()) [1, 2, 3] >>> print(a.multiline(True).as_string()) [ 1, 2, 3, ] """ self._multiline = multiline return self def as_string(self) -> str: if not self._multiline or not self._value: return f'[{"".join(v.as_string() for v in self._iter_items())}]' s = "[\n" s += "".join( self.trivia.indent + " " * 4 + v.value.as_string() + ("," if not isinstance(v.value, Null) else "") + (v.comment.as_string() if v.comment is not None else "") + "\n" for v in self._value if v.value is not None ) s += self.trivia.indent + "]" return s def _reindex(self) -> None: self._index_map.clear() index = 0 for i, v in enumerate(self._value): if v.value is None or isinstance(v.value, Null): continue self._index_map[index] = i index += 1 def add_line( self, *items: Any, indent: str = " ", comment: str | None = None, add_comma: bool = True, newline: bool = True, ) -> None: """Add multiple items in a line to control the format precisely. When add_comma is True, only accept actual values and ", " will be added between values automatically. :Example: >>> a = array() >>> a.add_line(1, 2, 3) >>> a.add_line(4, 5, 6) >>> a.add_line(indent="") >>> print(a.as_string()) [ 1, 2, 3, 4, 5, 6, ] """ new_values: list[Item] = [] first_indent = f"\n{indent}" if newline else indent if first_indent: new_values.append(Whitespace(first_indent)) whitespace = "" data_values = [] for i, el in enumerate(items): it = item(el, _parent=self) if isinstance(it, Comment) or add_comma and isinstance(el, Whitespace): raise ValueError(f"item type {type(it)} is not allowed in add_line") if not isinstance(it, Whitespace): if whitespace: new_values.append(Whitespace(whitespace)) whitespace = "" new_values.append(it) data_values.append(it.value) if add_comma: new_values.append(Whitespace(",")) if i != len(items) - 1: new_values.append(Whitespace(" ")) elif "," not in it.s: whitespace += it.s else: new_values.append(it) if whitespace: new_values.append(Whitespace(whitespace)) if comment: indent = " " if items else "" new_values.append( Comment(Trivia(indent=indent, comment=f"# {comment}", trail="")) ) list.extend(self, data_values) if len(self._value) > 0: last_item = self._value[-1] last_value_item = next( ( v for v in self._value[::-1] if v.value is not None and not isinstance(v.value, Null) ), None, ) if last_value_item is not None: last_value_item.comma = Whitespace(",") if last_item.is_whitespace(): self._value[-1:-1] = self._group_values(new_values) else: self._value.extend(self._group_values(new_values)) else: self._value.extend(self._group_values(new_values)) self._reindex() def clear(self) -> None: """Clear the array.""" list.clear(self) self._index_map.clear() self._value.clear() def __len__(self) -> int: return list.__len__(self) def __getitem__(self, key: int | slice) -> Any: rv = cast(Item, list.__getitem__(self, key)) if rv.is_boolean(): return bool(rv) return rv def __setitem__(self, key: int | slice, value: Any) -> Any: it = item(value, _parent=self) list.__setitem__(self, key, it) if isinstance(key, slice): raise ValueError("slice assignment is not supported") if key < 0: key += len(self) self._value[self._index_map[key]].value = it def insert(self, pos: int, value: Any) -> None: it = item(value, _parent=self) length = len(self) if not isinstance(it, (Comment, Whitespace)): list.insert(self, pos, it) if pos < 0: pos += length if pos < 0: pos = 0 idx = 0 # insert position of the self._value list default_indent = " " if pos < length: try: idx = self._index_map[pos] except KeyError as e: raise IndexError("list index out of range") from e else: idx = len(self._value) if idx >= 1 and self._value[idx - 1].is_whitespace(): # The last item is a pure whitespace(\n ), insert before it idx -= 1 if ( self._value[idx].indent is not None and "\n" in self._value[idx].indent.s ): default_indent = "\n " indent: Item | None = None comma: Item | None = Whitespace(",") if pos < length else None if idx < len(self._value) and not self._value[idx].is_whitespace(): # Prefer to copy the indentation from the item after indent = self._value[idx].indent if idx > 0: last_item = self._value[idx - 1] if indent is None: indent = last_item.indent if not isinstance(last_item.value, Null) and "\n" in default_indent: # Copy the comma from the last item if 1) it contains a value and # 2) the array is multiline comma = last_item.comma if last_item.comma is None and not isinstance(last_item.value, Null): # Add comma to the last item to separate it from the following items. last_item.comma = Whitespace(",") if indent is None and (idx > 0 or "\n" in default_indent): # apply default indent if it isn't the first item or the array is multiline. indent = Whitespace(default_indent) new_item = _ArrayItemGroup(value=it, indent=indent, comma=comma) self._value.insert(idx, new_item) self._reindex() def __delitem__(self, key: int | slice): length = len(self) list.__delitem__(self, key) if isinstance(key, slice): indices_to_remove = list( range(key.start or 0, key.stop or length, key.step or 1) ) else: indices_to_remove = [length + key if key < 0 else key] for i in sorted(indices_to_remove, reverse=True): try: idx = self._index_map[i] except KeyError as e: if not isinstance(key, slice): raise IndexError("list index out of range") from e else: del self._value[idx] if ( idx == 0 and len(self._value) > 0 and self._value[idx].indent and "\n" not in self._value[idx].indent.s ): # Remove the indentation of the first item if not newline self._value[idx].indent = None if len(self._value) > 0: v = self._value[-1] if not v.is_whitespace(): # remove the comma of the last item v.comma = None self._reindex() def _getstate(self, protocol=3): return list(self._iter_items()), self._trivia, self._multiline class AbstractTable(Item, _CustomDict): """Common behaviour of both :class:`Table` and :class:`InlineTable`""" def __init__(self, value: container.Container, trivia: Trivia): Item.__init__(self, trivia) self._value = value for k, v in self._value.body: if k is not None: dict.__setitem__(self, k.key, v) def unwrap(self) -> dict[str, Any]: unwrapped = {} for k, v in self.items(): if isinstance(k, Key): k = k.key if hasattr(v, "unwrap"): v = v.unwrap() unwrapped[k] = v return unwrapped @property def value(self) -> container.Container: return self._value @overload def append(self: AT, key: None, value: Comment | Whitespace) -> AT: ... @overload def append(self: AT, key: Key | str, value: Any) -> AT: ... def append(self, key, value): raise NotImplementedError @overload def add(self: AT, key: Comment | Whitespace) -> AT: ... @overload def add(self: AT, key: Key | str, value: Any = ...) -> AT: ... def add(self, key, value=None): if value is None: if not isinstance(key, (Comment, Whitespace)): msg = "Non comment/whitespace items must have an associated key" raise ValueError(msg) key, value = None, key return self.append(key, value) def remove(self: AT, key: Key | str) -> AT: self._value.remove(key) if isinstance(key, Key): key = key.key if key is not None: dict.__delitem__(self, key) return self def setdefault(self, key: Key | str, default: Any) -> Any: super().setdefault(key, default) return self[key] def __str__(self): return str(self.value) def copy(self: AT) -> AT: return copy.copy(self) def __repr__(self) -> str: return repr(self.value) def __iter__(self) -> Iterator[str]: return iter(self._value) def __len__(self) -> int: return len(self._value) def __delitem__(self, key: Key | str) -> None: self.remove(key) def __getitem__(self, key: Key | str) -> Item: return cast(Item, self._value[key]) def __setitem__(self, key: Key | str, value: Any) -> None: if not isinstance(value, Item): value = item(value, _parent=self) is_replace = key in self self._value[key] = value if key is not None: dict.__setitem__(self, key, value) if is_replace: return m = re.match("(?s)^[^ ]*([ ]+).*$", self._trivia.indent) if not m: return indent = m.group(1) if not isinstance(value, Whitespace): m = re.match("(?s)^([^ ]*)(.*)$", value.trivia.indent) if not m: value.trivia.indent = indent else: value.trivia.indent = m.group(1) + indent + m.group(2) class Table(AbstractTable): """ A table literal. """ def __init__( self, value: container.Container, trivia: Trivia, is_aot_element: bool, is_super_table: bool | None = None, name: str | None = None, display_name: str | None = None, ) -> None: super().__init__(value, trivia) self.name = name self.display_name = display_name self._is_aot_element = is_aot_element self._is_super_table = is_super_table @property def discriminant(self) -> int: return 9 def __copy__(self) -> Table: return type(self)( self._value.copy(), self._trivia.copy(), self._is_aot_element, self._is_super_table, self.name, self.display_name, ) def append(self, key: Key | str | None, _item: Any) -> Table: """ Appends a (key, item) to the table. """ if not isinstance(_item, Item): _item = item(_item, _parent=self) self._value.append(key, _item) if isinstance(key, Key): key = next(iter(key)).key _item = self._value[key] if key is not None: dict.__setitem__(self, key, _item) m = re.match(r"(?s)^[^ ]*([ ]+).*$", self._trivia.indent) if not m: return self indent = m.group(1) if not isinstance(_item, Whitespace): m = re.match("(?s)^([^ ]*)(.*)$", _item.trivia.indent) if not m: _item.trivia.indent = indent else: _item.trivia.indent = m.group(1) + indent + m.group(2) return self def raw_append(self, key: Key | str | None, _item: Any) -> Table: """Similar to :meth:`append` but does not copy indentation.""" if not isinstance(_item, Item): _item = item(_item) self._value.append(key, _item, validate=False) if isinstance(key, Key): key = next(iter(key)).key _item = self._value[key] if key is not None: dict.__setitem__(self, key, _item) return self def is_aot_element(self) -> bool: """True if the table is the direct child of an AOT element.""" return self._is_aot_element def is_super_table(self) -> bool: """A super table is the intermediate parent of a nested table as in [a.b.c]. If true, it won't appear in the TOML representation.""" if self._is_super_table is not None: return self._is_super_table # If the table has only one child and that child is a table, then it is a super table. if len(self) != 1: return False only_child = next(iter(self.values())) return isinstance(only_child, (Table, AoT)) def as_string(self) -> str: return self._value.as_string() # Helpers def indent(self, indent: int) -> Table: """Indent the table with given number of spaces.""" super().indent(indent) m = re.match("(?s)^[^ ]*([ ]+).*$", self._trivia.indent) if not m: indent_str = "" else: indent_str = m.group(1) for _, item in self._value.body: if not isinstance(item, Whitespace): item.trivia.indent = indent_str + item.trivia.indent return self def invalidate_display_name(self): """Call ``invalidate_display_name`` on the contained tables""" self.display_name = None for child in self.values(): if hasattr(child, "invalidate_display_name"): child.invalidate_display_name() def _getstate(self, protocol: int = 3) -> tuple: return ( self._value, self._trivia, self._is_aot_element, self._is_super_table, self.name, self.display_name, ) class InlineTable(AbstractTable): """ An inline table literal. """ def __init__( self, value: container.Container, trivia: Trivia, new: bool = False ) -> None: super().__init__(value, trivia) self._new = new @property def discriminant(self) -> int: return 10 def append(self, key: Key | str | None, _item: Any) -> InlineTable: """ Appends a (key, item) to the table. """ if not isinstance(_item, Item): _item = item(_item, _parent=self) if not isinstance(_item, (Whitespace, Comment)): if not _item.trivia.indent and len(self._value) > 0 and not self._new: _item.trivia.indent = " " if _item.trivia.comment: _item.trivia.comment = "" self._value.append(key, _item) if isinstance(key, Key): key = key.key if key is not None: dict.__setitem__(self, key, _item) return self def as_string(self) -> str: buf = "{" last_item_idx = next( ( i for i in range(len(self._value.body) - 1, -1, -1) if self._value.body[i][0] is not None ), None, ) for i, (k, v) in enumerate(self._value.body): if k is None: if i == len(self._value.body) - 1: if self._new: buf = buf.rstrip(", ") else: buf = buf.rstrip(",") buf += v.as_string() continue v_trivia_trail = v.trivia.trail.replace("\n", "") buf += ( f"{v.trivia.indent}" f'{k.as_string() + ("." if k.is_dotted() else "")}' f"{k.sep}" f"{v.as_string()}" f"{v.trivia.comment}" f"{v_trivia_trail}" ) if last_item_idx is not None and i < last_item_idx: buf += "," if self._new: buf += " " buf += "}" return buf def __setitem__(self, key: Key | str, value: Any) -> None: if hasattr(value, "trivia") and value.trivia.comment: value.trivia.comment = "" super().__setitem__(key, value) def __copy__(self) -> InlineTable: return type(self)(self._value.copy(), self._trivia.copy(), self._new) def _getstate(self, protocol: int = 3) -> tuple: return (self._value, self._trivia) class String(str, Item): """ A string literal. """ def __new__(cls, t, value, original, trivia): return super().__new__(cls, value) def __init__(self, t: StringType, _: str, original: str, trivia: Trivia) -> None: super().__init__(trivia) self._t = t self._original = original def unwrap(self) -> str: return str(self) @property def discriminant(self) -> int: return 11 @property def value(self) -> str: return self def as_string(self) -> str: return f"{self._t.value}{decode(self._original)}{self._t.value}" def __add__(self: ItemT, other: str) -> ItemT: if not isinstance(other, str): return NotImplemented result = super().__add__(other) original = self._original + getattr(other, "_original", other) return self._new(result, original) def _new(self, result: str, original: str) -> String: return String(self._t, result, original, self._trivia) def _getstate(self, protocol=3): return self._t, str(self), self._original, self._trivia @classmethod def from_raw(cls, value: str, type_=StringType.SLB, escape=True) -> String: value = decode(value) invalid = type_.invalid_sequences if any(c in value for c in invalid): raise InvalidStringError(value, invalid, type_.value) escaped = type_.escaped_sequences string_value = escape_string(value, escaped) if escape and escaped else value return cls(type_, decode(value), string_value, Trivia()) class AoT(Item, _CustomList): """ An array of table literal """ def __init__( self, body: list[Table], name: str | None = None, parsed: bool = False ) -> None: self.name = name self._body: list[Table] = [] self._parsed = parsed super().__init__(Trivia(trail="")) for table in body: self.append(table) def unwrap(self) -> list[dict[str, Any]]: unwrapped = [] for t in self._body: if hasattr(t, "unwrap"): unwrapped.append(t.unwrap()) else: unwrapped.append(t) return unwrapped @property def body(self) -> list[Table]: return self._body @property def discriminant(self) -> int: return 12 @property def value(self) -> list[dict[Any, Any]]: return [v.value for v in self._body] def __len__(self) -> int: return len(self._body) @overload def __getitem__(self, key: slice) -> list[Table]: ... @overload def __getitem__(self, key: int) -> Table: ... def __getitem__(self, key): return self._body[key] def __setitem__(self, key: slice | int, value: Any) -> None: raise NotImplementedError def __delitem__(self, key: slice | int) -> None: del self._body[key] list.__delitem__(self, key) def insert(self, index: int, value: dict) -> None: value = item(value, _parent=self) if not isinstance(value, Table): raise ValueError(f"Unsupported insert value type: {type(value)}") length = len(self) if index < 0: index += length if index < 0: index = 0 elif index >= length: index = length m = re.match("(?s)^[^ ]*([ ]+).*$", self._trivia.indent) if m: indent = m.group(1) m = re.match("(?s)^([^ ]*)(.*)$", value.trivia.indent) if not m: value.trivia.indent = indent else: value.trivia.indent = m.group(1) + indent + m.group(2) prev_table = self._body[index - 1] if 0 < index and length else None next_table = self._body[index + 1] if index < length - 1 else None if not self._parsed: if prev_table and "\n" not in value.trivia.indent: value.trivia.indent = "\n" + value.trivia.indent if next_table and "\n" not in next_table.trivia.indent: next_table.trivia.indent = "\n" + next_table.trivia.indent self._body.insert(index, value) list.insert(self, index, value) def invalidate_display_name(self): """Call ``invalidate_display_name`` on the contained tables""" for child in self: if hasattr(child, "invalidate_display_name"): child.invalidate_display_name() def as_string(self) -> str: b = "" for table in self._body: b += table.as_string() return b def __repr__(self) -> str: return f"" def _getstate(self, protocol=3): return self._body, self.name, self._parsed class Null(Item): """ A null item. """ def __init__(self) -> None: super().__init__(Trivia(trail="")) def unwrap(self) -> None: return None @property def discriminant(self) -> int: return -1 @property def value(self) -> None: return None def as_string(self) -> str: return "" def _getstate(self, protocol=3) -> tuple: return () ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4344366 tomlkit-0.12.4/tomlkit/parser.py0000644000000000000000000011201114567257576013564 0ustar00from __future__ import annotations import datetime import re import string from tomlkit._compat import decode from tomlkit._utils import RFC_3339_LOOSE from tomlkit._utils import _escaped from tomlkit._utils import parse_rfc3339 from tomlkit.container import Container from tomlkit.exceptions import EmptyKeyError from tomlkit.exceptions import EmptyTableNameError from tomlkit.exceptions import InternalParserError from tomlkit.exceptions import InvalidCharInStringError from tomlkit.exceptions import InvalidControlChar from tomlkit.exceptions import InvalidDateError from tomlkit.exceptions import InvalidDateTimeError from tomlkit.exceptions import InvalidNumberError from tomlkit.exceptions import InvalidTimeError from tomlkit.exceptions import InvalidUnicodeValueError from tomlkit.exceptions import ParseError from tomlkit.exceptions import UnexpectedCharError from tomlkit.exceptions import UnexpectedEofError from tomlkit.items import AoT from tomlkit.items import Array from tomlkit.items import Bool from tomlkit.items import BoolType from tomlkit.items import Comment from tomlkit.items import Date from tomlkit.items import DateTime from tomlkit.items import Float from tomlkit.items import InlineTable from tomlkit.items import Integer from tomlkit.items import Item from tomlkit.items import Key from tomlkit.items import KeyType from tomlkit.items import Null from tomlkit.items import SingleKey from tomlkit.items import String from tomlkit.items import StringType from tomlkit.items import Table from tomlkit.items import Time from tomlkit.items import Trivia from tomlkit.items import Whitespace from tomlkit.source import Source from tomlkit.toml_char import TOMLChar from tomlkit.toml_document import TOMLDocument CTRL_I = 0x09 # Tab CTRL_J = 0x0A # Line feed CTRL_M = 0x0D # Carriage return CTRL_CHAR_LIMIT = 0x1F CHR_DEL = 0x7F class Parser: """ Parser for TOML documents. """ def __init__(self, string: str | bytes) -> None: # Input to parse self._src = Source(decode(string)) self._aot_stack: list[Key] = [] @property def _state(self): return self._src.state @property def _idx(self): return self._src.idx @property def _current(self): return self._src.current @property def _marker(self): return self._src.marker def extract(self) -> str: """ Extracts the value between marker and index """ return self._src.extract() def inc(self, exception: type[ParseError] | None = None) -> bool: """ Increments the parser if the end of the input has not been reached. Returns whether or not it was able to advance. """ return self._src.inc(exception=exception) def inc_n(self, n: int, exception: type[ParseError] | None = None) -> bool: """ Increments the parser by n characters if the end of the input has not been reached. """ return self._src.inc_n(n=n, exception=exception) def consume(self, chars, min=0, max=-1): """ Consume chars until min/max is satisfied is valid. """ return self._src.consume(chars=chars, min=min, max=max) def end(self) -> bool: """ Returns True if the parser has reached the end of the input. """ return self._src.end() def mark(self) -> None: """ Sets the marker to the index's current position """ self._src.mark() def parse_error(self, exception=ParseError, *args, **kwargs): """ Creates a generic "parse error" at the current position. """ return self._src.parse_error(exception, *args, **kwargs) def parse(self) -> TOMLDocument: body = TOMLDocument(True) # Take all keyvals outside of tables/AoT's. while not self.end(): # Break out if a table is found if self._current == "[": break # Otherwise, take and append one KV item = self._parse_item() if not item: break key, value = item if (key is not None and key.is_multi()) or not self._merge_ws(value, body): # We actually have a table try: body.append(key, value) except Exception as e: raise self.parse_error(ParseError, str(e)) from e self.mark() while not self.end(): key, value = self._parse_table() if isinstance(value, Table) and value.is_aot_element(): # This is just the first table in an AoT. Parse the rest of the array # along with it. value = self._parse_aot(value, key) try: body.append(key, value) except Exception as e: raise self.parse_error(ParseError, str(e)) from e body.parsing(False) return body def _merge_ws(self, item: Item, container: Container) -> bool: """ Merges the given Item with the last one currently in the given Container if both are whitespace items. Returns True if the items were merged. """ last = container.last_item() if not last: return False if not isinstance(item, Whitespace) or not isinstance(last, Whitespace): return False start = self._idx - (len(last.s) + len(item.s)) container.body[-1] = ( container.body[-1][0], Whitespace(self._src[start : self._idx]), ) return True def _is_child(self, parent: Key, child: Key) -> bool: """ Returns whether a key is strictly a child of another key. AoT siblings are not considered children of one another. """ parent_parts = tuple(parent) child_parts = tuple(child) if parent_parts == child_parts: return False return parent_parts == child_parts[: len(parent_parts)] def _parse_item(self) -> tuple[Key | None, Item] | None: """ Attempts to parse the next item and returns it, along with its key if the item is value-like. """ self.mark() with self._state as state: while True: c = self._current if c == "\n": # Found a newline; Return all whitespace found up to this point. self.inc() return None, Whitespace(self.extract()) elif c in " \t\r": # Skip whitespace. if not self.inc(): return None, Whitespace(self.extract()) elif c == "#": # Found a comment, parse it indent = self.extract() cws, comment, trail = self._parse_comment_trail() return None, Comment(Trivia(indent, cws, comment, trail)) elif c == "[": # Found a table, delegate to the calling function. return else: # Beginning of a KV pair. # Return to beginning of whitespace so it gets included # as indentation for the KV about to be parsed. state.restore = True break return self._parse_key_value(True) def _parse_comment_trail(self, parse_trail: bool = True) -> tuple[str, str, str]: """ Returns (comment_ws, comment, trail) If there is no comment, comment_ws and comment will simply be empty. """ if self.end(): return "", "", "" comment = "" comment_ws = "" self.mark() while True: c = self._current if c == "\n": break elif c == "#": comment_ws = self.extract() self.mark() self.inc() # Skip # # The comment itself while not self.end() and not self._current.is_nl(): code = ord(self._current) if code == CHR_DEL or code <= CTRL_CHAR_LIMIT and code != CTRL_I: raise self.parse_error(InvalidControlChar, code, "comments") if not self.inc(): break comment = self.extract() self.mark() break elif c in " \t\r": self.inc() else: raise self.parse_error(UnexpectedCharError, c) if self.end(): break trail = "" if parse_trail: while self._current.is_spaces() and self.inc(): pass if self._current == "\r": self.inc() if self._current == "\n": self.inc() if self._idx != self._marker or self._current.is_ws(): trail = self.extract() return comment_ws, comment, trail def _parse_key_value(self, parse_comment: bool = False) -> tuple[Key, Item]: # Leading indent self.mark() while self._current.is_spaces() and self.inc(): pass indent = self.extract() # Key key = self._parse_key() self.mark() found_equals = self._current == "=" while self._current.is_kv_sep() and self.inc(): if self._current == "=": if found_equals: raise self.parse_error(UnexpectedCharError, "=") else: found_equals = True if not found_equals: raise self.parse_error(UnexpectedCharError, self._current) if not key.sep: key.sep = self.extract() else: key.sep += self.extract() # Value val = self._parse_value() # Comment if parse_comment: cws, comment, trail = self._parse_comment_trail() meta = val.trivia if not meta.comment_ws: meta.comment_ws = cws meta.comment = comment meta.trail = trail else: val.trivia.trail = "" val.trivia.indent = indent return key, val def _parse_key(self) -> Key: """ Parses a Key at the current position; WS before the key must be exhausted first at the callsite. """ self.mark() while self._current.is_spaces() and self.inc(): # Skip any leading whitespace pass if self._current in "\"'": return self._parse_quoted_key() else: return self._parse_bare_key() def _parse_quoted_key(self) -> Key: """ Parses a key enclosed in either single or double quotes. """ # Extract the leading whitespace original = self.extract() quote_style = self._current key_type = next((t for t in KeyType if t.value == quote_style), None) if key_type is None: raise RuntimeError("Should not have entered _parse_quoted_key()") key_str = self._parse_string( StringType.SLB if key_type == KeyType.Basic else StringType.SLL ) if key_str._t.is_multiline(): raise self.parse_error(UnexpectedCharError, key_str._t.value) original += key_str.as_string() self.mark() while self._current.is_spaces() and self.inc(): pass original += self.extract() key = SingleKey(str(key_str), t=key_type, sep="", original=original) if self._current == ".": self.inc() key = key.concat(self._parse_key()) return key def _parse_bare_key(self) -> Key: """ Parses a bare key. """ while ( self._current.is_bare_key_char() or self._current.is_spaces() ) and self.inc(): pass original = self.extract() key = original.strip() if not key: # Empty key raise self.parse_error(EmptyKeyError) if " " in key: # Bare key with spaces in it raise self.parse_error(ParseError, f'Invalid key "{key}"') key = SingleKey(key, KeyType.Bare, "", original) if self._current == ".": self.inc() key = key.concat(self._parse_key()) return key def _parse_value(self) -> Item: """ Attempts to parse a value at the current position. """ self.mark() c = self._current trivia = Trivia() if c == StringType.SLB.value: return self._parse_basic_string() elif c == StringType.SLL.value: return self._parse_literal_string() elif c == BoolType.TRUE.value[0]: return self._parse_true() elif c == BoolType.FALSE.value[0]: return self._parse_false() elif c == "[": return self._parse_array() elif c == "{": return self._parse_inline_table() elif c in "+-" or self._peek(4) in { "+inf", "-inf", "inf", "+nan", "-nan", "nan", }: # Number while self._current not in " \t\n\r#,]}" and self.inc(): pass raw = self.extract() item = self._parse_number(raw, trivia) if item is not None: return item raise self.parse_error(InvalidNumberError) elif c in string.digits: # Integer, Float, Date, Time or DateTime while self._current not in " \t\n\r#,]}" and self.inc(): pass raw = self.extract() m = RFC_3339_LOOSE.match(raw) if m: if m.group(1) and m.group(5): # datetime try: dt = parse_rfc3339(raw) assert isinstance(dt, datetime.datetime) return DateTime( dt.year, dt.month, dt.day, dt.hour, dt.minute, dt.second, dt.microsecond, dt.tzinfo, trivia, raw, ) except ValueError: raise self.parse_error(InvalidDateTimeError) if m.group(1): try: dt = parse_rfc3339(raw) assert isinstance(dt, datetime.date) date = Date(dt.year, dt.month, dt.day, trivia, raw) self.mark() while self._current not in "\t\n\r#,]}" and self.inc(): pass time_raw = self.extract() time_part = time_raw.rstrip() trivia.comment_ws = time_raw[len(time_part) :] if not time_part: return date dt = parse_rfc3339(raw + time_part) assert isinstance(dt, datetime.datetime) return DateTime( dt.year, dt.month, dt.day, dt.hour, dt.minute, dt.second, dt.microsecond, dt.tzinfo, trivia, raw + time_part, ) except ValueError: raise self.parse_error(InvalidDateError) if m.group(5): try: t = parse_rfc3339(raw) assert isinstance(t, datetime.time) return Time( t.hour, t.minute, t.second, t.microsecond, t.tzinfo, trivia, raw, ) except ValueError: raise self.parse_error(InvalidTimeError) item = self._parse_number(raw, trivia) if item is not None: return item raise self.parse_error(InvalidNumberError) else: raise self.parse_error(UnexpectedCharError, c) def _parse_true(self): return self._parse_bool(BoolType.TRUE) def _parse_false(self): return self._parse_bool(BoolType.FALSE) def _parse_bool(self, style: BoolType) -> Bool: with self._state: style = BoolType(style) # only keep parsing for bool if the characters match the style # try consuming rest of chars in style for c in style: self.consume(c, min=1, max=1) return Bool(style, Trivia()) def _parse_array(self) -> Array: # Consume opening bracket, EOF here is an issue (middle of array) self.inc(exception=UnexpectedEofError) elems: list[Item] = [] prev_value = None while True: # consume whitespace mark = self._idx self.consume(TOMLChar.SPACES + TOMLChar.NL) indent = self._src[mark : self._idx] newline = set(TOMLChar.NL) & set(indent) if newline: elems.append(Whitespace(indent)) continue # consume comment if self._current == "#": cws, comment, trail = self._parse_comment_trail(parse_trail=False) elems.append(Comment(Trivia(indent, cws, comment, trail))) continue # consume indent if indent: elems.append(Whitespace(indent)) continue # consume value if not prev_value: try: elems.append(self._parse_value()) prev_value = True continue except UnexpectedCharError: pass # consume comma if prev_value and self._current == ",": self.inc(exception=UnexpectedEofError) elems.append(Whitespace(",")) prev_value = False continue # consume closing bracket if self._current == "]": # consume closing bracket, EOF here doesn't matter self.inc() break raise self.parse_error(UnexpectedCharError, self._current) try: res = Array(elems, Trivia()) except ValueError: pass else: return res def _parse_inline_table(self) -> InlineTable: # consume opening bracket, EOF here is an issue (middle of array) self.inc(exception=UnexpectedEofError) elems = Container(True) trailing_comma = None while True: # consume leading whitespace mark = self._idx self.consume(TOMLChar.SPACES) raw = self._src[mark : self._idx] if raw: elems.add(Whitespace(raw)) if not trailing_comma: # None: empty inline table # False: previous key-value pair was not followed by a comma if self._current == "}": # consume closing bracket, EOF here doesn't matter self.inc() break if ( trailing_comma is False or trailing_comma is None and self._current == "," ): # Either the previous key-value pair was not followed by a comma # or the table has an unexpected leading comma. raise self.parse_error(UnexpectedCharError, self._current) else: # True: previous key-value pair was followed by a comma if self._current == "}" or self._current == ",": raise self.parse_error(UnexpectedCharError, self._current) key, val = self._parse_key_value(False) elems.add(key, val) # consume trailing whitespace mark = self._idx self.consume(TOMLChar.SPACES) raw = self._src[mark : self._idx] if raw: elems.add(Whitespace(raw)) # consume trailing comma trailing_comma = self._current == "," if trailing_comma: # consume closing bracket, EOF here is an issue (middle of inline table) self.inc(exception=UnexpectedEofError) return InlineTable(elems, Trivia()) def _parse_number(self, raw: str, trivia: Trivia) -> Item | None: # Leading zeros are not allowed sign = "" if raw.startswith(("+", "-")): sign = raw[0] raw = raw[1:] if len(raw) > 1 and ( raw.startswith("0") and not raw.startswith(("0.", "0o", "0x", "0b", "0e")) or sign and raw.startswith(".") ): return None if raw.startswith(("0o", "0x", "0b")) and sign: return None digits = "[0-9]" base = 10 if raw.startswith("0b"): digits = "[01]" base = 2 elif raw.startswith("0o"): digits = "[0-7]" base = 8 elif raw.startswith("0x"): digits = "[0-9a-f]" base = 16 # Underscores should be surrounded by digits clean = re.sub(f"(?i)(?<={digits})_(?={digits})", "", raw).lower() if "_" in clean: return None if ( clean.endswith(".") or not clean.startswith("0x") and clean.split("e", 1)[0].endswith(".") ): return None try: return Integer(int(sign + clean, base), trivia, sign + raw) except ValueError: try: return Float(float(sign + clean), trivia, sign + raw) except ValueError: return None def _parse_literal_string(self) -> String: with self._state: return self._parse_string(StringType.SLL) def _parse_basic_string(self) -> String: with self._state: return self._parse_string(StringType.SLB) def _parse_escaped_char(self, multiline): if multiline and self._current.is_ws(): # When the last non-whitespace character on a line is # a \, it will be trimmed along with all whitespace # (including newlines) up to the next non-whitespace # character or closing delimiter. # """\ # hello \ # world""" tmp = "" while self._current.is_ws(): tmp += self._current # consume the whitespace, EOF here is an issue # (middle of string) self.inc(exception=UnexpectedEofError) continue # the escape followed by whitespace must have a newline # before any other chars if "\n" not in tmp: raise self.parse_error(InvalidCharInStringError, self._current) return "" if self._current in _escaped: c = _escaped[self._current] # consume this char, EOF here is an issue (middle of string) self.inc(exception=UnexpectedEofError) return c if self._current in {"u", "U"}: # this needs to be a unicode u, ue = self._peek_unicode(self._current == "U") if u is not None: # consume the U char and the unicode value self.inc_n(len(ue) + 1) return u raise self.parse_error(InvalidUnicodeValueError) raise self.parse_error(InvalidCharInStringError, self._current) def _parse_string(self, delim: StringType) -> String: # only keep parsing for string if the current character matches the delim if self._current != delim.unit: raise self.parse_error( InternalParserError, f"Invalid character for string type {delim}", ) # consume the opening/first delim, EOF here is an issue # (middle of string or middle of delim) self.inc(exception=UnexpectedEofError) if self._current == delim.unit: # consume the closing/second delim, we do not care if EOF occurs as # that would simply imply an empty single line string if not self.inc() or self._current != delim.unit: # Empty string return String(delim, "", "", Trivia()) # consume the third delim, EOF here is an issue (middle of string) self.inc(exception=UnexpectedEofError) delim = delim.toggle() # convert delim to multi delim self.mark() # to extract the original string with whitespace and all value = "" # A newline immediately following the opening delimiter will be trimmed. if delim.is_multiline(): if self._current == "\n": # consume the newline, EOF here is an issue (middle of string) self.inc(exception=UnexpectedEofError) else: cur = self._current with self._state(restore=True): if self.inc(): cur += self._current if cur == "\r\n": self.inc_n(2, exception=UnexpectedEofError) escaped = False # whether the previous key was ESCAPE while True: code = ord(self._current) if ( delim.is_singleline() and not escaped and (code == CHR_DEL or code <= CTRL_CHAR_LIMIT and code != CTRL_I) ) or ( delim.is_multiline() and not escaped and ( code == CHR_DEL or code <= CTRL_CHAR_LIMIT and code not in [CTRL_I, CTRL_J, CTRL_M] ) ): raise self.parse_error(InvalidControlChar, code, "strings") elif not escaped and self._current == delim.unit: # try to process current as a closing delim original = self.extract() close = "" if delim.is_multiline(): # Consume the delimiters to see if we are at the end of the string close = "" while self._current == delim.unit: close += self._current self.inc() if len(close) < 3: # Not a triple quote, leave in result as-is. # Adding back the characters we already consumed value += close continue if len(close) == 3: # We are at the end of the string return String(delim, value, original, Trivia()) if len(close) >= 6: raise self.parse_error(InvalidCharInStringError, self._current) value += close[:-3] original += close[:-3] return String(delim, value, original, Trivia()) else: # consume the closing delim, we do not care if EOF occurs as # that would simply imply the end of self._src self.inc() return String(delim, value, original, Trivia()) elif delim.is_basic() and escaped: # attempt to parse the current char as an escaped value, an exception # is raised if this fails value += self._parse_escaped_char(delim.is_multiline()) # no longer escaped escaped = False elif delim.is_basic() and self._current == "\\": # the next char is being escaped escaped = True # consume this char, EOF here is an issue (middle of string) self.inc(exception=UnexpectedEofError) else: # this is either a literal string where we keep everything as is, # or this is not a special escaped char in a basic string value += self._current # consume this char, EOF here is an issue (middle of string) self.inc(exception=UnexpectedEofError) def _parse_table( self, parent_name: Key | None = None, parent: Table | None = None ) -> tuple[Key, Table | AoT]: """ Parses a table element. """ if self._current != "[": raise self.parse_error( InternalParserError, "_parse_table() called on non-bracket character." ) indent = self.extract() self.inc() # Skip opening bracket if self.end(): raise self.parse_error(UnexpectedEofError) is_aot = False if self._current == "[": if not self.inc(): raise self.parse_error(UnexpectedEofError) is_aot = True try: key = self._parse_key() except EmptyKeyError: raise self.parse_error(EmptyTableNameError) from None if self.end(): raise self.parse_error(UnexpectedEofError) elif self._current != "]": raise self.parse_error(UnexpectedCharError, self._current) key.sep = "" full_key = key name_parts = tuple(key) if any(" " in part.key.strip() and part.is_bare() for part in name_parts): raise self.parse_error( ParseError, f'Invalid table name "{full_key.as_string()}"' ) missing_table = False if parent_name: parent_name_parts = tuple(parent_name) else: parent_name_parts = () if len(name_parts) > len(parent_name_parts) + 1: missing_table = True name_parts = name_parts[len(parent_name_parts) :] values = Container(True) self.inc() # Skip closing bracket if is_aot: # TODO: Verify close bracket self.inc() cws, comment, trail = self._parse_comment_trail() result = Null() table = Table( values, Trivia(indent, cws, comment, trail), is_aot, name=name_parts[0].key if name_parts else key.key, display_name=full_key.as_string(), is_super_table=False, ) if len(name_parts) > 1: if missing_table: # Missing super table # i.e. a table initialized like this: [foo.bar] # without initializing [foo] # # So we have to create the parent tables table = Table( Container(True), Trivia("", cws, comment, trail), is_aot and name_parts[0] in self._aot_stack, is_super_table=True, name=name_parts[0].key, ) result = table key = name_parts[0] for i, _name in enumerate(name_parts[1:]): child = table.get( _name, Table( Container(True), Trivia(indent, cws, comment, trail), is_aot and i == len(name_parts) - 2, is_super_table=i < len(name_parts) - 2, name=_name.key, display_name=full_key.as_string() if i == len(name_parts) - 2 else None, ), ) if is_aot and i == len(name_parts) - 2: table.raw_append(_name, AoT([child], name=table.name, parsed=True)) else: table.raw_append(_name, child) table = child values = table.value else: if name_parts: key = name_parts[0] while not self.end(): item = self._parse_item() if item: _key, item = item if not self._merge_ws(item, values): table.raw_append(_key, item) else: if self._current == "[": _, key_next = self._peek_table() if self._is_child(full_key, key_next): key_next, table_next = self._parse_table(full_key, table) table.raw_append(key_next, table_next) # Picking up any sibling while not self.end(): _, key_next = self._peek_table() if not self._is_child(full_key, key_next): break key_next, table_next = self._parse_table(full_key, table) table.raw_append(key_next, table_next) break else: raise self.parse_error( InternalParserError, "_parse_item() returned None on a non-bracket character.", ) table.value._validate_out_of_order_table() if isinstance(result, Null): result = table if is_aot and (not self._aot_stack or full_key != self._aot_stack[-1]): result = self._parse_aot(result, full_key) return key, result def _peek_table(self) -> tuple[bool, Key]: """ Peeks ahead non-intrusively by cloning then restoring the initial state of the parser. Returns the name of the table about to be parsed, as well as whether it is part of an AoT. """ # we always want to restore after exiting this scope with self._state(save_marker=True, restore=True): if self._current != "[": raise self.parse_error( InternalParserError, "_peek_table() entered on non-bracket character", ) # AoT self.inc() is_aot = False if self._current == "[": self.inc() is_aot = True try: return is_aot, self._parse_key() except EmptyKeyError: raise self.parse_error(EmptyTableNameError) from None def _parse_aot(self, first: Table, name_first: Key) -> AoT: """ Parses all siblings of the provided table first and bundles them into an AoT. """ payload = [first] self._aot_stack.append(name_first) while not self.end(): is_aot_next, name_next = self._peek_table() if is_aot_next and name_next == name_first: _, table = self._parse_table(name_first) payload.append(table) else: break self._aot_stack.pop() return AoT(payload, parsed=True) def _peek(self, n: int) -> str: """ Peeks ahead n characters. n is the max number of characters that will be peeked. """ # we always want to restore after exiting this scope with self._state(restore=True): buf = "" for _ in range(n): if self._current not in " \t\n\r#,]}" + self._src.EOF: buf += self._current self.inc() continue break return buf def _peek_unicode(self, is_long: bool) -> tuple[str | None, str | None]: """ Peeks ahead non-intrusively by cloning then restoring the initial state of the parser. Returns the unicode value is it's a valid one else None. """ # we always want to restore after exiting this scope with self._state(save_marker=True, restore=True): if self._current not in {"u", "U"}: raise self.parse_error( InternalParserError, "_peek_unicode() entered on non-unicode value" ) self.inc() # Dropping prefix self.mark() if is_long: chars = 8 else: chars = 4 if not self.inc_n(chars): value, extracted = None, None else: extracted = self.extract() if extracted[0].lower() == "d" and extracted[1].strip("01234567"): return None, None try: value = chr(int(extracted, 16)) except (ValueError, OverflowError): value = None return value, extracted ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4344366 tomlkit-0.12.4/tomlkit/py.typed0000644000000000000000000000000014567257576013407 0ustar00././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4344366 tomlkit-0.12.4/tomlkit/source.py0000644000000000000000000001133114567257576013573 0ustar00from __future__ import annotations from copy import copy from typing import Any from tomlkit.exceptions import ParseError from tomlkit.exceptions import UnexpectedCharError from tomlkit.toml_char import TOMLChar class _State: def __init__( self, source: Source, save_marker: bool | None = False, restore: bool | None = False, ) -> None: self._source = source self._save_marker = save_marker self.restore = restore def __enter__(self) -> _State: # Entering this context manager - save the state self._chars = copy(self._source._chars) self._idx = self._source._idx self._current = self._source._current self._marker = self._source._marker return self def __exit__(self, exception_type, exception_val, trace): # Exiting this context manager - restore the prior state if self.restore or exception_type: self._source._chars = self._chars self._source._idx = self._idx self._source._current = self._current if self._save_marker: self._source._marker = self._marker class _StateHandler: """ State preserver for the Parser. """ def __init__(self, source: Source) -> None: self._source = source self._states = [] def __call__(self, *args, **kwargs): return _State(self._source, *args, **kwargs) def __enter__(self) -> _State: state = self() self._states.append(state) return state.__enter__() def __exit__(self, exception_type, exception_val, trace): state = self._states.pop() return state.__exit__(exception_type, exception_val, trace) class Source(str): EOF = TOMLChar("\0") def __init__(self, _: str) -> None: super().__init__() # Collection of TOMLChars self._chars = iter([(i, TOMLChar(c)) for i, c in enumerate(self)]) self._idx = 0 self._marker = 0 self._current = TOMLChar("") self._state = _StateHandler(self) self.inc() def reset(self): # initialize both idx and current self.inc() # reset marker self.mark() @property def state(self) -> _StateHandler: return self._state @property def idx(self) -> int: return self._idx @property def current(self) -> TOMLChar: return self._current @property def marker(self) -> int: return self._marker def extract(self) -> str: """ Extracts the value between marker and index """ return self[self._marker : self._idx] def inc(self, exception: type[ParseError] | None = None) -> bool: """ Increments the parser if the end of the input has not been reached. Returns whether or not it was able to advance. """ try: self._idx, self._current = next(self._chars) return True except StopIteration: self._idx = len(self) self._current = self.EOF if exception: raise self.parse_error(exception) return False def inc_n(self, n: int, exception: type[ParseError] | None = None) -> bool: """ Increments the parser by n characters if the end of the input has not been reached. """ return all(self.inc(exception=exception) for _ in range(n)) def consume(self, chars, min=0, max=-1): """ Consume chars until min/max is satisfied is valid. """ while self.current in chars and max != 0: min -= 1 max -= 1 if not self.inc(): break # failed to consume minimum number of characters if min > 0: raise self.parse_error(UnexpectedCharError, self.current) def end(self) -> bool: """ Returns True if the parser has reached the end of the input. """ return self._current is self.EOF def mark(self) -> None: """ Sets the marker to the index's current position """ self._marker = self._idx def parse_error( self, exception: type[ParseError] = ParseError, *args: Any, **kwargs: Any, ) -> ParseError: """ Creates a generic "parse error" at the current position. """ line, col = self._to_linecol() return exception(line, col, *args, **kwargs) def _to_linecol(self) -> tuple[int, int]: cur = 0 for i, line in enumerate(self.splitlines()): if cur + len(line) + 1 > self.idx: return (i + 1, self.idx - cur) cur += len(line) + 1 return len(self.splitlines()), 0 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4344366 tomlkit-0.12.4/tomlkit/toml_char.py0000644000000000000000000000241314567257576014244 0ustar00import string class TOMLChar(str): def __init__(self, c): super().__init__() if len(self) > 1: raise ValueError("A TOML character must be of length 1") BARE = string.ascii_letters + string.digits + "-_" KV = "= \t" NUMBER = string.digits + "+-_.e" SPACES = " \t" NL = "\n\r" WS = SPACES + NL def is_bare_key_char(self) -> bool: """ Whether the character is a valid bare key name or not. """ return self in self.BARE def is_kv_sep(self) -> bool: """ Whether the character is a valid key/value separator or not. """ return self in self.KV def is_int_float_char(self) -> bool: """ Whether the character if a valid integer or float value character or not. """ return self in self.NUMBER def is_ws(self) -> bool: """ Whether the character is a whitespace character or not. """ return self in self.WS def is_nl(self) -> bool: """ Whether the character is a new line character or not. """ return self in self.NL def is_spaces(self) -> bool: """ Whether the character is a space or not """ return self in self.SPACES ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4344366 tomlkit-0.12.4/tomlkit/toml_document.py0000644000000000000000000000015614567257576015147 0ustar00from tomlkit.container import Container class TOMLDocument(Container): """ A TOML document. """ ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1709006718.4344366 tomlkit-0.12.4/tomlkit/toml_file.py0000644000000000000000000000307714567257576014255 0ustar00import os import re from typing import TYPE_CHECKING from tomlkit.api import loads from tomlkit.toml_document import TOMLDocument if TYPE_CHECKING: from _typeshed import StrPath as _StrPath else: from typing import Union _StrPath = Union[str, os.PathLike] class TOMLFile: """ Represents a TOML file. :param path: path to the TOML file """ def __init__(self, path: _StrPath) -> None: self._path = path self._linesep = os.linesep def read(self) -> TOMLDocument: """Read the file content as a :class:`tomlkit.toml_document.TOMLDocument`.""" with open(self._path, encoding="utf-8", newline="") as f: content = f.read() # check if consistent line endings num_newline = content.count("\n") if num_newline > 0: num_win_eol = content.count("\r\n") if num_win_eol == num_newline: self._linesep = "\r\n" elif num_win_eol == 0: self._linesep = "\n" else: self._linesep = "mixed" return loads(content) def write(self, data: TOMLDocument) -> None: """Write the TOMLDocument to the file.""" content = data.as_string() # apply linesep if self._linesep == "\n": content = content.replace("\r\n", "\n") elif self._linesep == "\r\n": content = re.sub(r"(?=3.7 Classifier: License :: OSI Approved :: MIT License Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3.7 Classifier: Programming Language :: Python :: 3.8 Classifier: Programming Language :: Python :: 3.9 Classifier: Programming Language :: Python :: 3.10 Classifier: Programming Language :: Python :: 3.11 Classifier: Programming Language :: Python :: 3.12 Project-URL: Repository, https://github.com/sdispater/tomlkit Description-Content-Type: text/markdown [github_release]: https://img.shields.io/github/release/sdispater/tomlkit.svg?logo=github&logoColor=white [pypi_version]: https://img.shields.io/pypi/v/tomlkit.svg?logo=python&logoColor=white [python_versions]: https://img.shields.io/pypi/pyversions/tomlkit.svg?logo=python&logoColor=white [github_license]: https://img.shields.io/github/license/sdispater/tomlkit.svg?logo=github&logoColor=white [github_action]: https://github.com/sdispater/tomlkit/actions/workflows/tests.yml/badge.svg [![GitHub Release][github_release]](https://github.com/sdispater/tomlkit/releases/) [![PyPI Version][pypi_version]](https://pypi.org/project/tomlkit/) [![Python Versions][python_versions]](https://pypi.org/project/tomlkit/) [![License][github_license]](https://github.com/sdispater/tomlkit/blob/master/LICENSE)
[![Tests][github_action]](https://github.com/sdispater/tomlkit/actions/workflows/tests.yml) # TOML Kit - Style-preserving TOML library for Python TOML Kit is a **1.0.0-compliant** [TOML](https://toml.io/) library. It includes a parser that preserves all comments, indentations, whitespace and internal element ordering, and makes them accessible and editable via an intuitive API. You can also create new TOML documents from scratch using the provided helpers. Part of the implementation has been adapted, improved and fixed from [Molten](https://github.com/LeopoldArkham/Molten). ## Usage See the [documentation](https://tomlkit.readthedocs.io/) for more information. ## Installation If you are using [Poetry](https://poetry.eustace.io), add `tomlkit` to your `pyproject.toml` file by using: ```bash poetry add tomlkit ``` If not, you can use `pip`: ```bash pip install tomlkit ``` ## Running tests Please clone the repo with submodules with the following command `git clone --recurse-submodules https://github.com/sdispater/tomlkit.git`. We need the submodule - `toml-test` for running the tests. You can run the tests with `poetry run pytest -q tests`