From 63f99cee88500fc9f96bd1714958da125a4f69a2 Mon Sep 17 00:00:00 2001 From: Sean Gillies Date: Tue, 2 Apr 2024 19:32:02 -0600 Subject: [PATCH] Bring onboard filter, map, and reduce from fio-planet (#1362) * Bring onboard filter, map, and reduce from fio-planet With some refactoring and conditional enablement of commands that require shapely. * Updates to change log and docs * Expect FutureWarning, move pyparsing, shapely dependencies. * Add simplification examples * Move images under docs * Fix link. * Mark jq --- CHANGES.txt | 15 +- Makefile | 5 +- docs/cli.rst | 416 ++++++++++++++++++++++++++++++--- docs/img/concave.png | Bin 0 -> 45671 bytes docs/img/convex.png | Bin 0 -> 44422 bytes docs/img/simplified-buffer.png | Bin 0 -> 54304 bytes docs/img/zones.png | Bin 0 -> 135277 bytes fiona/_vendor/snuggs.py | 298 +++++++++++++++++++++++ fiona/errors.py | 4 + fiona/features.py | 316 +++++++++++++++++++++++++ fiona/fio/features.py | 267 +++++++++++++++++++++ fiona/fio/filter.py | 54 ----- fiona/fio/main.py | 42 +++- pyproject.toml | 17 +- requirements-dev.txt | 2 + setup.cfg | 14 -- tests/data/rmnp.geojson | 1 + tests/data/trio.geojson | 76 ++++++ tests/data/trio.seq | 3 + tests/test_features.py | 330 ++++++++++++++++++++++++++ tests/test_fio_features.py | 112 +++++++++ tests/test_fio_filter.py | 45 ++-- tests/test_snuggs.py | 25 ++ 23 files changed, 1896 insertions(+), 146 deletions(-) create mode 100644 docs/img/concave.png create mode 100644 docs/img/convex.png create mode 100644 docs/img/simplified-buffer.png create mode 100644 docs/img/zones.png create mode 100644 fiona/_vendor/snuggs.py create mode 100644 fiona/features.py create mode 100644 fiona/fio/features.py delete mode 100644 fiona/fio/filter.py create mode 100644 tests/data/rmnp.geojson create mode 100644 tests/data/trio.geojson create mode 100644 tests/data/trio.seq create mode 100644 tests/test_features.py create mode 100644 tests/test_fio_features.py create mode 100644 tests/test_snuggs.py diff --git a/CHANGES.txt b/CHANGES.txt index 3851329e1..58603e31f 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -3,9 +3,22 @@ Changes All issue numbers are relative to https://github.com/Toblerity/Fiona/issues. -1.01a2 (TBD) +1.10a2 (TBD) ------------ +Deprecations: + +The Python style of rio-filter expressions introduced in version 1.0 are +deprecated. Only the parenthesized list type of expression will be supported by +version 2.0. + +New features: + +The filter, map, and reduce CLI commands from the public domain version 1.1.0 +of fio-planet have been incorporated into Fiona's core set of commands (#1362). +These commands are only available if pyparsing and shapely (each of these are +declared in the "calc" set of extra requirements) are installed. + Bug fixes: - Add a 16-bit integer type "int16" based on OGR's OSFTInt16 integer sub-type diff --git a/Makefile b/Makefile index bce5ab676..41b1f33dd 100644 --- a/Makefile +++ b/Makefile @@ -33,10 +33,11 @@ dockertestimage: docker build --target gdal --build-arg GDAL=$(GDAL) --build-arg PYTHON_VERSION=$(PYTHON_VERSION) -t fiona:$(GDAL)-py$(PYTHON_VERSION) . dockertest: dockertestimage - docker run -it -v $(shell pwd):/app -v /tmp:/tmp --env AWS_ACCESS_KEY_ID --env AWS_SECRET_ACCESS_KEY --entrypoint=/bin/bash fiona:$(GDAL)-py$(PYTHON_VERSION) -c '/venv/bin/python -m pip install --editable . --no-build-isolation && /venv/bin/python -B -m pytest -m "not wheel" --cov fiona --cov-report term-missing $(OPTS)' + docker run -it -v $(shell pwd):/app -v /tmp:/tmp --env AWS_ACCESS_KEY_ID --env AWS_SECRET_ACCESS_KEY --entrypoint=/bin/bash fiona:$(GDAL)-py$(PYTHON_VERSION) -c '/venv/bin/python -m pip install --editable .[all] --no-build-isolation && /venv/bin/python -B -m pytest -m "not wheel" --cov fiona --cov-report term-missing $(OPTS)' dockershell: dockertestimage docker run -it -v $(shell pwd):/app --env AWS_ACCESS_KEY_ID --env AWS_SECRET_ACCESS_KEY --entrypoint=/bin/bash fiona:$(GDAL)-py$(PYTHON_VERSION) -c '/venv/bin/python -m pip install --editable . --no-build-isolation && /bin/bash' + dockersdist: dockertestimage docker run -it -v $(shell pwd):/app --env AWS_ACCESS_KEY_ID --env AWS_SECRET_ACCESS_KEY --entrypoint=/bin/bash fiona:$(GDAL)-py$(PYTHON_VERSION) -c '/venv/bin/python -m build --sdist' @@ -50,4 +51,4 @@ dockertestimage-amd64: docker build --platform linux/amd64 --target gdal --build-arg GDAL=$(GDAL) --build-arg PYTHON_VERSION=$(PYTHON_VERSION) -t fiona-amd64:$(GDAL)-py$(PYTHON_VERSION) . dockertest-amd64: dockertestimage-amd64 - docker run -it -v $(shell pwd):/app -v /tmp:/tmp --env AWS_ACCESS_KEY_ID --env AWS_SECRET_ACCESS_KEY --entrypoint=/bin/bash fiona-amd64:$(GDAL)-py$(PYTHON_VERSION) -c '/venv/bin/python -m pip install --editable . --no-build-isolation && /venv/bin/python -B -m pytest -m "not wheel" --cov fiona --cov-report term-missing $(OPTS)' + docker run -it -v $(shell pwd):/app -v /tmp:/tmp --env AWS_ACCESS_KEY_ID --env AWS_SECRET_ACCESS_KEY --entrypoint=/bin/bash fiona-amd64:$(GDAL)-py$(PYTHON_VERSION) -c '/venv/bin/python -m pip install --editable .[all] --no-build-isolation && /venv/bin/python -B -m pytest -m "not wheel" --cov fiona --cov-report term-missing $(OPTS)' diff --git a/docs/cli.rst b/docs/cli.rst index 97fdfeced..b9c4b48b7 100644 --- a/docs/cli.rst +++ b/docs/cli.rst @@ -10,12 +10,15 @@ Fiona's new command line interface is a program named "fio". Fiona command line interface. Options: - -v, --verbose Increase verbosity. - -q, --quiet Decrease verbosity. - --version Show the version and exit. - --gdal-version Show the version and exit. - --python-version Show the version and exit. - --help Show this message and exit. + -v, --verbose Increase verbosity. + -q, --quiet Decrease verbosity. + --aws-profile TEXT Select a profile from the AWS credentials file + --aws-no-sign-requests Make requests anonymously + --aws-requester-pays Requester pays data transfer costs + --version Show the version and exit. + --gdal-version Show the version and exit. + --python-version Show the version and exit. + --help Show this message and exit. Commands: bounds Print the extent of GeoJSON objects @@ -25,21 +28,21 @@ Fiona's new command line interface is a program named "fio". distrib Distribute features from a collection. dump Dump a dataset to GeoJSON. env Print information about the fio environment. - filter Filter GeoJSON features by python expression. + filter Evaluate pipeline expressions to filter GeoJSON features. info Print information about a dataset. insp Open a dataset and start an interpreter. load Load GeoJSON to a dataset in another format. ls List layers in a datasource. + map Map a pipeline expression over GeoJSON features. + reduce Reduce a stream of GeoJSON features to one value. rm Remove a datasource or an individual layer. -It is developed using the ``click`` package and is new in 1.1.6. +It is developed using the ``click`` package. bounds ------ -New in 1.4.5. - -Fio-bounds reads LF or RS-delimited GeoJSON texts, either features or +The bounds command reads LF or RS-delimited GeoJSON texts, either features or collections, from stdin and prints their bounds with or without other data to stdout. @@ -62,8 +65,6 @@ Using ``--with-id`` gives you calc ---- -New in 1.7b1 - The calc command creates a new property on GeoJSON features using the specified expression. @@ -81,6 +82,11 @@ will not be overwritten by default (an `Exception` is raised). $ fio cat data.shp | fio calc sumAB "f.properties.A + f.properties.B" +.. note:: + + ``fio calc`` requires installation of the "calc" set of extra requirements + that will be installed by ``pip install fiona[calc]``. + cat --- @@ -102,8 +108,6 @@ concatenated datasets. $ fio info docs/data/test_uk.shp --count 48 -New in 1.4.0. - The cat command provides optional methods to filter data, which are different to the ``fio filter`` tool. A bounding box ``--bbox w,s,e,n`` tests for a spatial intersection with @@ -125,8 +129,6 @@ as the output of ``fio cat`` and writes a GeoJSON feature collection. $ fio info /tmp/collected.json --count 96 -New in 1.4.0. - distrib ------- @@ -140,8 +142,6 @@ and writes a JSON text sequence of GeoJSON feature objects. $ fio cat tests/data/coutwildrnp.shp | fio collect | fio distrib | wc -l 67 -New in 1.4.0. - dump ---- @@ -274,41 +274,284 @@ collection into a feature sequence. filter ------ -The filter command reads GeoJSON features from stdin and writes the feature to -stdout *if* the provided expression evalutates to `True` for that feature. -The python expression is evaluated in a restricted namespace containing 3 functions -(`sum`, `min`, `max`), the `math` module, the shapely `shape` function, -and an object `f` representing the feature to be evaluated. This `f` object allows -access in javascript-style dot notation for convenience. +For each feature read from stdin, filter evaluates a pipeline of one or +more steps described using methods from the Shapely library in Lisp-like +expressions. If the pipeline expression evaluates to True, the feature passes +through the filter. Otherwise the feature does not pass. -If the expression evaluates to a "truthy" value, the feature is printed verbatim. -Otherwise, the feature is excluded from the output. +For example, this pipeline expression .. code-block:: console - $ fio cat data.shp \ - > | fio filter "f.properties.area > 1000.0" \ - > | fio collect > large_polygons.geojson + $ fio cat zip+https://s3.amazonaws.com/fiona-testing/coutwildrnp.zip \ + | fio filter '< (distance g (Point -109.0 38.5)) 100' + +lets through all features that are less than 100 meters from the given point +and filters out all other features. + +*New in version 1.10*: these parenthesized list expressions. -Would create a geojson file with only those features from `data.shp` where the -area was over a given threshold. +The older style Python expressions like -Note this tool is different than ``fio cat --where TEXT ...``, which provides +.. code-block:: + + 'f.properties.area > 1000.0' + +are deprecated and will not be supported in version 2.0. + +Note this tool is different from ``fio cat --where TEXT ...``, which provides SQL WHERE clause filtering of feature attributes. +.. note:: + + ``fio filter`` requires installation of the "calc" set of extra requirements + that will be installed by ``pip install fiona[calc]``. + +map +--- + +For each feature read from stdin, ``fio map`` applies a transformation pipeline and +writes a copy of the feature, containing the modified geometry, to stdout. For +example, polygonal features can be roughly "cleaned" by using a ``buffer g 0`` +pipeline. + +.. code-block:: console + + $ fio cat zip+https://s3.amazonaws.com/fiona-testing/coutwildrnp.zip \ + | fio map 'buffer g 0' + +*New in version 1.10*. + +.. note:: + + ``fio map`` requires installation of the "calc" set of extra requirements + that will be installed by ``pip install fiona[calc]``. + + +reduce +------ + +Given a sequence of GeoJSON features (RS-delimited or not) on stdin this prints +a single value using a provided transformation pipeline. The set of geometries +of the input features in the context of these expressions is named ``c``. + +For example, the pipeline expression + +.. code-block:: console + + $ fio cat zip+https://s3.amazonaws.com/fiona-testing/coutwildrnp.zip \ + | fio reduce 'unary_union c' + +dissolves the geometries of input features. + +*New in version 1.10*. + +.. note:: + + ``fio reduce`` requires installation of the "calc" set of extra requirements + that will be installed by ``pip install fiona[calc]``. + rm -- -The ``fio rm`` command deletes an entire datasource or a single layer in a -multi-layer datasource. If the datasource is composed of multiple files -(e.g. an ESRI Shapefile) all of the files will be removed. + +The rm command deletes an entire datasource or a single layer in a multi-layer +datasource. If the datasource is composed of multiple files (e.g. an ESRI +Shapefile) all of the files will be removed. .. code-block:: console $ fio rm countries.shp $ fio rm --layer forests land_cover.gpkg -New in 1.8.0. +Expressions and functions +------------------------- + +``fio filter``, ``fio map``, and ``fio reduce`` expressions take the form of +parenthesized lists that may contain other expressions. The first item in a +list is the name of a function or method, or an expression that evaluates to a +function. The second item is the function's first argument or the object to +which the method is bound. The remaining list items are the positional and +keyword arguments for the named function or method. The list of functions and +callables available in an expression includes: + +* Python operators such as ``+``, ``/``, and ``<=`` +* Python builtins such as ``dict``, ``list``, and ``map`` +* All public functions from itertools, e.g. ``islice``, and ``repeat`` +* All functions importable from Shapely 2.0, e.g. ``Point``, and ``unary_union`` +* All methods of Shapely geometry classes +* Functions specific to Fiona + +Expressions are evaluated by ``fiona.features.snuggs.eval()``. Let's look at +some examples using that function. + +.. note:: + + The outer parentheses are not optional within ``snuggs.eval()``. + +.. note:: + + ``snuggs.eval()`` does not use Python's builtin ``eval()`` but isn't intended + to be a secure computing environment. Expressions which access the + computer's filesystem and create new processes are possible. + +Builtin Python functions +------------------------ + +``bool()`` + +.. code-block:: python + + >>> snuggs.eval('(bool 0)') + False + +``range()`` + +.. code-block:: python + + >>> snuggs.eval('(range 1 4)') + range(1, 4) + +``list()`` + +.. code-block:: python + + >>> snuggs.eval('(list (range 1 4))') + [1, 2, 3] + +Values can be bound to names for use in expressions. + +.. code-block:: python + + >>> snuggs.eval('(list (range start stop))', start=0, stop=5) + [0, 1, 2, 3, 4] + +Itertools functions +------------------- + +Here's an example of using ``itertools.repeat()``. + +.. code-block:: python + + >>> snuggs.eval('(list (repeat "*" times))', times=6) + ['*', '*', '*', '*', '*', '*'] + +Shapely functions +----------------- + +Here's an expression that evaluates to a Shapely Point instance. + +.. code-block:: python + + >>> snuggs.eval('(Point 0 0)') + + +The expression below evaluates to a MultiPoint instance. + +.. code-block:: python + + >>> snuggs.eval('(union (Point 0 0) (Point 1 1))') + + +Functions specific to fiona +--------------------------- + +The fio CLI introduces four new functions not available in Python's standard +library, or Shapely: ``collect()``, ``dump()``, ``identity()``, and +``vertex_count()``. + +The ``collect()`` function turns a list of geometries into a geometry +collection and ``dump()`` does the inverse, turning a geometry collection into +a sequence of geometries. + +.. code-block:: python + + >>> snuggs.eval('(collect (Point 0 0) (Point 1 1))') + + >>> snuggs.eval('(list (dump (collect (Point 0 0) (Point 1 1))))') + [, ] + +The ``identity()`` function returns its single argument. + +.. code-block:: python + + >>> snuggs.eval('(identity 42)') + 42 + +To count the number of vertices in a geometry, use ``vertex_count()``. + +.. code-block:: python + + >>> snuggs.eval('(vertex_count (Point 0 0))') + 1 + +The ``area()``, ``buffer()``, ``distance()``, ``length()``, ``simplify()``, and +``set_precision()`` functions shadow, or override, functions from the shapely +module. They automatically reproject geometry objects from their natural +coordinate reference system (CRS) of ``OGC:CRS84`` to ``EPSG:6933`` so that the +shapes can be measured or modified using meters as units. + +``buffer()`` dilates (or erodes) a given geometry, with coordinates in decimal +longitude and latitude degrees, by a given distance in meters. + +.. code-block:: python + + >>> snuggs.eval('(buffer (Point 0 0) :distance 100)') + + +The ``area()`` and ``length()`` of this polygon have units of square meter and +meter. + +.. code-block:: python + + >>> snuggs.eval('(area (buffer (Point 0 0) :distance 100))') + 31214.451487413342 + >>> snuggs.eval('(length (buffer (Point 0 0) :distance 100))') + 627.3096977558143 + +The ``distance()`` between two geometries is in meters. + +.. code-block:: python + + >>> snuggs.eval('(distance (Point 0 0) (Point 0.1 0.1))') + 15995.164946207413 + +A geometry can be simplified to a tolerance value in meters using +``simplify()``. There are more examples of this function later in this +document. + +.. code-block:: python + + >>> snuggs.eval('(simplify (buffer (Point 0 0) :distance 100) :tolerance 100)') + + +The ``set_precision()`` function snaps a geometry to a fixed precision grid +with a size in meters. + +.. code-block:: python + + >>> snuggs.eval('(set_precision (Point 0.001 0.001) :grid_size 500)') + + +Feature and geometry context for expressions +-------------------------------------------- + +``fio filter`` and ``fio map`` evaluate expressions in the context of a GeoJSON +feature and its geometry attribute. These are named ``f`` and ``g``. For example, +here is an expression that tests whether the input feature is within 62.5 +kilometers of the given point. + +.. code-block:: lisp + + < (distance g (Point 4 43)) 62.5E3 + +``fio reduce`` evaluates expressions in the context of the sequence of all input +geometries, named ``c``. For example, this expression dissolves input +geometries using Shapely's ``unary_union``. + +.. code-block:: lisp + + unary_union c Coordinate Reference System Transformations ------------------------------------------- @@ -337,4 +580,101 @@ by fio cat. The following, does the same thing, but for ESRI Shapefile output. -New in 1.4.2. +Sizing up and simplifying shapes +-------------------------------- + +The following examples use the program ``jq`` and a 25-feature shapefile. You +can get the data from from `rmnp.zip +`__ or access it in +a streaming fashion as shown in the examples below. + +Counting vertices in a feature collection ++++++++++++++++++++++++++++++++++++++++++ + +The builtin ``vertex_count()`` function, in conjunction with ``fio map``'s +``--raw`` option, prints out the number of vertices in each feature. The +default for fio-map is to wrap the result of every evaluated expression in +a GeoJSON feature; ``--raw`` disables this. The program ``jq`` provides a nice +way of summing the sequence of numbers. + +.. code-block:: console + + fio cat zip+https://github.com/Toblerity/Fiona/files/14749922/rmnp.zip \ + | fio map 'vertex_count g' --raw \ + | jq -s 'add' + 28915 + +Here's what the RMNP wilderness patrol zones features look like in QGIS. + +.. image:: img/zones.png + +Counting vertices after making a simplified buffer +++++++++++++++++++++++++++++++++++++++++++++++++++ + +One traditional way of simplifying an area of interest is to buffer and +simplify. There's no need to use ``jq`` here because ``fio reduce`` prints out +a sequence of exactly one feature. The effectiveness of this method depends +a bit on the nature of the data, especially the distance between vertices. The +total length of the perimeters of all zones is 889 kilometers. + +.. code-block:: console + + fio cat zip+https://github.com/Toblerity/Fiona/files/14749922/rmnp.zip \ + | fio map 'length g' --raw \ + | jq -s 'add' + 889332.0900809917 + +The mean distance between vertices on the edges of zones is 889332 / 28915, or +30.7 meters. You need to buffer and simplify by this value or more to get +a significant reduction in the number of vertices. Choosing 40 as a buffer +distance and simplification tolerance results in a shape with 469 vertices. +It's a suitable area of interest for applications that require this number to +be less than 500. + +.. code-block:: console + + fio cat zip+https://github.com/Toblerity/Fiona/files/14749922/rmnp.zip \ + | fio reduce 'unary_union c' \ + | fio map 'simplify (buffer g 40) 40' \ + | fio map 'vertex_count g' --raw + 469 + +.. image:: img/simplified-buffer.png + +Counting vertices after dissolving convex hulls of features ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +Convex hulls are an easy means of simplification as there are no distance +parameters to tweak. The ``--dump-parts`` option of ``fio map`` turns the parts of +multi-part features into separate single-part features. This is one of the ways +in which fio-map can multiply its inputs, printing out more features than it +receives. + +.. code-block:: console + + fio cat zip+https://github.com/Toblerity/Fiona/files/14749922/rmnp.zip \ + | fio map 'convex_hull g' --dump-parts \ + | fio reduce 'unary_union c' \ + | fio map 'vertex_count g' --raw + 157 + +.. image:: img/convex.png + +Counting vertices after dissolving concave hulls of features +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +Convex hulls simplify, but also dilate concave areas of interest. They fill the +"bays", so to speak, and this can be undesirable. Concave hulls do a better job +at preserving the concave nature of a shape and result in a smaller increase of +area. + +.. code-block:: console + + fio cat zip+https://github.com/Toblerity/Fiona/files/14749922/rmnp.zip \ + | fio map 'concave_hull g :ratio 0.4' --dump-parts \ + | fio reduce 'unary_union c' \ + | fio map 'vertex_count g' --raw + 301 + +.. image:: img/concave.png + diff --git a/docs/img/concave.png b/docs/img/concave.png new file mode 100644 index 0000000000000000000000000000000000000000..e8abc90e0333cb16ec981e536003dc82862d9246 GIT binary patch literal 45671 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 literal 0 HcmV?d00001 diff --git a/docs/img/convex.png b/docs/img/convex.png new file mode 100644 index 0000000000000000000000000000000000000000..ed5072a5f4f154c81da05e69d4dd78c602046fd0 GIT binary patch literal 44422 zcmd43g;!MH7dJeLiGl@)qr?|M8UzM`Aq6C)yFo>oA%{*A1?iIR7Eog75&`KLLTQBo z2Bbrp_uK)0&-45T?_JB~tU33bv(Mh2oo5g4l@+B)h~dOA7>q<#Mp6|9JL3cXkzY6m zzG0O#tp)#Gw3E?sguzG~p?{}ZY_p%kV6-q<$%pE$@qfl#Tn9EAj*f#}M6DMz4L8#{Tw;^(0QDnza*!Q9-K|Q~-j{4HX~vSGDcdV4 zzA7m`GD^Mpp=Hy?F<^IdDgSFK9l1hWrtI0XaAEfn{KRz_tlm!gw6g8qaA|7b|KE@Tv-B{%2U|@Qe%BYz+VHVEGx#9Bkq=H#>GCAcy6SO6j6DIL&3 zpPwe|TAhZ$?p%T7D5Fza3Re5nKjTk~(k+&XW973NDHubtR%M+V!JK>a75>N0{2ex@ zmef)3=CYJ=uD_)ElpPCYKpq#xz_T8ubQ`4sB*tL zcJ)r@sF7bdgK%AWg5^2|6N^oTU@MzeTU&cT-`&s>%{o}9W!FyOW-TXCV~CTy+onK| z_<`@g8m&f(eIeKzC8ORTBgv~6{W3J04wL`#{S6KD;SLKMoBG3tFYxaGLmxp{_qDl6 z>UTxBw%V=n9Ljx`O5@xs;<8eU?Cz{lNqvDYb15!v`w9CTN-WvIEh7`8k7al<5^?kM zh^Nys3W-P!wM+%)eBhlitZW-h8;ks&^l!ypV+T7 z)r`}?b7u&#*T$;Q0x|q8w7?w=N5^%*3KqcgCc)+G+)OF|Cd9W{4I4ymyrjN_{^IhQ z>!%KnXvUw_%zEdgg8K4(wqNag*WvjAqh%r02>JDUwVZ{8Wmsw5dNe!GYA`#uQa3Oq zWWD1ABWuY3`(ja*8}H=0y}q`s9fgMcuYSA0rL|EgOGYF9fR5GiOg59 z8Z=)AN{jI*>uT#7d@|CPY^N;|PfFs99Efg-RvY%}Er07XomROMU5B6oT2BetFfsUW zjmO{f4BbF?ew3>;phgh)+Y9xx)C7KgJ|}1mCPy?@30W-Uo6D~o*c{;SX4+?nV6?9w zn1pDI_wEYq;h;MltZ$wo2iq zzH17e3BV|huq_?N`e&-3ZH-26EIja&XtD}NwEHT@6~(U!z2*MP`+;2v4?59gFj!9@ zVVhH;HTZj-M?-apb_=Wc5fdb->W{@=*)~3t4;4NlS_y9|Y?oh!`OA~b}H(cN%xS3|_t)>wfnVANu#@AM$%wftu+ag(F1hvd~c`c%_VV$={=AQE* zO6ON^8um=4NGM1Hm>57F#Ft)GODoIGan{nxt-^HpBFWRYR0eZ?oB!1mJ$bRav1o+^ z4s=c&(h~ajRZG=s!NR-Qrf&MNzwP6KUR_>YJlNE&eD=l@zy{(#00f&SKiWC#KE>Hq ztI#-BZ5VO*;rYLdX)TWD`FF-Cv;h7ZyoLZO!NSU_p(-RjK32tx4Rildy+Fi6_x^RQ zOY%dj!9qR=1L#wbN2}Bkq8_SVD8R1mtn*@{q`pkPp}+c=9#L4Kkddbu69jYyc}r~> zyq;DkwDzt!_%`E_-nzzbCzX9#i;d50V{=XmFLTrghfeqq4vvC;#Sn0FfpN&Fkn7h2 zuQx7UA>YOWn>Is6^0X+}?h|&tPT098QP@LWRsYigc^pFRA_-b`pLPfJzG(y9J-)k_ zR~Sp!`xJz8gXy3V+o5$O(R>}7EaLL9Y)@}@4L?(pimh^{dbUS&=NHg*zGiosZpk5;&w;Z-|JZorp*r(fx7FM3_#s47-h zxo30y>g4cE7%b~o@ZX6-M@A*hx;}==hN<-Jhq}n2u-$y-p>{j;7l?C-?7 z9Bi@_rE~J{u$_(hwfUN1s6{m8w)d_YR^^G9iAjcLWTXW)mUkF_IX4xfNgXX0-W(X& zxPT3*7Q&HIe;OUt$IZ-Gu1q#KRE=dC6Tu{bR@ck^#GvA4Iur6Rv6h`B>9wT(G|!`= zP4bqrMAK--?Ox%T=EPTB^-WAnbSpe7G}(012bQbT^y`$&?)`?72U~?;bF4>H^`l6? zJsYM9u<#KoAX1Db{ejt%G9Jc`eqt-s5+FKf{ypSBIJfo3xA9&W2L}hzNC{z&EyRJ| zS>F$0kZC!8@P~1IV^`FuPu>ras8k%FRIPpc z<-tIU zBI4rm{xeI+NNIfQHMh}o%PhWkr%ngQ^Yzivzsa`{_rG#D#mZp4=9 z^~H7XC^7>XEw^|5;v(u&UP`{gtKChtuH=Vshd~`Ux94_>n#A%=NlfQOc^LmS2-`u% zT}KB=vEw>fF{E;&*r&eqYJJxSCAvlOin~Qdz~1%Efwwg<4jECLo_Z#E?KuAy-aec) zr-!~G4jEqjBS_9qkz_Hjxm5I;RziFJK~#QC=({ZhZ;p{O<{SxS@_%Ne10lcM;N0lB zlxIwQd|Dz&-5a(|84! zgCm~!N(J6Y5g|Hf`RDb;*!xdkN`0VwibTTDw+V;-?NYZJ=`4B_&tV_`_3llvb8f=$ z@P*V{mA_{6D;zR3qc{fEn&e6}oqnR)FS7U{|Dv1O9$u69k-gH-JIqS>u5JLO4C{DdhBhO`z z-4s?Ykz400`)pI~$&Y5rkY@AhSQYNCgZX+_YKMxoS)WwX4W{pRcI!@C>U#Ro>px0 zmr>^pC*G*qqq$GTknxBv^vd{xPKh#Z`O{DjwN9HHJwp6qAi64|vr?nX;zNrD`TJaC zqH<|tihrehAPDrQEwG54ct^lA#FKg$h#MzgLw=EeZfRm)Y9!H3_ozuww4QlKO@8-J z>Cn9D%!HsdNCJTK!20*8=4)4LgV2b#QVX+2cP-HF2OQ_z+A15Ku1fVj8^r1PBWbyq z2Li%|XNidsxczmFs~4C=MJLdbuRpmm%8u^wpA-|xrgdn{CXpfE51((a8icf5_ljOY8(W}N;YmR)Zs$FI? zmh#tKGcuaB9fSD#t7k=99RQ64y<(_T`Cc}c*pK|fH}xs!yrPOnUhaQ2pR7HH@))tF z|M9HDDye|$p`9{t`)Lwen<2GhL*d}twc^QEpkj0od$>F@@qj8r4`d2nD~8=)->^)4 zerRU)xBs21zT0E-h>?8i2U_Lay#?m-P}EJDmHUjQqvK|ROXBHpMjoCk$?Z@$!#zA) zYPA`#?5Q_I{|tl}7Py(gcS~NsFXA#*FZ%r*_b5Cd9_q``)u~kH9l==1J7eBTH^T9D z=IJ90U7M5U<4G}v{>|zO4pxrFGG;R~*`Lk*?+S=JKU!FFdITgEEm;T8M!O>ti2Yr>iYUEu=3IZ1yNBHk&%%()=k9hM&-(ReAYeh3~M58 z23x#l2(%LzXq=IC{ip%K^14QTdp>|=MYSQh{4-PP`uE42-dY@S+R2EXH}h_zNoJL# zADdmyVKnj@Ku28pS!~w*ba^wvav_Kco-n577Wz(#-x}zZ_K`&2$jty|%J;d$Mdb1_ zdJ_LBzy&qKvlNWM!h{T$d$=n>(CH^bQg3&$CnQ2EZ~oM|7SWuf{r%Zy?lZ3*M&|41 zkjqh6;rt{0OG?ZmhSG{hh7o;>{V^N`-gKL#-5ntDkS}RSKHN40&$?2?w*d7WS#r;HC!;w1bdyKn_Gou0odWvP0N8;-uWp9 z=57o^h+=@LOzyy~@cgZ3T8PYC8Oc)8te30hTbMT*AxVX)>s@LfsU{{S{upzf8%iZ; z)2R6E#BTchIXxCL)`%vf%|``DZfa{P9jpiPArEG4Y-}`jbYe6)j0#LH-OTlzk_ucJ zlWUyf3JgKCEruoib%)9Nb$7IAOgZEfaRDRhsKIXnu$Ykh^{Y6^E$(k?eF?^!iIjok412I#ADBKmI6^n^)!OTdb{7~_i2w&xRpnx#t{L@KnhuUbo2SRI z>esjOdz#h)`7T`JS$`o`56n!~duYYg!`V8~LY?JB%_tKPu%_1>fhad1iZgm*Vl^)c zphj0iGt(r1BG=j^<{1hF$JtxC(toSKiS~?dBMR#Rv5-b+wk4b1 zLs`AsBW5!JpgfYC{SFY^3S|eh`1dW;*wiZT!k_Vnrz-WCLVF6QqDBo1oomaajomkT zR_x-WD&ye|)5wr8g7v^8k?!_%?3Y*&pE(Vb@f>t)yPk?Sr^bG-=lXRr6D8*@1~rjE zwFKE;#OZl|&1S6bC~DM+@`#EUJ;DMKh+g;#Q3vBcib+8giOJ*^YA^Nnr3yVBfddc- zW(hi&dOJ#_b-{%`#<(TlhN!gr=txYAwu;iysfJ#O2CvjAs5X4N$bw7)@9+?4_*l1( zSJJg#7TzV!0%m^BnPj#6rF2I}Fb!Ag!Sky;>-EfpVCTZ4@O$_zYVRGlJ&^ZIz5Mm= zWpB2n0ksA&&D|a6iPaGaV9hjw+xwb!Mf8)#--)bterV%9Hy_j5;UbOvM$?&YD<7H4 z|F+k7b2m41v!P@E`!$wWq{0hkwU05< zj|mI&FV)RbYl!SJ9`Lmr!C=qhpYW$Xq0iL~me$B$1`LGU?&&vg;Cwdm_;+Fin`d`= zswHSZ_+an*Q{)9uH=NJrS)XdoHFw|Z@C4r3*%^cXSnoqX!t`i9C(Xa5`8woxnHl9>Zm^XO|KwuC;L$Y9zjgZ5g?WuVzS)Wem=eHI5$N)7_kd9xf7UeNwmm9!HkUKfSMIF-pGZi&{ z3Cv~_P!vxAiGsBF`RcRIswE^&`tEKK_5l@u=<{rd!yA)$TGJW(SV9O>V%AL^Np{o9 zr|Dj2$#wYLlOLdtOCJo*kIA2ZoqpoXPy5vA=I%REmvV^YML*#Ei@et>n@UqDrR$N_V=#=d(KW>96%cQb#^4BwazBy zK_Q0cTS&&wKbRwO-G&UZKu*DneQeIZU;qqJBgCC4XI9D}Z*x--5a@!?0eh|YEOg#m zzd}V1Ra{2x{Wz9mGJ;)4356m0H{iTc8J6vuj|>igNd|VMi+}1emg|^F7O2(KN3kwr zPH>t4?lExWo>M?2wJ;@Zi|fo_{ZtF=#~39QD3&NG@%U>4_?c(p_{LP{VnPF25O9bY zKyN%{{&fjEnd+}?&#{A*yYsziet6e87!=M7?`$rX;dioi4Cnn=uTT(;= zC`*Yw)+w<|nKAH5xYzuwve1VHYY&P++(3%`KYp11+v~dX;&4XT?`OQ4n)6kf;s*(L z3_&I6ev_4srKQaSDk3VVf*|8wxBIhu<7;uZdI%0O5zLson$zi}kJijEdFOm2VL{Zx0;|Jy>W|2sYak{A}d1HP6g<-V2Zv z=HFdJW{Kkcw;3FTLdEjA6by3ceA2-nMw?!OI*M3Pn?u#W=qOv=1mLEkuayzZH+`jt z=!*Gc+T>cfn+sCG0T9z^TX*yoDe6?uFalUfv3u^JI;#$m3jQrlwsqqKR3*PEisyJE z{vXL5{vMEbLms&PU4o#?e5QaSS#EBhOaALFJ0t<=^|C8JF(5j@QywFtY!8=THc!)i zpipc;s(>z@1gr}2uZ}9;illR0KM(6cB_54TsNa8DEq>&wBHF#CvJcLeen073YZ4hj zCeeCz-ZkEyi>1i4CEuk#18UR(i_V~ss6MMe&%YB+2PuO=W@)L$I*`AhT(l*IJz??p z(IT`=fXHh3_4ltKVhX%Y!79JeELSPbf@=lu3_0|xV+4el{_f2NA~gZ>_4T=N9)`{> zn{by~FQ_wo^S*ouKhloA1J*)cOESs%QqYCIjE2sitoG-}7YPQ(ne2*8-HEd6^WBhs zi0Q8Xj3QM&Og{s(q27XU_KeviEL)bujZqE)ntDh)qcTvNo0-PRL=Xe)+7dmsbQIvC zh6+dfem3hK%-&!(?sr2)+Ix?$#RJ z{)NXg1`6l|S7Yc{SvPsw8cGYv zpi|#^wzsv&62l{nD&>ux`rJR%@Jk6=g4$N7>)$Jrn52El!hEWyc5zt7}AfA z0ynKhJZWqMlQHfVIVidJ;da(aJ15@E`$`k=sW4^5U z9fx=@cjdr+{fY;834O5+mA6`d3d?18+EWw;vq;a$k%hoML(U3}-DgOpd^vEXY&BZI zY@Q=1ddR({x;-1O=}|{sbGMwCN-8oi5jN)_GNLJAkN|C0%LDTz`#W>n)_i<(XhDCZ z&w#+U0Tun_S??={bQroEyKZlk>m4!SksFF zrF+?6Q1cEsJ)UIKjk4}Jj)|b#X4+OW9ZMU?%n`PcWg{cDFtq=Y+t!A_D$dC>9{m7T zRcy^pH|qEM*U!FuyhAFIDzB-(ciNZUY1zO9pQe_@;(~J^uR1=y%wrv!X!vcN{l}&N zq9M=6U8hLArsEye*N0lrT1nOlI0FcL^jt~U9OZXSh0mK?zQaQ3q1%!$VCW_=8bcM< zo2He}{V;R=vYp);V=IVn#IBc@rc2t^ZiJa4KiU9;DrUK=OTp+9c87+Q$oHX==<4g{ zV5+?Byu!IGZ-Vy%t=imN(3s%`G zTz6C>^1!R|ZB)MUml1-m^DUVSY#R8{^8|S==+&|ixD2T|++Bd`=g97-3x8`oVxe0x zVE<|{41%Hesfb#j>YxGPehj@A$l>QMz;6xQs_%xe?69t$6|@ZSQI+-VqO~fvHEaH+ z!%@v&2yjHql(H@6gF6zUmWGxdSkL=J_kDX@Fcs^<#L*!8iS+vtColstJK_EOV4H*| z8agqLXDAjrGVhHI6_#1I6I?iKjzXke)z~-xU>Y~`lPWXY%V!A79QCVbJwcH`QXQtI%nJ=2mmlX14iCAjY+R!tp~mLifH%!FUUYm{@4%NS~KfOeh4iB_L{s8O23ek$3#Uh zEI5lx5Ue~*@jIaUjW{5P5<2|(v4fF``P5)<^+wHTyl$CJ27NxA+0(t-dr z-=Bp?dVG7M$J8*c$XRCR@qmRO`+n;w&Yv8*4Qz~!+vxH2CIlTYizc&?Tv5Av^yNE5 zxGTOTn&2J~XaUNoSV{}r10L()99pEkuVB|57{|+=H_y~N0>aJeAHOK*x3h4po@g1f(*H*bblJJc$91m)D2AcqSKXc>yyQxOtI$b**+$&Y6` zLf6M!Hg6>92@_xjt9%23u4nVY7C`4^E{Rqgy0g0-OvGC7Kt2$L=1T(ZxMN%Uj@V<5 zeX#$WO4_vN)I{v83Bh38Z?M%N=H-hEdSN^{eZ@DTF&}YJ(HYf+K zgW!pPE=nNr^a!H!q}k8A?ksATDQf*xEogs=1YIE@d0~?^jFw|(XJ6a#%$%CM04!bz zxA)P4kyZ2An@qN-3h!xWrXhmP!{{&7wP!RpO92Lv#qU3qlB2)Q!p=T0AIVzkv7oux z**Wl9HasFJsqh8S`Pd-8SB8f}b?EhApHIP63A+k~)W@>m_h<8y2n-B_-+$r@EtI4W>Mhct7(0rKi6f@N<2vfP7`eTnQh=(s_trp9&bL%e;BhS9X$ArSuH~J>C3hC z^~kt5E2OtnPHwJhYrKHN@^DVv0rlo*Hf$(37VOTeAq*Mu8~K)c73D+PMHI-SIyHxusHnOUFzei0Zo+xH+@skj{K*ROdJ4^d8RYMuC#!De7P;hG%egi%%_Hx`Ad))I*>HMDH0F%B7-|;kpJBeBj4j z;uM~4q2gk1!CSL2j7dGgax-{;ks9==VkmwRYjeGSXP_g_wzuh~ku`{U0Nm57LFk-Y zQlc(L!Pe84A%}b4!rT1R0xeV^S6sa|f=Takqb&DBu}(~B9_}5zX-}Cc*VDrcSjs6V zD;*uU4M?Tt21_EGzgJl%;tTUf4m&8IRcndL2bO3G_$V|e^AK}P_3+)jZl{?o-5zTk>4OC?PzCTKW+seJJPyVvR?uL+ZY*?5oy z`u1;jXPT1i?nds8|E&W#PLSBnt90m?44{y^`todUZvMdbpTtFz;E|mFx;6wpQz+1v zFu*}4le%642P%-U#Hj8r{?!&V=DBA;n9{03%sV=b_z^PJ+HrtD}XEZH0j_6RGSe8d%z(7l@{&0;<1fj zYdrLXPKPc{&(K&_5H+gXKUh|fZn(ze^W+=gN9m^$^?-3#gLbX_!Ow}pyhv&+`keSb?uVJh6+~24rDFpfZ^d`iS>mHR?WG~!Fp-eF9xcJ8;@}aup4>^=zvBocR`Aw z{pOIv1#HrwR$=9100lm(g^y59T)rTws?<7>qv~U` zQTYwjriX7<%yes6Smca;`Pd9D3H)0SU5iNmx}dJ2&lwt**!|+YcIWaYw%>B>wQ0#q z?}nHqxvSP4>~L;K6zUPVO%VKyoL-uW@Xz9CL)XQLV`i#oz&Y#_>{fH6XKeO;X&8KC`w8!LvhO8 zFNmCW`08@xM2~iCIzLyWiW?;f%Nf}VIFSxjLra(3^l#DV8_hJy(~1jvc~|)`xiN}e zFOwmF!eVuQC-+lMFTg4M8mZN%_M8+?$E1?nyDBy8a_w-5*c}|F)mEg|{Ga0Pr9Pwe z(DT$i;a5bmY09bQTXQ(U;zJ8FKc1jf4H?kEae3pUx-=8#(rS&C1H zz{vy6KY&|#iV9Ul`p}-2gP+G0Wh%hsfBVs2AE(tU(J_2o7oTajX7@1ME5-_n;l-LO z+>H`6KN+$Iw-_UdNhNk(NjyLeqs>FDc5*e4Rc2QLLC03q&Sr_)wV*jv`{3@NW@o&B zTybH!xPX8_)}~`rzIF<0?V*zwW0l{%mA@cUfqj=5dVs*w*jA?;9_#^TG%6oH|2#ab z%kJR=mUY;4tU%~q3>4w7TYBa#yvW-!rQ1W%JMyJmD(F^Pd)67d zarY&GgL>T6LSdjVu$a8`3I!j}Egh2E4?2JV->xyf`UAQJC+UVf*$s*$m$dcMs4!AZ zsqk5Q)_^h{?%_(zXNsSs8q&tGn*)WGTSIjP-Uqu>e|@lngPHAh+m8ZA>$IZzxA&m1 z?s?^i-rdTBUw*t#zn%fgLTQLsFy7n*-9_k}sOrtAC=T898D*KNYU)7$*Stehnlyj+ zeD?QweGv^)gJ)znN#$&X548-|vP5%em6O3q>X1kK>qk>9bvwHYyN51yc~-^65wpKz zp^ydEYO7~yZH=HJlAfGaf?HTwsR4C~sy@I#|C|@c^Y_^R7Do_+Q>NZjj3_5P?Mo=X zEp3dck^LJ}1Mdp=jky#(oAQU`mu42=)J`Bz0yhTdzp8ZB;<947jNbxnyo^)w*TY!H zL;;OyTA$6MqwL={{0S!~wYt2%Fem9@%vD4F-r}KLUZxUd;fvDJ-Php+RKP_3aH6gm zXbWi>?e;~>OE)|=b(B>e=GOAMC}6)jQ8}+H>h3#qpjJt_7m@@VI*&(A*yw1 zBHuNQQZgLhArPE?D+y%}k}Tyzbg}f&wzL}ypH&$4>B(smx)@c!ifu_Y>R&9v6U&dh z4Q3`!Ru$g4Zr_$fFR_CStbJgW={@&vJ1;k5dk{)+M~IG1k7ykPbNnrjG+AeW8~`kx z(^e?+Eg|%$jD2Ub^5bss_wf?haDz`C1akV~K;71E(iflvK>g+=O$~ha-_iV->U9Dx zzQaV?HH`_y5NNmx?=dk@YNL28aPC(Vn0~RHaCIi1${tS8D(U9&cdhG~1;(!Ia{mq1 zh7spW-u(H+*v}9cA%l(_DD;7eom(BDP+JBKu2})2=*805#oz6hpn>mfV7KgwpFm`9 zol`Hdc`mS0>V$?kxwyONrtI8A zkF7twnZvq@2haeF8|3ZeggE^nSTDV@Qda=nT~ZRpC}%ZZhKtI+1|+C!X<0pa8Qnn; z#!B_uH&-F`|-Rhl?XM#4!szQvnEOYqPloiyy|gM6O~(nG2%%3xvG(_Y z<-s%o1<;JGnNJ+-P&x42B5zMWYz>J`lg5BoY&_Z!;-#;$EBZ>8`LgGD(>$bRX?iKvG{X9WIeeb#%tMEQRd<;6Jau^>q-}ac~-D^UB zEifebZFV`5^Q0$Zxq-KNzt6~li%{SdLOrAMcZv2CT6_T&a!yXA4*G1MdJi5uz`L9; ziB?9fzH74x>yctA~aB=*$*EBav?gzR6*e~R#)$sM4f?|&Nh38 zMS`OHrmbp6#f}Wi6R6i&+*)k2=U#^@1hD!q&nw1+cH_^0V>Ngz*Dw~M+O7WC?2wY8 zcts#8u^mU^|ChO{>jHNO6`topZAog%1_t>rfSMnx8$E9l3Ru-s&_Jn0__^lPe~9S! zjA|+^BrNw5{I(IG6<-f zbgll9P4IEwT@jRw%#@cc&AX}pZL{H7)UOQg;iQ_=_61}i&YJ7|Z)_ivv3mgI_}w)^ zl#y9mBjZ%)=YNC?7Xl4Ywmq5H5O_P%c-`c9L&<$i{#*C)eXc-?Df+W{xgXsKa7rcu zM|#yQ3q(&pu=FG4&P|?Wh^?^rcik8=s4R7N3JCEvm7sHWVK-|o!Mec|J8XXfw+~I~ z@9$@7Sp*enXp(QlBv1k9rj0;d3X-zl*SsHn85)DBzC5{KJ6^F3pp%Ij6f>bQ--uA0 zb6y27mQM&pDlwGdkV|QHNTeEPe{MS1z@Gb&mPziGDJ- zn1SLLxET%Yh1Rlk%s9t&qBFAVx>2#QaR5XR)yh?<+y53jU58?p+%YD@bzl55Ql_Ms zcfiR?*oI%gdqh(-N$c;JR~e|};rVa1KBm7eWa@Z_RjZ&MHL(NYncq;SIe4;CIVi9% z?bLBa&&^CMnn4TN2RV_v{e4etFZXG%ve3Z>HrA(ws&Z5T6sf^ej~~7jXz9eC>oAgX zuD$OOkLld+ZZAc(OnENwD-D3Z`bE)$9Nna&IF7cp<1`yw3kqBfw$iZDw$kSSH?;$A zlD5-1YBy93>>AEyre%<~CEX~u+_FwkE7iFn^e-Tg(d%3-Z_{nmokCj}NW2npYmjzY zo#hw+JAQ9C{nsL8U*LsOJfFctU<>+fc%3;!91QJOo?bNgAm5(9G`04j+NDciifCbg zX$PU9#Fg1^ZI(Z^H=FpLe9ytb-oNOfS$BkD5Z*r6HbW5z=MqmkTs|7i;;58)b&iCa zik(6E@Q(DOM{jEXmbN>ExBQDZGqr6_|76d#ZA~PtFMxxvaKVer2XHu(u^m zx#A+VHu^h7d-)PDCmv+-f*zepeo#{h@@Z>mWJZAKo{qsrO!xi&e9nLg<=_{0rMO?B z^Qv{-CvmFX9l*o41TA>zg z;PBo%5y$(FiWjA*r;&P?wpcxc`?QR~{!TaO-sVBrO^RWA4}G?lgcav2dycj}X7<4E zu3~Wa{%`~kC$L=+XJGmLChvmb_0IWzrDASuKSGHjH6!tpnl3dbvtdzxKe2801v(ZA z9rN)u|IciHx|SRw4LGVkvk9)(931+}TvGp$u+!l=yXh(9zWu$icc>4oxW2T0;ORj& z)ooL~^7T@zcdPmVpY5@qr`?z@3L0M_s#z+}{ZugcJ}WV|wS|VpU+X*1;h*LYw|F-C zI{EM=k{u`J=6jlH%fLcn7T>FPfBcCP>}O(jhjq+ix`wSrpI6^*x3bb$tO%p@Aqawr zLE;(a?Kf*L!@gMgtfi_=3a|ZoB3}0mbF78O8?#vFG;h4>z)I9{DDrric0`kfLXAt5 zziGSpwgRiBd2*BO6~amxUEyTGEed9Tcn1Rw=KlOqpT#I{ma<`)38VG*Tdt4=kS~|s z{~%fwqL{_Y6oW`OmJ_irV{=lEg}J%1!s`h*;cZ&C7te35*3`4zsS2?%S2n@4Lp>Sb zVS;fm`h3muUVS!TH*vgg$n@^1n<9P+$b`XqI+3npe7Ofr?Zxk3jLYP;Qa5%47hljL zV>szJtMn1U$CsC>^@c7}g7B@_Lp!$tkMeY^#Q@oAT{7XjWV4Fe?gY`Nef>YOS%!H3 z5&C+n0xTN7JFKg*lZZcdKgzUsf(3oVP23C;&Ncb}HBu%l(BtSS%avDdMBKE!&KV0V zSv}p+O>)A}#%0C}&u{K1)^D#<0|OJboJZGYO9)3`A=R|X9j5!B!yTC)yT*+@_EX7X z}(@Ry7o1rEjF&hY9;p_2Mtr6Odi6J*ozf1Cc|mY zx6i4Y<~819Zf)EFyN_^TZ;gEg`v(RpfFZf~<4N7Cu76mCgu1cABnuik(}m#o z70@Hx5)SBnc&#~!st;eXl{aUCJRTsss`cWT&=xr<9<56h;Mscedi$kxS0Ni@njWQ( zv$=eh#^Q4YGr~f?r+=S&VLc8eY=YmLa#Nj%-#<_63ninEc#8K=ZW5NYkt)LXVplGu zKP1Xi&_Z9D>L%^X)5?3hdMw6jX|t>5R$9$ysj~ZrGL{w=Ds33@;Ex=~%e|q$ErV-K z$A7SSy5GCS=QTio{eMhpJyRQ2;~vvBN6}1!qVdTk>i!3-`!QmVHPt^7Mr1eTqI28q z|3`FqXvFVnrPVwm(3Fn(-`Oc!iqs7akB>>u`+zU!UUOV6;h6P%CTW0K&&p6E4^a3Y zx!%2DNBM*i*b&|B_bja=wf=elt;y@z!)Y;IQLkKy!3wRv`0sn^P| zSn8E^^Kpo^vRtVjE$HL_6ZG;TXk*wGC(aN^`>c1Xdum#VOD+qW`@Ti~pTGui{MGX{ zA2V*l)fX%O@$ppKnHOzS_5eegeN#%HMsj?Pyg&&WU9*zs|WZYPavfgcr*1$vh0 z#x@Hl>k^-rEQ8P?;=uz;<%0#c5E4J=eh@f*8}!-Qw)Swq z(fsEvNocPcmV{6L6gIi&MZ_l=fC5YymCt-MTW`I2>)|$G-lPP2=S7%ob5be@48Q-A zr;Pw{#HZ~03B4!=!NX7BesAFaz#v=xYIgi;7C$cnVSY4T^FPoGlAn3Zbx4*4Zu3Y= z_&1ML!@2tl+kaoX-hh;f&xUu{rNVj^tCky=w*i~B`d4Ewp5kK zM|7ELghPs*T391eJS0nlXk+0#oZUSB+D72I3-}h;9?J>7eu zd@k}#0HFp5`<{=gEmYU3z<;1tQ3Vk6s>zN2pL{2|iPfoJ0=Q&6IP4$Hy{D@x%1xm7 z$E91M%5DOTKK>wI7A`!_RA4lgfeRKBv2g4y;ja&H$%f}Ys>Jr07c3vr=Nf@(At@YG&=tEPI$D$7R+_-gqdS6+_1`%S z``1ZgP~&;ubK$>zaw*i_>DQ4v*z!~z-uE9*nEa&Yl8!V_RZ-<4UtMqZ-Jtsk;Wrt$ z4$){dQ+R8(i@;400(6!APs_US*KP^_W~xDYRpR5TS>6LvrD!$r{GSoKKe=hGSyqPX z%`Y2GH4YZ+LMx6(c5L(9e^yDTR=}o5gbNC{A10|T*8GiC*)z?rQJOTOl z@L_AsiJ$!i;hZs_Fs#4Zx@joX}Q#6b4Y+ zk$oE(R^So)#*`ATi|{ch)J@B4D-Wk&H9LNy-!T%x2GftSIX!K%^VA~4xlSyI$V>N@ z-oL|wh(p1f__8Y^-&e2_;s;gb)fmmR?PS6}$}7}P!ufFJd^7JOkIjXlZnR?d>)mN3 zHOCt#N}BAO?`&XDQ7YG1cSs^ED4L zmavlzuM}oqYnm$^B7kkKGbI0as=6O@JC&8~y}oL7$!kDK;M$3>oh@g zd|wvzY$Cd&m&*SdlH3*=1Rldo3Cw$A$?dHmy7bPhIg(YL(Um`Z>& zfipSm?Xl4#P(${Hk6Wj6H6z83I@hD1TwLPqWv&Eu2XVo}ba1!aHuL2;rk2-^Xth+l z+B^BQ(P;$S9fl|Er{mMZ$cI<6ECyHxHWp5>=o?lfPbKtint~`!~&jG`7f#G;|SDN(X%z$YxSp zFd>Tfy|$pQ2;l86 zIVrYdG*yB-F;w%M1>!p7F0xa(~`Juf3$(<0sHP5lFT(f7P} z9NqU)1LV#AYY{ICL*yH##pWKKfS2ilmA;m(i2-|&b$+L*Q^)IzNXIrZg;?;X9pG#9 z>QhRNj>VSl8cffS$6?*8`68VfoSf}m?e!Y>g&%4`L%~Y?5B=^qyu%|XujZ~245u+j z2MA}Hj=X)wJ&iTZg-x%}cCo)l$y+sCNkm7DQK65ZO%0#z0!8s9xdvKAQzya1_ng4Q zImNsh$6O>=LkzAr`dSd^Gyt$JL>}U_eEM1Vp5A4l?Hpj zpQ*@7k&%2!dqG}$BjPTpfaFn}d^X*;qf98N@KpuzS}dkQqOh(;=F&}$er&Os)gevN zKu8g{S97c7bGj4}O?w~4KR8+Vt3`d1Bg%9Wj1HJQi*m~RzpP?tuOq_RY-FP&%kYY^#{*mhTi zA?;eEG~HvVG{Hkk6*oj~db)W~b9CjWv@#(h+w-bAg@&=N;OFO_zu&{To=GYmdNUcM z-10H)iqARAr(ameeF&XQOxAo$sPoU5R&k=YX<1$Kx)Au&L^|M#`X^5Gf$jLG&f9#J zjwAO_HdaGXRCUf)KxL7Fr6wZ}e)eXoe)*`1$zL;9$MwDod!bI@I?{4?V&ZVt<%3kK zjJiqaJ5@n%)K1Xq_s9(?EvW#ysPVZ!{SO5VTfF~Fw+{Op9jtFuy;UWP9SOy@N9S?J zg+7x#t}^%vQ9jc_y2(}5?t)6rm15JywIS`O4A3W#V^rtuaqt&EKR+x$=7dI9+X~Ik z%_;9?DhyZKr;Vd*wLJ9VFxKOrg7WoBGtwles1oMq=2cm!wRGrGLj9;R)qp_Q!|yT2 zOz*L--9<3^)NYm*;(ID}z3yG(J2rpc)A$a=Y<>1`>~1dm*dk5JkVs_2u zqx3)@cg?afyBa)M@{`xk_ANk0j{BF96W22nm;71P*&R!8iB&vBEY8%N1XVZUjw=jg zA2?Z+7m5B_EyW7}eV_Wub;zcd`4DsBk(9-n(N6O>K?xOqxxQTagXsU2rLRzXvCAbD z(Z%lcNPwwn{@(i*|8J&F78{N>RF@#1>y6=2$bvNk zx^qZRf?wa$yiNXdQMYaGC!C^G1L24lNI>tj9LHkGVw+`bUfe6Z3%$}{q7>QDwwhiZ ze1!Wr8ew|E_(y_mi zm1O%6Dm`M<@nn%UHNV`kx5UQDH!Z^mzUAM-rz4{>{wv56C^m~zJhhfP*OCO!%l07{ zVKM3ivdBy$mjwJ}+CqPK0a=jmvBaIkM@-iTqB0tS(kdKhfdJMrvs;qh0s%Xh8YF2YB*kU3$k>Jn6Zw{fDQ z;5RNBwN}>s%F-LrZd~G;!8@DYY21%P2SxJp%*+ho@)?bOHs~;|l;mf{IW|q|tXWpV#DPiC>W!Cf8+yEo zH^{4Yp$@t63H(Uxa2SC!?dIlYz4n1@7sEJ)+1a8;Yc}@tbDB!rDKl1gDPprTFP_xu zkI1~LP?31-4l)Q;`GtB<(G^QcTyjGg4D9B~zNN_*c5qK(@*0Fkl7E(_*kn7j`E_M| zXtof{E8k7{t}2iT{o(Fcm$~#vlz7-|`>rjDwa{Gc{?B(e3E0IU@3gyhUccn=9uVnC zPc?4>FbB*B+wOWtrmpbF4DNi?xy&G0_xN-2PLGH|Qort8CY9mxZ3ZRr^#`zqgH3mP zDG*iZp_iWVSuGHl!ynh(SY%7LL~;BIpT>tm)VciP;M-coDNf4AkX=toTK`X}XP%C6 zb3DLJP`8bq^Yy$3a1xSlKDp=xx+-*a_9TC>#W#iuGk@;2oqktw%Cm?Zkuo9@ zAl=J;W|c{U6=&ufj)|ZMaAr81O0Iser}v_u($T9iV>@m|in5gk!Tbkgp+~lDc2p^&&R&ylTqq z9Mh{zd;Q|+C&-tFKj|05w^Xg`1twhk27Na@=S%%SL7@ryzU`S3*_H7%Lzf3%k#!52 z9(4rADz}8g6$Br4I699I@+!gDdW0wXTxg+Fa6ZL zjP&l+pNQep3Orj!P0x7b`?dxpGuEMsDs9msoZDJ+UB`;WYK&mKaM>%Bhn9 zlI#{;nOYDlR(ICGtv|Hdx-OXeAVVuBr>{ikRpu3a3UN8DXT??Te-#T>`zIxtaINl)wrzEJ+0p-AaZ85f%QLRAf@J|qtl7A zSbWrHQxNsRpPMh@fI&r%Y9W(dFyj+eSqU~vk1qKf!z$?)+}xV>`V7BIGqv+pey9?d zIbQ1-swm_KMf4S)v7hg(qgu>$tW)loS{fB}8mk}Nmk1W0Q{DS=1#8qU!5W3McV4F> zC<{3fI4>B$q?GXQ|Gq;howrx0>b$b^`qSwwZEKWQ8O^YRu^^a|?WVG}1IY~tTB3SJ zr`+}|4Wp>0yVhFkcNL;l=QS~ro#qc9Uvj}L_P{Z4(7O0fdgxVn79FBxDX$}x&35PD z&MJ!-5p>@Fk|vs~E-DqHQw@#JJU8EQfCe0_DG-`E)0Dq%v-v)`yIXs06iak@QqKJM zIjTIu)f2!lh_7u@m?C*7!fzbtkz*`+Av#e?cyDAf^#&Sz#?Sb3a&l(I|2aENN@xP= z!VPz@MyT=AIIe0VQ+Qz!Zn)iI8Kp%&u5k0>6j*Whb7_+|yy$|37j>W|np7Tk?i ziL{m$IGIp*g%=pu8W=hq8ciWcJ(k z4=ce+l%mJ9c$zFc6|UQ@saz%<`Ksmef3CS${%p@G8F(a0*<%_Yc`XqVXHll!#B3_M z%35ri?mMTwz1m0+BM1RKHu+KNI@`(DNOFhL6<2vw8ud8j#X~C9KaQN7#pmkqwca3Y zvSn-Gd^wUX$qO+zaj@R6LJK26Iv3<^$ zXqREJv%jXggojiwz6XAt`wk81S2>1l|0K=ISj!`P*QhyH#r6mfVk&-lO6gHjSz(B} za?2ALjngP)E8c&{S8-*3*Af^i{hLu_ITOaa7j~b-(AzT^Qhg#$;R_y{58;JxCcDx` z07RF`m-`esqJ>aw?5Go3mD~AJRlwk;qgz0p7Z#@H)}n}$>e&r)!!;S7hO1gSjt~HT z5eWn@`rolc`rz5vMK2e*yK0G?Z-ArEf50GYbb+I>*>sahNGljG@B26*hpxdJ7FL^S zx6DPUI3IXZ$Qf0X*?icRCHe6&UP7Lgy!}0?uUaK@_bCoVwUARY09!N7n;B4-8UC^L ztstDvR#Vs&BEhcnJ0N#0L@RDaOXJxpD^W^Ly#UGj z7(`P{ke1=CL>{p+m-(C$>rOSfkI)5Vh^epwP%lV93G@N{^iFiCb-_eSOxicrov3Lh z%oP9rc?Ugxz0RhFdrQgF#QarCo1)p7QhWM}?VpU0+5ziP6$U$0j&Stu(`FMa2r%VFV`)x2;7$4sz=0l)1B{WrO|-z+ljrcR+zcAKQSWE8S}Vp zy$F)?l+q%e&z|X~{D$~$9vEri=X^tiXJN@3`v)^2E%-+NA?h4s#e~PAl!vb(94jm? z%5u>1C5a#P4@B*>iW#THd87h`PM~m>QOHhp_K|S7Iyh{lUY%k*toXwcu;OJD z6#TbWqGh28%-EJRMxoecCVpoTpZDjx(j*!CGgwINeSMijq;m$RHKVwSHH%6L41Y`I-oM(Vcbx7gt^uqbX+M*&DXy|vfV`H_Ds;^~MKsphe`x`xL-Exa! zbwGg+rbYe~OiN-`(j6`DK4hGs1=X~LbC^HTTVr9!_qBM(vD!XC+elBELMF>22;NWi+8wCqnVMB1&ulpgYSnw=Tzoq z#0c2}z>qcJ!X3p)vZu5N_3v=s8a6zu94CpvysJt0A#V*Np^^se`wbT76GJ(-mnA5K zFAocPRs_q$Q*?~Hdx84k?^9>SUX6<6_aG5Jw5rF@%38<%oz=1Dl%RgR$%s97nnd>K z6PH)KGv@!QZO`AK1&;l_fOIT=vT20qfIUxVv3c@%lvBQs&x#AU5pEqo6w4E$>+=Ln ziN`bLn~UOcZWA97vUg#T9L2ku`y;rYWK#TPqN6h%w%B&KmIn;!p&&kX_V|fx;+*Q0 z$r`;j`UZ9{k1L)-3rSwY%m z2`2KIa)BrZH(Xj?okbdc0UUFdK5;KpWD`+Nbl6#D6-(oF3Z<>xNf4r`hcND&z!o`= z8sf+`K@?mD=SytIPRc7$l^N{+}@5RBQ=|o1U!xButorP|P@7vxak< ziT2m{$5V|{MZ&|H;w-{(6zAU{UBJ#Z`aL1qU8JAX8SI-Cr)17V93bEViNuUmgQZ)^al_ z>72t3vVH=-{6F$=?Inq>$Oh74`cp1PqI=Cw!`?kSOpAdTjPkI!q(X0NL(Bt`oV|PU26EF zeei}LMReyu`e8)hsgMAB{rfW1^i*!_CuiRBHV~o%weC)1ObGM{8G7K$(30yqtq+DP zE#3yYLv9Kme#K^4Rg=V1r8MzI(yZ?qPauYRTHz9!I3$hkf)vKY*kr^u=%el_AdktUJr3-R)DJATA{}^)hH~ zzr&-nPA#s6y-a|<0bBf!{fLwl*mGORRPQ1rgGQea70}d$7x}tZ4dJrbA@s!>=!&zU zj#>iI$2N6jr}j!$&fQq|H}nv)%dwm*z6eYX!wC+gxjAZ{E9;Q6}4j1^V}NTAJsj$ zGc;xRKBTAvuso-(+UKT|Tpty|@jQp}y~4*A3Aagny~ySc3^%-Yek|0q0vQHmQncGo zucQY1PGt=dmJ(`)3A5Lw^H6ll66PhYoVc$ty;3vFDD$Gd;GpE=KA58RxB2bq`DzNi z_wLfqpNrUE!vFO)NBK_X(Y?E?8GkSR3X4vD_S_yvXy|=*4XzJq>hfzdMJt^h*q`jm zSIH&7U3qiTtRVjfNuOW1clVOGkke(#dzey}6g2leY8 z2Yl4wznSif^91j@FRMei`vgzD`=Kx;UdzH1oFc?!-jEq9MikMuf=ld4YV0YGD~+u1 zK=4`T>CMJN@z+_O*jQJvax%V$;Rc=75;~=IIVAri*C=6S3?`w-n1EV+GIvQI92x~v!GM*kZxhU3k~8!32~-zC#oyXQ#%jT28&f#4c*pz zqXnH)!48xA8^;8F4w~a6^_r6TG1M{w;`WtL| z+CF6(7yojh$*bE`4vKYVk`p4CtExXT?G@m#kEgWsmQg`e5LFKwGQ`#u(qcLMDywnC z^Y0{nsvB|Z9`H8v=8$Xo8qeYXLK0!&?Gb%7>v7ZInUR$iL3n%#`55o&F^5EJrP5VmEDrCi_*?9u!g3uB4eNR_-EBf(Htwb zAMC5jZ4p`1+%x}n0C%&R7g5aOtzoB0+Y$OnKD%L<;#3e%Zku6M>7WbEUk9RYnI#!F zQd6ipKdT1TeGIFS_vdN4-zcIoTO@g6Igc0z$fJxs?i)utg-+9%a3IZ3dXy8dAV@Ww zGnH{&e!V8@{o}BGPu@2dn(ECL1J2^Xv`8i-I@AemKOL?4Q8`*fjjw7mahfSy1jH*% zyjA1Z$R}hcCrja=51e^D#AUd#w`ltlQY%`dkAN;#z8S>E(^!Wb-=wCu_}eDB1;XVZtnUqgnZp`d;A zMO*FJRja$GE5$_PH6-~>e$cJ0ahywgXGW^ViQ6D0Wm~P{NeKpyuVnkxP`nnf4FO&B z^Cxkm({d$4sdwap1md2DATFVjVef*4(iP=6wfMI8=10JmgP%z_$Mo~Hm{n!_9Ox_J zg@BM!TX3q9#-45NbYZ%{%P=YAJ^7wTbzKSsN3_pQH3c+%F+h^@Fv2Dum+2ISFJBGQ zdev$@B*fuW^eMrn$k*{pT5-;hZLV?R)W8@2=TH8=JsBxGr0p)NB{(L zceg5ib*JA!2e}4HN5`+ck4b+TpO(d2rkJ}welzY&;8Zmv(;#peWMiEc!+3%PQ^n>6 z9thv#-^XxX)h|}mF%(rY2WYKAtGlPwjE*B#;`wqTM{&X6bDv@sHj9An1(u!LYNCIu zDb}h-3)aR7Tkm}ea}=DP(h=9d+dx0vM!5F-W+CCBD5cEXFv-KO^ugg+RkmRiXLJUi z4hLfzVh?_d$I&-ON$Bs)mm~mLuuNad>g&f~OXt)D0Xjh0|K84u#Wm#B3y8@Uc4cqN z!S_bobHuD@^VloGyL6dHT36*Tiw*`gUS}r8fF!0U>u^8Wf;;#gmo~Ui`yF)OKkq^# zF?UU3sZMexim;F6eNc73)#3{+5;2f^8W5zbM`+}UUgMBooVn?Tbj0WK-g;q(i61P+&!9z0@Z*n5{ONYuG$kC|mj^;pAQiXg z-`=5VCtUt7(}ZZCop{7!phLU9kk#AzOE~WNfgi$;UUsA0hjZBe<9|)uFFy(Q6uZ_( zT-~l!@quGDB@A_{qi{!xOJmD=Y zJ2e2|NYStEe7BGz6q$Snd2tS5;EQxs`MMsC3to|wP2a4{HQt*L7G*#AFYD!Jtd-1a z&1k{uGIAi7CI`)yUcNcvFY04bMDk5sTkvwzw2TM0!ZA8Hn7)+f{-EAnOfqGqq`xE^ zv!dp!_94an80hWvfOGt}9g2&%nj|KWPGDX1@^GA~vWT<--9J|}<>-!^rZHhgN6E7K1hn5W#cx{p zW9455zP**XC|ac>Km3S{`#$n5YGY7mNmG8-pp}#;Mi{L* zHgWE1i_;>q4#~>#k=bwKy?*;#&B}sxAP&AJcwzm))z79Rp9SW(H*bN`*?8xm>0@Ij zM`>?c|BB-GEJGEL_`@jzG0^weq?p{QAs6apI5mAT(~Y2^zoqD^TlcRIv0QGN1*}h{ zAOe`G5kdw1%vq{q&UJq}OH8ku>*(cIIGf-OS@~n+(17i)FOHdk%O{c39@=p0!LRO+ zb)i8oU~4jirJ-2x^K+0Z^RjJYvJcMuHdFw6@AMP?zLZ!d(H%7NDpL|(DT1u zzDx`Qx=qIBf2s6Z_?mhnS!?&ebIXLmRQA??r=u5>$e#Q2|SDBj|0`~Di#P*Ejn$Hv69D4H1#>ZEs^y;7d; z=z#J&zxtEeD?3627>7LJw0grnVgnT<5aa|L7jp1ET;cd1N2bu3e;K=!i*{m(83=w2 zg#@xh-8cWd$-<%v#Bmo80;<0sy??8mdv9hr19E(yvw#OQ^aBtvQb+38b}^GeU%UIdFVXShs}GJ>+G+_3ab<;M8MJ%1{H6{B;l4l)bNBP zPu`ltg~|R^d-gc`smsuOz>zSHtnMIECOJA$&9tB4{d|YL@E|ORK`@s>`7M5(tEfo% zPRaqG`=DW`KucI~*MqS4G~FCKLgMblPY)AzUq)CmlTt-gHCuvoOE=3`6fI5opa;nT zk_%6-PIOozJ?vql`eB;c3kx5hf^l3uM`6q48ijjUp@&($h%acs{;EV6=j$380(YX< zTZeC)T;Jc&>ST>tWwlNd^;nO_WO&`01Pg&%6h6P16fCN~_-}x7pH*r{^8r6=GbuP) z`5OzUj0Sq)Es?9^?L?EVhi5o1Y5UK3B+uakIIhjNn}-5IZ&=JdAlc(m!m;?YvknAq z#E`fNx*zctK+GJD@9@KLGRMEQ-RpO-{+6&03}S`lAm8!DG`Q>08&XQidUvmzW+YUQ zNWJm*$~NtPjl*$jjW!u?W(f!M$P4^4h=$7g#WbllVTOt+TiM}ziK{rj0kMXcO!O+h_=RHh06x-DMg-Ee6 z89tWxui3-&@=Tsh)0I;J@u6>2tl1y>OT&-AR3j6px=OQQD6#*W0;Y#0KoXtYo+N9n z_WyHs=#Tl4s}DBI#Ub4G9DJ-~_eX=ol#5R8&m$j`N&J~IIvst(s~84XU1BKJ(c?I} z3R@saO{t0)JhK?|twJ7dQru$@d4l2IUhQItEb&1GR%_fmAMYRi8aLAw>zGTfHRQFiVbb?y75s0s1?FVn}s zqt;_R@VU+=gP9Z+G@(UtJ(btWfaRlI zayJClX~@Qwq|Z$Fyl=4J%n7LXmG09idU`r(7c9M%hK;K32U{?iQ{Y@vtndBm?uHx5 z%4tezh{M|C&Am&B-z8V*ul~_}2xG!b9Sf`rht%%^7LU83E`I>K#ofl%wN1FSd!xT( z>Qg{c5c)Lduq;>Ge+4Wz;?$PU`Jy+Xp41%Ct0CM$IO^B&5ta);wLIV0wcK`y^Q|0u zPqyWiO{(Z7Vepstl)qaoyEfp@x2}aSL-zW*| zlT|+5x}MW(c)^9Tvq)axPCmAq0QU^V6dPxJ2%CGqZrHm|pTDQ8YI0Wl1Y`4a{?8}$ zeYR{K-B(n6BydV;&X3*i=aBxXr1ndfFMK9E2e z0x?lV#@gjlw)u^ruB_b3(uUTAzb{xJev%=RF7m-7ikBtyhW=y-n$2O3isu*o1 zDyv)Iogm0t{hC*F$If+cn5VDmq74y41U-LZ#oI7m(R#b=M&z2q*dT+7^X(gD{Pl;>sL`bS=49qYRz${f@Mu@E^Zi)Iz%) zYmTLn=Y0-Cj}QC3m0>=Su0_{k>|cbBCtWwmxXjQFMZ)Yv<$IxiRiznWZv!6-_Y#O( zrr7VcC--v2x56h{V@kAICGF-ONbDyNrV1fdqLWu_Iw&BEl3pI;P5^meXqbdXx{ zgLO)~8h1c^cbx4`H-3BMJR(L9uDUWwJZM)|sr*|bMCips-9JO&!Q@rH)7!<1Huo+K zP#St{UANT1}qD2q7!i!v|NbMRQVuvMS!t z4yQ`$50>Osy4M_G$io|XCi`IH^(*w44dleAwkVg@x5eoqO5O1o@RG}MiCx(_AoTE; zG?lea2!aMp#_3k~+HP>;jieP^N$Fpkd_&8MtpfaZY#D*PIXws0m61JkKV>C0Up!z{ zLZT(ZST=9&XivbyJFll&TA1nbuOJ1w$jIi<+b*&=w_Yt@)YKnlpPa3g$ysd7WA*RZ zx}pQif}#u!cWRa$C!%Hd9JXDcy5Ywlb?vBKav{^IKi>u493KJ_=tSX5r?jmaPDu!P zEYnnV!NdpX=7P_Dx+LUilP>`&eG#lhN0_u{viO{P7=w9s-&| zpfza^QD5@48F8XhyEj_uXKmM~adO~5E=v{Pi4CPfDNJVjPgiltW0X9^N3B99XB%g8 zg_%?40ER!NJxztR_p};nrj!K9Q~v_R_7JtZ-tP%#x#j)7!7_Ke1Dq5gf7dVjdvM!F zTZT2eX!}c-rgIdvCxw1$p=#cFj>frnC0VNA-Z#=P-lEWdGM*C2{r8u~wzl~z(tYY> zleo$0nL>zg`IKo@DZ`dx2=`>D2urlggOzbXe&NH`HBHPqgw>Q=-(OE>GCHWIDaR?w zaqBDYlj%SCec_Fj4<}%hAgmUjK6iNPgcybqTbc=^;JP<&`P}v9=o@lktnTH?TP{VZ z7Wqz%X8VsGb$3y;%Nu%68kVjM?Qr@Wg9-@6CSZI=7d-}KVIW4fY-J~sPPn!IWe5^$ zwF!E~_Osb5t$2{)H9~vCcGu+W>b;+8`F9mCXL0mJ|T6XsWkpf!h}wX`a|I8-`5wBzz? zBlrgMk(lb&t<~D;i~{#ITo*G(cGM8%V4~1sA28b+X)ILA(R>HWYAonGbYajbY*&m2 z?fV}@*e~6^oOQM!=&}JSkVbOkFwQZL5|pO)X20=%V#)p{6*KFVAl4e7L{{7qt0;?e zXHKWuU*p563Ai@W4WdBb&5CXpi?7ifQj+USE>X8uQnYmKXyBN|PsUk_(i8(WXWj>z zo4?88rp=2q-WUEQk=oPMsWWiO2-4qjYv6ri=X~{^W8OpXNFCHmAC- zD)9{bLfLF4EY!)CI3>9nZP0$j9Zi7E?e)_*`NkapP6l5B*V3iEk%Cr1_kC}in$Ys_ zWCA`;cqrY^b=KwOxV03g*_Ear*-5WJOk76;V}EPCgmr2EWZALKnjmvj@X{$E;$?X$ z7NsV$BAZUD!KagksY%|oS-Is-VP@QV>ks%%nb~m)-f~OgzCARF#@P>?((p-Trjds(Rq?}q#9xD1%UKgQOjui; ziE)Sy$_K=SUu}jkz7MQE7`8FnR&lK2+pWs|>8Fiz0~$Jm-UWwfn4(JXuWuq9YqTin z^Xj=ahzo3P23lzK6~&)wZ<4B#j`EiMatY7XGB(aFdt7>-wF^J{#Dn2v;9T3R#QT;R znY#9u!;p~_EPh>uOYJalZ2rmOqHpeNDng^@K) zJu|fso-dK{}}B3V7SUV z;NMcXQ!Ls?PEyrl?RC0xVWKV_rieeMQAoGY>ixbCAwgheklwF$)Q{toAA6X*#dRq4 zrA2=%^STv}jc#V)6&aNA`$lfcoejK}@NhP-VQJLa(-gzeDMndv+a*z90_ z+FUj_oOhnF7TpThfFgGO5NE4>#1A+pTr9yQ;tQP_Ve9=4lDMU|M);ih$w0f@Y<=sk z_UaQcL_bl=M0Syq=fge$*QqurI%x9dT0ZPAJb=(226=)AUkYDqaI=YStl|JQ#SO~b z=25&pMxS^gNp5z{6eeZ-TNHDcAZD?dWLClh6$|En9Q$~6I(c2IbaSo%igp$=j?;!v zS%MW8uaq2a7J`Tn=S|a#51W1W1S|F?VxYPHSIboOVNGyli}q$bNlWT|Yn?;4>~!TS z){zw-1ri(t_qoq{y`PfKh+QEd&TDz4vtpRN@!4)UTC(8H(Mn&-vAS1VPj1_Bi=gkarkPot<%XhTiCXW+aaKZ7T?Qd^UjP;HK zpgUY%M0{G|$%c0>tif$=-<_2NWGoCo!BPUM9JSXmB@xUx(eM&l-Q{+DH*yCPxr9%h zr*&m`(#{4Wcq}Ii$6D%|`VgTc-}cKzwt%W@I@ot7W}34aKT=9(#U5$onXy0qg@i$4 zMd>A5BVSP^)hZ5I;_%9&WhyHfQ(AG=G;>_vO)C;y%K6rO@Q3AEcg_K}n;QBm@ujM- z6ATiU{tZa2KHufR8#hnzLm*v-3LsW8Q~~r!nTGCNUQBxk|HG5by48eY06M>;_=q-+mw#xuPM^HJ*oanmkt;w_s(-=S?+p!Z>fPszd=`d2>gN`Hfmt*?4q z$2jR-Ak+~+p41nFc$?p_TS3=A?cYN3{$kgKo0Bsq|8+}VDguD&IG?~YG2R?6#H|K# zpceAUk@N*s?&qQT(}mOLs?Pv=wEfg_R&Mv5N>Vb@a&7UCd_FpH=;m=|r>Rd)UhA3^ z1V^Mj`P=pRoZv2pZVIi(*kZfb%8`rJ=+F}(;SYPyQZwmbq!_cZvTzGY8(jjVZurGt zRiKfpNUEk(q9SW-N9LMBHn5{wN-Ba~w~{XJl0w9RWpmw#1EE*O8T6X+&6+~Tc+PW~ z=!RN3AQlhq`P|lvi-7NaPE|`QMN;xfRm-g%J4%XT2wqKkEsGn+FE*_hcvNy!jem~Z znc7(v{<64L={+3De3;Wj_iMh@_nn9?b-M9*wuaWhlI(%c;a5{|k+<}gg`dWHEu1yi zT#@sAv9q0+ZL<}-Yj9@Rf$PiIRTkf!zOxQVTYMGk zo<>GZE8<(t?C)nw83&CCU+pUvJ&dvjgd&~8Hkdiwhh4`-l(CymhF_b7hgTp)6XxaAiNj-O z(7nYus+?vbN{-u;FKB0cHwKa(K7^CP(Y*SV(~F@)pdr6R=n|IrGg}8 z1Grr+MD3R}qy~h@!Yf9rHY5zsS)4$E7X7?dx{CXl-ykiVwj8V*sJM3Q?UVlY@$gaJ zyq!YhwXGKiFn4Bu;1Il2e-TP_k)W9Sn0lTJ0t*pozf;Z!oHHd$7I1nm645(d* z27o_@-RHT7WX+((sSh21T^a@+1JxZd*~uE#uSAHUQxCd)3cKxq=g5e&T^4$zwPKNI zHu8m?`E`0wpv_43DVO~-GOSEy-dt>N z=-I#?J(ahQ%x8by3JR818&OFA^Ic`TYCkN^3SLj-pr`s$RF=(;h(w5RlPnZlHA=G= z_y_S<+P$&CcR3@mokMxLU^$-8z+#n?Xl^~=%O`fJxV^_j%6E5g5q2{ne=y^smA)*9 zD%tq?*CNN-o-=V2eF-~&@Jtqi)Ky~qGSO$dcAjV#m@qP1Y?W>Vi6NgORSbpx z#x45jWW-l=Rxcw?PrDbDpF$D?XIJ|Qt$~0sQqIEIX%D8sL6HE@fxwJc>11&~5U6|( z1S%0QOF0&=?D&?v9mH}e9(w#fPy6cr1E>st1GeC|<2#iOa1WL)QO#>HC5t=J=4>7j z8%pZ^(;FYU6Du~_nSIM)7BQ5N&X-4zA95+!pXdk%u``(s43J%IiE)^L`>%jmWrg%6 z#_{hrs;qnqj791V=piVww*f^I+oOi=uuKX~de4&CeFJ1&fpx~=HhboNVkvR-#p{pP z^eO~RUlS2t$&iNF0aCuZ)o0&X$$SNIH`~4Vp2h77<|9B~o`2WCO4h?owOCc=AF)JsMA7vC@7mY_k^gSXrz2Isasw*seAlQ6%K&4=tiz_}}O zneK>ivINk1z2$Z}1T0zGd;R0{h|a60+LeoQT7r^zu~~$phXkUI?*N^=52ZciYa0g0 z`9yU0Et_JUG`%S-_WN+pr7wLz7om|q#dcM{RIy2NPm_FWh9yT;SPa7(l!T4X;(dlL zrL>-T#QF-_df*nf{^C*5Zjo&G!-4-;q}0KAalI^%C|umH6SQkuiWnsl(?-o|1& z+UfqMRnH3REF3#}a8;?lTbVhNZZL1)$m?bl8+44*dhfRMtL~gG#@s4w`_6)`C`}_B zu%237oP{9&wZIGj?jfd(P@DWZqo$Ve_!(MMI8toTPTw#l&7C`H093Bjvvd{9)jsUr zTI7A&k3r9`*8*eNPQCkarimHv*jbT(TdY^w)u~`+<_p8ALRXV&^%A!anaAu@7haOS z|HE+Vh;3s{uz>Hr_i+~S9v7zY3zvP#3jNHke{BFRL!H~D=`^R#IYSFCQb(2sPE$u(s_Yfyk2D6svDGJF8DRyF$bi zxS6yr$7pT%QM(@Ro0;*L32h#WFz+oc?IqVzTL3zkUj{wlZDW=RTEQ$5igMB)p(0@3 z{S3{StnrqbS9Y_9gdM(1=OK~3Sy&%K^;K^YhTlC!yOI7@sJRntz`DR^E;yM_F)z+9|0%5@vvM41^XjVI?+yx72A)i zbxQ8tW9Gid=q+^q)t#UD$QSkR9z?9?X14vPA{a`FOkct|s$Smgl2pBT`PP#vnq|W^ z+E<;=GFaeEj7eY-Md`*unNpn;{U7R+oa6wFm0P+0dOb+Ca=!uIAPbnW>F<-NjQ4;D zftu=NWbl7`Iy3sJP+}x3Q@fP!W3#kKS>Z#C2ghku4_sD>O;>xgh!mQ^JXk$Sd0MYT z8JDI4rwnuSG8Ly2k9KxjeyzXO_t!1(ij>;TPIp&YoTL>6*tYLuwx^O9nDa>hm3e`$ zWoz`7{=BiVvbx4h$qp6)r;`S&&x0hpp+@9eeo@W%g^E#tX;mHh^5~%71Avu%4#vWv z7es|e)j{6u(!tpZ1!90iHO)E3V>7|-!?2IYM~&~? zk~>H)V>4#tH8azgo_S#P3$dA<+RRqLm5Q6x*SmtXt5373CL5vFwAO;}5;4Qkr=Hy1 zSufq#r~-q4-7iZPb5AK=M2*d`j^xty_&fhZ74D-ZDAq~6gFW6aWO2uH;?-FJZUz#* zpcKp9D+)%)blQ2I(vScj4zpB@kCsig>L*hhz0nAc-zXQ_4*TBZ>!GJV? zN+MOv;p$_j(=?f9s95XP2MRBV6dIH7GeDlEDYQ;z#s0<Z12P(@EpPGGpPT2@o zFlSVuXdm)Mj@ib&2MUr;jTfs3mD8M@Ct)&Ae%!8SV_qw7oh#10IK@=6=Kw=cF2@p>$mwbcaGW zr>eCssa{Imoi%3oV?mOZHd&f?vI4V3){PclX{v)jTloF>4>G3q{)f6-_-P|DSM_oj z7|b$=C>>CdTnm?Vn@cB?BW7Wn*NuphiNT4F^FXk2Z2J3nQh;bQ^B95nxpvdfct&W4h&IPaj|OqCUPJ^ls3ySfzze`dQ)%Odv+OFeyS?sTMqM# z$HA0?*Q?KiHGd0uO*sYk{&HVyYjM@kdLVSN!M0q6G8LRsVI0bxoOoaw{249H4~Mbe z`OIRxR-$C+z!aQy#Wo;4NaK}Ba(1mcauuJQwQ(JAW?E^Zf?g0=6NRvboVo8`qanhf zTpq4>R(}rfTZmH2A6zk&diHU*^&P{s*T3$X4f~~^`SmgBG>>*v(DPGZ&d`O7H$~cR zjj(4Pc|$_XG-*@&hF&ONg7QPEP^l4pV7X_kf#Gx^Ng7Og$lKoUo-*%lDd(ye9D(@Fd}gvWs*YzFi$MWJaLhQgp1AdoI2UnHIpvy6$C{#0vyJgSZv714d6<%PeVI8;oot68<{}Js# z$ZKlnHT+<-@%7>^hPV_v!ZHetAaaNZ+?V`=)NSdIE9Ol9Pt6}Hk5!y~`<+$?Dmubm z^A2H2n~I8r7U6!%Kbfq?VbhG`ow3vBI4>ZhgR*)RH2V|6YYdb`PmcD`y;K43PR_Nt zUOv;ek|! z-kgZM>r^_$&j8rf*ufjjdB76DWjL-5VUg!tp50-}k{hsyRBOIOAM~q!`=0Iebg#nk zf6l`2Rs$V{7Z;d)0MiNfAY>05nOhoN3$JZ3CVubnb8XGvn9v79M}+2H0F$8nr#LSg zaxVfrCu9HAup)3{c50^%P@JgcnUF1}g+Lafoyl}kh5k^h>5 zK0<}1riE{-L@)HO_yBf+puqTcS>(g;nEgM*LqA>8WT^Gt-d4pMHAmO1y1_AvbhrROw+8^h3Z@Ixba=>rDx&w- zw575Psn5gX>cUng9abtkX2%~VLEe6Wys=L_Z{o$#{YxWk^{iATtmVSWg&9?M9#fOE zcHN=Ti*1f3*0&1JiJF`qRMf7Ed-5E%Z;&=W-qI0jrSW+r;rQH2!01e&<0y#EC4{my zfr3Ug-JMm?ENUO=eqS`tv}7QEoKqj-JP3srLIw95c?5e&*gTw)Dk;}R=O-n>Ttm+C z;pw05yvZDH8(dT7hU&IJKvjF6+259lQ6dQqdYpYO@yLGywWhm>nzG^nh2uKnSjR<2 z4Tt(d&_nVMpnhl3u=H>z579Y6WO~FocRxCdI;#2 zsQUsGmdis#?uRQll7=N0L?r4+>oLo-CGuw+q)48t)_DMPec`a`p+mF`$vb84qzT}> z?~u}=_hoXZbft0!X07sh1023$SD=)j(@&CG=Dgp^jd7fehdnFrK4_Yco3-?oQ{$R? zN0f;{ie($+%SrJRhtjc79GT7}4ES{2>6^@1>-}V9@E}b_|WX>X@=(d^W^@P7Z`h!ZZ9yvQXUXYAr`_-=`D} zL;0xQMMfcLR)6Ank27t>2YFK5g0B4K9CZRPOIGJz% zaj#6W%}OLKWXf67x~`me;qkuH?5;Bdy)H~9F%WDD|9lHd$o={@+`%(P+zsqH`mt&E z=S8RHbqhFsR13jV(`cZf5k}MJAUW8ZQ9(3IrKCOj);bIORR^Jt7s%7xiObMKd?m^& z?&-)o&&zS7{g?BcuX9R^9Fxq_i%`U+bH4-Arzg>t6hm}Lq8&@j4C0=4>u&GU`k07P zhnxl9YRIKH-7asjk17AO`ZZ#nJKru?RJOkIR&3iKFM*o*&GSdRmOWVq#4tZ9pa zdjKfq-7#{LP|8|JBPhp!b!`G?Ep&6~lpl{k@1Gtdf1WN^PTaTwwShNg_33e;s|GuQ zET$_XYX?Vm2t!wsA8g_!{emI5)8 zETwy?g8MVJE`Lj^KsA{#f#0e)Ju_3DBhDo>{t)vuRI@FQ0)`X@7>$;o= z-Ma}xo={zW^Avce?26jG7IS!b*laBSRXe%Lvf*u=i*osnoD&bwT_V1;QWuOjt0S4y zR*qG(S&RI2>bqq6AgO43r>Q7@hDozdHd2rfecj!jJIfe?i$S{!?qC*CGazGXkcl+L za%ujA-d^Ke@Yr7KlO2T18+4Fg0U9<>iRR|2DtoC*SB)L$0eC6=lT1)j(+F3Ez`Wq` zL6kd8Xd)c$Okx06NLs^N2nCj>RKF+AaqZrl7Ek91#iB(BKr>;iKppp3u*n8#rtMP* zaDV}eC@S+2YdpRV02UgNWF&x4fJy5gCuw~mk8>7tgL1KQ%sKswWe{D)aDpQ0;e{#- z>Vtp(c(OGU%@n;>C3-p2R#AmX1E+T&`0XRBR`^?jJ2xQwf91TQIB)0+Af&~!cXQ< z#mhyDfB$S7Mg|e}5#}JWB(>BsIE3W5LZtR?|+8ID1bpcYrLipODXibD+9V*WU+h&(tSvqiOke` zcGjMXSl|ei6+1#81`&-Trymy4w(-DnG?_Ixr7~SAw$SEd`V;hW_!Vp$*;wBobG*P13;k-_wQ$L9Vb zH(i~Cd-!tXjnuG2%NZsA$SYY$BPj<$f4%B(ERwf$b%tERV48YCKZUp>p?55Wt$aw}HfU?E$Kob22a+itBlK4n(l-mo?{TXgX;XeHRmcDYHRUP!MU z?n`AmP@lA8ppq0UW|WqI3IZ}hu!t~S%~0@l&tgEtupT(7Dx_YS%QM1d=-zM7;M^u1 znhfg9cBtGVTHiQ#+kLoe;H&f6^khPou~tf^gbK=AW$*Tdwd0iL9|LJk#0a0R;GWovS_%8d;FXKJeZ_W=COrA-Ikxv0% z`L4kQ0q4|-U(qR);N7ld?#psGk1^_1RJfq|Q0)l$E6#}>hN@yUUjqKpaeC2C7bdb8 zWCYDWMjcUv^duJ(?oa#yTNG0Fw-aV(=XniR|5haoe8THO%JoEZOxm_?fu`P?n7t#^+B6+zqWcbCS9U0-v+2R!z?d%o zBN`YbMRx;=%nZZ9>hDUage>FjT~%9urSNQ-$yhq`)VAjEAoY^4Rq zPdxIX?Gd@U^aUHk^Gb*_NQnD=x8!3R_0hf}KVdPgd8d{#BfN($SKQG zGcpI%)bi$liCUSdH`MMsKks_)KX_*?);j!PopoTHv-fxQ{?4}x983zlO$veykd4zM zb=3mh%_Q1xK?x15Rf0%I%&-z!?&{s-&bdt~{40F5SNC`66zAYoiTZF9Jf|v~V{xOa zsl6fpwsGA;@_JMe7WG{U`v`zhE~AOg&)ugP#k^zwpw|LRRSmklRX|X zPNyM{Jb=f`Y#)G^T7BMQ3$Lgl@rlGFiA~x6N;}1O9d9L+d*BP-Q@u zGV<@bVvqUz9qdf3TkuDWj{DKE_-v92-;j8VHdgGriog^#)P|f;V+vAJD zksu!X=loe5z5J}*SPSmG#?^~lE*Ifn={EK9zzZ%nGROb#gVCSnO=Vq4!8}$*6#1Wb3cQCM<>=+e?pl9PLb^Vy?`u55z zw5t|tP)3E^37{UGEl#U?z+WuVZR8H=%O=8mgyvuED!U|B*$q?Xdi}0FV1mO zH4A^{*XFD1$i0@=l(F5gaySX6A28lvS;rstVfImsao2{{#7uU2RHz&yRW|BqmG?1) zz*WY>Ra_b|K0s~xwd)#bW?G-GGGW7Tu!+J;oxHu#Bm4)j%>`b`TXrI{D@}ZAC>{kv z?pCgii(fB;dhk#LA7)c{h)?jZ3nxTnB91X$XH9f<-r{+(8>1Wvx_5&uL=G0BfE~FZ zy9KZCs90{Fa)j}X`YP|rs2n?TxX!&@NqyQIAfbMqhI5|WZQ7R#B-1ew+L$^1NPR9R zul<_}TsHBfaOIcUD(D3+N|344!VsV_9rWdNhl6{9xcUG3R&~B`M<%NHbRs3IP{&k8nlGLOE?I&GL zBJs%30U7}$J$2IwU_07``Y1HjdK3e9v#f9aj__n!pg&32r)uqr?hDd+hg8E$KAzAE z7|E`xk0#t6VTK@c%$dw-TDKJQE>fGtaS64F@mB-dobR(wiziw-Dvo(|M3kyow$2Ad zjro-Ajh$tf8ZF=_6Lyj>+XKfX7Fml$S+_Op3{RPl3#}1drhp}y0+n)C+0hEzH;jhn zNtq-)ke)EbV#P-1aD0N~0$Rtby1;2FUmqE?2RXRs#SzIPw5+-llj&C3ZzmS9@rOM6 zJk5byVH#gH!UYZx9SBV^QNLIJ2t_A#xf>+%%tqEzl|ci1n|N9{E$IEq`EN#*2^3>` z1kjn>KbhAHf@2?!Y)}&x62rno%9-(_7RHpeN3@p6mY0fg)6w^_6#@0jL}3h4ozQt^ z%4#OkZ)R;GXBTozquPt#JBhB1aER{;lDVM3$$P>Mz%W8;Ty?c} z+Z*1L4Hvi zLubB04VeqqB_h`JN`lYdn-KEQ!H6s|D*b=iL zv3xI&Ozdilua#+81`8CI)QDlzXlj;4jLEiN9X}<2(haU_YUY3sdegbE;X}sA6UDD0 zd@%r*a2)G`_|yuJBfe*|U^N~>uUh{^Dd$x*W}oKXP{~yTKm>-D*A|f|b<2%`|8MIN zcoWl7$L9#_#`HrCQHg|UjmI+`&f^(R9U0UV8(2UD^zb}e36?zMhKyJqdYi^H z9=H0rw{&gi>#RGL`GxLrB<;lHJ7Pt`$^vGqm1)S=0LXsFe)*6;bgw}~sW9+b4I#eR z4{ZxTX()Qcd9uAW3(^O^^H6!|f@14BvAc4vb zqb#dzt96zjBbtG?IT@6IJWfY;Y;hv&-Arl_lhxPBXI)gi+29MuYl}-p(GwQZmJis& z%PMOxhN3y*h&8^?rm4=^G*6or6*$I8PgW!(n5wK4GJAHbX_@5FnlzR(>du+F@$1k@U}#LgGSo!m`*M*t>u=8@4%fD{<)_}uvPSM$I7J}aO0x$jh)(m665=*BJ6CYPlN<~KY z8mns5IR*v<QC60KfYVU*?3J7=03?l0?-(LY(whrG?T z?M>TQ4Lbwq++gtd>PWvzTGUt^C?N28;vJ>r_+8-zvGRbfBHgVJ{7?%-ryG`Nw>9#N ze~Y%6ne?}@jr#@s%!ffY?*9ZuiAi1$Y^%N$aeFCh+UCi80Za_eve2;D(lbB4`J(p% zJo4tGmzvtz@=&SPOremleSjF=N{ngp909^jHdd#RV!-2bRl5@j0OWh7<&7v7Tu;V8l3 z%yJvKbC@|XbQiOsNV@pU(R9*BwZV^tSfgVF{_K}fzD^DHtAB^%Y99HJ&3?6; zTqdeyFw)2AbZnnx^Tw`7e@cIk0P-W}RaS+5EeRBEv-DP3wVnhx2ZbZBcoD>a1o2Hl z*vaLKU`2L*{die{P%S8<6=bA&939Bm)tov!->#gz_)t#$eD-s;Y$5OXj@hW2uJ<{NKlb3bFKPDdV@)y9I?FpcbzIc&JM~{Ih@d z6kx4`3m8j}Y#=VrQt$sg*uvi@CTyTIaX@n2j8*NkD>;f+Q2MuPr%>V!Z literal 0 HcmV?d00001 diff --git a/docs/img/simplified-buffer.png b/docs/img/simplified-buffer.png new file mode 100644 index 0000000000000000000000000000000000000000..aa9787f30fe6d818da22f4896bb296858128a5cc GIT binary patch literal 54304 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�gRC zh}s-~vYF39;MNyVR2JMV?Jo+{m9?B~0H*_P!Nnvf&`r7Mo0nsAlc+aMnkShFkQNLVF z))ma--6h-un96YjBz@u`*tJZ-sDm&7yv}bNHu}DPw%6O6HoDoeZ%&Kyh?y@MIfuS2 zj3cSQO{zvK%f^jq(vX|_c`IiYD)}VozW6sXK{i6Ie`i?mIQ>{bJxGT?Vy{827;KpgutM^>G3D>aoo8*#` zz$%EWto-Ls|7-y-w)^qR&pmPWqX!m-1I@#KbXXV=3>9A;+taH|j&0HfE#UlK4x5<~ za0H9#^hb3=46!wn!%fo=_Ev%|K5QyM_b_uCzv9B_*q>3A0csbZ@C=6vjs@yvx@WNx zwgNR<^qG&n__4q8Ayit*Zx-xZXqet=hKj*L zd5$OFzY=xi-haT2Y2!6eWXb?ZNHpD*!{{}YJ0IILC#CW`E0Kii>xOS_vx1LaU6*uy z?E<8i`u(mRw;}b*8A5hG8wNTX-&{%S@*%5kO}pQ<<^_s+4cIhAGzrGVaYI)sQzCZQiaq)ABHmM1lsnv-Llag(@UO@kJ zgt9|5%Vf(%=tI`qQ$czDJ`hx2?Xkb8knxo26{E-1R?1Ce`wSAS!SoWs9e8)OII

  • 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�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": operator.ge, + ">": operator.gt, + "truth": operator.truth, + "is": operator.is_, + "not": operator.not_, +} + + +def compose(f, g): + """Compose two functions. + + compose(f, g)(x) = f(g(x)). + + """ + return lambda x, *args, **kwds: f(g(x)) + + +func_map: Mapping = {} + +higher_func_map: Mapping = { + "compose": compose, + "map": map, + "partial": functools.partial, + "reduce": functools.reduce, + "attrgetter": operator.attrgetter, + "methodcaller": operator.methodcaller, + "itemgetter": operator.itemgetter, +} + +nil = Keyword("null").set_parse_action(replace_with(None)) +true = Keyword("true").set_parse_action(replace_with(True)) +false = Keyword("false").set_parse_action(replace_with(False)) + + +def resolve_var(source, loc, toks): + try: + return _ctx.get(toks[0]) + except KeyError: + err = ExpressionError("name '{}' is not defined".format(toks[0])) + err.text = source + err.offset = loc + 1 + raise err + + +var = pyparsing_common.identifier.set_parse_action(resolve_var) +string = QuotedString("'") | QuotedString('"') +lparen = Literal("(").suppress() +rparen = Literal(")").suppress() +op = oneOf(" ".join(op_map.keys())).set_parse_action( + lambda source, loc, toks: op_map[toks[0]] +) + + +def resolve_func(source, loc, toks): + try: + return func_map[toks[0]] + except (AttributeError, KeyError): + err = ExpressionError("'{}' is not a function or operator".format(toks[0])) + err.text = source + err.offset = loc + 1 + raise err + + +# The look behind assertion is to disambiguate between functions and +# variables. +func = Regex(r"(?<=\()[{}]+".format(alphanums + "_")).set_parse_action(resolve_func) + +higher_func = oneOf(" ".join(higher_func_map.keys())).set_parse_action( + lambda source, loc, toks: higher_func_map[toks[0]] +) + +func_expr = Forward() +higher_func_expr = Forward() +expr = higher_func_expr | func_expr + + +class KeywordArg: + def __init__(self, name): + self.name = name + + +kwarg = Regex(r":[{}]+".format(alphanums + "_")).set_parse_action( + lambda source, loc, toks: KeywordArg(toks[0][1:]) +) + +operand = ( + higher_func_expr + | func_expr + | true + | false + | nil + | var + | kwarg + | pyparsing_common.sci_real + | pyparsing_common.real + | pyparsing_common.signed_integer + | string +) + +func_expr << Group( + lparen + (higher_func_expr | op | func) + OneOrMore(operand) + rparen +) + +higher_func_expr << Group( + lparen + + higher_func + + (nil | higher_func_expr | op | func | OneOrMore(operand)) + + ZeroOrMore(operand) + + rparen +) + + +def processArg(arg): + if isinstance(arg, ParseResults): + return processList(arg) + else: + return arg + + +def processList(lst): + items = [processArg(x) for x in lst[1:]] + args = [] + kwds = {} + + # An iterator is used instead of implicit iteration to allow + # skipping ahead in the keyword argument case. + itemitr = iter(items) + + for item in itemitr: + if isinstance(item, KeywordArg): + # The next item after the keyword arg marker is its value. + # This advances the iterator in a way that is compatible + # with the for loop. + val = next(itemitr) + key = item.name + kwds[key] = val + else: + args.append(item) + + func = processArg(lst[0]) + + # list and tuple are two builtins that take a single argument, + # whereas args is a list. On a KeyError, the call is retried + # without arg unpacking. + try: + return func(*args, **kwds) + except TypeError: + return func(args, **kwds) + + +def handleLine(line): + try: + result = expr.parseString(line) + return processList(result[0]) + except ParseException as exc: + text = str(exc) + m = re.search(r"(Expected .+) \(at char (\d+)\), \(line:(\d+)", text) + msg = m.group(1) + if "map|partial" in msg: + msg = "expected a function or operator" + err = ExpressionError(msg) + err.text = line + err.offset = int(m.group(2)) + 1 + raise err + + +def eval(source, kwd_dict=None, **kwds): + """Evaluate a snuggs expression. + + Parameters + ---------- + source : str + Expression source. + kwd_dict : dict + A dict of items that form the evaluation context. Deprecated. + kwds : dict + A dict of items that form the valuation context. + + Returns + ------- + object + + """ + kwd_dict = kwd_dict or kwds + with ctx(kwd_dict): + return handleLine(source) diff --git a/fiona/errors.py b/fiona/errors.py index 66e8d86d6..8f857d0e1 100644 --- a/fiona/errors.py +++ b/fiona/errors.py @@ -89,3 +89,7 @@ class FionaDeprecationWarning(DeprecationWarning): class FeatureWarning(UserWarning): """A warning about serialization of a feature""" + + +class ReduceError(FionaError): + """"Raised when reduce operation fails.""" diff --git a/fiona/features.py b/fiona/features.py new file mode 100644 index 000000000..4afd1f3b7 --- /dev/null +++ b/fiona/features.py @@ -0,0 +1,316 @@ +"""Operations on GeoJSON feature and geometry objects.""" + +from collections import UserDict +from functools import wraps +import itertools +from typing import Generator, Iterable, Mapping, Union + +from fiona.transform import transform_geom # type: ignore +import shapely # type: ignore +import shapely.ops # type: ignore +from shapely.geometry import mapping, shape # type: ignore +from shapely.geometry.base import BaseGeometry, BaseMultipartGeometry # type: ignore + +from .errors import ReduceError +from ._vendor import snuggs + +# Patch snuggs's func_map, extending it with Python builtins, geometry +# methods and attributes, and functions exported in the shapely module +# (such as set_precision). + + +class FuncMapper(UserDict, Mapping): + """Resolves functions from names in pipeline expressions.""" + + def __getitem__(self, key): + """Get a function by its name.""" + if key in self.data: + return self.data[key] + elif key in __builtins__ and not key.startswith("__"): + return __builtins__[key] + elif key in dir(shapely): + return lambda g, *args, **kwargs: getattr(shapely, key)(g, *args, **kwargs) + elif key in dir(shapely.ops): + return lambda g, *args, **kwargs: getattr(shapely.ops, key)( + g, *args, **kwargs + ) + else: + return ( + lambda g, *args, **kwargs: getattr(g, key)(*args, **kwargs) + if callable(getattr(g, key)) + else getattr(g, key) + ) + + +def collect(geoms: Iterable) -> object: + """Turn a sequence of geometries into a single GeometryCollection. + + Parameters + ---------- + geoms : Iterable + A sequence of geometry objects. + + Returns + ------- + Geometry + + """ + return shapely.GeometryCollection(list(geoms)) + + +def dump(geom: Union[BaseGeometry, BaseMultipartGeometry]) -> Generator: + """Get the individual parts of a geometry object. + + If the given geometry object has a single part, e.g., is an + instance of LineString, Point, or Polygon, this function yields a + single result, the geometry itself. + + Parameters + ---------- + geom : a shapely geometry object. + + Yields + ------ + A shapely geometry object. + + """ + if hasattr(geom, "geoms"): + parts = geom.geoms + else: + parts = [geom] + for part in parts: + yield part + + +def identity(obj: object) -> object: + """Get back the given argument. + + To help in making expression lists, where the first item must be a + callable object. + + Parameters + ---------- + obj : objeect + + Returns + ------- + obj + + """ + return obj + + +def vertex_count(obj: object) -> int: + """Count the vertices of a GeoJSON-like geometry object. + + Parameters + ---------- + obj: object + A GeoJSON-like mapping or an object that provides + __geo_interface__. + + Returns + ------- + int + + """ + shp = shape(obj) + if hasattr(shp, "geoms"): + return sum(vertex_count(part) for part in shp.geoms) + elif hasattr(shp, "exterior"): + return vertex_count(shp.exterior) + sum( + vertex_count(ring) for ring in shp.interiors + ) + else: + return len(shp.coords) + + +def binary_projectable_property_wrapper(func): + """Project func's geometry args before computing a property. + + Parameters + ---------- + func : callable + Signature is func(geom1, geom2, *args, **kwargs) + + Returns + ------- + callable + Signature is func(geom1, geom2, projected=True, *args, **kwargs) + + """ + + @wraps(func) + def wrapper(geom1, geom2, *args, projected=True, **kwargs): + if projected: + geom1 = shape(transform_geom("OGC:CRS84", "EPSG:6933", mapping(geom1))) + geom2 = shape(transform_geom("OGC:CRS84", "EPSG:6933", mapping(geom2))) + + return func(geom1, geom2, *args, **kwargs) + + return wrapper + + +def unary_projectable_property_wrapper(func): + """Project func's geometry arg before computing a property. + + Parameters + ---------- + func : callable + Signature is func(geom1, *args, **kwargs) + + Returns + ------- + callable + Signature is func(geom1, projected=True, *args, **kwargs) + + """ + + @wraps(func) + def wrapper(geom, *args, projected=True, **kwargs): + if projected: + geom = shape(transform_geom("OGC:CRS84", "EPSG:6933", mapping(geom))) + + return func(geom, *args, **kwargs) + + return wrapper + + +def unary_projectable_constructive_wrapper(func): + """Project func's geometry arg before constructing a new geometry. + + Parameters + ---------- + func : callable + Signature is func(geom1, *args, **kwargs) + + Returns + ------- + callable + Signature is func(geom1, projected=True, *args, **kwargs) + + """ + + @wraps(func) + def wrapper(geom, *args, projected=True, **kwargs): + if projected: + geom = shape(transform_geom("OGC:CRS84", "EPSG:6933", mapping(geom))) + product = func(geom, *args, **kwargs) + return shape(transform_geom("EPSG:6933", "OGC:CRS84", mapping(product))) + else: + return func(geom, *args, **kwargs) + + return wrapper + + +area = unary_projectable_property_wrapper(shapely.area) +buffer = unary_projectable_constructive_wrapper(shapely.buffer) +distance = binary_projectable_property_wrapper(shapely.distance) +set_precision = unary_projectable_constructive_wrapper(shapely.set_precision) +simplify = unary_projectable_constructive_wrapper(shapely.simplify) +length = unary_projectable_property_wrapper(shapely.length) + +snuggs.func_map = FuncMapper( + area=area, + buffer=buffer, + collect=collect, + distance=distance, + dump=dump, + identity=identity, + length=length, + simplify=simplify, + set_precision=set_precision, + vertex_count=vertex_count, + **{ + k: getattr(itertools, k) + for k in dir(itertools) + if not k.startswith("_") and callable(getattr(itertools, k)) + }, +) + + +def map_feature( + expression: str, feature: Mapping, dump_parts: bool = False +) -> Generator: + """Map a pipeline expression to a feature. + + Yields one or more values. + + Parameters + ---------- + expression : str + A snuggs expression. The outermost parentheses are optional. + feature : dict + A Fiona feature object. + dump_parts : bool, optional (default: False) + If True, the parts of the feature's geometry are turned into + new features. + + Yields + ------ + object + + """ + if not (expression.startswith("(") and expression.endswith(")")): + expression = f"({expression})" + + try: + geom = shape(feature.get("geometry", None)) + if dump_parts and hasattr(geom, "geoms"): + parts = geom.geoms + else: + parts = [geom] + except (AttributeError, KeyError): + parts = [None] + + for part in parts: + result = snuggs.eval(expression, g=part, f=feature) + if isinstance(result, (str, float, int, Mapping)): + yield result + elif isinstance(result, (BaseGeometry, BaseMultipartGeometry)): + yield mapping(result) + else: + try: + for item in result: + if isinstance(item, (BaseGeometry, BaseMultipartGeometry)): + item = mapping(item) + yield item + except TypeError: + yield result + + +def reduce_features(expression: str, features: Iterable[Mapping]) -> Generator: + """Reduce a collection of features to a single value. + + The pipeline is a string that, when evaluated by snuggs, produces + a new value. The name of the input feature collection in the + context of the pipeline is "c". + + Parameters + ---------- + pipeline : str + Geometry operation pipeline such as "(unary_union c)". + features : iterable + A sequence of Fiona feature objects. + + Yields + ------ + object + + Raises + ------ + ReduceError + + """ + if not (expression.startswith("(") and expression.endswith(")")): + expression = f"({expression})" + + collection = (shape(feat["geometry"]) for feat in features) + result = snuggs.eval(expression, c=collection) + + if isinstance(result, (str, float, int, Mapping)): + yield result + elif isinstance(result, (BaseGeometry, BaseMultipartGeometry)): + yield mapping(result) + else: + raise ReduceError("Expression failed to reduce to a single value.") diff --git a/fiona/fio/features.py b/fiona/fio/features.py new file mode 100644 index 000000000..201faf827 --- /dev/null +++ b/fiona/fio/features.py @@ -0,0 +1,267 @@ +"""Fiona CLI commands.""" + +from collections import defaultdict +from copy import copy +import itertools +import json +import logging +import warnings + +import click +from cligj import use_rs_opt # type: ignore + +from fiona.features import map_feature, reduce_features +from fiona.fio import with_context_env +from fiona.fio.helpers import obj_gen, eval_feature_expression # type: ignore + +log = logging.getLogger(__name__) + + +@click.command( + "map", + short_help="Map a pipeline expression over GeoJSON features.", +) +@click.argument("pipeline") +@click.option( + "--raw", + "-r", + is_flag=True, + default=False, + help="Print raw result, do not wrap in a GeoJSON Feature.", +) +@click.option( + "--no-input", + "-n", + is_flag=True, + default=False, + help="Do not read input from stream.", +) +@click.option( + "--dump-parts", + is_flag=True, + default=False, + help="Dump parts of geometries to create new inputs before evaluating pipeline.", +) +@use_rs_opt +def map_cmd(pipeline, raw, no_input, dump_parts, use_rs): + """Map a pipeline expression over GeoJSON features. + + Given a sequence of GeoJSON features (RS-delimited or not) on stdin + this prints copies with geometries that are transformed using a + provided transformation pipeline. In "raw" output mode, this + command prints pipeline results without wrapping them in a feature + object. + + The pipeline is a string that, when evaluated by fio-map, produces + a new geometry object. The pipeline consists of expressions in the + form of parenthesized lists that may contain other expressions. + The first item in a list is the name of a function or method, or an + expression that evaluates to a function. The second item is the + function's first argument or the object to which the method is + bound. The remaining list items are the positional and keyword + arguments for the named function or method. The names of the input + feature and its geometry in the context of these expressions are + "f" and "g". + + For example, this pipeline expression + + '(simplify (buffer g 100.0) 5.0)' + + buffers input geometries and then simplifies them so that no + vertices are closer than 5 units. Keyword arguments for the shapely + methods are supported. A keyword argument is preceded by ':' and + followed immediately by its value. For example: + + '(simplify g 5.0 :preserve_topology true)' + + and + + '(buffer g 100.0 :resolution 8 :join_style 1)' + + Numerical and string arguments may be replaced by expressions. The + buffer distance could be a function of a geometry's area. + + '(buffer g (/ (area g) 100.0))' + + """ + if no_input: + features = [None] + else: + stdin = click.get_text_stream("stdin") + features = obj_gen(stdin) + + for feat in features: + for i, value in enumerate(map_feature(pipeline, feat, dump_parts=dump_parts)): + if use_rs: + click.echo("\x1e", nl=False) + if raw: + click.echo(json.dumps(value)) + else: + new_feat = copy(feat) + new_feat["id"] = f"{feat.get('id', '0')}:{i}" + new_feat["geometry"] = value + click.echo(json.dumps(new_feat)) + + +@click.command( + "filter", + short_help="Evaluate pipeline expressions to filter GeoJSON features.", +) +@click.argument("pipeline") +@use_rs_opt +@click.option( + "--snuggs-only", + "-s", + is_flag=True, + default=False, + help="Strictly require snuggs style expressions and skip check for type of expression.", +) +@click.pass_context +@with_context_env +def filter_cmd(ctx, pipeline, use_rs, snuggs_only): + """Evaluate pipeline expressions to filter GeoJSON features. + + The pipeline is a string that, when evaluated, gives a new value for + each input feature. If the value evaluates to True, the feature + passes through the filter. Otherwise the feature does not pass. + + The pipeline consists of expressions in the form of parenthesized + lists that may contain other expressions. The first item in a list + is the name of a function or method, or an expression that evaluates + to a function. The second item is the function's first argument or + the object to which the method is bound. The remaining list items + are the positional and keyword arguments for the named function or + method. The names of the input feature and its geometry in the + context of these expressions are "f" and "g". + + For example, this pipeline expression + + '(< (distance g (Point 4 43)) 1)' + + lets through all features that are less than one unit from the given + point and filters out all other features. + + *New in version 1.10*: these parenthesized list expressions. + + The older style Python expressions like + + 'f.properties.area > 1000.0' + + are deprecated and will not be supported in version 2.0. + + """ + stdin = click.get_text_stream("stdin") + features = obj_gen(stdin) + + if not snuggs_only: + try: + from pyparsing.exceptions import ParseException + from fiona._vendor.snuggs import ExpressionError, expr + + if not pipeline.startswith("("): + test_string = f"({pipeline})" + expr.parseString(test_string) + except ExpressionError: + # It's a snuggs expression. + log.info("Detected a snuggs expression.") + pass + except ParseException: + # It's likely an old-style Python expression. + log.info("Detected a legacy Python expression.") + warnings.warn( + "This style of filter expression is deprecated. " + "Version 2.0 will only support the new parenthesized list expressions.", + FutureWarning, + ) + for i, obj in enumerate(features): + feats = obj.get("features") or [obj] + for j, feat in enumerate(feats): + if not eval_feature_expression(feat, pipeline): + continue + if use_rs: + click.echo("\x1e", nl=False) + click.echo(json.dumps(feat)) + return + + for feat in features: + for value in map_feature(pipeline, feat): + if value: + if use_rs: + click.echo("\x1e", nl=False) + click.echo(json.dumps(feat)) + + +@click.command("reduce", short_help="Reduce a stream of GeoJSON features to one value.") +@click.argument("pipeline") +@click.option( + "--raw", + "-r", + is_flag=True, + default=False, + help="Print raw result, do not wrap in a GeoJSON Feature.", +) +@use_rs_opt +@click.option( + "--zip-properties", + is_flag=True, + default=False, + help="Zip the items of input feature properties together for output.", +) +def reduce_cmd(pipeline, raw, use_rs, zip_properties): + """Reduce a stream of GeoJSON features to one value. + + Given a sequence of GeoJSON features (RS-delimited or not) on stdin + this prints a single value using a provided transformation pipeline. + + The pipeline is a string that, when evaluated, produces + a new geometry object. The pipeline consists of expressions in the + form of parenthesized lists that may contain other expressions. + The first item in a list is the name of a function or method, or an + expression that evaluates to a function. The second item is the + function's first argument or the object to which the method is + bound. The remaining list items are the positional and keyword + arguments for the named function or method. The set of geometries + of the input features in the context of these expressions is named + "c". + + For example, the pipeline expression + + '(unary_union c)' + + dissolves the geometries of input features. + + To keep the properties of input features while reducing them to a + single feature, use the --zip-properties flag. The properties of the + input features will surface in the output feature as lists + containing the input values. + + """ + stdin = click.get_text_stream("stdin") + features = (feat for feat in obj_gen(stdin)) + + if zip_properties: + prop_features, geom_features = itertools.tee(features) + properties = defaultdict(list) + for feat in prop_features: + for key, val in feat["properties"].items(): + properties[key].append(val) + else: + geom_features = features + properties = {} + + for result in reduce_features(pipeline, geom_features): + if use_rs: + click.echo("\x1e", nl=False) + if raw: + click.echo(json.dumps(result)) + else: + click.echo( + json.dumps( + { + "type": "Feature", + "properties": properties, + "geometry": result, + "id": "0", + } + ) + ) diff --git a/fiona/fio/filter.py b/fiona/fio/filter.py deleted file mode 100644 index 5e7e71804..000000000 --- a/fiona/fio/filter.py +++ /dev/null @@ -1,54 +0,0 @@ -"""$ fio filter""" - -import json -import logging - -import click -from cligj import use_rs_opt - -from fiona.fio.helpers import obj_gen, eval_feature_expression -from fiona.fio import with_context_env - - -logger = logging.getLogger(__name__) - - -@click.command() -@click.argument('filter_expression') -@use_rs_opt -@click.pass_context -@with_context_env -def filter(ctx, filter_expression, use_rs): - """ - Filter GeoJSON features by python expression. - - Features are read from stdin. - - The expression is evaluated in a restricted namespace containing: - - sum, pow, min, max and the imported math module - - shape (optional, imported from shapely.geometry if available) - - bool, int, str, len, float type conversions - - f (the feature to be evaluated, - allows item access via javascript-style dot notation using munch) - - The expression will be evaluated for each feature and, if true, - the feature will be included in the output. For example: - - \b - $ fio cat data.shp \\ - | fio filter "f.properties.area > 1000.0" \\ - | fio collect > large_polygons.geojson - - """ - stdin = click.get_text_stream('stdin') - source = obj_gen(stdin) - - for i, obj in enumerate(source): - features = obj.get("features") or [obj] - for j, feat in enumerate(features): - if not eval_feature_expression(feat, filter_expression): - continue - - if use_rs: - click.echo("\x1e", nl=False) - click.echo(json.dumps(feat)) diff --git a/fiona/fio/main.py b/fiona/fio/main.py index 8f6a6c760..1190a5ccc 100644 --- a/fiona/fio/main.py +++ b/fiona/fio/main.py @@ -19,6 +19,28 @@ import fiona from fiona import __version__ as fio_version from fiona.session import AWSSession, DummySession +from fiona.fio.bounds import bounds +from fiona.fio.calc import calc +from fiona.fio.cat import cat +from fiona.fio.collect import collect +from fiona.fio.distrib import distrib +from fiona.fio.dump import dump +from fiona.fio.env import env +from fiona.fio.info import info +from fiona.fio.insp import insp +from fiona.fio.load import load +from fiona.fio.ls import ls +from fiona.fio.rm import rm + +# The "calc" extras require pyparsing and shapely. +try: + import pyparsing + import shapely + from fiona.fio.features import filter_cmd, map_cmd, reduce_cmd + + supports_calc = True +except ImportError: + supports_calc = False def configure_logging(verbosity): @@ -28,7 +50,6 @@ def configure_logging(verbosity): @with_plugins( itertools.chain( - entry_points(group="fiona.fio_commands"), entry_points(group="fiona.fio_plugins"), ) ) @@ -71,3 +92,22 @@ def main_group( else: session = DummySession() ctx.obj["env"] = fiona.Env(session=session, **envopts) + + +main_group.add_command(bounds) +main_group.add_command(calc) +main_group.add_command(cat) +main_group.add_command(collect) +main_group.add_command(distrib) +main_group.add_command(dump) +main_group.add_command(env) +main_group.add_command(info) +main_group.add_command(insp) +main_group.add_command(load) +main_group.add_command(ls) +main_group.add_command(rm) + +if supports_calc: + main_group.add_command(map_cmd) + main_group.add_command(filter_cmd) + main_group.add_command(reduce_cmd) diff --git a/pyproject.toml b/pyproject.toml index 1a176bee0..486036c65 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -39,7 +39,7 @@ dependencies = [ [project.optional-dependencies] all = ["fiona[calc,s3,test]"] -calc = ["shapely"] +calc = ["pyparsing", "shapely"] s3 = ["boto3>=1.3.1"] test = [ "fiona[s3]", @@ -51,21 +51,6 @@ test = [ [project.scripts] fio = "fiona.fio.main:main_group" -[project.entry-points."fiona.fio_commands"] -bounds = "fiona.fio.bounds:bounds" -calc = "fiona.fio.calc:calc" -cat = "fiona.fio.cat:cat" -collect = "fiona.fio.collect:collect" -distrib = "fiona.fio.distrib:distrib" -dump = "fiona.fio.dump:dump" -env = "fiona.fio.env:env" -filter = "fiona.fio.filter:filter" -info = "fiona.fio.info:info" -insp = "fiona.fio.insp:insp" -load = "fiona.fio.load:load" -ls = "fiona.fio.ls:ls" -rm = "fiona.fio.rm:rm" - [project.urls] Documentation = "https://fiona.readthedocs.io/" Repository = "https://github.com/Toblerity/Fiona" diff --git a/requirements-dev.txt b/requirements-dev.txt index 637a1cff9..01a158f00 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -5,9 +5,11 @@ boto3>=1.3.1 coverage~=6.5 cython>=3 fsspec +pyparsing pytest~=7.2 pytest-cov~=4.0 pytz==2022.6 requests setuptools +shapely wheel diff --git a/setup.cfg b/setup.cfg index f1c7afc83..a61c037d0 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,17 +1,3 @@ [options.entry_points] console_scripts = fio = fiona.fio.main:main_group -fiona.fio_commands = - bounds = fiona.fio.bounds:bounds - calc = fiona.fio.calc:calc - cat = fiona.fio.cat:cat - collect = fiona.fio.collect:collect - distrib = fiona.fio.distrib:distrib - dump = fiona.fio.dump:dump - env = fiona.fio.env:env - filter = fiona.fio.filter:filter - info = fiona.fio.info:info - insp = fiona.fio.insp:insp - load = fiona.fio.load:load - ls = fiona.fio.ls:ls - rm = fiona.fio.rm:rm diff --git a/tests/data/rmnp.geojson b/tests/data/rmnp.geojson new file mode 100644 index 000000000..41a701670 --- /dev/null +++ b/tests/data/rmnp.geojson @@ -0,0 +1 @@ +{"features": [{"geometry": {"coordinates": [[[[-105.82993236599998, 40.23429787900005], [-105.82532010999995, 40.234090120000076], [-105.80130186799994, 40.238022355000055], [-105.79971981686558, 40.23834806093726], [-105.80615125399999, 40.248891729000036], [-105.80604781499994, 40.25259529400006], [-105.80323751899999, 40.256223652000074], [-105.84344629799995, 40.256590533000065], [-105.85209887999997, 40.27187296100004], [-105.85215931999994, 40.27205192000008], [-105.86034979199997, 40.30162991100008], [-105.86041877199995, 40.30189618600008], [-105.86043595199999, 40.302194443000076], [-105.86044234999997, 40.30242113800006], [-105.85872471399995, 40.305752203000054], [-105.85865781799998, 40.30587968700007], [-105.85858570499994, 40.30600321500003], [-105.85779012199998, 40.306659301000025], [-105.87150570599994, 40.31460928800004], [-105.87096989399998, 40.34002330200008], [-105.87089412899996, 40.34472017200005], [-105.86851234235445, 40.36866639070081], [-105.87465775499999, 40.36700144500003], [-105.89323599499994, 40.37071941500005], [-105.91207991899995, 40.37242368300008], [-105.91272218299997, 40.37249360700008], [-105.91287933999996, 40.37253276000007], [-105.91360267899995, 40.372845693000045], [-105.91372432699995, 40.37293256000004], [-105.90505138299994, 40.39897570900007], [-105.90346006599998, 40.431925275000026], [-105.90344864899998, 40.43216639100007], [-105.89927318399998, 40.465591937000056], [-105.89922084599999, 40.465786036000054], [-105.89880951399999, 40.466564007000045], [-105.89822195199997, 40.46764514500006], [-105.89732067099999, 40.46917015400004], [-105.89188595999997, 40.476450914000054], [-105.89177666799998, 40.47657788200007], [-105.89159512399999, 40.47670540800004], [-105.88663187599997, 40.47736520700005], [-105.85499564999998, 40.486197454000035], [-105.85496571099998, 40.48620149300007], [-105.85489999899994, 40.486210355000026], [-105.85474552299996, 40.48623118900008], [-105.83766572599995, 40.48284897600007], [-105.83753977299995, 40.48282070100004], [-105.82538607593936, 40.477886708345466], [-105.81588885599996, 40.484865049000064], [-105.80526615399998, 40.49096921100005], [-105.80478208599999, 40.49119330100007], [-105.79614713399997, 40.49419001000007], [-105.76340551899995, 40.51327554900007], [-105.75138246899996, 40.52241727900008], [-105.75068548999997, 40.52287225300006], [-105.75041200099997, 40.52302718000004], [-105.74898221500828, 40.52333502440806], [-105.75294155799997, 40.53132139600007], [-105.75297840399998, 40.531415749000075], [-105.75298352099998, 40.531510308000065], [-105.75304362899999, 40.53500084500007], [-105.75046013199994, 40.538454529000035], [-105.75026447499994, 40.53870009700006], [-105.75022003999999, 40.538730858000065], [-105.73601753799994, 40.54698421300003], [-105.73543265699999, 40.54729423800006], [-105.73490789599998, 40.54750027600005], [-105.73417386699998, 40.54760404000007], [-105.72224790899998, 40.54923323300005], [-105.70060787699998, 40.553433977000054], [-105.69951366899994, 40.553625289000024], [-105.69846461499998, 40.55379379500005], [-105.69740136799999, 40.55376868700006], [-105.69590444199997, 40.553529971000046], [-105.68403573899997, 40.55086216500007], [-105.68354186699997, 40.55067590200008], [-105.68264478099996, 40.55025328600004], [-105.68224110499995, 40.550043963000064], [-105.68188181999994, 40.54981710000004], [-105.68171810199999, 40.549713723000025], [-105.68137426799996, 40.54947251200008], [-105.67910352499996, 40.54780573200003], [-105.67111994099997, 40.539478649000046], [-105.67089639699998, 40.53922769900004], [-105.67076231199997, 40.53906631800004], [-105.66685877099997, 40.533507919000044], [-105.66666479199995, 40.53322075400007], [-105.66460226864893, 40.52988730500347], [-105.64525353599998, 40.532981953000046], [-105.62241943799995, 40.53981883100005], [-105.62153453099995, 40.540057825000076], [-105.62042534799997, 40.54030702600005], [-105.62003581299996, 40.54036317100008], [-105.61955640099995, 40.54039727300005], [-105.61904733599994, 40.54033694000003], [-105.60211979999997, 40.53829128900003], [-105.60162589399994, 40.538230800000065], [-105.60016054299996, 40.53781500300005], [-105.59972731399995, 40.537565004000044], [-105.59929443299995, 40.53722941700005], [-105.59910215099995, 40.537014759000044], [-105.59906149099999, 40.53696936700004], [-105.59893700599997, 40.53683037400003], [-105.57756808599999, 40.51851144700004], [-105.57734419699995, 40.518386441000075], [-105.57649357899999, 40.51787717900004], [-105.57619528499998, 40.51763542600003], [-105.57028856699998, 40.513556933000075], [-105.57010850299997, 40.51345394200007], [-105.56840699299994, 40.51241728800005], [-105.53543969099997, 40.51327744200006], [-105.53504912299996, 40.513517988000046], [-105.53257093699995, 40.51499789300004], [-105.53209022499999, 40.51527037500006], [-105.53189886999996, 40.515325492000045], [-105.53156575899999, 40.515421436000054], [-105.52984182799997, 40.515825747000065], [-105.51756163999994, 40.51918768100006], [-105.51739464799999, 40.51920669100008], [-105.51700292299995, 40.51227282200006], [-105.51681120999996, 40.508877280000036], [-105.51661963499998, 40.50548173400006], [-105.51642772099996, 40.50208528600007], [-105.51623569999998, 40.498688833000074], [-105.51616764099998, 40.49747991800007], [-105.51615748699999, 40.497299560000044], [-105.51614708899996, 40.497114870000075], [-105.51604451099996, 40.49529272700005], [-105.51585310799999, 40.49189670900006], [-105.51566160099998, 40.488499699000045], [-105.51546987699999, 40.485102598000026], [-105.51527841899997, 40.48170648400003], [-105.51508686399995, 40.47831036700006], [-105.51489496899995, 40.47491325900006], [-105.51470297699996, 40.471516149000024], [-105.51451112999996, 40.46811993700004], [-105.51273101209253, 40.43773005864719], [-105.51268141899999, 40.43771853100003], [-105.49359377399998, 40.433632946000046], [-105.49384450399998, 40.42265419300003], [-105.49445713499995, 40.40834343900008], [-105.49462260299998, 40.404728686000055], [-105.51175716599994, 40.392979152000066], [-105.52357935999999, 40.38692618600004], [-105.53802058899998, 40.38253243100007], [-105.55202337099996, 40.38337468200007], [-105.56086616230968, 40.38911621698159], [-105.55199686599997, 40.37976664800004], [-105.54432240599999, 40.36429782000005], [-105.54390615499995, 40.36299049200005], [-105.54997263999996, 40.36027357100005], [-105.57119972699996, 40.348654846000045], [-105.58199381599997, 40.32891757900006], [-105.58199446199995, 40.32889092400006], [-105.58205034399998, 40.326759225000046], [-105.57230443299994, 40.32527691300004], [-105.56764467899995, 40.32528722600006], [-105.56268212499998, 40.325360086000046], [-105.55805262399997, 40.325314278000064], [-105.55330571199994, 40.32532461400007], [-105.54849582199995, 40.325334963000046], [-105.54383945699999, 40.318265127000075], [-105.53509543499996, 40.31407892900006], [-105.53403439699997, 40.30697408900005], [-105.53362917399994, 40.29996820400004], [-105.53743801499996, 40.30014405900005], [-105.53829550999995, 40.300192554000034], [-105.53857702999994, 40.300208473000055], [-105.54211996799995, 40.30046056600003], [-105.55233481799996, 40.29336605000003], [-105.55659629599995, 40.284294583000076], [-105.55658333899999, 40.28274042900006], [-105.55638339299998, 40.27564530300003], [-105.54206666299996, 40.26143052400005], [-105.54175131899996, 40.24686076900008], [-105.54177471199995, 40.24486010000004], [-105.53265796099998, 40.225078703000065], [-105.53268332499994, 40.21936352200004], [-105.53370137907686, 40.21890372610939], [-105.53264866599994, 40.216782204000026], [-105.53282174599997, 40.21053215400008], [-105.54226766999994, 40.19058178800003], [-105.57130617599995, 40.165553240000065], [-105.57154539499999, 40.16537187000006], [-105.57194869999995, 40.16510860400007], [-105.57850588199994, 40.16121546900007], [-105.57889369499998, 40.16107838800008], [-105.57917676799997, 40.16100940200005], [-105.57944527699999, 40.16095400200004], [-105.59509419199998, 40.15830693100003], [-105.59555592999999, 40.15823698500003], [-105.59665870999999, 40.158082652000076], [-105.59761194299995, 40.15807323100006], [-105.60285317299997, 40.15809561300006], [-105.60294910099998, 40.15811294400004], [-105.60370143199998, 40.158248859000025], [-105.62170529799994, 40.16156817700005], [-105.65465245599995, 40.16767968000005], [-105.66688537484622, 40.17000001598165], [-105.66686555399997, 40.16991096000004], [-105.67000857399995, 40.16730004600004], [-105.67016297799995, 40.167195606000064], [-105.67141738899994, 40.16646097700004], [-105.67154528999998, 40.16646576100004], [-105.69696639199998, 40.162049558000035], [-105.69735396799996, 40.16194812100008], [-105.69783084399995, 40.161823620000064], [-105.69809911899995, 40.16179047000003], [-105.69856090999997, 40.161769666000055], [-105.69885836099996, 40.161790394000036], [-105.70324941299998, 40.16243050500003], [-105.70347260999995, 40.16247419700005], [-105.70375553299999, 40.16254455300003], [-105.70390424299995, 40.16258869600006], [-105.70415694699994, 40.16271779600004], [-105.70531632599995, 40.16340446600003], [-105.71618835799995, 40.16834696700005], [-105.71659006199997, 40.16850665100003], [-105.71685758599995, 40.16864464100007], [-105.71702112799994, 40.16880579800005], [-105.71722881499994, 40.169011728000044], [-105.71743665699995, 40.169267209000054], [-105.71771866899996, 40.16963034200006], [-105.74348628399997, 40.168688426000074], [-105.74383073499996, 40.16800149800008], [-105.74411460099998, 40.167648307000036], [-105.74439820099997, 40.16737169700008], [-105.74468148799997, 40.16723473400003], [-105.75252233799995, 40.16418840700004], [-105.75953475599994, 40.16484084700005], [-105.75999619699996, 40.16488737000003], [-105.76080028999996, 40.16499020200007], [-105.76197617699995, 40.16516265800004], [-105.76516258499998, 40.16561463800008], [-105.76550512899996, 40.16569345800008], [-105.77107118899994, 40.167417862000036], [-105.79663688699998, 40.17037553900008], [-105.79802255699997, 40.16995606900008], [-105.79875292299994, 40.16973931200005], [-105.79921441199997, 40.169691080000064], [-105.81725341699996, 40.16740740300003], [-105.81999581999997, 40.16951501300008], [-105.82021443499997, 40.17101724500003], [-105.82022265399996, 40.171120795000036], [-105.82022362999999, 40.17120187300003], [-105.82600834399994, 40.19147235300005], [-105.83044446399998, 40.19612547200006], [-105.83056168099995, 40.19622373400006], [-105.83415290399995, 40.19890521700006], [-105.83590610799996, 40.20007279200007], [-105.83622886799998, 40.20031371300007], [-105.83724425399998, 40.201819940000064], [-105.83997704999996, 40.20730591200004], [-105.84082691599997, 40.20925216400008], [-105.84235351099994, 40.214368886000045], [-105.84235770799995, 40.21444093000008], [-105.84207465799994, 40.21575384300007], [-105.83545929499996, 40.234072627000046], [-105.83526359799998, 40.23451919900003], [-105.82993236599998, 40.23429787900005]], [[-105.58371488559169, 40.40142222697275], [-105.57356491679676, 40.39736138986373], [-105.57949503399999, 40.40121175500008], [-105.58371488559169, 40.40142222697275]]], [[[-105.52387338099999, 40.29587849500007], [-105.51833431299997, 40.289190561000055], [-105.51805444999997, 40.289083703000074], [-105.51783916499994, 40.28900808800006], [-105.51771470599999, 40.28891414100008], [-105.51770271699996, 40.28890509200005], [-105.51753073399999, 40.28877072200004], [-105.51610842599996, 40.28685359100007], [-105.51610838199997, 40.28685353000003], [-105.51606038099999, 40.28678602700006], [-105.51593599699999, 40.286611109000035], [-105.51585722899995, 40.286453797000036], [-105.51584008899994, 40.28641720100006], [-105.51577090499995, 40.28626949100004], [-105.51573753999998, 40.28616337100004], [-105.51568463099994, 40.285995092000064], [-105.51342582599995, 40.27889229300007], [-105.51204804099996, 40.27581721400003], [-105.51178041799994, 40.27498503600003], [-105.51168516799999, 40.27464401300006], [-105.51191604799999, 40.274650560000055], [-105.51389726599996, 40.27470672100003], [-105.51864548699996, 40.27484292500003], [-105.52323037599996, 40.26789955000004], [-105.52782832999998, 40.26816456300003], [-105.52793138299995, 40.27156944300003], [-105.52804855399995, 40.27511655600006], [-105.52817409, 40.27859085100005], [-105.52823393999995, 40.28210154200008], [-105.52831281699997, 40.28556538600003], [-105.53304071299999, 40.289422278000075], [-105.53352711399998, 40.297435663000044], [-105.53362917399994, 40.29996820400004], [-105.52898800099996, 40.29965667500005], [-105.52419156499997, 40.29937584700008], [-105.52417450299998, 40.298356116000036], [-105.52387338099999, 40.29587849500007]]]], "type": "MultiPolygon"}, "id": "0:0", "properties": {}, "type": "Feature"}], "type": "FeatureCollection"} diff --git a/tests/data/trio.geojson b/tests/data/trio.geojson new file mode 100644 index 000000000..9e7b71b28 --- /dev/null +++ b/tests/data/trio.geojson @@ -0,0 +1,76 @@ +{ + "type": "FeatureCollection", + "features": [ + { + "type": "Feature", + "properties": { + "name": "Le château d'eau" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 3.869011402130127, + 43.611401128587104 + ] + } + }, + { + "type": "Feature", + "properties": { + "aqueduct": "yes" + }, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + 3.8645052909851074, + 43.61172738574996 + ], + [ + 3.868989944458008, + 43.61140889663537 + ] + ] + } + }, + { + "type": "Feature", + "properties": {"name": "promenade du Peyrou", "architect": "Giral"}, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 3.8684856891632085, + 43.61205364114294 + ], + [ + 3.8683247566223145, + 43.6108340583545 + ], + [ + 3.8685393333435054, + 43.610748608951816 + ], + [ + 3.871554136276245, + 43.610577709782206 + ], + [ + 3.871725797653198, + 43.61063208684338 + ], + [ + 3.8719189167022705, + 43.61183613774427 + ], + [ + 3.8684856891632085, + 43.61205364114294 + ] + ] + ] + } + } + ] +} diff --git a/tests/data/trio.seq b/tests/data/trio.seq new file mode 100644 index 000000000..a24422b1b --- /dev/null +++ b/tests/data/trio.seq @@ -0,0 +1,3 @@ +{"geometry": {"coordinates": [3.869011402130127, 43.611401128587104], "type": "Point"}, "id": "0", "properties": {"name": "Le ch\u00e2teau d'eau"}, "type": "Feature"} +{"geometry": {"coordinates": [[3.8645052909851074, 43.61172738574996], [3.868989944458008, 43.61140889663537]], "type": "LineString"}, "id": "1", "properties": {"aqueduct": "yes"}, "type": "Feature"} +{"geometry": {"coordinates": [[[3.8684856891632085, 43.61205364114294], [3.8683247566223145, 43.6108340583545], [3.8685393333435054, 43.610748608951816], [3.871554136276245, 43.610577709782206], [3.871725797653198, 43.61063208684338], [3.8719189167022705, 43.61183613774427], [3.8684856891632085, 43.61205364114294]]], "type": "Polygon"}, "id": "2", "properties": {"architect": "Giral", "name": "promenade du Peyrou"}, "type": "Feature"} diff --git a/tests/test_features.py b/tests/test_features.py new file mode 100644 index 000000000..47255e9ac --- /dev/null +++ b/tests/test_features.py @@ -0,0 +1,330 @@ +# Python module tests + +import json + +import pytest # type: ignore +import shapely # type: ignore +from shapely.geometry import LineString, MultiPoint, Point, mapping, shape # type: ignore + +from fiona.errors import ReduceError +from fiona.features import ( # type: ignore + map_feature, + reduce_features, + vertex_count, + area, + buffer, + collect, + distance, + dump, + identity, + length, + unary_projectable_property_wrapper, + unary_projectable_constructive_wrapper, + binary_projectable_property_wrapper, +) + + +def test_modulate_simple(): + """Set a feature's geometry.""" + # map_feature() is a generator. list() materializes the values. + feat = list(map_feature("Point 0 0", {"type": "Feature"})) + assert len(feat) == 1 + + feat = feat[0] + assert "Point" == feat["type"] + assert (0.0, 0.0) == feat["coordinates"] + + +def test_modulate_complex(): + """Exercise a fairly complicated pipeline.""" + bufkwd = "resolution" if shapely.__version__.startswith("1") else "quad_segs" + + with open("tests/data/trio.geojson") as src: + collection = json.loads(src.read()) + + feat = collection["features"][0] + results = list( + map_feature( + f"simplify (buffer g (* 0.1 2) :projected false :{bufkwd} (- 4 3)) 0.001 :projected false :preserve_topology false", + feat, + ) + ) + assert 1 == len(results) + + geom = results[0] + assert geom["type"] == "Polygon" + assert len(geom["coordinates"][0]) == 5 + + +@pytest.mark.parametrize( + "obj, count", + [ + (Point(0, 0), 1), + (MultiPoint([(0, 0), (1, 1)]), 2), + (Point(0, 0).buffer(10.0).difference(Point(0, 0).buffer(1.0)), 130), + ], +) +def test_vertex_count(obj, count): + """Check vertex counting correctness.""" + assert count == vertex_count(obj) + + +@pytest.mark.parametrize( + "obj, count", + [ + (Point(0, 0), 1), + (MultiPoint([(0, 0), (1, 1)]), 2), + (Point(0, 0).buffer(10.0).difference(Point(0, 0).buffer(1.0)), 130), + ], +) +def test_calculate_vertex_count(obj, count): + """Confirm vertex counting is in func_map.""" + feat = {"type": "Feature", "properties": {}, "geometry": mapping(obj)} + assert count == list(map_feature("vertex_count g", feat))[0] + + +def test_calculate_builtin(): + """Confirm builtin function evaluation.""" + assert 42 == list(map_feature("int '42'", None))[0] + + +def test_calculate_feature_attr(): + """Confirm feature attr evaluation.""" + assert "LOLWUT" == list(map_feature("upper f", "lolwut"))[0] + + +def test_calculate_point(): + """Confirm feature attr evaluation.""" + result = list(map_feature("Point 0 0", None))[0] + assert "Point" == result["type"] + + +def test_calculate_points(): + """Confirm feature attr evaluation.""" + result = list(map_feature("list (Point 0 0) (buffer (Point 1 1) 1)", None)) + assert 2 == len(result) + assert "Point" == result[0]["type"] + assert "Polygon" == result[1]["type"] + + +def test_reduce_len(): + """Reduce can count the number of input features.""" + with open("tests/data/trio.seq") as seq: + data = [json.loads(line) for line in seq.readlines()] + + # reduce() is a generator. list() materializes the values. + assert 3 == list(reduce_features("len c", data))[0] + + +def test_reduce_union(): + """Reduce yields one feature by default.""" + with open("tests/data/trio.seq") as seq: + data = [json.loads(line) for line in seq.readlines()] + + # reduce() is a generator. list() materializes the values. + result = list(reduce_features("unary_union c", data)) + assert len(result) == 1 + + val = result[0] + assert "GeometryCollection" == val["type"] + assert 2 == len(val["geometries"]) + + +def test_reduce_union_area(): + """Reduce can yield total area using raw output.""" + with open("tests/data/trio.seq") as seq: + data = [json.loads(line) for line in seq.readlines()] + + # reduce() is a generator. + result = list(reduce_features("area (unary_union c)", data)) + assert len(result) == 1 + + val = result[0] + assert isinstance(val, float) + assert 3e4 < val < 4e4 + + +def test_reduce_union_geom_type(): + """Reduce and print geom_type using raw output.""" + with open("tests/data/trio.seq") as seq: + data = [json.loads(line) for line in seq.readlines()] + + # reduce() is a generator. + result = list(reduce_features("geom_type (unary_union c)", data)) + assert len(result) == 1 + assert "GeometryCollection" == result[0] + + +def test_reduce_error(): + """Raise ReduceError when expression doesn't reduce.""" + with open("tests/data/trio.seq") as seq: + data = [json.loads(line) for line in seq.readlines()] + + with pytest.raises(ReduceError): + list(reduce_features("(identity c)", data)) + + +@pytest.mark.parametrize( + "obj, count", + [ + (MultiPoint([(0, 0), (1, 1)]), 2), + ], +) +def test_dump_eval(obj, count): + feature = {"type": "Feature", "properties": {}, "geometry": mapping(obj)} + result = map_feature("identity g", feature, dump_parts=True) + assert len(list(result)) == count + + +def test_collect(): + """Collect two points.""" + geom = collect((Point(0, 0), Point(1, 1))) + assert geom.geom_type == "GeometryCollection" + + +def test_dump(): + """Dump a point.""" + geoms = list(dump(Point(0, 0))) + assert len(geoms) == 1 + assert geoms[0].geom_type == "Point" + + +def test_dump_multi(): + """Dump two points.""" + geoms = list(dump(MultiPoint([(0, 0), (1, 1)]))) + assert len(geoms) == 2 + assert all(g.geom_type == "Point" for g in geoms) + + +def test_identity(): + """Check identity.""" + geom = Point(1.1, 2.2) + assert geom == identity(geom) + + +def test_area(): + """Check projected area of RMNP against QGIS.""" + with open("tests/data/rmnp.geojson", "rb") as f: + collection = json.load(f) + + geom = shape(collection["features"][0]["geometry"]) + + # QGIS uses a geodesic area computation and WGS84 ellipsoid. + qgis_ellipsoidal_area = 1117.433937055 # kilometer squared + + # We expect no more than a 0.0001 km^2 difference. That's .00001%. + assert round(qgis_ellipsoidal_area, 4) == round(area(geom) / 1e6, 4) + + +@pytest.mark.parametrize( + ["kwargs", "exp_distance"], + [({}, 9648.6280), ({"projected": True}, 9648.6280), ({"projected": False}, 0.1)], +) +def test_distance(kwargs, exp_distance): + """Distance measured properly.""" + assert round(exp_distance, 4) == round( + distance(Point(0, 0), Point(0.1, 0), **kwargs), 4 + ) + + +@pytest.mark.parametrize( + ["kwargs", "distance", "exp_area"], + [ + ({}, 1.0e4, 312e6), + ({"projected": True}, 10000.0, 312e6), + ({"projected": False}, 0.1, 0.0312), + ], +) +def test_buffer(kwargs, distance, exp_area): + """Check area of a point buffered by 10km using 8 quadrant segments, should be ~312 km2.""" + # float(f"{x:.3g}") is used to round x to 3 significant figures. + assert exp_area == float( + f"{area(buffer(Point(0, 0), distance, **kwargs), **kwargs):.3g}" + ) + + +@pytest.mark.parametrize( + ["kwargs", "exp_length"], + [({}, 9648.6280), ({"projected": True}, 9648.6280), ({"projected": False}, 0.1)], +) +def test_length(kwargs, exp_length): + """Length measured properly.""" + assert round(exp_length, 4) == round( + length(LineString([(0, 0), (0.1, 0)]), **kwargs), 4 + ) + + +@pytest.mark.parametrize( + ["in_xy", "exp_xy", "kwargs"], + [ + ((0.1, 0.0), (9648.628, 0.0), {}), + ((0.1, 0.0), (9648.628, 0.0), {"projected": True}), + ((0.1, 0.0), (0.1, 0.0), {"projected": False}), + ], +) +def test_unary_property_wrapper(in_xy, exp_xy, kwargs): + """Correctly wraps a function like shapely.area.""" + + def func(geom, *args, **kwargs): + """Echoes its input.""" + return geom, args, kwargs + + wrapper = unary_projectable_property_wrapper(func) + assert wrapper.__doc__ == "Echoes its input." + assert wrapper.__name__ == "func" + g, *rest = wrapper(Point(*in_xy), "hello", this=True, **kwargs) + assert rest == [("hello",), {"this": True}] + assert round(g.x, 4) == round(exp_xy[0], 4) + assert round(g.y, 4) == round(exp_xy[1], 4) + + +@pytest.mark.parametrize( + ["in_xy", "exp_xy", "kwargs"], + [ + ((0.1, 0.0), (9648.628, 0.0), {}), + ((0.1, 0.0), (9648.628, 0.0), {"projected": True}), + ((0.1, 0.0), (0.1, 0.0), {"projected": False}), + ], +) +def test_unary_projectable_constructive_wrapper(in_xy, exp_xy, kwargs): + """Correctly wraps a function like shapely.buffer.""" + + def func(geom, required, this=False): + """Echoes its input geom.""" + assert round(geom.x, 4) == round(exp_xy[0], 4) + assert round(geom.y, 4) == round(exp_xy[1], 4) + assert this is True + return geom + + wrapper = unary_projectable_constructive_wrapper(func) + assert wrapper.__doc__ == "Echoes its input geom." + assert wrapper.__name__ == "func" + g = wrapper(Point(*in_xy), "hello", this=True, **kwargs) + assert round(g.x, 4) == round(in_xy[0], 4) + assert round(g.y, 4) == round(in_xy[1], 4) + + +@pytest.mark.parametrize( + ["in_xy", "exp_xy", "kwargs"], + [ + ((0.1, 0.0), (9648.628, 0.0), {}), + ((0.1, 0.0), (9648.628, 0.0), {"projected": True}), + ((0.1, 0.0), (0.1, 0.0), {"projected": False}), + ], +) +def test_binary_projectable_property_wrapper(in_xy, exp_xy, kwargs): + """Correctly wraps a function like shapely.distance.""" + + def func(geom1, geom2, *args, **kwargs): + """Echoes its inputs.""" + return geom1, geom2, args, kwargs + + wrapper = binary_projectable_property_wrapper(func) + assert wrapper.__doc__ == "Echoes its inputs." + assert wrapper.__name__ == "func" + g1, g2, *rest = wrapper(Point(*in_xy), Point(*in_xy), "hello", this=True, **kwargs) + assert rest == [("hello",), {"this": True}] + assert round(g1.x, 4) == round(exp_xy[0], 4) + assert round(g1.y, 4) == round(exp_xy[1], 4) + assert round(g2.x, 4) == round(exp_xy[0], 4) + assert round(g2.y, 4) == round(exp_xy[1], 4) diff --git a/tests/test_fio_features.py b/tests/test_fio_features.py new file mode 100644 index 000000000..d66318cc6 --- /dev/null +++ b/tests/test_fio_features.py @@ -0,0 +1,112 @@ +# CLI tests + +from click.testing import CliRunner + +from fiona.fio.main import main_group # type: ignore +import pytest # type: ignore + + +def test_map_count(): + """fio-map prints correct number of results.""" + with open("tests/data/trio.seq") as seq: + data = seq.read() + + runner = CliRunner() + result = runner.invoke( + main_group, + ["map", "centroid (buffer g 1.0)"], + input=data, + ) + + assert result.exit_code == 0 + assert result.output.count('"type": "Point"') == 3 + + +@pytest.mark.parametrize("raw_opt", ["--raw", "-r"]) +def test_reduce_area(raw_opt): + """Reduce features to their (raw) area.""" + with open("tests/data/trio.seq") as seq: + data = seq.read() + + runner = CliRunner() + result = runner.invoke( + main_group, + ["reduce", raw_opt, "area (unary_union c) :projected false"], + input=data, + ) + assert result.exit_code == 0 + assert 0 < float(result.output) < 1e-5 + + +def test_reduce_union(): + """Reduce features to one single feature.""" + with open("tests/data/trio.seq") as seq: + data = seq.read() + + # Define our reduce command using a mkdocs snippet. + arg = """ + --8<-- [start:reduce] + unary_union c + --8<-- [end:reduce] + """.splitlines()[ + 2 + ].strip() + + runner = CliRunner() + result = runner.invoke(main_group, ["reduce", arg], input=data) + assert result.exit_code == 0 + assert result.output.count('"type": "Polygon"') == 1 + assert result.output.count('"type": "LineString"') == 1 + assert result.output.count('"type": "GeometryCollection"') == 1 + + +def test_reduce_union_zip_properties(): + """Reduce features to one single feature, zipping properties.""" + with open("tests/data/trio.seq") as seq: + data = seq.read() + + runner = CliRunner() + result = runner.invoke( + main_group, ["reduce", "--zip-properties", "unary_union c"], input=data + ) + assert result.exit_code == 0 + assert result.output.count('"type": "Polygon"') == 1 + assert result.output.count('"type": "LineString"') == 1 + assert result.output.count('"type": "GeometryCollection"') == 1 + assert ( + """"name": ["Le ch\\u00e2teau d\'eau", "promenade du Peyrou"]""" + in result.output + ) + + +def test_filter(): + """Filter features by distance.""" + with open("tests/data/trio.seq") as seq: + data = seq.read() + + # Define our reduce command using a mkdocs snippet. + arg = """ + --8<-- [start:filter] + < (distance g (Point 4 43)) 62.5E3 + --8<-- [end:filter] + """.splitlines()[ + 2 + ].strip() + + runner = CliRunner() + result = runner.invoke( + main_group, + ["filter", arg], + input=data, + catch_exceptions=False, + ) + assert result.exit_code == 0 + assert result.output.count('"type": "Polygon"') == 1 + + +@pytest.mark.parametrize("opts", [["--no-input", "--raw"], ["-rn"]]) +def test_map_no_input(opts): + runner = CliRunner() + result = runner.invoke(main_group, ["map"] + opts + ["(Point 4 43)"]) + assert result.exit_code == 0 + assert result.output.count('"type": "Point"') == 1 diff --git a/tests/test_fio_filter.py b/tests/test_fio_filter.py index 4b47c0e84..5714ec5e5 100644 --- a/tests/test_fio_filter.py +++ b/tests/test_fio_filter.py @@ -1,28 +1,33 @@ -"""Tests for `$ fio filter`.""" +"""Tests for the legacy fio-filter.""" + +import pytest from fiona.fio.main import main_group def test_fail(runner): - result = runner.invoke(main_group, ['filter', - "f.properties.test > 5" - ], "{'type': 'no_properties'}") - assert result.exit_code == 1 + with pytest.warns(FutureWarning): + result = runner.invoke(main_group, ['filter', + "f.properties.test > 5" + ], "{'type': 'no_properties'}") + assert result.exit_code == 1 def test_seq(feature_seq, runner): - - result = runner.invoke(main_group, ['filter', - "f.properties.AREA > 0.01"], feature_seq, catch_exceptions=False) - assert result.exit_code == 0 - assert result.output.count('Feature') == 2 - - result = runner.invoke(main_group, ['filter', - "f.properties.AREA > 0.015"], feature_seq) - assert result.exit_code == 0 - assert result.output.count('Feature') == 1 - - result = runner.invoke(main_group, ['filter', - "f.properties.AREA > 0.02"], feature_seq) - assert result.exit_code == 0 - assert result.output.count('Feature') == 0 + with pytest.warns(FutureWarning): + result = runner.invoke(main_group, ['filter', + "f.properties.AREA > 0.01"], feature_seq, catch_exceptions=False) + assert result.exit_code == 0 + assert result.output.count('Feature') == 2 + + with pytest.warns(FutureWarning): + result = runner.invoke(main_group, ['filter', + "f.properties.AREA > 0.015"], feature_seq) + assert result.exit_code == 0 + assert result.output.count('Feature') == 1 + + with pytest.warns(FutureWarning): + result = runner.invoke(main_group, ['filter', + "f.properties.AREA > 0.02"], feature_seq) + assert result.exit_code == 0 + assert result.output.count('Feature') == 0 diff --git a/tests/test_snuggs.py b/tests/test_snuggs.py new file mode 100644 index 000000000..082b7e765 --- /dev/null +++ b/tests/test_snuggs.py @@ -0,0 +1,25 @@ +# Python module tests + +"""Tests of the snuggs module.""" + +import pytest # type: ignore + +from fiona._vendor import snuggs + + +@pytest.mark.parametrize("arg", ["''", "null", "false", 0]) +def test_truth_false(arg): + """Expression is not true.""" + assert not snuggs.eval(f"(truth {arg})") + + +@pytest.mark.parametrize("arg", ["'hi'", "true", 1]) +def test_truth(arg): + """Expression is true.""" + assert snuggs.eval(f"(truth {arg})") + + +@pytest.mark.parametrize("arg", ["''", "null", "false", 0]) +def test_not(arg): + """Expression is true.""" + assert snuggs.eval(f"(not {arg})")